$npx -y skills add wanshuiyin/ARIS-Movie-Director --skill movie-pipelineEnd-to-end Pipeline A in ONE slash-command — turn a fuzzy story idea into a cross-model-audited, image-based movie + a clickable viewer. Chains comic-author (Phase 1 — intent→style→outline draft→provisional storyboard→assets→final locks→blueprints→prompts→comic.json) → the zero-c
| 1 | # movie-pipeline — Pipeline A, end-to-end (one slash-command) |
| 2 | |
| 3 | ## 1 · Scope |
| 4 | The whole of Figure 1 as ONE agent workflow: a fuzzy idea → a cross-model-audited, image-based movie + a |
| 5 | clickable viewer. `/movie-pipeline "«your fuzzy idea»"` — and your coding agent (Claude, Codex, …) drives the |
| 6 | chain below, pausing only at the two human story gates. **"One command" = one slash-command an agent RUNS — |
| 7 | not a deterministic shell binary** (the `/research-pipeline` paradigm): it needs a coding-agent runtime, it is |
| 8 | non-deterministic, and a skipped step is *safe* because each layer consumes the prior *locked* artifact — a |
| 9 | missed step leaves the next gate's input unresolved and it **fails closed**, never ships something wrong. |
| 10 | |
| 11 | ## 2 · Who does what (roles / boundary) |
| 12 | | Actor | Does | Never does | |
| 13 | |---|---|---| |
| 14 | | **Human** | approves intent + outline; adjudicates `needs_human`/flagged panels | per-panel retries (the spiral's job) | |
| 15 | | **Agent** (Claude runtime) | authors Phase 1; runs the P0 fan-out reviews; services the bake sidecar; iterates pages | acquits its own layer (author family can't self-acquit) | |
| 16 | | **`mcp__codex__codex` sidecar** | the ONLY real bake primitive (Codex native image tool) | judge its own output | |
| 17 | | **Deterministic CLIs** | `run_p0_proof.py` (mints the P0 cert), `run_comic.py` (orchestrates; verdict math is deterministic; gates shell the `codex`/`gemini` CLIs), `validate_wiki.py`, `build_comic.py` | bake (that's delegated to the agent sidecar) | |
| 18 | | **CI** | `--dry-run` + `validate_wiki` + `build_comic` re-render + `tests/` (see §11) | bake, or acquit quality | |
| 19 | |
| 20 | ## 3 · Phase contract |
| 21 | | Phase | Entry artifact | Exit artifact | Consumer | Gate | |
| 22 | |---|---|---|---|---| |
| 23 | | 1 author | fuzzy idea | schema-valid `comic.json` + locked wiki nodes | P0 gate | per-layer cross-model `--gate` + 2 human gates | |
| 24 | | P0 proof | compiled `comic.json` | digest-bound `decision:p0_proof_*` node | `run_comic.py` preflight | `run_p0_proof.py` quorum (§6) | |
| 25 | | 2 bake | `comic.json` + current P0 cert | KEEP'd panels, wiki trace, updated `comic.json` | assembly / viewer | `panel_gate` + `assembly_gate` | |
| 26 | | 3 ship | shippable run report | `outputs/index.html` | human | `--finalize` viewer build rc=0 (exit 4 on fail) | |
| 27 | |
| 28 | ## 4 · New-project bootstrap |
| 29 | Copy the author-node shapes from [`examples/comic_min_author/`](../../examples/comic_min_author/); the full |
| 30 | reference run (198-node trace) is [`examples/comic_m3_audit/`](../../examples/comic_m3_audit/). Give the |
| 31 | project a `movie.project.json` with `identity_ref` — `run_comic.py` reads the canonical identity ref from it |
| 32 | (fallback: `assets/duo_canonical_ref_v001.png`). Prereqs: `codex` + `gemini` CLIs + headless Chrome |
| 33 | (`$ARIS_CHROME` > macOS app path > PATH). `python3 cli/preflight.py` checks the reviewer/render CLIs ONLY — |
| 34 | it does NOT verify the `mcp__codex__codex` sidecar tool or an agent runtime, which the real bake needs. |
| 35 | |
| 36 | ## 5 · Phase 1 — author the source of truth ([`comic-author`](../comic-author/SKILL.md)) |
| 37 | The DAG (each arrow is a cross-model `--gate`; two steps are HUMAN): |
| 38 | 1. intent *(HUMAN gate)* → style lock → **OUTLINE_DRAFT_VALID** — the outline gate validates |
| 39 | NARRATIVE + CONTINUITY + safety only; it does **not** require referenced assets to be locked, it requires |
| 40 | every referenced `asset_id` to be **declared** with a complete, generatable request. |
| 41 | 2. **outline approval** *(HUMAN gate)* → **provisional storyboard** (structural pass; may reference draft |
| 42 | assets) → `consolidated_asset_requests`. |
| 43 | 3. **asset generation + review** → assets **LOCKED** → **OUTLINE_FINAL_LOCK** (cheap re-check: the locked |
| 44 | assets still match the approved outline) → storyboard **FINAL asset-resolution validation**. |
| 45 | 4. blueprints — **the hard locked-asset barrier sits HERE, before blueprint authoring** → prompts → |
| 46 | schema-valid `comic.json`. |
| 47 | |
| 48 | This staged order is the contract: it replaces the old single-stage deadlock (an outline gate demanding |
| 49 | locked assets that depend on a storyboard that depends on a locked outline). Draft-then-final-lock is how the |
| 50 | cycle is broken; the asset barrier never moves past the blueprint boundary |