| name | douip-illustrations |
| description | Use this skill whenever the user wants DouKnowAI (豆懂AI) branded illustrations or visual assets for Chinese knowledge content, even when they only say “配图”“把这段画清楚”“统一成我的IP风格”, or mention公众号、小红书、博客、GitHub README、课程讲义、组会汇报、周报、Agent/Skill/MCP/Coze工作流、教育科技、学术研究、产品项目、3D/Three.js项目说明或个人成长内容. It plans shot lists, creates or edits standalone images, preserves the canonical orange coffee-bean IP, adapts ratios by platform, validates quality, and packages delivery assets. Do not use for full PPT/Word/网页/UI production, formal scientific charts or exact architecture diagrams, generic logo design, photo retouching, 3D model generation, or unrelated image requests unless a DouKnowAI (豆懂AI) branded editorial illustration asset is specifically needed. |
| license | MIT. See LICENSE and THIRD_PARTY_NOTICES.md. |
| compatibility | Portable Agent Skills skill for Claude Code, OpenAI Codex, OpenCode and compatible clients. Image creation/editing requires an available image tool; planning and prompt-only delivery work without one. Python 3.10+ is optional for scaffolding, validation and packaging. |
| metadata | {"author":"DouKnowAI / 豆懂AI","version":"2.1.0","source":"helloianneo/ian-xiaohei-illustrations"} |
DouKnowAI (豆懂AI) 品牌配图
Goal
Turn one important idea from the user's work or life content into one memorable, restrained editorial illustration. Keep the DouKnowAI (豆懂AI) orange coffee-bean character visually stable and make it perform the conceptual action rather than decorate the page.
Resolve the skill root
Treat the parent directory of this SKILL.md as SKILL_ROOT. Resolve every bundled path against SKILL_ROOT; use absolute paths in tool calls.
Route the request
Choose exactly one primary mode:
| Mode | User intent | Action |
|---|
plan | “哪里需要配图”“先出方案” | Produce a shot list only |
generate | “生成/做几张配图” | Plan internally, then generate each image separately |
single-concept | One sentence, concept or metaphor | Produce one focused image |
edit | Change an existing image | Modify only requested regions; preserve everything else |
series | A consistent multi-image set | Lock one baseline image, then produce the remaining images with the same reference |
repurpose | Convert one idea across platforms | Recompose for each ratio; do not merely crop |
package | User asks for organized assets/ZIP | Create the delivery workspace, validate it, then package |
Read agent-routing.md when the request is ambiguous, competes with another skill, or mentions PPT, diagrams, UI, 3D, charts, logos, photos, or full-page design.
Select a scenario profile
Map the request to one scenario before planning:
self-media: 公众号、博客、小红书、社交内容、个人知识品牌。
teaching-training: AI通识课、内部培训、讲义、课程插图、直播投屏素材。
academic-research: 研究问题、方法机制、实验逻辑、组会或论文传播配图。
agent-engineering: Agent、Skill、MCP、Harness、Workflow、Coze、Codex、OpenCode、Vibe Coding。
open-source-product: GitHub README、项目功能、开发阶段、部署与产品说明。
interactive-3d: Three.js、3D展馆、交互HTML、多模态创作工具的概念和流程说明。
work-report: 周报、复盘、会议、方案汇报中的观点型插图。
personal-growth: 学习、效率、知识管理、信息焦虑、职业成长和生活反思。
Read scenario-profiles.md for the selected scenario only.
Determine tool capability
Before promising image output, determine what the current agent can actually do:
- Image generation/editing available: use the image tool and the canonical reference image.
- Only text/file tools available: deliver shot list + production-ready prompts + workspace; do not claim images were generated.
- Vision review available: inspect every generated image against the QA rubric.
- No vision review: run structural/file checks and clearly mark visual QA as pending human review.
Reference image capability is the single most important factor. Edit mode with a reference image is the default path for stable IP identity. Generate-only (text-only prompt) will drift on logo-level geometry — treat it as draft-only, not for serious brand output.
Before any edit call, probe the endpoint with a real curl request:
curl -X POST "$EDIT_ENDPOINT" \
-H "Authorization: Bearer $KEY" \
-F "model=$MODEL" -F "prompt=test" \
-F "image=@main.jpg" -F "reference_image=@ip-ref.png"
Read the HTTP status and error message wording before committing to a full run. Different relays accept different field names (image / image[] / reference_image); different models support different reference image counts. Field-name probing and model-capability probing are separate steps — see tool-strategy.md.
Read tool-strategy.md when tool availability is uncertain or multiple image tools compete.
Load only what the task needs
Always read:
Then read only the relevant references:
Execute
1. Extract the cognitive anchor
Identify the single judgment, transition, process, state change or relationship the image must clarify. Skip paragraphs that are already concrete or do not benefit from visual explanation.
2. Write the visual brief
Define:
- core idea in one sentence;
- one structural pattern;
- one physical metaphor;
- the decisive action performed by the DouKnowAI (豆懂AI) IP;
- 1–3 main objects;
- 0–6 short Chinese labels;
- target platform and aspect ratio;
- identity and text risks.
For planning-only tasks, use the exact schema in shot-list-schema.md.
3. Lock the character
Use assets/ip/doudong-ai-ip-transparent.png as the canonical reference whenever the image tool accepts references. Use the user's newest uploaded IP image instead when they explicitly provide a replacement.
Locking is an action, not a wish. "Passing the reference image" means a concrete API call where the IP image is attached as a form field alongside the main canvas. In edit mode:
- main canvas →
image field (the image being edited)
- IP reference →
reference_image (or image[] depending on the relay's convention — probe first)
In generate mode without reference image support, locking degrades to text-only — repeat all five invariants in the prompt verbatim and accept that IP drift is now expected. Treat generate-only output as a draft pending an edit pass.
Preserve these invariants:
- irregular orange bean/logo silhouette;
- one curved top sprout;
- enclosed white inner face;
- two vertical orange oval eyes and no default mouth;
- thin arms, hands, legs and feet in exactly the same orange as the body.
Do not add clothes, glasses, headphones, shoes, blush, shiny eyes or extra facial features unless the user explicitly requests them.
4. Generate or edit
- Generate one image per tool call; do not use a collage to simulate a series.
- For a series, approve one baseline image before deriving the rest.
- Reuse the same canonical reference on every call, not only the first.
- Prefer image generation without text when exact Chinese typography is nonessential; add text later with a deterministic layout tool when available.
- For edits, state exactly what changes and what must remain unchanged.
- For platform repurposing, rebuild the composition for the new ratio rather than center-cropping.
Use prompt-protocol.md to assemble the prompt.
5. Review and recover
Score the image with qa-checklist.md. Do not deliver when:
- IP identity score is below the mandatory threshold;
- limbs are not the same orange as the body;
- the character is removable without changing the idea;
- the result looks like a PPT page, commercial KV or generic AI-tech graphic;
- Chinese text contains multiple errors;
- sensitive names, contacts, tokens or private project details appear unintentionally.
Apply failure-recovery.md and regenerate or edit once the failure cause is identified.
6. Create a delivery workspace when needed
For multi-image tasks, persistent projects or ZIP delivery, run:
python "$SKILL_ROOT/scripts/create_job.py" \
--slug <project-slug> \
--scenario <scenario> \
--platform <platform> \
--count <expected-count> \
--output-root outputs/douip-illustrations
Store outputs outside the skill directory:
outputs/douip-illustrations/<project-slug>/
├── README.md
├── brief.json
├── shot-list.json
├── prompts/
├── images/raw/
├── images/
├── qa/qa-report.md
└── manifest.json
Validate the delivery before packaging:
python "$SKILL_ROOT/scripts/validate_delivery.py" \
outputs/douip-illustrations/<project-slug>
7. Clean intermediates after delivery
For everyday illustration tasks, the project workspace (brief.json, shot-list.json, prompts/, qa/, images/raw/) is just scaffolding — the only deliverables are the QA-approved images at the images/ top level. Cleanup is the default: running the script removes intermediates immediately, no confirmation prompt.
Workflow convention:
images/raw/ — raw output from generate/edit calls (unverified)
images/ (top-level files) — QA-approved final deliverables
python "$SKILL_ROOT/scripts/clean_intermediates.py" \
outputs/douip-illustrations/<project-slug>
python "$SKILL_ROOT/scripts/clean_intermediates.py" \
outputs/douip-illustrations/<project-slug> --dry-run
python "$SKILL_ROOT/scripts/clean_intermediates.py" \
outputs/douip-illustrations/<project-slug> --keep
What it removes by default: README.md, brief.json, shot-list.json, manifest.json, prompts/, qa/, images/raw/.
What it keeps: images/*.* (top-level deliverables) only.
Safety: refuses to run on directories without images/, so it can't accidentally clean arbitrary folders. Always run validate_delivery.py before cleaning — once cleaned, validation can no longer pass (REQUIRED files are gone). For projects that need full provenance (QA reports, briefs, shot lists), pass --keep or simply don't run the cleaner.
Output rules
plan: return the shot list and no generation claim.
generate/single-concept/edit/series/repurpose: return actual image paths when images exist; otherwise return prompts and state that image execution is unavailable.
package: return a ZIP path, manifest, image count, ratios, QA status and unresolved risks.
- Never place generated project outputs inside
SKILL_ROOT.
- Never claim visual QA was completed without viewing the images.