Install
$ agentstack add skill-tranfu-labs-tranfu-skills-post-illustration-images ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
Post Illustration Images
Core Rule
Do not reduce this workflow to "analyze content -> choose template -> generate image". Stability depends on the middle layers:
content analysis
-> content type and expression need
-> suite-level style_spec
-> anchor selection
-> shot list
-> per-image content structure
-> per-image visual metaphor
-> selected visual style constraints
-> top-right brand slot reservation unless the user explicitly disables branding
-> single-image prompt without model-drawn brand or page badge
-> native Codex image generation
-> default Brand Plugin overlay using the selected style_spec slot
-> QA and fallback
-> saved assets and delivery notes
This is the mental model; the actual runnable steps are the numbered Workflow sections below.
Always read the content before choosing a visual style. Use one suite-level style for the whole image set. Vary each image only through its content structure and visual metaphor.
Ownership: edit files in the user's project output folder only. This skill creates or updates post-illustration-output// and never writes generated assets into the skill folder. Do not overwrite an existing manifest.md, prompt, or image unless the user explicitly asks to replace it or the current run owns that file.
Named artifact: PostIllustrationBundle = { output_dir, manifest.md, shot-list.md, prompts/*.md, images/(branded|unbranded|direct)/*.png, final_response_summary }.
Terminology:
style_id: the stable ID fromreferences/style-index.md, for examplewechat-doodle.style_file: the selected human-readable Markdown style file underreferences/styles/.style_spec: the selected machine-readable.spec.json; required for every supported production style because it owns the default brand geometry.style_reference: the QA-only reference image listed inreferences/style-index.md.selected_style_bundle:{ style_id, platform, style_file, style_spec, style_reference?, brand_slot_enabled }.
Architecture Boundary
style_spec is the authority for each platform visual template. It controls canvas size, aspect ratio, fixed color values, layout, safe areas, negative constraints, and any fixed component slots such as a brand slot.
style_reference images are long-lived QA baselines for failure review. They show the expected visual presentation of a style, but they are not generation inputs and their semantic content must never be copied into new images. Whether a reference image contains a watermark, and where that watermark appears, never controls production branding.
Brand Plugin is default-on and user-disableable. It decides whether the user explicitly disabled branding and which brand asset to use. It MUST NOT decide canvas size, color palette, coordinates, or platform layout. Priority: user-explicit-disable > default enabled. Every production style_spec MUST define an enabled top-right brandSlot; when branding is not explicitly disabled, a missing or disabled slot is a blocking configuration error rather than permission to deliver an unbranded image.
The image model MUST NOT draw logos, TF, Tranfu, watermarks, page-number badges, placeholder frames, reserve boxes, or other fixed brand components. Those are either omitted or added after generation by a deterministic overlay step. If the user explicitly requests model-drawn brand text or inline logo simulation, state the QA risk and ask for confirmation before proceeding.
Supported Scope
Strong support:
- WeChat official account body illustrations.
- Xiaohongshu note illustrations, including cover/content carousel images.
- Zhihu post illustrations.
- Method, workflow, concept, comparison, checklist, boundary, and decision-flow explainers.
Conditional support:
- Image sets requiring real product screenshots or factual data: require user-provided material. State assumptions only for non-factual illustrative placeholders.
- Explicit style names: use the matching
style_idorstyle_fileonly if it exists inreferences/style-index.md; unknown styles require user confirmation before fallback. - Explicit image count: treat it as a target or ceiling after anchor selection. Anchor quality wins; never create filler images to satisfy a quota.
Out of scope:
- Pure photography, portrait retouching, product mockups, or photorealistic brand campaigns.
- Tasks where exact long text inside images is mandatory. Native image generation may distort text; use short labels and retry with less text if needed.
- Any request to route through other image-generation skills unless the user explicitly asks for them.
Required References
Use references by need, not all at once:
- Start with
references/style-index.mdto identify platform and candidate style files. - Read the selected file under
references/styles/completely before compiling prompts. - Read
references/brand.mdunless the user explicitly disables the Brand Plugin. - Read
references/content-structures.mdwhen selecting per-image expression structures. - Read
references/prompt-compiler.mdbefore writing final generation prompts. - Read
references/qa-checklist.mdbefore delivery or regeneration. - When QA finds style drift or a regeneration is needed, inspect the selected
style_referencefromreferences/style-index.mdand the selectedstyle_spec. - Read
references/product-design.mdonly when maintaining or extending this skill.
Resolve references/, assets/, and scripts/ from the skill root. User source content and generated outputs are project-relative or absolute user paths. Deterministic commands should be run from the skill root, for example cd && node scripts/check-rsvg-convert.mjs.
Workflow
MUST create and update a task list for the tasks below: Intake, Content Analysis, Select Suite-Level Style Spec, Select Anchors, Build Shot List, Compile Prompts, Generate One Image At A Time, Continue Existing Assets when used, Apply Default Brand Plugin Overlay unless explicitly disabled, QA And Fallback, Save And Deliver.
1. Intake
- Collect
IntakeContextfields:
platform: one ofwechat,xhs,zhihu, orunknown.source_content: pasted text, file path, URL content already fetched into the conversation, or user-provided notes.requested_output: body illustration, cover, carousel, continuation, overlay-only, or unknown.style_id: explicit style ID ornull.count: positive integer ornull.output_dir: user-provided path or defaultpost-illustration-output//.brand_disabled: boolean, defaultfalse; set it totrueonly when the user explicitly requests no watermark, no logo, or no Tranfu branding.
- If
source_contentis missing, ask for the article/note/post content and stop this run until it is provided.
- If
platformisunknown, ask one concise platform question. If the user mentions multiple platforms, split the work into onePostIllustrationBundleper platform unless they ask for only one shared draft.
- If
style_idandplatformconflict, orcountconflicts with a platform format, ask one concise question before selecting style.
- Produce
IntakeContextand enter Section 2.
Exit when:
platformis in{wechat, xhs, zhihu}.source_contentis non-empty or references an existing readable file path.output_dir,requested_output,style_id, andcountare explicitly set to a value ornull, andbrand_disabledis explicitly set totrueorfalse.
2. Content Analysis
- Read the full source content.
- Write
AnalysisSummarywith:
main_line: 3-5 sentences.core_claim: one sentence.audience_value: one sentence.expression_need: one value from the list below.anchor_candidates: at least one visualizable content point.
Allowed expression_need values:
- Concept explanation
- Workflow/process
- Before-after comparison
- Layered framework
- Common mistakes or boundaries
- Decision tree
- Checklist or summary
- Story/state transition
Exit when AnalysisSummary.main_line, core_claim, audience_value, expression_need, and anchor_candidates[] are written.
3. Select Suite-Level Style Spec
- Read
references/style-index.md. - If the user provided
style_idand it is not listed, show available candidates for the platform and ask the user to choose or approve automatic selection. - If no style is specified, select the best
style_idforplatformandAnalysisSummary.expression_need. - Read the selected
style_filecompletely. - Read the selected
style_specbefore building the shot list. Ifstyle_fileorstyle_specis missing or unreadable, stop before Section 4 and report the missing path. - Set
selected_style_bundle = { style_id, platform, style_file, style_spec, style_reference?, brand_slot_enabled }. - If
brand_disabledis false, validate that the selectedstyle_specdefines an enabled top-rightbrandSlot. If it does not, stop asBLOCKER: required production brand slot unavailable. - Compute
brand_enabled = !brand_disabled. Production branding does not depend on whether the Style Reference contains a watermark. - Happy path order is: select and read
style_file/style_spec-> validate the default brand slot -> determinebrand_enabled-> runrsvg-convertchecks only whenbrand_enabledis true. - If
brand_enabledis true, runcd && node scripts/check-rsvg-convert.mjs:
- If installed, continue.
- If missing, ask whether to install the command shown by the script. Do not install without approval.
- If the user declines or does not approve installation, deliver unbranded only when they explicitly disable branding; otherwise stop as
BLOCKER: required brand overlay unavailable. - After an approved install attempt, run
cd && node scripts/check-rsvg-convert.mjs --record-attempt. - If the second recorded check still fails, show the manual install command and stop as
BLOCKER: required brand overlay unavailable, unless the user explicitly disables branding.
Rules:
- Otherwise choose the best platform style based on content type and expression need.
- Do not decide image count, aspect ratio, palette, safe area, or fixed component slots before selecting the style. These come from the selected
style_fileorstyle_specunless the user explicitly overrides them. - For Zhihu, use the fixed Zhihu style unless future style files add alternatives.
Exit when selected_style_bundle and brand_enabled are set, and the selected style_file plus any required style_spec have been read.
4. Select Anchors
Choose only the content points that deserve images. Explicit count is a target or ceiling, not permission to invent filler. If count is lower than viable anchors, select the top count. If count is higher than viable anchors, ask once whether to deliver fewer justified images or provide more content; otherwise deliver only justified anchors and note the mismatch.
Good anchors include:
- Core judgment
- Cognitive turn
- Input-output loop
- Before-after contrast
- Common mistake
- Process breakpoint
- Role/state change
- Method layer
- Trust, conversion, or handoff relationship
Exit when each selected anchor has { anchor_id, source_excerpt, rationale, priority }, every rationale is non-empty, and selected anchor count is within the explicit count or selected style default.
5. Build Shot List
The shot list is mandatory. If style_spec has not been read, return to Section 3 before writing the shot list. shot-list.md MUST use this markdown bullet order for each image:
- Placement or sequence
- Topic
- One core meaning
- Content expression structure
- Visual metaphor
- Main actor/object action
- Suggested elements
- Short labels
- Fixed component reservations from the selected
style_spec, including the default top-right brand slot unless explicitly disabled - QA risk
Each image MUST express exactly one core idea. If one image contains multiple ideas, split or delete. Save the finalized shot list to shot-list.md in the output folder before generating images.
GOOD:
- Placement or sequence: 01-cover
- Topic: Why the handoff between draft and visual matters
- One core meaning: A clear anchor prevents decorative filler.
- Content expression structure: Before-after comparison
- Visual metaphor: A messy note stack becomes one labeled storyboard frame.
- Main actor/object action: A hand moves one highlighted note into a clean frame.
- Suggested elements: notes, frame, arrow, small checklist marks
- Short labels: "before", "anchor", "image"
- Fixed component reservations from the selected `style_spec`: top-right brand slot from selected `style_spec`, no important content there
- QA risk: model may add extra labels or draw a fake logo
WRONG:
- One core meaning: Explain the workflow, list all mistakes, and sell the brand.
Reason: one image carries multiple core ideas. Split into separate anchors or delete lower-priority ideas.
6. Compile Prompts
For each image, combine:
- User content anchor
- Selected
style_file - Per-image content structure
- Per-image visual metaphor
style_specsafe areas and fixed component reservations- Brand Plugin status from
references/brand.md - Native Codex generation constraints
- Negative constraints from the style and QA references
MUST compile and generate one prompt per image. NEVER ask the image model to create an entire multi-image set in one call. Save each final single-image prompt under prompts/, for example prompts/01-cover.md, before calling native image generation.
If a style file contains batch language such as "generate the whole set", MUST treat it as planning guidance only. MUST compile and generate one image at a time.
The prompt MUST explicitly forbid model-drawn logos, TF, Tranfu, watermarks, page-number badges, placeholder frames, reserve boxes, and visible brand-slot markers. When Brand Plugin is enabled, ask the model to keep the selected style_spec brand slot free of important content so the real brand asset can be overlaid after generation. MUST NOT ask the model to visibly "reserve" or "mark" the slot.
WRONG:
Generate a five-image Xiaohongshu carousel and put the Tranfu logo in the corner of each page.
Reason: this asks for a batch output and model-drawn branding.
GOOD:
Create image 01-cover only for the selected style_id xhs-explainer-notebook. Use the selected style_file visual system and selected style_spec canvas/safe areas. Core meaning: a clear anchor prevents decorative filler. Visual metaphor: a messy note stack becomes one labeled storyboard frame. Keep text to short labels only: before, anchor, image. Leave the style_spec brand slot free of important content, but do not draw, reserve, mark, frame, or label that slot. Negative constraints: no logo, no TF, no Tranfu, no watermark, no page badge, no placeholder frame, no reserve box, no copied semantic content from the style_reference.
WRONG:
Copy the example reference image but change the words.
Reason: style_reference is QA-only; semantic content from reference images must not be copied.
WRONG:
Draw an empty dashed rectangle labeled "logo area" in the top-right corner.
Reason: visible brand-slot markers and reserve boxes are fixed components, not image-model content.
GOOD:
Keep important content away from the selected style_spec brand slot. Do not draw, label, outline, reserve, or mark the slot.
WRONG:
Put this complete paragraph inside the image: "Our new method first parses the article, then builds a reusable abstraction layer, then optimizes every downstream interaction for clarity and conversion."
Reason: exact long text inside generated images is unreliable and out of scope.
GOOD:
Use at most three short labels: parse, anchor, image.
7. Generat
…
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: tranfu-labs
- Source: tranfu-labs/tranfu-skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.