
baoyu-comic generates original educational comics from markdown content with customizable art styles (ligne-claire, manga, realistic, ink-brush, chalk, minimalist) and tones (neutral, warm, dramatic, romantic, energetic, vintage, action). It's designed for content creators and educators who need to transform written knowledge into visually engaging sequential narratives, solving the problem of creating multi-panel comics with consistent styling and detailed panel layouts without manual illustration work.
$ npx -y skills add jimliu/baoyu-skills --skill baoyu-comic --agent claude-codeInstalls into .claude/skills of the current project.
When this skill prompts the user, follow this tool-selection rule (priority order):
AskUserQuestion, request_user_input, clarify, ask_user, or any equivalent.Concrete AskUserQuestion references below are examples — substitute the local equivalent in other runtimes.
Resolve the image backend in this order:
preferred_image_backend in EXTEND.md names a backend available now → use it. ask means ask every run.auto, unset, or the pinned backend is unavailable), first match wins:
imagegen skill is in your available skills → you are in Codex and MUST use it: Skill with skill: "imagegen", passing the prompt file's content plus output path and aspect ratio. It outranks non-native skills such as baoyu-image-gen.codex exec (codex-imagegen): no native imagegen, but the codex CLI is on PATH with an active codex login → baoyu-image-gen --provider codex-cli (preferred), or the bundled wrapper if baoyu-image-gen is unavailable. Load references/codex-imagegen.md only for this branch.GenerateImage → use it (outranks non-native skills). It has no aspect-ratio parameter, so state the aspect ratio / dimensions in the description prompt; it saves to a tool-managed location, so copy the file to the expected output path (e.g., outputs/.../NN-xxx.png). Reference images go in reference_image_paths.image_generate) → use it the same way.baoyu-image-gen) → use it.⛔ Raster only: never substitute SVG, HTML/CSS, canvas, or other code-based rendering for a raster image, even for diagram-like content. If no raster backend resolves, go to step 4.
⛔ No bitmap text patching: never use ImageMagick, Pillow, Canvas, SVG, HTML/CSS, OCR scripts, or any other overlay to cover, rewrite, erase, stroke, or replace dialogue, sound effects, panel labels, or any other text inside an already generated comic page. Regenerate from a corrected prompt, redraw the page with less or no on-image text, or ask the user which imperfect candidate to keep.
Prompt file (hard): before invoking any backend, write each image's full, final prompt to its own file under prompts/ (NN-{type}-[slug].md) and pass that file (or its content) to the backend. It is the reproducibility record and lets you switch backends without rewriting prompts.
Change the pinned backend via ## Changing Preferences below. Tool names above are examples; use the local equivalent in other runtimes.
After every prompt file for the current generation group is saved and verified, generate images in batches by default:
generation_batch_size images at a time (default 4). An explicit request in the current message (e.g. --batch-size 4, "并行4张一起生成") overrides EXTEND.md.Rules:
characters/characters.png before pages that use it as a reference.User-supplied reference images guide art style, palette, scene composition, or subject. They are separate from the auto-generated character sheet (Step 7.1); both can coexist — user refs guide the look, the character sheet anchors recurring character identity.
Intake via --ref <files...> or file paths / pasted images in conversation:
refs/NN-ref-{slug}.{ext} alongside the comic outputUsage modes (per reference):
| Usage | Effect |
|---|---|
direct | Pass the file to the backend as a reference image on every page (or selected pages) |
style | Extract style traits (line treatment, texture, mood) and append to every page's prompt body |
palette | Extract hex colors and append to every page's prompt body |
Record in each page's prompt frontmatter when refs exist:
references:
- ref_id: 01
filename: 01-ref-scene.png
usage: direct
At generation time:
usage: direct AND backend accepts multiple refs → pass both the character sheet (Step 7.2) and user refs via the backend's ref parameter; compress images first (Step 7.1) to avoid payload failuresstyle/palette → embed extracted traits in every page's prompt text regardless of backend| Option | Values | Description |
|---|---|---|
--art | ligne-claire (default), manga, realistic, ink-brush, chalk, minimalist | Art style / rendering technique |
--tone | neutral (default), warm, dramatic, romantic, energetic, vintage, action | Mood / atmosphere |
--layout | standard (default), cinematic, dense, splash, mixed, webtoon, four-panel | Panel arrangement |
--aspect | 3:4 (default, portrait), 4:3 (landscape), 16:9 (widescreen) | Page aspect ratio |
--lang | auto (default), zh, en, ja, etc. | Output language |
--ref <files...> | File paths | Reference images applied to every page for style / palette / scene guidance. See Reference Images above. |
--batch-size <n> | 1-8 | Temporary page generation batch size for this run. Default: generation_batch_size from EXTEND.md, otherwise 4. |
| Option | Description |
|---|---|
--storyboard-only | Generate storyboard only, skip prompts and images |
--prompts-only | Generate storyboard + prompts, skip images |
--images-only | Generate images from existing prompts directory |
--regenerate N | Regenerate specific page(s) only (e.g., 3 or 2,5,8) |
Details: references/partial-workflows.md
Art styles (6): ligne-claire, manga, realistic, ink-brush, chalk, minimalist → references/art-styles/<style>.md
Tones (7): neutral, warm, dramatic, romantic, energetic, vintage, action → references/tones/<tone>.md
Layouts: references/layouts/<layout>.md
Presets (5), with special rules beyond plain art+tone — load references/presets/<preset>.md when a preset is picked:
| Preset | Equivalent | Hook |
|---|---|---|
ohmsha | manga + neutral | Visual metaphors, no talking heads, gadget reveals |
wuxia | ink-brush + action | Qi effects, combat visuals, atmospheric |
shoujo | manga + romantic | Decorative elements, eye details, romantic beats |
concept-story | manga + warm | Visual symbol system, growth arc, dialogue+action balance |
four-panel | minimalist + neutral + four-panel layout | 起承转合 structure, B&W + spot color, stick-figure characters |
Compatibility matrix and content-signal → preset table: references/auto-selection.md. Read it before recommending combinations in Step 2.
Scripts live in this skill's scripts/ subdirectory.
{baseDir}; script path = {baseDir}/scripts/<script-name>.ts. Replace all {baseDir} in this document with the actual path${BUN_X} runtime: if bun installed → bun; if npx available → npx -y bun; else suggest installing bun| Script | Purpose |
|---|---|
scripts/merge-to-pdf.ts | Merge comic pages into PDF |
Output directory: comic/{topic-slug}/
alan-turing-bio)turing-story-20260118-143052)Contents:
| File | Description |
|---|---|
source-{slug}.{ext} | Source files |
analysis.md | Content analysis |
storyboard.md | Storyboard with panel breakdown |
characters/characters.md | Character definitions |
characters/characters.png | Character reference sheet |
prompts/NN-{cover|page}-[slug].md | Generation prompts |
NN-{cover|page}-[slug].png | Generated images |
{topic-slug}.pdf | Final merged PDF |
Detection priority: --lang flag → EXTEND.md language → user's conversation language → source content language.
Use that language for ALL interactions: storyboard outlines and scene descriptions, image prompts, selection options and confirmations, progress updates, questions, errors, summaries. Technical terms remain in English.
Full step-by-step details (analysis, confirmation questions, storyboard, review gates, prompts, regeneration variants): references/workflow.md.
Comic Progress:
- [ ] Step 1: Setup & Analyze
- [ ] 1.1 Preferences (EXTEND.md) ⛔ BLOCKING
- [ ] Found → load preferences → continue
- [ ] Not found → run first-time setup → MUST complete before other steps
- [ ] 1.2 Analyze, 1.3 Check existing
- [ ] Step 2: Confirmation - Style & options ⚠️ REQUIRED
- [ ] Step 3: Generate storyboard + characters
- [ ] Step 4: Review outline (conditional)
- [ ] Step 5: Generate prompts
- [ ] Step 6: Review prompts (conditional)
- [ ] Step 7: Generate images
- [ ] 7.1 Generate character sheet (if needed) → characters/characters.png
- [ ] 7.2 Generate pages (with --ref if character sheet exists)
- [ ] Step 8: Merge to PDF
- [ ] Step 9: Completion report
Pick a backend once per session using ## Image Generation Tools. If the backend is a repo skill (e.g., baoyu-image-gen), read its SKILL.md and use its documented interface rather than its scripts. For codex-imagegen, see references/codex-imagegen.md (n=1 per call, so page batches dispatch one wrapper call per page).
7.1 Character sheet — generate (to characters/characters.png, aspect 4:3) when the comic is multi-page with recurring characters. Skip for simple presets (e.g., four-panel minimalist) or single-page comics. Compress to JPEG before using as --ref (sips -s format jpeg -s formatOptions 80 … on macOS, pngquant --quality=65-80 … elsewhere) to avoid payload failures. characters/characters.md must exist before invoking the backend.
7.2 Pages — each page's prompt MUST already be at prompts/NN-{cover|page}-[slug].md before invoking the backend. Strategy depends on the character sheet:
| Character sheet | Backend --ref | Strategy |
|---|---|---|
| Exists | Supported | Pass sheet as --ref on every page |
| Exists | Not supported | Prepend character descriptions to every prompt file |
| Skipped | — | All descriptions inline in prompt |
Build the page task list from saved prompt files and dispatch per ## Batch Generation Policy. --regenerate N and --images-only apply the same batching rules to the selected existing prompts.
Backup rule: existing prompts/…md and …png files → rename with -backup-YYYYMMDD-HHMMSS suffix before regenerating. Aspect ratio from storyboard (default 3:4; preset may override).
--ref failure recovery: compress sheet → retry → still fails → drop --ref and embed character descriptions in the prompt text.
If EXTEND.md is not found, first-time setup is blocking — complete it before any content analysis or style/tone questions.
| Priority | Path | Scope |
|---|---|---|
| 1 | .baoyu-skills/baoyu-comic/EXTEND.md | Project |
| 2 | $HOME/.baoyu-skills/baoyu-comic/EXTEND.md | User home |
| Result | Action |
|---|---|
| Found | Read, parse, display summary → continue |
| Not found | ⛔ Run first-time setup (references/config/first-time-setup.md) → save EXTEND.md → continue |
EXTEND.md supports: watermark, preferred art/tone/layout, custom style definitions, character presets, language preference, preferred image backend, generation batch size. Schema: references/config/preferences-schema.md.
analysis-framework.md (content analysis) · storyboard-template.md · character-template.md · ohmsha-guide.md · config/watermark-guide.md
| Action | Steps |
|---|---|
| Edit | Update prompt file FIRST → --regenerate N → Regenerate PDF |
| Add | Create prompt at position → Generate with character ref → Renumber subsequent (NN+1) → Update storyboard → Regenerate PDF |
| Delete | Remove files → Renumber subsequent (NN-1) → Update storyboard → Regenerate PDF |
Always update the prompt file (prompts/NN-{cover|page}-[slug].md) before regenerating, so changes stay documented and reproducible.
File naming: NN-{cover|page}-[slug].png (e.g., 03-page-enigma-machine.png); slugs are kebab-case, unique, derived from content. Renumbering updates the NN prefix only; slugs unchanged.
Text correction policy:
EXTEND.md lives at .baoyu-skills/baoyu-comic/EXTEND.md (project) or ~/.baoyu-skills/baoyu-comic/EXTEND.md (user). To change it:
references/config/preferences-schema.md.preferred_image_backend: auto — default; runtime-native tool wins, falls back to the only installed backend, asks only if multiple non-native are present.preferred_image_backend: codex-imagegen — pin to Codex's built-in.preferred_image_backend: baoyu-image-gen — pin to the baoyu-image-gen skill.preferred_image_backend: ask — confirm backend every run.generation_batch_size: 4 — default number of page images to render concurrently when the backend/runtime supports batch or parallel generation.watermark.enabled: true, preferred_art, preferred_tone, preferred_layout, language — shift the auto-selection defaults and cosmetic choices.Sponsors