AgentStack
SKILL verified MIT Self-run

Comic Storyboard Creator

skill-wanshuiyin-aris-movie-director-comic-storyboard-creator · by wanshuiyin

Phase-1 comic-author step — turn a LOCKED, user-approved outline into the page-first storyboard that IS the authoring source of truth: a fixed page order BEFORE any prose, the MOTIF STATE TABLE (the master per-panel continuity ledger), a fixed 9-field per-panel spec, and one deduped canonical asset contract. Decompose beats→pages→panels, 抽卡 K page/panel-order lineages by feasibility, then fill ev…

No reviews yet
0 installs
5 views
0.0% view→install

Install

$ agentstack add skill-wanshuiyin-aris-movie-director-comic-storyboard-creator

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No 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.

Are you the author of Comic Storyboard Creator? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

comic-storyboard-creator — the Page-First Storyboard + Master Continuity Ledger (Phase 1, step S6)

The storyboard step of the [comic-author](../comic-author/SKILL.md) suite: take a LOCKED, user-approved [outline_spec](../comic-outline-creator/SKILL.md) and produce the artifact that IS the authoring source of truth — a fixed page order authored as its own section BEFORE any per-panel prose, the MOTIF STATE TABLE (the master per-panel ledger that pins every continuity variable for all panels before any bake), a fixed 9-field per-panel spec, and one deduped canonical asset contract. This is the deep Layer-2 the 150-line comic-author SOP defers to references/; it ports the rigor of aris_movie's movie-storyboard-creator (抽卡 lineages → score → gate) and -v4 (locked-inputs precondition → beat→panel budget → deterministic spec) onto stills, and it emits the panel_spec fields the downstream [comic-blueprint-author](../comic-blueprint-author/SKILL.md) and [comic-director](../comic-director/SKILL.md) consume. The downstream baking spiral is not this skill's job — this is pure authoring + ledger.

> Cardinal lesson baked in as a gate, not prose: decompose beats→pages→panels and 抽卡 K orderings by > feasibility, then fill ONE panel at a time — never batch-author-then-look. The MOTIF STATE TABLE is the > concrete guard: it pre-commits a per-dimension-per-panel ground truth (mug heat / executor bounce / > Tok|yo evidence / DDL spine / exactparse / claimdelta) with machine-checkable global invariants > (DDL monotonic never-rewind; bounce S02 = the film's ONLY MAX; REJECT↔ACCEPT mirror), so the audit reads > intent off a table instead of inferring it.

  locked+approved outline_spec ─▶ ① PRECONDITION (refuse if outline unlocked / unapproved / any asset unlocked)
                                      ▼
                                ② DECOMPOSE  beats → pages → panels  (beat→panel budget arithmetic)
                                      ▼
                                ③ 抽卡 K page/panel-ORDER lineages (Codex xhigh) → score(feasibility/fidelity/novelty) → keep
                                      ▼
                                ④ PAGE ORDER FIRST   (a fixed section, page-type + L/R world per page, BEFORE prose)
                                      ▼
                                ⑤ MOTIF STATE TABLE  (master ledger; monotonic DDL; bounce-uniqueness; mirror locks)
                                      ▼
                                ⑥ PER-PANEL 9-FIELD SPEC  (one unit at a time; DONE panels locked; baked-vs-gate contract)
                                      ▼
                                ⑦ CONSOLIDATE ASSET_REQUESTS  (one canonical owner per token; naming 铁律)
                                      ▼
                                ⑧ EMIT  storyboard_spec + motif_ledger + N panel_spec (+ continuity_constraint)  → cross-layer gate

Constants

  • 抽卡 K (lineages of page/panel ordering)K_LITE=3, K_BALANCED=6 (default), K_MAX=8, K_BEAST=12

(ported verbatim from movie-storyboard-creator). Effort tier governs count of orderings, not depth.

  • FEASIBILITY_FLOOR = 5 — a lineage scoring feasibility | DDL | | exact_parse | claim_delta | bounce

— for the worked example: Panel | Mug | DDL | Tok|yo | exact_parse | claim_delta | bounce. The two metric columns (exact_parse, claim_delta) never co-mingle (different metrics, different value sets).

  • PANEL_TEMPLATE = the fixed 9 fields (+ title anchor): text_mode / content_blueprint /

expected_literals / scene / characters / bubbles{zh,en} / side_narration{zh,en,trait} / motifs / asset_requests. No free prose outside these fields. (cover/finale panels add safe_zones/endcard fields.)

  • OUTPUT = story/STORYBOARD_DRAFT.md (the human artifact) + wiki nodes (storyboard:, motif:,

panel: × N, optional cont:). Versioned per [output-versioning](../../protocols/output-versioning.md).

Input contract — locked + approved upstream (refuse otherwise)

This skill is pure authoring + ledger, and it operates ONLY on converged upstream (convergence is the upstream gates' job, per [acceptance-gate](../../protocols/acceptance-gate.md)):

  • Refuse (HALT, point at the offending node) if the outline_spec is not status: "locked", OR it lacks

the explicit user-approval stamp (the user-first gate — never proceed to asset-library work without a recorded ✅ APPROVED by user ), OR any referenced asset node it whitelists is not locked.

  • Asset-id whitelist is SACRED. Every panel may reference asset names ONLY from the outline's

character_asset_ids / scene_asset_ids / prop_asset_ids plus assets you newly request as asset_requests. Never free-describe an asset inline. If a panel needs an asset that doesn't exist yet, add it to asset_requests (which reopens the asset layer) — do not invent it silently.

  • Consumed outline fields: narrative_beats[], beat_table (the 6-column table: Beat / Panels / layout /

world / content+台词 gist / ARIS-feature-as-story-cost), motif_arcs (the per-shot continuity values), design_constraint (the dual-identity), title / logline / tagline.

Procedure (followable, one unit at a time — never batch)

① Precondition check

Load the outline_spec. Verify status == "locked" AND the user-approval stamp is present AND every asset it whitelists is locked. On any failure → HALT with the precise offending node id so the orchestrator routes back to the outline / asset layer. Record provenance in the header: source outline id, the prior cross-model verdict it survived (real example: codex critique returned REVISE; "全部 fix 落地"), and the ✅ APPROVED by user line.

② Decompose beats → pages → panels (budget arithmetic)

For each outline beat, read its layout token to set its page type and per-page panel count, then assign shot/panel ids. Compute the page budget: a beat tagged vertical-3 owns 3 panels on one page; 2-up owns 2; grid2x2 owns a recap page; single/full-bleed/endcard own 1. The centerpiece beat may expand (real: B08 went 4 panels → 5 single-read pages, adding a NEW S12a audit-entry panel, with the 2×2 kept ONLY as a recap/hero page). Clamp the global total to the project's tier window; if oversize, collapse the longest multi-panel beat first; if undersize, split the beat with the most slack. Every panel must land on exactly one page with a stable page id (P00_cover, P01_b02, …, P03_end).

③ 抽卡 K page/panel-order lineages (Codex xhigh), score, keep

Pass file paths only (the locked outline, the style bible, the wiki banlist of prior failed orderings) to Codex gpt-5.5 xhigh — reviewer independence: Codex forms its own reading, never gets your summary. Demand K (= the tier constant) alternative page/panel orderings of the same beat set, each differing on ≥2 of: page-rhythm axis (cover/2-up/grid/vertical-3/big-frame mix) · cast-presence axis (which panels show the duo vs solo) · world-alternation axis (warm/dark/seam sequencing) · reading-order axis. Score each lineage 0–10 on Feasibility (lower if it needs un-gateable arbitrary text / exact UI replication / face identity), Brief-fidelity (does it preserve the locked beat boundaries + the dual-identity), Novelty-vs-banlist (penalize ≥0.6 Jaccard overlap with a prior failed ordering). **Drop any lineage with feasibility mug) is tagged env and is NOT tracked — this is the absence ≠ drift / design-aware gate rule made concrete (a naive holistic gate would false-flag it).

  • DDL = MONOTONIC, NEVER REWIND. The countdown is non-increasing across the ENTIRE film. Write the exact

sequence in the conventions block (real: T-24:00:00 → 19:42 → 19:42 → 18:55 → 18:40 → 18:30 → 17:46 → 17:02 → 16:21 → 16:05 → 05:12 → 02:58 → 02:41 → 01:57 → 00:42 → 00:27(submitted)). Two consecutive equal values are allowed (a "same-instant rhyme"); an increase is a hard veto. If any draft value would rewind, fix it inline and annotate the fix (real: S06 DDL T-15:27 → T-18:40 purely so 18:40 > S07's 18:30).

  • Two metric columns that NEVER co-mingle. exact_parse carries {0.60, 0.71, 0.66, 0.78, 0.89};

claim_delta carries {+6.2, +1.4}. They are different metrics; writing one into the other's column is a veto. (Real: S10 shows exact_parse 0.71→0.66 while claim_delta stays ; S14 shows claim_delta +6.2→+1.4 while exact_parse stays .)

  • bounce = the wordless emotion thermometer with a UNIQUENESS invariant. bounce = MAX appears **exactly

once (real: S02 是全片唯一 MAX). Every later high is annotated "below S02". After the fall, NO new peak is allowed** — a post-fall celebration must be written as arrested (real: S12a = attempted celebration, ARRESTED before becoming a jump, the codex fix that removed an earlier "MAX" there). The arc closes at the smallest bounce (real: S21 = smallest bounce, the mirror landing of S02).

  • MIRROR LOCKS (paired non-adjacent constraints the table also pins): REJECT card ↔ ACCEPT card =

exact same diagonal stamp geometry/angle (real: S11 ↔ S16, both from the shared verdict-card geometry, the audit hinge); S02 unique-MAX bounce ↔ S21 smallest bounce; a labeled wiki map ↔ its wordless twin share node coordinates programmatically derived from one JSON (real: S16b ↔ S22 from wiki_starmap_nodes_v1.json, 禁目测 — no eyeballing).

⑥ Per-panel 9-field spec, in comic page order (ONE panel at a time)

Walk the page order and author each panel in the fixed template — finish one panel fully before starting the next (this is the "never batch-generate-then-look" lesson at authoring time). Each panel carries:

  1. title + beat + page-type + world (the header anchor).
  2. text_mode{baked, html}baked = the image model renders the in-frame text; html = the

panel is a pure scene and ALL text lives in the HTML overlay (zero glyphs in the image).

  1. content_blueprint — which canonical SVG asset is instantiated + the exact literal layout (e.g.

"from assets/ddl_widget_template_v1.svg instantiate T-24:00:00, amber on a navy widget, screen-corner").

  1. expected_literals — the blind-transcribable tokens that will be gated (see the contract below).
  2. scene — the staged environment (density target, books/props, the warm/dark world rendered).
  3. characters — who is present + their motif-table state (bounce, pose); note who is absent and why.
  4. bubbles{zh,en} — speaker + style + bilingual line. Skill names NEVER appear in a bubble or in-frame

(铁律) — they live only in side_narration.

  1. side_narration{zh,en,trait} — first sentence = what happened; second = the ARIS capability *bound to

a story cost*; the trait tag names the bound skill. (The 侧栏讲解铁律 inherited from the outline.)

  1. motifs — restate that panel's row of the MOTIF STATE TABLE (must agree with ⑤ exactly).
  2. asset_requests — the canonical asset names this panel consumes (whitelist only).

In the human STORYBOARD_DRAFT.md, a DONE / reused panel's row carries ONLY status + side_narration + motifs (as baked) — locked, never retro-edited (real: S12–S15, baked images promoted from a grid to single pages; their square crops stay in the existing 2×2 recap; no regeneration). A DONE panel that is edited is a hard veto. The wiki panel_spec node is NOT reduced: validate_wiki.py PAYLOAD_REQUIRED["panel_spec"] unconditionally requires all 13 fields for EVERY panelspec (no DONE exemption), so a DONE/reused panel's panel_spec.payload must still carry every field, holding its prior locked values unchanged (never retro-edited). The reduced 3-field form is a STORYBOARDDRAFT.md convenience only.

⑦ Enforce the baked-vs-gate contract per panel

expected_literals holds ONLY the salient, large, blind-transcribable tokens; everything visible-but-not- gated is explicitly excluded in writing:

  • Sub-threshold chips out of contract — real: the S09 Tok|yo chip is sized ≤1.5% frame height, *"below

blind-review transcription threshold"*, NOT in expected_literals (it is a deliberate foreshadow, no callout, no arrow); it becomes hero/gated only at S10.

  • Skill names NEVER in-frame (铁律) — they are side-narration only.
  • ASCII-only gating — real: S20 gates SUBMITTED; the is decorative non-ASCII and is out of contract.
  • A deliberately sub-gate token must never be smuggled into expected_literals (hard veto).

⑧ Consolidate ASSET_REQUESTS (one canonical owner per token; naming 铁律)

Collect every panel's asset_requests into ONE canonical, deduped, authoritative list. Apply the naming 铁律: declare all draft-era name variants void and map them to the single canonical name; pin one parametric source per recurring motif (real: ONE ddl_widget_template_v1.svg is the sole render source for the entire 18-instance countdown timeline; ONE stamp_family_v1.svg for ALL verdict stamps — no two stamp sets, and it must match the already-baked S12–S15 stamps; ONE wiki_starmap_nodes_v1.json is the single truth source shared by the labeled map S16b and its wordless twin S22). Flag P0 blockers (real: researcher_chibi_canonical_ref_v001.png missing — only the duo had a canonical ref) and enumerate zero-new-work reuse (DONE panels, the existing recap page, S01's baked image reused as a set-continuity condition ref for S20/S21 same-room/same-desk/same-camera).

⑨ Emit nodes, attach the review, THEN invoke the gate (two steps — never cold)

Write the wiki nodes (§ below) and append the author edges. The storyboard gate is a score-FUSER: it walks reviews edges into the target, fuses the pre-existing review:* score-nodes, and HARD-FAILS if zero are attached ("no reviews — gate is a score-fuser, not a reviewer"). So before invoking it:

  1. Asset-lock precondition (ordering). A panel asset must be status: locked AT GATE TIME

(panel_assets_referenceable = resolves AND locked). If you filed any asset_requests, that REOPENS the asset layer — drive those assets through the asset gate to locked before running the storyboard gate. Never run --gate storyboard with an un-locked asset_request outstanding (it will hard-veto on _unresolved_asset_refs).

  1. Pre-gate review (fan-out → persist). The storyboard gate is structural, CC-only (no visual

reviewer — no pixels exist yet), so the cross-model lens here is the structural validator run, not a panel of model families. Compute the four structural facts (below) and persist them as a review node: node_id: review:, payload {target_node_id: "storyboard:", reviewer, gate_kind: "storyboard", review_scores:{panel_assets_referenceable, global_policies_valid, panel_count_band_aligned, continuity_chain_well_formed}}, with a reviews edge review: → storyboard:.

  1. Invoke the fuser. python3 / call **[comic-cross-layer-gate](../comic-cross-layer-gate/SKILL.md)

--gate storyboard** to fuse + adjudicate against the EXACT predicate below. On an approve verdict (the gate's verdict set is {approve, revise}), the gate flips storyboard_spec.statuslocked; on revise it sets/keeps under_review. (Canon ⑥ FLIP: locked is a STATUS reached by the advance verdict, never a verdict name.) The gate (a different model family) — never this authoring agent — acquits ([artifact-integrity](../../protocols/artifact-integrity.md)). Reviewer routing for any model-family fan-out: Claude (one lens) ‖ Codex gpt-5.5 xhigh ‖ Gemini auto-gemini-3, file paths only ([reviewer-routing](../../protocols/reviewer-routing.md)).

EXACT gate (storyboard) — quote [comic-cross-layer-gate](../comic-cross-layer-gate/SKILL.md) --gate storyboard

This is **not

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.