Create or edit PowerPoint (.pptx) presentations in Slide Forge lab style. Use this only if you cannot spawn agents
| Task | Guide |
|---|---|
| Read/analyze content | uv run python -m markitdown presentation.pptx |
| Create or rebuild PPTX | Read slide-forge-api.md |
| Full content & visual specs | Read references/style-guide.md |
Content is everything. The goal is to produce slides that read like they were written by a lab researcher — dense, technical, specific, and honest. Branding elements (logos, decorative headers) are secondary and optional. If the text content doesn't feel like a real lab report, the presentation has failed regardless of how it looks.
This skill operates in two modes depending on whether agents can be spawned:
| Mode | When | What You Do |
|---|---|---|
| Normal (Agent Mode) | Storyteller + Critics are available | Smith uses only Phase 2 (Build) + Phase 3 (QA) from this skill. Content comes from .slide-forge/narrative/slide-plan.md and visual-spec.md. |
| Fallback (Enhanced Smith) | Agents cannot be spawned | You self-execute the full pipeline: content planning → self-critique → build → QA. See Enhanced Smith Fallback below. |
In Normal mode, skip directly to Phase 2: Code Generation. Your inputs are:
.slide-forge/narrative/slide-plan.md — bullet plan.slide-forge/narrative/visual-spec.md — visual specifications.slide-forge/sources/images/ — image filesYour outputs go to .slide-forge/build/.
All writing, structural, and layout rules: references/rules.md Full examples and pattern catalog: references/style-guide.md
Never jump straight into code. Plan content first, then generate slides, then QA.
Normal (Agent) Mode: Skip Phase 1 entirely — the Storyteller handles content planning. Start from Phase 2, reading from
.slide-forge/narrative/.
This phase applies only in Enhanced Smith fallback mode (when Storyteller is unavailable). In normal agent mode, the Storyteller produces slide-plan.md and visual-spec.md — skip directly to Phase 2.
Save all Phase 1 outputs to .slide-forge/narrative/:
narrative-full.md — prose draft (narrative format: see references/narrative-format.md)slide-plan.md — compressed bullet planvisual-spec.md — visual specificationsOne pass, then hand off to critics. Draft the content carefully in a single pass (Steps 1A→1B→1C→1D), run the mechanical self-check, then submit to critics. Do NOT self-iterate 2-3 times — the external critic loop (Crucible → Gauge → Assayer → Wanderer) handles iterative refinement. Your job is to produce a solid first draft, not a polished final version.
For each slide, write the content as flowing prose first — full sentences, in Korean, as if you were explaining it to a colleague. This is your raw material.
Why prose first? Bullet points written directly tend to be shallow and generic. Writing prose forces you to actually understand and reason through the content, producing specific details and logical connections that survive the compression into bullets.
For rhetorical strategy examples (prose BAD/GOOD comparisons and compressed bullet versions), see references/phase1-examples.md.
Compress the narrative draft from Step 1A into the Bullet Plan Syntax defined in references/rules.md.
Process:
- (claim) → → (support) → - (sub-claim) → → (sub-support)Compression rules:
-): one complete claim, 15-40 Korean characters→): evidence, mechanism, or interpretation, 10-25 charactersFor detailed BAD/GOOD compression examples by rhetorical strategy, see references/phase1-examples.md.
For each slide, specify the visual element, then challenge it:
For visual specification examples with self-checks, see references/phase1-examples.md.
All slides complete? Read 1→N in sequence and check:
Run these countable/verifiable checks once. Do NOT re-draft — fix only what fails here, then submit to critics.
→ sub-line with interpretationThese are mechanical — you can verify them by scanning the text. Semantic quality (depth, narrative flow, persuasiveness) is judged by external critics, not by you.
Proceed to Phase 2 after this check passes.
Only after content planning is complete (Phase 1 in fallback, or Storyteller artifacts in normal mode), write Python script following slide-forge-api.md.
Inputs: Read slide-plan.md and visual-spec.md from .slide-forge/narrative/.
Outputs: Save script and PPTX to .slide-forge/build/.
# Save script to .slide-forge/build/create_slides.py, then run:
uv run .slide-forge/build/create_slides.py
After writing all slide code, run a quick mechanical scan. Semantic quality review is the critics' job — do not duplicate it here.
Scan the generated code/text for these mechanically verifiable issues only:
Fix any failures, then proceed to Phase 3. Do NOT review for depth, narrative, or persuasiveness — that is Slide-Assayer's responsibility.
Follow the QA section below — render to .slide-forge/build/rendered/, inspect, fix, repeat.
When agents cannot be spawned (no Storyteller, Crucible, Gauge, Assayer, Wanderer available), this skill runs the full pipeline in self-execution mode with role switching.
Prerequisites:
.slide-forge/ directory structure before startingconfig.json with topic, audience, purposeRole Switching (8 steps):
Storyteller Mode: Execute Phase 0 (source collection + analysis) + Phase 1 (prose draft → bullet compression → visual spec → flow check). Save all outputs to .slide-forge/narrative/.
Crucible Role: Challenge your own strategic choices as if reviewing a stranger's plan. Ask "why this and not something else?" for each major decision (slide ordering, rhetorical strategy, visual choices). Output DEEPEN or PROCEED.
Enhanced Smith Response: Respond to every reflection prompt with one of:
.slide-forge/narrative/ files if any changes were adopted.Gauge Role: Validate slide-plan.md against all structural rules in rules.md. Output PASS or FAIL with concrete fix instructions.
Assayer Role: Validate narrative depth, comprehensibility, information loss (narrative-full.md vs slide-plan.md). Output PASS or FAIL with rewrite directives.
Smith Mode: Execute Phase 2 (Build PPTX) + Phase 3 (QA). Save to .slide-forge/build/.
Gauge + Assayer + Wanderer Role: Validate build output (extracted text via markitdown + rendered slide images). For Wanderer role: evaluate comprehension as a naive reader — do NOT re-read your own plan, narrative, or source materials. Write-back required: for each slide, write "내가 이해한 메시지: ___" in your own words. Then switch back to Supervisor perspective and compare each write-back against the intended message from slide-plan.md. Mismatches = communication failures, even if the Wanderer felt confident.
(FAIL) Smith Mode: Fix issues, rebuild. Max 3 iterations per phase.
Bias mitigation for self-execution:
markitdown output and rendered slide images.slide-plan.md. If your Wanderer self "understood" something different from what the Storyteller intended, the slide is unclear.uv run python -m markitdown presentation.pptx
uv run slide-forge thumbnail presentation.pptx
All PPTX creation and editing uses the declarative Python API. Modify the create_slides.py script and re-run — no XML unpacking needed.
Follow Creation Workflow above — Phase 1 (plan) → Phase 2 (code) → Phase 3 (QA).
For slide-forge API reference, read slide-forge-api.md.
Assume there are problems. Your job is to find them.
uv run python -m markitdown .slide-forge/build/output.pptx
Check:
uv run python -m markitdown .slide-forge/build/output.pptx | grep -iE "xxxx|lorem|ipsum"You MUST render slides to images and read every image file. Never skip this — code alone cannot tell you if the output looks correct.
uv run slide-forge render .slide-forge/build/output.pptx .slide-forge/build/rendered/
Then read each PNG file (e.g., .slide-forge/build/rendered/slide-01.png) and inspect visually. Use subagents for fresh eyes — even for 2-3 slides.
레이아웃 문제:
시각 자료 품질:
타이포그래피:
1. 코드 생성 완료 → PPTX 생성 → 이미지 렌더링
2. 모든 슬라이드 이미지를 읽고(Read) 위 체크리스트로 검사
3. 발견된 레이아웃/타이포 문제만 수정 → PPTX 재생성
4. 외부 critics (Gauge + Assayer + Wanderer)에게 제출
1회 렌더링 + 1회 수정까지만. 추가 반복은 critic 피드백 후에 수행한다. Smith가 자체적으로 무한 루프를 돌지 않는다.
절대 이미지를 읽지 않고 "문제 없음"이라 선언하지 말 것. 이미지 파일을 Read tool로 직접 열어서 눈으로 확인해야만 Visual QA가 완료된다.
uv run slide-forge render .slide-forge/build/output.pptx .slide-forge/build/rendered/
uv run slide-forge render .slide-forge/build/output.pptx .slide-forge/build/rendered/ --dpi 200
Creates slide-01.png, slide-02.png, etc. in .slide-forge/build/rendered/.
# Core dependencies (pymupdf, pywin32, python-pptx, etc.) are auto-installed via pyproject.toml.
# For rendering on Linux/macOS, install LibreOffice separately (soffice must be on PATH).
uv run pip install "markitdown[pptx]"
Not all commands work on all platforms. Choose the right tool for your environment:
| Command | Platform | Requires | Purpose |
|---|---|---|---|
uv run slide-forge render | Windows, macOS, Linux | Windows: MS PowerPoint; macOS/Linux: LibreOffice (soffice) | Slide → PNG rendering |
uv run slide-forge thumbnail | Linux / WSL | LibreOffice (soffice), poppler-utils (pdftoppm), pillow | Quick thumbnail grid for template analysis |
uv run slide-forge unpack | Any | defusedxml | Unpack .pptx for diagnostic XML inspection |
uv run slide-forge validate | Any | defusedxml, lxml | XSD schema validation + auto-repair |
| slide-forge (Python API) | Any | python-pptx | Create .pptx from scratch via Python |
Note: LibreOffice rendering may differ from PowerPoint (fonts, spacing, SmartArt). Use thumbnail for grid-layout overviews.