| name | add-infographic |
| description | [ADD v0.11.0] Generate project infographic โ SVG from PRD + config with branding |
| argument-hint | [--update] |
ADD Infographic Skill v0.11.0
Generates a professional SVG infographic from the project's PRD and config. The infographic includes hero section, live metrics, workflow visualization, value propositions, and terminal command reference โ all styled with the project's branding palette.
Token economy: SVG generation is mechanical work. When sub-agent dispatch is available, delegate the bulk template-fill and SVG rendering to the fast tier per rules/model-roles.md; keep the frontier-model context for judgment โ content selection, layout decisions, and final review.
Pre-Flight Checks
Step 1.1: Verify ADD initialization
- Check if
.add/config.json exists
- If not found, respond: "โ Project not initialized. Run
/add-init first."
- HALT if config missing
Step 1.2: Load project configuration
- Read
.add/config.json to extract:
- Project name, description, version
- Maturity level (poc/alpha/beta/ga)
- Quality mode
- Branding palette (accentColor, accentGradient, preset)
- Primary run command from
environments.local.run
Step 1.3: Load template and design system
- Read
~/.codex/add/templates/infographic.svg.template
- Read
~/.codex/add/references/design-system.md for aesthetic guidance
- If template missing, HALT with error (plugin installation issue)
Step 1.4: Check for PRD (optional)
- Check if
docs/prd.md exists
- If exists, read for richer content extraction
- If not found, proceed with config-only mode (fallback)
Step 1.5: Check for session handoff โ per the Session-Handoff Preflight in ~/.codex/add/references/skill-epilogue.md
Phase 1: Gather Content
Step 1.1: Extract from PRD or Config
Project identity:
- Project name: from config
projectName
- Version: from config
version
- Eyebrow: derive from maturity level
- poc โ "PROOF OF CONCEPT"
- alpha โ "ALPHA RELEASE"
- beta โ "BETA RELEASE"
- ga โ "PRODUCTION READY"
Hero content:
- Hero headline: extract from PRD problem statement or derive outcome-focused headline from project description
- Must be outcome-focused, not feature-focused
- Examples: "Ship features faster with AI agents" not "A plugin for Claude Code"
- Max 60 characters
- Hero subheadline: extract from PRD value proposition or use config description
- 1-2 sentences, max 120 characters
- Focus on transformation/benefit
Workflow steps:
- If PRD Section 6 exists, extract workflow steps
- Otherwise, use standard ADD workflow:
- "Spec" โ Define feature requirements
- "Plan" โ Generate implementation strategy
- "Build" โ Execute TDD cycle (RED โ GREEN โ REFACTOR)
- "Verify" โ Run quality gates and deploy
Value cards:
- Extract from PRD success metrics or key features
- Need exactly 3 cards, each with:
- Title (short, outcome-focused, max 25 chars)
- Description (benefit statement, max 80 chars)
- If PRD unavailable, derive from config:
- Card 1: Quality focus (from quality mode)
- Card 2: Maturity benefit (from maturity level)
- Card 3: Workflow efficiency
Step 1.2: Gather Live Metrics
Metric 1: Spec count
- Use Glob to find
specs/*.md files
- Count results
- Label: "Specs"
- If 0, use "โ" as value
Metric 2: Test count
- Use Glob to find test files:
tests/**/*.test.*, tests/**/*_test.*, **/*.spec.*
- Count unique matches
- Label: "Tests"
- If 0, use "โ" as value
Metric 3: Maturity level
- From config maturity field
- Label: "Maturity"
- Value: uppercase first letter (e.g., "POC", "Alpha", "Beta", "GA")
Step 1.3: Prepare Terminal Command
Primary command:
- Extract from
config.environments.local.run
- Fallback:
/add-init
- Comment: "Get started with ADD"
Phase 2: Image Gen Detection
Step 2.1: Check for cached detection result
- Read
config.imageGeneration section if exists
- Check if
available field is present and lastChecked is recent (< 24 hours)
- If cached and fresh, use cached result
Step 2.2: Detect image gen capability
- Read
~/.codex/add/knowledge/image-gen-detection.md for detection algorithm
- Scan MCP configs for image generation tools:
- Check
~/.claude/mcp/local.json for tools matching image gen patterns
- Common patterns: "image", "generate", "draw", "vision"
- Set
imageGenAvailable = true | false
Step 2.3: Update cache in config
Phase 3: Compose SVG
Step 3.1: Load Template
- Template already loaded in pre-flight
- Template contains placeholder patterns:
{PLACEHOLDER_NAME}
Step 3.2: Replace Placeholders
Identity placeholders:
{PROJECT_NAME} โ project name from config
{VERSION} โ version from config
{EYEBROW} โ eyebrow text from Step 1.1
Hero placeholders:
{HERO_HEADLINE} โ headline from Step 1.1
{HERO_SUBHEADLINE} โ subheadline from Step 1.1
Metrics placeholders:
{METRIC_1_VALUE} โ spec count
{METRIC_1_LABEL} โ "Specs"
{METRIC_2_VALUE} โ test count
{METRIC_2_LABEL} โ "Tests"
{METRIC_3_VALUE} โ maturity level
{METRIC_3_LABEL} โ "Maturity"
Workflow placeholders:
{STEP_1} โ "Spec"
{STEP_2} โ "Plan"
{STEP_3} โ "Build"
{STEP_4} โ "Verify"
Value card placeholders:
{CARD_1_TITLE}, {CARD_1_DESC} โ first value card
{CARD_2_TITLE}, {CARD_2_DESC} โ second value card
{CARD_3_TITLE}, {CARD_3_DESC} โ third value card
Terminal placeholders:
{TERMINAL_COMMAND} โ primary command from config
{TERMINAL_COMMENT} โ "Get started with ADD" or derived comment
Footer placeholders:
{FOOTER_LEFT} โ "Generated by ADD v{version}"
{FOOTER_CENTER} โ "{projectName}"
{FOOTER_RIGHT} โ current date (YYYY-MM-DD)
Branding placeholders:
{GRADIENT_START} โ from config.branding.accentGradient.start
{GRADIENT_MID} โ from config.branding.accentGradient.mid
{GRADIENT_END} โ from config.branding.accentGradient.end
- Fallback: use raspberry palette (#b00149, #d4446a, #ff6b9d)
Step 3.3: Maturity Adaptation
POC maturity:
- Simplify metrics: show only 2 metrics (specs, maturity)
- Reduce value cards to 2 instead of 3
- Add "EXPERIMENTAL" watermark in corner
Alpha/Beta:
- Standard treatment with all sections
GA:
- Full treatment
- Add "PRODUCTION READY" badge
- Include all metrics and cards
Step 3.4: Image Gen Enhancement (if available)
If imageGenAvailable = true:
- Attempt to generate hero illustration using detected MCP tool
- Prompt: "Abstract minimalist illustration for {project_name}: {hero_headline}. Modern, clean, geometric style with {accent_color} accent. Dark background."
- If generation succeeds:
- Embed as base64
<image> element in hero section (x="800" y="100" width="350" height="350")
- Add subtle drop shadow filter
- If generation fails:
- Log warning to output
- Fall back to gradient-based hero (no degradation in quality)
If imageGenAvailable = false:
- Use gradient-based hero with geometric shapes
- This is first-class design, not degraded mode
- No warning needed
Step 3.5: Write SVG File
Step 3.5.1: Ensure docs directory
- Run Bash:
mkdir -p /Users/abrooke/projects/add/docs
Step 3.5.2: Write composed SVG
- Write final SVG content to
/Users/abrooke/projects/add/docs/infographic.svg
- Preserve all formatting, indentation, and whitespace
Phase 4: Verification
Run verification checklist:
If any check fails:
- Log specific failure
- Fix the issue
- Regenerate affected section
- Re-run verification
Phase 5: README Integration
Step 5.1: Check for README
- Check if
README.md exists in project root
- If not found, skip this phase (proceed to output)
Step 5.2: Search for existing reference
- Use Grep to search README for patterns:

docs/infographic.svg
- If match found, skip modification (already integrated)
Step 5.3: Add infographic reference
Step 5.4: Verify README update
- Read back README
- Confirm infographic reference is present
- If verification fails, log warning but don't halt
Phase 6: Summary Output
Generate summary:
โ INFOGRAPHIC GENERATED
File: docs/infographic.svg ({file_size} bytes)
Sections: {verified_count}/13 verified
Image Gen: {Used | SVG-only mode}
README: {Updated | Already referenced | No README found}
Branding: {accent_color} ({preset_name or "custom"})
View: open docs/infographic.svg
Related commands:
/add-brand View current branding
/add-brand-update Change branding and re-audit artifacts
/add-infographic --update Regenerate from current project state
Exit successfully.
--update Flag Behavior
When --update is present in $ARGUMENTS:
- Skip all user questions
- Proceed directly with content gathering
- Re-read all sources (config, PRD, live metrics)
- Overwrite existing
docs/infographic.svg without confirmation
- Use same logic as initial generation
- Preserve any manual customizations in config (branding, etc.)
When --update is NOT present:
- If
docs/infographic.svg already exists:
- Ask user: "Infographic already exists. Regenerate? (y/n)"
- If no, exit gracefully
- If yes, proceed with regeneration
- If not exists, proceed without asking
Progress Tracking
Tasks to create (mechanics per ~/.codex/add/references/skill-epilogue.md):
| Phase | Subject | activeForm |
|---|
| Gather | Reading PRD and config | Reading PRD and config... |
| Layout | Designing infographic layout | Designing layout... |
| Generate | Generating SVG content | Generating SVG... |
| Write | Writing output file | Writing output file... |
Error Handling
Config missing:
- Output: "โ Project not initialized. Run
/add-init first."
- Exit with error
Template missing:
- Output: "โ Template not found. Plugin installation may be corrupted."
- Suggest: "Reinstall with:
claude plugin uninstall add && claude plugin install add"
- Exit with error
PRD missing:
- NOT an error โ proceed with config-only mode
- Use config description and default content
- Log: "โน No PRD found, using config-only mode"
Image gen failure:
- NOT an error โ fall back to gradient hero
- Log: "โ Image generation failed, using SVG-only mode"
- Continue generation
README update failure:
- NOT an error โ infographic still generated
- Log: "โ Could not update README automatically"
- Suggest manual integration in output
Notes
- All command references MUST use namespaced form:
/add-infographic, /add-init, /add-brand, etc. Never drop the add: namespace prefix.
- SVG-only mode is first-class, not degraded โ design system accounts for both modes
- Infographic regeneration is idempotent โ safe to run multiple times
- Template uses GitHub-safe SVG (no
<style> or <script> tags, all inline styles)
- Canvas size in
viewBox and sections must remain coordinated (template handles this)
End-of-skill epilogue: follow ~/.codex/add/references/skill-epilogue.md (observation + learning checkpoint + progress tracking).