$npx -y skills add wanshuiyin/ARIS-Movie-Director --skill comic-intent-parserPhase-1 Layer-0 of the comic-author suite — turn ANY raw idea / a locked video skeleton / an audience note into ONE schema-valid intent_spec node that fixes the logline (an editorial climax), the tagline, and the named DUAL-IDENTITY design constraint the whole comic optimizes aga
| 1 | # comic-intent-parser — the locked premise (Phase 1 · Layer 0) |
| 2 | |
| 3 | The **single entry point of the left third of Figure 1**. Before any beat, panel, asset, or blueprint exists, |
| 4 | this skill turns a raw user brief (one line, a script, a locked video storyboard, an image, or a mix) into |
| 5 | **one `intent_spec` wiki node** that answers exactly three questions — (1) what the user wants, (2) the hard |
| 6 | constraints, (3) what is still ambiguous — and locks the comic's **logline + tagline + dual-identity design |
| 7 | constraint**. It is the Layer-0 step the 49-line [`comic-author`](../comic-author/SKILL.md) SOP previously had |
| 8 | only as a one-line stub; this gives it a real 7-phase procedure, a schema-validation loop, a confidence gate, |
| 9 | a cross-model parse, and a **hard user-approval gate**. It hands `intent:<slug>` down to |
| 10 | [`comic-outline-creator`](../comic-outline-creator/SKILL.md). It is **authoring, not rendering**: it must never |
| 11 | invent characters/scenes (that is the storyboard layer) or write panel prompts / `content_svg` / |
| 12 | `expected_literals` (that is the asset/blueprint layer) — doing so is a hard gate veto. |
| 13 | |
| 14 | ```text |
| 15 | raw idea / locked skeleton / audience ─▶ ⓪ snapshot raw input verbatim + sha256 (provenance) |
| 16 | ▼ |
| 17 | ① CODEX structured parse — raw bytes + verbatim node_schema, Claude inserts NO interpretation |
| 18 | ▼ |
| 19 | ② SCHEMA validation loop — validate the FULL node vs node_schema.json (≤ MAX_PARSE_ATTEMPTS, codex-reply on the SAME thread) |
| 20 | ▼ |
| 21 | ③ CONFIDENCE routing — confidence<0.6 OR any impact==high uncertainty → status:"under_review" |
| 22 | ▼ |
| 23 | ④ BANNED-VOCAB lint (final guard) — recursive word-boundary scan; on hit re-parse ONCE (out-of-band) |
| 24 | ▼ |
| 25 | ⑤ fan-out reviewers → persist review:* nodes + `reviews` edges → THEN comic-cross-layer-gate <id> --gate intent (CC scope-sanity ‖ Codex xhigh ambiguity) |
| 26 | ▼ |
| 27 | ⑥ USER APPROVAL — HARD gate; present logline + tagline + dual_identity + every uncertainty → wait for explicit "lock it" |
| 28 | ▼ |
| 29 | approved? ─ no ─▶ revise / re-ask (NEVER proceed) |
| 30 | │ yes |
| 31 | ▼ |
| 32 | ⑦ status:"locked" → commit node + edges + INTENT_REPORT.md + handoff JSON |
| 33 | ``` |
| 34 | |
| 35 | ## Constants (ported from the aris_movie intent-parser; adapt, never downgrade) |
| 36 | - **REVIEWER_MODEL** = `gpt-5.5`, **REVIEWER_EFFORT** = `xhigh` — quality is independent of the `effort` tier; |
| 37 | never downgrade the reviewer (per [`reviewer-routing`](../../protocols/reviewer-routing.md)). Gemini |
| 38 | (`auto-gemini-3`) is added ONLY when the input carries an image/visual that needs extraction. |
| 39 | - **CONFIDENCE_THRESHOLD** = `0.6` — a self-honest 0.0–1.0 self-rating below this auto-routes to `under_review`. |
| 40 | - **MAX_PARSE_ATTEMPTS** = `3` — schema-fix retries on the same Codex thread; on persistent failure write |
| 41 | `parse_failed.md`, never silently coerce a value to satisfy the schema. |
| 42 | - **SCHEMA_PATH** = [`../../schemas/node_schema.json`](../../schemas/node_schema.json) — the `intent_spec` |
| 43 | branch is the contract; nothing reaches the wiki without `jsonschema` Draft202012 passing the FULL node. |
| 44 | - **NODE_TYPE** = `intent_spec`; **NODE_ID** = `intent:<slug>`; **WIKI** = `wiki/nodes/intent_<slug>.json` |
| 45 | (the `:` → `_` for the filename); **OUTPUT_DIR** = `intent-stage/` (work area, traces, checkpoints). |
| 46 | - **BANNED_VOCAB** (ported nearly verbatim from the video skill — our `content_svg` blueprints + `ART_BIBLE.md` |
| 47 | also forbid photographic/camera vocab): `camera, lens, dolly, pan, zoom-shot, bokeh, depth-of-field, 8K, 4K, |
| 48 | cinematic, photorealistic, lighting rig, f/1.8, shutter, frame-rate, voxel` (case-insensitive, |
| 49 | word-boundary). The intent layer states the STORY and constraints, not photographic direction. |
| 50 | |
| 51 | ## What this skill writes — the `intent_spec` node (the contract boundary) |
| 52 | Per [`../../schemas/node_schema.json`](../../schemas/node_schema.json) (`node_type: "intent_spec"`, |
| 53 | `node_id: "intent:<slug>"`), the **`pa |