Skip to content
Agentmart
Submit a tool

bc-to-pptx

Generates a branded PPTX deck from LEAN_BUSINESS_CASE.md using the Marlink template.

Skill by Wizarck

IndexedAGPL-3.0★ 2
Write a review

Install

Works with Claude Code. Read the repository before you give any tool access to your data.

npx agentmarket install skill/wizarck-bc-to-pptx

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Generates a branded PPTX deck from LEAN_BUSINESS_CASE.md using the Marlink template. Pipeline: Extract BC data -> validate -> inject into template -> QA swarm. Use after LEAN_BUSINESS_CASE.md is approved and ready for presentation. Also use when user says "generate deck", "create slides", "make pptx", "presentation".

Use cases: presentations, testing, data

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/bc-to-pptx

Tools it pre-approves 8

From allowed-tools in SKILL.md: the agent may use these without asking you each time.

  • Read,
  • Glob,
  • Grep,
  • Edit,
  • Write,
  • Bash,
  • Agent,
  • Skill

What's inside

Skill name
bc-to-pptx
Description
Generates a branded PPTX deck from LEAN_BUSINESS_CASE.md using the Marlink template. Pipeline: Extract BC data -> validate -> inject into template -> QA swarm. Use after LEAN_BUSINESS_CASE.md is approved and ready for presentation. Also use when user says "generate deck", "create slides", "make pptx", "presentation".
License
AGPL-3.0
Allowed tools
Read,, Glob,, Grep,, Edit,, Write,, Bash,, Agent,, Skill
Instructions
307 lines in SKILL.md · view on GitHub

Before installing

  • Pre-approves some shell commands

Files (2)

  • SKILL.md
  • slide_mapping.yaml

SKILL.md (first lines)

# BC-to-PPTX Generation Pipeline

You generate branded PPTX decks from LEAN_BUSINESS_CASE.md using the semantic placeholder template.

**Reference documents** (read these before generating):
- `OFFER-000 (Template)/_int_ai/_int_ai/_pptx_pipeline/filler_spec_BC.md` -- filling rules, structural constraints, formatting
- `OFFER-000 (Template)/_int_ai/_int_ai/_pptx_pipeline/semantic_mapping.yaml` -- tag metadata (type, max_chars, bc_sections, descriptions)
- `.claude/skills/pptx-template/guardrails.md` -- absolute rules

**Visual context** (read alongside YAML for each slide):
- `OFFER-000 (Template)/_int_ai/_int_ai/_pptx_pipeline/slide_pngs/reference/` -- reference PNGs from a completed offering (style guide -- shows what a filled slide looks like)
- `OFFER-000 (Template)/_int_ai/_int_ai/_pptx_pipeline/slide_pngs/template/` -- template PNGs with `{{TAG}}` placeholders visible (shows tag positions and layout)

## Architecture

```
LEAN_BUSINESS_CASE.md ──────────────────────────┐
                                            │
_int_ai/_pptx_pipeline/filler_spec_BC.md ──┤
_int_ai/_pptx_pipeline/semantic_mapping.yaml┤
_int_ai/_pptx_pipeline/slide_pngs/reference/*.png ┤  (visual: completed slide style)
_int_ai/_pptx_pipeline/slide_pngs/template/*.png ─┤  (visual: tag positions)
                                            │
                           [Step 1: Visual-Context Fill] ──> _int_ai/fill_data.json
                                            │
                           [Step 1.5: Tag Inventory Check]
                                            │
                           [Step 2.5: Pilot Generation]
                                            │
TEMPLATE.pptx ──────────> [Step 3: Inject] ──────────────> output PPTX
                            (generate_pptx.py)               │
                                                   [Step 4: Post-flight]
                                                             │
                                                   [Step 5: QA Swarm]
                                                             │
                                                   LEAN_BUSINESS_CASE.pptx
```

## Argument Parsing

When invoked with an argument (e.g., "002", "OFFER-002"):
1. Extract the offer number
2. Find folder: `Glob("20_OFFERS/OFFER-{number}*")`
3. Verify `LEAN_BUSINESS_CASE.md` exists in that folder
4. If NO match or no BC -> error

---

## Step 1: Visual-Context Fill

Read the offering's `LEAN_BUSINESS_CASE.md` and produce `fill_data.json` using visual context + YAML metadata.

**Per fill agent (8 parallel, one per PPTX section):**

Each agent receives:
1. **Full LEAN_BUSINESS_CASE.md** -- complete document for cross-reference
2. **Reference PNGs** (`_int_ai/_pptx_pipeline/slide_pngs/reference/`) -- what completed slides look like (style guide only, NEVER copy data)
3. **Template PNGs** (`_int_ai/_pptx_pipeline/slide_pngs/template/`) -- where `{{TAG}}` placeholders sit
4. **YAML section extract** -- tag names, types, max_chars, visual_roles, bc_sections, descriptions, suggestions
5. **filler_spec_BC.md** -- formatting rules, blacklist, consistency requirements

**Agent instructions:**
1. LOOK at the reference PNG -- understand what KIND of content goes on this slide (density, format, bullet count)
2. LOOK at the template PNG -- see WHERE each `{{TAG}}` sits and how much space it has
3. READ the BC sections listed in `bc_sections` for this slide (scoped extraction)
4. READ the YAML tag metadata (description, suggestion, max_chars) for constraints
5. For each tag: extract BC data, respecting `max_chars` and `visual_role`
6. Fill ALL tags for the section at once -- ensure narrative coherence across slides
7. Financial figures MUST be exact from BC -- never invent
8. Ask user about offering-specific blacklist (filler_spec S2)

**Output**: `OFFER-XXX/_int_ai/fill_data.json` (flat JSON, series expanded as `TAG_1`, `TAG_2`, ...)

**Output**: `OFFER-XXX/_int_ai/slide_data.json`

```json
{
  "meta": {
    "offering_id": "OFFER-002",
    "offering_name": "1EDGE Secure Edge Cloud",
    "iteration_num": "1",
    "iteration_maturity": "Good",
    "generated": "2026-03-22"
  },
  "TITLE_OFFERING": "1EDGE Secure Edge Cloud",
  "TITLE_ITERATION": "Customer VM Hosting",
  "TITLE_PILLAR": "Cloud & IT -- Portfolio and Innovation Strategy",
  "ITERATION_NUM": "1",
  "ITERATION_MATURITY": "Good",
  "CANVAS_REVENUE_1": "VM subscriptions ($30/VM/mo)",
  "CANVAS_REVENUE_2": "Management fee ($31/VM/mo)",
  ...
}
```

**Rules** (from filler_spec S4):
- Every value must be a string
- Bullet lists: `\n`-separated within a single field
- Numbers: $X.XM (millions), $X,XXXK (thousands), X.X%
- No markdown, no em-dashes (use --), max ~200 chars per field
- Auto-fix: CIT -> "Cloud & IT", SKU codes -> service names

---

## Step 1.5: Tag Inventory Check (MANDATORY -- blocks Step 2)

Before validation, reconcile fill data against the actual template:

1. **Count template slots**: open template PPTX, grep `{{TAG}}` across all XML files (slides + diagrams/data + diagrams/drawing). Count unique tag patterns.
2. **Count fill data keys**: count unique keys in fill_data.json
3. **Compare**:
   - Tags in template with no fill data = **unfilled slots** (will show as raw `{{TAG}}` in output)
   - Fill data keys with no template slot = **orphan data** (wasted extraction effort)
4. **Report**: `Template: X slots, Fill data: Y keys, Matched: Z, Unfilled: A, Orphan: B`
5. **Block if**: orphan ratio > 10% (indicates YAML has phantom tags not in template, or fill agents invented tag names)
6. **Warn if**: unfilled slots > 5% (ask user: "X tags have no data. Continue?")

**Why this step exists**: YAML generated from classification (not template scan) once produced 453 tag patterns for a template with 217 actual tags -- 80.9% orphan ratio, 9 STRUCTURAL failures. A 50% threshold failed to catch it. The 10% threshold catches YAML/template drift early.

From Wizarck/nexandro, AGPL-3.0.

Signals

Stars
2
Forks
1
Open issues
0
Last commit (this folder)
Apr 26, 2026 (6 months ago)

From GitHub (fetched Oct 24, 2026).

Details

License
AGPL-3.0
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from Wizarck

Cite this page

bc-to-pptx skill. Agent Mart. https://agentmart.dev/skills/wizarck-bc-to-pptx (last updated 2026-10-24)