{"id":"cb8ad0a2-1a42-40cb-88c3-5558f8215510","entityType":"agent","slug":"clawhub-jimliu-baoyu-article-illustrator","name":"Baoyu Article Illustrator","canonicalUrl":"https://www.xpersona.co/agent/clawhub-jimliu-baoyu-article-illustrator","canonicalPath":"/agent/clawhub-jimliu-baoyu-article-illustrator","generatedAt":"2026-10-09T17:34:26.878Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T02:28:27.054Z","emptyReason":null},"description":"Analyzes article structure, identifies positions requiring visual aids, generates illustrations with Type × Style × Palette three-dimension approach. Use whe...","descriptionLabel":"Source description","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 9.5K downloads reported by the source. Last updated 10/9/2026.","installCommand":"clawhub skill install s17dfbhg0khk4fvtnx0stqg0yx83j25z:baoyu-article-illustrator","sourceUrl":"https://clawhub.ai/jimliu/baoyu-article-illustrator","homepage":"https://clawhub.ai/jimliu/skills/baoyu-article-illustrator","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/jimliu/baoyu-article-illustrator","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/jimliu/skills/baoyu-article-illustrator","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":66,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Baoyu Article Illustrator technical dossier on Xpersona with agent coverage, OPENCLEW support, and live trust metadata."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-09T02:28:27.054Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T02:28:27.054Z","emptyReason":null},"stars":null,"forks":null,"downloads":9465,"packageName":null,"latestVersion":"1.117.4","tractionLabel":"9.5K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T02:28:27.054Z","emptyReason":null},"lastUpdatedAt":"2026-10-09T02:28:27.054Z","lastCrawledAt":"2026-10-09T02:28:27.054Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-10T02:28:27.054Z","lastVerifiedAt":null,"highlights":[{"version":"1.117.4","createdAt":"2026-06-13T04:57:44.792Z","changelog":"- Added native support for Cursor's `GenerateImage` tool and Codex CLI (`codex exec`) as image backends, with selection and usage rules. - Introduced a detailed discovery procedure for Codex image generation backends, referenced in the new `references/codex-imagegen.md`. - Clarified prompt construction and file-management when using Cursor's image tool. - Updated auto-selection logic and tool priority in image generation backend resolution. - Removed outdated `skill-card.md` documentation.","fileCount":39,"zipByteSize":66331},{"version":"1.117.3","createdAt":"2026-05-24T23:37:20.694Z","changelog":"v2.0.0: rename baoyu-imagine→baoyu-image-gen and baoyu-image-cards→baoyu-xhs-images; cross-skill image-backend examples updated","fileCount":38,"zipByteSize":63927},{"version":"1.117.2","createdAt":"2026-05-18T02:13:08.959Z","changelog":"## 1.117.2 - 2026-05-17 ### Documentation - `baoyu-cover-image`: ban programmatic text repair on generated bitmaps — disallow ImageMagick / Pillow / Canvas / SVG / HTML overlays to cover, rewrite, or replace title/subtitle text; regenerate from a corrected prompt or switch to a lower-text or no-title variant instead - `baoyu-article-illustrator`, `baoyu-comic`, `baoyu-image-cards`, `baoyu-xhs-images`, `baoyu-infographic`, `baoyu-slide-deck`: sync the same text-repair ban with skill-specific text categories (labels/captions, dialogue/sound effects, titles/body/tags, headings/data values, slide titles/bullets)","fileCount":37,"zipByteSize":62570},{"version":"1.117.0","createdAt":"2026-05-16T05:52:33.314Z","changelog":"## 1.117.0 - 2026-05-16 ### Features - `baoyu-article-illustrator`: add batch generation policy — backend native batch first, runtime parallel calls second, sequential fallback; configurable `generation_batch_size` and `--batch-size` option - `baoyu-comic`: add batch generation policy with dependency-aware ordering (character sheet before pages) and configurable `--batch-size` - `baoyu-image-cards`: add batch generation policy honoring image-1 anchor chain, with configurable `--batch-size` - `baoyu-slide-deck`: add batch generation policy for slide image rendering with configurable `--batch-size` - `baoyu-xhs-images`: sync batch generation policy from baoyu-image-cards","fileCount":37,"zipByteSize":62183},{"version":"1.115.4","createdAt":"2026-05-11T23:47:07.527Z","changelog":"### Documentation - Image generation backend selection: emphasize Codex `imagegen` as the priority runtime-native tool (invoke via the `Skill` tool with `skill: \"imagegen\"`) and forbid SVG/HTML/canvas substitution when no raster backend can be resolved — fall through to asking the user instead of silently emitting code-based art. Updated in `docs/image-generation-tools.md` and inlined into `baoyu-article-illustrator`, `baoyu-comic`, `baoyu-cover-image`, `baoyu-image-cards`, `baoyu-infographic`, `baoyu-slide-deck`, and `baoyu-xhs-images`.","fileCount":37,"zipByteSize":61087},{"version":"1.103.3","createdAt":"2026-05-10T07:48:17.274Z","changelog":"Sync latest baoyu-skills repository contents.","fileCount":37,"zipByteSize":60447},{"version":"1.103.2","createdAt":"2026-04-21T22:00:49.777Z","changelog":"**Summary:** Adds explicit user-input and image-generation backend selection logic; restructures configuration/usage documentation. - Introduced clear priority rules for selecting user input and image generation tools, supporting runtime-native or user-preferred options. - Explicit confirmation policy: confirmation step cannot be skipped unless user request specifies this. - Reference image handling instructions clarified, including new batch processing guidance. - Updated configuration and workflow documentation; streamlined EXTEND.md lookup logic. - Removed old build-batch scripts and related test files, as referenced in prompts and documentation.","fileCount":37,"zipByteSize":57557},{"version":"1.103.1","createdAt":"2026-04-13T16:13:53.664Z","changelog":"## 1.103.1 - 2026-04-13 ### Fixes - `baoyu-markdown-to-html`: decode HTML entities and strip tags from article summary - `baoyu-post-to-weibo`: decode HTML entities and strip tags from article summary","fileCount":39,"zipByteSize":57936}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17dfbhg0khk4fvtnx0stqg0yx83j25z:baoyu-article-illustrator","setupComplexity":"low","setupSteps":["Install using `clawhub skill install s17dfbhg0khk4fvtnx0stqg0yx83j25z:baoyu-article-illustrator` in an isolated environment before connecting it to live workloads.","No published capability contract is available yet, so validate auth and request/response behavior manually.","Review the upstream CLAWHUB listing at https://clawhub.ai/jimliu/baoyu-article-illustrator before using production credentials."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-jimliu-baoyu-article-illustrator/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-jimliu-baoyu-article-illustrator/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-jimliu-baoyu-article-illustrator/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-jimliu-baoyu-article-illustrator/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-jimliu-baoyu-article-illustrator/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-jimliu-baoyu-article-illustrator/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-09T17:34:26.872Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-jimliu-baoyu-article-illustrator/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-jimliu-baoyu-article-illustrator/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-jimliu-baoyu-article-illustrator/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-jimliu-baoyu-article-illustrator/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T02:28:27.054Z","emptyReason":null},"readme":"Skill: Baoyu Article Illustrator\n\nOwner: jimliu\n\nSummary: Analyzes article structure, identifies positions requiring visual aids, generates illustrations with Type × Style × Palette three-dimension approach. Use whe...\n\nTags: latest:1.117.4\n\nVersion history:\n\nv1.117.4 | 2026-06-13T04:57:44.792Z | auto\n\n- Added native support for Cursor's `GenerateImage` tool and Codex CLI (`codex exec`) as image backends, with selection and usage rules.\n- Introduced a detailed discovery procedure for Codex image generation backends, referenced in the new `references/codex-imagegen.md`.\n- Clarified prompt construction and file-management when using Cursor's image tool.\n- Updated auto-selection logic and tool priority in image generation backend resolution.\n- Removed outdated `skill-card.md` documentation.\n\nv1.117.3 | 2026-05-24T23:37:20.694Z | user\n\nv2.0.0: rename baoyu-imagine→baoyu-image-gen and baoyu-image-cards→baoyu-xhs-images; cross-skill image-backend examples updated\n\nv1.117.2 | 2026-05-18T02:13:08.959Z | user\n\n## 1.117.2 - 2026-05-17\n\n### Documentation\n- `baoyu-cover-image`: ban programmatic text repair on generated bitmaps — disallow ImageMagick / Pillow / Canvas / SVG / HTML overlays to cover, rewrite, or replace title/subtitle text; regenerate from a corrected prompt or switch to a lower-text or no-title variant instead\n- `baoyu-article-illustrator`, `baoyu-comic`, `baoyu-image-cards`, `baoyu-xhs-images`, `baoyu-infographic`, `baoyu-slide-deck`: sync the same text-repair ban with skill-specific text categories (labels/captions, dialogue/sound effects, titles/body/tags, headings/data values, slide titles/bullets)\n\nv1.117.0 | 2026-05-16T05:52:33.314Z | user\n\n## 1.117.0 - 2026-05-16\n\n### Features\n- `baoyu-article-illustrator`: add batch generation policy — backend native batch first, runtime parallel calls second, sequential fallback; configurable `generation_batch_size` and `--batch-size` option\n- `baoyu-comic`: add batch generation policy with dependency-aware ordering (character sheet before pages) and configurable `--batch-size`\n- `baoyu-image-cards`: add batch generation policy honoring image-1 anchor chain, with configurable `--batch-size`\n- `baoyu-slide-deck`: add batch generation policy for slide image rendering with configurable `--batch-size`\n- `baoyu-xhs-images`: sync batch generation policy from baoyu-image-cards\n\nv1.115.4 | 2026-05-11T23:47:07.527Z | user\n\n### Documentation\n- Image generation backend selection: emphasize Codex `imagegen` as the priority runtime-native tool (invoke via the `Skill` tool with `skill: \"imagegen\"`) and forbid SVG/HTML/canvas substitution when no raster backend can be resolved — fall through to asking the user instead of silently emitting code-based art. Updated in `docs/image-generation-tools.md` and inlined into `baoyu-article-illustrator`, `baoyu-comic`, `baoyu-cover-image`, `baoyu-image-cards`, `baoyu-infographic`, `baoyu-slide-deck`, and `baoyu-xhs-images`.\n\nv1.103.3 | 2026-05-10T07:48:17.274Z | user\n\nSync latest baoyu-skills repository contents.\n\nv1.103.2 | 2026-04-21T22:00:49.777Z | auto\n\n**Summary:** Adds explicit user-input and image-generation backend selection logic; restructures configuration/usage documentation.\n\n- Introduced clear priority rules for selecting user input and image generation tools, supporting runtime-native or user-preferred options.\n- Explicit confirmation policy: confirmation step cannot be skipped unless user request specifies this.\n- Reference image handling instructions clarified, including new batch processing guidance.\n- Updated configuration and workflow documentation; streamlined EXTEND.md lookup logic.\n- Removed old build-batch scripts and related test files, as referenced in prompts and documentation.\n\nv1.103.1 | 2026-04-13T16:13:53.664Z | user\n\n## 1.103.1 - 2026-04-13\n\n### Fixes\n- `baoyu-markdown-to-html`: decode HTML entities and strip tags from article summary\n- `baoyu-post-to-weibo`: decode HTML entities and strip tags from article summary\n\nv1.103.0 | 2026-04-13T01:19:00.238Z | user\n\n## 1.103.0 - 2026-04-12\n\n### Features\n- baoyu-diagram: add multi-diagram mode for article-wide diagram generation\n\n### Fixes\n- baoyu-article-illustrator: prevent color names and hex codes from appearing as visible text in generated images\n- baoyu-cover-image: prevent color names and hex codes from appearing as visible text in generated images\n- baoyu-image-cards: prevent color names from appearing as visible text in generated images\n- baoyu-post-to-wechat: decode HTML entities and strip tags from article summary\n\nv1.60.3 | 2026-04-09T16:25:53.849Z | auto\n\n- Adds \"Palette\" (color scheme) as a third control dimension alongside Type and Style.\n- Introduces new built-in palettes: macaron, warm, neon, with detailed references.\n- Updates all workflows, prompts, and file outputs to include palette selection and handling.\n- Documentation improvements: integrates palette options and guidance into main and reference docs.\n- Preset system now supports including palette (type + style + palette) in one flag.\n\nv1.60.2 | 2026-03-25T21:30:53.358Z | auto\n\nbaoyu-article-illustrator v1.60.2\n\n- Updated references and workflow documentation for clarity and consistency.\n- Improved prompt-construction reference and supporting information.\n- Updated build-batch script to reflect preferred image generation strategy.\n- No changes to core usage or output formats.\n\nv1.60.1 | 2026-03-22T04:21:22.132Z | auto\n\n- Adds new output directory modes (`default_output_dir`) and clarifies output paths for illustrations and auxiliary files.\n- Markdown embed paths for images now reflect actual output location and are computed relative to the article file.\n- When input is pasted content (no file path), images and files are always saved to `illustrations/{topic-slug}/` for consistency.\n- Documentation in SKILL.md and related references updated to match new directory and file organization.\n\nv1.60.0 | 2026-03-12T03:48:48.956Z | user\n\n## 1.60.0 - 2026-03-11\n\n### Features\n- `baoyu-url-to-markdown`: support reusing existing Chrome CDP instances and fix port detection order\n\n### Fixes\n- `baoyu-post-to-x`: add missing `fs` import in x-article\n\n### Refactor\n- Unify all CDP skills to use shared `baoyu-chrome-cdp` package with vendored copies\n- Simplify CLAUDE.md, move detailed documentation to `docs/` directory\n- Publish skills directly from synced vendor, removing separate artifact preparation step\n\nv1.0.0 | 2026-03-09T16:11:12.552Z | auto\n\n- Initial release of baoyu-article-illustrator.\n- Analyzes article structure to identify positions for illustrations.\n- Implements a two-dimension image generation method using Type × Style for consistent visuals.\n- Includes workflow steps: pre-check, content analysis, user setting confirmation, outline creation, image generation, and finalization.\n- Provides extensible type and style options, plus style presets.\n- Strictly manages prompt files and batch/batchfile generation strategy.\n\nArchive index:\n\nArchive v1.117.4: 39 files, 66331 bytes\n\nFiles: prompts/system.md (1080b), references/codex-imagegen.md (3717b), references/config/first-time-setup.md (4431b), references/config/preferences-schema.md (4450b), references/palettes/macaron.md (1339b), references/palettes/mono-ink.md (1780b), references/palettes/neon.md (1025b), references/palettes/warm.md (1036b), references/prompt-construction.md (16697b), references/style-presets.md (5698b), references/styles.md (10640b), references/styles/blueprint.md (1844b), references/styles/chalkboard.md (2249b), references/styles/editorial.md (1722b), references/styles/elegant.md (1733b), references/styles/fantasy-animation.md (1969b), references/styles/flat-doodle.md (1869b), references/styles/flat.md (1688b), references/styles/ink-notes.md (4289b), references/styles/intuition-machine.md (1850b), references/styles/minimal.md (1607b), references/styles/nature.md (1703b), references/styles/notion.md (1636b), references/styles/pixel-art.md (1907b), references/styles/playful.md (1707b), references/styles/retro.md (1682b), references/styles/scientific.md (1741b), references/styles/screen-print.md (2680b), references/styles/sketch-notes.md (4704b), references/styles/sketch.md (1691b), references/styles/vector-illustration.md (1940b), references/styles/vintage.md (1819b), references/styles/warm.md (1760b), references/styles/watercolor.md (1815b), references/usage.md (2425b), references/workflow.md (17940b), skill-card.md (2462b), SKILL.md (17179b), _meta.json (146b)\n\nFile v1.117.4:SKILL.md\n\n---\nname: baoyu-article-illustrator\ndescription: Analyzes article structure, identifies positions requiring visual aids, generates illustrations with Type × Style × Palette three-dimension approach. Use when user asks to \"illustrate article\", \"add images\", \"generate images for article\", or \"为文章配图\".\nversion: 1.117.4\nmetadata:\n  openclaw:\n    homepage: https://github.com/JimLiu/baoyu-skills#baoyu-article-illustrator\n---\n\n# Article Illustrator\n\nAnalyze articles, identify illustration positions, generate images with Type × Style × Palette consistency.\n\n## User Input Tools\n\nWhen this skill prompts the user, follow this tool-selection rule (priority order):\n\n1. **Prefer built-in user-input tools** exposed by the current agent runtime — e.g., `AskUserQuestion`, `request_user_input`, `clarify`, `ask_user`, or any equivalent.\n2. **Fallback**: if no such tool exists, emit a numbered plain-text message and ask the user to reply with the chosen number/answer for each question.\n3. **Batching**: if the tool supports multiple questions per call, combine all applicable questions into a single call; if only single-question, ask them one at a time in priority order.\n\nConcrete `AskUserQuestion` references below are examples — substitute the local equivalent in other runtimes.\n\n## Image Generation Tools\n\nWhen this skill needs to render an image, resolve the backend in this order:\n\n1. **Current-request override** — if the user names a specific backend in the current message, use it.\n2. **Saved preference** — if `EXTEND.md` sets `preferred_image_backend` to a backend available right now, use it.\n3. **Auto-select** (when the preference is `auto`, unset, or the pinned backend isn't available):\n   - **Codex (`imagegen`)** — first, inspect your available-skills / tool inventory. If a skill named `imagegen` is listed, you are running inside Codex and MUST use it: invoke via the `Skill` tool with `skill: \"imagegen\"`, passing the saved prompt file's content (plus output path and aspect ratio per Codex `imagegen`'s own args). Codex `imagegen` is the official raster backend in that runtime and outranks any non-native skill (e.g., `baoyu-image-gen`) unless the user has explicitly pinned a different `preferred_image_backend`.\n   - **Codex via `codex exec` (`codex-imagegen`)** — if the current runtime exposes no native `imagegen` skill but the `codex` CLI is on `PATH` with an active `codex login`, route through `baoyu-image-gen --provider codex-cli` (preferred), or — if baoyu-image-gen is unavailable — invoke the bundled wrapper directly. Details, parameters, and the runtime-discovery procedure live in [references/codex-imagegen.md](references/codex-imagegen.md) — load that file only when this branch is selected.\n   - **Cursor (`GenerateImage`)** — if the runtime exposes a native `GenerateImage` tool, you are running inside Cursor and it outranks any non-native skill the same way Codex `imagegen` does. Two hard caveats: (a) it has no aspect-ratio parameter — state the target aspect ratio / dimensions explicitly in the prompt text passed as `description`; (b) it does not accept an output directory — it saves to a tool-managed location, so after generation copy/move the file to the skill's expected output path (e.g., `outputs/.../NN-xxx.png`). Reference images go in `reference_image_paths`.\n   - **Other runtime-native tools** — if the runtime exposes a different native image tool (e.g., Hermes `image_generate`), use it the same way.\n   - Otherwise, if exactly one non-native backend is installed (e.g., `baoyu-image-gen`), use it.\n   - Otherwise (multiple non-native backends with no runtime-native tool), ask the user once — batch with any other initial questions.\n4. **If none are available**, tell the user and ask how to proceed.\n\n**⛔ Never substitute SVG, HTML, canvas, or other code-based rendering for raster image generation.** Codex `imagegen`'s own description says it should be used \"when the output should be a bitmap asset rather than repo-native code or vector.\" If you cannot resolve a raster backend via step 3, fall through to step 4 and ask the user — do **not** silently emit SVG, write inline `<svg>` markup, or produce HTML/CSS art as a substitute. This applies even if the article/section seems \"diagram-like\": the consumer skill calling this rule has already decided that a raster image is what it needs.\n\n**⛔ Never repair rendered text by painting over a generated bitmap.** Do not use ImageMagick, Pillow, Canvas, SVG, HTML/CSS, OCR scripts, or any other programmatic overlay to cover, rewrite, erase, stroke, or replace labels, captions, or any other text inside an already generated illustration. If text is wrong or unclear, regenerate from a corrected prompt, redraw with less or no on-image text, or ask the user which imperfect candidate to keep.\n\nSetting `preferred_image_backend: ask` forces the step-3 prompt every run regardless of available backends. Users change the pinned backend via the `## Changing Preferences` section below.\n\n**Prompt file requirement (hard)**: write each image's full, final prompt to a standalone file under `prompts/` (naming: `NN-{type}-[slug].md`) BEFORE invoking any backend. The backend receives the prompt file (or its content); the file is the reproducibility record and lets you switch backends without regenerating prompts.\n\nConcrete tool names (`imagegen`, `GenerateImage`, `image_generate`, `baoyu-image-gen`) above are examples — substitute the local equivalents under the same rule.\n\n## Batch Generation Policy\n\nAfter every prompt file for the run has been saved and verified, generate images in batches by default.\n\nPriority order:\n\n1. Use the chosen backend's native batch / multi-task interface if it exists. Each task must keep its own prompt file, output path, aspect ratio, and direct reference images.\n2. If no native batch interface exists but the runtime can issue parallel tool calls, dispatch up to `generation_batch_size` images at a time. Default: `4`. An explicit user request in the current message, such as `--batch-size 4` or \"并行4张一起生成\", overrides EXTEND.md.\n3. If neither native batch nor parallel tool calls are available, generate sequentially.\n\nRules:\n\n- Never start the first batch until all prompt files for that batch exist on disk.\n- Retry failed items once without regenerating successful items.\n- Do not use subagents merely to parallelize image rendering. Use subagents only for separate prompt iteration or creative exploration.\n\n## Confirmation Policy\n\nDefault behavior: **confirm before generation**.\n\n- Treat explicit skill invocation, a file path, matched signals/presets, and `EXTEND.md` defaults as **recommendation inputs only**. None of them authorizes skipping confirmation.\n- Do **not** start Step 4 or later until the user completes Step 3.\n- Skip confirmation only when the current request explicitly says to do so, for example: \"直接生成\", \"不用确认\", \"跳过确认\", \"按默认出图\", or equivalent wording.\n- If confirmation is skipped explicitly, state the assumed type / density / style / palette / language / backend in the next user-facing update before generating.\n\n## Reference Images\n\nUsers may supply reference images via `--ref <files...>` or by providing file paths / pasting images in conversation. Refs guide style, palette, composition, or subject for specific illustrations.\n\nFull detection, storage, and processing rules are in [references/workflow.md](references/workflow.md) (Step 1.0 saves to `references/NN-ref-{slug}.{ext}`; Step 5.3 processes per-illustration usage `direct | style | palette`). When the chosen backend supports batch input, `direct`-usage entries in each prompt file's `references:` frontmatter should be propagated into its batch payload so backends can pass them through (e.g. `baoyu-image-gen` accepts `ref` per task).\n\n## Three Dimensions\n\n| Dimension | Controls | Examples |\n|-----------|----------|----------|\n| **Type** | Information structure | infographic, scene, flowchart, comparison, framework, timeline |\n| **Style** | Rendering approach | notion, warm, minimal, blueprint, watercolor, elegant |\n| **Palette** | Color scheme (optional) | macaron, warm, neon — overrides style's default colors |\n\nCombine freely: `--type infographic --style vector-illustration --palette macaron`\n\nOr use presets: `--preset edu-visual` → type + style + palette in one flag. See [Style Presets](references/style-presets.md).\n\n## Types\n\n| Type | Best For |\n|------|----------|\n| `infographic` | Data, metrics, technical |\n| `scene` | Narratives, emotional |\n| `flowchart` | Processes, workflows |\n| `comparison` | Side-by-side, options |\n| `framework` | Models, architecture |\n| `timeline` | History, evolution |\n\n## Styles\n\nSee [references/styles.md](references/styles.md) for Core Styles, full gallery, and Type × Style compatibility.\n\n## Workflow\n\n```\n- [ ] Step 1: Pre-check (EXTEND.md, references, config)\n- [ ] Step 2: Analyze content\n- [ ] Step 3: Confirm settings (AskUserQuestion)\n- [ ] Step 4: Generate outline\n- [ ] Step 5: Generate images\n- [ ] Step 6: Finalize\n```\n\n### Step 1: Pre-check\n\n**1.5 Load Preferences (EXTEND.md) ⛔ BLOCKING**\n\nCheck EXTEND.md in priority order — the first one found wins:\n\n| Priority | Path | Scope |\n|----------|------|-------|\n| 1 | `.baoyu-skills/baoyu-article-illustrator/EXTEND.md` | Project |\n| 2 | `${XDG_CONFIG_HOME:-$HOME/.config}/baoyu-skills/baoyu-article-illustrator/EXTEND.md` | XDG |\n| 3 | `$HOME/.baoyu-skills/baoyu-article-illustrator/EXTEND.md` | User home |\n\n| Result | Action |\n|--------|--------|\n| Found | Read, parse, display summary |\n| Not found | ⛔ Run [first-time-setup](references/config/first-time-setup.md) |\n\nFull procedures: [references/workflow.md](references/workflow.md#step-1-pre-check)\n\n### Step 2: Analyze\n\n| Analysis | Output |\n|----------|--------|\n| Content type | Technical / Tutorial / Methodology / Narrative |\n| Purpose | information / visualization / imagination |\n| Core arguments | 2-5 main points |\n| Positions | Where illustrations add value |\n\n**CRITICAL**: Metaphors → visualize underlying concept, NOT literal image.\n\nFull procedures: [references/workflow.md](references/workflow.md#step-2-setup--analyze)\n\n### Step 3: Confirm Settings ⚠️\n\n**Hard gate**: this step is mandatory per the [Confirmation Policy](#confirmation-policy) — Steps 4+ cannot start until the user confirms here (or explicitly opts out with \"直接生成\" / equivalent wording in the current request).\n\n**ONE AskUserQuestion, max 4 Qs. Q1-Q2 REQUIRED. Q3 required unless preset chosen.**\n\n| Q | Options |\n|---|---------|\n| **Q1: Preset or Type** | [Recommended preset], [alt preset], or manual: infographic, scene, flowchart, comparison, framework, timeline, mixed |\n| **Q2: Density** | minimal (1-2), balanced (3-5), per-section (Recommended), rich (6+) |\n| **Q3: Style** | [Recommended], minimal-flat, sci-fi, hand-drawn, editorial, scene, poster, Other — **skip if preset chosen** |\n| Q4: Palette | Default (style colors), macaron, warm, neon — **skip if preset includes palette or preferred_palette set** |\n| Q5: Language | When article language ≠ EXTEND.md setting |\n\nFull procedures: [references/workflow.md](references/workflow.md#step-3-confirm-settings-)\n\n### Step 4: Generate Outline\n\nSave `outline.md` with frontmatter (type, density, style, palette, image_count) and entries:\n\n```yaml\n## Illustration 1\n**Position**: [section/paragraph]\n**Purpose**: [why]\n**Visual Content**: [what]\n**Filename**: 01-infographic-concept-name.png\n```\n\nFull template: [references/workflow.md](references/workflow.md#step-4-generate-outline)\n\n### Step 5: Generate Images\n\n⛔ **BLOCKING: Prompt files MUST be saved before ANY image generation.** This is a hard requirement regardless of which backend is chosen — the prompt file is the reproducibility record.\n\n1. For each illustration, create a prompt file per [references/prompt-construction.md](references/prompt-construction.md)\n2. Save to `prompts/NN-{type}-{slug}.md` with YAML frontmatter\n3. Prompts **MUST** use type-specific templates with structured sections (ZONES / LABELS / COLORS / STYLE / ASPECT)\n4. LABELS **MUST** include article-specific data: actual numbers, terms, metrics, quotes\n5. **DO NOT** pass ad-hoc inline prompts to `--prompt` without saving prompt files first\n6. Select the backend via the `## Image Generation Tools` rule at the top: use whatever is available; if multiple, ask the user once. Do this once per session before any generation.\n   - **`codex-imagegen` invocation**: when the rule resolves to `codex-imagegen`, see [references/codex-imagegen.md](references/codex-imagegen.md) for the invocation contract (preferred `baoyu-image-gen --provider codex-cli` path, runtime wrapper discovery, parameter notes, stdout schema, batch semantics).\n7. **Execution strategy**: Generate in batches per the `## Batch Generation Policy`: backend native batch first, runtime parallel tool calls second, sequential only as fallback. Default batch size is 4 unless EXTEND.md or the current request overrides it.\n8. Process references (`direct`/`style`/`palette`) per prompt frontmatter\n9. Apply watermark if EXTEND.md enabled\n10. Generate from saved prompt files; retry once on failure\n\nFull procedures: [references/workflow.md](references/workflow.md#step-5-generate-images)\n\n### Step 6: Finalize\n\nInsert `![description]({relative-path}/NN-{type}-{slug}.png)` after paragraphs. Path computed relative to article file based on output directory setting.\n\n```\nArticle Illustration Complete!\nArticle: [path] | Type: [type] | Density: [level] | Style: [style] | Palette: [palette or default]\nImages: X/N generated\n```\n\n## Output Directory\n\nOutput directory is determined by `default_output_dir` in EXTEND.md (set during first-time setup):\n\n| `default_output_dir` | Output Path | Markdown Insert Path |\n|----------------------|-------------|----------------------|\n| `imgs-subdir` (default) | `{article-dir}/imgs/` | `imgs/NN-{type}-{slug}.png` |\n| `same-dir` | `{article-dir}/` | `NN-{type}-{slug}.png` |\n| `illustrations-subdir` | `{article-dir}/illustrations/` | `illustrations/NN-{type}-{slug}.png` |\n| `independent` | `illustrations/{topic-slug}/` | `illustrations/{topic-slug}/NN-{type}-{slug}.png` (relative to cwd) |\n\nAll auxiliary files (outline, prompts) are saved inside the output directory:\n\n```\n{output-dir}/\n├── outline.md\n├── prompts/\n│   └── NN-{type}-{slug}.md\n└── NN-{type}-{slug}.png\n```\n\nWhen input is **pasted content** (no file path), always uses `illustrations/{topic-slug}/` with `source-{slug}.{ext}` saved alongside.\n\n**Slug**: 2-4 words, kebab-case. **Conflict**: append `-YYYYMMDD-HHMMSS`.\n\n## Modification\n\n| Action | Steps |\n|--------|-------|\n| Edit | Update prompt → Regenerate → Update reference |\n| Add | Position → Prompt → Generate → Update outline → Insert |\n| Delete | Delete files → Remove reference → Update outline |\n\nText correction policy:\n\n- If any rendered text (labels, captions, etc.) is misspelled, garbled, hard to read, or visually weak, do not patch the bitmap with code.\n- For text-correction regenerations, write a new prompt file and a new output path so the flawed candidate is preserved for comparison.\n- Post-processing is limited to crop, resize, compression, or format conversion that does not alter text or the main composition.\n\n## References\n\n| File | Content |\n|------|---------|\n| [references/workflow.md](references/workflow.md) | Detailed procedures |\n| [references/usage.md](references/usage.md) | Command syntax |\n| [references/styles.md](references/styles.md) | Style gallery + Palette gallery |\n| [references/style-presets.md](references/style-presets.md) | Preset shortcuts (type + style + palette) |\n| [references/prompt-construction.md](references/prompt-construction.md) | Prompt templates |\n| [references/config/first-time-setup.md](references/config/first-time-setup.md) | First-time setup |\n\n## Changing Preferences\n\nEXTEND.md lives at the first matching path listed in Step 1.5. Three ways to change it:\n\n- **Edit directly** — open EXTEND.md and change fields. Full schema: `references/config/preferences-schema.md`.\n- **Reconfigure interactively** — delete EXTEND.md (or ask \"reconfigure baoyu-article-illustrator preferences\" / \"重新配置\"). The next run re-triggers first-time setup.\n- **Common one-line edits**:\n  - `preferred_image_backend: auto` — default; runtime-native tool wins, falls back to the only installed backend, asks only if multiple non-native are present.\n  - `preferred_image_backend: codex-imagegen` — pin to Codex's built-in.\n  - `preferred_image_backend: baoyu-image-gen` — pin to the baoyu-image-gen skill.\n  - `preferred_image_backend: ask` — confirm backend every run.\n  - `generation_batch_size: 4` — default number of images to render concurrently when the runtime supports parallel generation calls.\n  - `preferred_type: infographic`, `preferred_style: notion`, `preferred_palette: macaron`, `language: zh`.\n  - `default_output_dir: imgs-subdir` — where to write generated images relative to the article.\n\nFile v1.117.4:_meta.json\n\n{\n  \"ownerId\": \"kn7csrrndw79hpke5d0gsnx93d82k67r\",\n  \"slug\": \"baoyu-article-illustrator\",\n  \"version\": \"1.117.4\",\n  \"publishedAt\": 1781326664792\n}\n\nFile v1.117.4:references/codex-imagegen.md\n\n# `codex-imagegen` Wrapper Invocation\n\nLoad this reference only when the [Image Generation Tools](../SKILL.md#image-generation-tools) rule has resolved to `codex-imagegen` — i.e., the current runtime exposes no native `imagegen` skill but `codex` CLI is on `PATH` with an active `codex login`.\n\n## Preferred path: route through `baoyu-image-gen`\n\nIf the `baoyu-image-gen` skill is available in this runtime, **always** invoke through it rather than calling the wrapper directly. It handles retry/cache/batch/EXTEND.md preferences uniformly with every other provider.\n\n```bash\n${BUN_X} <baoyu-image-gen-base>/scripts/main.ts \\\n  --provider codex-cli \\\n  --image <ABSOLUTE_output> \\\n  --promptfiles <ABSOLUTE_prompts/NN-{type}-{slug}.md> \\\n  --ar <ratio> \\\n  [--ref <ABSOLUTE_file>]...\n```\n\nResolve `<baoyu-image-gen-base>` the same way you resolve any sibling skill — through your runtime's skill registry (`Skill` tool, plugin marketplace, or `$HOME/.baoyu-skills/baoyu-image-gen/`).\n\n## Fallback: spawn the wrapper directly\n\nOnly when `baoyu-image-gen` is NOT installed in the current runtime. Discover the wrapper's location at runtime — do NOT hard-code `../../packages/...` from this skill:\n\n1. **Honor explicit override**: if `$BAOYU_CODEX_IMAGEGEN_BIN` is set and points to a real file, use that path. It may be `.ts` (spawn `bun <path>`) or `.sh`/binary (spawn directly).\n2. **Search the plugin root**: walk up from this skill's directory looking for `packages/baoyu-codex-imagegen/src/main.ts`. If found, that is the wrapper. Spawn it with `bun`.\n3. **Last resort**: tell the user that `codex-imagegen` is not available in this runtime and ask whether to install the `baoyu-skills` plugin (or set `BAOYU_CODEX_IMAGEGEN_BIN`) or pick another backend.\n\nOnce located, the invocation shape is:\n\n```bash\nbun <WRAPPER>/main.ts \\\n  --image <ABSOLUTE_output> \\\n  --prompt-file <ABSOLUTE_prompts/NN-{type}-{slug}.md> \\\n  --aspect <ratio> \\\n  [--ref <ABSOLUTE_file>]... \\\n  [--timeout <ms>] \\\n  [--cache-dir ~/.cache/baoyu-codex-imagegen] \\\n  [--log-file <ABSOLUTE_jsonl_log_path>]\n```\n\nIf `bun` is missing, `npx -y bun <WRAPPER>/main.ts ...` works as a fallback.\n\n## Parameter notes\n\n- **All filesystem inputs** are auto-resolved against `process.cwd()` when relative, but agents should pass absolute paths to be robust against cwd drift.\n- **`--timeout`** defaults to `300000` (5 min) per `codex exec` attempt. Raise (e.g. `--timeout 600000` for 10 min) on slow networks or large prompts.\n- **`--cache-dir`** is off by default. Enable for repeatable runs to skip redundant generations of the same prompt+aspect+refs.\n- **Authentication**: the wrapper uses the user's Codex subscription — no `OPENAI_API_KEY` is read or sent.\n\n## Stdout contract\n\nSingle JSON line:\n\n- Success: `{\"status\":\"ok\",\"path\":\"...\",\"bytes\":N,\"elapsed_seconds\":N,\"thread_id\":\"...\",\"attempts\":N,\"cached\":bool,...}`\n- Failure: `{\"status\":\"error\",\"path\":\"...\",\"bytes\":0,\"error\":\"...\",\"error_kind\":\"...\"}`\n\n`error_kind` values: `codex_not_installed`, `invalid_args`, `prompt_file_missing`, `spawn_failed`, `timeout`, `no_image_gen_tool_use`, `output_missing`, `invalid_png`, `agent_refused`, `lock_busy`.\n\nOn retryable errors (timeout, spawn_failed, no_image_gen_tool_use, output_missing, invalid_png, agent_refused), ask the user whether to retry or fall back to another backend.\n\n## Batch semantics\n\n- Codex `image_gen` returns **one image per call** (`n=1` only). Multi-image jobs must dispatch one wrapper call per image.\n- The wrapper does NOT accept a `--sessionId` flag. Chain/scene consistency must come from `--ref` reference images.\n- `--size` and `--quality` are silently ignored — Codex picks pixel dimensions from `--aspect`.\n\nFile v1.117.4:references/config/first-time-setup.md\n\n---\nname: first-time-setup\ndescription: First-time setup flow for baoyu-article-illustrator preferences\n---\n\n# First-Time Setup\n\n## Overview\n\nWhen no EXTEND.md is found, guide user through preference setup.\n\n**⛔ BLOCKING OPERATION**: This setup MUST complete before ANY other workflow steps. Do NOT:\n- Ask about reference images\n- Ask about content/article\n- Ask about type or style preferences\n- Proceed to content analysis\n\nONLY ask the questions in this setup flow, save EXTEND.md, then continue.\n\n## Setup Flow\n\n```\nNo EXTEND.md found\n        │\n        ▼\n┌─────────────────────┐\n│ AskUserQuestion     │\n│ (all questions)     │\n└─────────────────────┘\n        │\n        ▼\n┌─────────────────────┐\n│ Create EXTEND.md    │\n└─────────────────────┘\n        │\n        ▼\n    Continue to Step 1\n```\n\n## Questions\n\n**Language**: Use user's input language or preferred language for all questions. Do not always use English.\n\nUse single AskUserQuestion with multiple questions (AskUserQuestion auto-adds \"Other\" option):\n\n### Question 1: Watermark\n\n```\nheader: \"Watermark\"\nquestion: \"Watermark text for generated illustrations? Type your watermark content (e.g., name, @handle)\"\noptions:\n  - label: \"No watermark (Recommended)\"\n    description: \"No watermark, can enable later in EXTEND.md\"\n```\n\nPosition defaults to bottom-right.\n\n### Question 2: Preferred Style\n\n```\nheader: \"Style\"\nquestion: \"Default illustration style preference? Or type another style name or your custom style\"\noptions:\n  - label: \"sketch-notes (Recommended)\"\n    description: \"Warm cream paper, black hand-drawn lines, soft pastel blocks — educational infographic feel. Great default for most articles.\"\n  - label: \"None\"\n    description: \"Auto-select based on content analysis (falls back to sketch-notes when no strong signal)\"\n  - label: \"notion\"\n    description: \"Minimalist hand-drawn line art\"\n  - label: \"warm\"\n    description: \"Friendly, approachable, personal\"\n```\n\n### Question 3: Output Directory\n\n```\nheader: \"Output Directory\"\nquestion: \"Where to save generated illustrations when illustrating a file?\"\noptions:\n  - label: \"imgs-subdir (Recommended)\"\n    description: \"{article-dir}/imgs/ — images in a subdirectory next to the article\"\n  - label: \"same-dir\"\n    description: \"{article-dir}/ — images alongside the article file\"\n  - label: \"illustrations-subdir\"\n    description: \"{article-dir}/illustrations/ — separate illustrations subdirectory\"\n  - label: \"independent\"\n    description: \"illustrations/{topic-slug}/ — standalone directory in cwd\"\n```\n\n### Question 4: Save Location\n\n```\nheader: \"Save\"\nquestion: \"Where to save preferences?\"\noptions:\n  - label: \"Project\"\n    description: \".baoyu-skills/ (this project only)\"\n  - label: \"User\"\n    description: \"~/.baoyu-skills/ (all projects)\"\n```\n\n## Save Locations\n\n| Choice | Path | Scope |\n|--------|------|-------|\n| Project | `.baoyu-skills/baoyu-article-illustrator/EXTEND.md` | Current project |\n| User | `~/.baoyu-skills/baoyu-article-illustrator/EXTEND.md` | All projects |\n\n## After Setup\n\n1. Create directory if needed\n2. Write EXTEND.md with frontmatter\n3. Confirm: \"Preferences saved to [path]\"\n4. Continue to Step 1\n\n## EXTEND.md Template\n\n```yaml\n---\nversion: 1\nwatermark:\n  enabled: [true/false]\n  content: \"[user input or empty]\"\n  position: bottom-right\n  opacity: 0.7\npreferred_style:\n  name: [selected style or null]\n  description: \"\"\ndefault_output_dir: imgs-subdir  # same-dir | imgs-subdir | illustrations-subdir | independent\nlanguage: null\npreferred_image_backend: auto\ngeneration_batch_size: 4\ncustom_styles: []\n---\n```\n\n`preferred_image_backend: auto` is the baked-in default — first-time setup does not ask about it. The `## Image Generation Tools` rule in SKILL.md then picks the runtime-native tool (Codex `imagegen`, Hermes `image_generate`, etc.) when available, and falls back to installed backends.\n\n`generation_batch_size: 4` is the baked-in default for batch rendering. The current user request may override it for one run.\n\n## Modifying Preferences Later\n\nSee the `## Changing Preferences` section in `SKILL.md` for the canonical list of common edits (pin backend, change defaults, retrigger setup). Full schema: `preferences-schema.md`.\n\nFile v1.117.4:references/config/preferences-schema.md\n\n---\nname: preferences-schema\ndescription: EXTEND.md YAML schema for baoyu-article-illustrator user preferences\n---\n\n# Preferences Schema\n\n## Full Schema\n\n```yaml\n---\nversion: 1\n\nwatermark:\n  enabled: false\n  content: \"\"\n  position: bottom-right  # bottom-right|bottom-left|bottom-center|top-right\n\npreferred_style:\n  name: null              # Built-in or custom style name\n  description: \"\"         # Override/notes\n\npreferred_palette: null   # Built-in palette name (macaron|warm|neon) or null\n\nlanguage: null            # zh|en|ja|ko|auto\n\ndefault_output_dir: null  # same-dir|illustrations-subdir|independent\n\npreferred_image_backend: auto  # auto|ask|<backend-id>\n\ngeneration_batch_size: 4       # 1-8, used when backend/runtime supports batch or parallel generation\n\ncustom_styles:\n  - name: my-style\n    description: \"Style description\"\n    color_palette:\n      primary: [\"#1E3A5F\", \"#4A90D9\"]\n      background: \"#F5F7FA\"\n      accents: [\"#00B4D8\", \"#48CAE4\"]\n    visual_elements: \"Clean lines, geometric shapes\"\n    typography: \"Modern sans-serif\"\n    best_for: \"Business, education\"\n---\n```\n\n## Field Reference\n\n| Field | Type | Default | Description |\n|-------|------|---------|-------------|\n| `version` | int | 1 | Schema version |\n| `watermark.enabled` | bool | false | Enable watermark |\n| `watermark.content` | string | \"\" | Watermark text (@username or custom) |\n| `watermark.position` | enum | bottom-right | Position on image |\n| `preferred_style.name` | string | null | Style name or null |\n| `preferred_style.description` | string | \"\" | Custom notes/override |\n| `preferred_palette` | string | null | Palette override (macaron, warm, neon, or null) |\n| `language` | string | null | Output language (null = auto-detect) |\n| `default_output_dir` | enum | null | Output directory preference (null = ask each time) |\n| `preferred_image_backend` | string | `auto` | Image backend selection. `auto` = prefer runtime-native tool, fall back to the only installed backend, ask if multiple non-native are present. `ask` = always confirm on every run. `<backend-id>` (e.g., `codex-imagegen`, `baoyu-image-gen`, `image_generate`) = pin this backend when available; fall back to `auto` when it isn't. Absent = `auto`. Resolution logic is documented in `SKILL.md`'s `## Image Generation Tools` section. |\n| `generation_batch_size` | int | 4 | Number of images to dispatch per batch when the backend has native batch support or the runtime can issue parallel generation calls. Clamp invalid values to 1-8. Current user request overrides this value. |\n| `custom_styles` | array | [] | User-defined styles |\n\n## Position Options\n\n| Value | Description |\n|-------|-------------|\n| `bottom-right` | Lower right corner (default, most common) |\n| `bottom-left` | Lower left corner |\n| `bottom-center` | Bottom center |\n| `top-right` | Upper right corner |\n\n## Output Directory Options\n\n| Value | Description |\n|-------|-------------|\n| `same-dir` | Same directory as article |\n| `illustrations-subdir` | `{article-dir}/illustrations/` subdirectory |\n| `independent` | `illustrations/{topic-slug}/` in working directory |\n\n## Custom Style Fields\n\n| Field | Required | Description |\n|-------|----------|-------------|\n| `name` | Yes | Unique style identifier (kebab-case) |\n| `description` | Yes | What the style conveys |\n| `color_palette.primary` | No | Main colors (array) |\n| `color_palette.background` | No | Background color |\n| `color_palette.accents` | No | Accent colors (array) |\n| `visual_elements` | No | Decorative elements |\n| `typography` | No | Font/lettering style |\n| `best_for` | No | Recommended content types |\n\n## Example: Minimal Preferences\n\n```yaml\n---\nversion: 1\nwatermark:\n  enabled: true\n  content: \"@myusername\"\npreferred_style:\n  name: notion\n---\n```\n\n## Example: Full Preferences\n\n```yaml\n---\nversion: 1\nwatermark:\n  enabled: true\n  content: \"@myaccount\"\n  position: bottom-right\n\npreferred_style:\n  name: notion\n  description: \"Clean illustrations for tech articles\"\n\nlanguage: zh\n\npreferred_image_backend: codex-imagegen\n\ngeneration_batch_size: 4\n\ncustom_styles:\n  - name: corporate\n    description: \"Professional B2B style\"\n    color_palette:\n      primary: [\"#1E3A5F\", \"#4A90D9\"]\n      background: \"#F5F7FA\"\n      accents: [\"#00B4D8\", \"#48CAE4\"]\n    visual_elements: \"Clean lines, subtle gradients, geometric shapes\"\n    typography: \"Modern sans-serif, professional\"\n    best_for: \"Business, SaaS, enterprise\"\n---\n```\n\nFile v1.117.4:references/palettes/macaron.md\n\n# macaron\n\nSoft macaron pastel color blocks on warm cream\n\n## Background\n\n- Color: Warm Cream (#F5F0E8)\n- Texture: Subtle warm paper grain\n\n## Colors\n\n| Role | Color | Hex | Usage |\n|------|-------|-----|-------|\n| Background | Warm Cream | #F5F0E8 | Primary background |\n| Primary Text | Deep Charcoal | #2D2D2D | Headlines, main text, outlines |\n| Macaron Blue | Sky Blue | #A8D8EA | Info block fill, cool-toned zones |\n| Macaron Mint | Mint Green | #B5E5CF | Info block fill, growth/positive zones |\n| Macaron Lavender | Lavender | #D5C6E0 | Info block fill, abstract/concept zones |\n| Macaron Peach | Peach | #FFD5C2 | Info block fill, warm-toned zones |\n| Accent | Coral Red | #E8655A | Key data, warnings, emphasis |\n| Muted Text | Warm Gray | #6B6B6B | Secondary annotations, small labels |\n\n## Accent\n\nCoral Red (#E8655A) for key data, warnings, and emphasis highlights. Use sparingly — one or two elements per illustration.\n\n## Semantic Constraint\n\nSoft pastel macaron color palette. Use block colors as rounded card backgrounds for distinct information sections. Accent coral red sparingly for emphasis on key terms only. Do NOT render color names, hex codes, or role labels as visible text in the image.\n\n## Best For\n\nEducational content, knowledge sharing, concept explainers, tutorials, tech summaries, onboarding materials\n\nFile v1.117.4:references/palettes/mono-ink.md\n\n# mono-ink\n\nBlack ink on pure white with sparse semantic accent colors\n\n## Background\n\n- Color: Pure White (#FFFFFF)\n- Texture: Clean, no grain, no tint\n\n## Colors\n\n| Role | Color | Hex | Usage |\n|------|-------|-----|-------|\n| Background | Pure White | #FFFFFF | Canvas |\n| Primary | Near Black | #1A1A1A | All lines, text, figures, arrows |\n| Accent (risk/emphasis) | Coral Red | #E8655A | Risk, problem, gap, key emphasis |\n| Accent (positive) | Muted Teal | #5FA8A8 | Positive, solution, \"after\" state |\n| Accent (neutral tag) | Dusty Lavender | #9B8AB5 | Neutral tags, category labels |\n| Soft Fill | Pale Gray | #F0F0F0 | Subtle zone backgrounds (optional) |\n\n## Accent\n\nUse black ink for all structural elements — lines, text, figures. Accent colors appear only for semantic highlighting: coral red for risks/gaps/problems, muted teal for positive/solution/after-states, dusty lavender for neutral category tags. Total colored pixels must remain under 10% of canvas. Pale gray may back a subtle zone but must never dominate.\n\n## Semantic Constraint\n\nBlack ink on white canvas. Accent colors for semantic highlighting only — total colored pixels under 10% of canvas. Do NOT render color names, hex codes, or role labels as visible text in the image.\n\n## Compatible With\n\n- `ink-notes` (primary, default pairing)\n- `minimal` (strict monochrome variation, drops the style's built-in accent)\n- `sketch` (pencil + ink hybrid look)\n\n## Not Recommended With\n\n- `sketch-notes` — its \"no pure white backgrounds\" rule conflicts\n- `warm`, `elegant`, `watercolor`, `fantasy-animation` — color-heavy by design, mono-ink strips their identity\n\n## Best For\n\nProfessional visual notes, Before/After essays, tech manifestos, framework analogies, whiteboard-presentation explainers\n\nFile v1.117.4:references/palettes/neon.md\n\n# neon\n\nVibrant neon colors on dark backgrounds\n\n## Background\n\n- Color: Deep Purple (#2D1B4E)\n- Texture: Subtle grid pattern or solid dark\n\n## Colors\n\n| Role | Color | Hex | Usage |\n|------|-------|-----|-------|\n| Background | Deep Purple | #2D1B4E | Primary background |\n| Alt Background | Dark Teal | #0F4C5C | Alternative sections |\n| Primary | Hot Pink | #FF1493 | Main accent |\n| Secondary | Electric Cyan | #00FFFF | Supporting elements |\n| Tertiary | Neon Yellow | #FFFF00 | Highlights |\n| Accent 1 | Lime Green | #32CD32 | Energy, success |\n| Accent 2 | Orange | #FF6B35 | Warmth |\n| Text | White | #FFFFFF | Text elements |\n\n## Accent\n\nHot Pink (#FF1493) for primary emphasis. High contrast neon-on-dark creates immediate visual impact.\n\n## Semantic Constraint\n\nVibrant neon-on-dark palette. High contrast, immediate visual impact. Do NOT render color names, hex codes, or role labels as visible text in the image.\n\n## Best For\n\nGaming, retro tech, 80s/90s nostalgic content, bold editorial, trend and pop culture\n\nFile v1.117.4:references/palettes/warm.md\n\n# warm\n\nWarm earth tones on soft peach, no cool colors\n\n## Background\n\n- Color: Soft Peach (#FFECD2)\n- Texture: Warm paper texture\n\n## Colors\n\n| Role | Color | Hex | Usage |\n|------|-------|-----|-------|\n| Background | Soft Peach | #FFECD2 | Primary background |\n| Outlines | Deep Charcoal | #2D2D2D | All element outlines |\n| Primary | Warm Orange | #ED8936 | Main accent color |\n| Secondary | Terracotta | #C05621 | Warm depth |\n| Tertiary | Golden Yellow | #F6AD55 | Highlights, energy |\n| Accent | Deep Brown | #744210 | Grounding, anchoring |\n| Text | Warm Charcoal | #4A4A4A | Text elements |\n\n## Accent\n\nWarm Orange (#ED8936) for primary emphasis. Warm-only palette — no cool colors (no green, blue, purple). Modern-retro feel.\n\n## Semantic Constraint\n\nWarm earth tone palette. Warm-only — no cool colors (no green, blue, purple). Do NOT render color names, hex codes, or role labels as visible text in the image.\n\n## Best For\n\nProduct showcases, team introductions, feature grids, brand content, personal growth, lifestyle\n\nFile v1.117.4:references/prompt-construction.md\n\n# Prompt Construction\n\n## Prompt File Format\n\nEach prompt file uses YAML frontmatter + content:\n\n```yaml\n---\nillustration_id: 01\ntype: infographic\nstyle: blueprint\nreferences:                    # ⚠️ ONLY if files EXIST in references/ directory\n  - ref_id: 01\n    filename: 01-ref-diagram.png\n    usage: direct              # direct | style | palette\n---\n\n[Type-specific template content below...]\n```\n\n**⚠️ CRITICAL - When to include `references` field**:\n\n| Situation | Action |\n|-----------|--------|\n| Reference file saved to `references/` | Include in frontmatter ✓ |\n| Style extracted verbally (no file) | DO NOT include in frontmatter, append to prompt body instead |\n| File path in frontmatter but file doesn't exist | ERROR - remove references field |\n\n**Reference Usage Types** (only when file exists):\n\n| Usage | Description | Generation Action |\n|-------|-------------|-------------------|\n| `direct` | Primary visual reference | Pass to `--ref` parameter |\n| `style` | Style characteristics only | Describe style in prompt text |\n| `palette` | Color palette extraction | Include colors in prompt |\n\n**If no reference file but style/palette extracted verbally**, append directly to prompt body:\n```\nCOLORS (from reference):\n- Primary: #E8756D coral\n- Secondary: #7ECFC0 mint\n...\n\nSTYLE (from reference):\n- Clean lines, minimal shadows\n- Gradient backgrounds\n...\n```\n\n---\n\n## Default Composition Requirements\n\n**Apply to ALL prompts by default**:\n\n| Requirement | Description |\n|-------------|-------------|\n| **Clean composition** | Simple layouts, no visual clutter |\n| **White space** | Generous margins, breathing room around elements |\n| **No complex backgrounds** | Solid colors or subtle gradients only, avoid busy textures |\n| **Centered or content-appropriate** | Main visual elements centered or positioned by content needs |\n| **Matching graphics** | Use graphic elements that align with content theme |\n| **Highlight core info** | White space draws attention to key information |\n\n**Add to ALL prompts**:\n> Clean composition with generous white space. Simple or no background. Main elements centered or positioned by content needs.\n\n---\n\n## Color Specification Rules\n\nColors in prompts use hex codes for **rendering guidance only** — they tell the model which colors to use, NOT what text to display.\n\n**⚠️ CRITICAL**: Image generation models sometimes render color names and hex values as visible text labels in the image (e.g., painting \"Macaron Blue #A8D8EA\" as a label). This must be prevented.\n\n**Add to ALL prompts that contain a COLORS section**:\n> Color values (#hex) and color names are rendering guidance only — do NOT display color names, hex codes, or palette labels as visible text in the image.\n\n---\n\n## Character Rendering\n\nWhen depicting people:\n\n| Guideline | Description |\n|-----------|-------------|\n| **Style** | Simplified cartoon silhouettes or symbolic expressions |\n| **Avoid** | Realistic human portrayals, detailed faces |\n| **Diversity** | Varied body types when showing multiple people |\n| **Emotion** | Express through posture and simple gestures |\n\n**Add to ALL prompts with human figures**:\n> Human figures: simplified stylized silhouettes or symbolic representations, not photorealistic.\n\n---\n\n## Text in Illustrations\n\n| Element | Guideline |\n|---------|-----------|\n| **Size** | Large, prominent, immediately readable |\n| **Style** | Handwritten fonts preferred for warmth |\n| **Content** | Concise keywords and core concepts only |\n| **Language** | Match article language |\n\n**Add to prompts with text**:\n> Text should be large and prominent with handwritten-style fonts. Keep minimal, focus on keywords.\n\n---\n\n## Principles\n\nGood prompts must include:\n\n1. **Layout Structure First**: Describe composition, zones, flow direction\n2. **Specific Data/Labels**: Use actual numbers, terms from article\n3. **Visual Relationships**: How elements connect\n4. **Semantic Colors**: Meaning-based color choices (red=warning, green=efficient)\n5. **Style Characteristics**: Line treatment, texture, mood\n6. **Aspect Ratio**: End with ratio and complexity level\n\n## Type-Specific Templates\n\n### Infographic\n\n```\n[Title] - Data Visualization\n\nLayout: [grid/radial/hierarchical]\n\nZONES:\n- Zone 1: [data point with specific values]\n- Zone 2: [comparison with metrics]\n- Zone 3: [summary/conclusion]\n\nLABELS: [specific numbers, percentages, terms from article]\nCOLORS: [semantic color mapping]\nSTYLE: [style characteristics]\nASPECT: 16:9\n```\n\n**Infographic + sketch-notes + macaron palette** (default / `hand-drawn-edu` preset):\n```\nSingle-page hand-drawn educational infographic in a clean presentation style.\nWarm cream paper background, black hand-drawn lines with slight wobble, soft\npastel color blocks. Feels simple, friendly, and easy to understand at a glance.\nDiagram-style visuals ONLY — no realistic or photographic images.\n\nPALETTE: macaron — soft pastel blocks on warm cream\nCOLORS: Warm Cream background (#F5F0E8); Black (#1A1A1A) for ALL lines, text,\n        arrows, and doodles; section fills in Light Blue (#A8D8EA), Mint Green\n        (#B5E5CF), Lavender (#D5C6E0), Peach (#FFD5C2); Coral Red (#E8655A)\n        sparingly for one or two emphasis points only.\n\nLAYOUT (top → bottom):\n- TOP: Bold hand-lettered title, oversized, slightly wobbly, with an optional\n       decorative underline or small doodle.\n- MIDDLE: 2–6 rounded-rectangle info boxes arranged in a clean grid, row, or\n          radial pattern. Each box = one section, one pastel fill color, one\n          simple icon or sketchy cartoon element, one short keyword/phrase.\n          Hand-drawn arrows connect related zones.\n- BOTTOM: One short hand-lettered takeaway sentence summarizing the main idea.\n\nELEMENTS: Rounded info boxes with clear sectioning, wavy/straight hand-drawn\n          arrows with small inline labels, simple icons and sketchy cartoon\n          elements (stick figures, tools, objects), small doodle decorations\n          (stars, sparkles, underlines, dots, asterisks) used sparingly.\n\nSTYLE: Minimal, well-organized, airy. Color fills don't completely fill\n       outlines (slight \"hand-painted\" overshoot). ALL text hand-lettered —\n       no computer fonts. Short labels and keywords only, never long\n       paragraphs. Generous white space between sections.\n```\n\n**Infographic + vector-illustration**:\n```\nFlat vector illustration infographic. Clean black outlines on all elements.\nCOLORS: Cream background (#F5F0E6), Coral Red (#E07A5F), Mint Green (#81B29A), Mustard Yellow (#F2CC8F)\nELEMENTS: Geometric simplified icons, no gradients, playful decorative elements (dots, stars)\n```\n\n**Infographic + vector-illustration + warm palette**:\n```\nFlat vector illustration infographic. Clean black outlines on all elements.\nPALETTE OVERRIDE (warm): Warm-only color palette, no cool colors.\nCOLORS: Soft Peach background (#FFECD2), Warm Orange (#ED8936),\n        Terracotta (#C05621), Golden Yellow (#F6AD55), Deep Brown (#744210)\nELEMENTS: Geometric simplified icons, no gradients, rounded corners,\n          modular card layout, consistent icon style\n```\n\n### Scene\n\n```\n[Title] - Atmospheric Scene\n\nFOCAL POINT: [main subject]\nATMOSPHERE: [lighting, mood, environment]\nMOOD: [emotion to convey]\nCOLOR TEMPERATURE: [warm/cool/neutral]\nSTYLE: [style characteristics]\nASPECT: 16:9\n```\n\n### Flowchart\n\n```\n[Title] - Process Flow\n\nLayout: [left-right/top-down/circular]\n\nSTEPS:\n1. [Step name] - [brief description]\n2. [Step name] - [brief description]\n...\n\nCONNECTIONS: [arrow types, decision points]\nSTYLE: [style characteristics]\nASPECT: 16:9\n```\n\n**Flowchart + vector-illustration**:\n```\nFlat vector flowchart with bold arrows and geometric step containers.\nCOLORS: Cream background (#F5F0E6), steps in Coral/Mint/Mustard, black outlines\nELEMENTS: Rounded rectangles, thick arrows, simple icons per step\n```\n\n**Flowchart + sketch-notes + macaron palette**:\n```\nHand-drawn educational flowchart on warm cream paper. Slight wobble on all lines.\nPALETTE: macaron — soft pastel color blocks\nCOLORS: Warm Cream background (#F5F0E8), zone fills in Macaron Blue (#A8D8EA),\n        Lavender (#D5C6E0), Mint (#B5E5CF), Coral Red (#E8655A) for emphasis\nELEMENTS: Rounded cards with dashed/solid borders, wavy hand-drawn arrows with labels,\n          simple stick-figure characters, doodle decorations (stars, underlines)\nSTYLE: Color fills don't completely fill outlines, hand-drawn lettering, generous white space\n```\n\n**Flowchart + ink-notes + mono-ink palette**:\n```\nProfessional hand-drawn visual-note flowchart on pure white. Black ink line work\nwith slight wobble, à la Mike Rohde sketchnoting.\nPALETTE: mono-ink — black ink dominant, sparse semantic accents\nCOLORS: Pure White background (#FFFFFF), Near Black (#1A1A1A) for all lines,\n        text, and figures; Coral Red (#E8655A) only for risk/emphasis,\n        Muted Teal (#5FA8A8) only for positive/solution states\nELEMENTS: Left-to-right stage boxes with rounded-rect frames, wavy hand-drawn\n          arrows between stages, simple stick-figure characters with role\n          labels above (e.g., \"ML Engineer\", \"Team Lead\"), dashed-border box\n          for future/empty stage, small doodle icons per stage\nSTYLE: Hand-lettered titles (bold, oversized), handwritten stage labels and\n        annotations, generous white space, bottom tagline summarizing takeaway\n```\n\n### Comparison\n\n```\n[Title] - Comparison View\n\nLEFT SIDE - [Option A]:\n- [Point 1]\n- [Point 2]\n\nRIGHT SIDE - [Option B]:\n- [Point 1]\n- [Point 2]\n\nDIVIDER: [visual separator]\nSTYLE: [style characteristics]\nASPECT: 16:9\n```\n\n**Comparison + vector-illustration**:\n```\nFlat vector comparison with split layout. Clear visual separation.\nCOLORS: Left side Coral (#E07A5F), Right side Mint (#81B29A), cream background\nELEMENTS: Bold icons, black outlines, centered divider line\n```\n\n**Comparison + vector-illustration + warm palette**:\n```\nFlat vector comparison with split layout. Clear visual separation.\nPALETTE OVERRIDE (warm): Warm-only color palette, no cool colors.\nCOLORS: Left side Warm Orange (#ED8936), Right side Terracotta (#C05621),\n        Soft Peach background (#FFECD2), Deep Brown (#744210) accents\nELEMENTS: Bold icons, black outlines, centered divider line\n```\n\n**Comparison + ink-notes + mono-ink palette** (Before/After, Traditional vs New):\n```\nProfessional hand-drawn sketchnote comparison on pure white. Black ink line work\nwith slight wobble, à la Mike Rohde sketchnoting.\nPALETTE: mono-ink — black ink dominant, sparse semantic accents\nCOLORS: Pure White background (#FFFFFF), Near Black (#1A1A1A) for all outlines,\n        text, figures, arrows; Coral Red (#E8655A) reserved for risks/gaps\n        (left/Before side); Muted Teal (#5FA8A8) reserved for positives\n        (right/After side). Color accents under 10% of canvas.\nLAYOUT: Left | Right split with vertical hand-drawn divider. Hand-lettered\n        \"Before\" label (top-left) and \"After\" label (top-right).\nLEFT SIDE: Stick figure(s) with role label above, speech bubble showing the\n           pain point, bulleted pain-point list in handwritten text.\nRIGHT SIDE: Stick figure(s) showing the new state, bulleted improvement list,\n            small positive-action icons.\nBRIDGE: Curved hand-drawn \"mindset shift\" arrow bridging left → right with\n        small inline label describing the shift.\nBOTTOM: Single-line hand-lettered tagline summarizing the takeaway.\nSTYLE: Hand-lettered headings (bold, oversized), handwritten body annotations,\n        generous white space, no computer fonts, no gradients, no shadows.\n```\n\n### Framework\n\n```\n[Title] - Conceptual Framework\n\nSTRUCTURE: [hierarchical/network/matrix]\n\nNODES:\n- [Concept 1] - [role]\n- [Concept 2] - [role]\n\nRELATIONSHIPS: [how nodes connect]\nSTYLE: [style characteristics]\nASPECT: 16:9\n```\n\n**Framework + vector-illustration**:\n```\nFlat vector framework diagram with geometric nodes and bold connectors.\nCOLORS: Cream background (#F5F0E6), nodes in Coral/Mint/Mustard/Blue, black outlines\nELEMENTS: Rounded rectangles or circles for nodes, thick connecting lines\n```\n\n**Framework + vector-illustration + warm palette**:\n```\nFlat vector framework diagram with geometric nodes and bold connectors.\nPALETTE OVERRIDE (warm): Warm-only color palette, no cool colors.\nCOLORS: Soft Peach background (#FFECD2), nodes in Warm Orange (#ED8936),\n        Terracotta (#C05621), Golden Yellow (#F6AD55), black outlines\nELEMENTS: Rounded rectangles or circles for nodes, thick connecting lines\n```\n\n**Framework + ink-notes + mono-ink palette** (command center, OS analogy):\n```\nProfessional hand-drawn sketchnote framework on pure white. Black ink line work\nwith slight wobble, à la Mike Rohde sketchnoting.\nPALETTE: mono-ink — black ink dominant, sparse semantic accents\nCOLORS: Pure White background (#FFFFFF), Near Black (#1A1A1A) for all lines,\n        text, figures; Dusty Lavender (#9B8AB5) for neutral category tags only;\n        Coral Red (#E8655A) for emphasis sparingly. Color accents under 10%.\nSTRUCTURE: Central rounded-rectangle frame as \"the system\" with hand-lettered\n           title inside. Inner layer of labeled sub-components (node labels\n           above each). Outer layer of feeder arrows from stick-figure\n           operators/users with role labels.\nELEMENTS: Stick figures at the edges with role tags (\"Team Lead\", \"Operator\"),\n          wavy hand-drawn connector arrows with small inline labels, small\n          doodle icons per component, dashed-border placeholder(s) for\n          future/empty capabilities.\nBOTTOM: Single-line hand-lettered tagline.\nSTYLE: Hand-lettered headings, handwritten annotations, generous white space,\n        no computer fonts, no gradients.\n```\n\n### Timeline\n\n```\n[Title] - Chronological View\n\nDIRECTION: [horizontal/vertical]\n\nEVENTS:\n- [Date/Period 1]: [milestone]\n- [Date/Period 2]: [milestone]\n\nMARKERS: [visual indicators]\nSTYLE: [style characteristics]\nASPECT: 16:9\n```\n\n### Screen-Print Style Override\n\nWhen `style: screen-print`, replace standard style instructions with:\n\n```\nScreen print / silkscreen poster art. Flat color blocks, NO gradients.\nCOLORS: 2-5 colors maximum. [Choose from style palette or duotone pair]\nTEXTURE: Halftone dot patterns, slight color layer misregistration, paper grain\nCOMPOSITION: Bold silhouettes, geometric framing, negative space as storytelling element\nFIGURES: Silhouettes only, no detailed faces, stencil-cut edges\nTYPOGRAPHY: Bold condensed sans-serif integrated into composition (not overlaid)\n```\n\n**Scene + screen-print**:\n```\nConceptual poster scene. Single symbolic focal point, NOT literal illustration.\nCOLORS: Duotone pair (e.g., Burnt Orange #E8751A + Deep Teal #0A6E6E) on Off-Black #121212\nCOMPOSITION: Centered silhouette or geometric frame, 60%+ negative space\nTEXTURE: Halftone dots, paper grain, slight print misregistration\n```\n\n**Comparison + screen-print**:\n```\nSplit poster composition. Each side dominated by one color from duotone pair.\nLEFT: [Color A] side with silhouette/icon for [Option A]\nRIGHT: [Color B] side with silhouette/icon for [Option B]\nDIVIDER: Geometric shape or negative space boundary\nTEXTURE: Halftone transitions between sides\n```\n\n---\n\n## Palette Override\n\nWhen a palette is specified (via `--palette` or preset), it overrides the style's default colors:\n\n1. Read style file → get rendering rules (Visual Elements, Style Rules, line treatment)\n2. Read palette file (`palettes/<palette>.md`) → get Colors + Background\n3. Palette Colors **replace** style's default Color Palette in prompt\n4. Palette Background **replaces** style's Background color (keep style's texture description)\n5. Build prompt: style rendering instructions + palette colors\n\n**Prompt frontmatter** includes palette when specified:\n```yaml\n---\nillustration_id: 01\ntype: infographic\nstyle: vector-illustration\npalette: macaron\n---\n```\n\n**Example**: `vector-illustration` + `macaron` palette:\n```\nFlat vector illustration infographic. Clean black outlines on all elements.\nPALETTE: macaron — soft pastel color blocks\nCOLORS: Warm Cream background (#F5F0E8), Macaron Blue (#A8D8EA), Mint (#B5E5CF),\n        Lavender (#D5C6E0), Peach (#FFD5C2), Coral Red (#E8655A) for emphasis\nELEMENTS: Geometric simplified icons, no gradients, playful decorative elements\n```\n\nWhen no palette is specified, use the style's built-in Color Palette as before.\n\n---\n\n## What to Avoid\n\n- Vague descriptions (\"a nice image\")\n- Literal metaphor illustrations\n- Missing concrete labels/annotations\n- Generic decorative elements\n\n## Watermark Integration\n\nIf watermark enabled in preferences, append:\n\n```\nInclude a subtle watermark \"[content]\" positioned at [position].\n```\n\nFile v1.117.4:references/style-presets.md\n\n# Style Presets\n\n`--preset X` expands to a type + style + optional palette combination. Users can override any dimension.\n\n## Default Preset\n\nWhen content analysis surfaces no strong signal (generic knowledge article, mixed-topic post, no clear data/comparison/narrative cue), recommend **`hand-drawn-edu`** as the primary option in Step 3 Q1. It is the warm, friendly educational-infographic default — safe for most articles and universally readable.\n\n## By Category\n\n### Technical & Engineering\n\n| --preset | Type | Style | Palette | Best For |\n|----------|------|-------|---------|----------|\n| `tech-explainer` | `infographic` | `blueprint` | — | API docs, system metrics, technical deep-dives |\n| `system-design` | `framework` | `blueprint` | — | Architecture diagrams, system design |\n| `architecture` | `framework` | `vector-illustration` | — | Component relationships, module structure |\n| `science-paper` | `infographic` | `scientific` | — | Research findings, lab results, academic |\n\n### Knowledge & Education\n\n| --preset | Type | Style | Palette | Best For |\n|----------|------|-------|---------|----------|\n| `knowledge-base` | `infographic` | `vector-illustration` | — | Concept explainers, tutorials, how-to |\n| `saas-guide` | `infographic` | `notion` | — | Product guides, SaaS docs, tool walkthroughs |\n| `tutorial` | `flowchart` | `vector-illustration` | — | Step-by-step tutorials, setup guides |\n| `process-flow` | `flowchart` | `notion` | — | Workflow documentation, onboarding flows |\n| `warm-knowledge` | `infographic` | `vector-illustration` | `warm` | Product showcases, team intros, feature cards, brand content |\n| `edu-visual` | `infographic` | `vector-illustration` | `macaron` | Knowledge summaries, concept explainers, educational articles |\n| `hand-drawn-edu` | `infographic` | `sketch-notes` | `macaron` | **Default preset.** Hand-drawn educational infographic — warm cream paper, black lines, pastel blocks. Great for single-page explainers, concept summaries, onboarding, general knowledge articles |\n| `hand-drawn-edu-flow` | `flowchart` | `sketch-notes` | `macaron` | Hand-drawn process explainer — step-by-step workflow in the same warm educational style |\n| `hand-drawn-edu-compare` | `comparison` | `sketch-notes` | `macaron` | Hand-drawn side-by-side comparison in the warm educational style |\n| `ink-notes-compare` | `comparison` | `ink-notes` | `mono-ink` | Before/After essays, Traditional vs New, OS-style comparisons, mindset-shift narratives |\n| `ink-notes-flow` | `flowchart` | `ink-notes` | `mono-ink` | Professional process explainers, workforce pipelines, hand-drawn technical walkthroughs |\n| `ink-notes-framework` | `framework` | `ink-notes` | `mono-ink` | System analogies, command-center diagrams, architecture-as-metaphor, tech manifestos |\n\n### Data & Analysis\n\n| --preset | Type | Style | Palette | Best For |\n|----------|------|-------|---------|----------|\n| `data-report` | `infographic` | `editorial` | — | Data journalism, metrics reports, dashboards |\n| `versus` | `comparison` | `vector-illustration` | — | Tech comparisons, framework shootouts |\n| `business-compare` | `comparison` | `elegant` | — | Product evaluations, strategy options |\n\n### Narrative & Creative\n\n| --preset | Type | Style | Palette | Best For |\n|----------|------|-------|---------|----------|\n| `storytelling` | `scene` | `warm` | — | Personal essays, reflections, growth stories |\n| `lifestyle` | `scene` | `watercolor` | — | Travel, wellness, lifestyle, creative |\n| `history` | `timeline` | `elegant` | — | Historical overviews, milestones |\n| `evolution` | `timeline` | `warm` | — | Progress narratives, growth journeys |\n\n### Editorial & Opinion\n\n| --preset | Type | Style | Palette | Best For |\n|----------|------|-------|---------|----------|\n| `opinion-piece` | `scene` | `screen-print` | — | Op-eds, commentary, critical essays |\n| `editorial-poster` | `comparison` | `screen-print` | — | Debate, contrasting viewpoints |\n| `cinematic` | `scene` | `screen-print` | — | Dramatic narratives, cultural essays |\n\n## Content Type → Preset Recommendations\n\nUse this table during Step 3 to recommend presets based on Step 2 content analysis:\n\n| Content Type (Step 2) | Primary Preset | Alternatives |\n|------------------------|----------------|--------------|\n| **General / No strong signal** | `hand-drawn-edu` | `edu-visual`, `knowledge-base` |\n| Education / Knowledge | `hand-drawn-edu` | `edu-visual`, `knowledge-base`, `tutorial` |\n| Tutorial | `hand-drawn-edu-flow` | `tutorial`, `process-flow`, `hand-drawn-edu` |\n| SaaS / Product | `hand-drawn-edu` | `saas-guide`, `knowledge-base`, `process-flow`, `warm-knowledge` |\n| Technical | `tech-explainer` | `system-design`, `architecture`, `hand-drawn-edu` |\n| Methodology / Framework | `system-design` | `architecture`, `process-flow` |\n| Data / Metrics | `data-report` | `versus`, `tech-explainer` |\n| Comparison / Review | `versus` | `business-compare`, `hand-drawn-edu-compare`, `editorial-poster`, `ink-notes-compare` |\n| Manifesto / Mindset shift / Professional visual note | `ink-notes-compare` | `ink-notes-framework`, `ink-notes-flow` |\n| Narrative / Personal | `storytelling` | `lifestyle`, `evolution` |\n| Opinion / Editorial | `opinion-piece` | `cinematic`, `editorial-poster` |\n| Historical / Timeline | `history` | `evolution` |\n| Academic / Research | `science-paper` | `tech-explainer`, `data-report` |\n\n## Override Examples\n\n- `--preset tech-explainer --style notion` = infographic type with notion style\n- `--preset storytelling --type timeline` = timeline type with warm style\n\nExplicit `--type`/`--style` flags always override preset values.\n\nFile v1.117.4:references/styles.md\n\n# Style Reference\n\n## Core Styles\n\nSimplified style tier for quick selection:\n\n| Core Style | Maps To | Best For |\n|------------|---------|----------|\n| `hand-drawn` | sketch-notes | **Default.** Warm cream paper, black hand-drawn lines, pastel blocks — educational infographics, concept explainers, onboarding, general knowledge articles |\n| `vector` | vector-illustration | Knowledge articles, tutorials, tech content |\n| `minimal-flat` | notion | General, knowledge sharing, SaaS |\n| `sci-fi` | blueprint | AI, frontier tech, system design |\n| `editorial` | editorial | Processes, data, journalism |\n| `scene` | warm/watercolor | Narratives, emotional, lifestyle |\n| `poster` | screen-print | Opinion, editorial, cultural, cinematic |\n\nUse Core Styles for most cases. **When no strong content signal is detected, default to `hand-drawn` (→ sketch-notes).** See full Style Gallery below for granular control.\n\n---\n\n## Style Gallery\n\n| Style | Description | Best For |\n|-------|-------------|----------|\n| `vector-illustration` | Clean flat vector art with bold shapes | Knowledge articles, tutorials, tech content |\n| `notion` | Minimalist hand-drawn line art | Knowledge sharing, SaaS, productivity |\n| `elegant` | Refined, sophisticated | Business, thought leadership |\n| `warm` | Friendly, approachable | Personal growth, lifestyle, education |\n| `minimal` | Ultra-clean, zen-like | Philosophy, minimalism, core concepts |\n| `blueprint` | Technical schematics | Architecture, system design, engineering |\n| `watercolor` | Soft artistic with natural warmth | Lifestyle, travel, creative |\n| `editorial` | Magazine-style infographic | Tech explainers, journalism |\n| `scientific` | Academic precise diagrams | Biology, chemistry, technical research |\n| `chalkboard` | Classroom chalk drawing style | Education, teaching, explanations |\n| `fantasy-animation` | Ghibli/Disney-inspired hand-drawn | Storybook, magical, emotional |\n| `flat` | Modern bold geometric shapes | Modern digital, contemporary |\n| `flat-doodle` | Cute flat with bold outlines | Cute, friendly, approachable |\n| `intuition-machine` | Technical briefing with aged paper | Technical briefings, academic |\n| `nature` | Organic earthy illustration | Environmental, wellness |\n| `pixel-art` | Retro 8-bit gaming aesthetic | Gaming, retro tech |\n| `playful` | Whimsical pastel doodles | Fun, casual, educational |\n| `retro` | 80s/90s neon geometric | 80s/90s nostalgic, bold |\n| `sketch` | Raw pencil notebook style | Brainstorming, creative exploration |\n| `screen-print` | Bold poster art, halftone textures, limited colors | Opinion, editorial, cultural, cinematic |\n| `sketch-notes` | Soft hand-drawn warm notes | Educational, warm notes |\n| `ink-notes` | Black ink on pure white, sparse semantic accents, hand-lettered (à la Mike Rohde's sketchnoting) | Before/After essays, tech manifestos, framework analogies |\n| `vintage` | Aged parchment historical | Historical, heritage |\n\nFull specifications: `references/styles/<style>.md`\n\n## Type × Style Compatibility Matrix\n\n| | sketch-notes | vector-illustration | notion | warm | minimal | blueprint | watercolor | elegant | editorial | scientific | screen-print |\n|---|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|\n| infographic | ✓✓ | ✓✓ | ✓✓ | ✓ | ✓✓ | ✓✓ | ✓ | ✓✓ | ✓✓ | ✓✓ | ✓ |\n| scene | ✗ | ✓ | ✓ | ✓✓ | ✓ | ✗ | ✓✓ | ✓ | ✓ | ✗ | ✓✓ |\n| flowchart | ✓✓ | ✓✓ | ✓✓ | ✓ | ✓ | ✓✓ | ✗ | ✓ | ✓✓ | ✓ | ✗ |\n| comparison | ✓✓ | ✓✓ | ✓✓ | ✓ | ✓✓ | ✓ | ✓ | ✓✓ | ✓✓ | ✓ | ✓ |\n| framework | ✓✓ | ✓✓ | ✓✓ | ✓ | ✓✓ | ✓✓ | ✗ | ✓✓ | ✓ | ✓✓ | ✓ |\n| timeline | ✓ | ✓ | ✓✓ | ✓ | ✓ | ✓ | ✓✓ | ✓✓ | ✓✓ | ✓ | ✓ |\n\n✓✓ = highly recommended | ✓ = compatible | ✗ = not recommended\n\n## Auto Selection by Type\n\nWhen no content signal matches strongly, `sketch-notes` is the default primary for every diagrammatic type. Only override with another primary when the content analysis in Step 2 surfaces a clear signal (technical/data/narrative/opinion).\n\n| Type | Primary Style | Secondary Styles |\n|------|---------------|------------------|\n| infographic | sketch-notes | vector-illustration, notion, blueprint, editorial |\n| scene | warm | watercolor, elegant |\n| flowchart | sketch-notes | vector-illustration, notion, blueprint |\n| comparison | sketch-notes | vector-illustration, notion, elegant |\n| framework | sketch-notes | blueprint, vector-illustration, notion |\n| timeline | elegant | sketch-notes, warm, editorial |\n\n## Auto Selection by Content Signals\n\n| Content Signals | Recommended Type | Recommended Style |\n|-----------------|------------------|-------------------|\n| **(no strong signal / general article)** | **infographic** | **sketch-notes** |\n| Knowledge, concept, tutorial, learning, guide, onboarding | infographic | sketch-notes, vector-illustration, notion |\n| Productivity, SaaS, tool, app, software | infographic | sketch-notes, notion, vector-illustration |\n| How-to, steps, workflow, process, tutorial | flowchart | sketch-notes, vector-illustration, notion |\n| API, metrics, data, comparison, numbers | infographic | blueprint, vector-illustration |\n| Tech, AI, programming, development, code | infographic | vector-illustration, blueprint, sketch-notes |\n| Framework, model, architecture, principles | framework | blueprint, vector-illustration, sketch-notes |\n| vs, pros/cons, before/after, alternatives | comparison | vector-illustration, notion, sketch-notes |\n| Manifesto, mindset shift, workforce, OS, whiteboard, professional visual note | comparison / framework | ink-notes |\n| Story, emotion, journey, experience, personal | scene | warm, watercolor |\n| History, timeline, progress, evolution | timeline | elegant, warm |\n| Business, professional, strategy, corporate | framework | elegant |\n| Opinion, editorial, culture, philosophy, cinematic, dramatic, poster | scene | screen-print |\n| Biology, chemistry, medical, scientific | infographic | scientific |\n| Explainer, journalism, magazine, investigation | infographic | editorial |\n\n## Style Characteristics by Type\n\n### infographic + sketch-notes (default)\n- Warm cream paper background, black hand-drawn lines with slight wobble\n- 2–6 rounded pastel info boxes (light blue / mint / lavender / peach)\n- Bold hand-lettered title at the top\n- Short keyword labels, simple icons, small doodles (stars, underlines, sparkles)\n- One-line hand-lettered takeaway sentence at the bottom\n- Airy, minimal, diagram-style — never realistic\n- Perfect for single-page educational explainers and concept summaries\n\n### infographic + vector-illustration\n- Clean flat vector shapes, bold geometric forms\n- Vibrant but harmonious color palette\n- Clear visual hierarchy with icons and labels\n- Modern, professional, highly readable\n- Perfect for knowledge articles and tutorials\n\n### flowchart + vector-illustration\n- Bold arrows and connectors\n- Distinct step containers with icons\n- Clean progression flow\n- High contrast for readability\n\n### comparison + vector-illustration\n- Split layout with clear visual separation\n- Bold iconography for each side\n- Color-coded distinctions\n- Easy at-a-glance comparison\n\n### framework + vector-illustration\n- Geometric node representations\n- Clear hierarchical structure\n- Bold connecting lines\n- Modern system diagram aesthetic\n\n### infographic + blueprint\n- Technical precision, schematic lines\n- Grid-based layout, clear zones\n- Monospace labels, data-focused\n- Blue/white color scheme\n\n### infographic + notion\n- Hand-drawn feel, approachable\n- Soft icons, rounded elements\n- Neutral palette, clean backgrounds\n- Perfect for SaaS/productivity\n\n### scene + warm\n- Golden hour lighting, cozy atmosphere\n- Soft gradients, natural textures\n- Inviting, personal feeling\n- Great for storytelling\n\n### scene + watercolor\n- Artistic, painterly effect\n- Soft edges, color bleeding\n- Dreamy, creative mood\n- Best for lifestyle/travel\n\n### flowchart + notion\n- Clear step indicators\n- Simple arrow connections\n- Minimal decoration\n- Focus on process clarity\n\n### flowchart + blueprint\n- Technical precision\n- Detailed connection points\n- Engineering aesthetic\n- For complex systems\n\n### comparison + elegant\n- Refined dividers\n- Balanced typography\n- Professional appearance\n- Business comparisons\n\n### framework + blueprint\n- Precise node connections\n- Hierarchical clarity\n- System architecture feel\n- Technical frameworks\n\n### timeline + elegant\n- Sophisticated markers\n- Refined typography\n- Historical gravitas\n- Professional presentations\n\n### timeline + warm\n- Friendly progression\n- Organic flow\n- Personal journey feel\n- Growth narratives\n\n### scene + screen-print\n- Bold silhouettes, symbolic compositions\n- 2-5 flat colors with halftone textures\n- Figure-ground inversion (negative space tells secondary story)\n- Vintage poster aesthetic, conceptual not literal\n- Great for opinion pieces and cultural commentary\n\n### comparison + screen-print\n- Split duotone composition (one color per side)\n- Bold geometric dividers\n- Symbolic icons over detailed rendering\n- High contrast, immediate visual impact\n\n### framework + screen-print\n- Geometric node representations with stencil-cut edges\n- Limited color coding (one color per concept level)\n- Clean silhouette-based iconography\n- Poster-style hierarchy with bold typography\n\n---\n\n## Palette Gallery\n\nPalettes override a style's default colors. Combine any style with any palette: `--style vector-illustration --palette macaron`.\n\n| Palette | Description | Best For |\n|---------|-------------|----------|\n| `macaron` | Soft pastel blocks (blue, mint, lavender, peach) on warm cream | Educational, knowledge, tutorials |\n| `warm` | Warm earth tones (orange, terracotta, gold) on soft peach, no cool colors | Brand, product, lifestyle |\n| `neon` | Vibrant neon (pink, cyan, yellow) on dark purple | Gaming, retro, pop culture |\n| `mono-ink` | Black ink on pure white with sparse semantic accents (coral red, muted teal, dusty lavender) | Professional visual notes, Before/After, manifestos |\n\nFull specifications: `references/palettes/<palette>.md`\n\nWhen no palette is specified, the style's built-in Color Palette is used.\n\n## Palette Override Rules\n\n1. Read style file → rendering rules (Visual Elements, Style Rules)\n2. Read palette file → Colors + Background\n3. Palette colors **replace** style's default Color Palette\n4. Palette Background **replaces** style's default Background color\n5. Style's texture description is preserved\n\nArchive v1.117.3: 38 files, 63927 bytes\n\nFiles: prompts/system.md (1080b), references/config/first-time-setup.md (4431b), references/config/preferences-schema.md (4450b), references/palettes/macaron.md (1339b), references/palettes/mono-ink.md (1780b), references/palettes/neon.md (1025b), references/palettes/warm.md (1036b), references/prompt-construction.md (16697b), references/style-presets.md (5698b), references/styles.md (10640b), references/styles/blueprint.md (1844b), references/styles/chalkboard.md (2249b), references/styles/editorial.md (1722b), references/styles/elegant.md (1733b), references/styles/fantasy-animation.md (1969b), references/styles/flat-doodle.md (1869b), references/styles/flat.md (1688b), references/styles/ink-notes.md (4289b), references/styles/intuition-machine.md (1850b), references/styles/minimal.md (1607b), references/styles/nature.md (1703b), references/styles/notion.md (1636b), references/styles/pixel-art.md (1907b), references/styles/playful.md (1707b), references/styles/retro.md (1682b), references/styles/scientific.md (1741b), references/styles/screen-print.md (2680b), references/styles/sketch-notes.md (4704b), references/styles/sketch.md (1691b), references/styles/vector-illustration.md (1940b), references/styles/vintage.md (1819b), references/styles/warm.md (1760b), references/styles/watercolor.md (1815b), references/usage.md (2425b), references/workflow.md (17940b), skill-card.md (2700b), SKILL.md (15757b), _meta.json (146b)\n\nFile v1.117.3:SKILL.md\n\n---\nname: baoyu-article-illustrator\ndescription: Analyzes article structure, identifies positions requiring visual aids, generates illustrations with Type × Style × Palette three-dimension approach. Use when user asks to \"illustrate article\", \"add images\", \"generate images for article\", or \"为文章配图\".\nversion: 1.117.3\nmetadata:\n  openclaw:\n    homepage: https://github.com/JimLiu/baoyu-skills#baoyu-article-illustrator\n---\n\n# Article Illustrator\n\nAnalyze articles, identify illustration positions, generate images with Type × Style × Palette consistency.\n\n## User Input Tools\n\nWhen this skill prompts the user, follow this tool-selection rule (priority order):\n\n1. **Prefer built-in user-input tools** exposed by the current agent runtime — e.g., `AskUserQuestion`, `request_user_input`, `clarify`, `ask_user`, or any equivalent.\n2. **Fallback**: if no such tool exists, emit a numbered plain-text message and ask the user to reply with the chosen number/answer for each question.\n3. **Batching**: if the tool supports multiple questions per call, combine all applicable questions into a single call; if only single-question, ask them one at a time in priority order.\n\nConcrete `AskUserQuestion` references below are examples — substitute the local equivalent in other runtimes.\n\n## Image Generation Tools\n\nWhen this skill needs to render an image, resolve the backend in this order:\n\n1. **Current-request override** — if the user names a specific backend in the current message, use it.\n2. **Saved preference** — if `EXTEND.md` sets `preferred_image_backend` to a backend available right now, use it.\n3. **Auto-select** (when the preference is `auto`, unset, or the pinned backend isn't available):\n   - **Codex (`imagegen`)** — first, inspect your available-skills / tool inventory. If a skill named `imagegen` is listed, you are running inside Codex and MUST use it: invoke via the `Skill` tool with `skill: \"imagegen\"`, passing the saved prompt file's content (plus output path and aspect ratio per Codex `imagegen`'s own args). Codex `imagegen` is the official raster backend in that runtime and outranks any non-native skill (e.g., `baoyu-image-gen`) unless the user has explicitly pinned a different `preferred_image_backend`.\n   - **Other runtime-native tools** — if the runtime exposes a different native image tool (e.g., Hermes `image_generate`), use it the same way.\n   - Otherwise, if exactly one non-native backend is installed (e.g., `baoyu-image-gen`), use it.\n   - Otherwise (multiple non-native backends with no runtime-native tool), ask the user once — batch with any other initial questions.\n4. **If none are available**, tell the user and ask how to proceed.\n\n**⛔ Never substitute SVG, HTML, canvas, or other code-based rendering for raster image generation.** Codex `imagegen`'s own description says it should be used \"when the output should be a bitmap asset rather than repo-native code or vector.\" If you cannot resolve a raster backend via step 3, fall through to step 4 and ask the user — do **not** silently emit SVG, write inline `<svg>` markup, or produce HTML/CSS art as a substitute. This applies even if the article/section seems \"diagram-like\": the consumer skill calling this rule has already decided that a raster image is what it needs.\n\n**⛔ Never repair rendered text by painting over a generated bitmap.** Do not use ImageMagick, Pillow, Canvas, SVG, HTML/CSS, OCR scripts, or any other programmatic overlay to cover, rewrite, erase, stroke, or replace labels, captions, or any other text inside an already generated illustration. If text is wrong or unclear, regenerate from a corrected prompt, redraw with less or no on-image text, or ask the user which imperfect candidate to keep.\n\nSetting `preferred_image_backend: ask` forces the step-3 prompt every run regardless of available backends. Users change the pinned backend via the `## Changing Preferences` section below.\n\n**Prompt file requirement (hard)**: write each image's full, final prompt to a standalone file under `prompts/` (naming: `NN-{type}-[slug].md`) BEFORE invoking any backend. The backend receives the prompt file (or its content); the file is the reproducibility record and lets you switch backends without regenerating prompts.\n\nConcrete tool names (`imagegen`, `image_generate`, `baoyu-image-gen`) above are examples — substitute the local equivalents under the same rule.\n\n## Batch Generation Policy\n\nAfter every prompt file for the run has been saved and verified, generate images in batches by default.\n\nPriority order:\n\n1. Use the chosen backend's native batch / multi-task interface if it exists. Each task must keep its own prompt file, output path, aspect ratio, and direct reference images.\n2. If no native batch interface exists but the runtime can issue parallel tool calls, dispatch up to `generation_batch_size` images at a time. Default: `4`. An explicit user request in the current message, such as `--batch-size 4` or \"并行4张一起生成\", overrides EXTEND.md.\n3. If neither native batch nor parallel tool calls are available, generate sequentially.\n\nRules:\n\n- Never start the first batch until all prompt files for that batch exist on disk.\n- Retry failed items once without regenerating successful items.\n- Do not use subagents merely to parallelize image rendering. Use subagents only for separate prompt iteration or creative exploration.\n\n## Confirmation Policy\n\nDefault behavior: **confirm before generation**.\n\n- Treat explicit skill invocation, a file path, matched signals/presets, and `EXTEND.md` defaults as **recommendation inputs only**. None of them authorizes skipping confirmation.\n- Do **not** start Step 4 or later until the user completes Step 3.\n- Skip confirmation only when the current request explicitly says to do so, for example: \"直接生成\", \"不用确认\", \"跳过确认\", \"按默认出图\", or equivalent wording.\n- If confirmation is skipped explicitly, state the assumed type / density / style / palette / language / backend in the next user-facing update before generating.\n\n## Reference Images\n\nUsers may supply reference images via `--ref <files...>` or by providing file paths / pasting images in conversation. Refs guide style, palette, composition, or subject for specific illustrations.\n\nFull detection, storage, and processing rules are in [references/workflow.md](references/workflow.md) (Step 1.0 saves to `references/NN-ref-{slug}.{ext}`; Step 5.3 processes per-illustration usage `direct | style | palette`). When the chosen backend supports batch input, `direct`-usage entries in each prompt file's `references:` frontmatter should be propagated into its batch payload so backends can pass them through (e.g. `baoyu-image-gen` accepts `ref` per task).\n\n## Three Dimensions\n\n| Dimension | Controls | Examples |\n|-----------|----------|----------|\n| **Type** | Information structure | infographic, scene, flowchart, comparison, framework, timeline |\n| **Style** | Rendering approach | notion, warm, minimal, blueprint, watercolor, elegant |\n| **Palette** | Color scheme (optional) | macaron, warm, neon — overrides style's default colors |\n\nCombine freely: `--type infographic --style vector-illustration --palette macaron`\n\nOr use presets: `--preset edu-visual` → type + style + palette in one flag. See [Style Presets](references/style-presets.md).\n\n## Types\n\n| Type | Best For |\n|------|----------|\n| `infographic` | Data, metrics, technical |\n| `scene` | Narratives, emotional |\n| `flowchart` | Processes, workflows |\n| `comparison` | Side-by-side, options |\n| `framework` | Models, architecture |\n| `timeline` | History, evolution |\n\n## Styles\n\nSee [references/styles.md](references/styles.md) for Core Styles, full gallery, and Type × Style compatibility.\n\n## Workflow\n\n```\n- [ ] Step 1: Pre-check (EXTEND.md, references, config)\n- [ ] Step 2: Analyze content\n- [ ] Step 3: Confirm settings (AskUserQuestion)\n- [ ] Step 4: Generate outline\n- [ ] Step 5: Generate images\n- [ ] Step 6: Finalize\n```\n\n### Step 1: Pre-check\n\n**1.5 Load Preferences (EXTEND.md) ⛔ BLOCKING**\n\nCheck EXTEND.md in priority order — the first one found wins:\n\n| Priority | Path | Scope |\n|----------|------|-------|\n| 1 | `.baoyu-skills/baoyu-article-illustrator/EXTEND.md` | Project |\n| 2 | `${XDG_CONFIG_HOME:-$HOME/.config}/baoyu-skills/baoyu-article-illustrator/EXTEND.md` | XDG |\n| 3 | `$HOME/.baoyu-skills/baoyu-article-illustrator/EXTEND.md` | User home |\n\n| Result | Action |\n|--------|--------|\n| Found | Read, parse, display summary |\n| Not found | ⛔ Run [first-time-setup](references/config/first-time-setup.md) |\n\nFull procedures: [references/workflow.md](references/workflow.md#step-1-pre-check)\n\n### Step 2: Analyze\n\n| Analysis | Output |\n|----------|--------|\n| Content type | Technical / Tutorial / Methodology / Narrative |\n| Purpose | information / visualization / imagination |\n| Core arguments | 2-5 main points |\n| Positions | Where illustrations add value |\n\n**CRITICAL**: Metaphors → visualize underlying concept, NOT literal image.\n\nFull procedures: [references/workflow.md](references/workflow.md#step-2-setup--analyze)\n\n### Step 3: Confirm Settings ⚠️\n\n**Hard gate**: this step is mandatory per the [Confirmation Policy](#confirmation-policy) — Steps 4+ cannot start until the user confirms here (or explicitly opts out with \"直接生成\" / equivalent wording in the current request).\n\n**ONE AskUserQuestion, max 4 Qs. Q1-Q2 REQUIRED. Q3 required unless preset chosen.**\n\n| Q | Options |\n|---|---------|\n| **Q1: Preset or Type** | [Recommended preset], [alt preset], or manual: infographic, scene, flowchart, comparison, framework, timeline, mixed |\n| **Q2: Density** | minimal (1-2), balanced (3-5), per-section (Recommended), rich (6+) |\n| **Q3: Style** | [Recommended], minimal-flat, sci-fi, hand-drawn, editorial, scene, poster, Other — **skip if preset chosen** |\n| Q4: Palette | Default (style colors), macaron, warm, neon — **skip if preset includes palette or preferred_palette set** |\n| Q5: Language | When article language ≠ EXTEND.md setting |\n\nFull procedures: [references/workflow.md](references/workflow.md#step-3-confirm-settings-)\n\n### Step 4: Generate Outline\n\nSave `outline.md` with frontmatter (type, density, style, palette, image_count) and entries:\n\n```yaml\n## Illustration 1\n**Position**: [section/paragraph]\n**Purpose**: [why]\n**Visual Content**: [what]\n**Filename**: 01-infographic-concept-name.png\n```\n\nFull template: [references/workflow.md](references/workflow.md#step-4-generate-outline)\n\n### Step 5: Generate Images\n\n⛔ **BLOCKING: Prompt files MUST be saved before ANY image generation.** This is a hard requirement regardless of which backend is chosen — the prompt file is the reproducibility record.\n\n1. For each illustration, create a prompt file per [references/prompt-construction.md](references/prompt-construction.md)\n2. Save to `prompts/NN-{type}-{slug}.md` with YAML frontmatter\n3. Prompts **MUST** use type-specific templates with structured sections (ZONES / LABELS / COLORS / STYLE / ASPECT)\n4. LABELS **MUST** include article-specific data: actual numbers, terms, metrics, quotes\n5. **DO NOT** pass ad-hoc inline prompts to `--prompt` without saving prompt files first\n6. Select the backend via the `## Image Generation Tools` rule at the top: use whatever is available; if multiple, ask the user once. Do this once per session before any generation.\n7. **Execution strategy**: Generate in batches per the `## Batch Generation Policy`: backend native batch first, runtime parallel tool calls second, sequential only as fallback. Default batch size is 4 unless EXTEND.md or the current request overrides it.\n8. Process references (`direct`/`style`/`palette`) per prompt frontmatter\n9. Apply watermark if EXTEND.md enabled\n10. Generate from saved prompt files; retry once on failure\n\nFull procedures: [references/workflow.md](references/workflow.md#step-5-generate-images)\n\n### Step 6: Finalize\n\nInsert `![description]({relative-path}/NN-{type}-{slug}.png)` after paragraphs. Path computed relative to article file based on output directory setting.\n\n```\nArticle Illustration Complete!\nArticle: [path] | Type: [type] | Density: [level] | Style: [style] | Palette: [palette or default]\nImages: X/N generated\n```\n\n## Output Directory\n\nOutput directory is determined by `default_output_dir` in EXTEND.md (set during first-time setup):\n\n| `default_output_dir` | Output Path | Markdown Insert Path |\n|----------------------|-------------|----------------------|\n| `imgs-subdir` (default) | `{article-dir}/imgs/` | `imgs/NN-{type}-{slug}.png` |\n| `same-dir` | `{article-dir}/` | `NN-{type}-{slug}.png` |\n| `illustrations-subdir` | `{article-dir}/illustrations/` | `illustrations/NN-{type}-{slug}.png` |\n| `independent` | `illustrations/{topic-slug}/` | `illustrations/{topic-slug}/NN-{type}-{slug}.png` (relative to cwd) |\n\nAll auxiliary files (outline, prompts) are saved inside the output directory:\n\n```\n{output-dir}/\n├── outline.md\n├── prompts/\n│   └── NN-{type}-{slug}.md\n└── NN-{type}-{slug}.png\n```\n\nWhen input is **pasted content** (no file path), always uses `illustrations/{topic-slug}/` with `source-{slug}.{ext}` saved alongside.\n\n**Slug**: 2-4 words, kebab-case. **Conflict**: append `-YYYYMMDD-HHMMSS`.\n\n## Modification\n\n| Action | Steps |\n|--------|-------|\n| Edit | Update prompt → Regenerate → Update reference |\n| Add | Position → Prompt → Generate → Update outline → Insert |\n| Delete | Delete files → Remove reference → Update outline |\n\nText correction policy:\n\n- If any rendered text (labels, captions, etc.) is misspelled, garbled, hard to read, or visually weak, do not patch the bitmap with code.\n- For text-correction regenerations, write a new prompt file and a new output path so the flawed candidate is preserved for comparison.\n- Post-processing is limited to crop, resize, compression, or format conversion that does not alter text or the main composition.\n\n## References\n\n| File | Content |\n|------|---------|\n| [references/workflow.md](references/workflow.md) | Detailed procedures |\n| [references/usage.md](references/usage.md) | Command syntax |\n| [references/styles.md](references/styles.md) | Style gallery + Palette gallery |\n| [references/style-presets.md](references/style-presets.md) | Preset shortcuts (type + style + palette) |\n| [references/prompt-construction.md](references/prompt-construction.md) | Prompt templates |\n| [references/config/first-time-setup.md](references/config/first-time-setup.md) | First-time setup |\n\n## Changing Preferences\n\nEXTEND.md lives at the first matching path listed in Step 1.5. Three ways to change it:\n\n- **Edit directly** — open EXTEND.md and change fields. Full schema: `references/config/preferences-schema.md`.\n- **Reconfigure interactively** — delete EXTEND.md (or ask \"reconfigure baoyu-article-illustrator preferences\" / \"重新配置\"). The next run re-triggers first-time setup.\n- **Common one-line edits**:\n  - `preferred_image_backend: auto` — default; runtime-native tool wins, falls back to the only installed backend, asks only if multiple non-native are present.\n  - `preferred_image_backend: codex-imagegen` — pin to Codex's built-in.\n  - `preferred_image_backend: baoyu-image-gen` — pin to the baoyu-image-gen skill.\n  - `preferred_image_backend: ask` — confirm backend every run.\n  - `generation_batch_size: 4` — default number of images to render concurrently when the runtime supports parallel generation calls.\n  - `preferred_type: infographic`, `preferred_style: notion`, `preferred_palette: macaron`, `language: zh`.\n  - `default_output_dir: imgs-subdir` — where to write generated images relative to the article.\n\nFile v1.117.3:_meta.json\n\n{\n  \"ownerId\": \"kn7csrrndw79hpke5d0gsnx93d82k67r\",\n  \"slug\": \"baoyu-article-illustrator\",\n  \"version\": \"1.117.3\",\n  \"publishedAt\": 1779665840694\n}\n\nFile v1.117.3:references/config/first-time-setup.md\n\n---\nname: first-time-setup\ndescription: First-time setup flow for baoyu-article-illustrator preferences\n---\n\n# First-Time Setup\n\n## Overview\n\nWhen no EXTEND.md is found, guide user through preference setup.\n\n**⛔ BLOCKING OPERATION**: This setup MUST complete before ANY other workflow steps. Do NOT:\n- Ask about reference images\n- Ask about content/article\n- Ask about type or style preferences\n- Proceed to content analysis\n\nONLY ask the questions in this setup flow, save EXTEND.md, then continue.\n\n## Setup Flow\n\n```\nNo EXTEND.md found\n        │\n        ▼\n┌─────────────────────┐\n│ AskUserQuestion     │\n│ (all questions)     │\n└─────────────────────┘\n        │\n        ▼\n┌─────────────────────┐\n│ Create EXTEND.md    │\n└─────────────────────┘\n        │\n        ▼\n    Continue to Step 1\n```\n\n## Questions\n\n**Language**: Use user's input language or preferred language for all questions. Do not always use English.\n\nUse single AskUserQuestion with multiple questions (AskUserQuestion auto-adds \"Other\" option):\n\n### Question 1: Watermark\n\n```\nheader: \"Watermark\"\nquestion: \"Watermark text for generated illustrations? Type your watermark content (e.g., name, @handle)\"\noptions:\n  - label: \"No watermark (Recommended)\"\n    description: \"No watermark, can enable later in EXTEND.md\"\n```\n\nPosition defaults to bottom-right.\n\n### Question 2: Preferred Style\n\n```\nheader: \"Style\"\nquestion: \"Default illustration style preference? Or type another style name or your custom style\"\noptions:\n  - label: \"sketch-notes (Recommended)\"\n    description: \"Warm cream paper, black hand-drawn lines, soft pastel blocks — educational infographic feel. Great default for most articles.\"\n  - label: \"None\"\n    description: \"Auto-select based on content analysis (falls back to sketch-notes when no strong signal)\"\n  - label: \"notion\"\n    description: \"Minimalist hand-drawn line art\"\n  - label: \"warm\"\n    description: \"Friendly, approachable, personal\"\n```\n\n### Question 3: Output Directory\n\n```\nheader: \"Output Directory\"\nquestion: \"Where to save generated illustrations when illustrating a file?\"\noptions:\n  - label: \"imgs-subdir (Recommended)\"\n    description: \"{article-dir}/imgs/ — images in a subdirectory next to the article\"\n  - label: \"same-dir\"\n    description: \"{article-dir}/ — images alongside the article file\"\n  - label: \"illustrations-subdir\"\n    description: \"{article-dir}/illustrations/ — separate illustrations subdirectory\"\n  - label: \"independent\"\n    description: \"illustrations/{topic-slug}/ — standalone directory in cwd\"\n```\n\n### Question 4: Save Location\n\n```\nheader: \"Save\"\nquestion: \"Where to save preferences?\"\noptions:\n  - label: \"Project\"\n    description: \".baoyu-skills/ (this project only)\"\n  - label: \"User\"\n    description: \"~/.baoyu-skills/ (all projects)\"\n```\n\n## Save Locations\n\n| Choice | Path | Scope |\n|--------|------|-------|\n| Project | `.baoyu-skills/baoyu-article-illustrator/EXTEND.md` | Current project |\n| User | `~/.baoyu-skills/baoyu-article-illustrator/EXTEND.md` | All projects |\n\n## After Setup\n\n1. Create directory if needed\n2. Write EXTEND.md with frontmatter\n3. Confirm: \"Preferences saved to [path]\"\n4. Continue to Step 1\n\n## EXTEND.md Template\n\n```yaml\n---\nversion: 1\nwatermark:\n  enabled: [true/false]\n  content: \"[user input or empty]\"\n  position: bottom-right\n  opacity: 0.7\npreferred_style:\n  name: [selected style or null]\n  description: \"\"\ndefault_output_dir: imgs-subdir  # same-dir | imgs-subdir | illustrations-subdir | independent\nlanguage: null\npreferred_image_backend: auto\ngeneration_batch_size: 4\ncustom_styles: []\n---\n```\n\n`preferred_image_backend: auto` is the baked-in default — first-time setup does not ask about it. The `## Image Generation Tools` rule in SKILL.md then picks the runtime-native tool (Codex `imagegen`, Hermes `image_generate`, etc.) when available, and falls back to installed backends.\n\n`generation_batch_size: 4` is the baked-in default for batch rendering. The current user request may override it for one run.\n\n## Modifying Preferences Later\n\nSee the `## Changing Preferences` section in `SKILL.md` for the canonical list of common edits (pin backend, change defaults, retrigger setup). Full schema: `preferences-schema.md`.\n\nFile v1.117.3:references/config/preferences-schema.md\n\n---\nname: preferences-schema\ndescription: EXTEND.md YAML schema for baoyu-article-illustrator user preferences\n---\n\n# Preferences Schema\n\n## Full Schema\n\n```yaml\n---\nversion: 1\n\nwatermark:\n  enabled: false\n  content: \"\"\n  position: bottom-right  # bottom-right|bottom-left|bottom-center|top-right\n\npreferred_style:\n  name: null              # Built-in or custom style name\n  description: \"\"         # Override/notes\n\npreferred_palette: null   # Built-in palette name (macaron|warm|neon) or null\n\nlanguage: null            # zh|en|ja|ko|auto\n\ndefault_output_dir: null  # same-dir|illustrations-subdir|independent\n\npreferred_image_backend: auto  # auto|ask|<backend-id>\n\ngeneration_batch_size: 4       # 1-8, used when backend/runtime supports batch or parallel generation\n\ncustom_styles:\n  - name: my-style\n    description: \"Style description\"\n    color_palette:\n      primary: [\"#1E3A5F\", \"#4A90D9\"]\n      background: \"#F5F7FA\"\n      accents: [\"#00B4D8\", \"#48CAE4\"]\n    visual_elements: \"Clean lines, geometric shapes\"\n    typography: \"Modern sans-serif\"\n    best_for: \"Business, education\"\n---\n```\n\n## Field Reference\n\n| Field | Type | Default | Description |\n|-------|------|---------|-------------|\n| `version` | int | 1 | Schema version |\n| `watermark.enabled` | bool | false | Enable watermark |\n| `watermark.content` | string | \"\" | Watermark text (@username or custom) |\n| `watermark.position` | enum | bottom-right | Position on image |\n| `preferred_style.name` | string | null | Style name or null |\n| `preferred_style.description` | string | \"\" | Custom notes/override |\n| `preferred_palette` | string | null | Palette override (macaron, warm, neon, or null) |\n| `language` | string | null | Output language (null = auto-detect) |\n| `default_output_dir` | enum | null | Output directory preference (null = ask each time) |\n| `preferred_image_backend` | string | `auto` | Image backend selection. `auto` = prefer runtime-native tool, fall back to the only installed backend, ask if multiple non-native are present. `ask` = always confirm on every run. `<backend-id>` (e.g., `codex-imagegen`, `baoyu-image-gen`, `image_generate`) = pin this backend when available; fall back to `auto` when it isn't. Absent = `auto`. Resolution logic is documented in `SKILL.md`'s `## Image Generation Tools` section. |\n| `generation_batch_size` | int | 4 | Number of images to dispatch per batch when the backend has native batch support or the runtime can issue parallel generation calls. Clamp invalid values to 1-8. Current user request overrides this value. |\n| `custom_styles` | array | [] | User-defined styles |\n\n## Position Options\n\n| Value | Description |\n|-------|-------------|\n| `bottom-right` | Lower right corner (default, most common) |\n| `bottom-left` | Lower left corner |\n| `bottom-center` | Bottom center |\n| `top-right` | Upper right corner |\n\n## Output Directory Options\n\n| Value | Description |\n|-------|-------------|\n| `same-dir` | Same directory as article |\n| `illustrations-subdir` | `{article-dir}/illustrations/` subdirectory |\n| `independent` | `illustrations/{topic-slug}/` in working directory |\n\n## Custom Style Fields\n\n| Field | Required | Description |\n|-------|----------|-------------|\n| `name` | Yes | Unique style identifier (kebab-case) |\n| `description` | Yes | What the style conveys |\n| `color_palette.primary` | No | Main colors (array) |\n| `color_palette.background` | No | Background color |\n| `color_palette.accents` | No | Accent colors (array) |\n| `visual_elements` | No | Decorative elements |\n| `typography` | No | Font/lettering style |\n| `best_for` | No | Recommended content types |\n\n## Example: Minimal Preferences\n\n```yaml\n---\nversion: 1\nwatermark:\n  enabled: true\n  content: \"@myusername\"\npreferred_style:\n  name: notion\n---\n```\n\n## Example: Full Preferences\n\n```yaml\n---\nversion: 1\nwatermark:\n  enabled: true\n  content: \"@myaccount\"\n  position: bottom-right\n\npreferred_style:\n  name: notion\n  description: \"Clean illustrations for tech articles\"\n\nlanguage: zh\n\npreferred_image_backend: codex-imagegen\n\ngeneration_batch_size: 4\n\ncustom_styles:\n  - name: corporate\n    description: \"Professional B2B style\"\n    color_palette:\n      primary: [\"#1E3A5F\", \"#4A90D9\"]\n      background: \"#F5F7FA\"\n      accents: [\"#00B4D8\", \"#48CAE4\"]\n    visual_elements: \"Clean lines, subtle gradients, geometric shapes\"\n    typography: \"Modern sans-serif, professional\"\n    best_for: \"Business, SaaS, enterprise\"\n---\n```\n\nFile v1.117.3:references/palettes/macaron.md\n\n# macaron\n\nSoft macaron pastel color blocks on warm cream\n\n## Background\n\n- Color: Warm Cream (#F5F0E8)\n- Texture: Subtle warm paper grain\n\n## Colors\n\n| Role | Color | Hex | Usage |\n|------|-------|-----|-------|\n| Background | Warm Cream | #F5F0E8 | Primary background |\n| Primary Text | Deep Charcoal | #2D2D2D | Headlines, main text, outlines |\n| Macaron Blue | Sky Blue | #A8D8EA | Info block fill, cool-toned zones |\n| Macaron Mint | Mint Green | #B5E5CF | Info block fill, growth/positive zones |\n| Macaron Lavender | Lavender | #D5C6E0 | Info block fill, abstract/concept zones |\n| Macaron Peach | Peach | #FFD5C2 | Info block fill, warm-toned zones |\n| Accent | Coral Red | #E8655A | Key data, warnings, emphasis |\n| Muted Text | Warm Gray | #6B6B6B | Secondary annotations, small labels |\n\n## Accent\n\nCoral Red (#E8655A) for key data, warnings, and emphasis highlights. Use sparingly — one or two elements per illustration.\n\n## Semantic Constraint\n\nSoft pastel macaron color palette. Use block colors as rounded card backgrounds for distinct information sections. Accent coral red sparingly for emphasis on key terms only. Do NOT render color names, hex codes, or role labels as visible text in the image.\n\n## Best For\n\nEducational content, knowledge sharing, concept explainers, tutorials, tech summaries, onboarding materials\n\nFile v1.117.3:references/palettes/mono-ink.md\n\n# mono-ink\n\nBlack ink on pure white with sparse semantic accent colors\n\n## Background\n\n- Color: Pure White (#FFFFFF)\n- Texture: Clean, no grain, no tint\n\n## Colors\n\n| Role | Color | Hex | Usage |\n|------|-------|-----|-------|\n| Background | Pure White | #FFFFFF | Canvas |\n| Primary | Near Black | #1A1A1A | All lines, text, figures, arrows |\n| Accent (risk/emphasis) | Coral Red | #E8655A | Risk, problem, gap, key emphasis |\n| Accent (positive) | Muted Teal | #5FA8A8 | Positive, solution, \"after\" state |\n| Accent (neutral tag) | Dusty Lavender | #9B8AB5 | Neutral tags, category labels |\n| Soft Fill | Pale Gray | #F0F0F0 | Subtle zone backgrounds (optional) |\n\n## Accent\n\nUse black ink for all structural elements — lines, text, figures. Accent colors appear only for semantic highlighting: coral red for risks/gaps/problems, muted teal for positive/solution/after-states, dusty lavender for neutral category tags. Total colored pixels must remain under 10% of canvas. Pale gray may back a subtle zone but must never dominate.\n\n## Semantic Constraint\n\nBlack ink on white canvas. Accent colors for semantic highlighting only — total colored pixels under 10% of canvas. Do NOT render color names, hex codes, or role labels as visible text in the image.\n\n## Compatible With\n\n- `ink-notes` (primary, default pairing)\n- `minimal` (strict monochrome variation, drops the style's built-in accent)\n- `sketch` (pencil + ink hybrid look)\n\n## Not Recommended With\n\n- `sketch-notes` — its \"no pure white backgrounds\" rule conflicts\n- `warm`, `elegant`, `watercolor`, `fantasy-animation` — color-heavy by design, mono-ink strips their identity\n\n## Best For\n\nProfessional visual notes, Before/After essays, tech manifestos, framework analogies, whiteboard-presentation explainers\n\nFile v1.117.3:references/palettes/neon.md\n\n# neon\n\nVibrant neon colors on dark backgrounds\n\n## Background\n\n- Color: Deep Purple (#2D1B4E)\n- Texture: Subtle grid pattern or solid dark\n\n## Colors\n\n| Role | Color | Hex | Usage |\n|------|-------|-----|-------|\n| Background | Deep Purple | #2D1B4E | Primary background |\n| Alt Background | Dark Teal | #0F4C5C | Alternative sections |\n| Primary | Hot Pink | #FF1493 | Main accent |\n| Secondary | Electric Cyan | #00FFFF | Supporting elements |\n| Tertiary | Neon Yellow | #FFFF00 | Highlights |\n| Accent 1 | Lime Green | #32CD32 | Energy, success |\n| Accent 2 | Orange | #FF6B35 | Warmth |\n| Text | White | #FFFFFF | Text elements |\n\n## Accent\n\nHot Pink (#FF1493) for primary emphasis. High contrast neon-on-dark creates immediate visual impact.\n\n## Semantic Constraint\n\nVibrant neon-on-dark palette. High contrast, immediate visual impact. Do NOT render color names, hex codes, or role labels as visible text in the image.\n\n## Best For\n\nGaming, retro tech, 80s/90s nostalgic content, bold editorial, trend and pop culture\n\nFile v1.117.3:references/palettes/warm.md\n\n# warm\n\nWarm earth tones on soft peach, no cool colors\n\n## Background\n\n- Color: Soft Peach (#FFECD2)\n- Texture: Warm paper texture\n\n## Colors\n\n| Role | Color | Hex | Usage |\n|------|-------|-----|-------|\n| Background | Soft Peach | #FFECD2 | Primary background |\n| Outlines | Deep Charcoal | #2D2D2D | All element outlines |\n| Primary | Warm Orange | #ED8936 | Main accent color |\n| Secondary | Terracotta | #C05621 | Warm depth |\n| Tertiary | Golden Yellow | #F6AD55 | Highlights, energy |\n| Accent | Deep Brown | #744210 | Grounding, anchoring |\n| Text | Warm Charcoal | #4A4A4A | Text elements |\n\n## Accent\n\nWarm Orange (#ED8936) for primary emphasis. Warm-only palette — no cool colors (no green, blue, purple). Modern-retro feel.\n\n## Semantic Constraint\n\nWarm earth tone palette. Warm-only — no cool colors (no green, blue, purple). Do NOT render color names, hex codes, or role labels as visible text in the image.\n\n## Best For\n\nProduct showcases, team introductions, feature grids, brand content, personal growth, lifestyle\n\nFile v1.117.3:references/prompt-construction.md\n\n# Prompt Construction\n\n## Prompt File Format\n\nEach prompt file uses YAML frontmatter + content:\n\n```yaml\n---\nillustration_id: 01\ntype: infographic\nstyle: blueprint\nreferences:                    # ⚠️ ONLY if files EXIST in references/ directory\n  - ref_id: 01\n    filename: 01-ref-diagram.png\n    usage: direct              # direct | style | palette\n---\n\n[Type-specific template content below...]\n```\n\n**⚠️ CRITICAL - When to include `references` field**:\n\n| Situation | Action |\n|-----------|--------|\n| Reference file saved to `references/` | Include in frontmatter ✓ |\n| Style extracted verbally (no file) | DO NOT include in frontmatter, append to prompt body instead |\n| File path in frontmatter but file doesn't exist | ERROR - remove references field |\n\n**Reference Usage Types** (only when file exists):\n\n| Usage | Description | Generation Action |\n|-------|-------------|-------------------|\n| `direct` | Primary visual reference | Pass to `--ref` parameter |\n| `style` | Style characteristics only | Describe style in prompt text |\n| `palette` | Color palette extraction | Include colors in prompt |\n\n**If no reference file but style/palette extracted verbally**, append directly to prompt body:\n```\nCOLORS (from reference):\n- Primary: #E8756D coral\n- Secondary: #7ECFC0 mint\n...\n\nSTYLE (from reference):\n- Clean lines, minimal shadows\n- Gradient backgrounds\n...\n```\n\n---\n\n## Default Composition Requirements\n\n**Apply to ALL prompts by default**:\n\n| Requirement | Description |\n|-------------|-------------|\n| **Clean composition** | Simple layouts, no visual clutter |\n| **White space** | Generous margins, breathing room around elements |\n| **No complex backgrounds** | Solid colors or subtle gradients only, avoid busy textures |\n| **Centered or content-appropriate** | Main visual elements centered or positioned by content needs |\n| **Matching graphics** | Use graphic elements that align with content theme |\n| **Highlight core info** | White space draws attention to key information |\n\n**Add to ALL prompts**:\n> Clean composition with generous white space. Simple or no background. Main elements centered or positioned by content needs.\n\n---\n\n## Color Specification Rules\n\nColors in prompts use hex codes for **rendering guidance only** — they tell the model which colors to use, NOT what text to display.\n\n**⚠️ CRITICAL**: Image generation models sometimes render color names and hex values as visible text labels in the image (e.g., painting \"Macaron Blue #A8D8EA\" as a label). This must be prevented.\n\n**Add to ALL prompts that contain a COLORS section**:\n> Color values (#hex) and color names are rendering guidance only — do NOT display color names, hex codes, or palette labels as visible text in the image.\n\n---\n\n## Character Rendering\n\nWhen depicting people:\n\n| Guideline | Description |\n|-----------|-------------|\n| **Style** | Simplified cartoon silhouettes or symbolic expressions |\n| **Avoid** | Realistic human portrayals, detailed faces |\n| **Diversity** | Varied body types when showing multiple people |\n| **Emotion** | Express through posture and simple gestures |\n\n**Add to ALL prompts with human figures**:\n> Human figures: simplified stylized silhouettes or symbolic representations, not photorealistic.\n\n---\n\n## Text in Illustrations\n\n| Element | Guideline |\n|---------|-----------|\n| **Size** | Large, prominent, immediately readable |\n| **Style** | Handwritten fonts preferred for warmth |\n| **Content** | Concise keywords and core concepts only |\n| **Language** | Match article language |\n\n**Add to prompts with text**:\n> Text should be large and prominent with handwritten-style fonts. Keep minimal, focus on keywords.\n\n---\n\n## Principles\n\nGood prompts must include:\n\n1. **Layout Structure First**: Describe composition, zones, flow direction\n2. **Specific Data/Labels**: Use actual numbers, terms from article\n3. **Visual Relationships**: How elements connect\n4. **Semantic Colors**: Meaning-based color choices (red=warning, green=efficient)\n5. **Style Characteristics**: Line treatment, texture, mood\n6. **Aspect Ratio**: End with ratio and complexity level\n\n## Type-Specific Templates\n\n### Infographic\n\n```\n[Title] - Data Visualization\n\nLayout: [grid/radial/hierarchical]\n\nZONES:\n- Zone 1: [data point with specific values]\n- Zone 2: [comparison with metrics]\n- Zone 3: [summary/conclusion]\n\nLABELS: [specific numbers, percentages, terms from article]\nCOLORS: [semantic color mapping]\nSTYLE: [style characteristics]\nASPECT: 16:9\n```\n\n**Infographic + sketch-notes + macaron palette** (default / `hand-drawn-edu` preset):\n```\nSingle-page hand-drawn educational infographic in a clean presentation style.\nWarm cream paper background, black hand-drawn lines with slight wobble, soft\npastel color blocks. Feels simple, friendly, and easy to understand at a glance.\nDiagram-style visuals ONLY — no realistic or photographic images.\n\nPALETTE: macaron — soft pastel blocks on warm cream\nCOLORS: Warm Cream background (#F5F0E8); Black (#1A1A1A) for ALL lines, text,\n        arrows, and doodles; section fills in Light Blue (#A8D8EA), Mint Green\n        (#B5E5CF), Lavender (#D5C6E0), Peach (#FFD5C2); Coral Red (#E8655A)\n        sparingly for one or two emphasis points only.\n\nLAYOUT (top → bottom):\n- TOP: Bold hand-lettered title, oversized, slightly wobbly, with an optional\n       decorative underline or small doodle.\n- MIDDLE: 2–6 rounded-rectangle info boxes arranged in a clean grid, row, or\n          radial pattern. Each box = one section, one pastel fill color, one\n          simple icon or sketchy cartoon element, one short keyword/phrase.\n          Hand-drawn arrows connect related zones.\n- BOTTOM: One short hand-lettered takeaway sentence summarizing the main idea.\n\nELEMENTS: Rounded info boxes with clear sectioning, wavy/straight hand-drawn\n          arrows with small inline labels, simple icons and sketchy cartoon\n          elements (stick figures, tools, objects), small doodle decorations\n          (stars, sparkles, underlines, dots, asterisks) used sparingly.\n\nSTYLE: Minimal, well-organized, airy. Color fills don't completely fill\n       outlines (slight \"hand-painted\" overshoot). ALL text hand-lettered —\n       no computer fonts. Short labels and keywords only, never long\n       paragraphs. Generous white space between sections.\n```\n\n**Infographic + vector-illustration**:\n```\nFlat vector illustration infographic. Clean black outlines on all elements.\nCOLORS: Cream background (#F5F0E6), Coral Red (#E07A5F), Mint Green (#81B29A), Mustard Yellow (#F2CC8F)\nELEMENTS: Geometric simplified icons, no gradients, playful decorative elements (dots, stars)\n```\n\n**Infographic + vector-illustration + warm palette**:\n```\nFlat vector illustration infographic. Clean black outlines on all elements.\nPALETTE OVERRIDE (warm): Warm-only color palette, no cool colors.\nCOLORS: Soft Peach background (#FFECD2), Warm Orange (#ED8936),\n        Terracotta (#C05621), Golden Yellow (#F6AD55), Deep Brown (#744210)\nELEMENTS: Geometric simplified icons, no gradients, rounded corners,\n          modular card layout, consistent icon style\n```\n\n### Scene\n\n```\n[Title] - Atmospheric Scene\n\nFOCAL POINT: [main subject]\nATMOSPHERE: [lighting, mood, environment]\nMOOD: [emotion to convey]\nCOLOR TEMPERATURE: [warm/cool/neutral]\nSTYLE: [style characteristics]\nASPECT: 16:9\n```\n\n### Flowchart\n\n```\n[Title] - Process Flow\n\nLayout: [left-right/top-down/circular]\n\nSTEPS:\n1. [Step name] - [brief description]\n2. [Step name] - [brief description]\n...\n\nCONNECTIONS: [arrow types, decision points]\nSTYLE: [style characteristics]\nASPECT: 16:9\n```\n\n**Flowchart + vector-illustration**:\n```\nFlat vector flowchart with bold arrows and geometric step containers.\nCOLORS: Cream background (#F5F0E6), steps in Coral/Mint/Mustard, black outlines\nELEMENTS: Rounded rectangles, thick arrows, simple icons per step\n```\n\n**Flowchart + sketch-notes + macaron palette**:\n```\nHand-drawn educational flowchart on warm cream paper. Slight wobble on all lines.\nPALETTE: macaron — soft pastel color blocks\nCOLORS: Warm Cream background (#F5F0E8), zone fills in Macaron Blue (#A8D8EA),\n        Lavender (#D5C6E0), Mint (#B5E5CF), Coral Red (#E8655A) for emphasis\nELEMENTS: Rounded cards with dashed/solid borders, wavy hand-drawn arrows with labels,\n          simple stick-figure characters, doodle decorations (stars, underlines)\nSTYLE: Color fills don't completely fill outlines, hand-drawn lettering, generous white space\n```\n\n**Flowchart + ink-notes + mono-ink palette**:\n```\nProfessional hand-drawn visual-note flowchart on pure white. Black ink line work\nwith slight wobble, à la Mike Rohde sketchnoting.\nPALETTE: mono-ink — black ink dominant, sparse semantic accents\nCOLORS: Pure White background (#FFFFFF), Near Black (#1A1A1A) for all lines,\n        text, and figures; Coral Red (#E8655A) only for risk/emphasis,\n        Muted Teal (#5FA8A8) only for positive/solution states\nELEMENTS: Left-to-right stage boxes with rounded-rect frames, wavy hand-drawn\n          arrows between stages, simple stick-figure characters with role\n          labels above (e.g., \"ML Engineer\", \"Team Lead\"), dashed-border box\n          for future/empty stage, small doodle icons per stage\nSTYLE: Hand-lettered titles (bold, oversized), handwritten stage labels and\n        annotations, generous white space, bottom tagline summarizing takeaway\n```\n\n### Comparison\n\n```\n[Title] - Comparison View\n\nLEFT SIDE - [Option A]:\n- [Point 1]\n- [Point 2]\n\nRIGHT SIDE - [Option B]:\n- [Point 1]\n- [Point 2]\n\nDIVIDER: [visual separator]\nSTYLE: [style characteristics]\nASPECT: 16:9\n```\n\n**Comparison + vector-illustration**:\n```\nFlat vector comparison with split layout. Clear visual separation.\nCOLORS: Left side Coral (#E07A5F), Right side Mint (#81B29A), cream background\nELEMENTS: Bold icons, black outlines, centered divider line\n```\n\n**Comparison + vector-illustration + warm palette**:\n```\nFlat vector comparison with split layout. Clear visual separation.\nPALETTE OVERRIDE (warm): Warm-only color palette, no cool colors.\nCOLORS: Left side Warm Orange (#ED8936), Right side Terracotta (#C05621),\n        Soft Peach background (#FFECD2), Deep Brown (#744210) accents\nELEMENTS: Bold icons, black outlines, centered divider line\n```\n\n**Comparison + ink-notes + mono-ink palette** (Before/After, Traditional vs New):\n```\nProfessional hand-drawn sketchnote comparison on pure white. Black ink line work\nwith slight wobble, à la Mike Rohde sketchnoting.\nPALETTE: mono-ink — black ink dominant, sparse semantic accents\nCOLORS: Pure White background (#FFFFFF), Near Black (#1A1A1A) for all outlines,\n        text, figures, arrows; Coral Red (#E8655A) reserved for risks/gaps\n        (left/Before side); Muted Teal (#5FA8A8) reserved for positives\n        (right/After side). Color accents under 10% of canvas.\nLAYOUT: Left | Right split with vertical hand-drawn divider. Hand-lettered\n        \"Before\" label (top-left) and \"After\" label (top-right).\nLEFT SIDE: Stick figure(s) with role label above, speech bubble showing the\n           pain point, bulleted pain-point list in handwritten text.\nRIGHT SIDE: Stick figure(s) showing the new state, bulleted improvement list,\n            small positive-action icons.\nBRIDGE: Curved hand-drawn \"mindset shift\" arrow bridging left → right with\n        small inline label describing the shift.\nBOTTOM: Single-line hand-lettered tagline summarizing the takeaway.\nSTYLE: Hand-lettered headings (bold, oversized), handwritten body annotations,\n        generous white space, no computer fonts, no gradients, no shadows.\n```\n\n### Framework\n\n```\n[Title] - Conceptual Framework\n\nSTRUCTURE: [hierarchical/network/matrix]\n\nNODES:\n- [Concept 1] - [role]\n- [Concept 2] - [role]\n\nRELATIONSHIPS: [how nodes connect]\nSTYLE: [style characteristics]\nASPECT: 16:9\n```\n\n**Framework + vector-illustration**:\n```\nFlat vector framework diagram with geometric nodes and bold connectors.\nCOLORS: Cream background (#F5F0E6), nodes in Coral/Mint/Mustard/Blue, black outlines\nELEMENTS: Rounded rectangles or circles for nodes, thick connecting lines\n```\n\n**Framework + vector-illustration + warm palette**:\n```\nFlat vector framework diagram with geometric nodes and bold connectors.\nPALETTE OVERRIDE (warm): Warm-only color palette, no cool colors.\nCOLORS: Soft Peach background (#FFECD2), nodes in Warm Orange (#ED8936),\n        Terracotta (#C05621), Golden Yellow (#F6AD55), black outlines\nELEMENTS: Rounded rectangles or circles for nodes, thick connecting lines\n```\n\n**Framework + ink-notes + mono-ink palette** (command center, OS analogy):\n```\nProfessional hand-drawn sketchnote framework on pure white. Black ink line work\nwith slight wobble, à la Mike Rohde sketchnoting.\nPALETTE: mono-ink — black ink dominant, sparse semantic accents\nCOLORS: Pure White background (#FFFFFF), Near Black (#1A1A1A) for all lines,\n        text, figures; Dusty Lavender (#9B8AB5) for neutral category tags only;\n        Coral Red (#E8655A) for emphasis sparingly. Color accents under 10%.\nSTRUCTURE: Central rounded-rectangle frame as \"the system\" with hand-lettered\n           title inside. Inner layer of labeled sub-components (node labels\n           above each). Outer layer of feeder arrows from stick-figure\n           operators/users with role labels.\nELEMENTS: Stick figures at the edges with role tags (\"Team Lead\", \"Operator\"),\n          wavy hand-drawn connector arrows with small inline labels, small\n          doodle icons per component, dashed-border placeholder(s) for\n          future/empty capabilities.\nBOTTOM: Single-line hand-lettered tagline.\nSTYLE: Hand-lettered headings, handwritten annotations, generous white space,\n        no computer fonts, no gradients.\n```\n\n### Timeline\n\n```\n[Title] - Chronological View\n\nDIRECTION: [horizontal/vertical]\n\nEVENTS:\n- [Date/Period 1]: [milestone]\n- [Date/Period 2]: [milestone]\n\nMARKERS: [visual indicators]\nSTYLE: [style characteristics]\nASPECT: 16:9\n```\n\n### Screen-Print Style Override\n\nWhen `style: screen-print`, replace standard style instructions with:\n\n```\nScreen print / silkscreen poster art. Flat color blocks, NO gradients.\nCOLORS: 2-5 colors maximum. [Choose from style palette or duotone pair]\nTEXTURE: Halftone dot patterns, slight color layer misregistration, paper grain\nCOMPOSITION: Bold silhouettes, geometric framing, negative space as storytelling element\nFIGURES: Silhouettes only, no detailed faces, stencil-cut edges\nTYPOGRAPHY: Bold condensed sans-serif integrated into composition (not overlaid)\n```\n\n**Scene + screen-print**:\n```\nConceptual poster scene. Single symbolic focal point, NOT literal illustration.\nCOLORS: Duotone pair (e.g., Burnt Orange #E8751A + Deep Teal #0A6E6E) on Off-Black #121212\nCOMPOSITION: Centered silhouette or geometric frame, 60%+ negative space\nTEXTURE: Halftone dots, paper grain, slight print misregistration\n```\n\n**Comparison + screen-print**:\n```\nSplit poster composition. Each side dominated by one color from duotone pair.\nLEFT: [Color A] side with silhouette/icon for [Option A]\nRIGHT: [Color B] side with silhouette/icon for [Option B]\nDIVIDER: Geometric shape or negative space boundary\nTEXTURE: Halftone transitions between sides\n```\n\n---\n\n## Palette Override\n\nWhen a palette is specified (via `--palette` or preset), it overrides the style's default colors:\n\n1. Read style file → get rendering rules (Visual Elements, Style Rules, line treatment)\n2. Read palette file (`palettes/<palette>.md`) → get Colors + Background\n3. Palette Colors **replace** style's default Color Palette in prompt\n4. Palette Background **replaces** style's Background color (keep style's texture description)\n5. Build prompt: style rendering instructions + palette colors\n\n**Prompt frontmatter** includes palette when specified:\n```yaml\n---\nillustration_id: 01\ntype: infographic\nstyle: vector-illustration\npalette: macaron\n---\n```\n\n**Example**: `vector-illustration` + `macaron` palette:\n```\nFlat vector illustration infographic. Clean black outlines on all elements.\nPALETTE: macaron — soft pastel color blocks\nCOLORS: Warm Cream background (#F5F0E8), Macaron Blue (#A8D8EA), Mint (#B5E5CF),\n        Lavender (#D5C6E0), Peach (#FFD5C2), Coral Red (#E8655A) for emphasis\nELEMENTS: Geometric simplified icons, no gradients, playful decorative elements\n```\n\nWhen no palette is specified, use the style's built-in Color Palette as before.\n\n---\n\n## What to Avoid\n\n- Vague descriptions (\"a nice image\")\n- Literal metaphor illustrations\n- Missing concrete labels/annotations\n- Generic decorative elements\n\n## Watermark Integration\n\nIf watermark enabled in preferences, append:\n\n```\nInclude a subtle watermark \"[content]\" positioned at [position].\n```\n\nFile v1.117.3:references/style-presets.md\n\n# Style Presets\n\n`--preset X` expands to a type + style + optional palette combination. Users can override any dimension.\n\n## Default Preset\n\nWhen content analysis surfaces no strong signal (generic knowledge article, mixed-topic post, no clear data/comparison/narrative cue), recommend **`hand-drawn-edu`** as the primary option in Step 3 Q1. It is the warm, friendly educational-infographic default — safe for most articles and universally readable.\n\n## By Category\n\n### Technical & Engineering\n\n| --preset | Type | Style | Palette | Best For |\n|----------|------|-------|---------|----------|\n| `tech-explainer` | `infographic` | `blueprint` | — | API docs, system metrics, technical deep-dives |\n| `system-design` | `framework` | `blueprint` | — | Architecture diagrams, system design |\n| `architecture` | `framework` | `vector-illustration` | — | Component relationships, module structure |\n| `science-paper` | `infographic` | `scientific` | — | Research findings, lab results, academic |\n\n### Knowledge & Education\n\n| --preset | Type | Style | Palette | Best For |\n|----------|------|-------|---------|----------|\n| `knowledge-base` | `infographic` | `vector-illustration` | — | Concept explainers, tutorials, how-to |\n| `saas-guide` | `infographic` | `notion` | — | Product guides, SaaS docs, tool walkthroughs |\n| `tutorial` | `flowchart` | `vector-illustration` | — | Step-by-step tutorials, setup guides |\n| `process-flow` | `flowchart` | `notion` | — | Workflow documentation, onboarding flows |\n| `warm-knowledge` | `infographic` | `vector-illustration` | `warm` | Product showcases, team intros, feature cards, brand content |\n| `edu-visual` | `infographic` | `vector-illustration` | `macaron` | Knowledge summaries, concept explainers, educational articles |\n| `hand-drawn-edu` | `infographic` | `sketch-notes` | `macaron` | **Default preset.** Hand-drawn educational infographic — warm cream paper, black lines, pastel blocks. Great for single-page explainers, concept summaries, onboarding, general knowledge articles |\n| `hand-drawn-edu-flow` | `flowchart` | `sketch-notes` | `macaron` | Hand-drawn process explainer — step-by-step workflow in the same warm educational style |\n| `hand-drawn-edu-compare` | `comparison` | `sketch-notes` | `macaron` | Hand-drawn side-by-side comparison in the warm educational style |\n| `ink-notes-compare` | `comparison` | `ink-notes` | `mono-ink` | Before/After essays, Traditional vs New, OS-style comparisons, mindset-shift narratives |\n| `ink-notes-flow` | `flowchart` | `ink-notes` | `mono-ink` | Professional process explainers, workforce pipelines, hand-drawn technical walkthroughs |\n| `ink-notes-framework` | `framework` | `ink-notes` | `mono-ink` | System analogies, command-center diagrams, architecture-as-metaphor, tech manifestos |\n\n### Data & Analysis\n\n| --preset | Type | Style | Palette | Best For |\n|----------|------|-------|---------|----------|\n| `data-report` | `infographic` | `editorial` | — | Data journalism, metrics reports, dashboards |\n| `versus` | `comparison` | `vector-illustration` | — | Tech comparisons, framework shootouts |\n| `business-compare` | `comparison` | `elegant` | — | Product evaluations, strategy options |\n\n### Narrative & Creative\n\n| --preset | Type | Style | Palette | Best For |\n|----------|------|-------|---------|----------|\n| `storytelling` | `scene` | `warm` | — | Personal essays, reflections, growth stories |\n| `lifestyle` | `scene` | `watercolor` | — | Travel, wellness, lifestyle, creative |\n| `history` | `timeline` | `elegant` | — | Historical overviews, milestones |\n| `evolution` | `timeline` | `warm` | — | Progress narratives, growth journeys |\n\n### Editorial & Opinion\n\n| --preset | Type | Style | Palette | Best For |\n|----------|------|-------|---------|----------|\n| `opinion-piece` | `scene` | `screen-print` | — | Op-eds, commentary, critical essays |\n| `editorial-poster` | `comparison` | `screen-print` | — | Debate, contrasting viewpoints |\n| `cinematic` | `scene` | `screen-print` | — | Dramatic narratives, cultural essays |\n\n## Content Type → Preset Recommendations\n\nUse this table during Step 3 to recommend presets based on Step 2 content analysis:\n\n| Content Type (Step 2) | Primary Preset | Alternatives |\n|------------------------|----------------|--------------|\n| **General / No strong signal** | `hand-drawn-edu` | `edu-visual`, `knowledge-base` |\n| Education / Knowledge | `hand-drawn-edu` | `edu-visual`, `knowledge-base`, `tutorial` |\n| Tutorial | `hand-drawn-edu-flow` | `tutorial`, `process-flow`, `hand-drawn-edu` |\n| SaaS / Product | `hand-drawn-edu` | `saas-guide`, `knowledge-base`, `process-flow`, `warm-knowledge` |\n| Technical | `tech-explainer` | `system-design`, `architecture`, `hand-drawn-edu` |\n| Methodology / Framework | `system-design` | `architecture`, `process-flow` |\n| Data / Metrics | `data-report` | `versus`, `tech-explainer` |\n| Comparison / Review | `versus` | `business-compare`, `hand-drawn-edu-compare`, `editorial-poster`, `ink-notes-compare` |\n| Manifesto / Mindset shift / Professional visual note | `ink-notes-compare` | `ink-notes-framework`, `ink-notes-flow` |\n| Narrative / Personal | `storytelling` | `lifestyle`, `evolution` |\n| Opinion / Editorial | `opinion-piece` | `cinematic`, `editorial-poster` |\n| Historical / Timeline | `history` | `evolution` |\n| Academic / Research | `science-paper` | `tech-explainer`, `data-report` |\n\n## Override Examples\n\n- `--preset tech-explainer --style notion` = infographic type with notion style\n- `--preset storytelling --type timeline` = timeline type with warm style\n\nExplicit `--type`/`--style` flags always override preset values.\n\nFile v1.117.3:references/styles.md\n\n# Style Reference\n\n## Core Styles\n\nSimplified style tier for quick selection:\n\n| Core Style | Maps To | Best For |\n|------------|---------|----------|\n| `hand-drawn` | sketch-notes | **Default.** Warm cream paper, black hand-drawn lines, pastel blocks — educational infographics, concept explainers, onboarding, general knowledge articles |\n| `vector` | vector-illustration | Knowledge articles, tutorials, tech content |\n| `minimal-flat` | notion | General, knowledge sharing, SaaS |\n| `sci-fi` | blueprint | AI, frontier tech, system design |\n| `editorial` | editorial | Processes, data, journalism |\n| `scene` | warm/watercolor | Narratives, emotional, lifestyle |\n| `poster` | screen-print | Opinion, editorial, cultural, cinematic |\n\nUse Core Styles for most cases. **When no strong content signal is detected, default to `hand-drawn` (→ sketch-notes).** See full Style Gallery below for granular control.\n\n---\n\n## Style Gallery\n\n| Style | Description | Best For |\n|-------|-------------|----------|\n| `vector-illustration` | Clean flat vector art with bold shapes | Knowledge articles, tutorials, tech content |\n| `notion` | Minimalist hand-drawn line art | Knowledge sharing, SaaS, productivity |\n| `elegant` | Refined, sophisticated | Business, thought leadership |\n| `warm` | Friendly, approachable | Personal growth, lifestyle, education |\n| `minimal` | Ultra-clean, zen-like | Philosophy, minimalism, core concepts |\n| `blueprint` | Technical schematics | Architecture, system design, engineering |\n| `watercolor` | Soft artistic with natural warmth | Lifestyle, travel, creative |\n| `editorial` | Magazine-style infographic | Tech explainers, journalism |\n| `scientific` | Academic precise diagrams | Biology, chemistry, technical research |\n| `chalkboard` | Classroom chalk drawing style | Education, teaching, explanations |\n| `fantasy-animation` | Ghibli/Disney-inspired hand-drawn | Storybook, magical, emotional |\n| `flat` | Modern bold geometric shapes | Modern digital, contemporary |\n| `flat-doodle` | Cute flat with bold outlines | Cute, friendly, approachable |\n| `intuition-machine` | Technical briefing with aged paper | Technical briefings, academic |\n| `nature` | Organic earthy illustration | Environmental, wellness |\n| `pixel-art` | Retro 8-bit gaming aesthetic | Gaming, retro tech |\n| `playful` | Whimsical pastel doodles | Fun, casual, educational |\n| `retro` | 80s/90s neon geometric | 80s/90s nostalgic, bold |\n| `sketch` | Raw pencil notebook style | Brainstorming, creative exploration |\n| `screen-print` | Bold poster art, halftone textures, limited colors | Opinion, editorial, cultural, cinematic |\n| `sketch-notes` | Soft hand-drawn warm notes | Educational, warm notes |\n| `ink-notes` | Black ink on pure white, sparse semantic accents, hand-lettered (à la Mike Rohde's sketchnoting) | Before/After essays, tech manifestos, framework analogies |\n| `vintage` | Aged parchment historical | Historical, heritage |\n\nFull specifications: `references/styles/<style>.md`\n\n## Type × Style Compatibility Matrix\n\n| | sketch-notes | vector-illustration | notion | warm | minimal | blueprint | watercolor | elegant | editorial | scientific | screen-print |\n|---|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|\n| infographic | ✓✓ | ✓✓ | ✓✓ | ✓ | ✓✓ | ✓✓ | ✓ | ✓✓ | ✓✓ | ✓✓ | ✓ |\n| scene | ✗ | ✓ | ✓ | ✓✓ | ✓ | ✗ | ✓✓ | ✓ | ✓ | ✗ | ✓✓ |\n| flowchart | ✓✓ | ✓✓ | ✓✓ | ✓ | ✓ | ✓✓ | ✗ | ✓ | ✓✓ | ✓ | ✗ |\n| comparison | ✓✓ | ✓✓ | ✓✓ | ✓ | ✓✓ | ✓ | ✓ | ✓✓ | ✓✓ | ✓ | ✓ |\n| framework | ✓✓ | ✓✓ | ✓✓ | ✓ | ✓✓ | ✓✓ | ✗ | ✓✓ | ✓ | ✓✓ | ✓ |\n| timeline | ✓ | ✓ | ✓✓ | ✓ | ✓ | ✓ | ✓✓ | ✓✓ | ✓✓ | ✓ | ✓ |\n\n✓✓ = highly recommended | ✓ = compatible | ✗ = not recommended\n\n## Auto Selection by Type\n\nWhen no content signal matches strongly, `sketch-notes` is the default primary for every diagrammatic type. Only override with another primary when the content analysis in Step 2 surfaces a clear signal (technical/data/narrative/opinion).\n\n| Type | Primary Style | Secondary Styles |\n|------|---------------|------------------|\n| infographic | sketch-notes | vector-illustration, notion, blueprint, editorial |\n| scene | warm | watercolor, elegant |\n| flowchart | sketch-notes | vector-illustration, notion, blueprint |\n| comparison | sketch-notes | vector-illustration, notion, elegant |\n| framework | sketch-notes | blueprint, vector-illustration, notion |\n| timeline | elegant | sketch-notes, warm, editorial |\n\n## Auto Selection by Content Signals\n\n| Content Signals | Recommended Type | Recommended Style |\n|-----------------|------------------|-------------------|\n| **(no strong signal / general article)** | **infographic** | **sketch-notes** |\n| Knowledge, concept, tutorial, learning, guide, onboarding | infographic | sketch-notes, vector-illustration, notion |\n| Productivity, SaaS, tool, app, software | infographic | sketch-notes, notion, vector-illustration |\n| How-to, steps, workflow, process, tutorial | flowchart | sketch-notes, vector-illustration, notion |\n| API, metrics, data, comparison, numbers | infographic | blueprint, vector-illustration |\n| Tech, AI, programming, development, code | infographic | vector-illustration, blueprint, sketch-notes |\n| Framework, model, architecture, principles | framework | blueprint, vector-illustration, sketch-notes |\n| vs, pros/cons, before/after, alternatives | comparison | vector-illustration, notion, sketch-notes |\n| Manifesto, mindset shift, workforce, OS, whiteboard, professional visual note | comparison / framework | ink-notes |\n| Story, emotion, journey, experience, personal | scene | warm, watercolor |\n| History, timeline, progress, evolution | timeline | elegant, warm |\n| Business, professional, strategy, corporate | framework | elegant |\n| Opinion, editorial, culture, philosophy, cinematic, dramatic, poster | scene | screen-print |\n| Biology, chemistry, medical, scientific | infographic | scientific |\n| Explainer, journalism, magazine, investigation | infographic | editorial |\n\n## Style Characteristics by Type\n\n### infographic + sketch-notes (default)\n- Warm cream paper background, black hand-drawn lines with slight wobble\n- 2–6 rounded pastel info boxes (light blue / mint / lavender / peach)\n- Bold hand-lettered title at the top\n- Short keyword labels, simple icons, small doodles (stars, underlines, sparkles)\n- One-line hand-lettered takeaway sentence at the bottom\n- Airy, minimal, diagram-style — never realistic\n- Perfect for single-page educational explainers and concept summaries\n\n### infographic + vector-illustration\n- Clean flat vector shapes, bold geometric forms\n- Vibrant but harmonious color palette\n- Clear visual hierarchy with icons and labels\n- Modern, professional, highly readable\n- Perfect for knowledge articles and tutorials\n\n### flowchart + vector-illustration\n- Bold arrows and connectors\n- Distinct step containers with icons\n- Clean progression flow\n- High contrast for readability\n\n### comparison + vector-illustration\n- Split layout with clear visual separation\n- Bold iconography for each side\n- Color-coded distinctions\n- Easy at-a-glance comparison\n\n### framework + vector-illustration\n- Geometric node representations\n- Clear hierarchical structure\n- Bold connecting lines\n- Modern system diagram aesthetic\n\n### infographic + blueprint\n- Technical precision, schematic lines\n- Grid-based layout, clear zones\n- Monospace labels, data-focused\n- Blue/white color scheme\n\n### infographic + notion\n- Hand-drawn feel, approachable\n- Soft icons, rounded elements\n- Neutral palette, clean backgrounds\n- Perfect for SaaS/productivity\n\n### scene + warm\n- Golden hour lighting, cozy atmosphere\n- Soft gradients, natural textures\n- Inviting, personal feeling\n- Great for storytelling\n\n### scene + watercolor\n- Artistic, painterly effect\n- Soft edges, color bleeding\n- Dreamy, creative mood\n- Best for lifestyle/travel\n\n### flowchart + notion\n- Clear step indicators\n- Simple arrow connections\n- Minimal decoration\n- Focus on process clarity\n\n### flowchart + blueprint\n- Technical precision\n- Detailed connection points\n- Engineering aesthetic\n- For complex systems\n\n### comparison + elegant\n- Refined dividers\n- Balanced typography\n- Professional appearance\n- Business comparisons\n\n### framework + blueprint\n- Precise node connections\n- Hierarchical clarity\n- System architecture feel\n- Technical frameworks\n\n### timeline + elegant\n- Sophisticated markers\n- Refined typography\n- Historical gravitas\n- Professional presentations\n\n### timeline + warm\n- Friendly progression\n- Organic flow\n- Personal journey feel\n- Growth narratives\n\n### scene + screen-print\n- Bold silhouettes, symbolic compositions\n- 2-5 flat colors with halftone textures\n- Figure-ground inversion (negative space tells secondary story)\n- Vintage poster aesthetic, conceptual not literal\n- Great for opinion pieces and cultural commentary\n\n### comparison + screen-print\n- Split duotone composition (one color per side)\n- Bold geometric dividers\n- Symbolic icons over detailed rendering\n- High contrast, immediate visual impact\n\n### framework + screen-print\n- Geometric node representations with stencil-cut edges\n- Limited color coding (one color per concept level)\n- Clean silhouette-based iconography\n- Poster-style hierarchy with bold typography\n\n---\n\n## Palette Gallery\n\nPalettes override a style's default colors. Combine any style with any palette: `--style vector-illustration --palette macaron`.\n\n| Palette | Description | Best For |\n|---------|-------------|----------|\n| `macaron` | Soft pastel blocks (blue, mint, lavender, peach) on warm cream | Educational, knowledge, tutorials |\n| `warm` | Warm earth tones (orange, terracotta, gold) on soft peach, no cool colors | Brand, product, lifestyle |\n| `neon` | Vibrant neon (pink, cyan, yellow) on dark purple | Gaming, retro, pop culture |\n| `mono-ink` | Black ink on pure white with sparse semantic accents (coral red, muted teal, dusty lavender) | Professional visual notes, Before/After, manifestos |\n\nFull specifications: `references/palettes/<palette>.md`\n\nWhen no palette is specified, the style's built-in Color Palette is used.\n\n## Palette Override Rules\n\n1. Read style file → rendering rules (Visual Elements, Style Rules)\n2. Read palette file → Colors + Background\n3. Palette colors **replace** style's default Color Palette\n4. Palette Background **replaces** style's default Background color\n5. Style's texture description is preserved\n\nFile v1.117.3:references/styles/blueprint.md\n\n# blueprint\n\nPrecise technical blueprint style with engineering precision\n\n## Design Aesthetic\n\nClean, structured visual metaphors using blueprints, diagrams, and schematics. Precise, analytical and aesthetically refined. Information presented in grid-based layouts with engineering precision. Technical drawing quality with professional polish.\n\n## Background\n\n- Color: Blueprint Off-White (#FAF8F5)\n- Texture: Subtle grid overlay, engineering paper feel\n\n## Color Palette\n\n| Role | Color | Hex | Usage |\n|------|-------|-----|-------|\n| Background | Blueprint Paper | #FAF8F5 | Primary background |\n| Grid | Light Gray | #E5E5E5 | Background grid lines |\n| Primary Text | Deep Slate | #334155 | Headlines, body |\n| Primary Accent | Engineering Blue | #2563EB | Key elements |\n| Secondary Accent | Navy Blue | #1E3A5F | Supporting elements |\n| Tertiary | Light Blue | #BFDBFE | Fills, backgrounds |\n| Warning | Amber | #F59E0B | Warnings, emphasis |\n\n## Visual Elements\n\n- Precise lines with consistent stroke weights\n- Technical schematics and clean vector graphics\n- Thin line work in technical drawing style\n- Connection lines: straight or 90-degree angles only\n- Data visualization with minimal charts\n- Dimension lines and measurement indicators\n- Cross-section style diagrams\n- Isometric or orthographic projections\n\n## Style Rules\n\n### Do\n\n- Maintain consistent line weights\n- Use grid alignment for all elements\n- Keep color palette restrained\n- Create clear visual hierarchy through scale\n- Use geometric precision for all shapes\n\n### Don't\n\n- Use hand-drawn or organic shapes\n- Add decorative flourishes\n- Use curved connection lines\n- Include photographic elements\n- Add unnecessary embellishments\n\n## Best For\n\nTechnical architecture, system design, data analysis, engineering documentation, process flows, infrastructure articles\n\nArchive v1.117.2: 37 files, 62570 bytes\n\nFiles: prompts/system.md (1080b), references/config/first-time-setup.md (4431b), references/config/preferences-schema.md (4448b), references/palettes/macaron.md (1339b), references/palettes/mono-ink.md (1780b), references/palettes/neon.md (1025b), references/palettes/warm.md (1036b), references/prompt-construction.md (16697b), references/style-presets.md (5698b), references/styles.md (10640b), references/styles/blueprint.md (1844b), references/styles/chalkboard.md (2249b), references/styles/editorial.md (1722b), references/styles/elegant.md (1733b), references/styles/fantasy-animation.md (1969b), references/styles/flat-doodle.md (1869b), references/styles/flat.md (1688b), references/styles/ink-notes.md (4289b), references/styles/intuition-machine.md (1850b), references/styles/minimal.md (1607b), references/styles/nature.md (1703b), references/styles/notion.md (1636b), references/styles/pixel-art.md (1907b), references/styles/playful.md (1707b), references/styles/retro.md (1682b), references/styles/scientific.md (1741b), references/styles/screen-print.md (2680b), references/styles/sketch-notes.md (4704b), references/styles/sketch.md (1691b), references/styles/vector-illustration.md (1940b), references/styles/vintage.md (1819b), references/styles/warm.md (1760b), references/styles/watercolor.md (1815b), references/usage.md (2425b), references/workflow.md (17938b), SKILL.md (15744b), _meta.json (146b)\n\nFile v1.117.2:SKILL.md\n\n---\nname: baoyu-article-illustrator\ndescription: Analyzes article structure, identifies positions requiring visual aids, generates illustrations with Type × Style × Palette three-dimension approach. Use when user asks to \"illustrate article\", \"add images\", \"generate images for article\", or \"为文章配图\".\nversion: 1.59.0\nmetadata:\n  openclaw:\n    homepage: https://github.com/JimLiu/baoyu-skills#baoyu-article-illustrator\n---\n\n# Article Illustrator\n\nAnalyze articles, identify illustration positions, generate images with Type × Style × Palette consistency.\n\n## User Input Tools\n\nWhen this skill prompts the user, follow this tool-selection rule (priority order):\n\n1. **Prefer built-in user-input tools** exposed by the current agent runtime — e.g., `AskUserQuestion`, `request_user_input`, `clarify`, `ask_user`, or any equivalent.\n2. **Fallback**: if no such tool exists, emit a numbered plain-text message and ask the user to reply with the chosen number/answer for each question.\n3. **Batching**: if the tool supports multiple questions per call, combine all applicable questions into a single call; if only single-question, ask them one at a time in priority order.\n\nConcrete `AskUserQuestion` references below are examples — substitute the local equivalent in other runtimes.\n\n## Image Generation Tools\n\nWhen this skill needs to render an image, resolve the backend in this order:\n\n1. **Current-request override** — if the user names a specific backend in the current message, use it.\n2. **Saved preference** — if `EXTEND.md` sets `preferred_image_backend` to a backend available right now, use it.\n3. **Auto-select** (when the preference is `auto`, unset, or the pinned backend isn't available):\n   - **Codex (`imagegen`)** — first, inspect your available-skills / tool inventory. If a skill named `imagegen` is listed, you are running inside Codex and MUST use it: invoke via the `Skill` tool with `skill: \"imagegen\"`, passing the saved prompt file's content (plus output path and aspect ratio per Codex `imagegen`'s own args). Codex `imagegen` is the official raster backend in that runtime and outranks any non-native skill (e.g., `baoyu-imagine`) unless the user has explicitly pinned a different `preferred_image_backend`.\n   - **Other runtime-native tools** — if the runtime exposes a different native image tool (e.g., Hermes `image_generate`), use it the same way.\n   - Otherwise, if exactly one non-native backend is installed (e.g., `baoyu-imagine`), use it.\n   - Otherwise (multiple non-native backends with no runtime-native tool), ask the user once — batch with any other initial questions.\n4. **If none are available**, tell the user and ask how to proceed.\n\n**⛔ Never substitute SVG, HTML, canvas, or other code-based rendering for raster image generation.** Codex `imagegen`'s own description says it should be used \"when the output should be a bitmap asset rather than repo-native code or vector.\" If you cannot resolve a raster backend via step 3, fall through to step 4 and ask the user — do **not** silently emit SVG, write inline `<svg>` markup, or produce HTML/CSS art as a substitute. This applies even if the article/section seems \"diagram-like\": the consumer skill calling this rule has already decided that a raster image is what it needs.\n\n**⛔ Never repair rendered text by painting over a generated bitmap.** Do not use ImageMagick, Pillow, Canvas, SVG, HTML/CSS, OCR scripts, or any other programmatic overlay to cover, rewrite, erase, stroke, or replace labels, captions, or any other text inside an already generated illustration. If text is wrong or unclear, regenerate from a corrected prompt, redraw with less or no on-image text, or ask the user which imperfect candidate to keep.\n\nSetting `preferred_image_backend: ask` forces the step-3 prompt every run regardless of available backends. Users change the pinned backend via the `## Changing Preferences` section below.\n\n**Prompt file requirement (hard)**: write each image's full, final prompt to a standalone file under `prompts/` (naming: `NN-{type}-[slug].md`) BEFORE invoking any backend. The backend receives the prompt file (or its content); the file is the reproducibility record and lets you switch backends without regenerating prompts.\n\nConcrete tool names (`imagegen`, `image_generate`, `baoyu-imagine`) above are examples — substitute the local equivalents under the same rule.\n\n## Batch Generation Policy\n\nAfter every prompt file for the run has been saved and verified, generate images in batches by default.\n\nPriority order:\n\n1. Use the chosen backend's native batch / multi-task interface if it exists. Each task must keep its own prompt file, output path, aspect ratio, and direct reference images.\n2. If no native batch interface exists but the runtime can issue parallel tool calls, dispatch up to `generation_batch_size` images at a time. Default: `4`. An explicit user request in the current message, such as `--batch-size 4` or \"并行4张一起生成\", overrides EXTEND.md.\n3. If neither native batch nor parallel tool calls are available, generate sequentially.\n\nRules:\n\n- Never start the first batch until all prompt files for that batch exist on disk.\n- Retry failed items once without regenerating successful items.\n- Do not use subagents merely to parallelize image rendering. Use subagents only for separate prompt iteration or creative exploration.\n\n## Confirmation Policy\n\nDefault behavior: **confirm before generation**.\n\n- Treat explicit skill invocation, a file path, matched signals/presets, and `EXTEND.md` defaults as **recommendation inputs only**. None of them authorizes skipping confirmation.\n- Do **not** start Step 4 or later until the user completes Step 3.\n- Skip confirmation only when the current request explicitly says to do so, for example: \"直接生成\", \"不用确认\", \"跳过确认\", \"按默认出图\", or equivalent wording.\n- If confirmation is skipped explicitly, state the assumed type / density / style / palette / language / backend in the next user-facing update before generating.\n\n## Reference Images\n\nUsers may supply reference images via `--ref <files...>` or by providing file paths / pasting images in conversation. Refs guide style, palette, composition, or subject for specific illustrations.\n\nFull detection, storage, and processing rules are in [references/workflow.md](references/workflow.md) (Step 1.0 saves to `references/NN-ref-{slug}.{ext}`; Step 5.3 processes per-illustration usage `direct | style | palette`). When the chosen backend supports batch input, `direct`-usage entries in each prompt file's `references:` frontmatter should be propagated into its batch payload so backends can pass them through (e.g. `baoyu-imagine` accepts `ref` per task).\n\n## Three Dimensions\n\n| Dimension | Controls | Examples |\n|-----------|----------|----------|\n| **Type** | Information structure | infographic, scene, flowchart, comparison, framework, timeline |\n| **Style** | Rendering approach | notion, warm, minimal, blueprint, watercolor, elegant |\n| **Palette** | Color scheme (optional) | macaron, warm, neon — overrides style's default colors |\n\nCombine freely: `--type infographic --style vector-illustration --palette macaron`\n\nOr use presets: `--preset edu-visual` → type + style + palette in one flag. See [Style Presets](references/style-presets.md).\n\n## Types\n\n| Type | Best For |\n|------|----------|\n| `infographic` | Data, metrics, technical |\n| `scene` | Narratives, emotional |\n| `flowchart` | Processes, workflows |\n| `comparison` | Side-by-side, options |\n| `framework` | Models, architecture |\n| `timeline` | History, evolution |\n\n## Styles\n\nSee [references/styles.md](references/styles.md) for Core Styles, full gallery, and Type × Style compatibility.\n\n## Workflow\n\n```\n- [ ] Step 1: Pre-check (EXTEND.md, references, config)\n- [ ] Step 2: Analyze content\n- [ ] Step 3: Confirm settings (AskUserQuestion)\n- [ ] Step 4: Generate outline\n- [ ] Step 5: Generate images\n- [ ] Step 6: Finalize\n```\n\n### Step 1: Pre-check\n\n**1.5 Load Preferences (EXTEND.md) ⛔ BLOCKING**\n\nCheck EXTEND.md in priority order — the first one found wins:\n\n| Priority | Path | Scope |\n|----------|------|-------|\n| 1 | `.baoyu-skills/baoyu-article-illustrator/EXTEND.md` | Project |\n| 2 | `${XDG_CONFIG_HOME:-$HOME/.config}/baoyu-skills/baoyu-article-illustrator/EXTEND.md` | XDG |\n| 3 | `$HOME/.baoyu-skills/baoyu-article-illustrator/EXTEND.md` | User home |\n\n| Result | Action |\n|--------|--------|\n| Found | Read, parse, display summary |\n| Not found | ⛔ Run [first-time-setup](references/config/first-time-setup.md) |\n\nFull proced\n\nArchive v1.117.0: 37 files, 62183 bytes\n\nFiles: prompts/system.md (1080b), references/config/first-time-setup.md (4431b), references/config/preferences-schema.md (4448b), references/palettes/macaron.md (1339b), references/palettes/mono-ink.md (1780b), references/palettes/neon.md (1025b), references/palettes/warm.md (1036b), references/prompt-construction.md (16697b), references/style-presets.md (5698b), references/styles.md (10640b), references/styles/blueprint.md (1844b), references/styles/chalkboard.md (2249b), references/styles/editorial.md (1722b), references/styles/elegant.md (1733b), references/styles/fantasy-animation.md (1969b), references/styles/flat-doodle.md (1869b), references/styles/flat.md (1688b), references/styles/ink-notes.md (4289b), references/styles/intuition-machine.md (1850b), references/styles/minimal.md (1607b), references/styles/nature.md (1703b), references/styles/notion.md (1636b), references/styles/pixel-art.md (1907b), references/styles/playful.md (1707b), references/styles/retro.md (1682b), references/styles/scientific.md (1741b), references/styles/screen-print.md (2680b), references/styles/sketch-notes.md (4704b), references/styles/sketch.md (1691b), references/styles/vector-illustration.md (1940b), references/styles/vintage.md (1819b), references/styles/warm.md (1760b), references/styles/watercolor.md (1815b), references/usage.md (2425b), references/workflow.md (17938b), SKILL.md (14861b), _meta.json (146b)\n\nArchive v1.115.4: 37 files, 61087 bytes\n\nFiles: prompts/system.md (1080b), references/config/first-time-setup.md (4279b), references/config/preferences-schema.md (4074b), references/palettes/macaron.md (1339b), references/palettes/mono-ink.md (1780b), references/palettes/neon.md (1025b), references/palettes/warm.md (1036b), references/prompt-construction.md (16697b), references/style-presets.md (5698b), references/styles.md (10640b), references/styles/blueprint.md (1844b), references/styles/chalkboard.md (2249b), references/styles/editorial.md (1722b), references/styles/elegant.md (1733b), references/styles/fantasy-animation.md (1969b), references/styles/flat-doodle.md (1869b), references/styles/flat.md (1688b), references/styles/ink-notes.md (4289b), references/styles/intuition-machine.md (1850b), references/styles/minimal.md (1607b), references/styles/nature.md (1703b), references/styles/notion.md (1636b), references/styles/pixel-art.md (1907b), references/styles/playful.md (1707b), references/styles/retro.md (1682b), references/styles/scientific.md (1741b), references/styles/screen-print.md (2680b), references/styles/sketch-notes.md (4704b), references/styles/sketch.md (1691b), references/styles/vector-illustration.md (1940b), references/styles/vintage.md (1819b), references/styles/warm.md (1760b), references/styles/watercolor.md (1815b), references/usage.md (2154b), references/workflow.md (16882b), SKILL.md (13845b), _meta.json (146b)\n\nArchive v1.103.3: 37 files, 60447 bytes\n\nFiles: prompts/system.md (1080b), references/config/first-time-setup.md (4279b), references/config/preferences-schema.md (4074b), references/palettes/macaron.md (1339b), references/palettes/mono-ink.md (1780b), references/palettes/neon.md (1025b), references/palettes/warm.md (1036b), references/prompt-construction.md (16697b), references/style-presets.md (5698b), references/styles.md (10640b), references/styles/blueprint.md (1844b), references/styles/chalkboard.md (2249b), references/styles/editorial.md (1722b), references/styles/elegant.md (1733b), references/styles/fantasy-animation.md (1969b), references/styles/flat-doodle.md (1869b), references/styles/flat.md (1688b), references/styles/ink-notes.md (4289b), references/styles/intuition-machine.md (1850b), references/styles/minimal.md (1607b), references/styles/nature.md (1703b), references/styles/notion.md (1636b), references/styles/pixel-art.md (1907b), references/styles/playful.md (1707b), references/styles/retro.md (1682b), references/styles/scientific.md (1741b), references/styles/screen-print.md (2680b), references/styles/sketch-notes.md (4704b), references/styles/sketch.md (1691b), references/styles/vector-illustration.md (1940b), references/styles/vintage.md (1819b), references/styles/warm.md (1760b), references/styles/watercolor.md (1815b), references/usage.md (2154b), references/workflow.md (16426b), SKILL.md (12809b), _meta.json (146b)\n\nArchive v1.103.2: 37 files, 57557 bytes\n\nFiles: prompts/system.md (1080b), references/config/first-time-setup.md (4055b), references/config/preferences-schema.md (4074b), references/palettes/macaron.md (1339b), references/palettes/mono-ink.md (1780b), references/palettes/neon.md (1025b), references/palettes/warm.md (1036b), references/prompt-construction.md (14862b), references/style-presets.md (4780b), references/styles.md (9382b), references/styles/blueprint.md (1844b), references/styles/chalkboard.md (2249b), references/styles/editorial.md (1722b), references/styles/elegant.md (1733b), references/styles/fantasy-animation.md (1969b), references/styles/flat-doodle.md (1869b), references/styles/flat.md (1688b), references/styles/ink-notes.md (4289b), references/styles/intuition-machine.md (1850b), references/styles/minimal.md (1607b), references/styles/nature.md (1703b), references/styles/notion.md (1636b), references/styles/pixel-art.md (1907b), references/styles/playful.md (1707b), references/styles/retro.md (1682b), references/styles/scientific.md (1741b), references/styles/screen-print.md (2680b), references/styles/sketch-notes.md (1824b), references/styles/sketch.md (1691b), references/styles/vector-illustration.md (1940b), references/styles/vintage.md (1819b), references/styles/warm.md (1760b), references/styles/watercolor.md (1815b), references/usage.md (2154b), references/workflow.md (15767b), SKILL.md (12809b), _meta.json (146b)\n\nArchive v1.103.1: 39 files, 57936 bytes\n\nFiles: prompts/system.md (1080b), references/config/first-time-setup.md (3732b), references/config/preferences-schema.md (3501b), references/palettes/macaron.md (1339b), references/palettes/mono-ink.md (1780b), references/palettes/neon.md (1025b), references/palettes/warm.md (1036b), references/prompt-construction.md (14862b), references/style-presets.md (4780b), references/styles.md (9382b), references/styles/blueprint.md (1844b), references/styles/chalkboard.md (2249b), references/styles/editorial.md (1722b), references/styles/elegant.md (1733b), references/styles/fantasy-animation.md (1969b), references/styles/flat-doodle.md (1869b), references/styles/flat.md (1688b), references/styles/ink-notes.md (4289b), references/styles/intuition-machine.md (1850b), references/styles/minimal.md (1607b), references/styles/nature.md (1703b), references/styles/notion.md (1636b), references/styles/pixel-art.md (1907b), references/styles/playful.md (1707b), references/styles/retro.md (1682b), references/styles/scientific.md (1741b), references/styles/screen-print.md (2680b), references/styles/sketch-notes.md (1824b), references/styles/sketch.md (1691b), references/styles/vector-illustration.md (1940b), references/styles/vintage.md (1819b), references/styles/warm.md (1760b), references/styles/watercolor.md (1815b), references/usage.md (2154b), references/workflow.md (15749b), scripts/build-batch.test.ts (2460b), scripts/build-batch.ts (5058b), SKILL.md (7789b), _meta.json (146b)\n\nArchive v1.103.0: 39 files, 57936 bytes\n\nFiles: prompts/system.md (...","readmeExcerpt":"Skill: Baoyu Article Illustrator Owner: jimliu Summary: Analyzes article structure, identifies positions requiring visual aids, generates illustrations with Type × Style × Palette three-dimension approach. Use whe... Tags: latest:1.117.4 Version history: v1.117.4 | 2026-06-13T04:57:44.792Z | auto - Added native support for Cursor's GenerateImage tool and Codex CLI (codex exec) as image backends, with selection and us","codeSnippets":[],"executableExamples":[{"language":"text","snippet":"- [ ] Step 1: Pre-check (EXTEND.md, references, config)\n- [ ] Step 2: Analyze content\n- [ ] Step 3: Confirm settings (AskUserQuestion)\n- [ ] Step 4: Generate outline\n- [ ] Step 5: Generate images\n- [ ] Step 6: Finalize"},{"language":"yaml","snippet":"## Illustration 1\n**Position**: [section/paragraph]\n**Purpose**: [why]\n**Visual Content**: [what]\n**Filename**: 01-infographic-concept-name.png"},{"language":"text","snippet":"Article Illustration Complete!\nArticle: [path] | Type: [type] | Density: [level] | Style: [style] | Palette: [palette or default]\nImages: X/N generated"},{"language":"text","snippet":"{output-dir}/\n├── outline.md\n├── prompts/\n│   └── NN-{type}-{slug}.md\n└── NN-{type}-{slug}.png"},{"language":"bash","snippet":"${BUN_X} <baoyu-image-gen-base>/scripts/main.ts \\\n  --provider codex-cli \\\n  --image <ABSOLUTE_output> \\\n  --promptfiles <ABSOLUTE_prompts/NN-{type}-{slug}.md> \\\n  --ar <ratio> \\\n  [--ref <ABSOLUTE_file>]..."},{"language":"bash","snippet":"bun <WRAPPER>/main.ts \\\n  --image <ABSOLUTE_output> \\\n  --prompt-file <ABSOLUTE_prompts/NN-{type}-{slug}.md> \\\n  --aspect <ratio> \\\n  [--ref <ABSOLUTE_file>]... \\\n  [--timeout <ms>] \\\n  [--cache-dir ~/.cache/baoyu-codex-imagegen] \\\n  [--log-file <ABSOLUTE_jsonl_log_path>]"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: baoyu-article-illustrator\ndescription: Analyzes article structure, identifies positions requiring visual aids, generates illustrations with Type × Style × Palette three-dimension approach. Use when user asks to \"illustrate article\", \"add images\", \"generate images for article\", or \"为文章配图\".\nversion: 1.117.4\nmetadata:\n  openclaw:\n    homepage: https://github.com/JimLiu/baoyu-skills#baoyu-article-illustrator\n---\n\n# Article Illustrator\n\nAnalyze articles, identify illustration positions, generate images with Type × Style × Palette consistency.\n\n## User Input Tools\n\nWhen this skill prompts the user, follow this tool-selection rule (priority order):\n\n1. **Prefer built-in user-input tools** exposed by the current agent runtime — e.g., `AskUserQuestion`, `request_user_input`, `clarify`, `ask_user`, or any equivalent.\n2. **Fallback**: if no such tool exists, emit a numbered plain-text message and ask the user to reply with the chosen number/answer for each question.\n3. **Batching**: if the tool supports multiple questions per call, combine all applicable questions into a single call; if only single-question, ask them one at a time in priority order.\n\nConcrete `AskUserQuestion` references below are examples — substitute the local equivalent in other runtimes.\n\n## Image Generation Tools\n\nWhen this skill needs to render an image, resolve the backend in this order:\n\n1. **Current-request override** — if the user names a specific backend in the current message, use it.\n2. **Saved preference** — if `EXTEND.md` sets `preferred_image_backend` to a backend available right now, use it.\n3. **Auto-select** (when the preference is `auto`, unset, or the pinned backend isn't available):\n   - **Codex (`imagegen`)** — first, inspect your available-skills / tool inventory. If a skill named `imagegen` is listed, you are running inside Codex and MUST use it: invoke via the `Skill` tool with `skill: \"imagegen\"`, passing the saved prompt file's content (plus output path and aspect ratio per Codex `imagegen`'s own args). Codex `imagegen` is the official raster backend in that runtime and outranks any non-native skill (e.g., `baoyu-image-gen`) unless the user has explicitly pinned a different `preferred_image_backend`.\n   - **Codex via `codex exec` (`codex-imagegen`)** — if the current runtime exposes no native `imagegen` skill but the `codex` CLI is on `PATH` with an active `codex login`, route through `baoyu-image-gen --provider codex-cli` (preferred), or — if baoyu-image-gen is unavailable — invoke the bundled wrapper directly. Details, parameters, and the runtime-discovery procedure live in [references/codex-imagegen.md](references/codex-imagegen.md) — load that file only when this branch is selected.\n   - **Cursor (`GenerateImage`)** — if the runtime exposes a native `GenerateImage` tool, you are running inside Cursor and it outranks any non-native skill the same way Codex `imagegen` does. Two hard caveats: (a) it has no aspect-ratio parameter — state the target aspe"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7csrrndw79hpke5d0gsnx93d82k67r\",\n  \"slug\": \"baoyu-article-illustrator\",\n  \"version\": \"1.117.4\",\n  \"publishedAt\": 1781326664792\n}"},{"path":"references/codex-imagegen.md","content":"# `codex-imagegen` Wrapper Invocation\n\nLoad this reference only when the [Image Generation Tools](../SKILL.md#image-generation-tools) rule has resolved to `codex-imagegen` — i.e., the current runtime exposes no native `imagegen` skill but `codex` CLI is on `PATH` with an active `codex login`.\n\n## Preferred path: route through `baoyu-image-gen`\n\nIf the `baoyu-image-gen` skill is available in this runtime, **always** invoke through it rather than calling the wrapper directly. It handles retry/cache/batch/EXTEND.md preferences uniformly with every other provider.\n\n```bash\n${BUN_X} <baoyu-image-gen-base>/scripts/main.ts \\\n  --provider codex-cli \\\n  --image <ABSOLUTE_output> \\\n  --promptfiles <ABSOLUTE_prompts/NN-{type}-{slug}.md> \\\n  --ar <ratio> \\\n  [--ref <ABSOLUTE_file>]...\n```\n\nResolve `<baoyu-image-gen-base>` the same way you resolve any sibling skill — through your runtime's skill registry (`Skill` tool, plugin marketplace, or `$HOME/.baoyu-skills/baoyu-image-gen/`).\n\n## Fallback: spawn the wrapper directly\n\nOnly when `baoyu-image-gen` is NOT installed in the current runtime. Discover the wrapper's location at runtime — do NOT hard-code `../../packages/...` from this skill:\n\n1. **Honor explicit override**: if `$BAOYU_CODEX_IMAGEGEN_BIN` is set and points to a real file, use that path. It may be `.ts` (spawn `bun <path>`) or `.sh`/binary (spawn directly).\n2. **Search the plugin root**: walk up from this skill's directory looking for `packages/baoyu-codex-imagegen/src/main.ts`. If found, that is the wrapper. Spawn it with `bun`.\n3. **Last resort**: tell the user that `codex-imagegen` is not available in this runtime and ask whether to install the `baoyu-skills` plugin (or set `BAOYU_CODEX_IMAGEGEN_BIN`) or pick another backend.\n\nOnce located, the invocation shape is:\n\n```bash\nbun <WRAPPER>/main.ts \\\n  --image <ABSOLUTE_output> \\\n  --prompt-file <ABSOLUTE_prompts/NN-{type}-{slug}.md> \\\n  --aspect <ratio> \\\n  [--ref <ABSOLUTE_file>]... \\\n  [--timeout <ms>] \\\n  [--cache-dir ~/.cache/baoyu-codex-imagegen] \\\n  [--log-file <ABSOLUTE_jsonl_log_path>]\n```\n\nIf `bun` is missing, `npx -y bun <WRAPPER>/main.ts ...` works as a fallback.\n\n## Parameter notes\n\n- **All filesystem inputs** are auto-resolved against `process.cwd()` when relative, but agents should pass absolute paths to be robust against cwd drift.\n- **`--timeout`** defaults to `300000` (5 min) per `codex exec` attempt. Raise (e.g. `--timeout 600000` for 10 min) on slow networks or large prompts.\n- **`--cache-dir`** is off by default. Enable for repeatable runs to skip redundant generations of the same prompt+aspect+refs.\n- **Authentication**: the wrapper uses the user's Codex subscription — no `OPENAI_API_KEY` is read or sent.\n\n## Stdout contract\n\nSingle JSON line:\n\n- Success: `{\"status\":\"ok\",\"path\":\"...\",\"bytes\":N,\"elapsed_seconds\":N,\"thread_id\":\"...\",\"attempts\":N,\"cached\":bool,...}`\n- Failure: `{\"status\":\"error\",\"path\":\"...\",\"bytes\":0,\"error\":\"...\",\"error_kind\":\"...\"}`\n\n`error_kind` values: `cod"},{"path":"references/config/first-time-setup.md","content":"---\nname: first-time-setup\ndescription: First-time setup flow for baoyu-article-illustrator preferences\n---\n\n# First-Time Setup\n\n## Overview\n\nWhen no EXTEND.md is found, guide user through preference setup.\n\n**⛔ BLOCKING OPERATION**: This setup MUST complete before ANY other workflow steps. Do NOT:\n- Ask about reference images\n- Ask about content/article\n- Ask about type or style preferences\n- Proceed to content analysis\n\nONLY ask the questions in this setup flow, save EXTEND.md, then continue.\n\n## Setup Flow\n\n```\nNo EXTEND.md found\n        │\n        ▼\n┌─────────────────────┐\n│ AskUserQuestion     │\n│ (all questions)     │\n└─────────────────────┘\n        │\n        ▼\n┌─────────────────────┐\n│ Create EXTEND.md    │\n└─────────────────────┘\n        │\n        ▼\n    Continue to Step 1\n```\n\n## Questions\n\n**Language**: Use user's input language or preferred language for all questions. Do not always use English.\n\nUse single AskUserQuestion with multiple questions (AskUserQuestion auto-adds \"Other\" option):\n\n### Question 1: Watermark\n\n```\nheader: \"Watermark\"\nquestion: \"Watermark text for generated illustrations? Type your watermark content (e.g., name, @handle)\"\noptions:\n  - label: \"No watermark (Recommended)\"\n    description: \"No watermark, can enable later in EXTEND.md\"\n```\n\nPosition defaults to bottom-right.\n\n### Question 2: Preferred Style\n\n```\nheader: \"Style\"\nquestion: \"Default illustration style preference? Or type another style name or your custom style\"\noptions:\n  - label: \"sketch-notes (Recommended)\"\n    description: \"Warm cream paper, black hand-drawn lines, soft pastel blocks — educational infographic feel. Great default for most articles.\"\n  - label: \"None\"\n    description: \"Auto-select based on content analysis (falls back to sketch-notes when no strong signal)\"\n  - label: \"notion\"\n    description: \"Minimalist hand-drawn line art\"\n  - label: \"warm\"\n    description: \"Friendly, approachable, personal\"\n```\n\n### Question 3: Output Directory\n\n```\nheader: \"Output Directory\"\nquestion: \"Where to save generated illustrations when illustrating a file?\"\noptions:\n  - label: \"imgs-subdir (Recommended)\"\n    description: \"{article-dir}/imgs/ — images in a subdirectory next to the article\"\n  - label: \"same-dir\"\n    description: \"{article-dir}/ — images alongside the article file\"\n  - label: \"illustrations-subdir\"\n    description: \"{article-dir}/illustrations/ — separate illustrations subdirectory\"\n  - label: \"independent\"\n    description: \"illustrations/{topic-slug}/ — standalone directory in cwd\"\n```\n\n### Question 4: Save Location\n\n```\nheader: \"Save\"\nquestion: \"Where to save preferences?\"\noptions:\n  - label: \"Project\"\n    description: \".baoyu-skills/ (this project only)\"\n  - label: \"User\"\n    description: \"~/.baoyu-skills/ (all projects)\"\n```\n\n## Save Locations\n\n| Choice | Path | Scope |\n|--------|------|-------|\n| Project | `.baoyu-skills/baoyu-article-illustrator/EXTEND.md` | Current project |\n| User | `~/.baoyu-skills/baoyu-article-illustrator/EXTEND.md` "},{"path":"references/config/preferences-schema.md","content":"---\nname: preferences-schema\ndescription: EXTEND.md YAML schema for baoyu-article-illustrator user preferences\n---\n\n# Preferences Schema\n\n## Full Schema\n\n```yaml\n---\nversion: 1\n\nwatermark:\n  enabled: false\n  content: \"\"\n  position: bottom-right  # bottom-right|bottom-left|bottom-center|top-right\n\npreferred_style:\n  name: null              # Built-in or custom style name\n  description: \"\"         # Override/notes\n\npreferred_palette: null   # Built-in palette name (macaron|warm|neon) or null\n\nlanguage: null            # zh|en|ja|ko|auto\n\ndefault_output_dir: null  # same-dir|illustrations-subdir|independent\n\npreferred_image_backend: auto  # auto|ask|<backend-id>\n\ngeneration_batch_size: 4       # 1-8, used when backend/runtime supports batch or parallel generation\n\ncustom_styles:\n  - name: my-style\n    description: \"Style description\"\n    color_palette:\n      primary: [\"#1E3A5F\", \"#4A90D9\"]\n      background: \"#F5F7FA\"\n      accents: [\"#00B4D8\", \"#48CAE4\"]\n    visual_elements: \"Clean lines, geometric shapes\"\n    typography: \"Modern sans-serif\"\n    best_for: \"Business, education\"\n---\n```\n\n## Field Reference\n\n| Field | Type | Default | Description |\n|-------|------|---------|-------------|\n| `version` | int | 1 | Schema version |\n| `watermark.enabled` | bool | false | Enable watermark |\n| `watermark.content` | string | \"\" | Watermark text (@username or custom) |\n| `watermark.position` | enum | bottom-right | Position on image |\n| `preferred_style.name` | string | null | Style name or null |\n| `preferred_style.description` | string | \"\" | Custom notes/override |\n| `preferred_palette` | string | null | Palette override (macaron, warm, neon, or null) |\n| `language` | string | null | Output language (null = auto-detect) |\n| `default_output_dir` | enum | null | Output directory preference (null = ask each time) |\n| `preferred_image_backend` | string | `auto` | Image backend selection. `auto` = prefer runtime-native tool, fall back to the only installed backend, ask if multiple non-native are present. `ask` = always confirm on every run. `<backend-id>` (e.g., `codex-imagegen`, `baoyu-image-gen`, `image_generate`) = pin this backend when available; fall back to `auto` when it isn't. Absent = `auto`. Resolution logic is documented in `SKILL.md`'s `## Image Generation Tools` section. |\n| `generation_batch_size` | int | 4 | Number of images to dispatch per batch when the backend has native batch support or the runtime can issue parallel generation calls. Clamp invalid values to 1-8. Current user request overrides this value. |\n| `custom_styles` | array | [] | User-defined styles |\n\n## Position Options\n\n| Value | Description |\n|-------|-------------|\n| `bottom-right` | Lower right corner (default, most common) |\n| `bottom-left` | Lower left corner |\n| `bottom-center` | Bottom center |\n| `top-right` | Upper right corner |\n\n## Output Directory Options\n\n| Value | Description |\n|-------|-------------|\n| `same-dir` | Same directory as article |\n| `illustrations-subdir`"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":null,"editorialQuality":{"score":100,"threshold":65,"status":"thin","wordCount":2041,"uniquenessScore":40,"reasons":["uniqueness-below-45"]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-09T02:28:27.054Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-09T02:28:27.054Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-09T17:34:26.878Z","emptyReason":null},"items":[{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-10T18:48:31.762Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}