{"id":"2bb810b2-dbd0-40cd-be83-75f17ad56f67","entityType":"agent","slug":"clawhub-jimliu-baoyu-xhs-images","name":"Baoyu Xhs Images","canonicalUrl":"https://www.xpersona.co/agent/clawhub-jimliu-baoyu-xhs-images","canonicalPath":"/agent/clawhub-jimliu-baoyu-xhs-images","generatedAt":"2026-10-10T05:48:09.649Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T05:15:43.093Z","emptyReason":null},"description":"Generates infographic image card series with 12 visual styles, 8 layouts, and 3 color palettes. Breaks content into 1-10 cartoon-style image cards optimized...","descriptionLabel":"Source description","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 4.5K downloads reported by the source. Last updated 10/9/2026.","installCommand":"clawhub skill install s17dfbhg0khk4fvtnx0stqg0yx83j25z:baoyu-xhs-images","sourceUrl":"https://clawhub.ai/jimliu/baoyu-xhs-images","homepage":"https://clawhub.ai/jimliu/skills/baoyu-xhs-images","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/jimliu/baoyu-xhs-images","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/jimliu/skills/baoyu-xhs-images","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":73,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Baoyu Xhs Images 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-09T05:15:43.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-09T05:15:43.093Z","emptyReason":null},"stars":null,"forks":null,"downloads":4528,"packageName":null,"latestVersion":"2.0.1","tractionLabel":"4.5K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T05:15:43.092Z","emptyReason":null},"lastUpdatedAt":"2026-10-09T05:15:43.093Z","lastCrawledAt":"2026-10-09T05:15:43.092Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-10T05:15:43.092Z","lastVerifiedAt":null,"highlights":[{"version":"2.0.1","createdAt":"2026-06-13T04:59:23.860Z","changelog":"- Added support for Codex CLI (`codex-imagegen`) and Cursor's `GenerateImage` tool as additional image generation backends. - Updated backend selection logic to prioritize Codex CLI and Cursor's native tools where appropriate, with clear fallback and tool-discovery rules. - Added a new references/codex-imagegen.md file for runtime-discovery details. - Improved backend tool parameter handling, including special case notes for aspect ratio and file path handling in different environments. - Removed obsolete skill-card.md file.","fileCount":31,"zipByteSize":58356},{"version":"2.0.0","createdAt":"2026-05-24T23:38:54.479Z","changelog":"v2.0.0: rename baoyu-imagine→baoyu-image-gen and baoyu-image-cards→baoyu-xhs-images; cross-skill image-backend examples updated","fileCount":30,"zipByteSize":55871},{"version":"1.57.0","createdAt":"2026-05-24T22:09:56.019Z","changelog":"**Deprecation notice and expanded customization options.** - Marked the skill as deprecated in favor of `baoyu-image-cards`. - Added support for 3 color palettes: macaron, neon, and warm. - Introduced `--palette` and `--preset` options for easier color and preset selection. - Expanded style options to 12, and documented available palettes and style presets. - Updated workflow and generation policies for user input, confirmation, and image batch handling. - Enriched documentation structure with new references for palettes, presets, and confirmation.","fileCount":29,"zipByteSize":54530},{"version":"0.1.0","createdAt":"2026-03-02T09:07:45.099Z","changelog":"Initial release of baoyu-xhs-images: Xiaohongshu infographic generator - Generates Xiaohongshu (Little Red Book) infographic series with 10 visual styles and 8 layouts. - Automatically breaks down content into 1–10 cartoon-style images optimized for XHS engagement. - Style and layout options can be combined (e.g., `--style notion --layout dense`). - Three differentiated outline strategies for story-driven, information-dense, or visual-first content. - Tracks progress with a step-by-step checklist and workflow. - Automatically creates and manages folder structure for each infographic session. - Preference loading ensures first-time setup before content processing.","fileCount":22,"zipByteSize":39992}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17dfbhg0khk4fvtnx0stqg0yx83j25z:baoyu-xhs-images","setupComplexity":"low","setupSteps":["Install using `clawhub skill install s17dfbhg0khk4fvtnx0stqg0yx83j25z:baoyu-xhs-images` 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-xhs-images 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-xhs-images/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-jimliu-baoyu-xhs-images/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-jimliu-baoyu-xhs-images/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-jimliu-baoyu-xhs-images/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-jimliu-baoyu-xhs-images/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-jimliu-baoyu-xhs-images/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-10T05:48:09.643Z"}},"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-xhs-images/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-jimliu-baoyu-xhs-images/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-jimliu-baoyu-xhs-images/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-jimliu-baoyu-xhs-images/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-09T05:15:43.093Z","emptyReason":null},"readme":"Skill: Baoyu Xhs Images\n\nOwner: jimliu\n\nSummary: Generates infographic image card series with 12 visual styles, 8 layouts, and 3 color palettes. Breaks content into 1-10 cartoon-style image cards optimized...\n\nTags: latest:2.0.1\n\nVersion history:\n\nv2.0.1 | 2026-06-13T04:59:23.860Z | auto\n\n- Added support for Codex CLI (`codex-imagegen`) and Cursor's `GenerateImage` tool as additional image generation backends.\n- Updated backend selection logic to prioritize Codex CLI and Cursor's native tools where appropriate, with clear fallback and tool-discovery rules.\n- Added a new references/codex-imagegen.md file for runtime-discovery details.\n- Improved backend tool parameter handling, including special case notes for aspect ratio and file path handling in different environments.\n- Removed obsolete skill-card.md file.\n\nv2.0.0 | 2026-05-24T23:38:54.479Z | 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.57.0 | 2026-05-24T22:09:56.019Z | auto\n\n**Deprecation notice and expanded customization options.**\n\n- Marked the skill as deprecated in favor of `baoyu-image-cards`.\n- Added support for 3 color palettes: macaron, neon, and warm.\n- Introduced `--palette` and `--preset` options for easier color and preset selection.\n- Expanded style options to 12, and documented available palettes and style presets.\n- Updated workflow and generation policies for user input, confirmation, and image batch handling.\n- Enriched documentation structure with new references for palettes, presets, and confirmation.\n\nv0.1.0 | 2026-03-02T09:07:45.099Z | auto\n\nInitial release of baoyu-xhs-images: Xiaohongshu infographic generator\n\n- Generates Xiaohongshu (Little Red Book) infographic series with 10 visual styles and 8 layouts.\n- Automatically breaks down content into 1–10 cartoon-style images optimized for XHS engagement.\n- Style and layout options can be combined (e.g., `--style notion --layout dense`).\n- Three differentiated outline strategies for story-driven, information-dense, or visual-first content.\n- Tracks progress with a step-by-step checklist and workflow.\n- Automatically creates and manages folder structure for each infographic session.\n- Preference loading ensures first-time setup before content processing.\n\nArchive index:\n\nArchive v2.0.1: 31 files, 58356 bytes\n\nFiles: references/codex-imagegen.md (3717b), references/config/first-time-setup.md (3456b), references/config/preferences-schema.md (4017b), references/config/watermark-guide.md (1977b), references/confirmation.md (3929b), references/elements/canvas.md (3727b), references/elements/decorations.md (5049b), references/elements/image-effects.md (2990b), references/elements/typography.md (3258b), references/palettes/macaron.md (1437b), references/palettes/neon.md (1271b), references/palettes/warm.md (1225b), references/presets/bold.md (1577b), references/presets/chalkboard.md (2324b), references/presets/cute.md (1565b), references/presets/fresh.md (1496b), references/presets/minimal.md (1418b), references/presets/notion.md (1591b), references/presets/pop.md (1528b), references/presets/retro.md (1483b), references/presets/screen-print.md (2680b), references/presets/sketch-notes.md (3216b), references/presets/study-notes.md (2977b), references/presets/warm.md (1476b), references/style-presets.md (1899b), references/workflows/analysis-framework.md (7235b), references/workflows/outline-template.md (6101b), references/workflows/prompt-assembly.md (10328b), skill-card.md (2545b), SKILL.md (29570b), _meta.json (135b)\n\nFile v2.0.1:SKILL.md\n\n---\nname: baoyu-xhs-images\ndescription: Generates infographic image card series with 12 visual styles, 8 layouts, and 3 color palettes. Breaks content into 1-10 cartoon-style image cards optimized for social media engagement. Use when user mentions \"小红书图片\", \"小红书种草\", \"小绿书\", \"微信图文\", \"微信贴图\", \"image cards\", \"图片卡片\", baoyu-xhs-images, or wants social media infographic series.\nversion: 2.0.1\nmetadata:\n  openclaw:\n    homepage: https://github.com/JimLiu/baoyu-skills#baoyu-xhs-images\n---\n\n# Image Card Series Generator\n\nBreak down complex content into eye-catching image card series with multiple style options.\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 titles, body copy, tags, or any other text inside an already generated image card. If text is wrong or unclear, regenerate from a corrected prompt, switch to a layout with less on-card text, or ask the user which imperfect candidate to keep.\n\nSetting `preferred_image_backend: ask` forces the step-3 prompt every run regardless of available backends. Users change the pinned backend via the `## Changing Preferences` section below.\n\n**Prompt file requirement (hard)**: write each image's full, final prompt to a standalone file under `prompts/` (naming: `NN-{type}-[slug].md`) BEFORE invoking any backend. The file is the reproducibility record and lets you switch backends without regenerating prompts.\n\nConcrete tool names (`imagegen`, `GenerateImage`, `image_generate`, `baoyu-image-gen`) above are examples — substitute the local equivalents under the same rule.\n\n## Batch Generation Policy\n\nAfter every prompt file for the current generation group has been saved and verified, generate images in batches by default.\n\nPriority order:\n\n1. Use the chosen backend's native batch / multi-task interface if it exists. Each task must keep its own prompt file, output path, aspect ratio, session ID, and direct reference images.\n2. If no native batch interface exists but the runtime can issue parallel tool calls, dispatch up to `generation_batch_size` images at a time. Default: `4`. An explicit user request in the current message, such as `--batch-size 4` or \"并行 4 张一起生成\", overrides EXTEND.md.\n3. If neither native batch nor parallel tool calls are available, generate sequentially.\n\nRules:\n\n- Honor the image-1 anchor chain: generate image 1 first, then batch images 2+ using image 1 as the reference.\n- Never start a batch until every selected prompt file for that batch exists on disk.\n- Retry failed items once without regenerating successful items.\n- Do not use subagents merely to parallelize image rendering. Use subagents only for separate prompt iteration or creative exploration.\n\n## Confirmation Policy\n\nDefault behavior: **confirm before generation**.\n\n- Treat explicit skill invocation, a file path, matched signals/presets, and `EXTEND.md` defaults as **recommendation inputs only**. None of them authorizes skipping confirmation.\n- Do **not** start Step 3 until the user completes Step 2.\n- Skip confirmation only when the current request explicitly says to do so, for example: `--yes`, \"直接生成\", \"不用确认\", \"跳过确认\", \"按默认出图\", or equivalent wording.\n- If confirmation is skipped explicitly, state the assumed strategy / style / layout / palette / count / backend in the next user-facing update before generating.\n\n## Language\n\nRespond in the user's language across questions, progress, errors, and completion summary. Keep technical tokens (style names, file paths, code) in English.\n\n## Options\n\n| Option | Description |\n|--------|-------------|\n| `--style <name>` | Visual style (see Styles below) |\n| `--layout <name>` | Information layout (see Layouts below) |\n| `--palette <name>` | Color override: macaron / warm / neon |\n| `--preset <name>` | Style + layout + optional palette shorthand (see Presets below; per-preset prompt fragments in `references/style-presets.md`) |\n| `--ref <files...>` | Reference images applied to image 1 as the series anchor |\n| `--batch-size <n>` | Temporary generation batch size for this run. Default: `generation_batch_size` from EXTEND.md, otherwise 4. Clamp to 1-8. |\n| `--yes` | Non-interactive: skip all confirmations, use EXTEND.md or built-in defaults, auto-confirm recommended plan (Path A) |\n\n## Dimensions\n\nThree independent knobs combine freely:\n\n| Dimension | Controls | Options |\n|-----------|----------|---------|\n| **Style** | Visual aesthetics (lines, decorations, rendering) | 12 styles (see Styles below) |\n| **Layout** | Information structure (density, arrangement) | 8 layouts (see Layouts below) |\n| **Palette** (optional) | Color override, replaces the style's default colors | macaron / warm / neon (see Palettes below) |\n\nExample: `--style notion --layout dense` makes an intellectual knowledge card; add `--palette macaron` to soften the colors without changing notion's rendering rules. A `--preset` is a shorthand for style + layout (+ optional palette).\n\n**Palette behavior**: no `--palette` → style's built-in colors; `--palette <name>` → overrides colors only, rendering rules unchanged. Some styles declare a `default_palette` (e.g., sketch-notes defaults to macaron).\n\n## Styles (12)\n\n| Style | Description |\n|-------|-------------|\n| `cute` (Default) | Sweet, adorable, girly aesthetic |\n| `fresh` | Clean, refreshing, natural |\n| `warm` | Cozy, friendly, approachable |\n| `bold` | High impact, attention-grabbing |\n| `minimal` | Ultra-clean, sophisticated |\n| `retro` | Vintage, nostalgic, trendy |\n| `pop` | Vibrant, energetic, eye-catching |\n| `notion` | Minimalist hand-drawn line art, intellectual |\n| `chalkboard` | Colorful chalk on black board, educational |\n| `study-notes` | Realistic handwritten photo style, blue pen + red annotations + yellow highlighter |\n| `screen-print` | Bold poster art, halftone textures, limited colors, symbolic storytelling |\n| `sketch-notes` | Hand-drawn educational infographic, macaron pastels on warm cream, wobble lines |\n\nPer-style specifications: `references/presets/<style>.md`.\n\n## Layouts (8)\n\n| Layout | Description |\n|--------|-------------|\n| `sparse` (Default) | 1-2 points, maximum impact |\n| `balanced` | 3-4 points, standard |\n| `dense` | 5-8 points, knowledge-card style |\n| `list` | Enumeration / ranking (4-7 items) |\n| `comparison` | Side-by-side contrast |\n| `flow` | Process / timeline (3-6 steps) |\n| `mindmap` | Center-radial (4-8 branches) |\n| `quadrant` | Four-quadrant / circular sections |\n\nLayout specs: `references/elements/canvas.md`.\n\n## Palettes (optional override)\n\nReplaces the style's colors while keeping rendering rules (line treatment, textures) intact.\n\n| Palette | Background | Zone Colors | Accent | Feel |\n|---------|------------|-------------|--------|------|\n| `macaron` | Warm cream #F5F0E8 | Blue #A8D8EA, Lavender #D5C6E0, Mint #B5E5CF, Peach #F8D5C4 | Coral #E8655A | Soft, educational |\n| `warm` | Soft peach #FFECD2 | Orange #ED8936, Terracotta #C05621, Golden #F6AD55, Rose #D4A09A | Sienna #A0522D | Earth tones, cozy |\n| `neon` | Dark purple #1A1025 | Cyan #00F5FF, Magenta #FF00FF, Green #39FF14, Pink #FF6EC7 | Yellow #FFFF00 | High-energy, futuristic |\n\nPalette specs: `references/palettes/<palette>.md`.\n\n## Presets (style + layout shortcuts)\n\nQuick-start combos, grouped by scenario. Use `--preset <name>` or recommend during Step 2.\n\n**Knowledge & Learning**:\n\n| Preset | Style | Layout | Best For |\n|--------|-------|--------|----------|\n| `knowledge-card` | notion | dense | 干货知识卡、概念科普 |\n| `checklist` | notion | list | 清单、排行榜 |\n| `concept-map` | notion | mindmap | 概念图、知识脉络 |\n| `swot` | notion | quadrant | SWOT 分析、四象限 |\n| `tutorial` | chalkboard | flow | 教程步骤、操作流程 |\n| `classroom` | chalkboard | balanced | 课堂笔记、知识讲解 |\n| `study-guide` | study-notes | dense | 学习笔记、考试重点 |\n| `hand-drawn-edu` | sketch-notes | flow | 手绘教程、流程图解 |\n| `sketch-card` | sketch-notes | dense | 手绘知识卡 |\n| `sketch-summary` | sketch-notes | balanced | 手绘总结、图文笔记 |\n\n**Lifestyle & Sharing**:\n\n| Preset | Style | Layout | Best For |\n|--------|-------|--------|----------|\n| `cute-share` | cute | balanced | 少女风分享、日常种草 |\n| `girly` | cute | sparse | 甜美封面、氛围感 |\n| `cozy-story` | warm | balanced | 生活故事、情感分享 |\n| `product-review` | fresh | comparison | 产品对比、测评 |\n| `nature-flow` | fresh | flow | 健康流程、自然主题 |\n\n**Impact & Opinion**:\n\n| Preset | Style | Layout | Best For |\n|--------|-------|--------|----------|\n| `warning` | bold | list | 避坑指南、重要提醒 |\n| `versus` | bold | comparison | 正反对比 |\n| `clean-quote` | minimal | sparse | 金句、极简封面 |\n| `pro-summary` | minimal | balanced | 专业总结、商务内容 |\n\n**Trend & Entertainment**:\n\n| Preset | Style | Layout | Best For |\n|--------|-------|--------|----------|\n| `retro-ranking` | retro | list | 复古排行、经典盘点 |\n| `throwback` | retro | balanced | 怀旧分享 |\n| `pop-facts` | pop | list | 趣味冷知识 |\n| `hype` | pop | sparse | 炸裂封面、惊叹分享 |\n\n**Poster & Editorial**:\n\n| Preset | Style | Layout | Best For |\n|--------|-------|--------|----------|\n| `poster` | screen-print | sparse | 海报风封面、影评书评 |\n| `editorial` | screen-print | balanced | 观点文章、文化评论 |\n| `cinematic` | screen-print | comparison | 电影对比、戏剧张力 |\n\nFull prompt-fragment definitions: `references/style-presets.md`.\n\n## Auto-Selection\n\nMatch content signals to the best combo. First row whose keywords appear wins; fall back to `cute-share` if nothing matches.\n\n| Signals in source | Style | Layout | Recommended preset |\n|-------------------|-------|--------|--------------------|\n| beauty, fashion, cute, girl, pink | `cute` | sparse/balanced | `cute-share`, `girly` |\n| health, nature, fresh, organic | `fresh` | balanced/flow | `product-review`, `nature-flow` |\n| life, story, emotion, warm | `warm` | balanced | `cozy-story` |\n| warning, important, must, critical | `bold` | list/comparison | `warning`, `versus` |\n| professional, business, elegant | `minimal` | sparse/balanced | `clean-quote`, `pro-summary` |\n| classic, vintage, traditional | `retro` | balanced | `throwback`, `retro-ranking` |\n| fun, exciting, wow, amazing | `pop` | sparse/list | `hype`, `pop-facts` |\n| knowledge, concept, productivity, SaaS | `notion` | dense/list | `knowledge-card`, `checklist` |\n| education, tutorial, learning, classroom | `chalkboard` | balanced/dense | `tutorial`, `classroom` |\n| notes, handwritten, study guide, realistic | `study-notes` | dense/list/mindmap | `study-guide` |\n| movie, poster, opinion, editorial, cinematic | `screen-print` | sparse/comparison | `poster`, `editorial`, `cinematic` |\n| hand-drawn, infographic, workflow, 手绘，图解 | `sketch-notes` | flow/balanced/dense | `hand-drawn-edu`, `sketch-card`, `sketch-summary` |\n\n## Style × Layout Matrix\n\nCompatibility scores (✓✓ highly recommended, ✓ works well, ✗ avoid). Use when the user picks a non-default combo and you want to flag a poor match.\n\n|              | sparse | balanced | dense | list | comparison | flow | mindmap | quadrant |\n|--------------|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|\n| cute         | ✓✓ | ✓✓ | ✓  | ✓✓ | ✓  | ✓  | ✓  | ✓  |\n| fresh        | ✓✓ | ✓✓ | ✓  | ✓  | ✓  | ✓✓ | ✓  | ✓  |\n| warm         | ✓✓ | ✓✓ | ✓  | ✓  | ✓✓ | ✓  | ✓  | ✓  |\n| bold         | ✓✓ | ✓  | ✓  | ✓✓ | ✓✓ | ✓  | ✓  | ✓✓ |\n| minimal      | ✓✓ | ✓✓ | ✓✓ | ✓  | ✓  | ✓  | ✓  | ✓  |\n| retro        | ✓✓ | ✓✓ | ✓  | ✓✓ | ✓  | ✓  | ✓  | ✓  |\n| pop          | ✓✓ | ✓✓ | ✓  | ✓✓ | ✓✓ | ✓  | ✓  | ✓  |\n| notion       | ✓✓ | ✓✓ | ✓✓ | ✓✓ | ✓✓ | ✓✓ | ✓✓ | ✓✓ |\n| chalkboard   | ✓✓ | ✓✓ | ✓✓ | ✓✓ | ✓  | ✓✓ | ✓✓ | ✓  |\n| study-notes  | ✗  | ✓  | ✓✓ | ✓✓ | ✓  | ✓  | ✓✓ | ✓  |\n| screen-print | ✓✓ | ✓✓ | ✗  | ✓  | ✓✓ | ✓  | ✗  | ✓✓ |\n| sketch-notes | ✓  | ✓✓ | ✓✓ | ✓✓ | ✓  | ✓✓ | ✓✓ | ✓  |\n\n## Outline Strategies\n\nThree differentiated approaches — each produces a structurally different outline. The workflow recommends one; Path C generates all three and lets the user choose.\n\n| Strategy | Concept | Best for | Structure |\n|----------|---------|----------|-----------|\n| **A — Story-Driven** | Personal experience as the thread, emotional resonance first | Reviews, personal shares, transformation | Hook → Problem → Discovery → Experience → Conclusion |\n| **B — Information-Dense** | Value-first, efficient information delivery | Tutorials, comparisons, checklists | Core conclusion → Info card → Pros/Cons → Recommendation |\n| **C — Visual-First** | Visual impact as core, minimal text | High-aesthetic products, lifestyle, mood content | Hero image → Detail shots → Lifestyle scene → CTA |\n\n## Reference Images\n\nUser-supplied refs are **separate from** the internal \"image-1 as anchor\" chain (Step 3) — they layer on top of it.\n\n**Intake**: via `--ref <files...>` or paths pasted in conversation.\n- File path → copy to `refs/NN-ref-{slug}.{ext}`\n- Pasted with no path → ask for the path, or extract style traits as a text fallback\n\n**Usage modes** (per reference):\n\n| Usage | Effect |\n|-------|--------|\n| `direct` | Pass the file to the backend (typically on image 1 only, so the anchor propagates through the chain) |\n| `style` | Extract style traits and append to every card's prompt body |\n| `palette` | Extract hex colors and append to every card's prompt body |\n\nRecord refs in each affected card's prompt frontmatter:\n\n```yaml\nreferences:\n  - ref_id: 01\n    filename: 01-ref-brand.png\n    usage: direct\n```\n\nAt generation time: verify files exist. Image 1 with `usage: direct` + backend that accepts refs → pass via the backend's ref parameter (becomes the chain anchor). Images 2+ keep using image-1 as `--ref` per Step 3 — do NOT re-stack user refs on top (avoids conflicting signals). For `style`/`palette`, embed extracted traits in every prompt.\n\n## File Layout\n\n```\nimage-cards/{topic-slug}/\n├── source-{slug}.{ext}\n├── analysis.md\n├── outline-strategy-{a,b,c}.md    # Path C only\n├── outline.md\n├── prompts/NN-{type}-{slug}.md\n├── NN-{type}-{slug}.png\n└── refs/                          # only if --ref used\n```\n\n**Slug**: 2-4 words, kebab-case. \"AI 工具推荐\" → `ai-tools-recommend`. On collision, append `-YYYYMMDD-HHMMSS`.\n\n**Backup rule** (applies throughout): before overwriting any file — source, outline, prompt, image — rename the existing one to `<name>-backup-YYYYMMDD-HHMMSS.<ext>`. This protects user edits.\n\n## Workflow\n\n```\n- [ ] Step 0: Load EXTEND.md ⛔ BLOCKING (interactive only)\n- [ ] Step 1: Analyze content → analysis.md\n- [ ] Step 2: Smart Confirm ⚠️ REQUIRED (Path A / B / C)\n- [ ] Step 3: Generate images\n- [ ] Step 4: Completion report\n```\n\n### Step 0: Load EXTEND.md ⛔ BLOCKING\n\nCheck these paths in order; first hit wins:\n\n| Path | Scope |\n|------|-------|\n| `.baoyu-skills/baoyu-xhs-images/EXTEND.md` | Project |\n| `${XDG_CONFIG_HOME:-$HOME/.config}/baoyu-skills/baoyu-xhs-images/EXTEND.md` | XDG |\n| `$HOME/.baoyu-skills/baoyu-xhs-images/EXTEND.md` | User home |\n\n- **Found** → read, parse, print a summary (style / layout / watermark / language), continue.\n- **Not found + interactive** → run first-time setup (see `references/config/first-time-setup.md`) and save before anything else. Do NOT analyze content or ask style questions until preferences exist — this keeps first-run behavior predictable.\n- **Not found + `--yes`** → skip setup, use built-in defaults (no watermark, style/layout auto-selected, language from content). Do not prompt, do not create EXTEND.md.\n\n**EXTEND.md keys**: watermark, preferred style/layout, custom style definitions, language preference, preferred image backend, generation batch size. Schema: `references/config/preferences-schema.md`.\n\n### Step 1: Analyze Content → `analysis.md`\n\n1. Save the source (backup rule applies if `source.md` exists).\n2. Run the deep analysis in `references/workflows/analysis-framework.md`: content type, hook potential, audience, engagement signals, visual opportunity map, swipe flow.\n3. Detect source language, pick recommended image count (2-10).\n4. Auto-recommend strategy + style + layout + palette using the **Auto-Selection** table above.\n5. Write everything to `analysis.md`.\n\n### Step 2: Smart Confirm ⚠️ REQUIRED\n\n**Hard gate**: this step is mandatory per the [Confirmation Policy](#confirmation-policy) — Step 3 cannot start until the user confirms here (or explicitly opts out with `--yes` / equivalent wording in the current request).\n\nGoal: present the auto-recommended plan and let the user confirm or adjust. Skip this step entirely under `--yes` — proceed with Path A using the analysis and any CLI overrides.\n\n**Display summary** before asking:\n\n```\n📋 内容分析\n  主题：[topic] | 类型：[content_type]\n  要点：[key points]\n  受众：[audience]\n\n🎨 推荐方案（自动匹配）\n  策略：[A/B/C] [name]（[reason]）\n  风格：[style] · 布局：[layout] · 配色：[palette or 默认] · 预设：[preset]\n  图片：[N]张（封面+[N-2]内容+结尾）\n  元素：[background] / [decorations] / [emphasis]\n```\n\nThen ask one question — three paths. Verbatim option copy: `references/confirmation.md`.\n\n**Path A — Quick confirm** (trust auto-recommendation): generate a single outline using the recommended strategy + style → save to `outline.md` → Step 3.\n\n**Path B — Customize**: ask five questions (strategy/style, layout, palette, count, optional notes) with the recommendation pre-filled — blanks keep the recommendation. Generate one outline with the user's choices → `outline.md` → Step 3. See `references/confirmation.md`.\n\n**Path C — Detailed mode**: two sub-confirmations.\n\n- *Step 2a — Content understanding*: ask selling points (multi-select), audience, style preference (authentic / professional / aesthetic / auto), optional context. Update `analysis.md`.\n- *Step 2b — Three outline variants*: generate `outline-strategy-a.md`, `outline-strategy-b.md`, `outline-strategy-c.md`. Each MUST have a different structure AND a different recommended style — include `style_reason` in the frontmatter. Page-count heuristic: A ~4-6, B ~3-5, C ~3-4. Template: `references/workflows/outline-template.md`; frontmatter example in `references/confirmation.md`.\n- *Step 2c — Selection*: ask three questions (outline A/B/C/Combined, style, visual elements). Save selected/merged outline to `outline.md` → Step 3.\n\n### Step 3: Generate Images\n\nWith confirmed outline + style + layout + palette:\n\n**Visual consistency — image-1 anchor chain**: character / mascot / color rendering drifts between calls unless you anchor them. Generate image 1 (cover) first WITHOUT `--ref`, then pass image 1 as `--ref` to every subsequent image. This is the single most important consistency trick for this skill — don't skip it even if the backend also supports a session ID.\n\nGeneration flow:\n\n1. Write the full prompt for every image to `prompts/NN-{type}-{slug}.md` in the user's preferred language (backup rule applies), then verify all selected prompt files exist.\n2. Generate **image 1** first without `--ref`; backup rule applies to the PNG file. This establishes the anchor.\n3. Build a task list for **images 2+** using image 1 as `--ref <path-to-image-01.png>`.\n4. Dispatch images 2+ in batches per the `## Batch Generation Policy`: backend native batch first, runtime parallel tool calls second, sequential only as fallback.\n5. Report progress after each completed image. On failure, retry only the failed item once from the same saved prompt file.\n\n**Watermark** (if enabled in EXTEND.md): append to the generation prompt:\n\n```\nInclude a subtle watermark \"[content]\" positioned at [position].\nThe watermark should be legible but not distracting.\n```\n\nSee `references/config/watermark-guide.md`.\n\n**Backend selection**: per the Image Generation Tools rule at the top — use whatever is available, ask once if multiple, before any generation. Under `--yes`, use the EXTEND.md preference and fall back to the first available backend. Prompt files MUST exist before invoking any backend.\n\n**`codex-imagegen` invocation**: when the rule resolves to `codex-imagegen`, see [references/codex-imagegen.md](references/codex-imagegen.md) for the invocation contract (preferred `baoyu-image-gen --provider codex-cli` path, runtime wrapper discovery, parameter notes, stdout schema, batch semantics — n=1 per call so card batches must dispatch one wrapper call per card; the wrapper does NOT accept `--sessionId`, so chain consistency must come from `--ref` per Step 3 above).\n\n**Session ID** (if the backend supports `--sessionId`): use `cards-{topic-slug}-{timestamp}` for every image; combined with the ref chain this gives maximum consistency.\n\n### Step 4: Completion Report\n\n```\nImage Card Series Complete!\n\nTopic: [topic]\nMode: [Quick / Custom / Detailed]\nStrategy: [A/B/C/Combined]\nStyle: [name]\nPalette: [name or \"default\"]\nLayout: [name or \"varies\"]\nLocation: [directory]\nImages: N total\n\n✓ analysis.md\n✓ outline.md\n✓ outline-strategy-a/b/c.md (detailed mode only)\n\n- 01-cover-[slug].png ✓ Cover (sparse)\n- 02-content-[slug].png ✓ Content (balanced)\n- ...\n- NN-ending-[slug].png ✓ Ending (sparse)\n```\n\n## Content Breakdown Principles\n\n| Position | Purpose | Typical layout |\n|----------|---------|----------------|\n| Cover (image 1) | Hook + visual impact | `sparse` |\n| Content (middle) | Core value per image | `balanced` / `dense` / `list` / `comparison` / `flow` |\n| Ending (last) | CTA / summary | `sparse` or `balanced` |\n\nFor the style × layout compatibility matrix, see the **Style × Layout Matrix** above.\n\n## Image Modification\n\n| Action | How |\n|--------|-----|\n| Edit | Update `prompts/NN-{type}-{slug}.md` **first**, then regenerate with the same session ID |\n| Add | Specify position, create prompt, generate, renumber subsequent files `NN+1`, update outline |\n| Delete | Remove files, renumber subsequent `NN-1`, update outline |\n\nAlways update the prompt file before regenerating — it's the source of truth and makes changes reproducible.\n\nText correction policy:\n\n- If a card's title, body copy, tags, or any other rendered text is misspelled, garbled, hard to read, or visually weak, do not patch the bitmap with code.\n- For text-correction regenerations, write a new prompt file and a new output path so the flawed candidate is preserved for comparison.\n- Post-processing is limited to crop, resize, compression, or format conversion that does not alter text or the main composition.\n\n## References\n\n| File | Content |\n|------|---------|\n| `references/confirmation.md` | Verbatim AskUserQuestion copy for every confirmation path |\n| `references/style-presets.md` | Full preset shortcut definitions |\n| `references/presets/<style>.md` | Per-style element definitions |\n| `references/palettes/<name>.md` | Per-palette color definitions |\n| `references/elements/canvas.md` | Aspect ratios, safe zones, grid layouts |\n| `references/elements/image-effects.md` | Cutout, stroke, filters |\n| `references/elements/typography.md` | Decorated text, tags, text direction |\n| `references/elements/decorations.md` | Emphasis marks, backgrounds, doodles, frames |\n| `references/workflows/analysis-framework.md` | Content analysis framework |\n| `references/workflows/outline-template.md` | Outline template with layout guide |\n| `references/workflows/prompt-assembly.md` | Prompt assembly guide |\n| `references/config/preferences-schema.md` | EXTEND.md schema |\n| `references/config/first-time-setup.md` | First-time setup flow |\n| `references/config/watermark-guide.md` | Watermark configuration |\n\n## Notes\n\n- Auto-retry once on generation failure before reporting an error.\n- For sensitive public figures, use stylized cartoon alternatives.\n- Smart Confirm (Step 2) is required; Detailed mode adds a second confirmation (2a + 2c).\n\n## Changing Preferences\n\nEXTEND.md lives at the first matching path listed 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`.\n- **Reconfigure interactively** — delete EXTEND.md (or ask \"reconfigure baoyu-xhs-images preferences\" / \"重新配置\"). The next run re-triggers first-time setup.\n- **Common one-line edits**:\n  - `preferred_image_backend: auto` — default; runtime-native tool wins, falls back to the only installed backend, asks only if multiple non-native are present.\n  - `preferred_image_backend: codex-imagegen` — pin to Codex's built-in.\n  - `preferred_image_backend: baoyu-image-gen` — pin to the baoyu-image-gen skill.\n  - `preferred_image_backend: ask` — confirm backend every run.\n  - `generation_batch_size: 4` — default number of images to render concurrently when the backend/runtime supports batch or parallel generation.\n  - `preferred_style: notion`, `preferred_layout: dense`, `preferred_palette: macaron`, `language: zh`.\n  - `watermark.enabled: true` + `watermark.content: \"@handle\"` — add a watermark.\n\nFile v2.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn7csrrndw79hpke5d0gsnx93d82k67r\",\n  \"slug\": \"baoyu-xhs-images\",\n  \"version\": \"2.0.1\",\n  \"publishedAt\": 1781326763860\n}\n\nFile v2.0.1:references/codex-imagegen.md\n\n# `codex-imagegen` Wrapper Invocation\n\nLoad this reference only when the [Image Generation Tools](../SKILL.md#image-generation-tools) rule has resolved to `codex-imagegen` — i.e., the current runtime exposes no native `imagegen` skill but `codex` CLI is on `PATH` with an active `codex login`.\n\n## Preferred path: route through `baoyu-image-gen`\n\nIf the `baoyu-image-gen` skill is available in this runtime, **always** invoke through it rather than calling the wrapper directly. It handles retry/cache/batch/EXTEND.md preferences uniformly with every other provider.\n\n```bash\n${BUN_X} <baoyu-image-gen-base>/scripts/main.ts \\\n  --provider codex-cli \\\n  --image <ABSOLUTE_output> \\\n  --promptfiles <ABSOLUTE_prompts/NN-{type}-[slug].md> \\\n  --ar <ratio> \\\n  [--ref <ABSOLUTE_file>]...\n```\n\nResolve `<baoyu-image-gen-base>` the same way you resolve any sibling skill — through your runtime's skill registry (`Skill` tool, plugin marketplace, or `$HOME/.baoyu-skills/baoyu-image-gen/`).\n\n## Fallback: spawn the wrapper directly\n\nOnly when `baoyu-image-gen` is NOT installed in the current runtime. Discover the wrapper's location at runtime — do NOT hard-code `../../packages/...` from this skill:\n\n1. **Honor explicit override**: if `$BAOYU_CODEX_IMAGEGEN_BIN` is set and points to a real file, use that path. It may be `.ts` (spawn `bun <path>`) or `.sh`/binary (spawn directly).\n2. **Search the plugin root**: walk up from this skill's directory looking for `packages/baoyu-codex-imagegen/src/main.ts`. If found, that is the wrapper. Spawn it with `bun`.\n3. **Last resort**: tell the user that `codex-imagegen` is not available in this runtime and ask whether to install the `baoyu-skills` plugin (or set `BAOYU_CODEX_IMAGEGEN_BIN`) or pick another backend.\n\nOnce located, the invocation shape is:\n\n```bash\nbun <WRAPPER>/main.ts \\\n  --image <ABSOLUTE_output> \\\n  --prompt-file <ABSOLUTE_prompts/NN-{type}-[slug].md> \\\n  --aspect <ratio> \\\n  [--ref <ABSOLUTE_file>]... \\\n  [--timeout <ms>] \\\n  [--cache-dir ~/.cache/baoyu-codex-imagegen] \\\n  [--log-file <ABSOLUTE_jsonl_log_path>]\n```\n\nIf `bun` is missing, `npx -y bun <WRAPPER>/main.ts ...` works as a fallback.\n\n## Parameter notes\n\n- **All filesystem inputs** are auto-resolved against `process.cwd()` when relative, but agents should pass absolute paths to be robust against cwd drift.\n- **`--timeout`** defaults to `300000` (5 min) per `codex exec` attempt. Raise (e.g. `--timeout 600000` for 10 min) on slow networks or large prompts.\n- **`--cache-dir`** is off by default. Enable for repeatable runs to skip redundant generations of the same prompt+aspect+refs.\n- **Authentication**: the wrapper uses the user's Codex subscription — no `OPENAI_API_KEY` is read or sent.\n\n## Stdout contract\n\nSingle JSON line:\n\n- Success: `{\"status\":\"ok\",\"path\":\"...\",\"bytes\":N,\"elapsed_seconds\":N,\"thread_id\":\"...\",\"attempts\":N,\"cached\":bool,...}`\n- Failure: `{\"status\":\"error\",\"path\":\"...\",\"bytes\":0,\"error\":\"...\",\"error_kind\":\"...\"}`\n\n`error_kind` values: `codex_not_installed`, `invalid_args`, `prompt_file_missing`, `spawn_failed`, `timeout`, `no_image_gen_tool_use`, `output_missing`, `invalid_png`, `agent_refused`, `lock_busy`.\n\nOn retryable errors (timeout, spawn_failed, no_image_gen_tool_use, output_missing, invalid_png, agent_refused), ask the user whether to retry or fall back to another backend.\n\n## Batch semantics\n\n- Codex `image_gen` returns **one image per call** (`n=1` only). Multi-image jobs must dispatch one wrapper call per image.\n- The wrapper does NOT accept a `--sessionId` flag. Chain/scene consistency must come from `--ref` reference images.\n- `--size` and `--quality` are silently ignored — Codex picks pixel dimensions from `--aspect`.\n\nFile v2.0.1:references/config/first-time-setup.md\n\n---\nname: first-time-setup\ndescription: First-time setup flow for baoyu-xhs-images 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 content/article\n- Ask about style or layout\n- Ask about target audience\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 single AskUserQuestion with multiple questions (AskUserQuestion auto-adds \"Other\" option):\n\n### Question 1: Watermark\n\n```\nheader: \"Watermark\"\nquestion: \"Watermark text for generated images? Type your watermark content (e.g., name, @handle)\"\noptions:\n  - label: \"No watermark (Recommended)\"\n    description: \"No watermark, can enable later in EXTEND.md\"\n```\n\nPosition defaults to bottom-right.\n\n### Question 2: Preferred Style\n\n```\nheader: \"Style\"\nquestion: \"Default visual style preference? Or type another style name or your custom style\"\noptions:\n  - label: \"None (Recommended)\"\n    description: \"Auto-select based on content analysis\"\n  - label: \"cute\"\n    description: \"Sweet, adorable - classic XHS aesthetic\"\n  - label: \"notion\"\n    description: \"Minimalist hand-drawn, intellectual\"\n```\n\n### Question 3: Save Location\n\n```\nheader: \"Save\"\nquestion: \"Where to save preferences?\"\noptions:\n  - label: \"Project\"\n    description: \".baoyu-skills/ (this project only)\"\n  - label: \"User\"\n    description: \"~/.baoyu-skills/ (all projects)\"\n```\n\n## Save Locations\n\n| Choice | Path | Scope |\n|--------|------|-------|\n| Project | `.baoyu-skills/baoyu-xhs-images/EXTEND.md` | Current project |\n| User | `~/.baoyu-skills/baoyu-xhs-images/EXTEND.md` | All projects |\n\n## After Setup\n\n1. Create directory if needed\n2. Write EXTEND.md with frontmatter\n3. Confirm: \"Preferences saved to [path]\"\n4. Continue to Step 1\n\n## EXTEND.md Template\n\n```yaml\n---\nversion: 1\nwatermark:\n  enabled: [true/false]\n  content: \"[user input or empty]\"\n  position: bottom-right\n  opacity: 0.7\npreferred_style:\n  name: [selected style or null]\n  description: \"\"\npreferred_layout: null\nlanguage: null\npreferred_image_backend: auto\ngeneration_batch_size: 4\ncustom_styles: []\n---\n```\n\n`preferred_image_backend: auto` is the baked-in default — first-time setup does not ask about it. The `## Image Generation Tools` rule in SKILL.md then picks the runtime-native tool (Codex `imagegen`, Hermes `image_generate`, etc.) when available, and falls back to installed backends.\n\n`generation_batch_size: 4` is the baked-in default for batch rendering. The current user request may override it for one run.\n\n## Modifying Preferences Later\n\nSee the `## Changing Preferences` section in `SKILL.md` for the canonical list of common edits (pin backend, change defaults, retrigger setup). Full schema: `preferences-schema.md`.\n\nFile v2.0.1:references/config/preferences-schema.md\n\n---\nname: preferences-schema\ndescription: EXTEND.md YAML schema for baoyu-xhs-images user preferences\n---\n\n# Preferences Schema\n\n## Full Schema\n\n```yaml\n---\nversion: 1\n\nwatermark:\n  enabled: false\n  content: \"\"\n  position: bottom-right  # bottom-right|bottom-left|bottom-center|top-right\n\npreferred_style:\n  name: null              # Built-in or custom style name\n  description: \"\"         # Override/notes\n\npreferred_layout: null    # sparse|balanced|dense|list|comparison|flow\n\nlanguage: null            # zh|en|ja|ko|auto\n\npreferred_image_backend: auto  # auto|ask|<backend-id>\n\ngeneration_batch_size: 4       # 1-8, used when backend/runtime supports batch or parallel generation\n\ncustom_styles:\n  - name: my-style\n    description: \"Style description\"\n    color_palette:\n      primary: [\"#FED7E2\", \"#FEEBC8\"]\n      background: \"#FFFAF0\"\n      accents: [\"#FF69B4\", \"#FF6B6B\"]\n    visual_elements: \"Hearts, stars, sparkles\"\n    typography: \"Rounded, bubbly hand lettering\"\n    best_for: \"Lifestyle, beauty\"\n---\n```\n\n## Field Reference\n\n| Field | Type | Default | Description |\n|-------|------|---------|-------------|\n| `version` | int | 1 | Schema version |\n| `watermark.enabled` | bool | false | Enable watermark |\n| `watermark.content` | string | \"\" | Watermark text (@username or custom) |\n| `watermark.position` | enum | bottom-right | Position on image |\n| `preferred_style.name` | string | null | Style name or null |\n| `preferred_style.description` | string | \"\" | Custom notes/override |\n| `preferred_layout` | string | null | Layout preference or null |\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| `generation_batch_size` | int | 4 | Number of images to dispatch per batch when the backend has native batch support or the runtime can issue parallel generation calls. Clamp invalid values to 1-8. Current user request overrides this value. |\n| `custom_styles` | array | [] | User-defined styles |\n\n## Position Options\n\n| Value | Description |\n|-------|-------------|\n| `bottom-right` | Lower right corner (default, most common) |\n| `bottom-left` | Lower left corner |\n| `bottom-center` | Bottom center |\n| `top-right` | Upper right corner |\n\n## Custom Style Fields\n\n| Field | Required | Description |\n|-------|----------|-------------|\n| `name` | Yes | Unique style identifier (kebab-case) |\n| `description` | Yes | What the style conveys |\n| `color_palette.primary` | No | Main colors (array) |\n| `color_palette.background` | No | Background color |\n| `color_palette.accents` | No | Accent colors (array) |\n| `visual_elements` | No | Decorative elements |\n| `typography` | No | Font/lettering style |\n| `best_for` | No | Recommended content types |\n\n## Example: Minimal Preferences\n\n```yaml\n---\nversion: 1\nwatermark:\n  enabled: true\n  content: \"@myusername\"\npreferred_style:\n  name: notion\n---\n```\n\n## Example: Full Preferences\n\n```yaml\n---\nversion: 1\nwatermark:\n  enabled: true\n  content: \"@myxhsaccount\"\n  position: bottom-right\n\npreferred_style:\n  name: notion\n  description: \"Clean knowledge cards for tech content\"\n\npreferred_layout: dense\n\nlanguage: zh\n\npreferred_image_backend: codex-imagegen\n\ngeneration_batch_size: 4\n\ncustom_styles:\n  - name: corporate\n    description: \"Professional B2B style\"\n    color_palette:\n      primary: [\"#1E3A5F\", \"#4A90D9\"]\n      background: \"#F5F7FA\"\n      accents: [\"#00B4D8\", \"#48CAE4\"]\n    visual_elements: \"Clean lines, subtle gradients, geometric shapes\"\n    typography: \"Modern sans-serif, professional\"\n    best_for: \"Business, SaaS, enterprise\"\n---\n```\n\nFile v2.0.1:references/config/watermark-guide.md\n\n---\nname: watermark-guide\ndescription: Watermark configuration guide for baoyu-xhs-images\n---\n\n# Watermark Guide\n\n## Position Diagram\n\n```\n┌─────────────────────────────┐\n│                  [top-right]│\n│                             │\n│                             │\n│         IMAGE CONTENT       │\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 | Key info in bottom-right |\n| `bottom-left` | Right-heavy layouts | Key info 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` | Most common for XHS |\n| Text | `MyBrand` | Simple branding |\n| Chinese | `小红书:用户名` | Platform specific |\n| URL | `myblog.com` | Cross-platform |\n\n## Best Practices\n\n1. **Consistency**: Use same watermark across all images in series\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## 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 content | Change position |\n| Inconsistent across images | Use session ID for consistency |\n\nFile v2.0.1:references/confirmation.md\n\n# Confirmation Questions\n\nConcrete option copy for Step 2 Smart Confirm. SKILL.md states which question to ask and when — this file supplies the verbatim options used in Claude Code. Other runtimes should adapt the wording to their native user-input tool while preserving intent.\n\n## Step 2 — Smart Confirm Entry\n\nSingle-question confirmation presented right after the auto-recommended plan.\n\n```yaml\nheader: Mode\nquestion: How to proceed with the recommended plan?\noptions:\n  - label: 1. ✅ 确认，直接生成（推荐）\n    description: Trust auto-recommendation and proceed immediately\n  - label: 2. 🎛️ 自定义调整\n    description: Modify strategy/style/layout/count in one step\n  - label: 3. 📋 详细模式\n    description: Generate 3 outline variants, then choose (two confirmations)\n```\n\n## Path B — Customize (Option 2)\n\nBatch these five questions. Leaving a field blank keeps the recommended value.\n\n```yaml\nheader: Style/Strategy\nquestion: \"Strategy + style. Current: {strategy} + {style}\"\nhint: |\n  Strategies: A Story-Driven (warm) | B Information-Dense (notion) | C Visual-First (screen-print)\n  Styles: cute / fresh / warm / bold / minimal / retro / pop / notion / chalkboard / study-notes / screen-print / sketch-notes\n  Presets: knowledge-card / checklist / tutorial / poster / hand-drawn-edu / ...\n```\n\n```yaml\nheader: Layout\nquestion: \"Layout. Current: {layout}\"\noptions: [sparse, balanced, dense, list, comparison, flow, mindmap, quadrant]\n```\n\n```yaml\nheader: Palette\nquestion: \"Palette. Current: {palette or 默认}\"\noptions: [默认, macaron, warm, neon]\n```\n\n```yaml\nheader: Count\nquestion: \"Image count. Current: {N}\"\nhint: Range 2-10\n```\n\n```yaml\nheader: Notes\nquestion: Optional notes (selling-point emphasis, audience adjustment, color preference)\noptional: true\n```\n\n## Path C — Detailed Mode\n\n### Step 2a: Content Understanding\n\nBatch these questions.\n\n```yaml\nheader: SellingPoints\nquestion: Core selling points (pick all that apply)\nmultiSelect: true\n```\n\n```yaml\nheader: Audience\nquestion: Target audience\n```\n\n```yaml\nheader: Tone\nquestion: Style preference\noptions:\n  - label: Authentic sharing\n  - label: Professional review\n  - label: Aesthetic mood\n  - label: Auto\n```\n\n```yaml\nheader: Context\nquestion: Additional context (optional)\noptional: true\n```\n\n### Step 2c: Outline & Style Selection\n\nBatch these three questions.\n\n```yaml\nheader: Strategy\nquestion: Which outline strategy?\noptions:\n  - label: A — Story-Driven\n  - label: B — Information-Dense\n  - label: C — Visual-First\n  - label: Combine (specify pages from each)\n```\n\n```yaml\nheader: Style\nquestion: Visual style?\noptions:\n  - label: Use recommended\n  - label: Select preset\n  - label: Select style directly\n  - label: Custom description\n```\n\n```yaml\nheader: Elements\nquestion: Visual elements?\noptions:\n  - label: Use defaults (Recommended)\n  - label: Adjust background\n  - label: Adjust decorations\n  - label: Custom\n```\n\n## Outline Variant Frontmatter\n\nUsed by Path C when writing the three `outline-strategy-{a,b,c}.md` files. Each variant MUST have a different structure AND a different recommended style — include `style_reason` explaining why the style fits the strategy.\n\n```yaml\n---\nstrategy: a  # a | b | c\nname: Story-Driven\nstyle: warm  # recommended style for this strategy\npalette: ~   # optional: macaron | warm | neon | ~ (style default)\nstyle_reason: \"Warm tones enhance emotional storytelling and personal connection\"\nelements:\n  background: solid-pastel\n  decorations: [clouds, stars-sparkles]\n  emphasis: star-burst\n  typography: highlight\nlayout: balanced\nimage_count: 5\n---\n\n## P1 Cover\n**Type**: cover\n**Hook**: \"入冬后脸不干了🥹终于找到对的面霜\"\n**Visual**: Product hero shot with cozy winter atmosphere\n**Layout**: sparse\n\n## P2 Problem\n**Type**: pain-point\n...\n```\n\nPage-count heuristic: strategy A typically 4-6 pages, B typically 3-5, C typically 3-4.\n\nFile v2.0.1:references/elements/canvas.md\n\n# Canvas & Layout\n\nCore canvas specifications and layout grids for Xiaohongshu infographics.\n\n## Aspect Ratios\n\n| Name | Ratio | Pixels | Note |\n|------|-------|--------|------|\n| portrait-3-4 | 3:4 | 1242×1660 | Highest traffic on XHS (recommended) |\n| square | 1:1 | 1242×1242 | Second recommended |\n| portrait-2-3 | 2:3 | 1242×1863 | Taller format |\n\n**Default**: portrait-3-4 for maximum engagement.\n\n## Safe Zones\n\nAvoid placing critical content in these areas:\n\n| Zone | Position | Reason |\n|------|----------|--------|\n| bottom-overlay | Bottom 10% | Title bar overlay on mobile |\n| top-right | Top-right corner | Like/share button overlay |\n| bottom-right | Bottom-right corner | Watermark position |\n\n```\n┌─────────────────────────────┐\n│                 [like/share]│  ← top-right: avoid\n│                             │\n│                             │\n│      ✓ SAFE CONTENT AREA    │\n│                             │\n│                             │\n│  [title bar overlay area]   │  ← bottom 10%: avoid key info\n└─────────────────────────────┘\n```\n\n## Grid Layouts\n\n### Density-Based Layouts\n\n| Layout | Info Density | Whitespace | Points/Image | Best For |\n|--------|--------------|------------|--------------|----------|\n| sparse | Low | 60-70% | 1-2 | Covers, quotes, impactful statements |\n| balanced | Medium | 40-50% | 3-4 | Standard content, tutorials |\n| dense | High | 20-30% | 5-8 | Knowledge cards, cheat sheets |\n\n### Structure-Based Layouts\n\n| Layout | Structure | Items | Best For |\n|--------|-----------|-------|----------|\n| list | Vertical enumeration | 4-7 | Rankings, checklists, step guides |\n| comparison | Left vs Right | 2 sections | Before/after, pros/cons |\n| flow | Connected nodes | 3-6 steps | Processes, timelines, workflows |\n| mindmap | Center radial | 4-8 branches | Concept maps, brainstorming, topic overview |\n| quadrant | 4-section grid | 4 sections | SWOT analysis, priority matrix, classification |\n\n## Layout by Position\n\n| Position | Recommended Layout | Why |\n|----------|-------------------|-----|\n| Cover | sparse | Maximum visual impact, clear title |\n| Setup | balanced | Context without overwhelming |\n| Core | balanced/dense/list | Based on content density |\n| Payoff | balanced/list | Clear takeaways |\n| Ending | sparse | Clean CTA, memorable close |\n\n## Grid Cells\n\nFor multi-element compositions:\n\n| Name | Cells | Use Case |\n|------|-------|----------|\n| single | 1 | Hero image, maximum impact |\n| dual | 2 | Before/after, comparison |\n| triptych | 3 | Steps, process flow |\n| quad | 4 | Product showcase |\n| six-grid | 6 | Checklist, collection |\n| nine-grid | 9 | Multi-image gallery |\n\n## Visual Balance\n\n### Sparse Layout\n- Single focal point centered\n- Breathing room on all sides\n- Symmetrical composition\n\n### Balanced Layout\n- Top-weighted title\n- Evenly distributed content below\n- Clear visual hierarchy\n\n### Dense Layout\n- Organized grid structure\n- Clear section boundaries\n- Compact but readable spacing\n\n### List Layout\n- Left-aligned items\n- Clear number/bullet hierarchy\n- Consistent item format\n\n### Comparison Layout\n- Symmetrical left/right\n- Clear visual contrast\n- Divider between sections\n\n### Flow Layout\n- Directional flow (top→bottom or left→right)\n- Connected nodes with arrows\n- Clear progression indicators\n\n### Mindmap Layout\n- Central topic node\n- Radial branches outward\n- Hierarchical sub-branches\n- Organic curved connections\n\n### Quadrant Layout\n- 4-section grid (2×2)\n- Clear axis labels\n- Each quadrant with distinct content\n- Optional circular variant for cycles\n\nFile v2.0.1:references/elements/decorations.md\n\n# Decorative Assets\n\nVisual embellishments and decorative elements for Xiaohongshu infographics.\n\n## Emphasis Marks (强调标记)\n\nElements to draw attention to specific content.\n\n| Name | Description | Use Case |\n|------|-------------|----------|\n| red-arrow | Red arrow pointing to target | Product features, key points |\n| circle-mark | Circle highlight annotation | Highlighting details |\n| underline | Straight or wavy underline | Text emphasis |\n| star-burst | Starburst explosion effect | Special offers, wow factor |\n| checkmark | Checkmark/tick symbol | Completed items, pros |\n| cross-mark | X mark symbol | Cons, things to avoid |\n| exclamation | Exclamation point decoration | Important warnings |\n| question | Question mark decoration | FAQ, curiosity |\n| numbering | Circled numbers | Steps, rankings |\n| bracket | Bracket highlighting | Grouping, emphasis |\n\n## Backgrounds (背景)\n\nBase layer treatments.\n\n| Name | Description | Use Case |\n|------|-------------|----------|\n| solid-saturated | High-saturation solid color | Bold, energetic |\n| solid-pastel | Soft pastel solid color | Cute, gentle |\n| gradient-linear | Linear color gradient | Modern, dynamic |\n| gradient-radial | Radial color gradient | Spotlight effect |\n| frosted-glass | Frosted glass blur effect | Layered compositions |\n| paper-texture | Paper or craft texture | Handmade aesthetic |\n| fabric-texture | Fabric/cloth texture | Cozy, tactile |\n| chalkboard | Blackboard texture | Educational content |\n| grid | Subtle grid pattern | Structured, organized |\n| dots | Polka dot pattern | Playful, retro |\n\n## Doodles & Emoji (涂鸦)\n\nHand-drawn decorative elements.\n\n| Name | Description | Use Case |\n|------|-------------|----------|\n| hand-drawn-lines | Sketchy hand-drawn lines | Connections, borders |\n| stars-sparkles | Stars and sparkle effects | Magic, excellence |\n| flowers | Floral decorations | Beauty, feminine |\n| hearts | Heart symbols | Love, favorites |\n| clouds | Cloud shapes | Dreamy, thoughts |\n| arrows-curvy | Curved directional arrows | Flow, direction |\n| squiggles | Wavy squiggle lines | Energy, movement |\n| confetti | Scattered confetti | Celebration |\n| leaves | Leaf decorations | Nature, fresh |\n| bubbles | Circular bubble shapes | Playful, light |\n\n## Emoji Integration\n\n| Category | Examples | Use Case |\n|----------|----------|----------|\n| Reactions | 🥹 😍 🤯 | Emotional emphasis |\n| Objects | ✨ 💡 🎯 | Visual markers |\n| Actions | 👇 👆 ➡️ | Directional cues |\n| Nature | 🌸 🌿 ☀️ | Thematic decoration |\n\n## Frames (边框)\n\nContainer and border treatments.\n\n| Name | Description | Use Case |\n|------|-------------|----------|\n| polaroid | Instant photo frame | Photo showcase |\n| film-strip | Film negative border | Cinematic, retro |\n| phone-screenshot | Mobile device mockup | App/screen content |\n| torn-paper | Torn paper edge effect | Scrapbook aesthetic |\n| rounded-rect | Rounded rectangle border | Clean containers |\n| decorative | Ornate decorative border | Premium, elegant |\n| tape-corners | Washi tape corners | Crafty, casual |\n| stamp-border | Stamp perforated edge | Vintage, postal |\n\n## Dividers (分隔线)\n\nSection separators.\n\n| Name | Description | Use Case |\n|------|-------------|----------|\n| line-simple | Simple horizontal line | Clean separation |\n| line-dashed | Dashed line | Subtle division |\n| line-wavy | Wavy line | Playful separation |\n| dots-row | Row of dots | Decorative division |\n| ornamental | Decorative flourish | Elegant separation |\n\n## Stickers (贴纸)\n\nPre-composed decorative elements.\n\n| Name | Description | Use Case |\n|------|-------------|----------|\n| badge-new | \"NEW\" badge | New products |\n| badge-hot | \"HOT\" badge | Trending items |\n| badge-sale | Sale/discount badge | Promotions |\n| seal-quality | Quality seal | Recommendations |\n| ribbon-award | Award ribbon | Best picks |\n| tag-price | Price tag shape | Pricing info |\n\n## Style-Specific Decorations\n\n### Cute Style\n- Hearts, stars, sparkles\n- Ribbon decorations, sticker-style\n- Cute character elements\n\n### Notion Style\n- Simple line doodles\n- Geometric shapes, stick figures\n- Maximum whitespace, minimal decoration\n\n### Warm Style\n- Sun rays, coffee cups, cozy items\n- Warm lighting effects\n- Friendly, inviting decorations\n\n### Fresh Style\n- Plant leaves, clouds, water drops\n- Simple geometric shapes\n- Open, breathing composition\n\n### Bold Style\n- Exclamation marks, arrows\n- Warning icons, strong shapes\n- High contrast elements\n\n### Pop Style\n- Bold shapes, speech bubbles\n- Comic-style effects, starburst\n- Dynamic, energetic decorations\n\n### Retro Style\n- Halftone dots, vintage badges\n- Classic icons, tape effects\n- Aged texture overlays\n\n### Chalkboard Style\n- Chalk dust effects\n- Hand-drawn doodles\n- Mathematical formulas, simple icons\n\n### Screen-Print Style\n- Bold silhouettes, geometric shapes\n- Halftone dot patterns, print grain\n- No doodles — negative space does the work\n- Stencil-cut edges, color block boundaries\n- Vintage poster border treatments\n\nFile v2.0.1:references/elements/image-effects.md\n\n# Image Processing Layer\n\nVisual effects applied to image elements in Xiaohongshu infographics.\n\n## AI Cutout (抠图)\n\nSubject extraction styles for product/figure isolation.\n\n| Name | Description | Use Case |\n|------|-------------|----------|\n| clean | Sharp edges, precise boundaries | Product photography, tech items |\n| soft | Soft transition, feathered edges | Portrait cutout, organic subjects |\n| stylized | Hand-drawn edge treatment | Artistic compositions |\n\n## Stroke Effects (描边)\n\nBorder treatments for cutout elements.\n\n| Name | Description | Use Case |\n|------|-------------|----------|\n| white-solid | White solid line border | Classic sticker feel, high contrast |\n| colored-solid | Colored solid line border | Playful vibe, brand colors |\n| dashed | Dashed/dotted border | Handmade aesthetic, casual |\n| double | Double-layer stroke | Emphasis effect, premium feel |\n| glow | Soft outer glow | Dreamy, soft aesthetic |\n| shadow | Drop shadow effect | Depth, floating element |\n\n**Stroke Width Guidelines**:\n- Thin: 2-4px - Subtle, elegant\n- Medium: 5-8px - Standard visibility\n- Thick: 10-15px - Bold emphasis\n\n## Filters (滤镜)\n\nColor grading and mood presets popular on XHS.\n\n| Name | Chinese | Description | Mood |\n|------|---------|-------------|------|\n| clear-glow | 清透感 | Transparent, radiant, luminous | Fresh, youthful |\n| film-grain | 胶片感 | Vintage film aesthetic, grain texture | Nostalgic, artistic |\n| cream-skin | 奶油肌 | Smooth, creamy complexion tones | Soft, flattering |\n| japanese-magazine | 日杂感 | Lifestyle magazine aesthetic | Curated, aspirational |\n| high-saturation | 高饱和 | Vibrant, punchy colors | Energetic, eye-catching |\n| muted-tones | 莫兰迪 | Morandi-style desaturated palette | Sophisticated, calm |\n| warm-tone | 暖色调 | Golden hour warmth | Cozy, inviting |\n| cool-tone | 冷色调 | Blue-shifted coolness | Modern, clean |\n\n## Texture Overlays\n\nAdditional texture effects.\n\n| Name | Description | Use Case |\n|------|-------------|----------|\n| paper | Paper or fabric texture | Handmade feel |\n| noise | Fine grain noise | Analog aesthetic |\n| halftone | Dot pattern | Retro print style |\n| scratch | Light scratch marks | Vintage wear |\n\n## Blending Modes\n\nFor layered compositions.\n\n| Mode | Effect | Use Case |\n|------|--------|----------|\n| multiply | Darken, merge | Shadow effects |\n| screen | Lighten, glow | Light effects |\n| overlay | Contrast boost | Vibrant compositions |\n| soft-light | Subtle blending | Natural layering |\n\n## Effect Combinations\n\nCommon effect stacks for different styles:\n\n### Cute Style\n- Filter: clear-glow or cream-skin\n- Stroke: white-solid (medium)\n- Texture: none\n\n### Notion Style\n- Filter: none or muted-tones\n- Stroke: white-solid (thin) or none\n- Texture: paper (subtle)\n\n### Retro Style\n- Filter: film-grain\n- Stroke: double or dashed\n- Texture: halftone, scratch\n\n### Bold Style\n- Filter: high-saturation\n- Stroke: colored-solid (thick)\n- Texture: none\n\nFile v2.0.1:references/elements/typography.md\n\n# Typography System\n\nText styling elements for Xiaohongshu infographics.\n\n## Decorated Text (花字)\n\nStylized text treatments for emphasis and visual appeal.\n\n| Name | Description | Use Case |\n|------|-------------|----------|\n| gradient | Gradient color fill | Title emphasis, modern feel |\n| stroke-text | Outlined text with stroke | Cover headlines, high visibility |\n| shadow-3d | 3D shadow/extrusion effect | Key terms, depth |\n| highlight | Highlighter marker effect | Critical information, key points |\n| neon | Neon glow effect | Tech content, night aesthetic |\n| handwritten | Authentic handwritten style | Personal touch, casual |\n| bubble | Rounded, inflated letterforms | Cute, playful content |\n| brush | Brush stroke texture | Artistic, dynamic |\n\n## Tags & Labels (标签)\n\nStructured text containers.\n\n| Name | Description | Use Case |\n|------|-------------|----------|\n| black-white | Black background, white text | Brand names, prices, categories |\n| white-black | White background, black text | Clean labels, minimal style |\n| bubble | Speech bubble style | Dialogue, annotations, callouts |\n| pointer | Arrow pointer with label | Product callouts, pointing to features |\n| ribbon | Ribbon/banner shape | Special offers, highlights |\n| stamp | Stamp/seal style | Authenticity, recommendations |\n| pill | Rounded pill shape | Tags, categories, keywords |\n\n## Text Hierarchy\n\nRecommended text sizing for visual hierarchy.\n\n| Level | Role | Relative Size | Style |\n|-------|------|---------------|-------|\n| H1 | Main title | 100% | Bold, decorated |\n| H2 | Section header | 70-80% | Semi-bold |\n| H3 | Subsection | 50-60% | Medium weight |\n| Body | Content text | 40-50% | Regular |\n| Caption | Small notes | 30-35% | Light |\n\n## Text Direction\n\n| Direction | Description | Use Case |\n|-----------|-------------|----------|\n| horizontal | Standard left-to-right | Default for most content |\n| vertical | Top-to-bottom columns | Magazine style, traditional Chinese |\n| curved | Text following a curve | Decorative, around shapes |\n| diagonal | Angled text | Dynamic compositions |\n\n## Text Effects\n\n| Effect | Description | Use Case |\n|--------|-------------|----------|\n| shadow | Drop shadow behind text | Readability on busy backgrounds |\n| outline | Outline around letterforms | High contrast visibility |\n| glow | Soft glow around text | Dreamy, emphasis |\n| underline-wavy | Wavy underline decoration | Playful emphasis |\n| strikethrough | Crossed out text | Before/after, corrections |\n\n## Language Considerations\n\n### Chinese Text (中文)\n- Punctuation: 「」（）、。！？\n- Spacing: No spaces between characters\n- Line height: 1.5-1.8x for readability\n\n### Mixed Text\n- English in Chinese context: Maintain consistent baseline\n- Numbers: Use consistent number style (lining vs old-style)\n\n## Style-Specific Typography\n\n### Cute Style\n- Rounded, bubbly hand lettering\n- Soft shadows, playful decorations\n- Pink/pastel color accents\n\n### Notion Style\n- Clean hand-drawn lettering\n- Simple sans-serif labels\n- Minimal decoration\n\n### Bold Style\n- Impactful hand lettering with shadows\n- High contrast colors\n- Strong outlines\n\n### Chalkboard Style\n- Chalk texture on all text\n- Visible imperfections\n- Multi-color chalk variety\n\nFile v2.0.1:references/palettes/macaron.md\n\n# Macaron Palette\n\nSoft pastel color blocks on warm cream background. Gentle, approachable, educational feel.\n\n## Background\n\n- Color: Warm cream (#F5F0E8)\n- Texture: Subtle paper grain, warm tone\n\n## Colors\n\n| Role | Color | Hex | Usage |\n|------|-------|-----|-------|\n| Background | Warm Cream | #F5F0E8 | Primary background |\n| Text | Deep Charcoal | #2C3E50 | Titles, main content |\n| Secondary Text | Warm Gray | #6B6B6B | Annotations, labels |\n| Block Color | Macaron Blue | #A8D8EA | Content block fill |\n| Block Color | Macaron Lavender | #D5C6E0 | Content block fill |\n| Block Color | Macaron Mint | #B5E5CF | Content block fill |\n| Block Color | Macaron Peach | #F8D5C4 | Content block fill |\n| Accent | Coral Red | #E8655A | Emphasis, highlights |\n\n## Semantic Constraint\n\nSoft pastel macaron color palette. Use block colors as rounded card backgrounds for distinct information sections. Accent coral red sparingly for emphasis on key terms only. All colors should feel gentle and approachable — no saturated or neon tones. Do NOT render color names or role labels as visible text in the image.\n\n## Best Paired With\n\n- `sketch-notes` — natural pairing for hand-drawn educational content\n- `notion` — macaron accents soften the monochrome aesthetic\n- `chalkboard` — pastel chalk tones replace standard chalk colors\n- `warm` — reinforces the cozy, friendly feel\n- `fresh` — complements the clean, natural aesthetic\n\nArchive v2.0.0: 30 files, 55871 bytes\n\nFiles: references/config/first-time-setup.md (3456b), references/config/preferences-schema.md (4017b), references/config/watermark-guide.md (1977b), references/confirmation.md (3929b), references/elements/canvas.md (3727b), references/elements/decorations.md (5049b), references/elements/image-effects.md (2990b), references/elements/typography.md (3258b), references/palettes/macaron.md (1437b), references/palettes/neon.md (1271b), references/palettes/warm.md (1225b), references/presets/bold.md (1577b), references/presets/chalkboard.md (2324b), references/presets/cute.md (1565b), references/presets/fresh.md (1496b), references/presets/minimal.md (1418b), references/presets/notion.md (1591b), references/presets/pop.md (1528b), references/presets/retro.md (1483b), references/presets/screen-print.md (2680b), references/presets/sketch-notes.md (3216b), references/presets/study-notes.md (2977b), references/presets/warm.md (1476b), references/style-presets.md (1899b), references/workflows/analysis-framework.md (7235b), references/workflows/outline-template.md (6101b), references/workflows/prompt-assembly.md (10328b), skill-card.md (2821b), SKILL.md (27974b), _meta.json (135b)\n\nFile v2.0.0:SKILL.md\n\n---\nname: baoyu-xhs-images\ndescription: Generates infographic image card series with 12 visual styles, 8 layouts, and 3 color palettes. Breaks content into 1-10 cartoon-style image cards optimized for social media engagement. Use when user mentions \"小红书图片\", \"小红书种草\", \"小绿书\", \"微信图文\", \"微信贴图\", \"image cards\", \"图片卡片\", baoyu-xhs-images, or wants social media infographic series.\nversion: 2.0.0\nmetadata:\n  openclaw:\n    homepage: https://github.com/JimLiu/baoyu-skills#baoyu-xhs-images\n---\n\n# Image Card Series Generator\n\nBreak down complex content into eye-catching image card series with multiple style options.\n\n## User Input Tools\n\nWhen this skill prompts the user, follow this tool-selection rule (priority order):\n\n1. **Prefer built-in user-input tools** exposed by the current agent runtime — e.g., `AskUserQuestion`, `request_user_input`, `clarify`, `ask_user`, or any equivalent.\n2. **Fallback**: if no such tool exists, emit a numbered plain-text message and ask the user to reply with the chosen number/answer for each question.\n3. **Batching**: if the tool supports multiple questions per call, combine all applicable questions into a single call; if only single-question, ask them one at a time in priority order.\n\nConcrete `AskUserQuestion` references below are examples — substitute the local equivalent in other runtimes.\n\n## Image Generation Tools\n\nWhen this skill needs to render an image, resolve the backend in this order:\n\n1. **Current-request override** — if the user names a specific backend in the current message, use it.\n2. **Saved preference** — if `EXTEND.md` sets `preferred_image_backend` to a backend available right now, use it.\n3. **Auto-select** (when the preference is `auto`, unset, or the pinned backend isn't available):\n   - **Codex (`imagegen`)** — first, inspect your available-skills / tool inventory. If a skill named `imagegen` is listed, you are running inside Codex and MUST use it: invoke via the `Skill` tool with `skill: \"imagegen\"`, passing the saved prompt file's content (plus output path and aspect ratio per Codex `imagegen`'s own args). Codex `imagegen` is the official raster backend in that runtime and outranks any non-native skill (e.g., `baoyu-image-gen`) unless the user has explicitly pinned a different `preferred_image_backend`.\n   - **Other runtime-native tools** — if the runtime exposes a different native image tool (e.g., Hermes `image_generate`), use it the same way.\n   - Otherwise, if exactly one non-native backend is installed (e.g., `baoyu-image-gen`), use it.\n   - Otherwise (multiple non-native backends with no runtime-native tool), ask the user once — batch with any other initial questions.\n4. **If none are available**, tell the user and ask how to proceed.\n\n**⛔ Never substitute SVG, HTML, canvas, or other code-based rendering for raster image generation.** Codex `imagegen`'s own description says it should be used \"when the output should be a bitmap asset rather than repo-native code or vector.\" If you cannot resolve a raster backend via step 3, fall through to step 4 and ask the user — do **not** silently emit SVG, write inline `<svg>` markup, or produce HTML/CSS art as a substitute. This applies even if the article/section seems \"diagram-like\": the consumer skill calling this rule has already decided that a raster image is what it needs.\n\n**⛔ Never repair rendered text by painting over a generated bitmap.** Do not use ImageMagick, Pillow, Canvas, SVG, HTML/CSS, OCR scripts, or any other programmatic overlay to cover, rewrite, erase, stroke, or replace titles, body copy, tags, or any other text inside an already generated image card. If text is wrong or unclear, regenerate from a corrected prompt, switch to a layout with less on-card text, or ask the user which imperfect candidate to keep.\n\nSetting `preferred_image_backend: ask` forces the step-3 prompt every run regardless of available backends. Users change the pinned backend via the `## Changing Preferences` section below.\n\n**Prompt file requirement (hard)**: write each image's full, final prompt to a standalone file under `prompts/` (naming: `NN-{type}-[slug].md`) BEFORE invoking any backend. The file is the reproducibility record and lets you switch backends without regenerating prompts.\n\nConcrete tool names (`imagegen`, `image_generate`, `baoyu-image-gen`) above are examples — substitute the local equivalents under the same rule.\n\n## Batch Generation Policy\n\nAfter every prompt file for the current generation group has been saved and verified, generate images in batches by default.\n\nPriority order:\n\n1. Use the chosen backend's native batch / multi-task interface if it exists. Each task must keep its own prompt file, output path, aspect ratio, session ID, and direct reference images.\n2. If no native batch interface exists but the runtime can issue parallel tool calls, dispatch up to `generation_batch_size` images at a time. Default: `4`. An explicit user request in the current message, such as `--batch-size 4` or \"并行 4 张一起生成\", overrides EXTEND.md.\n3. If neither native batch nor parallel tool calls are available, generate sequentially.\n\nRules:\n\n- Honor the image-1 anchor chain: generate image 1 first, then batch images 2+ using image 1 as the reference.\n- Never start a batch until every selected prompt file for that batch exists on disk.\n- Retry failed items once without regenerating successful items.\n- Do not use subagents merely to parallelize image rendering. Use subagents only for separate prompt iteration or creative exploration.\n\n## Confirmation Policy\n\nDefault behavior: **confirm before generation**.\n\n- Treat explicit skill invocation, a file path, matched signals/presets, and `EXTEND.md` defaults as **recommendation inputs only**. None of them authorizes skipping confirmation.\n- Do **not** start Step 3 until the user completes Step 2.\n- Skip confirmation only when the current request explicitly says to do so, for example: `--yes`, \"直接生成\", \"不用确认\", \"跳过确认\", \"按默认出图\", or equivalent wording.\n- If confirmation is skipped explicitly, state the assumed strategy / style / layout / palette / count / backend in the next user-facing update before generating.\n\n## Language\n\nRespond in the user's language across questions, progress, errors, and completion summary. Keep technical tokens (style names, file paths, code) in English.\n\n## Options\n\n| Option | Description |\n|--------|-------------|\n| `--style <name>` | Visual style (see Styles below) |\n| `--layout <name>` | Information layout (see Layouts below) |\n| `--palette <name>` | Color override: macaron / warm / neon |\n| `--preset <name>` | Style + layout + optional palette shorthand (see Presets below; per-preset prompt fragments in `references/style-presets.md`) |\n| `--ref <files...>` | Reference images applied to image 1 as the series anchor |\n| `--batch-size <n>` | Temporary generation batch size for this run. Default: `generation_batch_size` from EXTEND.md, otherwise 4. Clamp to 1-8. |\n| `--yes` | Non-interactive: skip all confirmations, use EXTEND.md or built-in defaults, auto-confirm recommended plan (Path A) |\n\n## Dimensions\n\nThree independent knobs combine freely:\n\n| Dimension | Controls | Options |\n|-----------|----------|---------|\n| **Style** | Visual aesthetics (lines, decorations, rendering) | 12 styles (see Styles below) |\n| **Layout** | Information structure (density, arrangement) | 8 layouts (see Layouts below) |\n| **Palette** (optional) | Color override, replaces the style's default colors | macaron / warm / neon (see Palettes below) |\n\nExample: `--style notion --layout dense` makes an intellectual knowledge card; add `--palette macaron` to soften the colors without changing notion's rendering rules. A `--preset` is a shorthand for style + layout (+ optional palette).\n\n**Palette behavior**: no `--palette` → style's built-in colors; `--palette <name>` → overrides colors only, rendering rules unchanged. Some styles declare a `default_palette` (e.g., sketch-notes defaults to macaron).\n\n## Styles (12)\n\n| Style | Description |\n|-------|-------------|\n| `cute` (Default) | Sweet, adorable, girly aesthetic |\n| `fresh` | Clean, refreshing, natural |\n| `warm` | Cozy, friendly, approachable |\n| `bold` | High impact, attention-grabbing |\n| `minimal` | Ultra-clean, sophisticated |\n| `retro` | Vintage, nostalgic, trendy |\n| `pop` | Vibrant, energetic, eye-catching |\n| `notion` | Minimalist hand-drawn line art, intellectual |\n| `chalkboard` | Colorful chalk on black board, educational |\n| `study-notes` | Realistic handwritten photo style, blue pen + red annotations + yellow highlighter |\n| `screen-print` | Bold poster art, halftone textures, limited colors, symbolic storytelling |\n| `sketch-notes` | Hand-drawn educational infographic, macaron pastels on warm cream, wobble lines |\n\nPer-style specifications: `references/presets/<style>.md`.\n\n## Layouts (8)\n\n| Layout | Description |\n|--------|-------------|\n| `sparse` (Default) | 1-2 points, maximum impact |\n| `balanced` | 3-4 points, standard |\n| `dense` | 5-8 points, knowledge-card style |\n| `list` | Enumeration / ranking (4-7 items) |\n| `comparison` | Side-by-side contrast |\n| `flow` | Process / timeline (3-6 steps) |\n| `mindmap` | Center-radial (4-8 branches) |\n| `quadrant` | Four-quadrant / circular sections |\n\nLayout specs: `references/elements/canvas.md`.\n\n## Palettes (optional override)\n\nReplaces the style's colors while keeping rendering rules (line treatment, textures) intact.\n\n| Palette | Background | Zone Colors | Accent | Feel |\n|---------|------------|-------------|--------|------|\n| `macaron` | Warm cream #F5F0E8 | Blue #A8D8EA, Lavender #D5C6E0, Mint #B5E5CF, Peach #F8D5C4 | Coral #E8655A | Soft, educational |\n| `warm` | Soft peach #FFECD2 | Orange #ED8936, Terracotta #C05621, Golden #F6AD55, Rose #D4A09A | Sienna #A0522D | Earth tones, cozy |\n| `neon` | Dark purple #1A1025 | Cyan #00F5FF, Magenta #FF00FF, Green #39FF14, Pink #FF6EC7 | Yellow #FFFF00 | High-energy, futuristic |\n\nPalette specs: `references/palettes/<palette>.md`.\n\n## Presets (style + layout shortcuts)\n\nQuick-start combos, grouped by scenario. Use `--preset <name>` or recommend during Step 2.\n\n**Knowledge & Learning**:\n\n| Preset | Style | Layout | Best For |\n|--------|-------|--------|----------|\n| `knowledge-card` | notion | dense | 干货知识卡、概念科普 |\n| `checklist` | notion | list | 清单、排行榜 |\n| `concept-map` | notion | mindmap | 概念图、知识脉络 |\n| `swot` | notion | quadrant | SWOT 分析、四象限 |\n| `tutorial` | chalkboard | flow | 教程步骤、操作流程 |\n| `classroom` | chalkboard | balanced | 课堂笔记、知识讲解 |\n| `study-guide` | study-notes | dense | 学习笔记、考试重点 |\n| `hand-drawn-edu` | sketch-notes | flow | 手绘教程、流程图解 |\n| `sketch-card` | sketch-notes | dense | 手绘知识卡 |\n| `sketch-summary` | sketch-notes | balanced | 手绘总结、图文笔记 |\n\n**Lifestyle & Sharing**:\n\n| Preset | Style | Layout | Best For |\n|--------|-------|--------|----------|\n| `cute-share` | cute | balanced | 少女风分享、日常种草 |\n| `girly` | cute | sparse | 甜美封面、氛围感 |\n| `cozy-story` | warm | balanced | 生活故事、情感分享 |\n| `product-review` | fresh | comparison | 产品对比、测评 |\n| `nature-flow` | fresh | flow | 健康流程、自然主题 |\n\n**Impact & Opinion**:\n\n| Preset | Style | Layout | Best For |\n|--------|-------|--------|----------|\n| `warning` | bold | list | 避坑指南、重要提醒 |\n| `versus` | bold | comparison | 正反对比 |\n| `clean-quote` | minimal | sparse | 金句、极简封面 |\n| `pro-summary` | minimal | balanced | 专业总结、商务内容 |\n\n**Trend & Entertainment**:\n\n| Preset | Style | Layout | Best For |\n|--------|-------|--------|----------|\n| `retro-ranking` | retro | list | 复古排行、经典盘点 |\n| `throwback` | retro | balanced | 怀旧分享 |\n| `pop-facts` | pop | list | 趣味冷知识 |\n| `hype` | pop | sparse | 炸裂封面、惊叹分享 |\n\n**Poster & Editorial**:\n\n| Preset | Style | Layout | Best For |\n|--------|-------|--------|----------|\n| `poster` | screen-print | sparse | 海报风封面、影评书评 |\n| `editorial` | screen-print | balanced | 观点文章、文化评论 |\n| `cinematic` | screen-print | comparison | 电影对比、戏剧张力 |\n\nFull prompt-fragment definitions: `references/style-presets.md`.\n\n## Auto-Selection\n\nMatch content signals to the best combo. First row whose keywords appear wins; fall back to `cute-share` if nothing matches.\n\n| Signals in source | Style | Layout | Recommended preset |\n|-------------------|-------|--------|--------------------|\n| beauty, fashion, cute, girl, pink | `cute` | sparse/balanced | `cute-share`, `girly` |\n| health, nature, fresh, organic | `fresh` | balanced/flow | `product-review`, `nature-flow` |\n| life, story, emotion, warm | `warm` | balanced | `cozy-story` |\n| warning, important, must, critical | `bold` | list/comparison | `warning`, `versus` |\n| professional, business, elegant | `minimal` | sparse/balanced | `clean-quote`, `pro-summary` |\n| classic, vintage, traditional | `retro` | balanced | `throwback`, `retro-ranking` |\n| fun, exciting, wow, amazing | `pop` | sparse/list | `hype`, `pop-facts` |\n| knowledge, concept, productivity, SaaS | `notion` | dense/list | `knowledge-card`, `checklist` |\n| education, tutorial, learning, classroom | `chalkboard` | balanced/dense | `tutorial`, `classroom` |\n| notes, handwritten, study guide, realistic | `study-notes` | dense/list/mindmap | `study-guide` |\n| movie, poster, opinion, editorial, cinematic | `screen-print` | sparse/comparison | `poster`, `editorial`, `cinematic` |\n| hand-drawn, infographic, workflow, 手绘，图解 | `sketch-notes` | flow/balanced/dense | `hand-drawn-edu`, `sketch-card`, `sketch-summary` |\n\n## Style × Layout Matrix\n\nCompatibility scores (✓✓ highly recommended, ✓ works well, ✗ avoid). Use when the user picks a non-default combo and you want to flag a poor match.\n\n|              | sparse | balanced | dense | list | comparison | flow | mindmap | quadrant |\n|--------------|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|\n| cute         | ✓✓ | ✓✓ | ✓  | ✓✓ | ✓  | ✓  | ✓  | ✓  |\n| fresh        | ✓✓ | ✓✓ | ✓  | ✓  | ✓  | ✓✓ | ✓  | ✓  |\n| warm         | ✓✓ | ✓✓ | ✓  | ✓  | ✓✓ | ✓  | ✓  | ✓  |\n| bold         | ✓✓ | ✓  | ✓  | ✓✓ | ✓✓ | ✓  | ✓  | ✓✓ |\n| minimal      | ✓✓ | ✓✓ | ✓✓ | ✓  | ✓  | ✓  | ✓  | ✓  |\n| retro        | ✓✓ | ✓✓ | ✓  | ✓✓ | ✓  | ✓  | ✓  | ✓  |\n| pop          | ✓✓ | ✓✓ | ✓  | ✓✓ | ✓✓ | ✓  | ✓  | ✓  |\n| notion       | ✓✓ | ✓✓ | ✓✓ | ✓✓ | ✓✓ | ✓✓ | ✓✓ | ✓✓ |\n| chalkboard   | ✓✓ | ✓✓ | ✓✓ | ✓✓ | ✓  | ✓✓ | ✓✓ | ✓  |\n| study-notes  | ✗  | ✓  | ✓✓ | ✓✓ | ✓  | ✓  | ✓✓ | ✓  |\n| screen-print | ✓✓ | ✓✓ | ✗  | ✓  | ✓✓ | ✓  | ✗  | ✓✓ |\n| sketch-notes | ✓  | ✓✓ | ✓✓ | ✓✓ | ✓  | ✓✓ | ✓✓ | ✓  |\n\n## Outline Strategies\n\nThree differentiated approaches — each produces a structurally different outline. The workflow recommends one; Path C generates all three and lets the user choose.\n\n| Strategy | Concept | Best for | Structure |\n|----------|---------|----------|-----------|\n| **A — Story-Driven** | Personal experience as the thread, emotional resonance first | Reviews, personal shares, transformation | Hook → Problem → Discovery → Experience → Conclusion |\n| **B — Information-Dense** | Value-first, efficient information delivery | Tutorials, comparisons, checklists | Core conclusion → Info card → Pros/Cons → Recommendation |\n| **C — Visual-First** | Visual impact as core, minimal text | High-aesthetic products, lifestyle, mood content | Hero image → Detail shots → Lifestyle scene → CTA |\n\n## Reference Images\n\nUser-supplied refs are **separate from** the internal \"image-1 as anchor\" chain (Step 3) — they layer on top of it.\n\n**Intake**: via `--ref <files...>` or paths pasted in conversation.\n- File path → copy to `refs/NN-ref-{slug}.{ext}`\n- Pasted with no path → ask for the path, or extract style traits as a text fallback\n\n**Usage modes** (per reference):\n\n| Usage | Effect |\n|-------|--------|\n| `direct` | Pass the file to the backend (typically on image 1 only, so the anchor propagates through the chain) |\n| `style` | Extract style traits and append to every card's prompt body |\n| `palette` | Extract hex colors and append to every card's prompt body |\n\nRecord refs in each affected card's prompt frontmatter:\n\n```yaml\nreferences:\n  - ref_id: 01\n    filename: 01-ref-brand.png\n    usage: direct\n```\n\nAt generation time: verify files exist. Image 1 with `usage: direct` + backend that accepts refs → pass via the backend's ref parameter (becomes the chain anchor). Images 2+ keep using image-1 as `--ref` per Step 3 — do NOT re-stack user refs on top (avoids conflicting signals). For `style`/`palette`, embed extracted traits in every prompt.\n\n## File Layout\n\n```\nimage-cards/{topic-slug}/\n├── source-{slug}.{ext}\n├── analysis.md\n├── outline-strategy-{a,b,c}.md    # Path C only\n├── outline.md\n├── prompts/NN-{type}-{slug}.md\n├── NN-{type}-{slug}.png\n└── refs/                          # only if --ref used\n```\n\n**Slug**: 2-4 words, kebab-case. \"AI 工具推荐\" → `ai-tools-recommend`. On collision, append `-YYYYMMDD-HHMMSS`.\n\n**Backup rule** (applies throughout): before overwriting any file — source, outline, prompt, image — rename the existing one to `<name>-backup-YYYYMMDD-HHMMSS.<ext>`. This protects user edits.\n\n## Workflow\n\n```\n- [ ] Step 0: Load EXTEND.md ⛔ BLOCKING (interactive only)\n- [ ] Step 1: Analyze content → analysis.md\n- [ ] Step 2: Smart Confirm ⚠️ REQUIRED (Path A / B / C)\n- [ ] Step 3: Generate images\n- [ ] Step 4: Completion report\n```\n\n### Step 0: Load EXTEND.md ⛔ BLOCKING\n\nCheck these paths in order; first hit wins:\n\n| Path | Scope |\n|------|-------|\n| `.baoyu-skills/baoyu-xhs-images/EXTEND.md` | Project |\n| `${XDG_CONFIG_HOME:-$HOME/.config}/baoyu-skills/baoyu-xhs-images/EXTEND.md` | XDG |\n| `$HOME/.baoyu-skills/baoyu-xhs-images/EXTEND.md` | User home |\n\n- **Found** → read, parse, print a summary (style / layout / watermark / language), continue.\n- **Not found + interactive** → run first-time setup (see `references/config/first-time-setup.md`) and save before anything else. Do NOT analyze content or ask style questions until preferences exist — this keeps first-run behavior predictable.\n- **Not found + `--yes`** → skip setup, use built-in defaults (no watermark, style/layout auto-selected, language from content). Do not prompt, do not create EXTEND.md.\n\n**EXTEND.md keys**: watermark, preferred style/layout, custom style definitions, language preference, preferred image backend, generation batch size. Schema: `references/config/preferences-schema.md`.\n\n### Step 1: Analyze Content → `analysis.md`\n\n1. Save the source (backup rule applies if `source.md` exists).\n2. Run the deep analysis in `references/workflows/analysis-framework.md`: content type, hook potential, audience, engagement signals, visual opportunity map, swipe flow.\n3. Detect source language, pick recommended image count (2-10).\n4. Auto-recommend strategy + style + layout + palette using the **Auto-Selection** table above.\n5. Write everything to `analysis.md`.\n\n### Step 2: Smart Confirm ⚠️ REQUIRED\n\n**Hard gate**: this step is mandatory per the [Confirmation Policy](#confirmation-policy) — Step 3 cannot start until the user confirms here (or explicitly opts out with `--yes` / equivalent wording in the current request).\n\nGoal: present the auto-recommended plan and let the user confirm or adjust. Skip this step entirely under `--yes` — proceed with Path A using the analysis and any CLI overrides.\n\n**Display summary** before asking:\n\n```\n📋 内容分析\n  主题：[topic] | 类型：[content_type]\n  要点：[key points]\n  受众：[audience]\n\n🎨 推荐方案（自动匹配）\n  策略：[A/B/C] [name]（[reason]）\n  风格：[style] · 布局：[layout] · 配色：[palette or 默认] · 预设：[preset]\n  图片：[N]张（封面+[N-2]内容+结尾）\n  元素：[background] / [decorations] / [emphasis]\n```\n\nThen ask one question — three paths. Verbatim option copy: `references/confirmation.md`.\n\n**Path A — Quick confirm** (trust auto-recommendation): generate a single outline using the recommended strategy + style → save to `outline.md` → Step 3.\n\n**Path B — Customize**: ask five questions (strategy/style, layout, palette, count, optional notes) with the recommendation pre-filled — blanks keep the recommendation. Generate one outline with the user's choices → `outline.md` → Step 3. See `references/confirmation.md`.\n\n**Path C — Detailed mode**: two sub-confirmations.\n\n- *Step 2a — Content understanding*: ask selling points (multi-select), audience, style preference (authentic / professional / aesthetic / auto), optional context. Update `analysis.md`.\n- *Step 2b — Three outline variants*: generate `outline-strategy-a.md`, `outline-strategy-b.md`, `outline-strategy-c.md`. Each MUST have a different structure AND a different recommended style — include `style_reason` in the frontmatter. Page-count heuristic: A ~4-6, B ~3-5, C ~3-4. Template: `references/workflows/outline-template.md`; frontmatter example in `references/confirmation.md`.\n- *Step 2c — Selection*: ask three questions (outline A/B/C/Combined, style, visual elements). Save selected/merged outline to `outline.md` → Step 3.\n\n### Step 3: Generate Images\n\nWith confirmed outline + style + layout + palette:\n\n**Visual consistency — image-1 anchor chain**: character / mascot / color rendering drifts between calls unless you anchor them. Generate image 1 (cover) first WITHOUT `--ref`, then pass image 1 as `--ref` to every subsequent image. This is the single most important consistency trick for this skill — don't skip it even if the backend also supports a session ID.\n\nGeneration flow:\n\n1. Write the full prompt for every image to `prompts/NN-{type}-{slug}.md` in the user's preferred language (backup rule applies), then verify all selected prompt files exist.\n2. Generate **image 1** first without `--ref`; backup rule applies to the PNG file. This establishes the anchor.\n3. Build a task list for **images 2+** using image 1 as `--ref <path-to-image-01.png>`.\n4. Dispatch images 2+ in batches per the `## Batch Generation Policy`: backend native batch first, runtime parallel tool calls second, sequential only as fallback.\n5. Report progress after each completed image. On failure, retry only the failed item once from the same saved prompt file.\n\n**Watermark** (if enabled in EXTEND.md): append to the generation prompt:\n\n```\nInclude a subtle watermark \"[content]\" positioned at [position].\nThe watermark should be legible but not distracting.\n```\n\nSee `references/config/watermark-guide.md`.\n\n**Backend selection**: per the Image Generation Tools rule at the top — use whatever is available, ask once if multiple, before any generation. Under `--yes`, use the EXTEND.md preference and fall back to the first available backend. Prompt files MUST exist before invoking any backend.\n\n**Session ID** (if the backend supports `--sessionId`): use `cards-{topic-slug}-{timestamp}` for every image; combined with the ref chain this gives maximum consistency.\n\n### Step 4: Completion Report\n\n```\nImage Card Series Complete!\n\nTopic: [topic]\nMode: [Quick / Custom / Detailed]\nStrategy: [A/B/C/Combined]\nStyle: [name]\nPalette: [name or \"default\"]\nLayout: [name or \"varies\"]\nLocation: [directory]\nImages: N total\n\n✓ analysis.md\n✓ outline.md\n✓ outline-strategy-a/b/c.md (detailed mode only)\n\n- 01-cover-[slug].png ✓ Cover (sparse)\n- 02-content-[slug].png ✓ Content (balanced)\n- ...\n- NN-ending-[slug].png ✓ Ending (sparse)\n```\n\n## Content Breakdown Principles\n\n| Position | Purpose | Typical layout |\n|----------|---------|----------------|\n| Cover (image 1) | Hook + visual impact | `sparse` |\n| Content (middle) | Core value per image | `balanced` / `dense` / `list` / `comparison` / `flow` |\n| Ending (last) | CTA / summary | `sparse` or `balanced` |\n\nFor the style × layout compatibility matrix, see the **Style × Layout Matrix** above.\n\n## Image Modification\n\n| Action | How |\n|--------|-----|\n| Edit | Update `prompts/NN-{type}-{slug}.md` **first**, then regenerate with the same session ID |\n| Add | Specify position, create prompt, generate, renumber subsequent files `NN+1`, update outline |\n| Delete | Remove files, renumber subsequent `NN-1`, update outline |\n\nAlways update the prompt file before regenerating — it's the source of truth and makes changes reproducible.\n\nText correction policy:\n\n- If a card's title, body copy, tags, or any other rendered text is misspelled, garbled, hard to read, or visually weak, do not patch the bitmap with code.\n- For text-correction regenerations, write a new prompt file and a new output path so the flawed candidate is preserved for comparison.\n- Post-processing is limited to crop, resize, compression, or format conversion that does not alter text or the main composition.\n\n## References\n\n| File | Content |\n|------|---------|\n| `references/confirmation.md` | Verbatim AskUserQuestion copy for every confirmation path |\n| `references/style-presets.md` | Full preset shortcut definitions |\n| `references/presets/<style>.md` | Per-style element definitions |\n| `references/palettes/<name>.md` | Per-palette color definitions |\n| `references/elements/canvas.md` | Aspect ratios, safe zones, grid layouts |\n| `references/elements/image-effects.md` | Cutout, stroke, filters |\n| `references/elements/typography.md` | Decorated text, tags, text direction |\n| `references/elements/decorations.md` | Emphasis marks, backgrounds, doodles, frames |\n| `references/workflows/analysis-framework.md` | Content analysis framework |\n| `references/workflows/outline-template.md` | Outline template with layout guide |\n| `references/workflows/prompt-assembly.md` | Prompt assembly guide |\n| `references/config/preferences-schema.md` | EXTEND.md schema |\n| `references/config/first-time-setup.md` | First-time setup flow |\n| `references/config/watermark-guide.md` | Watermark configuration |\n\n## Notes\n\n- Auto-retry once on generation failure before reporting an error.\n- For sensitive public figures, use stylized cartoon alternatives.\n- Smart Confirm (Step 2) is required; Detailed mode adds a second confirmation (2a + 2c).\n\n## Changing Preferences\n\nEXTEND.md lives at the first matching path listed 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`.\n- **Reconfigure interactively** — delete EXTEND.md (or ask \"reconfigure baoyu-xhs-images preferences\" / \"重新配置\"). The next run re-triggers first-time setup.\n- **Common one-line edits**:\n  - `preferred_image_backend: auto` — default; runtime-native tool wins, falls back to the only installed backend, asks only if multiple non-native are present.\n  - `preferred_image_backend: codex-imagegen` — pin to Codex's built-in.\n  - `preferred_image_backend: baoyu-image-gen` — pin to the baoyu-image-gen skill.\n  - `preferred_image_backend: ask` — confirm backend every run.\n  - `generation_batch_size: 4` — default number of images to render concurrently when the backend/runtime supports batch or parallel generation.\n  - `preferred_style: notion`, `preferred_layout: dense`, `preferred_palette: macaron`, `language: zh`.\n  - `watermark.enabled: true` + `watermark.content: \"@handle\"` — add a watermark.\n\nFile v2.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn7csrrndw79hpke5d0gsnx93d82k67r\",\n  \"slug\": \"baoyu-xhs-images\",\n  \"version\": \"2.0.0\",\n  \"publishedAt\": 1779665934479\n}\n\nFile v2.0.0:references/config/first-time-setup.md\n\n---\nname: first-time-setup\ndescription: First-time setup flow for baoyu-xhs-images 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 content/article\n- Ask about style or layout\n- Ask about target audience\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 single AskUserQuestion with multiple questions (AskUserQuestion auto-adds \"Other\" option):\n\n### Question 1: Watermark\n\n```\nheader: \"Watermark\"\nquestion: \"Watermark text for generated images? Type your watermark content (e.g., name, @handle)\"\noptions:\n  - label: \"No watermark (Recommended)\"\n    description: \"No watermark, can enable later in EXTEND.md\"\n```\n\nPosition defaults to bottom-right.\n\n### Question 2: Preferred Style\n\n```\nheader: \"Style\"\nquestion: \"Default visual style preference? Or type another style name or your custom style\"\noptions:\n  - label: \"None (Recommended)\"\n    description: \"Auto-select based on content analysis\"\n  - label: \"cute\"\n    description: \"Sweet, adorable - classic XHS aesthetic\"\n  - label: \"notion\"\n    description: \"Minimalist hand-drawn, intellectual\"\n```\n\n### Question 3: Save Location\n\n```\nheader: \"Save\"\nquestion: \"Where to save preferences?\"\noptions:\n  - label: \"Project\"\n    description: \".baoyu-skills/ (this project only)\"\n  - label: \"User\"\n    description: \"~/.baoyu-skills/ (all projects)\"\n```\n\n## Save Locations\n\n| Choice | Path | Scope |\n|--------|------|-------|\n| Project | `.baoyu-skills/baoyu-xhs-images/EXTEND.md` | Current project |\n| User | `~/.baoyu-skills/baoyu-xhs-images/EXTEND.md` | All projects |\n\n## After Setup\n\n1. Create directory if needed\n2. Write EXTEND.md with frontmatter\n3. Confirm: \"Preferences saved to [path]\"\n4. Continue to Step 1\n\n## EXTEND.md Template\n\n```yaml\n---\nversion: 1\nwatermark:\n  enabled: [true/false]\n  content: \"[user input or empty]\"\n  position: bottom-right\n  opacity: 0.7\npreferred_style:\n  name: [selected style or null]\n  description: \"\"\npreferred_layout: null\nlanguage: null\npreferred_image_backend: auto\ngeneration_batch_size: 4\ncustom_styles: []\n---\n```\n\n`preferred_image_backend: auto` is the baked-in default — first-time setup does not ask about it. The `## Image Generation Tools` rule in SKILL.md then picks the runtime-native tool (Codex `imagegen`, Hermes `image_generate`, etc.) when available, and falls back to installed backends.\n\n`generation_batch_size: 4` is the baked-in default for batch rendering. The current user request may override it for one run.\n\n## Modifying Preferences Later\n\nSee the `## Changing Preferences` section in `SKILL.md` for the canonical list of common edits (pin backend, change defaults, retrigger setup). Full schema: `preferences-schema.md`.\n\nFile v2.0.0:references/config/preferences-schema.md\n\n---\nname: preferences-schema\ndescription: EXTEND.md YAML schema for baoyu-xhs-images user preferences\n---\n\n# Preferences Schema\n\n## Full Schema\n\n```yaml\n---\nversion: 1\n\nwatermark:\n  enabled: false\n  content: \"\"\n  position: bottom-right  # bottom-right|bottom-left|bottom-center|top-right\n\npreferred_style:\n  name: null              # Built-in or custom style name\n  description: \"\"         # Override/notes\n\npreferred_layout: null    # sparse|balanced|dense|list|comparison|flow\n\nlanguage: null            # zh|en|ja|ko|auto\n\npreferred_image_backend: auto  # auto|ask|<backend-id>\n\ngeneration_batch_size: 4       # 1-8, used when backend/runtime supports batch or parallel generation\n\ncustom_styles:\n  - name: my-style\n    description: \"Style description\"\n    color_palette:\n      primary: [\"#FED7E2\", \"#FEEBC8\"]\n      background: \"#FFFAF0\"\n      accents: [\"#FF69B4\", \"#FF6B6B\"]\n    visual_elements: \"Hearts, stars, sparkles\"\n    typography: \"Rounded, bubbly hand lettering\"\n    best_for: \"Lifestyle, beauty\"\n---\n```\n\n## Field Reference\n\n| Field | Type | Default | Description |\n|-------|------|---------|-------------|\n| `version` | int | 1 | Schema version |\n| `watermark.enabled` | bool | false | Enable watermark |\n| `watermark.content` | string | \"\" | Watermark text (@username or custom) |\n| `watermark.position` | enum | bottom-right | Position on image |\n| `preferred_style.name` | string | null | Style name or null |\n| `preferred_style.description` | string | \"\" | Custom notes/override |\n| `preferred_layout` | string | null | Layout preference or null |\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| `generation_batch_size` | int | 4 | Number of images to dispatch per batch when the backend has native batch support or the runtime can issue parallel generation calls. Clamp invalid values to 1-8. Current user request overrides this value. |\n| `custom_styles` | array | [] | User-defined styles |\n\n## Position Options\n\n| Value | Description |\n|-------|-------------|\n| `bottom-right` | Lower right corner (default, most common) |\n| `bottom-left` | Lower left corner |\n| `bottom-center` | Bottom center |\n| `top-right` | Upper right corner |\n\n## Custom Style Fields\n\n| Field | Required | Description |\n|-------|----------|-------------|\n| `name` | Yes | Unique style identifier (kebab-case) |\n| `description` | Yes | What the style conveys |\n| `color_palette.primary` | No | Main colors (array) |\n| `color_palette.background` | No | Background color |\n| `color_palette.accents` | No | Accent colors (array) |\n| `visual_elements` | No | Decorative elements |\n| `typography` | No | Font/lettering style |\n| `best_for` | No | Recommended content types |\n\n## Example: Minimal Preferences\n\n```yaml\n---\nversion: 1\nwatermark:\n  enabled: true\n  content: \"@myusername\"\npreferred_style:\n  name: notion\n---\n```\n\n## Example: Full Preferences\n\n```yaml\n---\nversion: 1\nwatermark:\n  enabled: true\n  content: \"@myxhsaccount\"\n  position: bottom-right\n\npreferred_style:\n  name: notion\n  description: \"Clean knowledge cards for tech content\"\n\npreferred_layout: dense\n\nlanguage: zh\n\npreferred_image_backend: codex-imagegen\n\ngeneration_batch_size: 4\n\ncustom_styles:\n  - name: corporate\n    description: \"Professional B2B style\"\n    color_palette:\n      primary: [\"#1E3A5F\", \"#4A90D9\"]\n      background: \"#F5F7FA\"\n      accents: [\"#00B4D8\", \"#48CAE4\"]\n    visual_elements: \"Clean lines, subtle gradients, geometric shapes\"\n    typography: \"Modern sans-serif, professional\"\n    best_for: \"Business, SaaS, enterprise\"\n---\n```\n\nFile v2.0.0:references/config/watermark-guide.md\n\n---\nname: watermark-guide\ndescription: Watermark configuration guide for baoyu-xhs-images\n---\n\n# Watermark Guide\n\n## Position Diagram\n\n```\n┌─────────────────────────────┐\n│                  [top-right]│\n│                             │\n│                             │\n│         IMAGE CONTENT       │\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 | Key info in bottom-right |\n| `bottom-left` | Right-heavy layouts | Key info 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` | Most common for XHS |\n| Text | `MyBrand` | Simple branding |\n| Chinese | `小红书:用户名` | Platform specific |\n| URL | `myblog.com` | Cross-platform |\n\n## Best Practices\n\n1. **Consistency**: Use same watermark across all images in series\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## 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 content | Change position |\n| Inconsistent across images | Use session ID for consistency |\n\nFile v2.0.0:references/confirmation.md\n\n# Confirmation Questions\n\nConcrete option copy for Step 2 Smart Confirm. SKILL.md states which question to ask and when — this file supplies the verbatim options used in Claude Code. Other runtimes should adapt the wording to their native user-input tool while preserving intent.\n\n## Step 2 — Smart Confirm Entry\n\nSingle-question confirmation presented right after the auto-recommended plan.\n\n```yaml\nheader: Mode\nquestion: How to proceed with the recommended plan?\noptions:\n  - label: 1. ✅ 确认，直接生成（推荐）\n    description: Trust auto-recommendation and proceed immediately\n  - label: 2. 🎛️ 自定义调整\n    description: Modify strategy/style/layout/count in one step\n  - label: 3. 📋 详细模式\n    description: Generate 3 outline variants, then choose (two confirmations)\n```\n\n## Path B — Customize (Option 2)\n\nBatch these five questions. Leaving a field blank keeps the recommended value.\n\n```yaml\nheader: Style/Strategy\nquestion: \"Strategy + style. Current: {strategy} + {style}\"\nhint: |\n  Strategies: A Story-Driven (warm) | B Information-Dense (notion) | C Visual-First (screen-print)\n  Styles: cute / fresh / warm / bold / minimal / retro / pop / notion / chalkboard / study-notes / screen-print / sketch-notes\n  Presets: knowledge-card / checklist / tutorial / poster / hand-drawn-edu / ...\n```\n\n```yaml\nheader: Layout\nquestion: \"Layout. Current: {layout}\"\noptions: [sparse, balanced, dense, list, comparison, flow, mindmap, quadrant]\n```\n\n```yaml\nheader: Palette\nquestion: \"Palette. Current: {palette or 默认}\"\noptions: [默认, macaron, warm, neon]\n```\n\n```yaml\nheader: Count\nquestion: \"Image count. Current: {N}\"\nhint: Range 2-10\n```\n\n```yaml\nheader: Notes\nquestion: Optional notes (selling-point emphasis, audience adjustment, color preference)\noptional: true\n```\n\n## Path C — Detailed Mode\n\n### Step 2a: Content Understanding\n\nBatch these questions.\n\n```yaml\nheader: SellingPoints\nquestion: Core selling points (pick all that apply)\nmultiSelect: true\n```\n\n```yaml\nheader: Audience\nquestion: Target audience\n```\n\n```yaml\nheader: Tone\nquestion: Style preference\noptions:\n  - label: Authentic sharing\n  - label: Professional review\n  - label: Aesthetic mood\n  - label: Auto\n```\n\n```yaml\nheader: Context\nquestion: Additional context (optional)\noptional: true\n```\n\n### Step 2c: Outline & Style Selection\n\nBatch these three questions.\n\n```yaml\nheader: Strategy\nquestion: Which outline strategy?\noptions:\n  - label: A — Story-Driven\n  - label: B — Information-Dense\n  - label: C — Visual-First\n  - label: Combine (specify pages from each)\n```\n\n```yaml\nheader: Style\nquestion: Visual style?\noptions:\n  - label: Use recommended\n  - label: Select preset\n  - label: Select style directly\n  - label: Custom description\n```\n\n```yaml\nheader: Elements\nquestion: Visual elements?\noptions:\n  - label: Use defaults (Recommended)\n  - label: Adjust background\n  - label: Adjust decorations\n  - label: Custom\n```\n\n## Outline Variant Frontmatter\n\nUsed by Path C when writing the three `outline-strategy-{a,b,c}.md` files. Each variant MUST have a different structure AND a different recommended style — include `style_reason` explaining why the style fits the strategy.\n\n```yaml\n---\nstrategy: a  # a | b | c\nname: Story-Driven\nstyle: warm  # recommended style for this strategy\npalette: ~   # optional: macaron | warm | neon | ~ (style default)\nstyle_reason: \"Warm tones enhance emotional storytelling and personal connection\"\nelements:\n  background: solid-pastel\n  decorations: [clouds, stars-sparkles]\n  emphasis: star-burst\n  typography: highlight\nlayout: balanced\nimage_count: 5\n---\n\n## P1 Cover\n**Type**: cover\n**Hook**: \"入冬后脸不干了🥹终于找到对的面霜\"\n**Visual**: Product hero shot with cozy winter atmosphere\n**Layout**: sparse\n\n## P2 Problem\n**Type**: pain-point\n...\n```\n\nPage-count heuristic: strategy A typically 4-6 pages, B typically 3-5, C typically 3-4.\n\nFile v2.0.0:references/elements/canvas.md\n\n# Canvas & Layout\n\nCore canvas specifications and layout grids for Xiaohongshu infographics.\n\n## Aspect Ratios\n\n| Name | Ratio | Pixels | Note |\n|------|-------|--------|------|\n| portrait-3-4 | 3:4 | 1242×1660 | Highest traffic on XHS (recommended) |\n| square | 1:1 | 1242×1242 | Second recommended |\n| portrait-2-3 | 2:3 | 1242×1863 | Taller format |\n\n**Default**: portrait-3-4 for maximum engagement.\n\n## Safe Zones\n\nAvoid placing critical content in these areas:\n\n| Zone | Position | Reason |\n|------|----------|--------|\n| bottom-overlay | Bottom 10% | Title bar overlay on mobile |\n| top-right | Top-right corner | Like/share button overlay |\n| bottom-right | Bottom-right corner | Watermark position |\n\n```\n┌─────────────────────────────┐\n│                 [like/share]│  ← top-right: avoid\n│                             │\n│                             │\n│      ✓ SAFE CONTENT AREA    │\n│                             │\n│                             │\n│  [title bar overlay area]   │  ← bottom 10%: avoid key info\n└─────────────────────────────┘\n```\n\n## Grid Layouts\n\n### Density-Based Layouts\n\n| Layout | Info Density | Whitespace | Points/Image | Best For |\n|--------|--------------|------------|--------------|----------|\n| sparse | Low | 60-70% | 1-2 | Covers, quotes, impactful statements |\n| balanced | Medium | 40-50% | 3-4 | Standard content, tutorials |\n| dense | High | 20-30% | 5-8 | Knowledge cards, cheat sheets |\n\n### Structure-Based Layouts\n\n| Layout | Structure | Items | Best For |\n|--------|-----------|-------|----------|\n| list | Vertical enumeration | 4-7 | Rankings, checklists, step guides |\n| comparison | Left vs Right | 2 sections | Before/after, pros/cons |\n| flow | Connected nodes | 3-6 steps | Processes, timelines, workflows |\n| mindmap | Center radial | 4-8 branches | Concept maps, brainstorming, topic overview |\n| quadrant | 4-section grid | 4 sections | SWOT analysis, priority matrix, classification |\n\n## Layout by Position\n\n| Position | Recommended Layout | Why |\n|----------|-------------------|-----|\n| Cover | sparse | Maximum visual impact, clear title |\n| Setup | balanced | Context without overwhelming |\n| Core | balanced/dense/list | Based on content density |\n| Payoff | balanced/list | Clear takeaways |\n| Ending | sparse | Clean CTA, memorable close |\n\n## Grid Cells\n\nFor multi-element compositions:\n\n| Name | Cells | Use Case |\n|------|-------|----------|\n| single | 1 | Hero image, maximum impact |\n| dual | 2 | Before/after, comparison |\n| triptych | 3 | Steps, process flow |\n| quad | 4 | Product showcase |\n| six-grid | 6 | Checklist, collection |\n| nine-grid | 9 | Multi-image gallery |\n\n## Visual Balance\n\n### Sparse Layout\n- Single focal point centered\n- Breathing room on all sides\n- Symmetrical composition\n\n### Balanced Layout\n- Top-weighted title\n- Evenly distributed content below\n- Clear visual hierarchy\n\n### Dense Layout\n- Organized grid structure\n- Clear section boundaries\n- Compact but readable spacing\n\n### List Layout\n- Left-aligned items\n- Clear number/bullet hierarchy\n- Consistent item format\n\n### Comparison Layout\n- Symmetrical left/right\n- Clear visual contrast\n- Divider between sections\n\n### Flow Layout\n- Directional flow (top→bottom or left→right)\n- Connected nodes with arrows\n- Clear progression indicators\n\n### Mindmap Layout\n- Central topic node\n- Radial branches outward\n- Hierarchical sub-branches\n- Organic curved connections\n\n### Quadrant Layout\n- 4-section grid (2×2)\n- Clear axis labels\n- Each quadrant with distinct content\n- Optional circular variant for cycles\n\nFile v2.0.0:references/elements/decorations.md\n\n# Decorative Assets\n\nVisual embellishments and decorative elements for Xiaohongshu infographics.\n\n## Emphasis Marks (强调标记)\n\nElements to draw attention to specific content.\n\n| Name | Description | Use Case |\n|------|-------------|----------|\n| red-arrow | Red arrow pointing to target | Product features, key points |\n| circle-mark | Circle highlight annotation | Highlighting details |\n| underline | Straight or wavy underline | Text emphasis |\n| star-burst | Starburst explosion effect | Special offers, wow factor |\n| checkmark | Checkmark/tick symbol | Completed items, pros |\n| cross-mark | X mark symbol | Cons, things to avoid |\n| exclamation | Exclamation point decoration | Important warnings |\n| question | Question mark decoration | FAQ, curiosity |\n| numbering | Circled numbers | Steps, rankings |\n| bracket | Bracket highlighting | Grouping, emphasis |\n\n## Backgrounds (背景)\n\nBase layer treatments.\n\n| Name | Description | Use Case |\n|------|-------------|----------|\n| solid-saturated | High-saturation solid color | Bold, energetic |\n| solid-pastel | Soft pastel solid color | Cute, gentle |\n| gradient-linear | Linear color gradient | Modern, dynamic |\n| gradient-radial | Radial color gradient | Spotlight effect |\n| frosted-glass | Frosted glass blur effect | Layered compositions |\n| paper-texture | Paper or craft texture | Handmade aesthetic |\n| fabric-texture | Fabric/cloth texture | Cozy, tactile |\n| chalkboard | Blackboard texture | Educational content |\n| grid | Subtle grid pattern | Structured, organized |\n| dots | Polka dot pattern | Playful, retro |\n\n## Doodles & Emoji (涂鸦)\n\nHand-drawn decorative elements.\n\n| Name | Description | Use Case |\n|------|-------------|----------|\n| hand-drawn-lines | Sketchy hand-drawn lines | Connections, borders |\n| stars-sparkles | Stars and sparkle effects | Magic, excellence |\n| flowers | Floral decorations | Beauty, feminine |\n| hearts | Heart symbols | Love, favorites |\n| clouds | Cloud shapes | Dreamy, thoughts |\n| arrows-curvy | Curved directional arrows | Flow, direction |\n| squiggles | Wavy squiggle lines | Energy, movement |\n| confetti | Scattered confetti | Celebration |\n| leaves | Leaf decorations | Nature, fresh |\n| bubbles | Circular bubble shapes | Playful, light |\n\n## Emoji Integration\n\n| Category | Examples | Use Case |\n|----------|----------|----------|\n| Reactions | 🥹 😍 🤯 | Emotional emphasis |\n| Objects | ✨ 💡 🎯 | Visual markers |\n| Actions | 👇 👆 ➡️ | Directional cues |\n| Nature | 🌸 🌿 ☀️ | Thematic decoration |\n\n## Frames (边框)\n\nContainer and border treatments.\n\n| Name | Description | Use Case |\n|------|-------------|----------|\n| polaroid | Instant photo frame | Photo showcase |\n| film-strip | Film negative border | Cinematic, retro |\n| phone-screenshot | Mobile device mockup | App/screen content |\n| torn-paper | Torn paper edge effect | Scrapbook aesthetic |\n| rounded-rect | Rounded rectangle border | Clean containers |\n| decorative | Ornate decorative border | Premium, elegant |\n| tape-corners | Washi tape corners | Crafty, casual |\n| stamp-border | Stamp perforated edge | Vintage, postal |\n\n## Dividers (分隔线)\n\nSection separators.\n\n| Name | Description | Use Case |\n|------|-------------|----------|\n| line-simple | Simple horizontal line | Clean separation |\n| line-dashed | Dashed line | Subtle division |\n| line-wavy | Wavy line | Playful separation |\n| dots-row | Row of dots | Decorative division |\n| ornamental | Decorative flourish | Elegant separation |\n\n## Stickers (贴纸)\n\nPre-composed decorative elements.\n\n| Name | Description | Use Case |\n|------|-------------|----------|\n| badge-new | \"NEW\" badge | New products |\n| badge-hot | \"HOT\" badge | Trending items |\n| badge-sale | Sale/discount badge | Promotions |\n| seal-quality | Quality seal | Recommendations |\n| ribbon-award | Award ribbon | Best picks |\n| tag-price | Price tag shape | Pricing info |\n\n## Style-Specific Decorations\n\n### Cute Style\n- Hearts, stars, sparkles\n- Ribbon decorations, sticker-style\n- Cute character elements\n\n### Notion Style\n- Simple line doodles\n- Geometric shapes, stick figures\n- Maximum whitespace, minimal decoration\n\n### Warm Style\n- Sun rays, coffee cups, cozy items\n- Warm lighting effects\n- Friendly, inviting decorations\n\n### Fresh Style\n- Plant leaves, clouds, water drops\n- Simple geometric shapes\n- Open, breathing composition\n\n### Bold Style\n- Exclamation marks, arrows\n- Warning icons, strong shapes\n- High contrast elements\n\n### Pop Style\n- Bold shapes, speech bubbles\n- Comic-style effects, starburst\n- Dynamic, energetic decorations\n\n### Retro Style\n- Halftone dots, vintage badges\n- Classic icons, tape effects\n- Aged texture overlays\n\n### Chalkboard Style\n- Chalk dust effects\n- Hand-drawn doodles\n- Mathematical formulas, simple icons\n\n### Screen-Print Style\n- Bold silhouettes, geometric shapes\n- Halftone dot patterns, print grain\n- No doodles — negative space does the work\n- Stencil-cut edges, color block boundaries\n- Vintage poster border treatments\n\nFile v2.0.0:references/elements/image-effects.md\n\n# Image Processing Layer\n\nVisual effects applied to image elements in Xiaohongshu infographics.\n\n## AI Cutout (抠图)\n\nSubject extraction styles for product/figure isolation.\n\n| Name | Description | Use Case |\n|------|-------------|----------|\n| clean | Sharp edges, precise boundaries | Product photography, tech items |\n| soft | Soft transition, feathered edges | Portrait cutout, organic subjects |\n| stylized | Hand-drawn edge treatment | Artistic compositions |\n\n## Stroke Effects (描边)\n\nBorder treatments for cutout elements.\n\n| Name | Description | Use Case |\n|------|-------------|----------|\n| white-solid | White solid line border | Classic sticker feel, high contrast |\n| colored-solid | Colored solid line border | Playful vibe, brand colors |\n| dashed | Dashed/dotted border | Handmade aesthetic, casual |\n| double | Double-layer stroke | Emphasis effect, premium feel |\n| glow | Soft outer glow | Dreamy, soft aesthetic |\n| shadow | Drop shadow effect | Depth, floating element |\n\n**Stroke Width Guidelines**:\n- Thin: 2-4px - Subtle, elegant\n- Medium: 5-8px - Standard visibility\n- Thick: 10-15px - Bold emphasis\n\n## Filters (滤镜)\n\nColor grading and mood presets popular on XHS.\n\n| Name | Chinese | Description | Mood |\n|------|---------|-------------|------|\n| clear-glow | 清透感 | Transparent, radiant, luminous | Fresh, youthful |\n| film-grain | 胶片感 | Vintage film aesthetic, grain texture | Nostalgic, artistic |\n| cream-skin | 奶油肌 | Smooth, creamy complexion tones | Soft, flattering |\n| japanese-magazine | 日杂感 | Lifestyle magazine aesthetic | Curated, aspirational |\n| high-saturation | 高饱和 | Vibrant, punchy colors | Energetic, eye-catching |\n| muted-tones | 莫兰迪 | Morandi-style desaturated palette | Sophisticated, calm |\n| warm-tone | 暖色调 | Golden hour warmth | Cozy, inviting |\n| cool-tone | 冷色调 | Blue-shifted coolness | Modern, clean |\n\n## Texture Overlays\n\nAdditional texture effects.\n\n| Name | Description | Use Case |\n|------|-------------|----------|\n| paper | Paper or fabric texture | Handmade feel |\n| noise | Fine grain noise | Analog aesthetic |\n| halftone | Dot pattern | Retro print style |\n| scratch | Light scratch marks | Vintage wear |\n\n## Blending Modes\n\nFor layered compositions.\n\n| Mode | Effect | Use Case |\n|------|--------|----------|\n| multiply | Darken, merge | Shadow effects |\n| screen | Lighten, glow | Light effects |\n| overlay | Contrast boost | Vibrant compositions |\n| soft-light | Subtle blending | Natural layering |\n\n## Effect Combinations\n\nCommon effect stacks for different styles:\n\n### Cute Style\n- Filter: clear-glow or cream-skin\n- Stroke: white-solid (medium)\n- Texture: none\n\n### Notion Style\n- Filter: none or muted-tones\n- Stroke: white-solid (thin) or none\n- Texture: paper (subtle)\n\n### Retro Style\n- Filter: film-grain\n- Stroke: double or dashed\n- Texture: halftone, scratch\n\n### Bold Style\n- Filter: high-saturation\n- Stroke: colored-solid (thick)\n- Texture: none\n\nFile v2.0.0:references/elements/typography.md\n\n# Typography System\n\nText styling elements for Xiaohongshu infographics.\n\n## Decorated Text (花字)\n\nStylized text treatments for emphasis and visual appeal.\n\n| Name | Description | Use Case |\n|------|-------------|----------|\n| gradient | Gradient color fill | Title emphasis, modern feel |\n| stroke-text | Outlined text with stroke | Cover headlines, high visibility |\n| shadow-3d | 3D shadow/extrusion effect | Key terms, depth |\n| highlight | Highlighter marker effect | Critical information, key points |\n| neon | Neon glow effect | Tech content, night aesthetic |\n| handwritten | Authentic handwritten style | Personal touch, casual |\n| bubble | Rounded, inflated letterforms | Cute, playful content |\n| brush | Brush stroke texture | Artistic, dynamic |\n\n## Tags & Labels (标签)\n\nStructured text containers.\n\n| Name | Description | Use Case |\n|------|-------------|----------|\n| black-white | Black background, white text | Brand names, prices, categories |\n| white-black | White background, black text | Clean labels, minimal style |\n| bubble | Speech bubble style | Dialogue, annotations, callouts |\n| pointer | Arrow pointer with label | Product callouts, pointing to features |\n| ribbon | Ribbon/banner shape | Special offers, highlights |\n| stamp | Stamp/seal style | Authenticity, recommendations |\n| pill | Rounded pill shape | Tags, categories, keywords |\n\n## Text Hierarchy\n\nRecommended text sizing for visual hierarchy.\n\n| Level | Role | Relative Size | Style |\n|-------|------|---------------|-------|\n| H1 | Main title | 100% | Bold, decorated |\n| H2 | Section header | 70-80% | Semi-bold |\n| H3 | Subsection | 50-60% | Medium weight |\n| Body | Content text | 40-50% | Regular |\n| Caption | Small notes | 30-35% | Light |\n\n## Text Direction\n\n| Direction | Description | Use Case |\n|-----------|-------------|----------|\n| horizontal | Standard left-to-right | Default for most content |\n| vertical | Top-to-bottom columns | Magazine style, traditional Chinese |\n| curved | Text following a curve | Decorative, around shapes |\n| diagonal | Angled text | Dynamic compositions |\n\n## Text Effects\n\n| Effect | Description | Use Case |\n|--------|-------------|----------|\n| shadow | Drop shadow behind text | Readability on busy backgrounds |\n| outline | Outline around letterforms | High contrast visibility |\n| glow | Soft glow around text | Dreamy, emphasis |\n| underline-wavy | Wavy underline decoration | Playful emphasis |\n| strikethrough | Crossed out text | Before/after, corrections |\n\n## Language Considerations\n\n### Chinese Text (中文)\n- Punctuation: 「」（）、。！？\n- Spacing: No spaces between characters\n- Line height: 1.5-1.8x for readability\n\n### Mixed Text\n- English in Chinese context: Maintain consistent baseline\n- Numbers: Use consistent number style (lining vs old-style)\n\n## Style-Specific Typography\n\n### Cute Style\n- Rounded, bubbly hand lettering\n- Soft shadows, playful decorations\n- Pink/pastel color accents\n\n### Notion Style\n- Clean hand-drawn lettering\n- Simple sans-serif labels\n- Minimal decoration\n\n### Bold Style\n- Impactful hand lettering with shadows\n- High contrast colors\n- Strong outlines\n\n### Chalkboard Style\n- Chalk texture on all text\n- Visible imperfections\n- Multi-color chalk variety\n\nFile v2.0.0:references/palettes/macaron.md\n\n# Macaron Palette\n\nSoft pastel color blocks on warm cream background. Gentle, approachable, educational feel.\n\n## Background\n\n- Color: Warm cream (#F5F0E8)\n- Texture: Subtle paper grain, warm tone\n\n## Colors\n\n| Role | Color | Hex | Usage |\n|------|-------|-----|-------|\n| Background | Warm Cream | #F5F0E8 | Primary background |\n| Text | Deep Charcoal | #2C3E50 | Titles, main content |\n| Secondary Text | Warm Gray | #6B6B6B | Annotations, labels |\n| Block Color | Macaron Blue | #A8D8EA | Content block fill |\n| Block Color | Macaron Lavender | #D5C6E0 | Content block fill |\n| Block Color | Macaron Mint | #B5E5CF | Content block fill |\n| Block Color | Macaron Peach | #F8D5C4 | Content block fill |\n| Accent | Coral Red | #E8655A | Emphasis, highlights |\n\n## Semantic Constraint\n\nSoft pastel macaron color palette. Use block colors as rounded card backgrounds for distinct information sections. Accent coral red sparingly for emphasis on key terms only. All colors should feel gentle and approachable — no saturated or neon tones. Do NOT render color names or role labels as visible text in the image.\n\n## Best Paired With\n\n- `sketch-notes` — natural pairing for hand-drawn educational content\n- `notion` — macaron accents soften the monochrome aesthetic\n- `chalkboard` — pastel chalk tones replace standard chalk colors\n- `warm` — reinforces the cozy, friendly feel\n- `fresh` — complements the clean, natural aesthetic\n\nFile v2.0.0:references/palettes/neon.md\n\n# Neon Palette\n\nVibrant neon colors on dark background. High-energy, futuristic, eye-catching.\n\n## Background\n\n- Color: Dark Purple (#1A1025)\n- Texture: Smooth, deep\n\n## Colors\n\n| Role | Color | Hex | Usage |\n|------|-------|-----|-------|\n| Background | Dark Purple | #1A1025 | Primary background |\n| Text | Bright White | #F0F0F0 | Titles, main content |\n| Secondary Text | Light Lavender | #B8B8D4 | Annotations, labels |\n| Block Color | Neon Cyan | #00F5FF | Content block fill |\n| Block Color | Neon Magenta | #FF00FF | Content block fill |\n| Block Color | Neon Green | #39FF14 | Content block fill |\n| Block Color | Neon Pink | #FF6EC7 | Content block fill |\n| Accent | Electric Yellow | #FFFF00 | Emphasis, highlights |\n\n## Semantic Constraint\n\nVibrant neon color palette on dark background. Colors should glow against the dark base. High contrast, futuristic feel. Use neon sparingly — too many glowing elements become chaotic. Let dark background breathe. Do NOT render color names, hex codes, or role labels as visible text in the image.\n\n## Best Paired With\n\n- `bold` — amplifies high-impact energy\n- `pop` — neon takes the vibrancy further\n- `minimal` — neon accents on dark create striking contrast\n- `notion` — futuristic knowledge card aesthetic\n\nArchive v1.57.0: 29 files, 54530 bytes\n\nFiles: references/config/first-time-setup.md (3456b), references/config/preferences-schema.md (4015b), references/config/watermark-guide.md (1977b), references/confirmation.md (3929b), references/elements/canvas.md (3727b), references/elements/decorations.md (5049b), references/elements/image-effects.md (2990b), references/elements/typography.md (3258b), references/palettes/macaron.md (1437b), references/palettes/neon.md (1271b), references/palettes/warm.md (1225b), references/presets/bold.md (1577b), references/presets/chalkboard.md (2324b), references/presets/cute.md (1565b), references/presets/fresh.md (1496b), references/presets/minimal.md (1418b), references/presets/notion.md (1591b), references/presets/pop.md (1528b), references/presets/retro.md (1483b), references/presets/screen-print.md (2680b), references/presets/sketch-notes.md (3216b), references/presets/study-notes.md (2977b), references/presets/warm.md (1476b), references/style-presets.md (1899b), references/workflows/analysis-framework.md (7235b), references/workflows/outline-template.md (6101b), references/workflows/prompt-assembly.md (10328b), SKILL.md (28038b), _meta.json (136b)\n\nFile v1.57.0:SKILL.md\n\n---\nname: baoyu-xhs-images\ndescription: \"[Deprecated: use baoyu-image-cards] Generates Xiaohongshu (Little Red Book) image card series with 12 visual styles, 8 layouts, and 3 color palettes. Breaks content into 1-10 cartoon-style image cards optimized for XHS engagement. Use when user mentions \\\"小红书图片\\\", \\\"XHS images\\\", \\\"RedNote infographics\\\", \\\"小红书种草\\\", \\\"小绿书\\\", \\\"微信图文\\\", \\\"微信贴图\\\", or wants social media infographic series for Chinese platforms.\"\nversion: 1.57.0\nmetadata:\n  openclaw:\n    homepage: https://github.com/JimLiu/baoyu-skills#baoyu-xhs-images\n---\n\n\n# Image Card Series Generator\n\nBreak down complex content into eye-catching image card series with multiple style options.\n\n## User Input Tools\n\nWhen this skill prompts the user, follow this tool-selection rule (priority order):\n\n1. **Prefer built-in user-input tools** exposed by the current agent runtime — e.g., `AskUserQuestion`, `request_user_input`, `clarify`, `ask_user`, or any equivalent.\n2. **Fallback**: if no such tool exists, emit a numbered plain-text message and ask the user to reply with the chosen number/answer for each question.\n3. **Batching**: if the tool supports multiple questions per call, combine all applicable questions into a single call; if only single-question, ask them one at a time in priority order.\n\nConcrete `AskUserQuestion` references below are examples — substitute the local equivalent in other runtimes.\n\n## Image Generation Tools\n\nWhen this skill needs to render an image, resolve the backend in this order:\n\n1. **Current-request override** — if the user names a specific backend in the current message, use it.\n2. **Saved preference** — if `EXTEND.md` sets `preferred_image_backend` to a backend available right now, use it.\n3. **Auto-select** (when the preference is `auto`, unset, or the pinned backend isn't available):\n   - **Codex (`imagegen`)** — first, inspect your available-skills / tool inventory. If a skill named `imagegen` is listed, you are running inside Codex and MUST use it: invoke via the `Skill` tool with `skill: \"imagegen\"`, passing the saved prompt file's content (plus output path and aspect ratio per Codex `imagegen`'s own args). Codex `imagegen` is the official raster backend in that runtime and outranks any non-native skill (e.g., `baoyu-imagine`) unless the user has explicitly pinned a different `preferred_image_backend`.\n   - **Other runtime-native tools** — if the runtime exposes a different native image tool (e.g., Hermes `image_generate`), use it the same way.\n   - Otherwise, if exactly one non-native backend is installed (e.g., `baoyu-imagine`), use it.\n   - Otherwise (multiple non-native backends with no runtime-native tool), ask the user once — batch with any other initial questions.\n4. **If none are available**, tell the user and ask how to proceed.\n\n**⛔ Never substitute SVG, HTML, canvas, or other code-based rendering for raster image generation.** Codex `imagegen`'s own description says it should be used \"when the output should be a bitmap asset rather than repo-native code or vector.\" If you cannot resolve a raster backend via step 3, fall through to step 4 and ask the user — do **not** silently emit SVG, write inline `<svg>` markup, or produce HTML/CSS art as a substitute. This applies even if the article/section seems \"diagram-like\": the consumer skill calling this rule has already decided that a raster image is what it needs.\n\n**⛔ Never repair rendered text by painting over a generated bitmap.** Do not use ImageMagick, Pillow, Canvas, SVG, HTML/CSS, OCR scripts, or any other programmatic overlay to cover, rewrite, erase, stroke, or replace titles, body copy, tags, or any other text inside an already generated image card. If text is wrong or unclear, regenerate from a corrected prompt, switch to a layout with less on-card text, or ask the user which imperfect candidate to keep.\n\nSetting `preferred_image_backend: ask` forces the step-3 prompt every run regardless of available backends. Users change the pinned backend via the `## Changing Preferences` section below.\n\n**Prompt file requirement (hard)**: write each image's full, final prompt to a standalone file under `prompts/` (naming: `NN-{type}-[slug].md`) BEFORE invoking any backend. The file is the reproducibility record and lets you switch backends without regenerating prompts.\n\nConcrete tool names (`imagegen`, `image_generate`, `baoyu-imagine`) above are examples — substitute the local equivalents under the same rule.\n\n## Batch Generation Policy\n\nAfter every prompt file for the current generation group has been saved and verified, generate images in batches by default.\n\nPriority order:\n\n1. Use the chosen backend's native batch / multi-task interface if it exists. Each task must keep its own prompt file, output path, aspect ratio, session ID, and direct reference images.\n2. If no native batch interface exists but the runtime can issue parallel tool calls, dispatch up to `generation_batch_size` images at a time. Default: `4`. An explicit user request in the current message, such as `--batch-size 4` or \"并行4张一起生成\", overrides EXTEND.md.\n3. If neither native batch nor parallel tool calls are available, generate sequentially.\n\nRules:\n\n- Honor the image-1 anchor chain: generate image 1 first, then batch images 2+ using image 1 as the reference.\n- Never start a batch until every selected prompt file for that batch exists on disk.\n- Retry failed items once without regenerating successful items.\n- Do not use subagents merely to parallelize image rendering. Use subagents only for separate prompt iteration or creative exploration.\n\n## Confirmation Policy\n\nDefault behavior: **confirm before generation**.\n\n- Treat explicit skill invocation, a file path, matched signals/presets, and `EXTEND.md` defaults as **recommendation inputs only**. None of them authorizes skipping confirmation.\n- Do **not** start Step 3 until the user completes Step 2.\n- Skip confirmation only when the current request explicitly says to do so, for example: `--yes`, \"直接生成\", \"不用确认\", \"跳过确认\", \"按默认出图\", or equivalent wording.\n- If confirmation is skipped explicitly, state the assumed strategy / style / layout / palette / count / backend in the next user-facing update before generating.\n\n## Language\n\nRespond in the user's language across questions, progress, errors, and completion summary. Keep technical tokens (style names, file paths, code) in English.\n\n## Options\n\n| Option | Description |\n|--------|-------------|\n| `--style <name>` | Visual style (see Styles below) |\n| `--layout <name>` | Information layout (see Layouts below) |\n| `--palette <name>` | Color override: macaron / warm / neon |\n| `--preset <name>` | Style + layout + optional palette shorthand (see Presets below; per-preset prompt fragments in `references/style-presets.md`) |\n| `--ref <files...>` | Reference images applied to image 1 as the series anchor |\n| `--batch-size <n>` | Temporary generation batch size for this run. Default: `generation_batch_size` from EXTEND.md, otherwise 4. Clamp to 1-8. |\n| `--yes` | Non-interactive: skip all confirmations, use EXTEND.md or built-in defaults, auto-confirm recommended plan (Path A) |\n\n## Dimensions\n\nThree independent knobs combine freely:\n\n| Dimension | Controls | Options |\n|-----------|----------|---------|\n| **Style** | Visual aesthetics (lines, decorations, rendering) | 12 styles (see Styles below) |\n| **Layout** | Information structure (density, arrangement) | 8 layouts (see Layouts below) |\n| **Palette** (optional) | Color override, replaces the style's default colors | macaron / warm / neon (see Palettes below) |\n\nExample: `--style notion --layout dense` makes an intellectual knowledge card; add `--palette macaron` to soften the colors without changing notion's rendering rules. A `--preset` is a shorthand for style + layout (+ optional palette).\n\n**Palette behavior**: no `--palette` → style's built-in colors; `--palette <name>` → overrides colors only, rendering rules unchanged. Some styles declare a `default_palette` (e.g., sketch-notes defaults to macaron).\n\n## Styles (12)\n\n| Style | Description |\n|-------|-------------|\n| `cute` (Default) | Sweet, adorable, girly aesthetic |\n| `fresh` | Clean, refreshing, natural |\n| `warm` | Cozy, friendly, approachable |\n| `bold` | High impact, attention-grabbing |\n| `minimal` | Ultra-clean, sophisticated |\n| `retro` | Vintage, nostalgic, trendy |\n| `pop` | Vibrant, energetic, eye-catching |\n| `notion` | Minimalist hand-drawn line art, intellectual |\n| `chalkboard` | Colorful chalk on black board, educational |\n| `study-notes` | Realistic handwritten photo style, blue pen + red annotations + yellow highlighter |\n| `screen-print` | Bold poster art, halftone textures, limited colors, symbolic storytelling |\n| `sketch-notes` | Hand-drawn educational infographic, macaron pastels on warm cream, wobble lines |\n\nPer-style specifications: `references/presets/<style>.md`.\n\n## Layouts (8)\n\n| Layout | Description |\n|--------|-------------|\n| `sparse` (Default) | 1-2 points, maximum impact |\n| `balanced` | 3-4 points, standard |\n| `dense` | 5-8 points, knowledge-card style |\n| `list` | Enumeration / ranking (4-7 items) |\n| `comparison` | Side-by-side contrast |\n| `flow` | Process / timeline (3-6 steps) |\n| `mindmap` | Center-radial (4-8 branches) |\n| `quadrant` | Four-quadrant / circular sections |\n\nLayout specs: `references/elements/canvas.md`.\n\n## Palettes (optional override)\n\nReplaces the style's colors while keeping rendering rules (line treatment, textures) intact.\n\n| Palette | Background | Zone Colors | Accent | Feel |\n|---------|------------|-------------|--------|------|\n| `macaron` | Warm cream #F5F0E8 | Blue #A8D8EA, Lavender #D5C6E0, Mint #B5E5CF, Peach #F8D5C4 | Coral #E8655A | Soft, educational |\n| `warm` | Soft peach #FFECD2 | Orange #ED8936, Terracotta #C05621, Golden #F6AD55, Rose #D4A09A | Sienna #A0522D | Earth tones, cozy |\n| `neon` | Dark purple #1A1025 | Cyan #00F5FF, Magenta #FF00FF, Green #39FF14, Pink #FF6EC7 | Yellow #FFFF00 | High-energy, futuristic |\n\nPalette specs: `references/palettes/<palette>.md`.\n\n## Presets (style + layout shortcuts)\n\nQuick-start combos, grouped by scenario. Use `--preset <name>` or recommend during Step 2.\n\n**Knowledge & Learning**:\n\n| Preset | Style | Layout | Best For |\n|--------|-------|--------|----------|\n| `knowledge-card` | notion | dense | 干货知识卡、概念科普 |\n| `checklist` | notion | list | 清单、排行榜 |\n| `concept-map` | notion | mindmap | 概念图、知识脉络 |\n| `swot` | notion | quadrant | SWOT 分析、四象限 |\n| `tutorial` | chalkboard | flow | 教程步骤、操作流程 |\n| `classroom` | chalkboard | balanced | 课堂笔记、知识讲解 |\n| `study-guide` | study-notes | dense | 学习笔记、考试重点 |\n| `hand-drawn-edu` | sketch-notes | flow | 手绘教程、流程图解 |\n| `sketch-card` | sketch-notes | dense | 手绘知识卡 |\n| `sketch-summary` | sketch-notes | balanced | 手绘总结、图文笔记 |\n\n**Lifestyle & Sharing**:\n\n| Preset | Style | Layout | Best For |\n|--------|-------|--------|----------|\n| `cute-share` | cute | balanced | 少女风分享、日常种草 |\n| `girly` | cute | sparse | 甜美封面、氛围感 |\n| `cozy-story` | warm | balanced | 生活故事、情感分享 |\n| `product-review` | fresh | comparison | 产品对比、测评 |\n| `nature-flow` | fresh | flow | 健康流程、自然主题 |\n\n**Impact & Opinion**:\n\n| Preset | Style | Layout | Best For |\n|--------|-------|--------|----------|\n| `warning` | bold | list | 避坑指南、重要提醒 |\n| `versus` | bold | comparison | 正反对比 |\n| `clean-quote` | minimal | sparse | 金句、极简封面 |\n| `pro-summary` | minimal | balanced | 专业总结、商务内容 |\n\n**Trend & Entertainment**:\n\n| Preset | Style | Layout | Best For |\n|--------|-------|--------|----------|\n| `retro-ranking` | retro | list | 复古排行、经典盘点 |\n| `throwback` | retro | balanced | 怀旧分享 |\n| `pop-facts` | pop | list | 趣味冷知识 |\n| `hype` | pop | sparse | 炸裂封面、惊叹分享 |\n\n**Poster & Editorial**:\n\n| Preset | Style | Layout | Best For |\n|--------|-------|--------|----------|\n| `poster` | screen-print | sparse | 海报风封面、影评书评 |\n| `editorial` | screen-print | balanced | 观点文章、文化评论 |\n| `cinematic` | screen-print | comparison | 电影对比、戏剧张力 |\n\nFull prompt-fragment definitions: `references/style-presets.md`.\n\n## Auto-Selection\n\nMatch content signals to the best combo. First row whose keywords appear wins; fall back to `cute-share` if nothing matches.\n\n| Signals in source | Style | Layout | Recommended preset |\n|-------------------|-------|--------|--------------------|\n| beauty, fashion, cute, girl, pink | `cute` | sparse/balanced | `cute-share`, `girly` |\n| health, nature, fresh, organic | `fresh` | balanced/flow | `product-review`, `nature-flow` |\n| life, story, emotion, warm | `warm` | balanced | `cozy-story` |\n| warning, important, must, critical | `bold` | list/comparison | `warning`, `versus` |\n| professional, business, elegant | `minimal` | sparse/balanced | `clean-quote`, `pro-summary` |\n| classic, vintage, traditional | `retro` | balanced | `throwback`, `retro-ranking` |\n| fun, exciting, wow, amazing | `pop` | sparse/list | `hype`, `pop-facts` |\n| knowledge, concept, productivity, SaaS | `notion` | dense/list | `knowledge-card`, `checklist` |\n| education, tutorial, learning, classroom | `chalkboard` | balanced/dense | `tutorial`, `classroom` |\n| notes, handwritten, study guide, realistic | `study-notes` | dense/list/mindmap | `study-guide` |\n| movie, poster, opinion, editorial, cinematic | `screen-print` | sparse/comparison | `poster`, `editorial`, `cinematic` |\n| hand-drawn, infographic, workflow, 手绘, 图解 | `sketch-notes` | flow/balanced/dense | `hand-drawn-edu`, `sketch-card`, `sketch-summary` |\n\n## Style × Layout Matrix\n\nCompatibility scores (✓✓ highly recommended, ✓ works well, ✗ avoid). Use when the user picks a non-default combo and you want to flag a poor match.\n\n|              | sparse | balanced | dense | list | comparison | flow | mindmap | quadrant |\n|--------------|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|\n| cute         | ✓✓ | ✓✓ | ✓  | ✓✓ | ✓  | ✓  | ✓  | ✓  |\n| fresh        | ✓✓ | ✓✓ | ✓  | ✓  | ✓  | ✓✓ | ✓  | ✓  |\n| warm         | ✓✓ | ✓✓ | ✓  | ✓  | ✓✓ | ✓  | ✓  | ✓  |\n| bold         | ✓✓ | ✓  | ✓  | ✓✓ | ✓✓ | ✓  | ✓  | ✓✓ |\n| minimal      | ✓✓ | ✓✓ | ✓✓ | ✓  | ✓  | ✓  | ✓  | ✓  |\n| retro        | ✓✓ | ✓✓ | ✓  | ✓✓ | ✓  | ✓  | ✓  | ✓  |\n| pop          | ✓✓ | ✓✓ | ✓  | ✓✓ | ✓✓ | ✓  | ✓  | ✓  |\n| notion       | ✓✓ | ✓✓ | ✓✓ | ✓✓ | ✓✓ | ✓✓ | ✓✓ | ✓✓ |\n| chalkboard   | ✓✓ | ✓✓ | ✓✓ | ✓✓ | ✓  | ✓✓ | ✓✓ | ✓  |\n| study-notes  | ✗  | ✓  | ✓✓ | ✓✓ | ✓  | ✓  | ✓✓ | ✓  |\n| screen-print | ✓✓ | ✓✓ | ✗  | ✓  | ✓✓ | ✓  | ✗  | ✓✓ |\n| sketch-notes | ✓  | ✓✓ | ✓✓ | ✓✓ | ✓  | ✓✓ | ✓✓ | ✓  |\n\n## Outline Strategies\n\nThree differentiated approaches — each produces a structurally different outline. The workflow recommends one; Path C generates all three and lets the user choose.\n\n| Strategy | Concept | Best for | Structure |\n|----------|---------|----------|-----------|\n| **A — Story-Driven** | Personal experience as the thread, emotional resonance first | Reviews, personal shares, transformation | Hook → Problem → Discovery → Experience → Conclusion |\n| **B — Information-Dense** | Value-first, efficient information delivery | Tutorials, comparisons, checklists | Core conclusion → Info card → Pros/Cons → Recommendation |\n| **C — Visual-First** | Visual impact as core, minimal text | High-aesthetic products, lifestyle, mood content | Hero image → Detail shots → Lifestyle scene → CTA |\n\n## Reference Images\n\nUser-supplied refs are **separate from** the internal \"image-1 as anchor\" chain (Step 3) — they layer on top of it.\n\n**Intake**: via `--ref <files...>` or paths pasted in conversation.\n- File path → copy to `refs/NN-ref-{slug}.{ext}`\n- Pasted with no path → ask for the path, or extract style traits as a text fallback\n\n**Usage modes** (per reference):\n\n| Usage | Effect |\n|-------|--------|\n| `direct` | Pass the file to the backend (typically on image 1 only, so the anchor propagates through the chain) |\n| `style` | Extract style traits and append to every card's prompt body |\n| `palette` | Extract hex colors and append to every card's prompt body |\n\nRecord refs in each affected card's prompt frontmatter:\n\n```yaml\nreferences:\n  - ref_id: 01\n    filename: 01-ref-brand.png\n    usage: direct\n```\n\nAt generation time: verify files exist. Image 1 with `usage: direct` + backend that accepts refs → pass via the backend's ref parameter (becomes the chain anchor). Images 2+ keep using image-1 as `--ref` per Step 3 — do NOT re-stack user refs on top (avoids conflicting signals). For `style`/`palette`, embed extracted traits in every prompt.\n\n## File Layout\n\n```\nimage-cards/{topic-slug}/\n├── source-{slug}.{ext}\n├── analysis.md\n├── outline-strategy-{a,b,c}.md    # Path C only\n├── outline.md\n├── prompts/NN-{type}-{slug}.md\n├── NN-{type}-{slug}.png\n└── refs/                          # only if --ref used\n```\n\n**Slug**: 2-4 words, kebab-case. \"AI 工具推荐\" → `ai-tools-recommend`. On collision, append `-YYYYMMDD-HHMMSS`.\n\n**Backup rule** (applies throughout): before overwriting any file — source, outline, prompt, image — rename the existing one to `<name>-backup-YYYYMMDD-HHMMSS.<ext>`. This protects user edits.\n\n## Workflow\n\n```\n- [ ] Step 0: Load EXTEND.md ⛔ BLOCKING (interactive only)\n- [ ] Step 1: Analyze content → analysis.md\n- [ ] Step 2: Smart Confirm ⚠️ REQUIRED (Path A / B / C)\n- [ ] Step 3: Generate images\n- [ ] Step 4: Completion report\n```\n\n### Step 0: Load EXTEND.md ⛔ BLOCKING\n\nCheck these paths in order; first hit wins:\n\n| Path | Scope |\n|------|-------|\n| `.baoyu-skills/baoyu-image-cards/EXTEND.md` | Project |\n| `${XDG_CONFIG_HOME:-$HOME/.config}/baoyu-skills/baoyu-image-cards/EXTEND.md` | XDG |\n| `$HOME/.baoyu-skills/baoyu-image-cards/EXTEND.md` | User home |\n\n- **Found** → read, parse, print a summary (style / layout / watermark / language), continue.\n- **Not found + interactive** → run first-time setup (see `references/config/first-time-setup.md`) and save before anything else. Do NOT analyze content or ask style questions until preferences exist — this keeps first-run behavior predictable.\n- **Not found + `--yes`** → skip setup, use built-in defaults (no watermark, style/layout auto-selected, language from content). Do not prompt, do not create EXTEND.md.\n\n**EXTEND.md keys**: watermark, preferred style/layout, custom style definitions, language preference, preferred image backend, generation batch size. Schema: `references/config/preferences-schema.md`.\n\n### Step 1: Analyze Content → `analysis.md`\n\n1. Save the source (backup rule applies if `source.md` exists).\n2. Run the deep analysis in `references/workflows/analysis-framework.md`: content type, hook potential, audience, engagement signals, visual opportunity map, swipe flow.\n3. Detect source language, pick recommended image count (2-10).\n4. Auto-recommend strategy + style + layout + palette using the **Auto-Selection** table above.\n5. Write everything to `analysis.md`.\n\n### Step 2: Smart Confirm ⚠️ REQUIRED\n\n**Hard gate**: this step is mandatory per the [Confirmation Policy](#confirmation-policy) — Step 3 cannot start until the user confirms here (or explicitly opts out with `--yes` / equivalent wording in the current request).\n\nGoal: present the auto-recommended plan and let the user confirm or adjust. Skip this step entirely under `--yes` — proceed with Path A using the analysis and any CLI overrides.\n\n**Display summary** before asking:\n\n```\n📋 内容分析\n  主题：[topic] | 类型：[content_type]\n  要点：[key points]\n  受众：[audience]\n\n🎨 推荐方案（自动匹配）\n  策略：[A/B/C] [name]（[reason]）\n  风格：[style] · 布局：[layout] · 配色：[palette or 默认] · 预设：[preset]\n  图片：[N]张（封面+[N-2]内容+结尾）\n  元素：[background] / [decorations] / [emphasis]\n```\n\nThen ask one question — three paths. Verbatim option copy: `references/confirmation.md`.\n\n**Path A — Quick confirm** (trust auto-recommendation): generate a single outline using the recommended strategy + style → save to `outline.md` → Step 3.\n\n**Path B — Customize**: ask five questions (strategy/style, layout, palette, count, optional notes) with the recommendation pre-filled — blanks keep the recommendation. Generate one outline with the user's choices → `outline.md` → Step 3. See `references/confirmation.md`.\n\n**Path C — Detailed mode**: two sub-confirmations.\n\n- *Step 2a — Content understanding*: ask selling points (multi-select), audience, style preference (authentic / professional / aesthetic / auto), optional context. Update `analysis.md`.\n- *Step 2b — Three outline variants*: generate `outline-strategy-a.md`, `outline-strategy-b.md`, `outline-strategy-c.md`. Each MUST have a different structure AND a different recommended style — include `style_reason` in the frontmatter. Page-count heuristic: A ~4-6, B ~3-5, C ~3-4. Template: `references/workflows/outline-template.md`; frontmatter example in `references/confirmation.md`.\n- *Step 2c — Selection*: ask three questions (outline A/B/C/Combined, style, visual elements). Save selected/merged outline to `outline.md` → Step 3.\n\n### Step 3: Generate Images\n\nWith confirmed outline + style + layout + palette:\n\n**Visual consistency — image-1 anchor chain**: character / mascot / color rendering drifts between calls unless you anchor them. Generate image 1 (cover) first WITHOUT `--ref`, then pass image 1 as `--ref` to every subsequent image. This is the single most important consistency trick for this skill — don't skip it even if the backend also supports a session ID.\n\nGeneration flow:\n\n1. Write the full prompt for every image to `prompts/NN-{type}-{slug}.md` in the user's preferred language (backup rule applies), then verify all selected prompt files exist.\n2. Generate **image 1** first without `--ref`; backup rule app\n\nArchive v0.1.0: 22 files, 39992 bytes\n\nFiles: references/config/first-time-setup.md (2981b), references/config/preferences-schema.md (3068b), references/config/watermark-guide.md (1977b), references/elements/canvas.md (3727b), references/elements/decorations.md (4826b), references/elements/image-effects.md (2990b), references/elements/typography.md (3258b), references/presets/bold.md (1577b), references/presets/chalkboard.md (2324b), references/presets/cute.md (1565b), references/presets/fresh.md (1496b), references/presets/minimal.md (1418b), references/presets/notion.md (1591b), references/presets/pop.md (1528b), references/presets/retro.md (1483b), references/presets/study-notes.md (2977b), references/presets/warm.md (1476b), references/workflows/analysis-framework.md (7224b), references/workflows/outline-template.md (6101b), references/workflows/prompt-assembly.md (6812b), SKILL.md (22037b), _meta.json (135b)","readmeExcerpt":"Skill: Baoyu Xhs Images Owner: jimliu Summary: Generates infographic image card series with 12 visual styles, 8 layouts, and 3 color palettes. Breaks content into 1-10 cartoon-style image cards optimized... Tags: latest:2.0.1 Version history: v2.0.1 | 2026-06-13T04:59:23.860Z | auto - Added support for Codex CLI (codex-imagegen) and Cursor's GenerateImage tool as additional image generation backends. - Updated backen","codeSnippets":[],"executableExamples":[{"language":"yaml","snippet":"references:\n  - ref_id: 01\n    filename: 01-ref-brand.png\n    usage: direct"},{"language":"text","snippet":"image-cards/{topic-slug}/\n├── source-{slug}.{ext}\n├── analysis.md\n├── outline-strategy-{a,b,c}.md    # Path C only\n├── outline.md\n├── prompts/NN-{type}-{slug}.md\n├── NN-{type}-{slug}.png\n└── refs/                          # only if --ref used"},{"language":"text","snippet":"- [ ] Step 0: Load EXTEND.md ⛔ BLOCKING (interactive only)\n- [ ] Step 1: Analyze content → analysis.md\n- [ ] Step 2: Smart Confirm ⚠️ REQUIRED (Path A / B / C)\n- [ ] Step 3: Generate images\n- [ ] Step 4: Completion report"},{"language":"text","snippet":"📋 内容分析\n  主题：[topic] | 类型：[content_type]\n  要点：[key points]\n  受众：[audience]\n\n🎨 推荐方案（自动匹配）\n  策略：[A/B/C] [name]（[reason]）\n  风格：[style] · 布局：[layout] · 配色：[palette or 默认] · 预设：[preset]\n  图片：[N]张（封面+[N-2]内容+结尾）\n  元素：[background] / [decorations] / [emphasis]"},{"language":"text","snippet":"Include a subtle watermark \"[content]\" positioned at [position].\nThe watermark should be legible but not distracting."},{"language":"text","snippet":"Image Card Series Complete!\n\nTopic: [topic]\nMode: [Quick / Custom / Detailed]\nStrategy: [A/B/C/Combined]\nStyle: [name]\nPalette: [name or \"default\"]\nLayout: [name or \"varies\"]\nLocation: [directory]\nImages: N total\n\n✓ analysis.md\n✓ outline.md\n✓ outline-strategy-a/b/c.md (detailed mode only)\n\n- 01-cover-[slug].png ✓ Cover (sparse)\n- 02-content-[slug].png ✓ Content (balanced)\n- ...\n- NN-ending-[slug].png ✓ Ending (sparse)"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: baoyu-xhs-images\ndescription: Generates infographic image card series with 12 visual styles, 8 layouts, and 3 color palettes. Breaks content into 1-10 cartoon-style image cards optimized for social media engagement. Use when user mentions \"小红书图片\", \"小红书种草\", \"小绿书\", \"微信图文\", \"微信贴图\", \"image cards\", \"图片卡片\", baoyu-xhs-images, or wants social media infographic series.\nversion: 2.0.1\nmetadata:\n  openclaw:\n    homepage: https://github.com/JimLiu/baoyu-skills#baoyu-xhs-images\n---\n\n# Image Card Series Generator\n\nBreak down complex content into eye-catching image card series with multiple style options.\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"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7csrrndw79hpke5d0gsnx93d82k67r\",\n  \"slug\": \"baoyu-xhs-images\",\n  \"version\": \"2.0.1\",\n  \"publishedAt\": 1781326763860\n}"},{"path":"references/codex-imagegen.md","content":"# `codex-imagegen` Wrapper Invocation\n\nLoad this reference only when the [Image Generation Tools](../SKILL.md#image-generation-tools) rule has resolved to `codex-imagegen` — i.e., the current runtime exposes no native `imagegen` skill but `codex` CLI is on `PATH` with an active `codex login`.\n\n## Preferred path: route through `baoyu-image-gen`\n\nIf the `baoyu-image-gen` skill is available in this runtime, **always** invoke through it rather than calling the wrapper directly. It handles retry/cache/batch/EXTEND.md preferences uniformly with every other provider.\n\n```bash\n${BUN_X} <baoyu-image-gen-base>/scripts/main.ts \\\n  --provider codex-cli \\\n  --image <ABSOLUTE_output> \\\n  --promptfiles <ABSOLUTE_prompts/NN-{type}-[slug].md> \\\n  --ar <ratio> \\\n  [--ref <ABSOLUTE_file>]...\n```\n\nResolve `<baoyu-image-gen-base>` the same way you resolve any sibling skill — through your runtime's skill registry (`Skill` tool, plugin marketplace, or `$HOME/.baoyu-skills/baoyu-image-gen/`).\n\n## Fallback: spawn the wrapper directly\n\nOnly when `baoyu-image-gen` is NOT installed in the current runtime. Discover the wrapper's location at runtime — do NOT hard-code `../../packages/...` from this skill:\n\n1. **Honor explicit override**: if `$BAOYU_CODEX_IMAGEGEN_BIN` is set and points to a real file, use that path. It may be `.ts` (spawn `bun <path>`) or `.sh`/binary (spawn directly).\n2. **Search the plugin root**: walk up from this skill's directory looking for `packages/baoyu-codex-imagegen/src/main.ts`. If found, that is the wrapper. Spawn it with `bun`.\n3. **Last resort**: tell the user that `codex-imagegen` is not available in this runtime and ask whether to install the `baoyu-skills` plugin (or set `BAOYU_CODEX_IMAGEGEN_BIN`) or pick another backend.\n\nOnce located, the invocation shape is:\n\n```bash\nbun <WRAPPER>/main.ts \\\n  --image <ABSOLUTE_output> \\\n  --prompt-file <ABSOLUTE_prompts/NN-{type}-[slug].md> \\\n  --aspect <ratio> \\\n  [--ref <ABSOLUTE_file>]... \\\n  [--timeout <ms>] \\\n  [--cache-dir ~/.cache/baoyu-codex-imagegen] \\\n  [--log-file <ABSOLUTE_jsonl_log_path>]\n```\n\nIf `bun` is missing, `npx -y bun <WRAPPER>/main.ts ...` works as a fallback.\n\n## Parameter notes\n\n- **All filesystem inputs** are auto-resolved against `process.cwd()` when relative, but agents should pass absolute paths to be robust against cwd drift.\n- **`--timeout`** defaults to `300000` (5 min) per `codex exec` attempt. Raise (e.g. `--timeout 600000` for 10 min) on slow networks or large prompts.\n- **`--cache-dir`** is off by default. Enable for repeatable runs to skip redundant generations of the same prompt+aspect+refs.\n- **Authentication**: the wrapper uses the user's Codex subscription — no `OPENAI_API_KEY` is read or sent.\n\n## Stdout contract\n\nSingle JSON line:\n\n- Success: `{\"status\":\"ok\",\"path\":\"...\",\"bytes\":N,\"elapsed_seconds\":N,\"thread_id\":\"...\",\"attempts\":N,\"cached\":bool,...}`\n- Failure: `{\"status\":\"error\",\"path\":\"...\",\"bytes\":0,\"error\":\"...\",\"error_kind\":\"...\"}`\n\n`error_kind` values: `cod"},{"path":"references/config/first-time-setup.md","content":"---\nname: first-time-setup\ndescription: First-time setup flow for baoyu-xhs-images 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 content/article\n- Ask about style or layout\n- Ask about target audience\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 single AskUserQuestion with multiple questions (AskUserQuestion auto-adds \"Other\" option):\n\n### Question 1: Watermark\n\n```\nheader: \"Watermark\"\nquestion: \"Watermark text for generated images? Type your watermark content (e.g., name, @handle)\"\noptions:\n  - label: \"No watermark (Recommended)\"\n    description: \"No watermark, can enable later in EXTEND.md\"\n```\n\nPosition defaults to bottom-right.\n\n### Question 2: Preferred Style\n\n```\nheader: \"Style\"\nquestion: \"Default visual style preference? Or type another style name or your custom style\"\noptions:\n  - label: \"None (Recommended)\"\n    description: \"Auto-select based on content analysis\"\n  - label: \"cute\"\n    description: \"Sweet, adorable - classic XHS aesthetic\"\n  - label: \"notion\"\n    description: \"Minimalist hand-drawn, intellectual\"\n```\n\n### Question 3: Save Location\n\n```\nheader: \"Save\"\nquestion: \"Where to save preferences?\"\noptions:\n  - label: \"Project\"\n    description: \".baoyu-skills/ (this project only)\"\n  - label: \"User\"\n    description: \"~/.baoyu-skills/ (all projects)\"\n```\n\n## Save Locations\n\n| Choice | Path | Scope |\n|--------|------|-------|\n| Project | `.baoyu-skills/baoyu-xhs-images/EXTEND.md` | Current project |\n| User | `~/.baoyu-skills/baoyu-xhs-images/EXTEND.md` | All projects |\n\n## After Setup\n\n1. Create directory if needed\n2. Write EXTEND.md with frontmatter\n3. Confirm: \"Preferences saved to [path]\"\n4. Continue to Step 1\n\n## EXTEND.md Template\n\n```yaml\n---\nversion: 1\nwatermark:\n  enabled: [true/false]\n  content: \"[user input or empty]\"\n  position: bottom-right\n  opacity: 0.7\npreferred_style:\n  name: [selected style or null]\n  description: \"\"\npreferred_layout: null\nlanguage: null\npreferred_image_backend: auto\ngeneration_batch_size: 4\ncustom_styles: []\n---\n```\n\n`preferred_image_backend: auto` is the baked-in default — first-time setup does not ask about it. The `## Image Generation Tools` rule in SKILL.md then picks the runtime-native tool (Codex `imagegen`, Hermes `image_generate`, etc.) when available, and falls back to installed backends.\n\n`generation_batch_size: 4` is the baked-in default for batch rendering. The current user request "},{"path":"references/config/preferences-schema.md","content":"---\nname: preferences-schema\ndescription: EXTEND.md YAML schema for baoyu-xhs-images user preferences\n---\n\n# Preferences Schema\n\n## Full Schema\n\n```yaml\n---\nversion: 1\n\nwatermark:\n  enabled: false\n  content: \"\"\n  position: bottom-right  # bottom-right|bottom-left|bottom-center|top-right\n\npreferred_style:\n  name: null              # Built-in or custom style name\n  description: \"\"         # Override/notes\n\npreferred_layout: null    # sparse|balanced|dense|list|comparison|flow\n\nlanguage: null            # zh|en|ja|ko|auto\n\npreferred_image_backend: auto  # auto|ask|<backend-id>\n\ngeneration_batch_size: 4       # 1-8, used when backend/runtime supports batch or parallel generation\n\ncustom_styles:\n  - name: my-style\n    description: \"Style description\"\n    color_palette:\n      primary: [\"#FED7E2\", \"#FEEBC8\"]\n      background: \"#FFFAF0\"\n      accents: [\"#FF69B4\", \"#FF6B6B\"]\n    visual_elements: \"Hearts, stars, sparkles\"\n    typography: \"Rounded, bubbly hand lettering\"\n    best_for: \"Lifestyle, beauty\"\n---\n```\n\n## Field Reference\n\n| Field | Type | Default | Description |\n|-------|------|---------|-------------|\n| `version` | int | 1 | Schema version |\n| `watermark.enabled` | bool | false | Enable watermark |\n| `watermark.content` | string | \"\" | Watermark text (@username or custom) |\n| `watermark.position` | enum | bottom-right | Position on image |\n| `preferred_style.name` | string | null | Style name or null |\n| `preferred_style.description` | string | \"\" | Custom notes/override |\n| `preferred_layout` | string | null | Layout preference or null |\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| `generation_batch_size` | int | 4 | Number of images to dispatch per batch when the backend has native batch support or the runtime can issue parallel generation calls. Clamp invalid values to 1-8. Current user request overrides this value. |\n| `custom_styles` | array | [] | User-defined styles |\n\n## Position Options\n\n| Value | Description |\n|-------|-------------|\n| `bottom-right` | Lower right corner (default, most common) |\n| `bottom-left` | Lower left corner |\n| `bottom-center` | Bottom center |\n| `top-right` | Upper right corner |\n\n## Custom Style Fields\n\n| Field | Required | Description |\n|-------|----------|-------------|\n| `name` | Yes | Unique style identifier (kebab-case) |\n| `description` | Yes | What the style conveys |\n| `color_palette.primary` | No | Main colors (array) |\n| `color_palette.background` | No | Background color |\n| `color_palette.accents` | No |"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":null,"editorialQuality":{"score":100,"threshold":65,"status":"thin","wordCount":1909,"uniquenessScore":40,"reasons":["uniqueness-below-45"]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-09T05:15:43.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-09T05:15:43.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-10T05:48:09.649Z","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"}]}}}