Keep character identity, content, layout, and emotion assets separate; changing the story does not mean redesigning the character.
Choose a workflow
- The user already has an active character pack: read the character identity and required anchors, then proceed to "Content Translation."
- The user has no character pack: proceed to "First-Time Character Lock," confirm and register the identity, then produce the official comic.
- The user requests an identity change: modify only the 1–2 identity axes the user points out, and after candidate confirmation, register the new version.
- The user requests an emotion or shot type for long-term reuse: generate it separately, and after confirmation register it as
emotionoranchor。 - The user only needs a Prompt or currently has no image-generation tool: deliver the complete Prompt, and do not create fake images, fake lists, or fake visual inspection records.
Always read Style and Identity System. When processing content, also read Two-Panel Translation、Expressions and Backgrounds and Actions and Hand Ends. When creating or maintaining a character pack, read Character Asset Protocol。
Two stacked panels is the default output contract; if the user explicitly requests a single panel or another layout while still retaining the white soft-blob system, continue using this Skill and follow the user's layout.
First-Time Character Lock
Search the current project for .white-block-comic/config.json. When there is no active character:
- Read the character description or reference images provided by the user, and extract only identity features unrelated to the story.
- When the user provides no description, use minimal assumptions to create a new neutral candidate; do not invoke built-in author characters, signature assets, or fixed face templates.
- Generate a standalone identity setting sheet, without story, two-panel copy, or complex props.
- Check the silhouette, body connections, identity features, and text contamination, then wait for explicit user confirmation.
- After confirmation, use the script to initialize the character pack, register the identity, and set the active character.
An unconfirmed candidate must not be registered as adopted. Even if the user asks to draw the story directly, the first-time identity confirmation must not be skipped; this threshold prevents character drift when the story changes.
Content Translation
- Protect the facts, attitudes, character relationships, and non-rewritable sentences in the user's original text.
- Extract one visualizable core:
生活判断 + 情绪摩擦 + 荒诞反转。 - The top panel establishes common sense, a wish, a problem, or a surface state; the bottom panel closes with self-mockery, a bodily metaphor, or an absurd consequence.
- Split long content into multiple two-panel images; do not cram all information into one.
- Place only one accurate passage of text at the top of each panel, usually 1–2 lines; for non-rewritable long copy, prioritize accuracy first, then wrap lines or split images.
By default, do not add a third panel, page numbers, extra titles, empty speech bubbles, signatures, watermarks, or author names. When visible interaction requires a second character, first clarify the second character's identity; do not copy, merge, or arbitrarily deform the active character.
Generation and Inspection
Assemble the complete Prompt, and make explicit:
- 3:4 portrait orientation, two stacked panels of roughly equal area; in each panel, text on top and image below.
- Use the active identity; only overlay the corresponding anchor in close-up shots, and emotion assets only control their corresponding state.
- Plan the shot scale first; at least one panel may use a bust shot, waist crop, partial close-up, or a large action that naturally breaks the frame.
- Express abstract meaning through body deformation, action, props, and space, not through floating decorative symbols.
- The background is a scene slice that can support the action; each panel contains a bearing surface the character contacts and one spatial anchor cropped by the frame.
- Line thickness is uneven, with slight hand tremor, blunt bends, and a few breaks; background and character share the same hand-drawn medium.
- Write in the copy for each panel character by character, and prohibit any other text, signature, watermark, or corner mark.
After generation, check: text, layout, character identity, body connections, expression, action force, hand ends, scene relationships, and extraneous text. Obvious failures may only be kept as candidates or failure records, and must not be registered as formal assets or delivered as a satisfactory version.
Character assets
Project state is fixed and saved in .white-block-comic/, and must not be written into the Skill installation directory. Character pack creation, asset registration, activation, and verification respectively use:
scripts/init_character_pack.pyscripts/register_character_asset.pyscripts/set_active_character.pyscripts/validate_character_pack.py
Each formal identity, anchor, or emotion must be saved with an independent PNG, the complete Prompt actually used, SHA-256, dimensions, version number, and user confirmation note. New versions keep the old files and do not overwrite them.
Output boundaries
- With an image generation tool: generate, check, then decide whether to register based on the user-confirmed state.
- Prompt only: return the per-panel copy, visual action, and complete generation Prompt, and clearly state "not yet generated or registered".
- Tool failure: save or return the original Prompt and the real error, and do not alter wording and retry without authorization.
- Ordinary content feedback does not automatically modify this Skill; only when the user explicitly requests a Skill update should the true source be modified and regression run.
Do not use this Skill for unrelated visual styles, ordinary photo edits, photorealistic portraits, or analysis-only requests.
Trigger boundaries and reproducible cases are located in evals/; after modifying the description, first-time character flow, or content compilation rules, run the corresponding evaluation.