Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
86 commits
Select commit Hold shift + click to select a range
422be37
feat: Nyx Foundation 会社説明資料(Slidev)
grandchildrice Mar 30, 2026
406fc4f
fix: 支援者・パートナーを視覚的に改善 + 現在の取り組み4枚追加
grandchildrice Mar 30, 2026
a44bbf3
fix: Nanto完成イメージ画像を差し替え + スポンサー画像をnyx.foundationから取得
grandchildrice Mar 30, 2026
47c648e
fix: スポンサー欄のレイアウト修正 + Katomasa削除
grandchildrice Mar 30, 2026
afe6c96
fix: サポーター名の改行防止 + Premium匿名ラベル追加
grandchildrice Mar 30, 2026
8b8bb3e
fix: Katomasaをスポンサー一覧から削除
grandchildrice Mar 30, 2026
c1ce208
fix: ASCON・Agentic Hacking Cupにスポンサー提案資料リンクを追加
grandchildrice Mar 30, 2026
1aa5438
feat: メンバー紹介スライドを追加
grandchildrice Mar 31, 2026
aaeafca
Split member slide into 2 pages (4 members each) to fix overflow
grandchildrice Mar 31, 2026
01e4af4
Compact member slide: 4x2 grid on 1 page, smaller images/margins/text
grandchildrice Mar 31, 2026
1910073
Redesign slides 4-6: member voices + philosophy + visual layout
grandchildrice Mar 31, 2026
7fe2864
Revise SL03+SL04: Ethereum as open science frontier + world-class res…
grandchildrice Mar 31, 2026
8ed9879
SL04: vertical flow layout - missions side by side, goal below, princ…
grandchildrice Mar 31, 2026
ed1c33f
SL04: Remove 3 principles, clean layout with missions + goal only
grandchildrice Mar 31, 2026
69fafcc
Refine company deck for non-crypto audiences
grandchildrice Mar 31, 2026
df1f959
Add footnotes for non-crypto audiences
grandchildrice Mar 31, 2026
481027d
Add social issues and sponsor comment slides
grandchildrice Mar 31, 2026
7152212
Refocus social issues slide on concrete research themes
grandchildrice Mar 31, 2026
3ae136d
Rewrite Ethereum rationale around human motivations
grandchildrice Mar 31, 2026
c7fb296
Add Nyx thought map and align vision slide
grandchildrice Mar 31, 2026
258fb9a
Rewrite deck around Nyx thought map
grandchildrice Mar 31, 2026
20449f9
Translate donor quote and add interview link
grandchildrice Mar 31, 2026
3827abb
Polish layout for issues vision and closing slides
grandchildrice Mar 31, 2026
8d59753
Tighten page 5 layout and fix page 6 circle
grandchildrice Mar 31, 2026
18d412e
Add Verity slide: 形式検証駆動開発によるイーサリアムクライアント「Verity」
Apr 10, 2026
9f495b0
Align slides with Manifesto: update copy, remove SL11
Apr 10, 2026
772b0ab
Replace SL12 with collaboration cases slide; add partner logos
Apr 10, 2026
13dddb2
Increase partner logo sizes in collaboration cases slide
Apr 10, 2026
d7bad22
Replace Waseda/SMBC logos with horizontal versions; fix square logo s…
Apr 10, 2026
d41f70c
Unify logo sizes with fixed-container approach (120x48px per logo)
Apr 10, 2026
a865749
Fix logo layout: horizontal row, replace EF/UTokyo/Dentsu logos
Apr 10, 2026
2685bac
Enlarge UTokyo and SMBC logos to 2x height (80px)
Apr 10, 2026
3eecb98
Unify logo area: fixed height 56px, left-aligned, vertically centered
Apr 10, 2026
ddf7931
ja company deck fixed
grandchildrice Apr 21, 2026
f8707ef
ja company deck fixed
grandchildrice Apr 21, 2026
9d38f0d
Re-design company deck around Manifesto and remove Agentic Hacking Cup
grandchildrice May 11, 2026
ce6c621
Pin Slidev/Vue/theme versions so Cloudflare builds reproduce locally
grandchildrice May 11, 2026
a07e971
chore: trigger Cloudflare preview rebuild after default-branch revert
grandchildrice May 11, 2026
9dbae48
Hide Slidev v52 goto-dialog and collapse 2-col page-root layout
grandchildrice May 12, 2026
d88b2ed
Drop Sherlock contest line from SPECA slide
grandchildrice May 12, 2026
664353f
Merge branch 'main' into company-deck
grandchildrice May 19, 2026
58dccdf
Rebuild the company deck around the Notion "two cities" narrative
grandchildrice May 19, 2026
e4a3e1b
Raise expectations through facts, not direct claims
grandchildrice May 19, 2026
ef72301
refine: export per-slide so live-3D decks don't hang
grandchildrice May 19, 2026
bcc892f
refine: visual self-improvement loop — converged at 4.69/5
grandchildrice May 19, 2026
e30853c
fix: Scene3D canvas overflowed its cell, breaking SL06/SL07 layout
grandchildrice May 19, 2026
11496d5
deck: reduce the title and closing slides to the organization name
grandchildrice May 19, 2026
8df2c04
deck: make SL05/09/10 visual — less text, more intuitive
grandchildrice May 19, 2026
004f168
prompts: push harder on show-don't-tell and comparison aptness
grandchildrice May 19, 2026
5417f31
SL10: fix the collaborate card's mismatched comparison
grandchildrice May 19, 2026
fde5db6
refine: review by a five-persona stakeholder panel
grandchildrice May 19, 2026
d3b655b
refine: panel review — converged at deck score 4.50/5
grandchildrice May 19, 2026
5a8b9ae
deck: redesign SL02-SL08 numbers-first with researched facts
grandchildrice May 19, 2026
21c574e
deck: 2025-latest storm figures, comparisons, and on-slide sources
grandchildrice May 19, 2026
6e5b901
SL09: visualize the working principles as three icon tiles
grandchildrice May 19, 2026
28d9659
SL10: lead with a cost-efficiency comparison; merits as bullets
grandchildrice May 19, 2026
68bd192
SL10: compare efficiency against the research-to-implementation gap
grandchildrice May 19, 2026
14c42da
deck: SL10 vs Ethereum's spec-to-live time; drop faint subtitles
grandchildrice May 19, 2026
55174d2
refine: design_critic enforces elderly legibility and eye-flow
grandchildrice May 19, 2026
352a2f9
refine: legibility + eye-flow pass; 仕事の作法 as its own slide
grandchildrice May 19, 2026
d3688a1
deck: SL08 legibility, SL09 eye-flow, SL09b house photo
grandchildrice May 19, 2026
a2bcc8d
deck: two house photos, CTA title, storm ② sophistication fact
grandchildrice May 19, 2026
0250127
deck: drop SL08's 昔/これから text; fix SL10 "≈17年" wrapping
grandchildrice May 19, 2026
3a22dfc
Scene3D: premium rendering — shadows, tone mapping, IBL
grandchildrice May 19, 2026
d2da2cd
scenes: self-improve the 4 deck 3D scenes for more detail
grandchildrice May 19, 2026
2403289
3D: replace abstract concept scenes with concrete metaphors
grandchildrice May 19, 2026
5c943e1
3D: replace primitive city scenes with hand-coded immersive Three.js …
grandchildrice May 19, 2026
9eb11e3
fix: force white copy on the dark city slides
grandchildrice May 19, 2026
e861661
3D: replace primitive storm scenes with hand-coded Three.js metaphors
grandchildrice May 19, 2026
7261a57
slides: add SL09c mapping the 4 storms to R&D pillars
grandchildrice May 20, 2026
5c6286b
SL09c: flatten R&D products into a 4-column row, drop storm labels
grandchildrice May 20, 2026
e7605a8
SL09: refresh Waseda / U-Tokyo / HKUST partner logos
grandchildrice May 20, 2026
00ae92f
SL09 / SL09c: hero the half-year proof on p10, plainify p11 copy
grandchildrice May 20, 2026
2f8a6de
SL09: extend partner row to 4×2 — add SMBC日興 / Allied / TLDR
grandchildrice May 20, 2026
b8241b9
verity: swap in the newer logo artwork
grandchildrice May 20, 2026
a78bf9b
SL09: fix partner-row overflow and make SMBC mark visible
grandchildrice May 20, 2026
3eb45ae
SL09: swap SMBC mark for the Wikimedia SVG-derived PNG
grandchildrice May 20, 2026
090349d
eris: replace placeholder with the real butterfly + wordmark artwork
grandchildrice May 20, 2026
fb83d75
SL08 / SL09c: typographic redesign and city-metaphor rewrites
grandchildrice May 20, 2026
c53c9db
refine slides
grandchildrice Jun 9, 2026
1e0b3cd
refine slides
grandchildrice Jun 9, 2026
d092480
refine slides
grandchildrice Jun 9, 2026
6bd08a2
SL12: refine digital-twin animation
grandchildrice Jun 11, 2026
1ca0f49
Add project skills (animated-concept-slide, presentation-pipeline)
grandchildrice Jun 11, 2026
091203a
digital twin animation
grandchildrice Jun 11, 2026
9a99313
fix
grandchildrice Jun 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
242 changes: 242 additions & 0 deletions .claude/skills/animated-concept-slide/SKILL.md

Large diffs are not rendered by default.

235 changes: 235 additions & 0 deletions .claude/skills/presentation-pipeline/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,235 @@
# ==============================================================================
# Presentation Agent - Ideal Pipeline Makefile
# ==============================================================================
# This Makefile orchestrates the 9-step presentation generation pipeline.
#
# Usage:
# 1. Edit inputs/introduction.md with YAML frontmatter containing:
# - target_audience: Target audience description
# - audience_type: individual / group / mixed
# - constraints: { max_slides: N, max_duration_minutes: M }
# - output_language: Japanese / English
# - event: (optional) Event context
# 2. Run `make validate` to verify the input format.
# 3. Run `make all` to execute the entire pipeline.
#
# The final Slidev Markdown files will be generated in the `slides/` directory.
# ==============================================================================

# --- Configuration ---
PROMPTS_DIR ?= prompts
OUTPUT_DIR ?= outputs
LOG_DIR ?= $(OUTPUT_DIR)/logs
SLIDES_DIR ?= slides

# --- User Input (Single Source of Truth) ---
# All metadata is now in the YAML frontmatter of introduction.md
RAW_INPUT ?= inputs/introduction.md

# --- Visual Style (Not part of the content, so kept as Makefile variables) ---
SLIDEV_THEME ?= default
FONT ?= BIZ UDPMincho
BACKGROUND_COLOR ?= \#FFFFFF

# Tone for the presentation (derived from Core Strategy, can be overridden)
TONE ?= Respectfully ambitious and intellectually rigorous.

# --- Output Files ---
CONTEXT_OUT := $(OUTPUT_DIR)/01_Context_Brief.json
PERSONA_OUT := $(OUTPUT_DIR)/02_Audience_Persona.json
STRATEGY_OUT := $(OUTPUT_DIR)/03_Core_Strategy.json
ARGUMENT_OUT := $(OUTPUT_DIR)/04_Governing_Argument.json
BLUEPRINT_OUT := $(OUTPUT_DIR)/05_Narrative_Blueprint.json
DRAFTS_OUT := $(OUTPUT_DIR)/06_Slide_Drafts.json
VISUALS_OUT := $(OUTPUT_DIR)/07_Visual_Designs.json
REVIEW_OUT := $(OUTPUT_DIR)/08_Executive_Review.json
EXPORT_OUT := $(OUTPUT_DIR)/09_Final_Export.json

# --- Claude Configuration ---
export CLAUDE_CODE_PERMISSIONS := bypassPermissions
export CLAUDE_CODE_MAX_OUTPUT_TOKENS := 100000
CLAUDE_FLAGS ?= --dangerously-skip-permissions --output-format json

# --- Phony Targets ---
.PHONY: all init clean help validate \
context_analysis audience_persona core_strategy \
governing_argument narrative_blueprint \
slide_drafting visual_design \
executive_review final_export

# ==============================================================================
# Main Targets
# ==============================================================================

all: final_export
@echo "============================================"
@echo "Pipeline complete!"
@echo "Final manifest: $(EXPORT_OUT)"
@echo "Slides directory: $(SLIDES_DIR)/"
@echo "============================================"

help:
@echo "============================================================================"
@echo "Presentation Agent - Ideal Pipeline"
@echo "============================================================================"
@echo ""
@echo "Usage: make [target]"
@echo ""
@echo "Main Targets:"
@echo " all - Run the entire 9-step pipeline from start to finish."
@echo " validate - Validate that inputs/introduction.md has required frontmatter."
@echo " clean - Remove all generated outputs."
@echo ""
@echo "Pipeline Phases and Steps:"
@echo ""
@echo " Phase 1: Foundation (Strategy & Understanding)"
@echo " 1. context_analysis - Parse raw input into a structured brief."
@echo " 2. audience_persona - Build a detailed persona of the target audience."
@echo " 3. core_strategy - Define the presentation's purpose and narrative."
@echo ""
@echo " Phase 2: Architecture (Structure & Argument)"
@echo " 4. governing_argument - Construct the logical backbone (Pyramid Principle)."
@echo " 5. narrative_blueprint- Design the slide-by-slide outline with Action Titles."
@echo ""
@echo " Phase 3: Content (Drafting & Visuals)"
@echo " 6. slide_drafting - Write bullet points and speaker notes."
@echo " 7. visual_design - Design charts, diagrams, and tables."
@echo ""
@echo " Phase 4: Polish & Export (Review & Output)"
@echo " 8. executive_review - Conduct a final 'murder board' review."
@echo " 9. final_export - Apply revisions and export to Slidev Markdown."
@echo ""
@echo "Configuration:"
@echo " All presentation metadata is configured in inputs/introduction.md frontmatter:"
@echo ""
@echo " ---"
@echo " target_audience: \"SCIS2026参加者(研究者コミュニティ)\""
@echo " audience_type: group"
@echo " constraints:"
@echo " max_slides: 15"
@echo " max_duration_minutes: 15"
@echo " output_language: Japanese"
@echo " event:"
@echo " name: \"DEPCON Hakodate\""
@echo " ---"
@echo ""
@echo " Visual style variables (Makefile):"
@echo " SLIDEV_THEME - Slidev theme (default: 'default')"
@echo " FONT - Font family (default: 'Inter')"
@echo " BACKGROUND_COLOR- Background color (default: '#FFFFFF')"
@echo "============================================================================"

init:
@mkdir -p $(OUTPUT_DIR) $(LOG_DIR) $(SLIDES_DIR)

clean:
@rm -rf $(OUTPUT_DIR) $(SLIDES_DIR)
@echo "Cleaned output directories."

# ==============================================================================
# Validation
# ==============================================================================

validate:
@echo "Validating $(RAW_INPUT)..."
@if [ ! -f "$(RAW_INPUT)" ]; then \
echo "ERROR: $(RAW_INPUT) not found"; \
exit 1; \
fi
@if ! grep -q "^target_audience:" "$(RAW_INPUT)"; then \
echo "ERROR: $(RAW_INPUT) must contain 'target_audience:' in frontmatter"; \
exit 1; \
fi
@if ! grep -q "^audience_type:" "$(RAW_INPUT)"; then \
echo "ERROR: $(RAW_INPUT) must contain 'audience_type:' in frontmatter"; \
exit 1; \
fi
@if ! grep -q "^constraints:" "$(RAW_INPUT)"; then \
echo "ERROR: $(RAW_INPUT) must contain 'constraints:' in frontmatter"; \
exit 1; \
fi
@if ! grep -q "^output_language:" "$(RAW_INPUT)"; then \
echo "ERROR: $(RAW_INPUT) must contain 'output_language:' in frontmatter"; \
exit 1; \
fi
@echo "Validation passed: $(RAW_INPUT) has required frontmatter fields."

# ==============================================================================
# Phase 1: Foundation
# ==============================================================================

context_analysis: $(CONTEXT_OUT)
$(CONTEXT_OUT): $(PROMPTS_DIR)/01_Context_Analysis.md $(RAW_INPUT) | init
@echo "[Step 1/9] Context Analysis..."
@prompt="$$(sed -e 's|{{RAW_INPUT}}|$(RAW_INPUT)|g' $<)"; \
claude $(CLAUDE_FLAGS) -p "$$prompt" > $(LOG_DIR)/01_Context_Analysis.json
@if [ -f "$(CONTEXT_OUT)" ]; then echo "[Step 1/9] Complete."; else echo "[Step 1/9] Warning: $(CONTEXT_OUT) not found."; fi

audience_persona: $(PERSONA_OUT)
$(PERSONA_OUT): $(PROMPTS_DIR)/02_Audience_Persona.md $(CONTEXT_OUT) | init
@echo "[Step 2/9] Audience Persona..."
@prompt="$$(sed -e 's|{{CONTEXT_BRIEF}}|$(CONTEXT_OUT)|g' $<)"; \
claude $(CLAUDE_FLAGS) -p "$$prompt" > $(LOG_DIR)/02_Audience_Persona.json
@if [ -f "$(PERSONA_OUT)" ]; then echo "[Step 2/9] Complete."; else echo "[Step 2/9] Warning: $(PERSONA_OUT) not found."; fi

core_strategy: $(STRATEGY_OUT)
$(STRATEGY_OUT): $(PROMPTS_DIR)/03_Core_Strategy.md $(CONTEXT_OUT) $(PERSONA_OUT) | init
@echo "[Step 3/9] Core Strategy..."
@prompt="$$(sed -e 's|{{CONTEXT_BRIEF}}|$(CONTEXT_OUT)|g' -e 's|{{AUDIENCE_PERSONA}}|$(PERSONA_OUT)|g' $<)"; \
claude $(CLAUDE_FLAGS) -p "$$prompt" > $(LOG_DIR)/03_Core_Strategy.json
@if [ -f "$(STRATEGY_OUT)" ]; then echo "[Step 3/9] Complete."; else echo "[Step 3/9] Warning: $(STRATEGY_OUT) not found."; fi

# ==============================================================================
# Phase 2: Architecture
# ==============================================================================

governing_argument: $(ARGUMENT_OUT)
$(ARGUMENT_OUT): $(PROMPTS_DIR)/04_Governing_Argument.md $(STRATEGY_OUT) $(PERSONA_OUT) | init
@echo "[Step 4/9] Governing Argument..."
@prompt="$$(sed -e 's|{{CORE_STRATEGY}}|$(STRATEGY_OUT)|g' -e 's|{{AUDIENCE_PERSONA}}|$(PERSONA_OUT)|g' $<)"; \
claude $(CLAUDE_FLAGS) -p "$$prompt" > $(LOG_DIR)/04_Governing_Argument.json
@if [ -f "$(ARGUMENT_OUT)" ]; then echo "[Step 4/9] Complete."; else echo "[Step 4/9] Warning: $(ARGUMENT_OUT) not found."; fi

narrative_blueprint: $(BLUEPRINT_OUT)
$(BLUEPRINT_OUT): $(PROMPTS_DIR)/05_Narrative_Blueprint.md $(ARGUMENT_OUT) $(STRATEGY_OUT) $(CONTEXT_OUT) | init
@echo "[Step 5/9] Narrative Blueprint..."
@prompt="$$(sed -e 's|{{GOVERNING_ARGUMENT}}|$(ARGUMENT_OUT)|g' -e 's|{{CORE_STRATEGY}}|$(STRATEGY_OUT)|g' -e 's|{{CONTEXT_BRIEF}}|$(CONTEXT_OUT)|g' $<)"; \
claude $(CLAUDE_FLAGS) -p "$$prompt" > $(LOG_DIR)/05_Narrative_Blueprint.json
@if [ -f "$(BLUEPRINT_OUT)" ]; then echo "[Step 5/9] Complete."; else echo "[Step 5/9] Warning: $(BLUEPRINT_OUT) not found."; fi

# ==============================================================================
# Phase 3: Content
# ==============================================================================

slide_drafting: $(DRAFTS_OUT)
$(DRAFTS_OUT): $(PROMPTS_DIR)/06_Slide_Drafting.md $(BLUEPRINT_OUT) $(CONTEXT_OUT) | init
@echo "[Step 6/9] Slide Drafting..."
@prompt="$$(sed -e 's|{{NARRATIVE_BLUEPRINT}}|$(BLUEPRINT_OUT)|g' -e 's|{{CONTEXT_BRIEF}}|$(CONTEXT_OUT)|g' -e 's|{{TONE}}|$(TONE)|g' $<)"; \
claude $(CLAUDE_FLAGS) -p "$$prompt" > $(LOG_DIR)/06_Slide_Drafting.json
@if [ -f "$(DRAFTS_OUT)" ]; then echo "[Step 6/9] Complete."; else echo "[Step 6/9] Warning: $(DRAFTS_OUT) not found."; fi

visual_design: $(VISUALS_OUT)
$(VISUALS_OUT): $(PROMPTS_DIR)/07_Visual_Design.md $(DRAFTS_OUT) | init
@echo "[Step 7/9] Visual Design..."
@prompt="$$(sed -e 's|{{SLIDE_DRAFTS}}|$(DRAFTS_OUT)|g' $<)"; \
claude $(CLAUDE_FLAGS) -p "$$prompt" > $(LOG_DIR)/07_Visual_Design.json
@if [ -f "$(VISUALS_OUT)" ]; then echo "[Step 7/9] Complete."; else echo "[Step 7/9] Warning: $(VISUALS_OUT) not found."; fi

# ==============================================================================
# Phase 4: Polish & Export
# ==============================================================================

executive_review: $(REVIEW_OUT)
$(REVIEW_OUT): $(PROMPTS_DIR)/08_Executive_Review.md $(DRAFTS_OUT) $(VISUALS_OUT) $(PERSONA_OUT) $(STRATEGY_OUT) | init
@echo "[Step 8/9] Executive Review..."
@prompt="$$(sed -e 's|{{SLIDE_DRAFTS}}|$(DRAFTS_OUT)|g' -e 's|{{VISUAL_DESIGNS}}|$(VISUALS_OUT)|g' -e 's|{{AUDIENCE_PERSONA}}|$(PERSONA_OUT)|g' -e 's|{{CORE_STRATEGY}}|$(STRATEGY_OUT)|g' $<)"; \
claude $(CLAUDE_FLAGS) -p "$$prompt" > $(LOG_DIR)/08_Executive_Review.json
@if [ -f "$(REVIEW_OUT)" ]; then echo "[Step 8/9] Complete."; else echo "[Step 8/9] Warning: $(REVIEW_OUT) not found."; fi

final_export: $(EXPORT_OUT)
$(EXPORT_OUT): $(PROMPTS_DIR)/09_Final_Export.md $(DRAFTS_OUT) $(VISUALS_OUT) $(REVIEW_OUT) | init
@echo "[Step 9/9] Final Export..."
@style_guide='{"theme":"$(SLIDEV_THEME)","font":"$(FONT)","backgroundColor":"$(BACKGROUND_COLOR)"}'; \
prompt="$$(sed -e 's|{{SLIDE_DRAFTS}}|$(DRAFTS_OUT)|g' -e 's|{{VISUAL_DESIGNS}}|$(VISUALS_OUT)|g' -e 's|{{EXECUTIVE_REVIEW}}|$(REVIEW_OUT)|g' -e "s|{{STYLE_GUIDE}}|$$style_guide|g" $<)"; \
claude $(CLAUDE_FLAGS) -p "$$prompt" > $(LOG_DIR)/09_Final_Export.json
@if [ -f "$(EXPORT_OUT)" ]; then echo "[Step 9/9] Complete. Final manifest at $(EXPORT_OUT)"; else echo "[Step 9/9] Warning: $(EXPORT_OUT) not found."; fi
100 changes: 100 additions & 0 deletions .claude/skills/presentation-pipeline/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
---
name: presentation-pipeline
description: Turn a single Markdown brief into a production-quality Slidev deck via a 9-step strategy→architecture→content→export pipeline (McKinsey/BCG logic + Jobs/Bezos/Duarte narrative). Use when the user wants to generate, draft, or architect a presentation/slide deck from raw notes, or asks to "run the presentation pipeline". Originated from the acp26/week1 branch.
---

# presentation-pipeline

Build a Slidev deck from one brief by running nine sequential stages. Each stage
reads the previous stage's JSON, applies a specific mental model, and writes its
own JSON to `outputs/`. The final stage writes the actual `slides/SL*.md` files.

The full specification for each stage lives in `prompts/0N_*.md` (bundled with
this skill). **Treat each prompt file as the authoritative instruction for that
stage** — open it, follow its Role / Process / Output Format / Quality Checklist
exactly, and emit the JSON it specifies.

## Inputs

The single source of truth is a brief with YAML frontmatter + Markdown body:

```markdown
---
target_audience: "..." # required
audience_type: group # individual | group | mixed
constraints:
max_slides: 15
max_duration_minutes: 15
output_language: Japanese # or English
event: # optional
name: "..."
---

# Title
...raw content...
```

A template is at `inputs/introduction.example.md`. If the user has not pointed to
a brief, ask for the path (default `inputs/introduction.md`) before starting.

`inputs/rules.md` captures slide-design rules established on earlier decks — read
it before stage 06/07 and respect it.

## The 9 stages

| # | Stage | Reads | Writes | Lens |
|---|-------|-------|--------|------|
| 1 | Context Analysis | the brief | `outputs/01_Context_Brief.json` | Bezos — find the SCR narrative |
| 2 | Audience Persona | 01 | `outputs/02_Audience_Persona.json` | Jobs — "what keeps them up at night?" |
| 3 | Core Strategy | 01, 02 | `outputs/03_Core_Strategy.json` | Jobs+Bezos — villain/hero, core message |
| 4 | Governing Argument | 03 (+02) | `outputs/04_Governing_Argument.json` | McKinsey — Pyramid Principle, MECE |
| 5 | Narrative Blueprint | 04, 03, 01 | `outputs/05_Narrative_Blueprint.json` | Jobs — Action Titles, Skim Test |
| 6 | Slide Drafting | 05, 04, 01 | `outputs/06_Slide_Content.json` | Bezos — notes first, evidence hierarchy |
| 7 | Visual Design | 06 | `outputs/07_Visual_Design.json` | Jobs+BCG — show don't tell, 1 chart 1 message |
| 8 | Executive Review | 07, 03, 01 | `outputs/08_Executive_Review.json` | gatekeeper — "not good enough", source fidelity |
| 9 | Final Export | 08, 07, 06 | `slides/SL*.md` (+ `outputs/09_Final_Export.json`) | assembler — apply revisions, WRITE FILES |

Stage 9's real deliverable is the `slides/SL*.md` files on disk, not JSON.

## How to run (in-conversation, default)

Run the stages yourself, one at a time, in order:

1. Ensure `outputs/` exists. Confirm (or ask for) the brief path.
2. For each stage 1→9: read `prompts/0N_*.md`, read the listed input JSON(s),
produce the output per that file's **Output Format**, and Write it to the
specified path. Show the user a 1–2 line summary per stage, not the whole JSON.
3. Between stages, honor that stage's Quality Checklist before moving on. If a
checklist item fails (e.g. Skim Test, MECE, 3-Second Test), iterate that
stage before continuing — a weak early stage poisons everything downstream.
4. After stage 9, list the slide files created and offer `bun run dev` to preview.

Pause for user confirmation after stage 3 (strategy) and stage 5 (blueprint) when
the deck is high-stakes — these are the cheapest points to course-correct.

## How to run (headless CLI, optional)

A `Makefile` is bundled that drives the same pipeline by shelling out to the
`claude` CLI per stage (`make all`, or a single stage like `make core_strategy`).
Use this only when the user explicitly wants the non-interactive batch mode; it
expects `prompts/`, `inputs/introduction.md`, and writes to `outputs/`/`slides/`
relative to wherever it's invoked. The in-conversation flow above is the default.

## Adapting to this repo's design system

The bundled stage 07 prompt assumes a generic dark theme (`#0f0f0f` bg, mermaid,
stock Slidev layouts). **This repo (presentation-agent) overrides that** — it has
its own light-theme design system documented in `CLAUDE.md` (the `nx-*` tokens,
Shippori Mincho / Cormorant typography, one-visual-per-slide SVG discipline,
`severe` 赤茶 vs `accent` 青 semantics). When generating slides for THIS repo,
follow `CLAUDE.md`'s design system, not stage 07's generic color/layout table —
use the pipeline for the strategy/argument/narrative spine and let the repo's
visual language govern the final SVG/Markdown.

## Notes

- Output language follows `output_language` in the brief; stage JSON is English
internally, but slide-facing copy uses the requested language. Per `CLAUDE.md`,
Japanese decks omit English `.ja` subtext.
- Keep stage outputs as valid JSON — downstream stages parse them.
- Don't skip stages; each guards a failure mode the next one assumes is handled.
Loading