task icon Task

Create Comic Strip

Requirements
Story idea including protagonist, conflict, and resolution. Optional: number of panels (3-6), art style preference, tone (humorous, dramatic, educational).
2

Discuss the comic idea with the user. Understand the story, the joke or emotional beat, and who the characters are. Ask: What's the setup? What's the punchline or resolution? Who are the main characters?

3

Create detailed character sheets for each character. For EACH character, define:

  • Name
  • Physical appearance (hair color/style, skin tone, eye color, build, distinctive features)
  • Outfit (specific clothing items, colors, accessories)

Write these out fully. These EXACT descriptions will be copy-pasted into every panel prompt to maintain consistency. Get user confirmation on the character designs.

4

Choose and lock the art style. Suggest options based on the comic's tone (e.g., 'bold comic book style with thick black outlines' for action, 'soft webcomic style' for slice-of-life, 'manga style with screentones' for dramatic). Get user agreement on the style—this exact phrase goes in every prompt.

5

Plan the comic panel-by-panel with the user. For each panel define:

  1. Panel number
  2. Shot type (wide/medium/close-up)
  3. What's happening (action, expressions)
  4. Dialogue (keep to 5-6 words max per speech bubble)

Recommend 3-4 panels for a gag strip, 4-6 for a short story. Present the full plan and get approval before generating.

6

Create a project slug from the comic title (lowercase, hyphens). This becomes the output subdirectory under uiGenerated Images (subdirectory: storyboards/{slug}/)

7

Generate Panel 1. Build the prompt by combining:

  • The locked art style phrase
  • "comic panel" + shot type
  • Full character description (copy-paste from character sheet)
  • The action/scene description
  • "speech bubble with text '[dialogue]'" (if panel has dialogue)
  • Setting and mood details

Use taskGenerate Image. Save to uiGenerated Images (subdirectory: storyboards/{slug}/panel-1.png)

9

Continue generating remaining panels in sequence. For each panel:

  1. Build prompt using IDENTICAL art style and character descriptions
  2. Adjust only: shot type, action, dialogue, composition
  3. Generate and save as panel-2.png, panel-3.png, etc.

After each panel, briefly confirm it matches the style before proceeding. If consistency breaks, regenerate that panel with more specific descriptors before moving on.

10

Once all panels are generated, stitch them into a final comic strip.

12

Append an entry to uiGenerated Media Index with: path (the comic-strip.png path), type: comic, prompt_summary (story title), created_at (ISO date).

13

Present the completed comic to the user:

  • Show the stitched comic-strip.png
  • List the individual panels in case they want to regenerate any
  • Offer adjustments: regenerate specific panels, change dialogue, create variations
                    To run this task you must have the following required information:

> Story idea including protagonist, conflict, and resolution. Optional: number of panels (3-6), art style preference, tone (humorous, dramatic, educational).

If you don't have all of this information, exit here and respond asking for any extra information you require, and instructions to run this task again with ALL required information.

---

You MUST use a todo list to complete these steps in order. Never move on to one step if you haven't completed the previous step. If you have multiple read steps in a row, read them all at once (in parallel).

Add all steps to your todo list now and begin executing.

## Steps

1. [Read Comic Strip Guide]: Read the documentation in: `./skills/sauna/[skill_id]/references/media.storyboard.guide.md` (Comic consistency and dialogue guidance)

2. Discuss the comic idea with the user. Understand the story, the joke or emotional beat, and who the characters are. Ask: What's the setup? What's the punchline or resolution? Who are the main characters?

3. Create detailed character sheets for each character. For EACH character, define:
- Name
- Physical appearance (hair color/style, skin tone, eye color, build, distinctive features)
- Outfit (specific clothing items, colors, accessories)

Write these out fully. These EXACT descriptions will be copy-pasted into every panel prompt to maintain consistency. Get user confirmation on the character designs.


4. Choose and lock the art style. Suggest options based on the comic's tone (e.g., 'bold comic book style with thick black outlines' for action, 'soft webcomic style' for slice-of-life, 'manga style with screentones' for dramatic). Get user agreement on the style—this exact phrase goes in every prompt.

5. Plan the comic panel-by-panel with the user. For each panel define:
1. Panel number
2. Shot type (wide/medium/close-up)
3. What's happening (action, expressions)
4. Dialogue (keep to 5-6 words max per speech bubble)

Recommend 3-4 panels for a gag strip, 4-6 for a short story. Present the full plan and get approval before generating.


6. Create a project slug from the comic title (lowercase, hyphens). This becomes the output subdirectory under `./documents/images/**/*` (subdirectory: storyboards/{slug}/)

7. Generate Panel 1. Build the prompt by combining:
- The locked art style phrase
- "comic panel" + shot type
- Full character description (copy-paste from character sheet)
- The action/scene description
- "speech bubble with text '[dialogue]'" (if panel has dialogue)
- Setting and mood details

Use `./skills/sauna/[skill_id]/references/recipes/media.image.generate.md`. Save to `./documents/images/**/*` (subdirectory: storyboards/{slug}/panel-1.png)


8. [Gather Requirements for Generate Image] The next step has the following requirements: "Text description of the image. Optional: aspect ratio (1:1, 16:9, 9:16, 4:3), style (photorealistic, illustration, painting), mood/lighting preferences.". Search the user's data for this information or ask them directly if needed. Do not proceed until you have this information.

9. [Execute Generate Image Task]: Spawn a subagent and provide it with the requirements gathered above and instructions to read `./skills/sauna/[skill_id]/references/recipes/media.image.generate.md` for its task list

10. Continue generating remaining panels in sequence. For each panel:
1. Build prompt using IDENTICAL art style and character descriptions
2. Adjust only: shot type, action, dialogue, composition
3. Generate and save as panel-2.png, panel-3.png, etc.

After each panel, briefly confirm it matches the style before proceeding. If consistency breaks, regenerate that panel with more specific descriptors before moving on.


11. Once all panels are generated, stitch them into a final comic strip.

12. [Gather Arguments: Stitch Comic Strip] The next step has the following requirements for arguments, do not proceed until you have all the required information:
- `inputDir`: path to panel directory under ui:media.image.gallery (subdirectory: storyboards/{slug}/)
- `outputPath`: output path under ui:media.image.gallery (subdirectory: storyboards/{slug}/comic-strip.png)
- `columns`: number of columns (use panel count: 3-4 panels = 1 row, 5-6 panels = 2 rows of 3)
- Packages: sharp

13. [Run Code: Stitch Comic Strip]: Call `run_script` with:

```json
{
  "file": {
    "path": https://sk.ills.app/code/media.storyboard.stitch/preview,
    "args": [
      "inputDir",
      "outputPath",
      "columns"
    ]
  },
  "packages": ["sharp"]
}
```

14. Append an entry to `./documents/media-index.yaml` with: path (the comic-strip.png path), type: comic, prompt_summary (story title), created_at (ISO date).

15. Present the completed comic to the user:
- Show the stitched comic-strip.png
- List the individual panels in case they want to regenerate any
- Offer adjustments: regenerate specific panels, change dialogue, create variations