From business-skills
Generate a complete, professional business project presentation (HTML/PDF) from a simple idea description. Use this skill whenever the user describes a business idea, project, or startup concept and wants a presentation, pitch deck, business plan document, or project dossier — even if they don't use those exact words. Trigger on phrases like: "create a presentation for my idea", "make a business plan for", "I have a business idea", "generate a project document for", "make a pitch for my project", or any description of a business concept followed by a request to produce a document.
How this skill is triggered — by the user, by Claude, or both
Slash command
/business-skills:business-presentationThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Turn any business idea description into a complete, professional HTML presentation
Turn any business idea description into a complete, professional HTML presentation with executive summary, market analysis, financials, SWOT, risk matrix, and roadmap.
A single, self-contained .html file that:
Follow these five steps in order.
Read references/user-info-guide.md to understand what to extract.
From the user's message, collect:
Extract silently — do not bombard the user with questions yet.
This step is mandatory. Use web_fetch to gather real, current market data before
writing a single section. Shallow AI-generated estimates are not acceptable — ground
the document in actual sources.
What to search for (run multiple searches in parallel where possible):
| Topic | What to find |
|---|---|
| Market size & growth | TAM for the sector + country; CAGR; key statistics |
| Competitive landscape | Key players operating in the geography; recent news |
| Regulatory / legal context | Licences, permits, taxes specific to sector + country |
| Trends & drivers | Recent reports, news articles on sector dynamics |
| Benchmark financials | Typical margins, startup costs, revenue per unit for the sector |
| Success stories / case studies | Similar businesses that succeeded or failed, and why |
Search strategy:
Handle search failures gracefully: If a search returns no useful data, fall back to your trained knowledge and clearly mark those numbers as (est. — source: internal knowledge). Never invent statistics without this disclaimer.
Research output: Before moving to Step 3, compile internally:
After extraction and research, determine if any of these critical fields are truly missing and cannot be inferred:
Ask at most 2–3 questions in a single message. Phrase them naturally:
"Before I build your full presentation, just 2 quick questions to personalise it:
- [question]
- [question]"
Then wait for the answer before proceeding.
If the user says "just go ahead" or asks you to proceed without answering: use
defaults ([Company Name] for the name, and sector-typical estimates for financials).
Read references/sections-guide.md for detailed guidance on each section.
Read references/user-info-guide.md for sector-specific financial benchmarks.
For each section, think as a senior business analyst who knows the sector well:
Section content principles:
Colour theme: Pick based on sector (see references/sections-guide.md → Colour Theme
Selection Guide). Override the :root CSS variables in the template accordingly.
Read assets/template.html as the starting point for the HTML output.
Replace every __PLACEHOLDER__ token with generated content. Key tokens:
__COMPANY_NAME__ — brand or founder name__PROJECT_TITLE__ — name of the project/concept__PROJECT_TAGLINE__ — one-line elevator pitch__LANG__ — fr, en, es, etc. based on detected language__LOCATION__ — city or region__SECTOR__ — sector label__DATE__ — current date__NAV_LINKS__ — <a href="#section-id">Label</a><span class="sep">›</span> for each section__KPI1_VAL__ through __KPI4_VAL__ / __KPI1_LBL__ through __KPI4_LBL__ — key metricsSections are optional: If a section has no meaningful content (e.g. no team info), comment it out rather than leaving it blank. Re-sequence the numbers so they stay consecutive.
Nav links must match the actual id attributes on the sections you include.
One nav link per included section. Use the section's title as the link text.
After filling all content:
__PLACEHOLDER__ tokens (if still present, replace with sensible defaults)<!-- Template: ... --> blocks)data arrays in <script> blocks reflect the actual numbers used in the proseOutput: Write the finished HTML to a file named:
[company-or-project-slug]-presentation.html
in the current working directory (or one the user has indicated).
After writing the file, tell the user:
Before finalising, verify:
__PLACEHOLDER__ tokens replacedThe template already includes Chart.js from CDN. Use <canvas> + an inline <script> block
to create charts. Always place charts after the relevant prose, not before.
<head>)<script src="https://cdn.jsdelivr.net/npm/chart.js@4/dist/chart.umd.min.js"></script>
| Section | Recommended chart | Chart.js type |
|---|---|---|
| Market Opportunity | TAM/SAM/SOM horizontal bars | bar (horizontal, indexAxis:'y') |
| Market Opportunity | Market growth trend | line |
| Financial Projections | Revenue Year 1/2/3 grouped bars | bar |
| Financial Projections | Investment allocation | doughnut |
| Financial Projections | Monthly revenue ramp line | line |
| Competitive Landscape | Feature comparison bars | bar (horizontal) |
| Business Model | Revenue stream breakdown | doughnut or pie |
| Growth | Projected market share growth | line |
<div class="chart-wrap" style="max-width:560px;margin:20px auto">
<canvas id="tamChart"></canvas>
</div>
<script>
new Chart(document.getElementById("tamChart"), {
type: "bar",
data: {
labels: [
"TAM – Total Market",
"SAM – Addressable",
"SOM – Obtainable (Yr 1)",
],
datasets: [
{
label: "Market Size (M USD)", // adapt currency
data: [450, 80, 4], // replace with real values
backgroundColor: ["#1b6ca833", "#1b6ca866", "var(--c-primary)"],
borderColor: ["#1b6ca8", "#1b6ca8", "var(--c-primary)"],
borderWidth: 2,
borderRadius: 6,
},
],
},
options: {
indexAxis: "y",
responsive: true,
plugins: {
legend: { display: false },
tooltip: {
callbacks: {
label: (ctx) => " " + ctx.parsed.x.toLocaleString() + " M",
},
},
},
scales: {
x: { beginAtZero: true, grid: { color: "#e2e8f0" } },
y: { grid: { display: false } },
},
},
});
</script>
<div class="chart-wrap" style="margin:20px 0">
<canvas id="revenueChart"></canvas>
</div>
<script>
new Chart(document.getElementById("revenueChart"), {
type: "bar",
data: {
labels: ["Année 1", "Année 2", "Année 3"], // or Year 1/2/3
datasets: [
{
label: "Chiffre d'affaires",
data: [12000000, 20000000, 32000000],
backgroundColor: "var(--c-primary)",
borderRadius: 6,
},
{
label: "Bénéfice net",
data: [1200000, 4000000, 9000000],
backgroundColor: "var(--c-accent)",
borderRadius: 6,
},
],
},
options: {
responsive: true,
plugins: { legend: { position: "top" } },
scales: {
y: {
beginAtZero: true,
grid: { color: "#e2e8f0" },
ticks: { callback: (v) => v.toLocaleString() },
},
x: { grid: { display: false } },
},
},
});
</script>
<div class="chart-wrap" style="max-width:340px;margin:0 auto">
<canvas id="investChart"></canvas>
</div>
<script>
new Chart(document.getElementById("investChart"), {
type: "doughnut",
data: {
labels: [
"Équipement",
"Aménagement",
"Stock initial",
"Frais dépôt/licences",
"Fonds de roulement",
"Imprévus",
],
datasets: [
{
data: [35, 25, 20, 8, 8, 4], // percentages summing to 100
backgroundColor: [
"#0f4c75",
"#1b6ca8",
"#2980b9",
"#e8a020",
"#27ae60",
"#95a5a6",
],
borderWidth: 2,
borderColor: "#fff",
hoverOffset: 6,
},
],
},
options: {
responsive: true,
cutout: "62%",
plugins: {
legend: { position: "right", labels: { font: { size: 12 } } },
},
},
});
</script>
<div class="chart-wrap" style="margin:20px 0">
<canvas id="compChart"></canvas>
</div>
<script>
new Chart(document.getElementById("compChart"), {
type: "bar",
data: {
labels: [
"Prix compétitif",
"Qualité produit",
"Proximité",
"Service client",
"Digital / e-commerce",
],
datasets: [
{
label: "[Votre projet]",
data: [85, 90, 95, 88, 70],
backgroundColor: "var(--c-primary)",
borderRadius: 4,
},
{
label: "Concurrent A",
data: [70, 75, 55, 60, 80],
backgroundColor: "#e2e8f0",
borderRadius: 4,
},
{
label: "Concurrent B",
data: [95, 55, 40, 45, 30],
backgroundColor: "#cbd5e1",
borderRadius: 4,
},
],
},
options: {
indexAxis: "y",
responsive: true,
plugins: { legend: { position: "top" } },
scales: {
x: {
min: 0,
max: 100,
grid: { color: "#e2e8f0" },
ticks: { callback: (v) => v + "%" },
},
y: { grid: { display: false } },
},
},
});
</script>
.chart-wrap {
position: relative;
max-width: 100%;
}
.chart-title {
font-size: 13px;
font-weight: 600;
color: var(--c-text-mute);
text-align: center;
margin-bottom: 8px;
}
<canvas> a unique id (e.g. tamChart, revenueChart, investChart)<script> blocks after the <canvas> element, not in <head>The template provides these ready-to-use HTML components. Use them when adding content beyond the placeholder structure.
<!-- KPI box (use inside .kpi-strip grid) -->
<div class="kpi">
<div class="kpi-val">2.4M€</div>
<div class="kpi-label">Year 1 Revenue Target</div>
</div>
<!-- Callout box -->
<div class="box box-accent"><strong>Title</strong>Content here.</div>
<div class="box box-info"><strong>Title</strong>Content here.</div>
<div class="box box-success"><strong>Title</strong>Content here.</div>
<div class="box box-warning"><strong>Title</strong>Content here.</div>
<!-- Card grid -->
<div class="grid">
<div class="card">
<h3>Title</h3>
<ul>
<li>Point</li>
</ul>
</div>
</div>
<!-- Financial row -->
<div class="fin-row">
<span>Staff salary</span><span><strong>150 000 FCFA</strong></span>
</div>
<div class="fin-row total"><span>Total</span><span>300 000 FCFA</span></div>
<!-- Timeline item -->
<li>
<div class="tl-dot">Q1</div>
<div class="tl-content">
<div class="tl-period">Months 1–3</div>
<h4>Setup & Legal</h4>
<p>Incorporate, secure location, obtain permits.</p>
</div>
</li>
<!-- Risk table row -->
<tr>
<td><strong>Cash flow</strong></td>
<td>Under-capitalisation risk in first 3 months.</td>
<td><span class="risk-high">High</span></td>
<td>Maintain 2-month reserve. Access micro-credit line.</td>
</tr>
<!-- Badge -->
<span class="badge badge-primary">Label</span>
<span class="badge badge-accent">Label</span>
<!-- Progress bar (for market share, completion %, etc.) -->
<div class="progress-item">
<div class="progress-label"><span>Digital channel</span><span>65%</span></div>
<div class="progress-bar">
<div class="progress-fill" style="width:65%"></div>
</div>
</div>
assets/template.html — read this first before generating HTML. It is the structural foundation.references/sections-guide.md — detailed content guidance for every section + colour themesreferences/user-info-guide.md — info extraction, gap-filling benchmarks, question templatesnpx claudepluginhub mikamboo/agent-skills --plugin business-skillsGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.