Dependencies
This skill requires the following to be installed:
| Dependency |
Install |
Purpose |
| Playwright (npm) |
Preinstalled by the hosting/deploy environment |
Renders HTML to PNG |
| Pillow (Python) |
Preinstalled by the hosting/deploy environment |
Background normalization for generated illustrations |
Image generation may use either the host's built-in image tool, such as Codex
imagegen, or the user's own OpenAI-compatible image API.
<skill-dir> in the commands below refers to the directory containing this SKILL.md file.
Visual Explainer Cards
Create social cards that readers understand visually before reading closely.
This skill is Editorial-first: serif display titles (Playfair Display + Noto Serif SC), sans body, mono meta. IKB Klein Blue is the visible system color on every page (chrome, foot, section labels, dividers, page numbers). Mustard Yellow appears exactly once per set, on the cover horizontal bar — nowhere else.
It pairs that strict typography system with GPT Image 2 illustrations that may carry a small number of exact Chinese labels.
Default to a hybrid composition:
- Render the outer card, large titles, body copy, bottom takeaways, page rhythm, and editorial structure in HTML.
- Generate illustrations for most content pages — text leads, illustration explains. Use small, supporting illustrations (160-560px depending on page role), not one full-canvas centerpiece per set.
- Allow only small, high-value in-image labels inside generated illustrations. Keep long explanations and caveats in HTML.
- The cover (S00) is the only fixed layout in the system. Content pages are composed fresh from primitives based on content shape — do not invent named "S01/S02/S03" templates and force pages into them.
Core Workflow
Verify dependencies are ready:
python3 -c "import PIL" 2>/dev/null || echo "ERROR: Pillow missing; stop and report dependency_setup_required"
node -e "require('playwright')" 2>/dev/null || echo "ERROR: Playwright missing; stop and report dependency_setup_required"
test -n "$OPENAI_API_KEY$ZENMUX_API_KEY" || echo "INFO: use the host image tool or configure your own image API before generation"
If a dependency is unavailable, report it and stop before generating images.
Read the source and verify unstable facts when necessary.
Split the source into content_source and publish_metadata before storyboarding. Lines under 标签: / Tags: / Hashtags: and standalone hashtag lines such as #AI学习 #TTS are publish metadata only. They must not become page messages, cover text, footer text, illustration labels, captions, or generated-image prompt text.
Build a beginner explanation brief using references/beginner-explanation.md. Do not begin layout work until the concept can be explained without jargon.
Create storyboard.yaml before designing. Give each page one message and one visual role. Keep user-provided hashtags under source_tags, outside pages.
For recurring AI knowledge series, make page 1 a fixed series-cover: series line, English term, Chinese explanation, and one user-scenario question. Do not generate a cover illustration unless the user explicitly asks.
Add a page-rhythm plan before coding: first list the source's natural message units and resulting page count, then list each content page's silhouette and evidence type. Use varied silhouettes after the cover; in longer sets, avoid repeating the same page shape back to back.
Route each content page using references/visual-routing.md.
The cover (page 1) uses the fixed S00 layout in references/layouts.md. For pages 2 onwards, do NOT pick a pre-named recipe — read references/layouts.md to choose a layout pattern based on the content shape, and compose the page fresh from primitives.
For every illustration-led page, define image_slot before writing any image prompt. The slot must state the final HTML wrapper, slot dimensions, slot ratio, generator aspect ratio, expected output canvas, and subject bounding box. Use references/illustration-prompts.md as the slot registry.
Use labeled-gpt-image for every generated illustration. Every illustration must carry a small set of high-value labels rendered directly by the image model.
Write a compact GPT Image 2 prompt derived from image_slot, with only the short in-image labels needed to explain the picture and no duplicate card title. Never include source_tags or any text beginning with #.
Choose one image route for the task. Do not silently switch routes after generation begins.
For a host image tool such as Codex imagegen, pass it the exact prompt, save
the returned PNG at the storyboard output path, then record deterministic
provenance without inventing provider usage:
python3 <skill-dir>/scripts/generate-illustration.py \
--import-tool-image \
--prompt-file prompts/page-02.md \
--output assets/page-02.png \
--orientation landscape \
--size 1536x1024 \
--quality high \
--provider codex-imagegen \
--model host-managed-imagegen
For the user's own OpenAI-compatible image API, configure
OPENAI_API_KEY, OPENAI_BASE_URL, and OPENAI_IMAGE_MODEL, then run the
same script without --import-tool-image:
python3 <skill-dir>/scripts/generate-illustration.py \
--prompt-file prompts/page-02.md \
--output assets/page-02.png \
--orientation landscape \
--size 1536x1024 \
--quality high
Keep default paper-background normalization and conservative auto-frame.
Use --remove-background only for isolated cutouts,
--skip-background-normalize only for intentional scene backgrounds, and
--no-auto-frame only when large blank space is deliberate. The API route
preserves provider usage when the endpoint returns it. Require usage sidecars
only when exact API accounting is part of the task.
Copy assets/template.html into the task directory as index.html. The template is an Editorial seed (Indigo Porcelain default) with serif display fonts, IKB Blue as the visible system color, and ONE fixed layout: the S00 Series Cover. Switch data-accent on <html> to change palette (indigo-porcelain | lemon-yellow | lemon-green | safety-orange). The alt accents collapse to single-color (no separate highlight) — only Indigo Porcelain carries the cover-bar yellow.
Keep the cover (S00) structure verbatim, replacing only the placeholders. For content pages, copy a named snippet from the bottom of assets/template.html as your starting point and adjust:
- P-METAPHOR — concept + large 540px illustration
- P-LIST — numbered list with 200px thumb illustrations per row
- P-COMPARE — two-column before/after with 240px illustrations
- P-MECHANISM — vertical pipeline with 130px inline step icons
- P-QUOTE — pull-quote + 420px supporting illustration
- P-ACTION — closing self-check with 200px illustration + options
Read references/layouts.md for which snippet maps to which content shape, and references/components.md for the full type scale. Two hard rules from the reference system: (a) "the larger, the lighter" — display weights are 500, never 700+; (b) body and lead are serif-zh, not sans. Most content pages should pair text + small illustration. Every major generated illustration must be placed as .evidence-figure containing .illust-frame, so it sits natively inside the card instead of floating, shrinking, or sticking to the top. Add task-scoped CSS in the page's <style> only when necessary — do NOT add it back into the seed.
Render:
node <skill-dir>/scripts/render.mjs <task-dir>
- Validate before showing final results. After rendering, run the validator by default unless the user explicitly says "先别跑校验,只看效果" or asks for an intentionally rough visual draft:
node <skill-dir>/scripts/validate.mjs <task-dir>
Fix every FAIL before final delivery. WARN is advisory: report important WARNs briefly, but do not block delivery unless the visual issue is obvious.
- Inspect the final PNGs. Run both image-only and full-page explanation checks, then check generated Chinese text accuracy, factual accuracy, readability, page rhythm, and series consistency. Confirm no publish hashtags or
#... strings appear inside cards or generated images. Show the user the rendered PNGs only after validation and inspection, with absolute paths and a short note summarizing validator status.
Storyboard Contract
Create this shape before image generation:
topic: Token 是什么
audience: AI 初学者
beginner_brief:
prior_knowledge: 会使用聊天类 AI,但不了解模型原理
plain_definition: Token 是 AI 读取和生成文字时使用的小单位
not_this: 它不一定等于一个汉字或一个单词
why_it_matters: 它会影响费用、可处理内容长度和对话记忆
concrete_example: 今天天气真好会被拆成若干小块处理
source_tags:
- AI入门
- ChatGPT
- AI小白
pages:
- id: 1
message: Token 会影响 AI 怎么读文字、花多少钱、能记住多少上下文
role: cover
layout: series-cover
cover:
series_line: 每天吃透一个 AI 知识点
english_term: Token
chinese_explanation: 文字处理单位
user_question: 为什么 AI 聊久了会忘记前面说过什么?
- id: 2
message: Token 是 AI 处理文字的单位
role: concept
visual_type: labeled-gpt-image
metaphor: 一整句话被拆成积木块
layout: annotated-canvas
image_slot:
html_wrapper: evidence-figure landscape
slot_px: 904x603
slot_ratio: 3:2
generator_ar: 4:3
generator_canvas: 1536x1024
subject_bbox: x=120-1416,y=128-896
fit: contain
Hard rules:
- Keep one core message per page.
- Treat user-provided labels/hashtags as
source_tags, not content. Do not place source_tags into page messages, cover copy, footers, captions, image prompts, or generated in-image labels unless the user explicitly asks to design a hashtag page.
- Page 1 of a recurring AI concept series should use the fixed
series-cover layout unless the user asks for another cover format.
- The cover must contain exactly four content units: series line, English technical term, Chinese explanation, and one scenario question.
- Cover typography must be rendered in HTML, not generated into an image.
- The cover's
term-zh must be the Chinese explanation of term-en, not an English subtitle or slogan.
- A core message must be a complete sentence with a subject, mechanism, and consequence. A keyword is not a message.
- Introduce every necessary technical term with plain-language meaning on first appearance.
- For every abstract definition, include at least one concrete example and one "why it matters" consequence in the card set.
- State important boundaries or misconceptions. Avoid teaching an analogy as if it were the literal mechanism.
- Use HTML as the default expression. Use illustrations to explain, not decorate.
- Do not generate an illustration when a comparison, process, ledger, or number communicates better.
- Decide page count from the source content, not from a fixed template. First extract the source's natural message units; use one page per core message. Typical sets are 4-7 pages including the cover. Do not force content into 5 pages, and do not merge or delete necessary causal steps just to hit a target page count.
- Keep long explanations, caveats, prices, dates, and unstable facts out of generated images.
- In
labeled-gpt-image mode, generated images may contain only short exact labels that make the picture self-explanatory.
- Never duplicate the outer HTML title inside the generated illustration. The illustration should explain the mechanism, while the outer card introduces the topic.
- Do not add top metadata/category/page labels by default. Use them only when the user requests an editorial issue system.
- Use enough illustrations to support the natural page count.
- Reserve composition safe zones before generating illustrations.
- Prefer concrete actions over static collections of objects.
- Illustration presence is not success. Every illustration-led page must visibly communicate a causal chain and pass both image-only and full-page explanation checks.
- Generated illustrations explain one decisive visual moment. HTML completes exact causal chains, labels, definitions, and caveats.
- Generate for the final image slot. Do not default every embedded illustration to 3:4.
- Decide the final
image_slot before writing or running any image prompt. Do not generate first and then hunt for a slot that happens to fit.
- Match the generated image's physical canvas to the HTML slot before accepting it. Landscape GPT Image output is normally
1536x1024; use .evidence-figure.landscape or another near-3:2 slot by default so object-fit: contain does not shrink it inside a shallow wide band.
- Every generated illustration prompt must include both a percentage-based composition contract and a pixel margin contract for the actual output canvas.
- Place generated content-page illustrations inside
.evidence-figure landscape|hero|wide|square|portrait|compact; do not use a naked .illust-frame for major illustrations.
- Reuse a textual style anchor across the series. Use the first approved illustration as a reference only when the active generator supports reference images; the default local OpenAI-compatible wrapper does not.
- When using GPT Image 2, visually inspect every generated Chinese label. Regenerate if any label is wrong, fuzzy, cramped, duplicated, or invented.
Required References
- Read
references/visual-routing.md when deciding whether and how to illustrate a page.
- Read
references/beginner-explanation.md before storyboarding or writing card copy.
- Read
references/metaphor-library.md when translating abstract ideas into scenes.
- Read
references/illustration-prompts.md before generating any illustration.
- Read
references/design-system.md before editing the HTML template (typography, spacing, two-layer color logic).
- Read
references/theme-presets.md when choosing an accent palette (default: Indigo Porcelain).
- Read
references/background-systems.md only when setting up sparse-page backgrounds.
- Read
references/layouts.md when selecting page structures (S00-S04).
- Read
references/style-system.md for Editorial identity rules and anti-patterns.
- Read
references/components.md for class names, emphasis patterns, and image containers.
- Read
references/platform-specs.md to confirm the Xiaohongshu 1080×1440 dimension and safe zones.
- Read
references/qa-checklist.md before delivery.
Task Directory
visual-cards/<slug>/
├── source.md
├── storyboard.yaml
├── prompts/
├── assets/
├── index.html
└── output/
Keep prompts and source files so the result can be revised and reproduced.
1---2name: xuanqing-visual-explainer-cards3description: Create illustrated Xiaohongshu/Rednote knowledge-card series that combine GPT Image 2 explanatory illustrations with editorial HTML layout (serif display + IKB Blue structure + Mustard Yellow emphasis). Use when turning abstract concepts, tutorials, AI knowledge, product mechanisms, comparisons, or educational content into clear 3:4 social cards with small in-image Chinese labels, accurate outer typography, reusable layouts, and automated validation. Use this skill whenever the user mentions creating social cards, knowledge posts, visual explanations, educational infographics, Xiaohongshu/Rednote content, or illustrated explainer series — even if they don't explicitly ask for "visual explainer cards."4---56## Dependencies78This skill requires the following to be installed:910| Dependency | Install | Purpose |11|---|---|---|12| Playwright (npm) | Preinstalled by the hosting/deploy environment | Renders HTML to PNG |13| Pillow (Python) | Preinstalled by the hosting/deploy environment | Background normalization for generated illustrations |1415Image generation may use either the host's built-in image tool, such as Codex16`imagegen`, or the user's own OpenAI-compatible image API.1718> `<skill-dir>` in the commands below refers to the directory containing this SKILL.md file.1920---2122# Visual Explainer Cards2324Create social cards that readers understand visually before reading closely.2526This skill is **Editorial-first**: serif display titles (Playfair Display + Noto Serif SC), sans body, mono meta. IKB Klein Blue is the visible system color on every page (chrome, foot, section labels, dividers, page numbers). Mustard Yellow appears exactly once per set, on the cover horizontal bar — nowhere else.2728It pairs that strict typography system with GPT Image 2 illustrations that may carry a small number of exact Chinese labels.2930Default to a hybrid composition:3132- Render the outer card, large titles, body copy, bottom takeaways, page rhythm, and editorial structure in HTML.33- Generate illustrations for most content pages — text leads, illustration explains. Use small, supporting illustrations (160-560px depending on page role), not one full-canvas centerpiece per set.34- Allow only small, high-value in-image labels inside generated illustrations. Keep long explanations and caveats in HTML.35- The cover (S00) is the only fixed layout in the system. Content pages are composed fresh from primitives based on content shape — do not invent named "S01/S02/S03" templates and force pages into them.3637## Core Workflow38390. Verify dependencies are ready:40 ```bash41 python3 -c "import PIL" 2>/dev/null || echo "ERROR: Pillow missing; stop and report dependency_setup_required"42 node -e "require('playwright')" 2>/dev/null || echo "ERROR: Playwright missing; stop and report dependency_setup_required"43 test -n "$OPENAI_API_KEY$ZENMUX_API_KEY" || echo "INFO: use the host image tool or configure your own image API before generation"44 ```45 If a dependency is unavailable, report it and stop before generating images.46471. Read the source and verify unstable facts when necessary.482. Split the source into `content_source` and `publish_metadata` before storyboarding. Lines under `标签:` / `Tags:` / `Hashtags:` and standalone hashtag lines such as `#AI学习 #TTS` are publish metadata only. They must not become page messages, cover text, footer text, illustration labels, captions, or generated-image prompt text.493. Build a beginner explanation brief using `references/beginner-explanation.md`. Do not begin layout work until the concept can be explained without jargon.504. Create `storyboard.yaml` before designing. Give each page one message and one visual role. Keep user-provided hashtags under `source_tags`, outside `pages`.515. For recurring AI knowledge series, make page 1 a fixed `series-cover`: series line, English term, Chinese explanation, and one user-scenario question. Do not generate a cover illustration unless the user explicitly asks.526. Add a page-rhythm plan before coding: first list the source's natural message units and resulting page count, then list each content page's silhouette and evidence type. Use varied silhouettes after the cover; in longer sets, avoid repeating the same page shape back to back.537. Route each content page using `references/visual-routing.md`.548. The cover (page 1) uses the fixed S00 layout in `references/layouts.md`. For pages 2 onwards, do NOT pick a pre-named recipe — read `references/layouts.md` to choose a layout pattern based on the content shape, and compose the page fresh from primitives.559. For every illustration-led page, define `image_slot` before writing any image prompt. The slot must state the final HTML wrapper, slot dimensions, slot ratio, generator aspect ratio, expected output canvas, and subject bounding box. Use `references/illustration-prompts.md` as the slot registry.5610. Use `labeled-gpt-image` for every generated illustration. Every illustration must carry a small set of high-value labels rendered directly by the image model.5711. Write a compact GPT Image 2 prompt derived from `image_slot`, with only the short in-image labels needed to explain the picture and no duplicate card title. Never include `source_tags` or any text beginning with `#`.5812. Choose one image route for the task. Do not silently switch routes after generation begins.5960For a host image tool such as Codex `imagegen`, pass it the exact prompt, save61the returned PNG at the storyboard output path, then record deterministic62provenance without inventing provider usage:6364```bash65python3 <skill-dir>/scripts/generate-illustration.py \66 --import-tool-image \67 --prompt-file prompts/page-02.md \68 --output assets/page-02.png \69 --orientation landscape \70 --size 1536x1024 \71 --quality high \72 --provider codex-imagegen \73 --model host-managed-imagegen74```7576For the user's own OpenAI-compatible image API, configure77`OPENAI_API_KEY`, `OPENAI_BASE_URL`, and `OPENAI_IMAGE_MODEL`, then run the78same script without `--import-tool-image`:7980```bash81python3 <skill-dir>/scripts/generate-illustration.py \82 --prompt-file prompts/page-02.md \83 --output assets/page-02.png \84 --orientation landscape \85 --size 1536x1024 \86 --quality high87```888913. Keep default paper-background normalization and conservative `auto-frame`.90Use `--remove-background` only for isolated cutouts,91`--skip-background-normalize` only for intentional scene backgrounds, and92`--no-auto-frame` only when large blank space is deliberate. The API route93preserves provider usage when the endpoint returns it. Require usage sidecars94only when exact API accounting is part of the task.959614. Copy `assets/template.html` into the task directory as `index.html`. The template is an Editorial seed (Indigo Porcelain default) with serif display fonts, IKB Blue as the visible system color, and ONE fixed layout: the S00 Series Cover. Switch `data-accent` on `<html>` to change palette (`indigo-porcelain` | `lemon-yellow` | `lemon-green` | `safety-orange`). The alt accents collapse to single-color (no separate highlight) — only Indigo Porcelain carries the cover-bar yellow.9715. Keep the cover (S00) structure verbatim, replacing only the placeholders. For content pages, **copy a named snippet from the bottom of `assets/template.html`** as your starting point and adjust:98 - **P-METAPHOR** — concept + large 540px illustration99 - **P-LIST** — numbered list with 200px thumb illustrations per row100 - **P-COMPARE** — two-column before/after with 240px illustrations101 - **P-MECHANISM** — vertical pipeline with 130px inline step icons102 - **P-QUOTE** — pull-quote + 420px supporting illustration103 - **P-ACTION** — closing self-check with 200px illustration + options104105 Read `references/layouts.md` for which snippet maps to which content shape, and `references/components.md` for the full type scale. Two hard rules from the reference system: **(a) "the larger, the lighter"** — display weights are 500, never 700+; **(b) body and lead are serif-zh, not sans**. Most content pages should pair text + small illustration. Every major generated illustration must be placed as `.evidence-figure` containing `.illust-frame`, so it sits natively inside the card instead of floating, shrinking, or sticking to the top. Add task-scoped CSS in the page's `<style>` only when necessary — do NOT add it back into the seed.10616. Render:107108```bash109node <skill-dir>/scripts/render.mjs <task-dir>110```11111217. **Validate before showing final results.** After rendering, run the validator by default unless the user explicitly says "先别跑校验,只看效果" or asks for an intentionally rough visual draft:113114```bash115node <skill-dir>/scripts/validate.mjs <task-dir>116```117118Fix every FAIL before final delivery. WARN is advisory: report important WARNs briefly, but do not block delivery unless the visual issue is obvious.11912018. Inspect the final PNGs. Run both image-only and full-page explanation checks, then check generated Chinese text accuracy, factual accuracy, readability, page rhythm, and series consistency. Confirm no publish hashtags or `#...` strings appear inside cards or generated images. Show the user the rendered PNGs only after validation and inspection, with absolute paths and a short note summarizing validator status.121122## Storyboard Contract123124Create this shape before image generation:125126```yaml127topic: Token 是什么128audience: AI 初学者129beginner_brief:130 prior_knowledge: 会使用聊天类 AI,但不了解模型原理131 plain_definition: Token 是 AI 读取和生成文字时使用的小单位132 not_this: 它不一定等于一个汉字或一个单词133 why_it_matters: 它会影响费用、可处理内容长度和对话记忆134 concrete_example: 今天天气真好会被拆成若干小块处理135source_tags:136 - AI入门137 - ChatGPT138 - AI小白139pages:140 - id: 1141 message: Token 会影响 AI 怎么读文字、花多少钱、能记住多少上下文142 role: cover143 layout: series-cover144 cover:145 series_line: 每天吃透一个 AI 知识点146 english_term: Token147 chinese_explanation: 文字处理单位148 user_question: 为什么 AI 聊久了会忘记前面说过什么?149 - id: 2150 message: Token 是 AI 处理文字的单位151 role: concept152 visual_type: labeled-gpt-image153 metaphor: 一整句话被拆成积木块154 layout: annotated-canvas155 image_slot:156 html_wrapper: evidence-figure landscape157 slot_px: 904x603158 slot_ratio: 3:2159 generator_ar: 4:3160 generator_canvas: 1536x1024161 subject_bbox: x=120-1416,y=128-896162 fit: contain163```164165Hard rules:166167- Keep one core message per page.168- Treat user-provided labels/hashtags as `source_tags`, not content. Do not place `source_tags` into page messages, cover copy, footers, captions, image prompts, or generated in-image labels unless the user explicitly asks to design a hashtag page.169- Page 1 of a recurring AI concept series should use the fixed `series-cover` layout unless the user asks for another cover format.170- The cover must contain exactly four content units: series line, English technical term, Chinese explanation, and one scenario question.171- Cover typography must be rendered in HTML, not generated into an image.172- The cover's `term-zh` must be the Chinese explanation of `term-en`, not an English subtitle or slogan.173- A core message must be a complete sentence with a subject, mechanism, and consequence. A keyword is not a message.174- Introduce every necessary technical term with plain-language meaning on first appearance.175- For every abstract definition, include at least one concrete example and one "why it matters" consequence in the card set.176- State important boundaries or misconceptions. Avoid teaching an analogy as if it were the literal mechanism.177- Use HTML as the default expression. Use illustrations to explain, not decorate.178- Do not generate an illustration when a comparison, process, ledger, or number communicates better.179- Decide page count from the source content, not from a fixed template. First extract the source's natural message units; use one page per core message. Typical sets are 4-7 pages including the cover. Do not force content into 5 pages, and do not merge or delete necessary causal steps just to hit a target page count.180- Keep long explanations, caveats, prices, dates, and unstable facts out of generated images.181- In `labeled-gpt-image` mode, generated images may contain only short exact labels that make the picture self-explanatory.182- Never duplicate the outer HTML title inside the generated illustration. The illustration should explain the mechanism, while the outer card introduces the topic.183- Do not add top metadata/category/page labels by default. Use them only when the user requests an editorial issue system.184- Use enough illustrations to support the natural page count.185- Reserve composition safe zones before generating illustrations.186- Prefer concrete actions over static collections of objects.187- Illustration presence is not success. Every illustration-led page must visibly communicate a causal chain and pass both image-only and full-page explanation checks.188- Generated illustrations explain one decisive visual moment. HTML completes exact causal chains, labels, definitions, and caveats.189- Generate for the final image slot. Do not default every embedded illustration to 3:4.190- Decide the final `image_slot` before writing or running any image prompt. Do not generate first and then hunt for a slot that happens to fit.191- Match the generated image's physical canvas to the HTML slot before accepting it. Landscape GPT Image output is normally `1536x1024`; use `.evidence-figure.landscape` or another near-3:2 slot by default so `object-fit: contain` does not shrink it inside a shallow wide band.192- Every generated illustration prompt must include both a percentage-based composition contract and a pixel margin contract for the actual output canvas.193- Place generated content-page illustrations inside `.evidence-figure landscape|hero|wide|square|portrait|compact`; do not use a naked `.illust-frame` for major illustrations.194- Reuse a textual style anchor across the series. Use the first approved illustration as a reference only when the active generator supports reference images; the default local OpenAI-compatible wrapper does not.195- When using GPT Image 2, visually inspect every generated Chinese label. Regenerate if any label is wrong, fuzzy, cramped, duplicated, or invented.196197## Required References198199- Read `references/visual-routing.md` when deciding whether and how to illustrate a page.200- Read `references/beginner-explanation.md` before storyboarding or writing card copy.201- Read `references/metaphor-library.md` when translating abstract ideas into scenes.202- Read `references/illustration-prompts.md` before generating any illustration.203- Read `references/design-system.md` before editing the HTML template (typography, spacing, two-layer color logic).204- Read `references/theme-presets.md` when choosing an accent palette (default: Indigo Porcelain).205- Read `references/background-systems.md` only when setting up sparse-page backgrounds.206- Read `references/layouts.md` when selecting page structures (S00-S04).207- Read `references/style-system.md` for Editorial identity rules and anti-patterns.208- Read `references/components.md` for class names, emphasis patterns, and image containers.209- Read `references/platform-specs.md` to confirm the Xiaohongshu 1080×1440 dimension and safe zones.210- Read `references/qa-checklist.md` before delivery.211212## Task Directory213214```text215visual-cards/<slug>/216├── source.md217├── storyboard.yaml218├── prompts/219├── assets/220├── index.html221└── output/222```223224Keep prompts and source files so the result can be revised and reproduced.