bc-to-pptx
Generates a branded PPTX deck from LEAN_BUSINESS_CASE.md using the Marlink template.
Skill by Wizarck
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.
About
Use cases: presentations, testing, data
Reviews
Write a reviewNo 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
- Repository
- github.com/Wizarck/nexandro
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from Wizarck
- 0.602score
bmad-agent-dev
Wizarck
Senior software engineer for story execution and code implementation.
SkillAFreshness: A★ 6Claude Code +9 - 0.602score
bmad-agent-analyst
Wizarck
Strategic business analyst and requirements expert.
SkillAFreshness: A★ 6Claude Code +9 - 0.573score
bmad-brainstorming
Wizarck
Facilitate interactive brainstorming sessions using diverse creative techniques and ideation methods.
SkillAFreshness: A★ 6Claude Code +9 - 0.572score
bmad-check-implementation-readiness
Wizarck
Validate PRD, UX, Architecture and Epics specs are complete.
SkillAFreshness: A★ 6Claude Code +9
Cite this page
bc-to-pptx skill. Agent Mart. https://agentmart.dev/skills/wizarck-bc-to-pptx (last updated 2026-10-24)