[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CHW2RN29TQPJVPV47ZFDGK":3,"skill-same:01M6CHW2RN29TQPJVPV47ZFDGK":94},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":30,"publishedAt":48,"linkOnly":49,"markdownContent":50,"markdownBody":51,"frontMatter":52,"refName":66,"commitSha":67,"skillDirectory":68,"forksCount":69,"repositoryHtmlUrl":70,"repositoryHomepageUrl":71,"ownerHtmlUrl":72,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":73,"install":74,"resources":87},"01M6CHW2RN29TQPJVPV47ZFDGK","infographic",null,"[ADD v0.11.0] Generate project infographic — SVG from PRD + config with branding","MountainUnicorn\u002Fadd","MountainUnicorn","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F199411549?v=4","01M6CHRAWFWD275ANP1S2A0HXC","01M6CHRB0QE1678D913B438SAR",11,"MIT","https:\u002F\u002Fgithub.com\u002FMountainUnicorn\u002Fadd\u002Fblob\u002Fmain\u002Fplugins\u002Fadd\u002Fskills\u002Finfographic\u002FSKILL.md",[17,22,25],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":26,"categoryName":27,"taxonomyType":28,"taxonomyTypeDesc":29},"01JBSEEDCAT000000000000031","产品经理","PROFESSION","适用职业",[5,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47],"system","design-system","v0","edit","write","read","grep","Rules","design","Bash","detection","prd","update","generate","telemetry","config","image","2026-11-10 10:12:30",false,"---\ndescription: \"[ADD v0.11.0] Generate project infographic — SVG from PRD + config with branding\"\nargument-hint: \"[--update]\"\nallowed-tools: [Read, Write, Edit, Glob, Grep, Bash, AskUserQuestion]\nreferences: [\"design-system.md\", \"image-gen-detection.md\", \"skill-epilogue.md\", \"rules\u002Ftelemetry.md\"]\n---\n\n# ADD Infographic Skill v0.11.0\n\nGenerates 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.\n\n**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\u002Fmodel-roles.md`; keep the frontier-model context for judgment — content selection, layout decisions, and final review.\n\n## Pre-Flight Checks\n\n**Step 1.1: Verify ADD initialization**\n- Check if `.add\u002Fconfig.json` exists\n- If not found, respond: \"❌ Project not initialized. Run `\u002Fadd:init` first.\"\n- HALT if config missing\n\n**Step 1.2: Load project configuration**\n- Read `.add\u002Fconfig.json` to extract:\n  - Project name, description, version\n  - Maturity level (poc\u002Falpha\u002Fbeta\u002Fga)\n  - Quality mode\n  - Branding palette (accentColor, accentGradient, preset)\n  - Primary run command from `environments.local.run`\n\n**Step 1.3: Load template and design system**\n- Read `${CLAUDE_PLUGIN_ROOT}\u002Ftemplates\u002Finfographic.svg.template`\n- Read `${CLAUDE_PLUGIN_ROOT}\u002Freferences\u002Fdesign-system.md` for aesthetic guidance\n- If template missing, HALT with error (plugin installation issue)\n\n**Step 1.4: Check for PRD (optional)**\n- Check if `docs\u002Fprd.md` exists\n- If exists, read for richer content extraction\n- If not found, proceed with config-only mode (fallback)\n\n**Step 1.5: Check for session handoff** — per the Session-Handoff Preflight in `${CLAUDE_PLUGIN_ROOT}\u002Freferences\u002Fskill-epilogue.md`\n\n## Phase 1: Gather Content\n\n### Step 1.1: Extract from PRD or Config\n\n**Project identity:**\n- Project name: from config `projectName`\n- Version: from config `version`\n- Eyebrow: derive from maturity level\n  - poc → \"PROOF OF CONCEPT\"\n  - alpha → \"ALPHA RELEASE\"\n  - beta → \"BETA RELEASE\"\n  - ga → \"PRODUCTION READY\"\n\n**Hero content:**\n- Hero headline: extract from PRD problem statement or derive outcome-focused headline from project description\n  - Must be outcome-focused, not feature-focused\n  - Examples: \"Ship features faster with AI agents\" not \"A plugin for Claude Code\"\n  - Max 60 characters\n- Hero subheadline: extract from PRD value proposition or use config description\n  - 1-2 sentences, max 120 characters\n  - Focus on transformation\u002Fbenefit\n\n**Workflow steps:**\n- If PRD Section 6 exists, extract workflow steps\n- Otherwise, use standard ADD workflow:\n  1. \"Spec\" — Define feature requirements\n  2. \"Plan\" — Generate implementation strategy\n  3. \"Build\" — Execute TDD cycle (RED → GREEN → REFACTOR)\n  4. \"Verify\" — Run quality gates and deploy\n\n**Value cards:**\n- Extract from PRD success metrics or key features\n- Need exactly 3 cards, each with:\n  - Title (short, outcome-focused, max 25 chars)\n  - Description (benefit statement, max 80 chars)\n- If PRD unavailable, derive from config:\n  - Card 1: Quality focus (from quality mode)\n  - Card 2: Maturity benefit (from maturity level)\n  - Card 3: Workflow efficiency\n\n### Step 1.2: Gather Live Metrics\n\n**Metric 1: Spec count**\n- Use Glob to find `specs\u002F*.md` files\n- Count results\n- Label: \"Specs\"\n- If 0, use \"—\" as value\n\n**Metric 2: Test count**\n- Use Glob to find test files: `tests\u002F**\u002F*.test.*`, `tests\u002F**\u002F*_test.*`, `**\u002F*.spec.*`\n- Count unique matches\n- Label: \"Tests\"\n- If 0, use \"—\" as value\n\n**Metric 3: Maturity level**\n- From config maturity field\n- Label: \"Maturity\"\n- Value: uppercase first letter (e.g., \"POC\", \"Alpha\", \"Beta\", \"GA\")\n\n### Step 1.3: Prepare Terminal Command\n\n**Primary command:**\n- Extract from `config.environments.local.run`\n- Fallback: `\u002Fadd:init`\n- Comment: \"Get started with ADD\"\n\n## Phase 2: Image Gen Detection\n\n**Step 2.1: Check for cached detection result**\n- Read `config.imageGeneration` section if exists\n- Check if `available` field is present and `lastChecked` is recent (\u003C 24 hours)\n- If cached and fresh, use cached result\n\n**Step 2.2: Detect image gen capability**\n- Read `${CLAUDE_PLUGIN_ROOT}\u002Fknowledge\u002Fimage-gen-detection.md` for detection algorithm\n- Scan MCP configs for image generation tools:\n  - Check `~\u002F.claude\u002Fmcp\u002Flocal.json` for tools matching image gen patterns\n  - Common patterns: \"image\", \"generate\", \"draw\", \"vision\"\n- Set `imageGenAvailable = true | false`\n\n**Step 2.3: Update cache in config**\n- If detection ran, update `.add\u002Fconfig.json`:\n  ```json\n  \"imageGeneration\": {\n    \"available\": true|false,\n    \"lastChecked\": \"2026-02-14T12:00:00Z\",\n    \"detectedTool\": \"tool-name\" \u002F\u002F if available\n  }\n  ```\n\n## Phase 3: Compose SVG\n\n### Step 3.1: Load Template\n- Template already loaded in pre-flight\n- Template contains placeholder patterns: `{PLACEHOLDER_NAME}`\n\n### Step 3.2: Replace Placeholders\n\n**Identity placeholders:**\n- `{PROJECT_NAME}` → project name from config\n- `{VERSION}` → version from config\n- `{EYEBROW}` → eyebrow text from Step 1.1\n\n**Hero placeholders:**\n- `{HERO_HEADLINE}` → headline from Step 1.1\n- `{HERO_SUBHEADLINE}` → subheadline from Step 1.1\n\n**Metrics placeholders:**\n- `{METRIC_1_VALUE}` → spec count\n- `{METRIC_1_LABEL}` → \"Specs\"\n- `{METRIC_2_VALUE}` → test count\n- `{METRIC_2_LABEL}` → \"Tests\"\n- `{METRIC_3_VALUE}` → maturity level\n- `{METRIC_3_LABEL}` → \"Maturity\"\n\n**Workflow placeholders:**\n- `{STEP_1}` → \"Spec\"\n- `{STEP_2}` → \"Plan\"\n- `{STEP_3}` → \"Build\"\n- `{STEP_4}` → \"Verify\"\n\n**Value card placeholders:**\n- `{CARD_1_TITLE}`, `{CARD_1_DESC}` → first value card\n- `{CARD_2_TITLE}`, `{CARD_2_DESC}` → second value card\n- `{CARD_3_TITLE}`, `{CARD_3_DESC}` → third value card\n\n**Terminal placeholders:**\n- `{TERMINAL_COMMAND}` → primary command from config\n- `{TERMINAL_COMMENT}` → \"Get started with ADD\" or derived comment\n\n**Footer placeholders:**\n- `{FOOTER_LEFT}` → \"Generated by ADD v{version}\"\n- `{FOOTER_CENTER}` → \"{projectName}\"\n- `{FOOTER_RIGHT}` → current date (YYYY-MM-DD)\n\n**Branding placeholders:**\n- `{GRADIENT_START}` → from `config.branding.accentGradient.start`\n- `{GRADIENT_MID}` → from `config.branding.accentGradient.mid`\n- `{GRADIENT_END}` → from `config.branding.accentGradient.end`\n- Fallback: use raspberry palette (#b00149, #d4446a, #ff6b9d)\n\n### Step 3.3: Maturity Adaptation\n\n**POC maturity:**\n- Simplify metrics: show only 2 metrics (specs, maturity)\n- Reduce value cards to 2 instead of 3\n- Add \"EXPERIMENTAL\" watermark in corner\n\n**Alpha\u002FBeta:**\n- Standard treatment with all sections\n\n**GA:**\n- Full treatment\n- Add \"PRODUCTION READY\" badge\n- Include all metrics and cards\n\n### Step 3.4: Image Gen Enhancement (if available)\n\n**If imageGenAvailable = true:**\n- Attempt to generate hero illustration using detected MCP tool\n- Prompt: \"Abstract minimalist illustration for {project_name}: {hero_headline}. Modern, clean, geometric style with {accent_color} accent. Dark background.\"\n- If generation succeeds:\n  - Embed as base64 `\u003Cimage>` element in hero section (x=\"800\" y=\"100\" width=\"350\" height=\"350\")\n  - Add subtle drop shadow filter\n- If generation fails:\n  - Log warning to output\n  - Fall back to gradient-based hero (no degradation in quality)\n\n**If imageGenAvailable = false:**\n- Use gradient-based hero with geometric shapes\n- This is first-class design, not degraded mode\n- No warning needed\n\n### Step 3.5: Write SVG File\n\n**Step 3.5.1: Ensure docs directory**\n- Run Bash: `mkdir -p \u002FUsers\u002Fabrooke\u002Fprojects\u002Fadd\u002Fdocs`\n\n**Step 3.5.2: Write composed SVG**\n- Write final SVG content to `\u002FUsers\u002Fabrooke\u002Fprojects\u002Fadd\u002Fdocs\u002Finfographic.svg`\n- Preserve all formatting, indentation, and whitespace\n\n## Phase 4: Verification\n\n**Run verification checklist:**\n- [ ] File exists at `\u002FUsers\u002Fabrooke\u002Fprojects\u002Fadd\u002Fdocs\u002Finfographic.svg`\n- [ ] Contains `viewBox=\"0 0 1200 X\"` (X varies by content)\n- [ ] Contains dark background rect with fill=\"#1a1a2e\"\n- [ ] Contains `\u003ClinearGradient id=\"heroGrad\">`\n- [ ] Contains `\u003ClinearGradient id=\"accentGrad\">` with project colors\n- [ ] Contains `\u003Cfilter id=\"glass\">`\n- [ ] Contains project name (not `{PROJECT_NAME}` placeholder)\n- [ ] Contains hero headline (not `{HERO_HEADLINE}` placeholder)\n- [ ] Contains metrics section with 3 metrics\n- [ ] Contains workflow section with 4 steps\n- [ ] Contains value cards section with 3 cards (2 for POC)\n- [ ] Contains terminal section with command\n- [ ] File size > 5KB (verify with Bash: `wc -c docs\u002Finfographic.svg`)\n- [ ] No remaining `{PLACEHOLDER}` patterns (verify with Grep: `grep -o '{[A-Z_]*}' docs\u002Finfographic.svg`)\n\n**If any check fails:**\n- Log specific failure\n- Fix the issue\n- Regenerate affected section\n- Re-run verification\n\n## Phase 5: README Integration\n\n**Step 5.1: Check for README**\n- Check if `README.md` exists in project root\n- If not found, skip this phase (proceed to output)\n\n**Step 5.2: Search for existing reference**\n- Use Grep to search README for patterns:\n  - `![.*infographic.*](docs\u002Finfographic.svg)`\n  - `docs\u002Finfographic.svg`\n- If match found, skip modification (already integrated)\n\n**Step 5.3: Add infographic reference**\n- Read `README.md`\n- Locate insertion point: after title\u002Fbadges, before main content\n- Insert:\n  ```markdown\n  ## Overview\n\n  ![Project Infographic](docs\u002Finfographic.svg)\n\n  ```\n- Write updated README\n\n**Step 5.4: Verify README update**\n- Read back README\n- Confirm infographic reference is present\n- If verification fails, log warning but don't halt\n\n## Phase 6: Summary Output\n\n**Generate summary:**\n\n```\n✓ INFOGRAPHIC GENERATED\n\n  File:        docs\u002Finfographic.svg ({file_size} bytes)\n  Sections:    {verified_count}\u002F13 verified\n  Image Gen:   {Used | SVG-only mode}\n  README:      {Updated | Already referenced | No README found}\n  Branding:    {accent_color} ({preset_name or \"custom\"})\n\n  View: open docs\u002Finfographic.svg\n\n  Related commands:\n    \u002Fadd:brand           View current branding\n    \u002Fadd:brand-update    Change branding and re-audit artifacts\n    \u002Fadd:infographic --update   Regenerate from current project state\n```\n\n**Exit successfully.**\n\n## --update Flag Behavior\n\n**When `--update` is present in $ARGUMENTS:**\n- Skip all user questions\n- Proceed directly with content gathering\n- Re-read all sources (config, PRD, live metrics)\n- Overwrite existing `docs\u002Finfographic.svg` without confirmation\n- Use same logic as initial generation\n- Preserve any manual customizations in config (branding, etc.)\n\n**When `--update` is NOT present:**\n- If `docs\u002Finfographic.svg` already exists:\n  - Ask user: \"Infographic already exists. Regenerate? (y\u002Fn)\"\n  - If no, exit gracefully\n  - If yes, proceed with regeneration\n- If not exists, proceed without asking\n\n## Progress Tracking\n\n**Tasks to create** (mechanics per `${CLAUDE_PLUGIN_ROOT}\u002Freferences\u002Fskill-epilogue.md`):\n\n| Phase | Subject | activeForm |\n|-------|---------|------------|\n| Gather | Reading PRD and config | Reading PRD and config... |\n| Layout | Designing infographic layout | Designing layout... |\n| Generate | Generating SVG content | Generating SVG... |\n| Write | Writing output file | Writing output file... |\n\n## Error Handling\n\n**Config missing:**\n- Output: \"❌ Project not initialized. Run `\u002Fadd:init` first.\"\n- Exit with error\n\n**Template missing:**\n- Output: \"❌ Template not found. Plugin installation may be corrupted.\"\n- Suggest: \"Reinstall with: `claude plugin uninstall add && claude plugin install add`\"\n- Exit with error\n\n**PRD missing:**\n- NOT an error — proceed with config-only mode\n- Use config description and default content\n- Log: \"ℹ No PRD found, using config-only mode\"\n\n**Image gen failure:**\n- NOT an error — fall back to gradient hero\n- Log: \"⚠ Image generation failed, using SVG-only mode\"\n- Continue generation\n\n**README update failure:**\n- NOT an error — infographic still generated\n- Log: \"⚠ Could not update README automatically\"\n- Suggest manual integration in output\n\n## Notes\n\n- All command references MUST use namespaced form: `\u002Fadd:infographic`, `\u002Fadd:init`, `\u002Fadd:brand`, etc. Never drop the `add:` namespace prefix.\n- SVG-only mode is first-class, not degraded — design system accounts for both modes\n- Infographic regeneration is idempotent — safe to run multiple times\n- Template uses GitHub-safe SVG (no `\u003Cstyle>` or `\u003Cscript>` tags, all inline styles)\n- Canvas size in `viewBox` and sections must remain coordinated (template handles this)\n\nEnd-of-skill epilogue: follow `${CLAUDE_PLUGIN_ROOT}\u002Freferences\u002Fskill-epilogue.md` (observation + learning checkpoint + progress tracking).\n","# ADD Infographic Skill v0.11.0\n\nGenerates 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.\n\n**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\u002Fmodel-roles.md`; keep the frontier-model context for judgment — content selection, layout decisions, and final review.\n\n## Pre-Flight Checks\n\n**Step 1.1: Verify ADD initialization**\n- Check if `.add\u002Fconfig.json` exists\n- If not found, respond: \"❌ Project not initialized. Run `\u002Fadd:init` first.\"\n- HALT if config missing\n\n**Step 1.2: Load project configuration**\n- Read `.add\u002Fconfig.json` to extract:\n  - Project name, description, version\n  - Maturity level (poc\u002Falpha\u002Fbeta\u002Fga)\n  - Quality mode\n  - Branding palette (accentColor, accentGradient, preset)\n  - Primary run command from `environments.local.run`\n\n**Step 1.3: Load template and design system**\n- Read `${CLAUDE_PLUGIN_ROOT}\u002Ftemplates\u002Finfographic.svg.template`\n- Read `${CLAUDE_PLUGIN_ROOT}\u002Freferences\u002Fdesign-system.md` for aesthetic guidance\n- If template missing, HALT with error (plugin installation issue)\n\n**Step 1.4: Check for PRD (optional)**\n- Check if `docs\u002Fprd.md` exists\n- If exists, read for richer content extraction\n- If not found, proceed with config-only mode (fallback)\n\n**Step 1.5: Check for session handoff** — per the Session-Handoff Preflight in `${CLAUDE_PLUGIN_ROOT}\u002Freferences\u002Fskill-epilogue.md`\n\n## Phase 1: Gather Content\n\n### Step 1.1: Extract from PRD or Config\n\n**Project identity:**\n- Project name: from config `projectName`\n- Version: from config `version`\n- Eyebrow: derive from maturity level\n  - poc → \"PROOF OF CONCEPT\"\n  - alpha → \"ALPHA RELEASE\"\n  - beta → \"BETA RELEASE\"\n  - ga → \"PRODUCTION READY\"\n\n**Hero content:**\n- Hero headline: extract from PRD problem statement or derive outcome-focused headline from project description\n  - Must be outcome-focused, not feature-focused\n  - Examples: \"Ship features faster with AI agents\" not \"A plugin for Claude Code\"\n  - Max 60 characters\n- Hero subheadline: extract from PRD value proposition or use config description\n  - 1-2 sentences, max 120 characters\n  - Focus on transformation\u002Fbenefit\n\n**Workflow steps:**\n- If PRD Section 6 exists, extract workflow steps\n- Otherwise, use standard ADD workflow:\n  1. \"Spec\" — Define feature requirements\n  2. \"Plan\" — Generate implementation strategy\n  3. \"Build\" — Execute TDD cycle (RED → GREEN → REFACTOR)\n  4. \"Verify\" — Run quality gates and deploy\n\n**Value cards:**\n- Extract from PRD success metrics or key features\n- Need exactly 3 cards, each with:\n  - Title (short, outcome-focused, max 25 chars)\n  - Description (benefit statement, max 80 chars)\n- If PRD unavailable, derive from config:\n  - Card 1: Quality focus (from quality mode)\n  - Card 2: Maturity benefit (from maturity level)\n  - Card 3: Workflow efficiency\n\n### Step 1.2: Gather Live Metrics\n\n**Metric 1: Spec count**\n- Use Glob to find `specs\u002F*.md` files\n- Count results\n- Label: \"Specs\"\n- If 0, use \"—\" as value\n\n**Metric 2: Test count**\n- Use Glob to find test files: `tests\u002F**\u002F*.test.*`, `tests\u002F**\u002F*_test.*`, `**\u002F*.spec.*`\n- Count unique matches\n- Label: \"Tests\"\n- If 0, use \"—\" as value\n\n**Metric 3: Maturity level**\n- From config maturity field\n- Label: \"Maturity\"\n- Value: uppercase first letter (e.g., \"POC\", \"Alpha\", \"Beta\", \"GA\")\n\n### Step 1.3: Prepare Terminal Command\n\n**Primary command:**\n- Extract from `config.environments.local.run`\n- Fallback: `\u002Fadd:init`\n- Comment: \"Get started with ADD\"\n\n## Phase 2: Image Gen Detection\n\n**Step 2.1: Check for cached detection result**\n- Read `config.imageGeneration` section if exists\n- Check if `available` field is present and `lastChecked` is recent (\u003C 24 hours)\n- If cached and fresh, use cached result\n\n**Step 2.2: Detect image gen capability**\n- Read `${CLAUDE_PLUGIN_ROOT}\u002Fknowledge\u002Fimage-gen-detection.md` for detection algorithm\n- Scan MCP configs for image generation tools:\n  - Check `~\u002F.claude\u002Fmcp\u002Flocal.json` for tools matching image gen patterns\n  - Common patterns: \"image\", \"generate\", \"draw\", \"vision\"\n- Set `imageGenAvailable = true | false`\n\n**Step 2.3: Update cache in config**\n- If detection ran, update `.add\u002Fconfig.json`:\n  ```json\n  \"imageGeneration\": {\n    \"available\": true|false,\n    \"lastChecked\": \"2026-02-14T12:00:00Z\",\n    \"detectedTool\": \"tool-name\" \u002F\u002F if available\n  }\n  ```\n\n## Phase 3: Compose SVG\n\n### Step 3.1: Load Template\n- Template already loaded in pre-flight\n- Template contains placeholder patterns: `{PLACEHOLDER_NAME}`\n\n### Step 3.2: Replace Placeholders\n\n**Identity placeholders:**\n- `{PROJECT_NAME}` → project name from config\n- `{VERSION}` → version from config\n- `{EYEBROW}` → eyebrow text from Step 1.1\n\n**Hero placeholders:**\n- `{HERO_HEADLINE}` → headline from Step 1.1\n- `{HERO_SUBHEADLINE}` → subheadline from Step 1.1\n\n**Metrics placeholders:**\n- `{METRIC_1_VALUE}` → spec count\n- `{METRIC_1_LABEL}` → \"Specs\"\n- `{METRIC_2_VALUE}` → test count\n- `{METRIC_2_LABEL}` → \"Tests\"\n- `{METRIC_3_VALUE}` → maturity level\n- `{METRIC_3_LABEL}` → \"Maturity\"\n\n**Workflow placeholders:**\n- `{STEP_1}` → \"Spec\"\n- `{STEP_2}` → \"Plan\"\n- `{STEP_3}` → \"Build\"\n- `{STEP_4}` → \"Verify\"\n\n**Value card placeholders:**\n- `{CARD_1_TITLE}`, `{CARD_1_DESC}` → first value card\n- `{CARD_2_TITLE}`, `{CARD_2_DESC}` → second value card\n- `{CARD_3_TITLE}`, `{CARD_3_DESC}` → third value card\n\n**Terminal placeholders:**\n- `{TERMINAL_COMMAND}` → primary command from config\n- `{TERMINAL_COMMENT}` → \"Get started with ADD\" or derived comment\n\n**Footer placeholders:**\n- `{FOOTER_LEFT}` → \"Generated by ADD v{version}\"\n- `{FOOTER_CENTER}` → \"{projectName}\"\n- `{FOOTER_RIGHT}` → current date (YYYY-MM-DD)\n\n**Branding placeholders:**\n- `{GRADIENT_START}` → from `config.branding.accentGradient.start`\n- `{GRADIENT_MID}` → from `config.branding.accentGradient.mid`\n- `{GRADIENT_END}` → from `config.branding.accentGradient.end`\n- Fallback: use raspberry palette (#b00149, #d4446a, #ff6b9d)\n\n### Step 3.3: Maturity Adaptation\n\n**POC maturity:**\n- Simplify metrics: show only 2 metrics (specs, maturity)\n- Reduce value cards to 2 instead of 3\n- Add \"EXPERIMENTAL\" watermark in corner\n\n**Alpha\u002FBeta:**\n- Standard treatment with all sections\n\n**GA:**\n- Full treatment\n- Add \"PRODUCTION READY\" badge\n- Include all metrics and cards\n\n### Step 3.4: Image Gen Enhancement (if available)\n\n**If imageGenAvailable = true:**\n- Attempt to generate hero illustration using detected MCP tool\n- Prompt: \"Abstract minimalist illustration for {project_name}: {hero_headline}. Modern, clean, geometric style with {accent_color} accent. Dark background.\"\n- If generation succeeds:\n  - Embed as base64 `\u003Cimage>` element in hero section (x=\"800\" y=\"100\" width=\"350\" height=\"350\")\n  - Add subtle drop shadow filter\n- If generation fails:\n  - Log warning to output\n  - Fall back to gradient-based hero (no degradation in quality)\n\n**If imageGenAvailable = false:**\n- Use gradient-based hero with geometric shapes\n- This is first-class design, not degraded mode\n- No warning needed\n\n### Step 3.5: Write SVG File\n\n**Step 3.5.1: Ensure docs directory**\n- Run Bash: `mkdir -p \u002FUsers\u002Fabrooke\u002Fprojects\u002Fadd\u002Fdocs`\n\n**Step 3.5.2: Write composed SVG**\n- Write final SVG content to `\u002FUsers\u002Fabrooke\u002Fprojects\u002Fadd\u002Fdocs\u002Finfographic.svg`\n- Preserve all formatting, indentation, and whitespace\n\n## Phase 4: Verification\n\n**Run verification checklist:**\n- [ ] File exists at `\u002FUsers\u002Fabrooke\u002Fprojects\u002Fadd\u002Fdocs\u002Finfographic.svg`\n- [ ] Contains `viewBox=\"0 0 1200 X\"` (X varies by content)\n- [ ] Contains dark background rect with fill=\"#1a1a2e\"\n- [ ] Contains `\u003ClinearGradient id=\"heroGrad\">`\n- [ ] Contains `\u003ClinearGradient id=\"accentGrad\">` with project colors\n- [ ] Contains `\u003Cfilter id=\"glass\">`\n- [ ] Contains project name (not `{PROJECT_NAME}` placeholder)\n- [ ] Contains hero headline (not `{HERO_HEADLINE}` placeholder)\n- [ ] Contains metrics section with 3 metrics\n- [ ] Contains workflow section with 4 steps\n- [ ] Contains value cards section with 3 cards (2 for POC)\n- [ ] Contains terminal section with command\n- [ ] File size > 5KB (verify with Bash: `wc -c docs\u002Finfographic.svg`)\n- [ ] No remaining `{PLACEHOLDER}` patterns (verify with Grep: `grep -o '{[A-Z_]*}' docs\u002Finfographic.svg`)\n\n**If any check fails:**\n- Log specific failure\n- Fix the issue\n- Regenerate affected section\n- Re-run verification\n\n## Phase 5: README Integration\n\n**Step 5.1: Check for README**\n- Check if `README.md` exists in project root\n- If not found, skip this phase (proceed to output)\n\n**Step 5.2: Search for existing reference**\n- Use Grep to search README for patterns:\n  - `![.*infographic.*](docs\u002Finfographic.svg)`\n  - `docs\u002Finfographic.svg`\n- If match found, skip modification (already integrated)\n\n**Step 5.3: Add infographic reference**\n- Read `README.md`\n- Locate insertion point: after title\u002Fbadges, before main content\n- Insert:\n  ```markdown\n  ## Overview\n\n  ![Project Infographic](docs\u002Finfographic.svg)\n\n  ```\n- Write updated README\n\n**Step 5.4: Verify README update**\n- Read back README\n- Confirm infographic reference is present\n- If verification fails, log warning but don't halt\n\n## Phase 6: Summary Output\n\n**Generate summary:**\n\n```\n✓ INFOGRAPHIC GENERATED\n\n  File:        docs\u002Finfographic.svg ({file_size} bytes)\n  Sections:    {verified_count}\u002F13 verified\n  Image Gen:   {Used | SVG-only mode}\n  README:      {Updated | Already referenced | No README found}\n  Branding:    {accent_color} ({preset_name or \"custom\"})\n\n  View: open docs\u002Finfographic.svg\n\n  Related commands:\n    \u002Fadd:brand           View current branding\n    \u002Fadd:brand-update    Change branding and re-audit artifacts\n    \u002Fadd:infographic --update   Regenerate from current project state\n```\n\n**Exit successfully.**\n\n## --update Flag Behavior\n\n**When `--update` is present in $ARGUMENTS:**\n- Skip all user questions\n- Proceed directly with content gathering\n- Re-read all sources (config, PRD, live metrics)\n- Overwrite existing `docs\u002Finfographic.svg` without confirmation\n- Use same logic as initial generation\n- Preserve any manual customizations in config (branding, etc.)\n\n**When `--update` is NOT present:**\n- If `docs\u002Finfographic.svg` already exists:\n  - Ask user: \"Infographic already exists. Regenerate? (y\u002Fn)\"\n  - If no, exit gracefully\n  - If yes, proceed with regeneration\n- If not exists, proceed without asking\n\n## Progress Tracking\n\n**Tasks to create** (mechanics per `${CLAUDE_PLUGIN_ROOT}\u002Freferences\u002Fskill-epilogue.md`):\n\n| Phase | Subject | activeForm |\n|-------|---------|------------|\n| Gather | Reading PRD and config | Reading PRD and config... |\n| Layout | Designing infographic layout | Designing layout... |\n| Generate | Generating SVG content | Generating SVG... |\n| Write | Writing output file | Writing output file... |\n\n## Error Handling\n\n**Config missing:**\n- Output: \"❌ Project not initialized. Run `\u002Fadd:init` first.\"\n- Exit with error\n\n**Template missing:**\n- Output: \"❌ Template not found. Plugin installation may be corrupted.\"\n- Suggest: \"Reinstall with: `claude plugin uninstall add && claude plugin install add`\"\n- Exit with error\n\n**PRD missing:**\n- NOT an error — proceed with config-only mode\n- Use config description and default content\n- Log: \"ℹ No PRD found, using config-only mode\"\n\n**Image gen failure:**\n- NOT an error — fall back to gradient hero\n- Log: \"⚠ Image generation failed, using SVG-only mode\"\n- Continue generation\n\n**README update failure:**\n- NOT an error — infographic still generated\n- Log: \"⚠ Could not update README automatically\"\n- Suggest manual integration in output\n\n## Notes\n\n- All command references MUST use namespaced form: `\u002Fadd:infographic`, `\u002Fadd:init`, `\u002Fadd:brand`, etc. Never drop the `add:` namespace prefix.\n- SVG-only mode is first-class, not degraded — design system accounts for both modes\n- Infographic regeneration is idempotent — safe to run multiple times\n- Template uses GitHub-safe SVG (no `\u003Cstyle>` or `\u003Cscript>` tags, all inline styles)\n- Canvas size in `viewBox` and sections must remain coordinated (template handles this)\n\nEnd-of-skill epilogue: follow `${CLAUDE_PLUGIN_ROOT}\u002Freferences\u002Fskill-epilogue.md` (observation + learning checkpoint + progress tracking).\n",{"references":53,"description":7,"allowed-tools":58,"argument-hint":65},[54,55,56,57],"design-system.md","image-gen-detection.md","skill-epilogue.md","rules\u002Ftelemetry.md",[59,60,61,62,63,40,64],"Read","Write","Edit","Glob","Grep","AskUserQuestion","[--update]","main","e335248c85d50f73919320bc138766eb413c5ee3","plugins\u002Fadd\u002Fskills\u002Finfographic",6,"https:\u002F\u002Fgithub.com\u002FMountainUnicorn\u002Fadd","https:\u002F\u002Fgetadd.dev","https:\u002F\u002Fgithub.com\u002FMountainUnicorn","2026-10-31 22:03:50",{"source":8,"skillName":5,"commands":75,"prompt":85,"zipAvailable":86},[76,79,82],{"tool":77,"command":78},"npx","npx skills add MountainUnicorn\u002Fadd --skill infographic",{"tool":80,"command":81},"bunx","bunx skills add MountainUnicorn\u002Fadd --skill infographic",{"tool":83,"command":84},"pnpm","pnpm dlx skills add MountainUnicorn\u002Fadd --skill infographic","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FMountainUnicorn\u002Fadd\u002Fblob\u002Fmain\u002Fplugins\u002Fadd\u002Fskills\u002Finfographic\u002FSKILL.md",true,[88],{"path":89,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":92,"sourceHtmlUrl":93},"references\u002Fform-design-research.md","REFERENCE","参考文档",4981,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FHDeibler\u002Funiversal-design-principles\u002Fplugins\u002Fperception-and-hierarchy-principles\u002Fskills\u002Fproximity-form-fields\u002Freferences\u002Fform-design-research.md",[95,103,108,113,123,149],{"skillNo":96,"name":97,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":100,"publishedAt":48},"01M6CHXN68ZCGNXE9Q0K2T2RKX","add-verify","https:\u002F\u002Fgithub.com\u002FMountainUnicorn\u002Fadd\u002Fblob\u002Fmain\u002Ftests\u002Fhooks\u002Ffixtures\u002Fdoctor\u002Fmanifest-modified\u002Fskills\u002Fadd-verify\u002FSKILL.md",[],[101,102],"add verify","verify",{"skillNo":104,"name":97,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":105,"categories":106,"keywords":107,"publishedAt":48},"01M6CHXJY4ZXKTNP0235A9KTNH","https:\u002F\u002Fgithub.com\u002FMountainUnicorn\u002Fadd\u002Fblob\u002Fmain\u002Ftests\u002Fhooks\u002Ffixtures\u002Fdoctor\u002Fmanifest-missing\u002Fskills\u002Fadd-verify\u002FSKILL.md",[],[101,102],{"skillNo":109,"name":97,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":112,"publishedAt":48},"01M6CHXG6NV1DBMWT2N6XE5555","https:\u002F\u002Fgithub.com\u002FMountainUnicorn\u002Fadd\u002Fblob\u002Fmain\u002Ftests\u002Fhooks\u002Ffixtures\u002Fdoctor\u002Fhealthy\u002Fskills\u002Fadd-verify\u002FSKILL.md",[],[101,102],{"skillNo":114,"name":115,"nameZh":6,"description":116,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":117,"categories":118,"keywords":119,"publishedAt":48},"01M6CHXDZFPEFBZ79GHP48S1BB","version","[ADD v0.11.0] Show installed version, project version, and upgrade status","https:\u002F\u002Fgithub.com\u002FMountainUnicorn\u002Fadd\u002Fblob\u002Fmain\u002Fplugins\u002Fadd\u002Fskills\u002Fversion\u002FSKILL.md",[],[115,37,120,45,40,38,121,36,33,122],"status","check","show",{"skillNo":124,"name":102,"nameZh":6,"description":125,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":126,"categories":127,"keywords":135,"publishedAt":48},"01M6CHXB5XG415PP88E0GACHP8","[ADD v0.11.0] Run quality gates — lint, types, tests, coverage, spec compliance","https:\u002F\u002Fgithub.com\u002FMountainUnicorn\u002Fadd\u002Fblob\u002Fmain\u002Fplugins\u002Fadd\u002Fskills\u002Fverify\u002FSKILL.md",[128,131,132],{"categoryNo":129,"categoryName":130,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000011","运维与部署",{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":133,"categoryName":134,"taxonomyType":28,"taxonomyTypeDesc":29},"01JBSEEDCAT000000000000037","律师与法务",[102,37,36,136,137,33,138,139,38,45,140,141,142,143,144,145,146,40,147,148],"coverage","fix","smoke","gate","spec","quality gates","run","lint","ci","compliance","secrets","learning","quality",{"skillNo":150,"name":151,"nameZh":6,"description":152,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":153,"categories":154,"keywords":162,"publishedAt":48},"01M6CHX8JF3M3J8BKTBW604D37","ux","[ADD v0.11.0] Iterate on UI\u002FUX design before implementation — wireframes, flow validation, and design sign-off","https:\u002F\u002Fgithub.com\u002FMountainUnicorn\u002Fadd\u002Fblob\u002Fmain\u002Fplugins\u002Fadd\u002Fskills\u002Fux\u002FSKILL.md",[155,158,159],{"categoryNo":156,"categoryName":157,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":160,"categoryName":161,"taxonomyType":28,"taxonomyTypeDesc":29},"01JBSEEDCAT000000000000032","设计师",[151,163,164,165,166,45,140,40,31,38,37,36,35,34,33,32,167,168,39],"ui","file","figma","validation","implementation","flow"]