{"id":"fd6960ae-c0e2-450c-ad45-685ee45dc8bb","entityType":"agent","slug":"clawhub-jimliu-baoyu-cover-image","name":"Baoyu Cover Image","canonicalUrl":"https://www.xpersona.co/agent/clawhub-jimliu-baoyu-cover-image","canonicalPath":"/agent/clawhub-jimliu-baoyu-cover-image","generatedAt":"2026-10-10T04:22:45.936Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T02:21:55.093Z","emptyReason":null},"description":"Generates article cover images with 5 dimensions (type, palette, rendering, text, mood) combining 11 color palettes and 7 rendering styles. Supports cinemati...","descriptionLabel":"Source description","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 10.2K downloads reported by the source. Last updated 10/9/2026.","installCommand":"clawhub skill install s17dfbhg0khk4fvtnx0stqg0yx83j25z:baoyu-cover-image","sourceUrl":"https://clawhub.ai/jimliu/baoyu-cover-image","homepage":"https://clawhub.ai/jimliu/skills/baoyu-cover-image","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/jimliu/baoyu-cover-image","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/jimliu/skills/baoyu-cover-image","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":68,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Baoyu Cover Image 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:21:55.093Z","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:21:55.093Z","emptyReason":null},"stars":null,"forks":null,"downloads":10248,"packageName":null,"latestVersion":"1.117.5","tractionLabel":"10.2K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T02:21:55.093Z","emptyReason":null},"lastUpdatedAt":"2026-10-09T02:21:55.093Z","lastCrawledAt":"2026-10-09T02:21:55.093Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-10T02:21:55.093Z","lastVerifiedAt":null,"highlights":[{"version":"1.117.5","createdAt":"2026-06-13T04:58:16.454Z","changelog":"**Improved image backend auto-selection and runtime support:** - Added support for Cursor’s native GenerateImage tool, with correct aspect-ratio and output-path handling in prompts. - Refined Codex CLI integration: load backend invocation instructions and parameters from a new, dedicated reference file. - Updated backend selection logic prioritizing runtime-native tools (e.g., Codex, Cursor) before non-native backends. - Removed obsolete skill-card.md; added references/codex-imagegen.md with Codex CLI wrapper details. - Documentation clarifies backend selection flow and provides runtime-specific notes.","fileCount":37,"zipByteSize":52159},{"version":"1.117.4","createdAt":"2026-05-24T23:39:15.420Z","changelog":"v2.0.0: rename baoyu-imagine→baoyu-image-gen and baoyu-image-cards→baoyu-xhs-images; cross-skill image-backend examples updated","fileCount":36,"zipByteSize":50621},{"version":"1.117.3","createdAt":"2026-05-24T22:13:39.167Z","changelog":"Codex CLI (`codex exec`) support added for image generation: - Now supports Codex raster backend via `codex exec` (`codex-imagegen`) if no native `imagegen` skill is present but Codex CLI is available. - Documents command structure for invoking the Codex wrapper script, including absolute path requirements and error handling. - Clarifies image backend auto-selection order and fallback when multiple options exist. - No other logic or option changes.","fileCount":35,"zipByteSize":49232},{"version":"1.117.2","createdAt":"2026-05-18T02:13:46.329Z","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":35,"zipByteSize":48290},{"version":"1.115.4","createdAt":"2026-05-11T23:47:36.141Z","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":35,"zipByteSize":47897},{"version":"1.103.2","createdAt":"2026-04-21T22:01:23.508Z","changelog":"baoyu-cover-image 1.103.2 - Clarified user input tool selection with detailed fallback and batching rules in the documentation. - Documented new backend resolution order for image generation, including support for user override, saved preferences, and auto-selection logic. - Updated confirmation policy to align with new explicit/implicit confirmation rules and the --quick override. - Aligned configuration lookup priority and completed details for first-time setup and preference checking. - No functional changes to cover image parameters; changes focus on tool/interaction flexibility and documentation precision.","fileCount":35,"zipByteSize":47471},{"version":"1.103.1","createdAt":"2026-04-13T16:14:23.848Z","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":35,"zipByteSize":45489},{"version":"1.103.0","createdAt":"2026-04-13T01:19:27.710Z","changelog":"## 1.103.0 - 2026-04-12 ### Features - baoyu-diagram: add multi-diagram mode for article-wide diagram generation ### Fixes - baoyu-article-illustrator: prevent color names and hex codes from appearing as visible text in generated images - baoyu-cover-image: prevent color names and hex codes from appearing as visible text in generated images - baoyu-image-cards: prevent color names from appearing as visible text in generated images - baoyu-post-to-wechat: decode HTML entities and strip tags from article summary","fileCount":35,"zipByteSize":45489}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17dfbhg0khk4fvtnx0stqg0yx83j25z:baoyu-cover-image","setupComplexity":"low","setupSteps":["Install using `clawhub skill install s17dfbhg0khk4fvtnx0stqg0yx83j25z:baoyu-cover-image` 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-cover-image 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-cover-image/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-jimliu-baoyu-cover-image/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-jimliu-baoyu-cover-image/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-jimliu-baoyu-cover-image/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-jimliu-baoyu-cover-image/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-jimliu-baoyu-cover-image/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-10T04:22:45.931Z"}},"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-cover-image/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-jimliu-baoyu-cover-image/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-jimliu-baoyu-cover-image/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-jimliu-baoyu-cover-image/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:21:55.093Z","emptyReason":null},"readme":"Skill: Baoyu Cover Image\n\nOwner: jimliu\n\nSummary: Generates article cover images with 5 dimensions (type, palette, rendering, text, mood) combining 11 color palettes and 7 rendering styles. Supports cinemati...\n\nTags: latest:1.117.5\n\nVersion history:\n\nv1.117.5 | 2026-06-13T04:58:16.454Z | auto\n\n**Improved image backend auto-selection and runtime support:**\n\n- Added support for Cursor’s native GenerateImage tool, with correct aspect-ratio and output-path handling in prompts.\n- Refined Codex CLI integration: load backend invocation instructions and parameters from a new, dedicated reference file.\n- Updated backend selection logic prioritizing runtime-native tools (e.g., Codex, Cursor) before non-native backends.\n- Removed obsolete skill-card.md; added references/codex-imagegen.md with Codex CLI wrapper details.\n- Documentation clarifies backend selection flow and provides runtime-specific notes.\n\nv1.117.4 | 2026-05-24T23:39:15.420Z | 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.3 | 2026-05-24T22:13:39.167Z | auto\n\nCodex CLI (`codex exec`) support added for image generation:\n\n- Now supports Codex raster backend via `codex exec` (`codex-imagegen`) if no native `imagegen` skill is present but Codex CLI is available.\n- Documents command structure for invoking the Codex wrapper script, including absolute path requirements and error handling.\n- Clarifies image backend auto-selection order and fallback when multiple options exist.\n- No other logic or option changes.\n\nv1.117.2 | 2026-05-18T02:13:46.329Z | 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.115.4 | 2026-05-11T23:47:36.141Z | 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.2 | 2026-04-21T22:01:23.508Z | auto\n\nbaoyu-cover-image 1.103.2\n\n- Clarified user input tool selection with detailed fallback and batching rules in the documentation.\n- Documented new backend resolution order for image generation, including support for user override, saved preferences, and auto-selection logic.\n- Updated confirmation policy to align with new explicit/implicit confirmation rules and the --quick override.\n- Aligned configuration lookup priority and completed details for first-time setup and preference checking.\n- No functional changes to cover image parameters; changes focus on tool/interaction flexibility and documentation precision.\n\nv1.103.1 | 2026-04-13T16:14:23.848Z | 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:27.710Z | 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:26:07.973Z | auto\n\n## baoyu-cover-image 1.60.3\n\n- Added new \"macaron\" color palette, increasing the total palettes from 10 to 11.\n- Updated documentation in SKILL.md and preferences/config/preferences-schema.md to include the new palette.\n- Expanded palette listings and sample options to feature \"macaron\" in all relevant references and tables.\n- Added a dedicated file: references/palettes/macaron.md describing the new palette.\n- Improved documentation consistency across references.\n\nv1.60.2 | 2026-03-25T21:31:19.164Z | auto\n\nbaoyu-cover-image 1.60.2\n\n- Updated workflow for handling people in reference images: clarified support for `--ref` and model requirements.\n- Improved documentation in SKILL.md and references/workflow/reference-images.md regarding reference image analysis and description handling.\n- Adjusted decision table and instructions for reference images to reflect current model capabilities.\n- No interface or breaking command changes.\n\nv1.60.1 | 2026-03-22T04:21:32.848Z | auto\n\nbaoyu-cover-image v1.60.1\n\n- Clarified workflow requirements for reference images containing people, including per-character descriptions and mandatory direct usage for accurate representation.\n- Updated confirmation flow: selection of options must use the AskUserQuestion tool for interactive, multi-question selection (not plain text tables).\n- Improved documentation to reflect stricter handling and formatting for reference images and interactive option selection in Step 2.\n- Refined instructions and requirements in reference/workflow/reference-images.md, workflow/prompt-template.md, and workflow/confirm-options.md.\n\nv1.60.0 | 2026-03-12T03:49:12.206Z | 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:12:07.238Z | auto\n\nbaoyu-cover-image v1.56.1\n\n- Major documentation update: new detailed SKILL.md covering usage, options, customization dimensions, file structure, and workflow.\n- Describes support for 5 core design dimensions (type, palette, rendering, text, mood), 10 color palettes, 7 rendering styles, and multiple aspect ratios.\n- Clear command options and presets for easy cover image generation with or without user confirmation.\n- Adds workflows for setup, content analysis, prompt creation, and generation with reference handling.\n- Expanded gallery and reference section links for each dimension and style.\n\nArchive index:\n\nArchive v1.117.5: 37 files, 52159 bytes\n\nFiles: references/auto-selection.md (2837b), references/base-prompt.md (5452b), references/codex-imagegen.md (3715b), references/compatibility.md (2421b), references/config/first-time-setup.md (5950b), references/config/preferences-schema.md (8948b), references/config/watermark-guide.md (2217b), references/dimensions/font.md (4788b), references/dimensions/mood.md (4366b), references/dimensions/text.md (3167b), references/palettes/cool.md (743b), references/palettes/dark.md (753b), references/palettes/duotone.md (1407b), references/palettes/earth.md (734b), references/palettes/elegant.md (729b), references/palettes/macaron.md (769b), references/palettes/mono.md (716b), references/palettes/pastel.md (715b), references/palettes/retro.md (933b), references/palettes/vivid.md (751b), references/palettes/warm.md (721b), references/renderings/chalk.md (1086b), references/renderings/digital.md (1080b), references/renderings/flat-vector.md (1241b), references/renderings/hand-drawn.md (1036b), references/renderings/painterly.md (1045b), references/renderings/pixel.md (961b), references/renderings/screen-print.md (1502b), references/style-presets.md (1521b), references/types.md (1376b), references/visual-elements.md (3274b), references/workflow/confirm-options.md (5132b), references/workflow/prompt-template.md (11343b), references/workflow/reference-images.md (4562b), skill-card.md (2649b), SKILL.md (17931b), _meta.json (138b)\n\nFile v1.117.5:SKILL.md\n\n---\nname: baoyu-cover-image\ndescription: Generates article cover images with 5 dimensions (type, palette, rendering, text, mood) combining 11 color palettes and 7 rendering styles. Supports cinematic (2.35:1), widescreen (16:9), and square (1:1) aspects. Use when user asks to \"generate cover image\", \"create article cover\", or \"make cover\".\nversion: 1.117.5\nmetadata:\n  openclaw:\n    homepage: https://github.com/JimLiu/baoyu-skills#baoyu-cover-image\n---\n\n# Cover Image Generator\n\nGenerate elegant cover images for articles with 5-dimensional customization.\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 title/subtitle text inside an already generated cover image. If text is wrong or unclear, regenerate from a corrected prompt, switch to a lower-text or no-title variant, 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## Confirmation Policy\n\nDefault behavior: **confirm before generation**.\n\n- Treat explicit skill invocation, a file path, matched keywords/presets, `EXTEND.md` defaults, and any documented auto-selection as **recommendation inputs only**. None of them authorizes skipping confirmation.\n- Do **not** start Step 3 or Step 4 until the user confirms the dimensions / aspect / language / backend choices.\n- Skip confirmation only when the current request explicitly says to do so, for example: `--quick`, \"直接生成\", \"不用确认\", \"跳过确认\", \"按默认出图\", or equivalent wording. `quick_mode: true` in `EXTEND.md` counts as a standing explicit opt-out — set it only when you want every run to skip Step 2.\n- If confirmation is skipped explicitly, state the assumed dimensions / aspect / language / backend in the next user-facing update before generating.\n\n## Options\n\n| Option | Description |\n|--------|-------------|\n| `--type <name>` | hero, conceptual, typography, metaphor, scene, minimal |\n| `--palette <name>` | warm, elegant, cool, dark, earth, vivid, pastel, mono, retro, duotone, macaron |\n| `--rendering <name>` | flat-vector, hand-drawn, painterly, digital, pixel, chalk, screen-print |\n| `--style <name>` | Preset shorthand (see [Style Presets](references/style-presets.md)) |\n| `--text <level>` | none, title-only, title-subtitle, text-rich |\n| `--mood <level>` | subtle, balanced, bold |\n| `--font <name>` | clean, handwritten, serif, display |\n| `--aspect <ratio>` | 16:9 (default), 2.35:1, 4:3, 3:2, 1:1, 3:4 |\n| `--lang <code>` | Title language (en, zh, ja, etc.) |\n| `--no-title` | Alias for `--text none` |\n| `--quick` | Skip confirmation, use auto-selection |\n| `--ref <files...>` | Reference images for style/composition guidance |\n\n## Five Dimensions\n\n| Dimension | Values | Default |\n|-----------|--------|---------|\n| **Type** | hero, conceptual, typography, metaphor, scene, minimal | auto |\n| **Palette** | warm, elegant, cool, dark, earth, vivid, pastel, mono, retro, duotone, macaron | auto |\n| **Rendering** | flat-vector, hand-drawn, painterly, digital, pixel, chalk, screen-print | auto |\n| **Text** | none, title-only, title-subtitle, text-rich | title-only |\n| **Mood** | subtle, balanced, bold | balanced |\n| **Font** | clean, handwritten, serif, display | clean |\n\nAuto-selection rules: [references/auto-selection.md](references/auto-selection.md)\n\n## Galleries\n\n**Types**: hero, conceptual, typography, metaphor, scene, minimal\n→ Details: [references/types.md](references/types.md)\n\n**Palettes**: warm, elegant, cool, dark, earth, vivid, pastel, mono, retro, duotone, macaron\n→ Details: [references/palettes/](references/palettes/)\n\n**Renderings**: flat-vector, hand-drawn, painterly, digital, pixel, chalk, screen-print\n→ Details: [references/renderings/](references/renderings/)\n\n**Text Levels**: none (pure visual) | title-only (default) | title-subtitle | text-rich (with tags)\n→ Details: [references/dimensions/text.md](references/dimensions/text.md)\n\n**Mood Levels**: subtle (low contrast) | balanced (default) | bold (high contrast)\n→ Details: [references/dimensions/mood.md](references/dimensions/mood.md)\n\n**Fonts**: clean (sans-serif) | handwritten | serif | display (bold decorative)\n→ Details: [references/dimensions/font.md](references/dimensions/font.md)\n\n## File Structure\n\nOutput directory per `default_output_dir` preference:\n- `same-dir`: `{article-dir}/`\n- `imgs-subdir`: `{article-dir}/imgs/`\n- `independent` (default): `cover-image/{topic-slug}/`\n\n```\n<output-dir>/\n├── source-{slug}.{ext}    # Source files\n├── refs/                  # Reference images (if provided)\n│   ├── ref-01-{slug}.{ext}\n│   └── ref-01-{slug}.md   # Description file\n├── prompts/cover.md       # Generation prompt\n└── cover.png              # Output image\n```\n\n**Slug**: 2-4 words, kebab-case. Conflict: append `-YYYYMMDD-HHMMSS`\n\n## Workflow\n\n### Progress Checklist\n\n```\nCover Image Progress:\n- [ ] Step 0: Check preferences (EXTEND.md) ⛔ BLOCKING\n- [ ] Step 1: Analyze content + save refs + determine output dir\n- [ ] Step 2: Confirm options (6 dimensions) ⚠️ unless --quick\n- [ ] Step 3: Create prompt\n- [ ] Step 4: Generate image\n- [ ] Step 5: Completion report\n```\n\n### Flow\n\n```\nInput → [Step 0: Preferences] ─┬─ Found → Continue\n                               └─ Not found → First-Time Setup ⛔ BLOCKING → Save EXTEND.md → Continue\n        ↓\nAnalyze + Save Refs → [Output Dir] → [Confirm: 6 Dimensions] → Prompt → Generate → Complete\n                                              ↓\n                                     (skip if --quick or all specified)\n```\n\n### Step 0: Load Preferences ⛔ BLOCKING\n\nCheck EXTEND.md in priority order — the first one found wins:\n\n| Priority | Path | Scope |\n|----------|------|-------|\n| 1 | `.baoyu-skills/baoyu-cover-image/EXTEND.md` | Project |\n| 2 | `${XDG_CONFIG_HOME:-$HOME/.config}/baoyu-skills/baoyu-cover-image/EXTEND.md` | XDG |\n| 3 | `$HOME/.baoyu-skills/baoyu-cover-image/EXTEND.md` | User home |\n\n| Result | Action |\n|--------|--------|\n| Found | Load, display summary → Continue |\n| Not found | ⛔ Run first-time setup ([references/config/first-time-setup.md](references/config/first-time-setup.md)) → Save → Continue |\n\n**CRITICAL**: If not found, complete setup BEFORE any other steps or questions.\n\n### Step 1: Analyze Content\n\n1. **Save reference images** (if provided) → [references/workflow/reference-images.md](references/workflow/reference-images.md)\n2. **Save source content** (if pasted, save to `source.md`)\n3. **Analyze content**: topic, tone, keywords, visual metaphors\n4. **Deep analyze references** ⚠️: Extract specific, concrete elements (see reference-images.md)\n5. **Detect language**: Compare source, user input, EXTEND.md preference\n6. **Determine output directory**: Per File Structure rules\n\n**⚠️ People in Reference Images:**\n\nIf reference images contain **people** who should appear in the cover:\n\n- **Model supports `--ref`** (default): Copy image to `refs/`, pass via `--ref` at generation. No description file needed — the model sees the face directly.\n- **Model does NOT support `--ref`** (Jimeng, Seedream 3.0): Create `refs/ref-NN-{slug}.md` with per-character description (hair, glasses, skin tone, clothing). Embed as MUST/REQUIRED instructions in prompt text.\n\nSee [reference-images.md](references/workflow/reference-images.md) for full decision table.\n\n### Step 2: Confirm Options ⚠️\n\n**Hard gate**: this step is mandatory per the [Confirmation Policy](#confirmation-policy) — Steps 3–4 cannot start until the user confirms here (or explicitly opts out with `--quick` / `quick_mode: true` / equivalent wording in the current request).\n\n**MUST use `AskUserQuestion` tool** to present options as interactive selection — NOT plain text tables. Present up to 4 questions in a single `AskUserQuestion` call (Type, Palette, Rendering, Font + Settings). Each question shows the recommended option first with reason, followed by alternatives.\n\nFull confirmation flow and question format: [references/workflow/confirm-options.md](references/workflow/confirm-options.md)\n\n| Condition | Skipped | Still Asked |\n|-----------|---------|-------------|\n| `--quick` or `quick_mode: true` | 6 dimensions | Aspect ratio (unless `--aspect`) |\n| All 6 + `--aspect` specified | All | None |\n\n### Step 3: Create Prompt\n\nSave to `prompts/cover.md`. Template: [references/workflow/prompt-template.md](references/workflow/prompt-template.md)\n\n**CRITICAL - References in Frontmatter**:\n- Files saved to `refs/` → Add to frontmatter `references` list\n- Style extracted verbally (no file) → Omit `references`, describe in body\n- Before writing → Verify: `test -f refs/ref-NN-{slug}.{ext}`\n\n**Reference elements in body** MUST be detailed, prefixed with \"MUST\"/\"REQUIRED\", with integration approach.\n\n### Step 4: Generate Image\n\n1. **Backup existing** `cover.png` if regenerating\n2. **Select 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.\n3. **Write the full final prompt** to `prompts/01-cover-[slug].md` (hard requirement) BEFORE invoking the backend.\n4. **Process references** from prompt frontmatter:\n   - `direct` usage → pass via `--ref` (use ref-capable backend)\n   - `style`/`palette` → extract traits, append to prompt\n5. **Generate**: Call the chosen backend with the prompt file, output path, aspect ratio.\n   - **`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).\n   - **Codex `imagegen` (native)** or other runtime-native tools / `baoyu-image-gen` skill: per the rule in `## Image Generation Tools` above.\n6. On failure: auto-retry once\n\n### Step 5: Completion Report\n\n```\nCover Generated!\n\nTopic: [topic]\nType: [type] | Palette: [palette] | Rendering: [rendering]\nText: [text] | Mood: [mood] | Font: [font] | Aspect: [ratio]\nTitle: [title or \"visual only\"]\nLanguage: [lang] | Watermark: [enabled/disabled]\nReferences: [N images or \"extracted style\" or \"none\"]\nLocation: [directory path]\n\nFiles:\n✓ source-{slug}.{ext}\n✓ prompts/cover.md\n✓ cover.png\n```\n\n## Image Modification\n\n| Action | Steps |\n|--------|-------|\n| **Regenerate** | Backup → Update prompt file FIRST → Regenerate |\n| **Change dimension** | Backup → Confirm new value → Update prompt → Regenerate |\n\nText correction policy:\n\n- If the title/subtitle 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## Composition Principles\n\n- **Whitespace**: 40-60% breathing room\n- **Visual anchor**: Main element centered or offset left\n- **Characters**: Simplified silhouettes; NO realistic humans\n- **Title**: Use exact title from user/source; never invent\n\n## Changing Preferences\n\nEXTEND.md lives at the path noted in **Step 0**. Three ways to change it:\n\n- **Edit directly** — open EXTEND.md and change fields. Full schema: [references/config/preferences-schema.md](references/config/preferences-schema.md).\n- **Reconfigure interactively** — delete EXTEND.md (or ask \"reconfigure baoyu-cover-image 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  - `watermark.enabled: true`, `preferred_type`, `preferred_palette`, `preferred_rendering`, `default_aspect`, `quick_mode: true`, `language` — shift the auto-selection defaults and confirmation flow.\n\n## References\n\n**Dimensions**: [text.md](references/dimensions/text.md) | [mood.md](references/dimensions/mood.md) | [font.md](references/dimensions/font.md)\n**Palettes**: [references/palettes/](references/palettes/)\n**Renderings**: [references/renderings/](references/renderings/)\n**Types**: [references/types.md](references/types.md)\n**Auto-Selection**: [references/auto-selection.md](references/auto-selection.md)\n**Style Presets**: [references/style-presets.md](references/style-presets.md)\n**Compatibility**: [references/compatibility.md](references/compatibility.md)\n**Visual Elements**: [references/visual-elements.md](references/visual-elements.md)\n**Workflow**: [confirm-options.md](references/workflow/confirm-options.md) | [prompt-template.md](references/workflow/prompt-template.md) | [reference-images.md](references/workflow/reference-images.md)\n**Config**: [preferences-schema.md](references/config/preferences-schema.md) | [first-time-setup.md](references/config/first-time-setup.md) | [watermark-guide.md](references/config/watermark-guide.md)\n\nFile v1.117.5:_meta.json\n\n{\n  \"ownerId\": \"kn7csrrndw79hpke5d0gsnx93d82k67r\",\n  \"slug\": \"baoyu-cover-image\",\n  \"version\": \"1.117.5\",\n  \"publishedAt\": 1781326696454\n}\n\nFile v1.117.5:references/auto-selection.md\n\n# Auto-Selection Rules\n\nWhen a dimension is omitted, select based on content signals.\n\n## Auto Type Selection\n\n| Signals | Type |\n|---------|------|\n| Product, launch, announcement, release, reveal | `hero` |\n| Architecture, framework, system, API, technical, model | `conceptual` |\n| Quote, opinion, insight, thought, headline, statement | `typography` |\n| Philosophy, growth, abstract, meaning, reflection | `metaphor` |\n| Story, journey, travel, lifestyle, experience, narrative | `scene` |\n| Zen, focus, essential, core, simple, pure | `minimal` |\n\n## Auto Palette Selection\n\n| Signals | Palette |\n|---------|---------|\n| Personal story, emotion, lifestyle, human | `warm` |\n| Business, professional, thought leadership, luxury | `elegant` |\n| Architecture, system, API, technical, code | `cool` |\n| Entertainment, premium, cinematic, dark mode | `dark` |\n| Nature, wellness, eco, organic, travel | `earth` |\n| Product launch, gaming, promotion, event | `vivid` |\n| Fantasy, children, gentle, creative, whimsical | `pastel` |\n| Zen, focus, essential, pure, simple | `mono` |\n| History, vintage, retro, classic, exploration | `retro` |\n| Movie poster, album cover, concert, cinematic, dramatic, two-color | `duotone` |\n| Education, tutorial, knowledge, onboarding, concept explainer | `macaron` |\n\n## Auto Rendering Selection\n\n| Signals | Rendering |\n|---------|-----------|\n| Clean, modern, tech, WeChat, icon-based, infographic | `flat-vector` |\n| Sketch, note, personal, casual, doodle, warm | `hand-drawn` |\n| Art, watercolor, soft, dreamy, creative, fantasy | `painterly` |\n| Data, dashboard, SaaS, corporate, polished | `digital` |\n| Gaming, retro, 8-bit, nostalgic | `pixel` |\n| Education, tutorial, classroom, teaching | `chalk` |\n| Poster, movie, album, concert, silhouette, mondo, limited-edition | `screen-print` |\n\n## Auto Text Selection\n\n| Signals | Text Level |\n|---------|------------|\n| Visual-only, photography, abstract, art | `none` |\n| Article, blog, standard cover | `title-only` |\n| Series, tutorial, technical with context | `title-subtitle` |\n| Announcement, features, multiple points, infographic | `text-rich` |\n\nDefault: `title-only`\n\n## Auto Mood Selection\n\n| Signals | Mood Level |\n|---------|------------|\n| Professional, corporate, thought leadership, academic, luxury | `subtle` |\n| General, educational, standard, blog, documentation | `balanced` |\n| Launch, announcement, promotion, event, gaming, entertainment | `bold` |\n\nDefault: `balanced`\n\n## Auto Font Selection\n\n| Signals | Font |\n|---------|------|\n| Personal, lifestyle, human, warm, friendly, story | `handwritten` |\n| Technical, professional, clean, modern, minimal, data | `clean` |\n| Editorial, academic, luxury, classic, literary | `serif` |\n| Announcement, entertainment, promotion, bold, event, gaming | `display` |\n\nDefault: `clean`\n\nFile v1.117.5:references/base-prompt.md\n\nCreate a cover image following these guidelines:\n\n## Image Specifications\n\n- **Type**: Cover image / Hero image\n- **Aspect Ratio**: As specified in the prompt below\n\n## Core Principles\n\n- If content involves sensitive or copyrighted figures, create stylistically similar alternatives - DO NOT refuse to generate\n- Ample whitespace, highlight core message, avoid cluttered layouts\n- Main visual elements centered or slightly left (leave right side for title area if title included)\n- Simplified silhouettes for any characters — NO realistic human faces or bodies\n- Icon-based vocabulary: use simple, recognizable icons to represent concepts\n\n## Five Dimensions\n\n### Type (Visual Composition)\n- `hero`: Large focal visual (60-70% area), dramatic composition\n- `conceptual`: Abstract shapes, information hierarchy, clean zones\n- `typography`: Title as primary element (40%+ area), minimal visuals\n- `metaphor`: Concrete object representing abstract idea, symbolic elements\n- `scene`: Atmospheric environment, narrative elements, mood lighting\n- `minimal`: Single focal element, generous whitespace (60%+)\n\n### Palette (Color Scheme)\nApply the specified palette's color values and decorative hints:\n- Use primary colors for main visual elements\n- Use background colors for base and surrounding areas\n- Use accent colors for highlights and secondary elements\n- Follow palette-specific decorative hints for ornamentation\n\n### Rendering (Visual Style)\nApply the specified rendering's characteristics:\n- **Lines**: Follow line quality rules (clean/sketchy/brush/pixel/chalk)\n- **Texture**: Apply or avoid texture per rendering definition\n- **Depth**: Follow depth rules (flat/minimal/soft edges)\n- **Elements**: Use rendering-specific element vocabulary\n\n### Text (Density Level)\n- `none`: No text elements, full visual area\n- `title-only`: Single headline, 85% visual area\n- `title-subtitle`: Title + context, 75% visual area\n- `text-rich`: Title + subtitle + 2-4 keyword tags, 60% visual area\n\n### Mood (Emotional Intensity)\n- `subtle`: Low contrast, muted/desaturated colors, light visual weight, calm aesthetic\n- `balanced`: Medium contrast, normal saturation, balanced visual weight\n- `bold`: High contrast, vivid/saturated colors, heavy visual weight, dynamic energy\n\n## Text Style (When Title Included)\n\n- **Title source**: Use the exact title provided by user, or extract from source content. Do NOT invent or modify titles.\n- Title text: Large, eye-catching, faithful to source\n- Subtitle: Secondary element (if title-subtitle or text-rich)\n- Tags: 2-4 keyword badges (if text-rich)\n- Font style harmonizes with rendering style\n\n## Composition Guidance\n\n### Layout Principles\n\n- **Generous whitespace**: Maintain 40-60% breathing room; avoid cluttered compositions\n- **Visual anchor placement**: Main element centered or offset left (reserve right side for title if included)\n- **Information hierarchy**: One dominant focal point, 1-2 supporting elements, decorative accents\n- **Clean backgrounds**: Solid colors or subtle gradients; no complex textures or patterns\n\n### Icon & Symbol Vocabulary\n\nRepresent concepts with simple, recognizable icons rather than detailed illustrations:\n\n| Category | Examples |\n|----------|----------|\n| Tech | Code window, gear, circuit, cloud, lock, API brackets |\n| Ideas | Lightbulb, rocket, target, puzzle, key, magnifier |\n| Communication | Speech bubble, chat dots, megaphone, mail |\n| Growth | Plant/sprout, tree, arrow, chart, mountain |\n| Tools | Wrench, pencil, brush, checklist, clock |\n\nUse the rendering style to determine icon complexity (flat-vector = geometric, hand-drawn = sketchy, etc.)\n\nFull library: [references/visual-elements.md](visual-elements.md)\n\n### Character Handling\n\n**Default (no reference with people)**:\n- Use simplified silhouettes or abstract stick figures\n- Symbolic representations (head + shoulders outline)\n- NO realistic faces, detailed anatomy, or photographic representations\n- Cartoon/icon style consistent with rendering choice\n\n**When reference images contain people**:\n- Reference image is passed to model (`usage: direct`) — model must visually reference it to preserve character likeness\n- Stylize to match chosen rendering (cartoon/vector), preserving distinctive features (hair, clothing, pose)\n- NEVER photorealistic\n\n## Mood Application\n\nApply mood adjustments to the base palette:\n\n| Mood | Contrast | Saturation | Weight |\n|------|----------|------------|--------|\n| subtle | Reduce 20-30% | Desaturate 20-30% | Lighter strokes/fills |\n| balanced | Standard | Standard | Standard |\n| bold | Increase 20-30% | Increase 20-30% | Heavier strokes/fills |\n\n## Language\n\n- Use the same language as the content provided below for any text elements\n- Match punctuation style to the content language\n\n## Reference Images\n\nWhen reference images are provided:\n\n- **Style extraction**: Identify rendering technique, line quality, texture, and visual vocabulary\n- **Composition learning**: Note layout patterns, whitespace usage, element placement\n- **Mood matching**: Capture the emotional tone and visual weight\n- **Adaptation**: Apply extracted characteristics while respecting the specified Type, Palette, and Rendering dimensions\n- **Priority**: If reference style conflicts with specified dimensions, dimensions take precedence for structural choices; reference influences decorative details\n\n---\n\nPlease generate the cover image based on the content provided below:\n\nFile v1.117.5: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/01-cover-[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/01-cover-[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.5:references/compatibility.md\n\n# Compatibility Matrices\n\n✓✓ = highly recommended | ✓ = compatible | ✗ = not recommended\n\n## Palette × Rendering\n\n| | flat-vector | hand-drawn | painterly | digital | pixel | chalk | screen-print |\n|---|:---:|:---:|:---:|:---:|:---:|:---:|:---:|\n| warm | ✓✓ | ✓✓ | ✓ | ✓ | ✓ | ✓ | ✓ |\n| elegant | ✓ | ✓✓ | ✓ | ✓✓ | ✗ | ✗ | ✓ |\n| cool | ✓✓ | ✓ | ✗ | ✓✓ | ✓ | ✓ | ✓ |\n| dark | ✓ | ✓ | ✓ | ✓✓ | ✓ | ✓✓ | ✓✓ |\n| earth | ✓ | ✓✓ | ✓✓ | ✓ | ✗ | ✗ | ✓ |\n| vivid | ✓✓ | ✓ | ✓ | ✓ | ✓✓ | ✓ | ✓✓ |\n| pastel | ✓✓ | ✓✓ | ✓✓ | ✓ | ✗ | ✗ | ✗ |\n| mono | ✓✓ | ✓ | ✗ | ✓✓ | ✓ | ✓ | ✓✓ |\n| retro | ✓✓ | ✓✓ | ✓ | ✓✓ | ✓ | ✗ | ✓✓ |\n| duotone | ✓ | ✗ | ✗ | ✓ | ✗ | ✗ | ✓✓ |\n\n## Type × Rendering\n\n| | flat-vector | hand-drawn | painterly | digital | pixel | chalk | screen-print |\n|---|:---:|:---:|:---:|:---:|:---:|:---:|:---:|\n| hero | ✓ | ✓✓ | ✓✓ | ✓✓ | ✓ | ✓ | ✓✓ |\n| conceptual | ✓✓ | ✓ | ✗ | ✓✓ | ✓ | ✓ | ✓ |\n| typography | ✓✓ | ✓ | ✓ | ✓✓ | ✓ | ✓ | ✓✓ |\n| metaphor | ✓ | ✓✓ | ✓✓ | ✓ | ✗ | ✓ | ✓✓ |\n| scene | ✗ | ✓ | ✓✓ | ✓ | ✓ | ✗ | ✓ |\n| minimal | ✓✓ | ✓ | ✓ | ✓✓ | ✗ | ✗ | ✓✓ |\n\n## Type × Text\n\n| | none | title-only | title-subtitle | text-rich |\n|---|:---:|:---:|:---:|:---:|\n| hero | ✓ | ✓✓ | ✓✓ | ✓ |\n| conceptual | ✓✓ | ✓✓ | ✓ | ✓ |\n| typography | ✗ | ✓ | ✓✓ | ✓✓ |\n| metaphor | ✓✓ | ✓ | ✓ | ✗ |\n| scene | ✓✓ | ✓ | ✓ | ✗ |\n| minimal | ✓✓ | ✓✓ | ✓ | ✗ |\n\n## Type × Mood\n\n| | subtle | balanced | bold |\n|---|:---:|:---:|:---:|\n| hero | ✓ | ✓✓ | ✓✓ |\n| conceptual | ✓✓ | ✓✓ | ✓ |\n| typography | ✓ | ✓✓ | ✓✓ |\n| metaphor | ✓✓ | ✓✓ | ✓ |\n| scene | ✓✓ | ✓✓ | ✓ |\n| minimal | ✓✓ | ✓✓ | ✗ |\n\n## Font × Rendering\n\n| | flat-vector | hand-drawn | painterly | digital | pixel | chalk | screen-print |\n|---|:---:|:---:|:---:|:---:|:---:|:---:|:---:|\n| clean | ✓✓ | ✗ | ✗ | ✓✓ | ✓ | ✗ | ✓ |\n| handwritten | ✓ | ✓✓ | ✓✓ | ✓ | ✗ | ✓✓ | ✗ |\n| serif | ✓ | ✗ | ✓ | ✓✓ | ✗ | ✗ | ✓ |\n| display | ✓✓ | ✓ | ✓ | ✓✓ | ✓✓ | ✓ | ✓✓ |\n\nFile v1.117.5:references/config/first-time-setup.md\n\n---\nname: first-time-setup\ndescription: First-time setup flow for baoyu-cover-image 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 dimensions (type, palette, rendering)\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 saved language preference.\n\nUse AskUserQuestion with ALL questions in ONE call:\n\n### Question 1: Watermark\n\n```yaml\nheader: \"Watermark\"\nquestion: \"Watermark text for generated cover images?\"\noptions:\n  - label: \"No watermark (Recommended)\"\n    description: \"Clean covers, can enable later in EXTEND.md\"\n```\n\n### Question 2: Preferred Type\n\n```yaml\nheader: \"Type\"\nquestion: \"Default cover type preference?\"\noptions:\n  - label: \"Auto-select (Recommended)\"\n    description: \"Choose based on content analysis each time\"\n  - label: \"hero\"\n    description: \"Large visual impact - product launch, announcements\"\n  - label: \"conceptual\"\n    description: \"Concept visualization - technical, architecture\"\n```\n\n### Question 3: Preferred Palette\n\n```yaml\nheader: \"Palette\"\nquestion: \"Default color palette preference?\"\noptions:\n  - label: \"Auto-select (Recommended)\"\n    description: \"Choose based on content analysis each time\"\n  - label: \"elegant\"\n    description: \"Sophisticated - soft coral, muted teal, dusty rose\"\n  - label: \"warm\"\n    description: \"Friendly - orange, golden yellow, terracotta\"\n  - label: \"cool\"\n    description: \"Technical - engineering blue, navy, cyan\"\n```\n\n### Question 4: Preferred Rendering\n\n```yaml\nheader: \"Rendering\"\nquestion: \"Default rendering style preference?\"\noptions:\n  - label: \"Auto-select (Recommended)\"\n    description: \"Choose based on content analysis each time\"\n  - label: \"hand-drawn\"\n    description: \"Sketchy organic illustration with personal touch\"\n  - label: \"flat-vector\"\n    description: \"Clean modern vector with geometric shapes\"\n  - label: \"digital\"\n    description: \"Polished precise digital illustration\"\n```\n\n### Question 5: Default Aspect Ratio\n\n```yaml\nheader: \"Aspect\"\nquestion: \"Default aspect ratio for cover images?\"\noptions:\n  - label: \"16:9 (Recommended)\"\n    description: \"Standard widescreen - YouTube, presentations, versatile\"\n  - label: \"2.35:1\"\n    description: \"Cinematic widescreen - article headers, blog posts\"\n  - label: \"1:1\"\n    description: \"Square - Instagram, WeChat, social cards\"\n  - label: \"3:4\"\n    description: \"Portrait - Xiaohongshu, Pinterest, mobile content\"\n```\n\nNote: More ratios (4:3, 3:2) available during generation. This sets the default recommendation.\n\n### Question 6: Default Output Directory\n\n```yaml\nheader: \"Output\"\nquestion: \"Default output directory for cover images?\"\noptions:\n  - label: \"Independent (Recommended)\"\n    description: \"cover-image/{topic-slug}/ - separate from article\"\n  - label: \"Same directory\"\n    description: \"{article-dir}/ - alongside the article file\"\n  - label: \"imgs subdirectory\"\n    description: \"{article-dir}/imgs/ - images folder near article\"\n```\n\n### Question 7: Quick Mode\n\n```yaml\nheader: \"Quick\"\nquestion: \"Enable quick mode by default?\"\noptions:\n  - label: \"No (Recommended)\"\n    description: \"Confirm dimension choices each time\"\n  - label: \"Yes\"\n    description: \"Skip confirmation, use auto-selection\"\n```\n\n### Question 8: Save Location\n\n```yaml\nheader: \"Save\"\nquestion: \"Where to save preferences?\"\noptions:\n  - label: \"Project (Recommended)\"\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-cover-image/EXTEND.md` | Current project |\n| User | `~/.baoyu-skills/baoyu-cover-image/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: 3\nwatermark:\n  enabled: [true/false]\n  content: \"[user input or empty]\"\n  position: bottom-right\n  opacity: 0.7\npreferred_type: [selected type or null]\npreferred_palette: [selected palette or null]\npreferred_rendering: [selected rendering or null]\npreferred_text: title-only\npreferred_mood: balanced\ndefault_aspect: [16:9/2.35:1/1:1/3:4]\ndefault_output_dir: [independent/same-dir/imgs-subdir]\nquick_mode: [true/false]\nlanguage: null\npreferred_image_backend: auto\ncustom_palettes: []\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## 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\n**EXTEND.md Supports**: Watermark | Preferred type | Preferred palette | Preferred rendering | Preferred text | Preferred mood | Default aspect ratio | Default output directory | Quick mode | Image backend preference | Custom palette definitions | Language preference\n\nFile v1.117.5:references/config/preferences-schema.md\n\n---\nname: preferences-schema\ndescription: EXTEND.md YAML schema for baoyu-cover-image user preferences\n---\n\n# Preferences Schema\n\n## Full Schema\n\n```yaml\n---\nversion: 3\n\nwatermark:\n  enabled: false\n  content: \"\"\n  position: bottom-right  # bottom-right|bottom-left|bottom-center|top-right\n\npreferred_type: null      # hero|conceptual|typography|metaphor|scene|minimal or null for auto-select\n\npreferred_palette: null   # warm|elegant|cool|dark|earth|vivid|pastel|mono|retro|duotone|macaron or null for auto-select\n\npreferred_rendering: null # flat-vector|hand-drawn|painterly|digital|pixel|chalk or null for auto-select\n\npreferred_text: title-only  # none|title-only|title-subtitle|text-rich\n\npreferred_mood: balanced    # subtle|balanced|bold\n\ndefault_aspect: \"2.35:1\"  # 2.35:1|16:9|1:1\n\nquick_mode: false         # Skip confirmation when true\n\nlanguage: null            # zh|en|ja|ko|auto (null = auto-detect)\n\npreferred_image_backend: auto  # auto|ask|<backend-id>\n\ncustom_palettes:\n  - name: my-palette\n    description: \"Palette description\"\n    colors:\n      primary: [\"#1E3A5F\", \"#4A90D9\"]\n      background: \"#F5F7FA\"\n      accents: [\"#00B4D8\"]\n    decorative_hints: \"Clean lines, geometric shapes\"\n    best_for: \"Business, tech content\"\n---\n```\n\n## Field Reference\n\n| Field | Type | Default | Description |\n|-------|------|---------|-------------|\n| `version` | int | 3 | 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_type` | string | null | Type name or null for auto |\n| `preferred_palette` | string | null | Palette name or null for auto |\n| `preferred_rendering` | string | null | Rendering name or null for auto |\n| `preferred_text` | string | title-only | Text density level |\n| `preferred_mood` | string | balanced | Mood intensity level |\n| `default_aspect` | string | \"2.35:1\" | Default aspect ratio |\n| `quick_mode` | bool | false | Skip confirmation step |\n| `language` | string | null | Output language (null = auto-detect) |\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| `custom_palettes` | array | [] | User-defined palettes |\n\n## Type Options\n\n| Value | Description |\n|-------|-------------|\n| `hero` | Large visual impact, title overlay |\n| `conceptual` | Concept visualization, abstract core ideas |\n| `typography` | Text-focused layout, prominent title |\n| `metaphor` | Visual metaphor, concrete expressing abstract |\n| `scene` | Atmospheric scene, narrative feel |\n| `minimal` | Minimalist composition, generous whitespace |\n\n## Palette Options\n\n| Value | Description |\n|-------|-------------|\n| `warm` | Friendly, approachable — orange, golden yellow, terracotta |\n| `elegant` | Sophisticated, refined — soft coral, muted teal, dusty rose |\n| `cool` | Technical, professional — engineering blue, navy, cyan |\n| `dark` | Cinematic, premium — electric purple, cyan, magenta |\n| `earth` | Natural, organic — forest green, sage, earth brown |\n| `vivid` | Energetic, bold — bright red, neon green, electric blue |\n| `pastel` | Gentle, whimsical — soft pink, mint, lavender |\n| `mono` | Clean, focused — black, near-black, white |\n| `retro` | Nostalgic, vintage — muted orange, dusty pink, maroon |\n\n## Rendering Options\n\n| Value | Description |\n|-------|-------------|\n| `flat-vector` | Clean outlines, uniform fills, geometric icons |\n| `hand-drawn` | Sketchy, organic, imperfect strokes, paper texture |\n| `painterly` | Soft brush strokes, color bleeds, watercolor feel |\n| `digital` | Polished, precise edges, subtle gradients, UI components |\n| `pixel` | Pixel grid, dithering, chunky 8-bit shapes |\n| `chalk` | Chalk strokes, dust effects, blackboard texture |\n\n## Text Options\n\n| Value | Description |\n|-------|-------------|\n| `none` | Pure visual, no text elements |\n| `title-only` | Single headline |\n| `title-subtitle` | Title + subtitle |\n| `text-rich` | Title + subtitle + keyword tags (2-4) |\n\n## Mood Options\n\n| Value | Description |\n|-------|-------------|\n| `subtle` | Low contrast, muted colors, calm aesthetic |\n| `balanced` | Medium contrast, normal saturation, versatile |\n| `bold` | High contrast, vivid colors, dynamic energy |\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## Aspect Ratio Options\n\n| Value | Description | Best For |\n|-------|-------------|----------|\n| `2.35:1` | Cinematic widescreen | Article headers, blog covers |\n| `16:9` | Standard widescreen | Presentations, video thumbnails |\n| `1:1` | Square | Social media, profile images |\n\n## Custom Palette Fields\n\n| Field | Required | Description |\n|-------|----------|-------------|\n| `name` | Yes | Unique palette identifier (kebab-case) |\n| `description` | Yes | What the palette conveys |\n| `colors.primary` | No | Main colors (array of hex) |\n| `colors.background` | No | Background color (hex) |\n| `colors.accents` | No | Accent colors (array of hex) |\n| `decorative_hints` | No | Decorative elements and patterns |\n| `best_for` | No | Recommended content types |\n\n## Example: Minimal Preferences\n\n```yaml\n---\nversion: 3\nwatermark:\n  enabled: true\n  content: \"@myhandle\"\npreferred_type: null\npreferred_palette: elegant\npreferred_rendering: hand-drawn\npreferred_text: title-only\npreferred_mood: balanced\nquick_mode: false\n---\n```\n\n## Example: Full Preferences\n\n```yaml\n---\nversion: 3\nwatermark:\n  enabled: true\n  content: \"myblog.com\"\n  position: bottom-right\n\npreferred_type: conceptual\n\npreferred_palette: cool\n\npreferred_rendering: digital\n\npreferred_text: title-subtitle\n\npreferred_mood: subtle\n\ndefault_aspect: \"16:9\"\n\nquick_mode: true\n\nlanguage: en\n\npreferred_image_backend: codex-imagegen\n\ncustom_palettes:\n  - name: corporate-tech\n    description: \"Professional B2B tech palette\"\n    colors:\n      primary: [\"#1E3A5F\", \"#4A90D9\"]\n      background: \"#F5F7FA\"\n      accents: [\"#00B4D8\", \"#48CAE4\"]\n    decorative_hints: \"Clean lines, subtle gradients, circuit patterns\"\n    best_for: \"SaaS, enterprise, technical\"\n---\n```\n\n## Migration from v2\n\nWhen loading v2 schema, auto-upgrade:\n\n| v2 Field | v3 Field | Migration |\n|----------|----------|-----------|\n| `version: 2` | `version: 3` | Update |\n| `preferred_style` | `preferred_palette` + `preferred_rendering` | Use preset mapping table |\n| `custom_styles` | `custom_palettes` | Rename, restructure fields |\n\n**Style → Palette + Rendering mapping**:\n\n| v2 `preferred_style` | v3 `preferred_palette` | v3 `preferred_rendering` |\n|----------------------|----------------------|-------------------------|\n| `elegant` | `elegant` | `hand-drawn` |\n| `blueprint` | `cool` | `digital` |\n| `chalkboard` | `dark` | `chalk` |\n| `dark-atmospheric` | `dark` | `digital` |\n| `editorial-infographic` | `cool` | `digital` |\n| `fantasy-animation` | `pastel` | `painterly` |\n| `flat-doodle` | `pastel` | `flat-vector` |\n| `intuition-machine` | `retro` | `digital` |\n| `minimal` | `mono` | `flat-vector` |\n| `nature` | `earth` | `hand-drawn` |\n| `notion` | `mono` | `digital` |\n| `pixel-art` | `vivid` | `pixel` |\n| `playful` | `pastel` | `hand-drawn` |\n| `retro` | `retro` | `digital` |\n| `sketch-notes` | `warm` | `hand-drawn` |\n| `vector-illustration` | `retro` | `flat-vector` |\n| `vintage` | `retro` | `hand-drawn` |\n| `warm` | `warm` | `hand-drawn` |\n| `watercolor` | `earth` | `painterly` |\n| null (auto) | null | null |\n\n**Custom style migration**:\n\n| v2 Field | v3 Field |\n|----------|----------|\n| `custom_styles[].name` | `custom_palettes[].name` |\n| `custom_styles[].description` | `custom_palettes[].description` |\n| `custom_styles[].color_palette` | `custom_palettes[].colors` |\n| `custom_styles[].visual_elements` | `custom_palettes[].decorative_hints` |\n| `custom_styles[].typography` | (removed — determined by rendering) |\n| `custom_styles[].best_for` | `custom_palettes[].best_for` |\n\n## Migration from v1\n\nWhen loading v1 schema, auto-upgrade to v3:\n\n| v1 Field | v3 Field | Default Value |\n|----------|----------|---------------|\n| (missing) | `version` | 3 |\n| (missing) | `preferred_palette` | null |\n| (missing) | `preferred_rendering` | null |\n| (missing) | `preferred_text` | title-only |\n| (missing) | `preferred_mood` | balanced |\n| (missing) | `quick_mode` | false |\n\nv1 `--no-title` flag maps to `preferred_text: none`.\n\nFile v1.117.5:references/config/watermark-guide.md\n\n---\nname: watermark-guide\ndescription: Watermark configuration guide for baoyu-cover-image\n---\n\n# Watermark Guide\n\n## Position Diagram\n\n```\n┌─────────────────────────────┐\n│                  [top-right]│\n│                             │\n│                             │\n│       COVER IMAGE           │\n│                             │\n│                             │\n│[bottom-left][bottom-center][bottom-right]│\n└─────────────────────────────┘\n```\n\n## Position Recommendations\n\n| Position | Best For | Avoid When |\n|----------|----------|------------|\n| `bottom-right` | Default choice, most common | Title in bottom-right |\n| `bottom-left` | Right-heavy layouts | Key visual in bottom-left |\n| `bottom-center` | Centered designs | Text-heavy bottom area |\n| `top-right` | Bottom-heavy content | Title/header in top-right |\n\n## Content Format\n\n| Format | Example | Style |\n|--------|---------|-------|\n| Handle | `@username` | Social media |\n| Domain | `myblog.com` | Cross-platform |\n| Brand | `MyBrand` | Simple branding |\n| Chinese | `博客名` | Chinese platforms |\n\n## Best Practices\n\n1. **Consistency**: Use same watermark across all covers\n2. **Legibility**: Ensure watermark readable on both light/dark areas\n3. **Size**: Keep subtle - should not distract from content\n\n## Prompt Integration\n\nWhen watermark is enabled, add to image generation prompt:\n\n```\nInclude a subtle watermark \"[content]\" positioned at [position].\nThe watermark should be legible but not distracting from the main content.\n```\n\n## Cover-Specific Considerations\n\n| Aspect Ratio | Recommended Position | Notes |\n|--------------|---------------------|-------|\n| 2.35:1 | bottom-right | Cinematic - keep corners clean |\n| 16:9 | bottom-right | Standard - flexible placement |\n| 1:1 | bottom-center | Square - centered often works better |\n\n## Common Issues\n\n| Issue | Solution |\n|-------|----------|\n| Watermark invisible | Adjust position or check contrast |\n| Watermark too prominent | Change position or reduce size |\n| Watermark overlaps title | Change position or reduce title area |\n\nFile v1.117.5:references/dimensions/font.md\n\n---\nname: font-dimension\ndescription: Typography style dimension for cover images\n---\n\n# Font Dimension\n\nControls typography style and character feel.\n\n## Values\n\n| Font | Visual Style | Line Quality | Character |\n|------|--------------|--------------|-----------|\n| `clean` | Geometric sans-serif | Sharp, uniform | Modern, precise, neutral |\n| `handwritten` | Hand-lettered, brush | Organic, varied | Warm, personal, friendly |\n| `serif` | Classic serifs, elegant | Refined, structured | Editorial, authoritative |\n| `display` | Bold, decorative | Heavy, expressive | Attention-grabbing, playful |\n\n## Detail\n\n### clean\n\nModern, universal typography with neutral character.\n\n**Characteristics**:\n- Geometric sans-serif letterforms\n- Sharp, uniform line weight\n- Clean edges, no flourishes\n- High readability at all sizes\n- Minimal personality, maximum clarity\n\n**Use Cases**:\n- Technical documentation\n- Professional/corporate content\n- Minimal design approaches\n- Data-driven articles\n- Modern brand aesthetics\n\n**Prompt Hints**:\n- Use clean geometric sans-serif typography\n- Modern, minimal letterforms\n- Sharp edges, uniform stroke weight\n- High contrast against background\n\n### handwritten\n\nWarm, organic typography with personal character.\n\n**Characteristics**:\n- Hand-lettered or brush style\n- Organic, varied line weight\n- Natural imperfections\n- Approachable, human feel\n- Casual yet intentional\n\n**Use Cases**:\n- Personal stories\n- Lifestyle content\n- Wellness and self-improvement\n- Creative tutorials\n- Friendly brand voices\n\n**Prompt Hints**:\n- Use warm hand-lettered typography with organic brush strokes\n- Friendly, personal feel\n- Natural variation in stroke weight\n- Approachable, human character\n\n### serif\n\nClassic, elegant typography with editorial authority.\n\n**Characteristics**:\n- Traditional serif letterforms\n- Refined, structured strokes\n- Elegant proportions\n- Timeless sophistication\n- Formal, trustworthy feel\n\n**Use Cases**:\n- Editorial content\n- Academic articles\n- Luxury brand content\n- Historical topics\n- Literary pieces\n\n**Prompt Hints**:\n- Use elegant serif typography with refined letterforms\n- Classic, editorial character\n- Structured, proportional spacing\n- Authoritative, sophisticated feel\n\n### display\n\nBold, decorative typography for maximum impact.\n\n**Characteristics**:\n- Heavy, expressive letterforms\n- Decorative elements\n- Strong visual presence\n- Playful or dramatic character\n- Designed for headlines\n\n**Use Cases**:\n- Announcements\n- Entertainment content\n- Promotional materials\n- Event marketing\n- Gaming topics\n\n**Prompt Hints**:\n- Use bold decorative display typography\n- Heavy, expressive headlines\n- Strong visual impact\n- Attention-grabbing character\n\n## Default\n\n`clean` — Universal, pairs well with most rendering styles.\n\n## Rendering Compatibility\n\n| Font × Rendering | flat-vector | hand-drawn | painterly | digital | pixel | chalk | screen-print |\n|------------------|:-----------:|:----------:|:---------:|:-------:|:-----:|:-----:|:------------:|\n| clean | ✓✓ | ✗ | ✗ | ✓✓ | ✓ | ✗ | ✓ |\n| handwritten | ✓ | ✓✓ | ✓✓ | ✓ | ✗ | ✓✓ | ✗ |\n| serif | ✓ | ✗ | ✓ | ✓✓ | ✗ | ✗ | ✓ |\n| display | ✓✓ | ✓ | ✓ | ✓✓ | ✓✓ | ✓ | ✓✓ |\n\n✓✓ = highly recommended | ✓ = compatible | ✗ = not recommended\n\n## Type Compatibility\n\n| Font × Type | hero | conceptual | typography | metaphor | scene | minimal |\n|-------------|:----:|:----------:|:----------:|:--------:|:-----:|:-------:|\n| clean | ✓ | ✓✓ | ✓✓ | ✓ | ✗ | ✓✓ |\n| handwritten | ✓✓ | ✓ | ✓ | ✓✓ | ✓✓ | ✓ |\n| serif | ✓ | ✓ | ✓✓ | ✓ | ✓ | ✓ |\n| display | ✓✓ | ✓ | ✓✓ | ✓ | ✓ | ✗ |\n\n## Palette Interaction\n\nFont style adapts to palette characteristics:\n\n| Palette Category | clean | handwritten | serif | display |\n|------------------|-------|-------------|-------|---------|\n| Warm (warm, earth, pastel) | Softer weight | Natural fit | Warm tones | Playful energy |\n| Cool (cool, mono, elegant) | Perfect match | Contrast | Classic pairing | Bold statement |\n| Dark (dark, vivid) | High contrast | Glow effects | Dramatic | Maximum impact |\n| Vintage (retro) | Modern contrast | Nostalgic fit | Period-appropriate | Retro headlines |\n| Duotone (duotone) | Sharp contrast | Not recommended | Dramatic pairing | Cinematic impact |\n\n## Auto Selection\n\nWhen `--font` is omitted, select based on signals:\n\n| Signals | Font |\n|---------|------|\n| Personal, lifestyle, human, warm, friendly, story | `handwritten` |\n| Technical, professional, clean, modern, minimal, data | `clean` |\n| Editorial, academic, luxury, classic, literary | `serif` |\n| Announcement, entertainment, promotion, bold, event, gaming | `display` |\n\nDefault: `clean`\n\nFile v1.117.5:references/dimensions/mood.md\n\n---\nname: mood-dimension\ndescription: Emotional intensity dimension for cover images\n---\n\n# Mood Dimension\n\nControls emotional intensity and visual weight of cover images.\n\n## Values\n\n| Value | Contrast | Saturation | Weight | Energy |\n|-------|:--------:|:----------:|:------:|:------:|\n| `subtle` | Low | Muted | Light | Calm |\n| `balanced` | Medium | Normal | Medium | Moderate |\n| `bold` | High | Vivid | Heavy | Dynamic |\n\n## Detail\n\n### subtle\n\nCalm, understated visual presence.\n\n**Characteristics**:\n- Low contrast between elements\n- Muted, desaturated colors\n- Light visual weight\n- Gentle, refined aesthetic\n- Soft edges and transitions\n\n**Use Cases**:\n- Thought leadership content\n- Professional/corporate communications\n- Meditation, wellness topics\n- Academic or scholarly articles\n- Luxury brand aesthetics\n\n**Color Guidance**:\n- Pastels, earth tones, neutrals\n- Low saturation (30-50%)\n- Soft gradients\n- Minimal color variety (2-3 colors)\n\n### balanced\n\nVersatile, harmonious visual presence.\n\n**Characteristics**:\n- Medium contrast\n- Natural saturation levels\n- Balanced visual weight\n- Clear but not aggressive\n- Standard aesthetic approach\n\n**Use Cases**:\n- General articles (default)\n- Most blog content\n- Educational material\n- Product documentation\n- News and updates\n\n**Color Guidance**:\n- Standard saturation (50-70%)\n- Complementary color schemes\n- Clear foreground/background separation\n- Moderate color variety (3-4 colors)\n\n### bold\n\nDynamic, high-impact visual presence.\n\n**Characteristics**:\n- High contrast between elements\n- Vivid, saturated colors\n- Heavy visual weight\n- Energetic, attention-grabbing\n- Sharp edges and strong shapes\n\n**Use Cases**:\n- Product launches\n- Promotional announcements\n- Event marketing\n- Call-to-action content\n- Entertainment/gaming topics\n\n**Color Guidance**:\n- High saturation (70-100%)\n- Vibrant, primary colors\n- Strong contrast ratios\n- Dynamic color combinations (4+ colors)\n\n## Type Compatibility\n\n| Type | subtle | balanced | bold |\n|------|:------:|:--------:|:----:|\n| hero | ✓ | ✓✓ | ✓✓ |\n| conceptual | ✓✓ | ✓✓ | ✓ |\n| typography | ✓ | ✓✓ | ✓✓ |\n| metaphor | ✓✓ | ✓✓ | ✓ |\n| scene | ✓✓ | ✓✓ | ✓ |\n| minimal | ✓✓ | ✓✓ | ✗ |\n\n✓✓ = highly recommended | ✓ = compatible | ✗ = not recommended\n\n## Palette Interaction\n\nMood modifies the base palette characteristics:\n\n| Palette Category | subtle | balanced | bold |\n|------------------|--------|----------|------|\n| Warm palettes (warm, earth, pastel) | More whitespace, softer tones | Standard colors | Deeper, richer warm tones |\n| Cool palettes (cool, mono, elegant) | Lighter lines, muted colors | Standard colors | Stronger contrast, sharper definition |\n| Dark palettes (dark, vivid) | Reduced contrast, softer glow | Standard colors | Maximum impact, vivid saturation |\n| Vintage palettes (retro) | More faded, sepia-heavy | Standard colors | Bolder retro contrasts |\n| Duotone palettes (duotone) | Softer contrast between pair | Standard two-color split | Maximum contrast, stark separation |\n\n## Rendering Interaction\n\nMood adjusts rendering characteristics:\n\n| Rendering | subtle | balanced | bold |\n|-----------|--------|----------|------|\n| flat-vector | Thinner strokes, lighter fills | Standard weight | Thicker strokes, stronger fills |\n| hand-drawn | Lighter pencil pressure, more space | Standard strokes | Heavier marker strokes, denser elements |\n| painterly | Diluted washes, more white | Standard brush | Thicker paint, saturated strokes |\n| digital | Reduced shadows, lower contrast | Standard rendering | Stronger shadows, sharper edges |\n| pixel | Fewer colors, simpler shapes | Standard palette | More colors, denser pixel detail |\n| chalk | Lighter chalk, more board showing | Standard chalk | Heavy chalk, vivid colors, dense marks |\n| screen-print | Fewer colors (2), lighter halftone | Standard 3-4 colors, medium halftone | More colors (4-5), dense halftone, stronger misregistration |\n\n## Auto Selection\n\nWhen `--mood` is omitted, select based on signals:\n\n| Signals | Mood Level |\n|---------|------------|\n| Professional, corporate, thought leadership, academic, luxury | `subtle` |\n| General, educational, standard, blog, documentation | `balanced` |\n| Launch, announcement, promotion, event, gaming, entertainment | `bold` |\n\nDefault: `balanced`\n\nFile v1.117.5:references/dimensions/text.md\n\n---\nname: text-dimension\ndescription: Text density dimension for cover images\n---\n\n# Text Dimension\n\nControls text density and information hierarchy on cover images.\n\n## Values\n\n| Value | Title | Subtitle | Tags | Visual Area |\n|-------|:-----:|:--------:|:----:|:-----------:|\n| `none` | - | - | - | 100% |\n| `title-only` | ✓ | - | - | 85% |\n| `title-subtitle` | ✓ | ✓ | - | 75% |\n| `text-rich` | ✓ | ✓ | ✓ (2-4) | 60% |\n\n## Detail\n\n### none\n\nPure visual cover with no text elements.\n\n**Use Cases**:\n- Photography-focused covers\n- Abstract art pieces\n- Visual-only social sharing\n- When title added externally\n\n**Composition**:\n- Full visual area available\n- No reserved text zones\n- Emphasis on visual metaphor\n\n### title-only\n\nSingle headline, maximum impact.\n\n**Use Cases**:\n- Most article covers (default)\n- Clear single message\n- Strong brand recognition\n\n**Composition**:\n- Title: prominent placement\n- Reserved zone: top or bottom 15%\n- Visual supports title message\n\n**Title Guidelines**:\n- Use exact title from source content or user-provided title\n- Do NOT invent or modify titles\n- Match content language\n\n### title-subtitle\n\nTitle with supporting context.\n\n**Use Cases**:\n- Technical articles needing clarification\n- Series with episode/part info\n- Content with dual messages\n\n**Composition**:\n- Title: primary element\n- Subtitle: secondary element\n- Reserved zone: 25%\n- Clear hierarchy between title/subtitle\n\n**Title Guidelines**:\n- Use exact title from source content or user-provided title\n- Do NOT invent or modify titles\n\n**Subtitle Guidelines**:\n- Clarify or contextualize title\n- Can include series name, author, date\n- Smaller, less prominent than title\n\n### text-rich\n\nInformation-dense cover with multiple text elements.\n\n**Use Cases**:\n- Infographic-style covers\n- Event announcements with details\n- Promotional material with features\n- Content with multiple key points\n\n**Composition**:\n- Title: primary focus\n- Subtitle: supporting info\n- Tags: 2-4 keyword labels\n- Reserved zone: 40%\n- Clear visual hierarchy\n\n**Title Guidelines**:\n- Use exact title from source content or user-provided title\n- Do NOT invent or modify titles\n\n**Tag Guidelines**:\n- 2-4 tags maximum\n- Short keywords (1-2 words each)\n- Positioned as badges/labels\n- Can highlight: category, date, author, key features\n\n## Type Compatibility\n\n| Type | none | title-only | title-subtitle | text-rich |\n|------|:----:|:----------:|:--------------:|:---------:|\n| hero | ✓ | ✓✓ | ✓✓ | ✓ |\n| conceptual | ✓✓ | ✓✓ | ✓ | ✓ |\n| typography | ✗ | ✓ | ✓✓ | ✓✓ |\n| metaphor | ✓✓ | ✓ | ✓ | ✗ |\n| scene | ✓✓ | ✓ | ✓ | ✗ |\n| minimal | ✓✓ | ✓✓ | ✓ | ✗ |\n\n✓✓ = highly recommended | ✓ = compatible | ✗ = not recommended\n\n## Auto Selection\n\nWhen `--text` is omitted, select based on signals:\n\n| Signals | Text Level |\n|---------|------------|\n| Visual-only, photography, abstract, art | `none` |\n| Article, blog, standard cover | `title-only` |\n| Series, tutorial, technical with context | `title-subtitle` |\n| Announcement, features, multiple points, infographic | `text-rich` |\n\nDefault: `title-only`\n\nArchive v1.117.4: 36 files, 50621 bytes\n\nFiles: references/auto-selection.md (2837b), references/base-prompt.md (5452b), references/compatibility.md (2421b), references/config/first-time-setup.md (5950b), references/config/preferences-schema.md (8948b), references/config/watermark-guide.md (2217b), references/dimensions/font.md (4788b), references/dimensions/mood.md (4366b), references/dimensions/text.md (3167b), references/palettes/cool.md (743b), references/palettes/dark.md (753b), references/palettes/duotone.md (1407b), references/palettes/earth.md (734b), references/palettes/elegant.md (729b), references/palettes/macaron.md (769b), references/palettes/mono.md (716b), references/palettes/pastel.md (715b), references/palettes/retro.md (933b), references/palettes/vivid.md (751b), references/palettes/warm.md (721b), references/renderings/chalk.md (1086b), references/renderings/digital.md (1080b), references/renderings/flat-vector.md (1241b), references/renderings/hand-drawn.md (1036b), references/renderings/painterly.md (1045b), references/renderings/pixel.md (961b), references/renderings/screen-print.md (1502b), references/style-presets.md (1521b), references/types.md (1376b), references/visual-elements.md (3274b), references/workflow/confirm-options.md (5132b), references/workflow/prompt-template.md (11343b), references/workflow/reference-images.md (4562b), skill-card.md (2707b), SKILL.md (18842b), _meta.json (138b)\n\nFile v1.117.4:SKILL.md\n\n---\nname: baoyu-cover-image\ndescription: Generates article cover images with 5 dimensions (type, palette, rendering, text, mood) combining 11 color palettes and 7 rendering styles. Supports cinematic (2.35:1), widescreen (16:9), and square (1:1) aspects. Use when user asks to \"generate cover image\", \"create article cover\", or \"make cover\".\nversion: 1.117.4\nmetadata:\n  openclaw:\n    homepage: https://github.com/JimLiu/baoyu-skills#baoyu-cover-image\n---\n\n# Cover Image Generator\n\nGenerate elegant cover images for articles with 5-dimensional customization.\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 does NOT expose a native `imagegen` skill but the `codex` CLI is on `PATH` and `codex login` is active (e.g., Claude Code with Codex CLI installed), invoke the `codex-imagegen` wrapper. **Path resolution**: `scripts/codex-imagegen.sh` lives at the plugin/repo root, NOT relative to your shell cwd. From this `SKILL.md`'s base directory, the wrapper is at `../../scripts/codex-imagegen.sh` — resolve to an absolute path before invoking. Command shape:\n     ```bash\n     <ABSOLUTE_PLUGIN_ROOT>/scripts/codex-imagegen.sh \\\n       --image <absolute_output_path> \\\n       --prompt-file <absolute_path_to_prompts/NN-cover-[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     `--timeout` defaults to 300000 (5 min) per codex exec attempt; raise it (e.g. `--timeout 600000` for 10 min) on slow networks or large prompts.\n     All input paths to the wrapper are auto-resolved against the wrapper's `process.cwd()` if you pass relative ones, but agents should pass absolute paths to be robust against cwd drift. Parse the single-line JSON on stdout. On `{\"status\":\"ok\",...}` proceed to Step 5. On `{\"status\":\"error\",\"error_kind\":...}` report the `error_kind` to the user and (if retryable) ask whether to retry or fall back to another backend. The wrapper uses the user's Codex subscription — no `OPENAI_API_KEY` needed.\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 title/subtitle text inside an already generated cover image. If text is wrong or unclear, regenerate from a corrected prompt, switch to a lower-text or no-title variant, 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## Confirmation Policy\n\nDefault behavior: **confirm before generation**.\n\n- Treat explicit skill invocation, a file path, matched keywords/presets, `EXTEND.md` defaults, and any documented auto-selection as **recommendation inputs only**. None of them authorizes skipping confirmation.\n- Do **not** start Step 3 or Step 4 until the user confirms the dimensions / aspect / language / backend choices.\n- Skip confirmation only when the current request explicitly says to do so, for example: `--quick`, \"直接生成\", \"不用确认\", \"跳过确认\", \"按默认出图\", or equivalent wording. `quick_mode: true` in `EXTEND.md` counts as a standing explicit opt-out — set it only when you want every run to skip Step 2.\n- If confirmation is skipped explicitly, state the assumed dimensions / aspect / language / backend in the next user-facing update before generating.\n\n## Options\n\n| Option | Description |\n|--------|-------------|\n| `--type <name>` | hero, conceptual, typography, metaphor, scene, minimal |\n| `--palette <name>` | warm, elegant, cool, dark, earth, vivid, pastel, mono, retro, duotone, macaron |\n| `--rendering <name>` | flat-vector, hand-drawn, painterly, digital, pixel, chalk, screen-print |\n| `--style <name>` | Preset shorthand (see [Style Presets](references/style-presets.md)) |\n| `--text <level>` | none, title-only, title-subtitle, text-rich |\n| `--mood <level>` | subtle, balanced, bold |\n| `--font <name>` | clean, handwritten, serif, display |\n| `--aspect <ratio>` | 16:9 (default), 2.35:1, 4:3, 3:2, 1:1, 3:4 |\n| `--lang <code>` | Title language (en, zh, ja, etc.) |\n| `--no-title` | Alias for `--text none` |\n| `--quick` | Skip confirmation, use auto-selection |\n| `--ref <files...>` | Reference images for style/composition guidance |\n\n## Five Dimensions\n\n| Dimension | Values | Default |\n|-----------|--------|---------|\n| **Type** | hero, conceptual, typography, metaphor, scene, minimal | auto |\n| **Palette** | warm, elegant, cool, dark, earth, vivid, pastel, mono, retro, duotone, macaron | auto |\n| **Rendering** | flat-vector, hand-drawn, painterly, digital, pixel, chalk, screen-print | auto |\n| **Text** | none, title-only, title-subtitle, text-rich | title-only |\n| **Mood** | subtle, balanced, bold | balanced |\n| **Font** | clean, handwritten, serif, display | clean |\n\nAuto-selection rules: [references/auto-selection.md](references/auto-selection.md)\n\n## Galleries\n\n**Types**: hero, conceptual, typography, metaphor, scene, minimal\n→ Details: [references/types.md](references/types.md)\n\n**Palettes**: warm, elegant, cool, dark, earth, vivid, pastel, mono, retro, duotone, macaron\n→ Details: [references/palettes/](references/palettes/)\n\n**Renderings**: flat-vector, hand-drawn, painterly, digital, pixel, chalk, screen-print\n→ Details: [references/renderings/](references/renderings/)\n\n**Text Levels**: none (pure visual) | title-only (default) | title-subtitle | text-rich (with tags)\n→ Details: [references/dimensions/text.md](references/dimensions/text.md)\n\n**Mood Levels**: subtle (low contrast) | balanced (default) | bold (high contrast)\n→ Details: [references/dimensions/mood.md](references/dimensions/mood.md)\n\n**Fonts**: clean (sans-serif) | handwritten | serif | display (bold decorative)\n→ Details: [references/dimensions/font.md](references/dimensions/font.md)\n\n## File Structure\n\nOutput directory per `default_output_dir` preference:\n- `same-dir`: `{article-dir}/`\n- `imgs-subdir`: `{article-dir}/imgs/`\n- `independent` (default): `cover-image/{topic-slug}/`\n\n```\n<output-dir>/\n├── source-{slug}.{ext}    # Source files\n├── refs/                  # Reference images (if provided)\n│   ├── ref-01-{slug}.{ext}\n│   └── ref-01-{slug}.md   # Description file\n├── prompts/cover.md       # Generation prompt\n└── cover.png              # Output image\n```\n\n**Slug**: 2-4 words, kebab-case. Conflict: append `-YYYYMMDD-HHMMSS`\n\n## Workflow\n\n### Progress Checklist\n\n```\nCover Image Progress:\n- [ ] Step 0: Check preferences (EXTEND.md) ⛔ BLOCKING\n- [ ] Step 1: Analyze content + save refs + determine output dir\n- [ ] Step 2: Confirm options (6 dimensions) ⚠️ unless --quick\n- [ ] Step 3: Create prompt\n- [ ] Step 4: Generate image\n- [ ] Step 5: Completion report\n```\n\n### Flow\n\n```\nInput → [Step 0: Preferences] ─┬─ Found → Continue\n                               └─ Not found → First-Time Setup ⛔ BLOCKING → Save EXTEND.md → Continue\n        ↓\nAnalyze + Save Refs → [Output Dir] → [Confirm: 6 Dimensions] → Prompt → Generate → Complete\n                                              ↓\n                                     (skip if --quick or all specified)\n```\n\n### Step 0: Load Preferences ⛔ BLOCKING\n\nCheck EXTEND.md in priority order — the first one found wins:\n\n| Priority | Path | Scope |\n|----------|------|-------|\n| 1 | `.baoyu-skills/baoyu-cover-image/EXTEND.md` | Project |\n| 2 | `${XDG_CONFIG_HOME:-$HOME/.config}/baoyu-skills/baoyu-cover-image/EXTEND.md` | XDG |\n| 3 | `$HOME/.baoyu-skills/baoyu-cover-image/EXTEND.md` | User home |\n\n| Result | Action |\n|--------|--------|\n| Found | Load, display summary → Continue |\n| Not found | ⛔ Run first-time setup ([references/config/first-time-setup.md](references/config/first-time-setup.md)) → Save → Continue |\n\n**CRITICAL**: If not found, complete setup BEFORE any other steps or questions.\n\n### Step 1: Analyze Content\n\n1. **Save reference images** (if provided) → [references/workflow/reference-images.md](references/workflow/reference-images.md)\n2. **Save source content** (if pasted, save to `source.md`)\n3. **Analyze content**: topic, tone, keywords, visual metaphors\n4. **Deep analyze references** ⚠️: Extract specific, concrete elements (see reference-images.md)\n5. **Detect language**: Compare source, user input, EXTEND.md preference\n6. **Determine output directory**: Per File Structure rules\n\n**⚠️ People in Reference Images:**\n\nIf reference images contain **people** who should appear in the cover:\n\n- **Model supports `--ref`** (default): Copy image to `refs/`, pass via `--ref` at generation. No description file needed — the model sees the face directly.\n- **Model does NOT support `--ref`** (Jimeng, Seedream 3.0): Create `refs/ref-NN-{slug}.md` with per-character description (hair, glasses, skin tone, clothing). Embed as MUST/REQUIRED instructions in prompt text.\n\nSee [reference-images.md](references/workflow/reference-images.md) for full decision table.\n\n### Step 2: Confirm Options ⚠️\n\n**Hard gate**: this step is mandatory per the [Confirmation Policy](#confirmation-policy) — Steps 3–4 cannot start until the user confirms here (or explicitly opts out with `--quick` / `quick_mode: true` / equivalent wording in the current request).\n\n**MUST use `AskUserQuestion` tool** to present options as interactive selection — NOT plain text tables. Present up to 4 questions in a single `AskUserQuestion` call (Type, Palette, Rendering, Font + Settings). Each question shows the recommended option first with reason, followed by alternatives.\n\nFull confirmation flow and question format: [references/workflow/confirm-options.md](references/workflow/confirm-options.md)\n\n| Condition | Skipped | Still Asked |\n|-----------|---------|-------------|\n| `--quick` or `quick_mode: true` | 6 dimensions | Aspect ratio (unless `--aspect`) |\n| All 6 + `--aspect` specified | All | None |\n\n### Step 3: Create Prompt\n\nSave to `prompts/cover.md`. Template: [references/workflow/prompt-template.md](references/workflow/prompt-template.md)\n\n**CRITICAL - References in Frontmatter**:\n- Files saved to `refs/` → Add to frontmatter `references` list\n- Style extracted verbally (no file) → Omit `references`, describe in body\n- Before writing → Verify: `test -f refs/ref-NN-{slug}.{ext}`\n\n**Reference elements in body** MUST be detailed, prefixed with \"MUST\"/\"REQUIRED\", with integration approach.\n\n### Step 4: Generate Image\n\n1. **Backup existing** `cover.png` if regenerating\n2. **Select 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.\n3. **Write the full final prompt** to `prompts/01-cover-[slug].md` (hard requirement) BEFORE invoking the backend.\n4. **Process references** from prompt frontmatter:\n   - `direct` usage → pass via `--ref` (use ref-capable backend)\n   - `style`/`palette` → extract traits, append to prompt\n5. **Generate**: Call the chosen backend with the prompt file, output path, aspect ratio.\n   - **`codex-imagegen`**: invoke `<ABSOLUTE_PLUGIN_ROOT>/scripts/codex-imagegen.sh` (NOT a cwd-relative `./scripts/...` — resolve the absolute path from this skill's base directory: `../../scripts/codex-imagegen.sh`) with `--image <ABSOLUTE_output>` `--prompt-file <ABSOLUTE_prompts/01-cover-[slug].md>` `--aspect <ratio>` (add `--ref <ABSOLUTE_file>` per reference, `--cache-dir ~/.cache/baoyu-codex-imagegen` to enable the idempotency cache, `--timeout <ms>` to override the default 300000 / 5-min per-attempt limit on slow networks). All input paths to the wrapper are auto-resolved against its `process.cwd()` if relative, but passing absolutes is more robust. Read the stdout JSON; act on `status` and `error_kind`.\n   - **Codex `imagegen` (native)** or other runtime-native tools / `baoyu-image-gen` skill: per the rule in `## Image Generation Tools` above.\n6. On failure: auto-retry once\n\n### Step 5: Completion Report\n\n```\nCover Generated!\n\nTopic: [topic]\nType: [type] | Palette: [palette] | Rendering: [rendering]\nText: [text] | Mood: [mood] | Font: [font] | Aspect: [ratio]\nTitle: [title or \"visual only\"]\nLanguage: [lang] | Watermark: [enabled/disabled]\nReferences: [N images or \"extracted style\" or \"none\"]\nLocation: [directory path]\n\nFiles:\n✓ source-{slug}.{ext}\n✓ prompts/cover.md\n✓ cover.png\n```\n\n## Image Modification\n\n| Action | Steps |\n|--------|-------|\n| **Regenerate** | Backup → Update prompt file FIRST → Regenerate |\n| **Change dimension** | Backup → Confirm new value → Update prompt → Regenerate |\n\nText correction policy:\n\n- If the title/subtitle 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## Composition Principles\n\n- **Whitespace**: 40-60% breathing room\n- **Visual anchor**: Main element centered or offset left\n- **Characters**: Simplified silhouettes; NO realistic humans\n- **Title**: Use exact title from user/source; never invent\n\n## Changing Preferences\n\nEXTEND.md lives at the path noted in **Step 0**. Three ways to change it:\n\n- **Edit directly** — open EXTEND.md and change fields. Full schema: [references/config/preferences-schema.md](references/config/preferences-schema.md).\n- **Reconfigure interactively** — delete EXTEND.md (or ask \"reconfigure baoyu-cover-image 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  - `watermark.enabled: true`, `preferred_type`, `preferred_palette`, `preferred_rendering`, `default_aspect`, `quick_mode: true`, `language` — shift the auto-selection defaults and confirmation flow.\n\n## References\n\n**Dimensions**: [text.md](references/dimensions/text.md) | [mood.md](references/dimensions/mood.md) | [font.md](references/dimensions/font.md)\n**Palettes**: [references/palettes/](references/palettes/)\n**Renderings**: [references/renderings/](references/renderings/)\n**Types**: [references/types.md](references/types.md)\n**Auto-Selection**: [references/auto-selection.md](references/auto-selection.md)\n**Style Presets**: [references/style-presets.md](references/style-presets.md)\n**Compatibility**: [references/compatibility.md](references/compatibility.md)\n**Visual Elements**: [references/visual-elements.md](references/visual-elements.md)\n**Workflow**: [confirm-options.md](references/workflow/confirm-options.md) | [prompt-template.md](references/workflow/prompt-template.md) | [reference-images.md](references/workflow/reference-images.md)\n**Config**: [preferences-schema.md](references/config/preferences-schema.md) | [first-time-setup.md](references/config/first-time-setup.md) | [watermark-guide.md](references/config/watermark-guide.md)\n\nFile v1.117.4:_meta.json\n\n{\n  \"ownerId\": \"kn7csrrndw79hpke5d0gsnx93d82k67r\",\n  \"slug\": \"baoyu-cover-image\",\n  \"version\": \"1.117.4\",\n  \"publishedAt\": 1779665955420\n}\n\nFile v1.117.4:references/auto-selection.md\n\n# Auto-Selection Rules\n\nWhen a dimension is omitted, select based on content signals.\n\n## Auto Type Selection\n\n| Signals | Type |\n|---------|------|\n| Product, launch, announcement, release, reveal | `hero` |\n| Architecture, framework, system, API, technical, model | `conceptual` |\n| Quote, opinion, insight, thought, headline, statement | `typography` |\n| Philosophy, growth, abstract, meaning, reflection | `metaphor` |\n| Story, journey, travel, lifestyle, experience, narrative | `scene` |\n| Zen, focus, essential, core, simple, pure | `minimal` |\n\n## Auto Palette Selection\n\n| Signals | Palette |\n|---------|---------|\n| Personal story, emotion, lifestyle, human | `warm` |\n| Business, professional, thought leadership, luxury | `elegant` |\n| Architecture, system, API, technical, code | `cool` |\n| Entertainment, premium, cinematic, dark mode | `dark` |\n| Nature, wellness, eco, organic, travel | `earth` |\n| Product launch, gaming, promotion, event | `vivid` |\n| Fantasy, children, gentle, creative, whimsical | `pastel` |\n| Zen, focus, essential, pure, simple | `mono` |\n| History, vintage, retro, classic, exploration | `retro` |\n| Movie poster, album cover, concert, cinematic, dramatic, two-color | `duotone` |\n| Education, tutorial, knowledge, onboarding, concept explainer | `macaron` |\n\n## Auto Rendering Selection\n\n| Signals | Rendering |\n|---------|-----------|\n| Clean, modern, tech, WeChat, icon-based, infographic | `flat-vector` |\n| Sketch, note, personal, casual, doodle, warm | `hand-drawn` |\n| Art, watercolor, soft, dreamy, creative, fantasy | `painterly` |\n| Data, dashboard, SaaS, corporate, polished | `digital` |\n| Gaming, retro, 8-bit, nostalgic | `pixel` |\n| Education, tutorial, classroom, teaching | `chalk` |\n| Poster, movie, album, concert, silhouette, mondo, limited-edition | `screen-print` |\n\n## Auto Text Selection\n\n| Signals | Text Level |\n|---------|------------|\n| Visual-only, photography, abstract, art | `none` |\n| Article, blog, standard cover | `title-only` |\n| Series, tutorial, technical with context | `title-subtitle` |\n| Announcement, features, multiple points, infographic | `text-rich` |\n\nDefault: `title-only`\n\n## Auto Mood Selection\n\n| Signals | Mood Level |\n|---------|------------|\n| Professional, corporate, thought leadership, academic, luxury | `subtle` |\n| General, educational, standard, blog, documentation | `balanced` |\n| Launch, announcement, promotion, event, gaming, entertainment | `bold` |\n\nDefault: `balanced`\n\n## Auto Font Selection\n\n| Signals | Font |\n|---------|------|\n| Personal, lifestyle, human, warm, friendly, story | `handwritten` |\n| Technical, professional, clean, modern, minimal, data | `clean` |\n| Editorial, academic, luxury, classic, literary | `serif` |\n| Announcement, entertainment, promotion, bold, event, gaming | `display` |\n\nDefault: `clean`\n\nFile v1.117.4:references/base-prompt.md\n\nCreate a cover image following these guidelines:\n\n## Image Specifications\n\n- **Type**: Cover image / Hero image\n- **Aspect Ratio**: As specified in the prompt below\n\n## Core Principles\n\n- If content involves sensitive or copyrighted figures, create stylistically similar alternatives - DO NOT refuse to generate\n- Ample whitespace, highlight core message, avoid cluttered layouts\n- Main visual elements centered or slightly left (leave right side for title area if title included)\n- Simplified silhouettes for any characters — NO realistic human faces or bodies\n- Icon-based vocabulary: use simple, recognizable icons to represent concepts\n\n## Five Dimensions\n\n### Type (Visual Composition)\n- `hero`: Large focal visual (60-70% area), dramatic composition\n- `conceptual`: Abstract shapes, information hierarchy, clean zones\n- `typography`: Title as primary element (40%+ area), minimal visuals\n- `metaphor`: Concrete object representing abstract idea, symbolic elements\n- `scene`: Atmospheric environment, narrative elements, mood lighting\n- `minimal`: Single focal element, generous whitespace (60%+)\n\n### Palette (Color Scheme)\nApply the specified palette's color values and decorative hints:\n- Use primary colors for main visual elements\n- Use background colors for base and surrounding areas\n- Use accent colors for highlights and secondary elements\n- Follow palette-specific decorative hints for ornamentation\n\n### Rendering (Visual Style)\nApply the specified rendering's characteristics:\n- **Lines**: Follow line quality rules (clean/sketchy/brush/pixel/chalk)\n- **Texture**: Apply or avoid texture per rendering definition\n- **Depth**: Follow depth rules (flat/minimal/soft edges)\n- **Elements**: Use rendering-specific element vocabulary\n\n### Text (Density Level)\n- `none`: No text elements, full visual area\n- `title-only`: Single headline, 85% visual area\n- `title-subtitle`: Title + context, 75% visual area\n- `text-rich`: Title + subtitle + 2-4 keyword tags, 60% visual area\n\n### Mood (Emotional Intensity)\n- `subtle`: Low contrast, muted/desaturated colors, light visual weight, calm aesthetic\n- `balanced`: Medium contrast, normal saturation, balanced visual weight\n- `bold`: High contrast, vivid/saturated colors, heavy visual weight, dynamic energy\n\n## Text Style (When Title Included)\n\n- **Title source**: Use the exact title provided by user, or extract from source content. Do NOT invent or modify titles.\n- Title text: Large, eye-catching, faithful to source\n- Subtitle: Secondary element (if title-subtitle or text-rich)\n- Tags: 2-4 keyword badges (if text-rich)\n- Font style harmonizes with rendering style\n\n## Composition Guidance\n\n### Layout Principles\n\n- **Generous whitespace**: Maintain 40-60% breathing room; avoid cluttered compositions\n- **Visual anchor placement**: Main element centered or offset left (reserve right side for title if included)\n- **Information hierarchy**: One dominant focal point, 1-2 supporting elements, decorative accents\n- **Clean backgrounds**: Solid colors or subtle gradients; no complex textures or patterns\n\n### Icon & Symbol Vocabulary\n\nRepresent concepts with simple, recognizable icons rather than detailed illustrations:\n\n| Category | Examples |\n|----------|----------|\n| Tech | Code window, gear, circuit, cloud, lock, API brackets |\n| Ideas | Lightbulb, rocket, target, puzzle, key, magnifier |\n| Communication | Speech bubble, chat dots, megaphone, mail |\n| Growth | Plant/sprout, tree, arrow, chart, mountain |\n| Tools | Wrench, pencil, brush, checklist, clock |\n\nUse the rendering style to determine icon complexity (flat-vector = geometric, hand-drawn = sketchy, etc.)\n\nFull library: [references/visual-elements.md](visual-elements.md)\n\n### Character Handling\n\n**Default (no reference with people)**:\n- Use simplified silhouettes or abstract stick figures\n- Symbolic representations (head + shoulders outline)\n- NO realistic faces, detailed anatomy, or photographic representations\n- Cartoon/icon style consistent with rendering choice\n\n**When reference images contain people**:\n- Reference image is passed to model (`usage: direct`) — model must visually reference it to preserve character likeness\n- Stylize to match chosen rendering (cartoon/vector), preserving distinctive features (hair, clothing, pose)\n- NEVER photorealistic\n\n## Mood Application\n\nApply mood adjustments to the base palette:\n\n| Mood | Contrast | Saturation | Weight |\n|------|----------|------------|--------|\n| subtle | Reduce 20-30% | Desaturate 20-30% | Lighter strokes/fills |\n| balanced | Standard | Standard | Standard |\n| bold | Increase 20-30% | Increase 20-30% | Heavier strokes/fills |\n\n## Language\n\n- Use the same language as the content provided below for any text elements\n- Match punctuation style to the content language\n\n## Reference Images\n\nWhen reference images are provided:\n\n- **Style extraction**: Identify rendering technique, line quality, texture, and visual vocabulary\n- **Composition learning**: Note layout patterns, whitespace usage, element placement\n- **Mood matching**: Capture the emotional tone and visual weight\n- **Adaptation**: Apply extracted characteristics while respecting the specified Type, Palette, and Rendering dimensions\n- **Priority**: If reference style conflicts with specified dimensions, dimensions take precedence for structural choices; reference influences decorative details\n\n---\n\nPlease generate the cover image based on the content provided below:\n\nFile v1.117.4:references/compatibility.md\n\n# Compatibility Matrices\n\n✓✓ = highly recommended | ✓ = compatible | ✗ = not recommended\n\n## Palette × Rendering\n\n| | flat-vector | hand-drawn | painterly | digital | pixel | chalk | screen-print |\n|---|:---:|:---:|:---:|:---:|:---:|:---:|:---:|\n| warm | ✓✓ | ✓✓ | ✓ | ✓ | ✓ | ✓ | ✓ |\n| elegant | ✓ | ✓✓ | ✓ | ✓✓ | ✗ | ✗ | ✓ |\n| cool | ✓✓ | ✓ | ✗ | ✓✓ | ✓ | ✓ | ✓ |\n| dark | ✓ | ✓ | ✓ | ✓✓ | ✓ | ✓✓ | ✓✓ |\n| earth | ✓ | ✓✓ | ✓✓ | ✓ | ✗ | ✗ | ✓ |\n| vivid | ✓✓ | ✓ | ✓ | ✓ | ✓✓ | ✓ | ✓✓ |\n| pastel | ✓✓ | ✓✓ | ✓✓ | ✓ | ✗ | ✗ | ✗ |\n| mono | ✓✓ | ✓ | ✗ | ✓✓ | ✓ | ✓ | ✓✓ |\n| retro | ✓✓ | ✓✓ | ✓ | ✓✓ | ✓ | ✗ | ✓✓ |\n| duotone | ✓ | ✗ | ✗ | ✓ | ✗ | ✗ | ✓✓ |\n\n## Type × Rendering\n\n| | flat-vector | hand-drawn | painterly | digital | pixel | chalk | screen-print |\n|---|:---:|:---:|:---:|:---:|:---:|:---:|:---:|\n| hero | ✓ | ✓✓ | ✓✓ | ✓✓ | ✓ | ✓ | ✓✓ |\n| conceptual | ✓✓ | ✓ | ✗ | ✓✓ | ✓ | ✓ | ✓ |\n| typography | ✓✓ | ✓ | ✓ | ✓✓ | ✓ | ✓ | ✓✓ |\n| metaphor | ✓ | ✓✓ | ✓✓ | ✓ | ✗ | ✓ | ✓✓ |\n| scene | ✗ | ✓ | ✓✓ | ✓ | ✓ | ✗ | ✓ |\n| minimal | ✓✓ | ✓ | ✓ | ✓✓ | ✗ | ✗ | ✓✓ |\n\n## Type × Text\n\n| | none | title-only | title-subtitle | text-rich |\n|---|:---:|:---:|:---:|:---:|\n| hero | ✓ | ✓✓ | ✓✓ | ✓ |\n| conceptual | ✓✓ | ✓✓ | ✓ | ✓ |\n| typography | ✗ | ✓ | ✓✓ | ✓✓ |\n| metaphor | ✓✓ | ✓ | ✓ | ✗ |\n| scene | ✓✓ | ✓ | ✓ | ✗ |\n| minimal | ✓✓ | ✓✓ | ✓ | ✗ |\n\n## Type × Mood\n\n| | subtle | balanced | bold |\n|---|:---:|:---:|:---:|\n| hero | ✓ | ✓✓ | ✓✓ |\n| conceptual | ✓✓ | ✓✓ | ✓ |\n| typography | ✓ | ✓✓ | ✓✓ |\n| metaphor | ✓✓ | ✓✓ | ✓ |\n| scene | ✓✓ | ✓✓ | ✓ |\n| minimal | ✓✓ | ✓✓ | ✗ |\n\n## Font × Rendering\n\n| | flat-vector | hand-drawn | painterly | digital | pixel | chalk | screen-print |\n|---|:---:|:---:|:---:|:---:|:---:|:---:|:---:|\n| clean | ✓✓ | ✗ | ✗ | ✓✓ | ✓ | ✗ | ✓ |\n| handwritten | ✓ | ✓✓ | ✓✓ | ✓ | ✗ | ✓✓ | ✗ |\n| serif | ✓ | ✗ | ✓ | ✓✓ | ✗ | ✗ | ✓ |\n| display | ✓✓ | ✓ | ✓ | ✓✓ | ✓✓ | ✓ | ✓✓ |\n\nFile v1.117.4:references/config/first-time-setup.md\n\n---\nname: first-time-setup\ndescription: First-time setup flow for baoyu-cover-image 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 dimensions (type, palette, rendering)\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 saved language preference.\n\nUse AskUserQuestion with ALL questions in ONE call:\n\n### Question 1: Watermark\n\n```yaml\nheader: \"Watermark\"\nquestion: \"Watermark text for generated cover images?\"\noptions:\n  - label: \"No watermark (Recommended)\"\n    description: \"Clean covers, can enable later in EXTEND.md\"\n```\n\n### Question 2: Preferred Type\n\n```yaml\nheader: \"Type\"\nquestion: \"Default cover type preference?\"\noptions:\n  - label: \"Auto-select (Recommended)\"\n    description: \"Choose based on content analysis each time\"\n  - label: \"hero\"\n    description: \"Large visual impact - product launch, announcements\"\n  - label: \"conceptual\"\n    description: \"Concept visualization - technical, architecture\"\n```\n\n### Question 3: Preferred Palette\n\n```yaml\nheader: \"Palette\"\nquestion: \"Default color palette preference?\"\noptions:\n  - label: \"Auto-select (Recommended)\"\n    description: \"Choose based on content analysis each time\"\n  - label: \"elegant\"\n    description: \"Sophisticated - soft coral, muted teal, dusty rose\"\n  - label: \"warm\"\n    description: \"Friendly - orange, golden yellow, terracotta\"\n  - label: \"cool\"\n    description: \"Technical - engineering blue, navy, cyan\"\n```\n\n### Question 4: Preferred Rendering\n\n```yaml\nheader: \"Rendering\"\nquestion: \"Default rendering style preference?\"\noptions:\n  - label: \"Auto-select (Recommended)\"\n    description: \"Choose based on content analysis each time\"\n  - label: \"hand-drawn\"\n    description: \"Sketchy organic illustration with personal touch\"\n  - label: \"flat-vector\"\n    description: \"Clean modern vector with geometric shapes\"\n  - label: \"digital\"\n    description: \"Polished precise digital illustration\"\n```\n\n### Question 5: Default Aspect Ratio\n\n```yaml\nheader: \"Aspect\"\nquestion: \"Default aspect ratio for cover images?\"\noptions:\n  - label: \"16:9 (Recommended)\"\n    description: \"Standard widescreen - YouTube, presentations, versatile\"\n  - label: \"2.35:1\"\n    description: \"Cinematic widescreen - article headers, blog posts\"\n  - label: \"1:1\"\n    description: \"Square - Instagram, WeChat, social cards\"\n  - label: \"3:4\"\n    description: \"Portrait - Xiaohongshu, Pinterest, mobile content\"\n```\n\nNote: More ratios (4:3, 3:2) available during generation. This sets the default recommendation.\n\n### Question 6: Default Output Directory\n\n```yaml\nheader: \"Output\"\nquestion: \"Default output directory for cover images?\"\noptions:\n  - label: \"Independent (Recommended)\"\n    description: \"cover-image/{topic-slug}/ - separate from article\"\n  - label: \"Same directory\"\n    description: \"{article-dir}/ - alongside the article file\"\n  - label: \"imgs subdirectory\"\n    description: \"{article-dir}/imgs/ - images folder near article\"\n```\n\n### Question 7: Quick Mode\n\n```yaml\nheader: \"Quick\"\nquestion: \"Enable quick mode by default?\"\noptions:\n  - label: \"No (Recommended)\"\n    description: \"Confirm dimension choices each time\"\n  - label: \"Yes\"\n    description: \"Skip confirmation, use auto-selection\"\n```\n\n### Question 8: Save Location\n\n```yaml\nheader: \"Save\"\nquestion: \"Where to save preferences?\"\noptions:\n  - label: \"Project (Recommended)\"\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-cover-image/EXTEND.md` | Current project |\n| User | `~/.baoyu-skills/baoyu-cover-image/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: 3\nwatermark:\n  enabled: [true/false]\n  content: \"[user input or empty]\"\n  position: bottom-right\n  opacity: 0.7\npreferred_type: [selected type or null]\npreferred_palette: [selected palette or null]\npreferred_rendering: [selected rendering or null]\npreferred_text: title-only\npreferred_mood: balanced\ndefault_aspect: [16:9/2.35:1/1:1/3:4]\ndefault_output_dir: [independent/same-dir/imgs-subdir]\nquick_mode: [true/false]\nlanguage: null\npreferred_image_backend: auto\ncustom_palettes: []\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## 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\n**EXTEND.md Supports**: Watermark | Preferred type | Preferred palette | Preferred rendering | Preferred text | Preferred mood | Default aspect ratio | Default output directory | Quick mode | Image backend preference | Custom palette definitions | Language preference\n\nFile v1.117.4:references/config/preferences-schema.md\n\n---\nname: preferences-schema\ndescription: EXTEND.md YAML schema for baoyu-cover-image user preferences\n---\n\n# Preferences Schema\n\n## Full Schema\n\n```yaml\n---\nversion: 3\n\nwatermark:\n  enabled: false\n  content: \"\"\n  position: bottom-right  # bottom-right|bottom-left|bottom-center|top-right\n\npreferred_type: null      # hero|conceptual|typography|metaphor|scene|minimal or null for auto-select\n\npreferred_palette: null   # warm|elegant|cool|dark|earth|vivid|pastel|mono|retro|duotone|macaron or null for auto-select\n\npreferred_rendering: null # flat-vector|hand-drawn|painterly|digital|pixel|chalk or null for auto-select\n\npreferred_text: title-only  # none|title-only|title-subtitle|text-rich\n\npreferred_mood: balanced    # subtle|balanced|bold\n\ndefault_aspect: \"2.35:1\"  # 2.35:1|16:9|1:1\n\nquick_mode: false         # Skip confirmation when true\n\nlanguage: null            # zh|en|ja|ko|auto (null = auto-detect)\n\npreferred_image_backend: auto  # auto|ask|<backend-id>\n\ncustom_palettes:\n  - name: my-palette\n    description: \"Palette description\"\n    colors:\n      primary: [\"#1E3A5F\", \"#4A90D9\"]\n      background: \"#F5F7FA\"\n      accents: [\"#00B4D8\"]\n    decorative_hints: \"Clean lines, geometric shapes\"\n    best_for: \"Business, tech content\"\n---\n```\n\n## Field Reference\n\n| Field | Type | Default | Description |\n|-------|------|---------|-------------|\n| `version` | int | 3 | 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_type` | string | null | Type name or null for auto |\n| `preferred_palette` | string | null | Palette name or null for auto |\n| `preferred_rendering` | string | null | Rendering name or null for auto |\n| `preferred_text` | string | title-only | Text density level |\n| `preferred_mood` | string | balanced | Mood intensity level |\n| `default_aspect` | string | \"2.35:1\" | Default aspect ratio |\n| `quick_mode` | bool | false | Skip confirmation step |\n| `language` | string | null | Output language (null = auto-detect) |\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| `custom_palettes` | array | [] | User-defined palettes |\n\n## Type Options\n\n| Value | Description |\n|-------|-------------|\n| `hero` | Large visual impact, title overlay |\n| `conceptual` | Concept visualization, abstract core ideas |\n| `typography` | Text-focused layout, prominent title |\n| `metaphor` | Visual metaphor, concrete expressing abstract |\n| `scene` | Atmospheric scene, narrative feel |\n| `minimal` | Minimalist composition, generous whitespace |\n\n## Palette Options\n\n| Value | Description |\n|-------|-------------|\n| `warm` | Friendly, approachable — orange, golden yellow, terracotta |\n| `elegant` | Sophisticated, refined — soft coral, muted teal, dusty rose |\n| `cool` | Technical, professional — engineering blue, navy, cyan |\n| `dark` | Cinematic, premium — electric purple, cyan, magenta |\n| `earth` | Natural, organic — forest green, sage, earth brown |\n| `vivid` | Energetic, bold — bright red, neon green, electric blue |\n| `pastel` | Gentle, whimsical — soft pink, mint, lavender |\n| `mono` | Clean, focused — black, near-black, white |\n| `retro` | Nostalgic, vintage — muted orange, dusty pink, maroon |\n\n## Rendering Options\n\n| Value | Description |\n|-------|-------------|\n| `flat-vector` | Clean outlines, uniform fills, geometric icons |\n| `hand-drawn` | Sketchy, organic, imperfect strokes, paper texture |\n| `painterly` | Soft brush strokes, color bleeds, watercolor feel |\n| `digital` | Polished, precise edges, subtle gradients, UI components |\n| `pixel` | Pixel grid, dithering, chunky 8-bit shapes |\n| `chalk` | Chalk strokes, dust effects, blackboard texture |\n\n## Text Options\n\n| Value | Description |\n|-------|-------------|\n| `none` | Pure visual, no text elements |\n| `title-only` | Single headline |\n| `title-subtitle` | Title + subtitle |\n| `text-rich` | Title + subtitle + keyword tags (2-4) |\n\n## Mood Options\n\n| Value | Description |\n|-------|-------------|\n| `subtle` | Low contrast, muted colors, calm aesthetic |\n| `balanced` | Medium contrast, normal saturation, versatile |\n| `bold` | High contrast, vivid colors, dynamic energy |\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## Aspect Ratio Options\n\n| Value | Description | Best For |\n|-------|-------------|----------|\n| `2.35:1` | Cinematic widescreen | Article headers, blog covers |\n| `16:9` | Standard widescreen | Presentations, video thumbnails |\n| `1:1` | Square | Social media, profile images |\n\n## Custom Palette Fields\n\n| Field | Required | Description |\n|-------|----------|-------------|\n| `name` | Yes | Unique palette identifier (kebab-case) |\n| `description` | Yes | What the palette conveys |\n| `colors.primary` | No | Main colors (array of hex) |\n| `colors.background` | No | Background color (hex) |\n| `colors.accents` | No | Accent colors (array of hex) |\n| `decorative_hints` | No | Decorative elements and patterns |\n| `best_for` | No | Recommended content types |\n\n## Example: Minimal Preferences\n\n```yaml\n---\nversion: 3\nwatermark:\n  enabled: true\n  content: \"@myhandle\"\npreferred_type: null\npreferred_palette: elegant\npreferred_rendering: hand-drawn\npreferred_text: title-only\npreferred_mood: balanced\nquick_mode: false\n---\n```\n\n## Example: Full Preferences\n\n```yaml\n---\nversion: 3\nwatermark:\n  enabled: true\n  content: \"myblog.com\"\n  position: bottom-right\n\npreferred_type: conceptual\n\npreferred_palette: cool\n\npreferred_rendering: digital\n\npreferred_text: title-subtitle\n\npreferred_mood: subtle\n\ndefault_aspect: \"16:9\"\n\nquick_mode: true\n\nlanguage: en\n\npreferred_image_backend: codex-imagegen\n\ncustom_palettes:\n  - name: corporate-tech\n    description: \"Professional B2B tech palette\"\n    colors:\n      primary: [\"#1E3A5F\", \"#4A90D9\"]\n      background: \"#F5F7FA\"\n      accents: [\"#00B4D8\", \"#48CAE4\"]\n    decorative_hints: \"Clean lines, subtle gradients, circuit patterns\"\n    best_for: \"SaaS, enterprise, technical\"\n---\n```\n\n## Migration from v2\n\nWhen loading v2 schema, auto-upgrade:\n\n| v2 Field | v3 Field | Migration |\n|----------|----------|-----------|\n| `version: 2` | `version: 3` | Update |\n| `preferred_style` | `preferred_palette` + `preferred_rendering` | Use preset mapping table |\n| `custom_styles` | `custom_palettes` | Rename, restructure fields |\n\n**Style → Palette + Rendering mapping**:\n\n| v2 `preferred_style` | v3 `preferred_palette` | v3 `preferred_rendering` |\n|----------------------|----------------------|-------------------------|\n| `elegant` | `elegant` | `hand-drawn` |\n| `blueprint` | `cool` | `digital` |\n| `chalkboard` | `dark` | `chalk` |\n| `dark-atmospheric` | `dark` | `digital` |\n| `editorial-infographic` | `cool` | `digital` |\n| `fantasy-animation` | `pastel` | `painterly` |\n| `flat-doodle` | `pastel` | `flat-vector` |\n| `intuition-machine` | `retro` | `digital` |\n| `minimal` | `mono` | `flat-vector` |\n| `nature` | `earth` | `hand-drawn` |\n| `notion` | `mono` | `digital` |\n| `pixel-art` | `vivid` | `pixel` |\n| `playful` | `pastel` | `hand-drawn` |\n| `retro` | `retro` | `digital` |\n| `sketch-notes` | `warm` | `hand-drawn` |\n| `vector-illustration` | `retro` | `flat-vector` |\n| `vintage` | `retro` | `hand-drawn` |\n| `warm` | `warm` | `hand-drawn` |\n| `watercolor` | `earth` | `painterly` |\n| null (auto) | null | null |\n\n**Custom style migration**:\n\n| v2 Field | v3 Field |\n|----------|----------|\n| `custom_styles[].name` | `custom_palettes[].name` |\n| `custom_styles[].description` | `custom_palettes[].description` |\n| `custom_styles[].color_palette` | `custom_palettes[].colors` |\n| `custom_styles[].visual_elements` | `custom_palettes[].decorative_hints` |\n| `custom_styles[].typography` | (removed — determined by rendering) |\n| `custom_styles[].best_for` | `custom_palettes[].best_for` |\n\n## Migration from v1\n\nWhen loading v1 schema, auto-upgrade to v3:\n\n| v1 Field | v3 Field | Default Value |\n|----------|----------|---------------|\n| (missing) | `version` | 3 |\n| (missing) | `preferred_palette` | null |\n| (missing) | `preferred_rendering` | null |\n| (missing) | `preferred_text` | title-only |\n| (missing) | `preferred_mood` | balanced |\n| (missing) | `quick_mode` | false |\n\nv1 `--no-title` flag maps to `preferred_text: none`.\n\nFile v1.117.4:references/config/watermark-guide.md\n\n---\nname: watermark-guide\ndescription: Watermark configuration guide for baoyu-cover-image\n---\n\n# Watermark Guide\n\n## Position Diagram\n\n```\n┌─────────────────────────────┐\n│                  [top-right]│\n│                             │\n│                             │\n│       COVER IMAGE           │\n│                             │\n│                             │\n│[bottom-left][bottom-center][bottom-right]│\n└─────────────────────────────┘\n```\n\n## Position Recommendations\n\n| Position | Best For | Avoid When |\n|----------|----------|------------|\n| `bottom-right` | Default choice, most common | Title in bottom-right |\n| `bottom-left` | Right-heavy layouts | Key visual in bottom-left |\n| `bottom-center` | Centered designs | Text-heavy bottom area |\n| `top-right` | Bottom-heavy content | Title/header in top-right |\n\n## Content Format\n\n| Format | Example | Style |\n|--------|---------|-------|\n| Handle | `@username` | Social media |\n| Domain | `myblog.com` | Cross-platform |\n| Brand | `MyBrand` | Simple branding |\n| Chinese | `博客名` | Chinese platforms |\n\n## Best Practices\n\n1. **Consistency**: Use same watermark across all covers\n2. **Legibility**: Ensure watermark readable on both light/dark areas\n3. **Size**: Keep subtle - should not distract from content\n\n## Prompt Integration\n\nWhen watermark is enabled, add to image generation prompt:\n\n```\nInclude a subtle watermark \"[content]\" positioned at [position].\nThe watermark should be legible but not distracting from the main content.\n```\n\n## Cover-Specific Considerations\n\n| Aspect Ratio | Recommended Position | Notes |\n|--------------|---------------------|-------|\n| 2.35:1 | bottom-right | Cinematic - keep corners clean |\n| 16:9 | bottom-right | Standard - flexible placement |\n| 1:1 | bottom-center | Square - centered often works better |\n\n## Common Issues\n\n| Issue | Solution |\n|-------|----------|\n| Watermark invisible | Adjust position or check contrast |\n| Watermark too prominent | Change position or reduce size |\n| Watermark overlaps title | Change position or reduce title area |\n\nFile v1.117.4:references/dimensions/font.md\n\n---\nname: font-dimension\ndescription: Typography style dimension for cover images\n---\n\n# Font Dimension\n\nControls typography style and character feel.\n\n## Values\n\n| Font | Visual Style | Line Quality | Character |\n|------|--------------|--------------|-----------|\n| `clean` | Geometric sans-serif | Sharp, uniform | Modern, precise, neutral |\n| `handwritten` | Hand-lettered, brush | Organic, varied | Warm, personal, friendly |\n| `serif` | Classic serifs, elegant | Refined, structured | Editorial, authoritative |\n| `display` | Bold, decorative | Heavy, expressive | Attention-grabbing, playful |\n\n## Detail\n\n### clean\n\nModern, universal typography with neutral character.\n\n**Characteristics**:\n- Geometric sans-serif letterforms\n- Sharp, uniform line weight\n- Clean edges, no flourishes\n- High readability at all sizes\n- Minimal personality, maximum clarity\n\n**Use Cases**:\n- Technical documentation\n- Professional/corporate content\n- Minimal design approaches\n- Data-driven articles\n- Modern brand aesthetics\n\n**Prompt Hints**:\n- Use clean geometric sans-serif typography\n- Modern, minimal letterforms\n- Sharp edges, uniform stroke weight\n- High contrast against background\n\n### handwritten\n\nWarm, organic typography with personal character.\n\n**Characteristics**:\n- Hand-lettered or brush style\n- Organic, varied line weight\n- Natural imperfections\n- Approachable, human feel\n- Casual yet intentional\n\n**Use Cases**:\n- Personal stories\n- Lifestyle content\n- Wellness and self-improvement\n- Creative tutorials\n- Friendly brand voices\n\n**Prompt Hints**:\n- Use warm hand-lettered typography with organic brush strokes\n- Friendly, personal feel\n- Natural variation in stroke weight\n- Approachable, human character\n\n### serif\n\nClassic, elegant typography with editorial authority.\n\n**Characteristics**:\n- Traditional serif letterforms\n- Refined, structured strokes\n- Elegant proportions\n- Timeless sophistication\n- Formal, trustworthy feel\n\n**Use Cases**:\n- Editorial content\n- Academic articles\n- Luxury brand content\n- Historical topics\n- Literary pieces\n\n**Prompt Hints**:\n- Use elegant serif typography with refined letterforms\n- Classic, editorial character\n- Structured, proportional spacing\n- Authoritative, sophisticated feel\n\n### display\n\nBold, decorative typography for maximum impact.\n\n**Characteristics**:\n- Heavy, expressive letterforms\n- Decorative elements\n- Strong visual presence\n- Playful or dramatic character\n- Designed for headlines\n\n**Use Cases**:\n- Announcements\n- Entertainment content\n- Promotional materials\n- Event marketing\n- Gaming topics\n\n**Prompt Hints**:\n- Use bold decorative display typography\n- Heavy, expressive headlines\n- Strong visual impact\n- Attention-grabbing character\n\n## Default\n\n`clean` — Universal, pairs well with most rendering styles.\n\n## Rendering Compatibility\n\n| Font × Rendering | flat-vector | hand-drawn | painterly | digital | pixel | chalk | screen-print |\n|------------------|:-----------:|:----------:|:---------:|:-------:|:-----:|:-----:|:------------:|\n| clean | ✓✓ | ✗ | ✗ | ✓✓ | ✓ | ✗ | ✓ |\n| handwritten | ✓ | ✓✓ | ✓✓ | ✓ | ✗ | ✓✓ | ✗ |\n| serif | ✓ | ✗ | ✓ | ✓✓ | ✗ | ✗ | ✓ |\n| display | ✓✓ | ✓ | ✓ | ✓✓ | ✓✓ | ✓ | ✓✓ |\n\n✓✓ = highly recommended | ✓ = compatible | ✗ = not recommended\n\n## Type Compatibility\n\n| Font × Type | hero | conceptual | typography | metaphor | scene | minimal |\n|-------------|:----:|:----------:|:----------:|:--------:|:-----:|:-------:|\n| clean | ✓ | ✓✓ | ✓✓ | ✓ | ✗ | ✓✓ |\n| handwritten | ✓✓ | ✓ | ✓ | ✓✓ | ✓✓ | ✓ |\n| serif | ✓ | ✓ | ✓✓ | ✓ | ✓ | ✓ |\n| display | ✓✓ | ✓ | ✓✓ | ✓ | ✓ | ✗ |\n\n## Palette Interaction\n\nFont style adapts to palette characteristics:\n\n| Palette Category | clean | handwritten | serif | display |\n|------------------|-------|-------------|-------|---------|\n| Warm (warm, earth, pastel) | Softer weight | Natural fit | Warm tones | Playful energy |\n| Cool (cool, mono, elegant) | Perfect match | Contrast | Classic pairing | Bold statement |\n| Dark (dark, vivid) | High contrast | Glow effects | Dramatic | Maximum impact |\n| Vintage (retro) | Modern contrast | Nostalgic fit | Period-appropriate | Retro headlines |\n| Duotone (duotone) | Sharp contrast | Not recommended | Dramatic pairing | Cinematic impact |\n\n## Auto Selection\n\nWhen `--font` is omitted, select based on signals:\n\n| Signals | Font |\n|---------|------|\n| Personal, lifestyle, human, warm, friendly, story | `handwritten` |\n| Technical, professional, clean, modern, minimal, data | `clean` |\n| Editorial, academic, luxury, classic, literary | `serif` |\n| Announcement, entertainment, promotion, bold, event, gaming | `display` |\n\nDefault: `clean`\n\nFile v1.117.4:references/dimensions/mood.md\n\n---\nname: mood-dimension\ndescription: Emotional intensity dimension for cover images\n---\n\n# Mood Dimension\n\nControls emotional intensity and visual weight of cover images.\n\n## Values\n\n| Value | Contrast | Saturation | Weight | Energy |\n|-------|:--------:|:----------:|:------:|:------:|\n| `subtle` | Low | Muted | Light | Calm |\n| `balanced` | Medium | Normal | Medium | Moderate |\n| `bold` | High | Vivid | Heavy | Dynamic |\n\n## Detail\n\n### subtle\n\nCalm, understated visual presence.\n\n**Characteristics**:\n- Low contrast between elements\n- Muted, desaturated colors\n- Light visual weight\n- Gentle, refined aesthetic\n- Soft edges and transitions\n\n**Use Cases**:\n- Thought leadership content\n- Professional/corporate communications\n- Meditation, wellness topics\n- Academic or scholarly articles\n- Luxury brand aesthetics\n\n**Color Guidance**:\n- Pastels, earth tones, neutrals\n- Low saturation (30-50%)\n- Soft gradients\n- Minimal color variety (2-3 colors)\n\n### balanced\n\nVersatile, harmonious visual presence.\n\n**Characteristics**:\n- Medium contrast\n- Natural saturation levels\n- Balanced visual weight\n- Clear but not aggressive\n- Standard aesthetic approach\n\n**Use Cases**:\n- General articles (default)\n- Most blog content\n- Educational material\n- Product documentation\n- News and updates\n\n**Color Guidance**:\n- Standard saturation (50-70%)\n- Complementary color schemes\n- Clear foreground/background separation\n- Moderate color variety (3-4 colors)\n\n### bold\n\nDynamic, high-impact visual presence.\n\n**Characteristics**:\n- High contrast between elements\n- Vivid, saturated colors\n- Heavy visual weight\n- Energetic, attention-grabbing\n- Sharp edges and strong shapes\n\n**Use Cases**:\n- Product launches\n- Promotional announcements\n- Event marketing\n- Call-to-action content\n- Entertainment/gaming topics\n\n**Color Guidance**:\n- High saturation (70-100%)\n- Vibrant, primary colors\n- Strong contrast ratios\n- Dynamic color combinations (4+ colors)\n\n## Type Compatibility\n\n| Type | subtle | balanced | bold |\n|------|:------:|:--------:|:----:|\n| hero | ✓ | ✓✓ | ✓✓ |\n| conceptual | ✓✓ | ✓✓ | ✓ |\n| typography | ✓ | ✓✓ | ✓✓ |\n| metaphor | ✓✓ | ✓✓ | ✓ |\n| scene | ✓✓ | ✓✓ | ✓ |\n| minimal | ✓✓ | ✓✓ | ✗ |\n\n✓✓ = highly recommended | ✓ = compatible | ✗ = not recommended\n\n## Palette Interaction\n\nMood modifies the base palette characteristics:\n\n| Palette Category | subtle | balanced | bold |\n|------------------|--------|----------|------|\n| Warm palettes (warm, earth, pastel) | More whitespace, softer tones | Standard colors | Deeper, richer warm tones |\n| Cool palettes (cool, mono, elegant) | Lighter lines, muted colors | Standard colors | Stronger contrast, sharper definition |\n| Dark palettes (dark, vivid) | Reduced contrast, softer glow | Standard colors | Maximum impact, vivid saturation |\n| Vintage palettes (retro) | More faded, sepia-heavy | Standard colors | Bolder retro contrasts |\n| Duotone palettes (duotone) | Softer contrast between pair | Standard two-color split | Maximum contrast, stark separation |\n\n## Rendering Interaction\n\nMood adjusts rendering characteristics:\n\n| Rendering | subtle | balanced | bold |\n|-----------|--------|----------|------|\n| flat-vector | Thinner strokes, lighter fills | Standard weight | Thicker strokes, stronger fills |\n| hand-drawn | Lighter pencil pressure, more space | Standard strokes | Heavier marker strokes, denser elements |\n| painterly | Diluted washes, more white | Standard brush | Thicker paint, saturated strokes |\n| digital | Reduced shadows, lower contrast | Standard rendering | Stronger shadows, sharper edges |\n| pixel | Fewer colors, simpler shapes | Standard palette | More colors, denser pixel detail |\n| chalk | Lighter chalk, more board showing | Standard chalk | Heavy chalk, vivid colors, dense marks |\n| screen-print | Fewer colors (2), lighter halftone | Standard 3-4 colors, medium halftone | More colors (4-5), dense halftone, stronger misregistration |\n\n## Auto Selection\n\nWhen `--mood` is omitted, select based on signals:\n\n| Signals | Mood Level |\n|---------|------------|\n| Professional, corporate, thought leadership, academic, luxury | `subtle` |\n| General, educational, standard, blog, documentation | `balanced` |\n| Launch, announcement, promotion, event, gaming, entertainment | `bold` |\n\nDefault: `balanced`\n\nFile v1.117.4:references/dimensions/text.md\n\n---\nname: text-dimension\ndescription: Text density dimension for cover images\n---\n\n# Text Dimension\n\nControls text density and information hierarchy on cover images.\n\n## Values\n\n| Value | Title | Subtitle | Tags | Visual Area |\n|-------|:-----:|:--------:|:----:|:-----------:|\n| `none` | - | - | - | 100% |\n| `title-only` | ✓ | - | - | 85% |\n| `title-subtitle` | ✓ | ✓ | - | 75% |\n| `text-rich` | ✓ | ✓ | ✓ (2-4) | 60% |\n\n## Detail\n\n### none\n\nPure visual cover with no text elements.\n\n**Use Cases**:\n- Photography-focused covers\n- Abstract art pieces\n- Visual-only social sharing\n- When title added externally\n\n**Composition**:\n- Full visual area available\n- No reserved text zones\n- Emphasis on visual metaphor\n\n### title-only\n\nSingle headline, maximum impact.\n\n**Use Cases**:\n- Most article covers (default)\n- Clear single message\n- Strong brand recognition\n\n**Composition**:\n- Title: prominent placement\n- Reserved zone: top or bottom 15%\n- Visual supports title message\n\n**Title Guidelines**:\n- Use exact title from source content or user-provided title\n- Do NOT invent or modify titles\n- Match content language\n\n### title-subtitle\n\nTitle with supporting context.\n\n**Use Cases**:\n- Technical articles needing clarification\n- Series with episode/part info\n- Content with dual messages\n\n**Composition**:\n- Title: primary element\n- Subtitle: secondary element\n- Reserved zone: 25%\n- Clear hierarchy between title/subtitle\n\n**Title Guidelines**:\n- Use exact title from source content or user-provided title\n- Do NOT invent or modify titles\n\n**Subtitle Guidelines**:\n- Clarify or contextualize title\n- Can include series name, author, date\n- Smaller, less prominent than title\n\n### text-rich\n\nInformation-dense cover with multiple text elements.\n\n**Use Cases**:\n- Infographic-style covers\n- Event announcements with details\n- Promotional material with features\n- Content with multiple key points\n\n**Composition**:\n- Title: primary focus\n- Subtitle: supporting info\n- Tags: 2-4 keyword labels\n- Reserved zone: 40%\n- Clear visual hierarchy\n\n**Title Guidelines**:\n- Use exact title from source content or user-provided title\n- Do NOT invent or modify titles\n\n**Tag Guidelines**:\n- 2-4 tags maximum\n- Short keywords (1-2 words each)\n- Positioned as badges/labels\n- Can highlight: category, date, author, key features\n\n## Type Compatibility\n\n| Type | none | title-only | title-subtitle | text-rich |\n|------|:----:|:----------:|:--------------:|:---------:|\n| hero | ✓ | ✓✓ | ✓✓ | ✓ |\n| conceptual | ✓✓ | ✓✓ | ✓ | ✓ |\n| typography | ✗ | ✓ | ✓✓ | ✓✓ |\n| metaphor | ✓✓ | ✓ | ✓ | ✗ |\n| scene | ✓✓ | ✓ | ✓ | ✗ |\n| minimal | ✓✓ | ✓✓ | ✓ | ✗ |\n\n✓✓ = highly recommended | ✓ = compatible | ✗ = not recommended\n\n## Auto Selection\n\nWhen `--text` is omitted, select based on signals:\n\n| Signals | Text Level |\n|---------|------------|\n| Visual-only, photography, abstract, art | `none` |\n| Article, blog, standard cover | `title-only` |\n| Series, tutorial, technical with context | `title-subtitle` |\n| Announcement, features, multiple points, infographic | `text-rich` |\n\nDefault: `title-only`\n\nFile v1.117.4:references/palettes/cool.md\n\n# cool\n\nTechnical, professional, precise\n\n## Color Palette\n\n| Role | Color | Hex |\n|------|-------|-----|\n| Primary 1 | Engineering Blue | #2563EB |\n| Primary 2 | Navy Blue | #1E3A5F |\n| Primary 3 | Cyan | #06B6D4 |\n| Background | Light Gray | #F8F9FA |\n| Background Alt | Blueprint Off-White | #FAF8F5 |\n| Accent 1 | Amber | #F59E0B |\n| Accent 2 | Light Blue | #BFDBFE |\n\n## Decorative Hints\n\n- Grid lines and alignment guides\n- Dimension indicators and measurements\n- Technical schematics and diagrams\n- Geometric precision elements\n\n## Semantic Constraint\n\nDo NOT render color names, hex codes, or role labels as visible text in the image.\n\n## Best For\n\nArchitecture, system design, API, technical documentation, engineering, data analysis\n\nArchive v1.117.3: 35 files, 49232 bytes\n\nFiles: references/auto-selection.md (2837b), references/base-prompt.md (5452b), references/compatibility.md (2421b), references/config/first-time-setup.md (5950b), references/config/preferences-schema.md (8946b), references/config/watermark-guide.md (2217b), references/dimensions/font.md (4788b), references/dimensions/mood.md (4366b), references/dimensions/text.md (3167b), references/palettes/cool.md (743b), references/palettes/dark.md (753b), references/palettes/duotone.md (1407b), references/palettes/earth.md (734b), references/palettes/elegant.md (729b), references/palettes/macaron.md (769b), references/palettes/mono.md (716b), references/palettes/pastel.md (715b), references/palettes/retro.md (933b), references/palettes/vivid.md (751b), references/palettes/warm.md (721b), references/renderings/chalk.md (1086b), references/renderings/digital.md (1080b), references/renderings/flat-vector.md (1241b), references/renderings/hand-drawn.md (1036b), references/renderings/painterly.md (1045b), references/renderings/pixel.md (961b), references/renderings/screen-print.md (1502b), references/style-presets.md (1521b), references/types.md (1376b), references/visual-elements.md (3274b), references/workflow/confirm-options.md (5132b), references/workflow/prompt-template.md (11343b), references/workflow/reference-images.md (4562b), SKILL.md (18830b), _meta.json (138b)\n\nFile v1.117.3:SKILL.md\n\n---\nname: baoyu-cover-image\ndescription: Generates article cover images with 5 dimensions (type, palette, rendering, text, mood) combining 11 color palettes and 7 rendering styles. Supports cinematic (2.35:1), widescreen (16:9), and square (1:1) aspects. Use when user asks to \"generate cover image\", \"create article cover\", or \"make cover\".\nversion: 1.117.3\nmetadata:\n  openclaw:\n    homepage: https://github.com/JimLiu/baoyu-skills#baoyu-cover-image\n---\n\n# Cover Image Generator\n\nGenerate elegant cover images for articles with 5-dimensional customization.\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   - **Codex via `codex exec` (`codex-imagegen`)** — if the current runtime does NOT expose a native `imagegen` skill but the `codex` CLI is on `PATH` and `codex login` is active (e.g., Claude Code with Codex CLI installed), invoke the `codex-imagegen` wrapper. **Path resolution**: `scripts/codex-imagegen.sh` lives at the plugin/repo root, NOT relative to your shell cwd. From this `SKILL.md`'s base directory, the wrapper is at `../../scripts/codex-imagegen.sh` — resolve to an absolute path before invoking. Command shape:\n     ```bash\n     <ABSOLUTE_PLUGIN_ROOT>/scripts/codex-imagegen.sh \\\n       --image <absolute_output_path> \\\n       --prompt-file <absolute_path_to_prompts/NN-cover-[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     `--timeout` defaults to 300000 (5 min) per codex exec attempt; raise it (e.g. `--timeout 600000` for 10 min) on slow networks or large prompts.\n     All input paths to the wrapper are auto-resolved against the wrapper's `process.cwd()` if you pass relative ones, but agents should pass absolute paths to be robust against cwd drift. Parse the single-line JSON on stdout. On `{\"status\":\"ok\",...}` proceed to Step 5. On `{\"status\":\"error\",\"error_kind\":...}` report the `error_kind` to the user and (if retryable) ask whether to retry or fall back to another backend. The wrapper uses the user's Codex subscription — no `OPENAI_API_KEY` needed.\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 title/subtitle text inside an already generated cover image. If text is wrong or unclear, regenerate from a corrected prompt, switch to a lower-text or no-title variant, 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## Confirmation Policy\n\nDefault behavior: **confirm before generation**.\n\n- Treat explicit skill invocation, a file path, matched keywords/presets, `EXTEND.md` defaults, and any documented auto-selection as **recommendation inputs only**. None of them authorizes skipping confirmation.\n- Do **not** start Step 3 or Step 4 until the user confirms the dimensions / aspect / language / backend choices.\n- Skip confirmation only when the current request explicitly says to do so, for example: `--quick`, \"直接生成\", \"不用确认\", \"跳过确认\", \"按默认出图\", or equivalent wording. `quick_mode: true` in `EXTEND.md` counts as a standing explicit opt-out — set it only when you want every run to skip Step 2.\n- If confirmation is skipped explicitly, state the assumed dimensions / aspect / language / backend in the next user-facing update before generating.\n\n## Options\n\n| Option | Description |\n|--------|-------------|\n| `--type <name>` | hero, conceptual, typography, metaphor, scene, minimal |\n| `--palette <name>` | warm, elegant, cool, dark, earth, vivid, pastel, mono, retro, duotone, macaron |\n| `--rendering <name>` | flat-vector, hand-drawn, painterly, digital, pixel, chalk, screen-print |\n| `--style <name>` | Preset shorthand (see [Style Presets](references/style-presets.md)) |\n| `--text <level>` | none, title-only, title-subtitle, text-rich |\n| `--mood <level>` | subtle, balanced, bold |\n| `--font <name>` | clean, handwritten, serif, display |\n| `--aspect <ratio>` | 16:9 (default), 2.35:1, 4:3, 3:2, 1:1, 3:4 |\n| `--lang <code>` | Title language (en, zh, ja, etc.) |\n| `--no-title` | Alias for `--text none` |\n| `--quick` | Skip confirmation, use auto-selection |\n| `--ref <files...>` | Reference images for style/composition guidance |\n\n## Five Dimensions\n\n| Dimension | Values | Default |\n|-----------|--------|---------|\n| **Type** | hero, conceptual, typography, metaphor, scene, minimal | auto |\n| **Palette** | warm, elegant, cool, dark, earth, vivid, pastel, mono, retro, duotone, macaron | auto |\n| **Rendering** | flat-vector, hand-drawn, painterly, digital, pixel, chalk, screen-print | auto |\n| **Text** | none, title-only, title-subtitle, text-rich | title-only |\n| **Mood** | subtle, balanced, bold | balanced |\n| **Font** | clean, handwritten, serif, display | clean |\n\nAuto-selection rules: [references/auto-selection.md](references/auto-selection.md)\n\n## Galleries\n\n**Types**: hero, conceptual, typography, metaphor, scene, minimal\n→ Details: [references/types.md](references/types.md)\n\n**Palettes**: warm, elegant, cool, dark, earth, vivid, pastel, mono, retro, duotone, macaron\n→ Details: [references/palettes/](references/palettes/)\n\n**Renderings**: flat-vector, hand-drawn, painterly, digital, pixel, chalk, screen-print\n→ Details: [references/renderings/](references/renderings/)\n\n**Text Levels**: none (pure visual) | title-only (default) | title-subtitle | text-rich (with tags)\n→ Details: [references/dimensions/text.md](references/dimensions/text.md)\n\n**Mood Levels**: subtle (low contrast) | balanced (default) | bold (high contrast)\n→ Details: [references/dimensions/mood.md](references/dimensions/mood.md)\n\n**Fonts**: clean (sans-serif) | handwritten | serif | display (bold decorative)\n→ Details: [references/dimensions/font.md](references/dimensions/font.md)\n\n## File Structure\n\nOutput directory per `default_output_dir` preference:\n- `same-dir`: `{article-dir}/`\n- `imgs-subdir`: `{article-dir}/imgs/`\n- `independent` (default): `cover-image/{topic-slug}/`\n\n```\n<output-dir>/\n├── source-{slug}.{ext}    # Source files\n├── refs/                  # Reference images (if provided)\n│   ├── ref-01-{slug}.{ext}\n│   └── ref-01-{slug}.md   # Description file\n├── prompts/cover.md       # Generation prompt\n└── cover.png              # Output image\n```\n\n**Slug**: 2-4 words, kebab-case. Conflict: append `-YYYYMMDD-HHMMSS`\n\n## Workflow\n\n### Progress Checklist\n\n```\nCover Image Progress:\n- [ ] Step 0: Check preferences (EXTEND.md) ⛔ BLOCKING\n- [ ] Step 1: Analyze content + save refs + determine output dir\n- [ ] Step 2: Confirm options (6 dimensions) ⚠️ unless --quick\n- [ ] Step 3: Create prompt\n- [ ] Step 4: Generate image\n- [ ] Step 5: Completion report\n```\n\n### Flow\n\n```\nInput → [Step 0: Preferences] ─┬─ Found → Continue\n                               └─ Not found → First-Time Setup ⛔ BLOCKING → Save EXTEND.md → Continue\n        ↓\nAnalyze + Save Refs → [Output Dir] → [Confirm: 6 Dimensions] → Prompt → Generate → Complete\n                                              ↓\n                                     (skip if --quick or all specified)\n```\n\n### Step 0: Load Preferences ⛔ BLOCKING\n\nCheck EXTEND.md in priority order — the first one found wins:\n\n| Priority | Path | Scope |\n|----------|------|-------|\n| 1 | `.baoyu-skills/baoyu-cover-image/EXTEND.md` | Project |\n| 2 | `${XDG_CONFIG_HOME:-$HOME/.config}/baoyu-skills/baoyu-cover-image/EXTEND.md` | XDG |\n| 3 | `$HOME/.baoyu-skills/baoyu-cover-image/EXTEND.md` | User home |\n\n| Result | Action |\n|--------|--------|\n| Found | Load, display summary → Continue |\n| Not found | ⛔ Run first-time setup ([references/config/first-time-setup.md](references/config/first-time-setup.md)) → Save → Continue |\n\n**CRITICAL**: If not found, complete setup BEFORE any other steps or questions.\n\n### Step 1: Analyze Content\n\n1. **Save reference images** (if provided) → [references/workflow/reference-images.md](references/workflow/reference-images.md)\n2. **Save source content** (if pasted, save to `source.md`)\n3. **Analyze content**: topic, tone, keywords, visual metaphors\n4. **Deep analyze references** ⚠️: Extract specific, concrete elements (see reference-images.md)\n5. **Detect language**: Compare source, user input, EXTEND.md preference\n6. **Determine output directory**: Per File Structure rules\n\n**⚠️ People in Reference Images:**\n\nIf reference images contain **people** who should appear in the cover:\n\n- **Model supports `--ref`** (default): Copy image to `refs/`, pass via `--ref` at generation. No description file needed — the model sees the face directly.\n- **Model does NOT support `--ref`** (Jimeng, Seedream 3.0): Create `refs/ref-NN-{slug}.md` with per-character description (hair, glasses, skin tone, clothing). Embed as MUST/REQUIRED instructions in prompt text.\n\nSee [reference-images.md](references/workflow/reference-images.md) for full decision table.\n\n### Step 2: Confirm Options ⚠️\n\n**Hard gate**: this step is mandatory per the [Confirmation Policy](#confirmation-policy) — Steps 3–4 cannot start until the user confirms here (or explicitly opts out with `--quick` / `quick_mode: true` / equivalent wording in the current request).\n\n**MUST use `AskUserQuestion` tool** to present options as interactive selection — NOT plain text tables. Present up to 4 questions in a single `AskUserQuestion` call (Type, Palette, Rendering, Font + Settings). Each question shows the recommended option first with reason, followed by alternatives.\n\nFull confirmation flow and question format: [references/workflow/confirm-options.md](references/workflow/confirm-options.md)\n\n| Condition | Skipped | Still Asked |\n|-----------|---------|-------------|\n| `--quick` or `quick_mode: true` | 6 dimensions | Aspect ratio (unless `--aspect`) |\n| All 6 + `--aspect` specified | All | None |\n\n### Step 3: Create Prompt\n\nSave to `prompts/cover.md`. Template: [references/workflow/prompt-template.md](references/workflow/prompt-template.md)\n\n**CRITICAL - References in Frontmatter**:\n- Files saved to `refs/` → Add to frontmatter `references` list\n- Style extracted verbally (no file) → Omit `references`, describe in body\n- Before writing → Verify: `test -f refs/ref-NN-{slug}.{ext}`\n\n**Reference elements in body** MUST be detailed, prefixed with \"MUST\"/\"REQUIRED\", with integration approach.\n\n### Step 4: Generate Image\n\n1. **Backup existing** `cover.png` if regenerating\n2. **Select 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.\n3. **Write the full final prompt** to `prompts/01-cover-[slug].md` (hard requirement) BEFORE invoking the backend.\n4. **Process references** from prompt frontmatter:\n   - `direct` usage → pass via `--ref` (use ref-capable backend)\n   - `style`/`palette` → extract traits, append to prompt\n5. **Generate**: Call the chosen backend with the prompt file, output path, aspect ratio.\n   - **`codex-imagegen`**: invoke `<ABSOLUTE_PLUGIN_ROOT>/scripts/codex-imagegen.sh` (NOT a cwd-relative `./scripts/...` — resolve the absolute path from this skill's base directory: `../../scripts/codex-imagegen.sh`) with `--image <ABSOLUTE_output>` `--prompt-file <ABSOLUTE_prompts/01-cover-[slug].md>` `--aspect <ratio>` (add `--ref <ABSOLUTE_file>` per reference, `--cache-dir ~/.cache/baoyu-codex-imagegen` to enable the idempotency cache, `--timeout <ms>` to override the default 300000 / 5-min per-attempt limit on slow networks). All input paths to the wrapper are auto-resolved against its `process.cwd()` if relative, but passing absolutes is more robust. Read the stdout JSON; act on `status` and `error_kind`.\n   - **Codex `imagegen` (native)** or other runtime-native tools / `baoyu-imagine` skill: per the rule in `## Image Generation Tools` above.\n6. On failure: auto-retry once\n\n### Step 5: Completion Report\n\n```\nCover Generated!\n\nTopic: [topic]\nType: [type] | Palette: [palette] | Rendering: [rendering]\nText: [text] | Mood: [mood] | Font: [font] | Aspect: [ratio]\nTitle: [title or \"visual only\"]\nLanguage: [lang] | Watermark: [enabled/disabled]\nReferences: [N images or \"extracted style\" or \"none\"]\nLocation: [directory path]\n\nFiles:\n✓ source-{slug}.{ext}\n✓ prompts/cover.md\n✓ cover.png\n```\n\n## Image Modification\n\n| Action | Steps |\n|--------|-------|\n| **Regenerate** | Backup → Update prompt file FIRST → Regenerate |\n| **Change dimension** | Backup → Confirm new value → Update prompt → Regenerate |\n\nText correction policy:\n\n- If the title/subtitle 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## Composition Principles\n\n- **Whitespace**: 40-60% breathing room\n- **Visual anchor**: Main element centered or offset left\n- **Characters**: Simplified silhouettes; NO realistic humans\n- **Title**: Use exact title from user/source; never invent\n\n## Changing Preferences\n\nEXTEND.md lives at the path noted in **Step 0**. Three ways to change it:\n\n- **Edit directly** — open EXTEND.md and change fields. Full schema: [references/config/preferences-schema.md](references/config/preferences-schema.md).\n- **Reconfigure interactively** — delete EXTEND.md (or ask \"reconfigure baoyu-cover-image 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-imagine` — pin to the baoyu-imagine skill.\n  - `preferred_image_backend: ask` — confirm backend every run.\n  - `watermark.enabled: true`, `preferred_type`, `preferred_palette`, `preferred_rendering`, `default_aspect`, `quick_mode: true`, `language` — shift the auto-selection defaults and confirmation flow.\n\n## References\n\n**Dimensions**: [text.md](references/dimensions/text.md) | [mood.md](references/dimensions/mood.md) | [font.md](references/dimensions/font.md)\n**Palettes**: [references/palettes/](references/palettes/)\n**Renderings**: [references/renderings/](references/renderings/)\n**Types**: [references/types.md](references/types.md)\n**Auto-Selection**: [references/auto-selection.md](references/auto-selection.md)\n**Style Presets**: [references/style-presets.md](references/style-presets.md)\n**Compatibility**: [references/compatibility.md](references/compatibility.md)\n**Visual Elements**: [references/visual-elements.md](references/visual-elements.md)\n**Workflow**: [confirm-options.md](references/workflow/confirm-options.md) | [prompt-template.md](references/workflow/prompt-template.md) | [reference-images.md](references/workflow/reference-images.md)\n**Config**: [preferences-schema.md](references/config/preferences-schema.md) | [first-time-setup.md](references/config/first-time-setup.md) | [watermark-guide.md](references/config/watermark-guide.md)\n\nFile v1.117.3:_meta.json\n\n{\n  \"ownerId\": \"kn7csrrndw79hpke5d0gsnx93d82k67r\",\n  \"slug\": \"baoyu-cover-image\",\n  \"version\": \"1.117.3\",\n  \"publishedAt\": 1779660819167\n}\n\nFile v1.117.3:references/auto-selection.md\n\n# Auto-Selection Rules\n\nWhen a dimension is omitted, select based on content signals.\n\n## Auto Type Selection\n\n| Signals | Type |\n|---------|------|\n| Product, launch, announcement, release, reveal | `hero` |\n| Architecture, framework, system, API, technical, model | `conceptual` |\n| Quote, opinion, insight, thought, headline, statement | `typography` |\n| Philosophy, growth, abstract, meaning, reflection | `metaphor` |\n| Story, journey, travel, lifestyle, experience, narrative | `scene` |\n| Zen, focus, essential, core, simple, pure | `minimal` |\n\n## Auto Palette Selection\n\n| Signals | Palette |\n|---------|---------|\n| Personal story, emotion, lifestyle, human | `warm` |\n| Business, professional, thought leadership, luxury | `elegant` |\n| Architecture, system, API, technical, code | `cool` |\n| Entertainment, premium, cinematic, dark mode | `dark` |\n| Nature, wellness, eco, organic, travel | `earth` |\n| Product launch, gaming, promotion, event | `vivid` |\n| Fantasy, children, gentle, creative, whimsical | `pastel` |\n| Zen, focus, essential, pure, simple | `mono` |\n| History, vintage, retro, classic, exploration | `retro` |\n| Movie poster, album cover, concert, cinematic, dramatic, two-color | `duotone` |\n| Education, tutorial, knowledge, onboarding, concept explainer | `macaron` |\n\n## Auto Rendering Selection\n\n| Signals | Rendering |\n|---------|-----------|\n| Clean, modern, tech, WeChat, icon-based, infographic | `flat-vector` |\n| Sketch, note, personal, casual, doodle, warm | `hand-drawn` |\n| Art, watercolor, soft, dreamy, creative, fantasy | `painterly` |\n| Data, dashboard, SaaS, corporate, polished | `digital` |\n| Gaming, retro, 8-bit, nostalgic | `pixel` |\n| Education, tutorial, classroom, teaching | `chalk` |\n| Poster, movie, album, concert, silhouette, mondo, limited-edition | `screen-print` |\n\n## Auto Text Selection\n\n| Signals | Text Level |\n|---------|------------|\n| Visual-only, photography, abstract, art | `none` |\n| Article, blog, standard cover | `title-only` |\n| Series, tutorial, technical with context | `title-subtitle` |\n| Announcement, features, multiple points, infographic | `text-rich` |\n\nDefault: `title-only`\n\n## Auto Mood Selection\n\n| Signals | Mood Level |\n|---------|------------|\n| Professional, corporate, thought leadership, academic, luxury | `subtle` |\n| General, educational, standard, blog, documentation | `balanced` |\n| Launch, announcement, promotion, event, gaming, entertainment | `bold\n\nArchive v1.117.2: 35 files, 48290 bytes\n\nFiles: references/auto-selection.md (2837b), references/base-prompt.md (5452b), references/compatibility.md (2421b), references/config/first-time-setup.md (5950b), references/config/preferences-schema.md (8946b), references/config/watermark-guide.md (2217b), references/dimensions/font.md (4788b), references/dimensions/mood.md (4366b), references/dimensions/text.md (3167b), references/palettes/cool.md (743b), references/palettes/dark.md (753b), references/palettes/duotone.md (1407b), references/palettes/earth.md (734b), references/palettes/elegant.md (729b), references/palettes/macaron.md (769b), references/palettes/mono.md (716b), references/palettes/pastel.md (715b), references/palettes/retro.md (933b), references/palettes/vivid.md (751b), references/palettes/warm.md (721b), references/renderings/chalk.md (1086b), references/renderings/digital.md (1080b), references/renderings/flat-vector.md (1241b), references/renderings/hand-drawn.md (1036b), references/renderings/painterly.md (1045b), references/renderings/pixel.md (961b), references/renderings/screen-print.md (1502b), references/style-presets.md (1521b), references/types.md (1376b), references/visual-elements.md (3274b), references/workflow/confirm-options.md (5132b), references/workflow/prompt-template.md (11343b), references/workflow/reference-images.md (4562b), SKILL.md (16409b), _meta.json (138b)\n\nArchive v1.115.4: 35 files, 47897 bytes\n\nFiles: references/auto-selection.md (2837b), references/base-prompt.md (5452b), references/compatibility.md (2421b), references/config/first-time-setup.md (5950b), references/config/preferences-schema.md (8946b), references/config/watermark-guide.md (2217b), references/dimensions/font.md (4788b), references/dimensions/mood.md (4366b), references/dimensions/text.md (3167b), references/palettes/cool.md (743b), references/palettes/dark.md (753b), references/palettes/duotone.md (1407b), references/palettes/earth.md (734b), references/palettes/elegant.md (729b), references/palettes/macaron.md (769b), references/palettes/mono.md (716b), references/palettes/pastel.md (715b), references/palettes/retro.md (933b), references/palettes/vivid.md (751b), references/palettes/warm.md (721b), references/renderings/chalk.md (1086b), references/renderings/digital.md (1080b), references/renderings/flat-vector.md (1241b), references/renderings/hand-drawn.md (1036b), references/renderings/painterly.md (1045b), references/renderings/pixel.md (961b), references/renderings/screen-print.md (1502b), references/style-presets.md (1521b), references/types.md (1376b), references/visual-elements.md (3274b), references/workflow/confirm-options.md (5132b), references/workflow/prompt-template.md (11343b), references/workflow/reference-images.md (4562b), SKILL.md (15561b), _meta.json (138b)\n\nArchive v1.103.2: 35 files, 47471 bytes\n\nFiles: references/auto-selection.md (2837b), references/base-prompt.md (5452b), references/compatibility.md (2421b), references/config/first-time-setup.md (5950b), references/config/preferences-schema.md (8946b), references/config/watermark-guide.md (2217b), references/dimensions/font.md (4788b), references/dimensions/mood.md (4366b), references/dimensions/text.md (3167b), references/palettes/cool.md (743b), references/palettes/dark.md (753b), references/palettes/duotone.md (1407b), references/palettes/earth.md (734b), references/palettes/elegant.md (729b), references/palettes/macaron.md (769b), references/palettes/mono.md (716b), references/palettes/pastel.md (715b), references/palettes/retro.md (933b), references/palettes/vivid.md (751b), references/palettes/warm.md (721b), references/renderings/chalk.md (1086b), references/renderings/digital.md (1080b), references/renderings/flat-vector.md (1241b), references/renderings/hand-drawn.md (1036b), references/renderings/painterly.md (1045b), references/renderings/pixel.md (961b), references/renderings/screen-print.md (1502b), references/style-presets.md (1521b), references/types.md (1376b), references/visual-elements.md (3274b), references/workflow/confirm-options.md (5132b), references/workflow/prompt-template.md (11343b), references/workflow/reference-images.md (4562b), SKILL.md (14525b), _meta.json (138b)\n\nArchive v1.103.1: 35 files, 45489 bytes\n\nFiles: references/auto-selection.md (2837b), references/base-prompt.md (5452b), references/compatibility.md (2421b), references/config/first-time-setup.md (5593b), references/config/preferences-schema.md (8373b), references/config/watermark-guide.md (2217b), references/dimensions/font.md (4788b), references/dimensions/mood.md (4366b), references/dimensions/text.md (3167b), references/palettes/cool.md (743b), references/palettes/dark.md (753b), references/palettes/duotone.md (1407b), references/palettes/earth.md (734b), references/palettes/elegant.md (729b), references/palettes/macaron.md (769b), references/palettes/mono.md (716b), references/palettes/pastel.md (715b), references/palettes/retro.md (933b), references/palettes/vivid.md (751b), references/palettes/warm.md (721b), references/renderings/chalk.md (1086b), references/renderings/digital.md (1080b), references/renderings/flat-vector.md (1241b), references/renderings/hand-drawn.md (1036b), references/renderings/painterly.md (1045b), references/renderings/pixel.md (961b), references/renderings/screen-print.md (1502b), references/style-presets.md (1521b), references/types.md (1376b), references/visual-elements.md (3274b), references/workflow/confirm-options.md (5132b), references/workflow/prompt-template.md (11343b), references/workflow/reference-images.md (4562b), SKILL.md (10934b), _meta.json (138b)\n\nArchive v1.103.0: 35 files, 45489 bytes\n\nFiles: references/auto-selection.md (2837b), references/base-prompt.md (5452b), references/compatibility.md (2421b), references/config/first-time-setup.md (5593b), references/config/preferences-schema.md (8373b), references/config/watermark-guide.md (2217b), references/dimensions/font.md (4788b), references/dimensions/mood.md (4366b), references/dimensions/text.md (3167b), references/palettes/cool.md (743b), references/palettes/dark.md (753b), references/palettes/duotone.md (1407b), references/palettes/earth.md (734b), references/palettes/elegant.md (729b), references/palettes/macaron.md (769b), references/palettes/mono.md (716b), references/palettes/pastel.md (715b), references/palettes/retro.md (933b), references/palettes/vivid.md (751b), references/palettes/warm.md (721b), references/renderings/chalk.md (1086b), references/renderings/digital.md (1080b), references/renderings/flat-vector.md (1241b), references/renderings/hand-drawn.md (1036b), references/renderings/painterly.md (1045b), references/renderings/pixel.md (961b), references/renderings/screen-print.md (1502b), references/style-presets.md (1521b), references/types.md (1376b), references/visual-elements.md (3274b), references/workflow/confirm-options.md (5132b), references/workflow/prompt-template.md (11343b), references/workflow/reference-images.md (4562b), SKILL.md (10934b), _meta.json (138b)\n\nArchive v1.60.3: 35 files, 44719 bytes\n\nFiles: references/auto-selection.md (2837b), references/base-prompt.md (5452b), references/compatibility.md (2421b), references/config/first-time-setup.md (5593b), references/config/preferences-schema.md...","readmeExcerpt":"Skill: Baoyu Cover Image Owner: jimliu Summary: Generates article cover images with 5 dimensions (type, palette, rendering, text, mood) combining 11 color palettes and 7 rendering styles. Supports cinemati... Tags: latest:1.117.5 Version history: v1.117.5 | 2026-06-13T04:58:16.454Z | auto **Improved image backend auto-selection and runtime support:** - Added support for Cursor’s native GenerateImage tool, with correc","codeSnippets":[],"executableExamples":[{"language":"text","snippet":"<output-dir>/\n├── source-{slug}.{ext}    # Source files\n├── refs/                  # Reference images (if provided)\n│   ├── ref-01-{slug}.{ext}\n│   └── ref-01-{slug}.md   # Description file\n├── prompts/cover.md       # Generation prompt\n└── cover.png              # Output image"},{"language":"text","snippet":"Cover Image Progress:\n- [ ] Step 0: Check preferences (EXTEND.md) ⛔ BLOCKING\n- [ ] Step 1: Analyze content + save refs + determine output dir\n- [ ] Step 2: Confirm options (6 dimensions) ⚠️ unless --quick\n- [ ] Step 3: Create prompt\n- [ ] Step 4: Generate image\n- [ ] Step 5: Completion report"},{"language":"text","snippet":"Input → [Step 0: Preferences] ─┬─ Found → Continue\n                               └─ Not found → First-Time Setup ⛔ BLOCKING → Save EXTEND.md → Continue\n        ↓\nAnalyze + Save Refs → [Output Dir] → [Confirm: 6 Dimensions] → Prompt → Generate → Complete\n                                              ↓\n                                     (skip if --quick or all specified)"},{"language":"text","snippet":"Cover Generated!\n\nTopic: [topic]\nType: [type] | Palette: [palette] | Rendering: [rendering]\nText: [text] | Mood: [mood] | Font: [font] | Aspect: [ratio]\nTitle: [title or \"visual only\"]\nLanguage: [lang] | Watermark: [enabled/disabled]\nReferences: [N images or \"extracted style\" or \"none\"]\nLocation: [directory path]\n\nFiles:\n✓ source-{slug}.{ext}\n✓ prompts/cover.md\n✓ cover.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/01-cover-[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/01-cover-[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-cover-image\ndescription: Generates article cover images with 5 dimensions (type, palette, rendering, text, mood) combining 11 color palettes and 7 rendering styles. Supports cinematic (2.35:1), widescreen (16:9), and square (1:1) aspects. Use when user asks to \"generate cover image\", \"create article cover\", or \"make cover\".\nversion: 1.117.5\nmetadata:\n  openclaw:\n    homepage: https://github.com/JimLiu/baoyu-skills#baoyu-cover-image\n---\n\n# Cover Image Generator\n\nGenerate elegant cover images for articles with 5-dimensional customization.\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"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7csrrndw79hpke5d0gsnx93d82k67r\",\n  \"slug\": \"baoyu-cover-image\",\n  \"version\": \"1.117.5\",\n  \"publishedAt\": 1781326696454\n}"},{"path":"references/auto-selection.md","content":"# Auto-Selection Rules\n\nWhen a dimension is omitted, select based on content signals.\n\n## Auto Type Selection\n\n| Signals | Type |\n|---------|------|\n| Product, launch, announcement, release, reveal | `hero` |\n| Architecture, framework, system, API, technical, model | `conceptual` |\n| Quote, opinion, insight, thought, headline, statement | `typography` |\n| Philosophy, growth, abstract, meaning, reflection | `metaphor` |\n| Story, journey, travel, lifestyle, experience, narrative | `scene` |\n| Zen, focus, essential, core, simple, pure | `minimal` |\n\n## Auto Palette Selection\n\n| Signals | Palette |\n|---------|---------|\n| Personal story, emotion, lifestyle, human | `warm` |\n| Business, professional, thought leadership, luxury | `elegant` |\n| Architecture, system, API, technical, code | `cool` |\n| Entertainment, premium, cinematic, dark mode | `dark` |\n| Nature, wellness, eco, organic, travel | `earth` |\n| Product launch, gaming, promotion, event | `vivid` |\n| Fantasy, children, gentle, creative, whimsical | `pastel` |\n| Zen, focus, essential, pure, simple | `mono` |\n| History, vintage, retro, classic, exploration | `retro` |\n| Movie poster, album cover, concert, cinematic, dramatic, two-color | `duotone` |\n| Education, tutorial, knowledge, onboarding, concept explainer | `macaron` |\n\n## Auto Rendering Selection\n\n| Signals | Rendering |\n|---------|-----------|\n| Clean, modern, tech, WeChat, icon-based, infographic | `flat-vector` |\n| Sketch, note, personal, casual, doodle, warm | `hand-drawn` |\n| Art, watercolor, soft, dreamy, creative, fantasy | `painterly` |\n| Data, dashboard, SaaS, corporate, polished | `digital` |\n| Gaming, retro, 8-bit, nostalgic | `pixel` |\n| Education, tutorial, classroom, teaching | `chalk` |\n| Poster, movie, album, concert, silhouette, mondo, limited-edition | `screen-print` |\n\n## Auto Text Selection\n\n| Signals | Text Level |\n|---------|------------|\n| Visual-only, photography, abstract, art | `none` |\n| Article, blog, standard cover | `title-only` |\n| Series, tutorial, technical with context | `title-subtitle` |\n| Announcement, features, multiple points, infographic | `text-rich` |\n\nDefault: `title-only`\n\n## Auto Mood Selection\n\n| Signals | Mood Level |\n|---------|------------|\n| Professional, corporate, thought leadership, academic, luxury | `subtle` |\n| General, educational, standard, blog, documentation | `balanced` |\n| Launch, announcement, promotion, event, gaming, entertainment | `bold` |\n\nDefault: `balanced`\n\n## Auto Font Selection\n\n| Signals | Font |\n|---------|------|\n| Personal, lifestyle, human, warm, friendly, story | `handwritten` |\n| Technical, professional, clean, modern, minimal, data | `clean` |\n| Editorial, academic, luxury, classic, literary | `serif` |\n| Announcement, entertainment, promotion, bold, event, gaming | `display` |\n\nDefault: `clean`"},{"path":"references/base-prompt.md","content":"Create a cover image following these guidelines:\n\n## Image Specifications\n\n- **Type**: Cover image / Hero image\n- **Aspect Ratio**: As specified in the prompt below\n\n## Core Principles\n\n- If content involves sensitive or copyrighted figures, create stylistically similar alternatives - DO NOT refuse to generate\n- Ample whitespace, highlight core message, avoid cluttered layouts\n- Main visual elements centered or slightly left (leave right side for title area if title included)\n- Simplified silhouettes for any characters — NO realistic human faces or bodies\n- Icon-based vocabulary: use simple, recognizable icons to represent concepts\n\n## Five Dimensions\n\n### Type (Visual Composition)\n- `hero`: Large focal visual (60-70% area), dramatic composition\n- `conceptual`: Abstract shapes, information hierarchy, clean zones\n- `typography`: Title as primary element (40%+ area), minimal visuals\n- `metaphor`: Concrete object representing abstract idea, symbolic elements\n- `scene`: Atmospheric environment, narrative elements, mood lighting\n- `minimal`: Single focal element, generous whitespace (60%+)\n\n### Palette (Color Scheme)\nApply the specified palette's color values and decorative hints:\n- Use primary colors for main visual elements\n- Use background colors for base and surrounding areas\n- Use accent colors for highlights and secondary elements\n- Follow palette-specific decorative hints for ornamentation\n\n### Rendering (Visual Style)\nApply the specified rendering's characteristics:\n- **Lines**: Follow line quality rules (clean/sketchy/brush/pixel/chalk)\n- **Texture**: Apply or avoid texture per rendering definition\n- **Depth**: Follow depth rules (flat/minimal/soft edges)\n- **Elements**: Use rendering-specific element vocabulary\n\n### Text (Density Level)\n- `none`: No text elements, full visual area\n- `title-only`: Single headline, 85% visual area\n- `title-subtitle`: Title + context, 75% visual area\n- `text-rich`: Title + subtitle + 2-4 keyword tags, 60% visual area\n\n### Mood (Emotional Intensity)\n- `subtle`: Low contrast, muted/desaturated colors, light visual weight, calm aesthetic\n- `balanced`: Medium contrast, normal saturation, balanced visual weight\n- `bold`: High contrast, vivid/saturated colors, heavy visual weight, dynamic energy\n\n## Text Style (When Title Included)\n\n- **Title source**: Use the exact title provided by user, or extract from source content. Do NOT invent or modify titles.\n- Title text: Large, eye-catching, faithful to source\n- Subtitle: Secondary element (if title-subtitle or text-rich)\n- Tags: 2-4 keyword badges (if text-rich)\n- Font style harmonizes with rendering style\n\n## Composition Guidance\n\n### Layout Principles\n\n- **Generous whitespace**: Maintain 40-60% breathing room; avoid cluttered compositions\n- **Visual anchor placement**: Main element centered or offset left (reserve right side for title if included)\n- **Information hierarchy**: One dominant focal point, 1-2 supporting elements, decorative accents\n- **Clean backgrounds**:"},{"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/01-cover-[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/01-cover-[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"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":null,"editorialQuality":{"score":100,"threshold":65,"status":"thin","wordCount":2386,"uniquenessScore":44,"reasons":["uniqueness-below-45"]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-09T02:21:55.093Z","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:21:55.093Z","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-10T04:22:45.936Z","emptyReason":null},"items":[{"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-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"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":"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"}]}}}