$npx -y skills add wanshuiyin/ARIS-Movie-Director --skill comic-style-bible-lockPhase-1 (S2) of the comic-author suite — compile the project's ART_BIBLE.md into an EXECUTABLE convergence target, not aesthetic prose. The bible is the ONE visual dialect read verbatim into every bake prompt AND into every visual reviewer's rubric (style_consistency/`identity_
| 1 | # comic-style-bible-lock — the Style Bible as an Executable Gate Rubric (Phase 1 · S2) |
| 2 | |
| 3 | The **S2 step of [`comic-author`](../comic-author/SKILL.md)**: turn `ART_BIBLE.md` from a wall of taste |
| 4 | adjectives into a *machine-addressable convergence target*. The bible is the **single visual dialect** that is |
| 5 | (a) read **verbatim into every bake prompt** so each frame converges to the same look, and (b) read **verbatim |
| 6 | into every visual reviewer's prompt** so the cross-model `panel_gate` scores `style_consistency` / |
| 7 | `identity_consistency` against a *ground-truth spec* — not against the reviewer's vibe. The bible literally |
| 8 | declares this of itself: |
| 9 | |
| 10 | > `style_consistency` / `identity_consistency` 的字面定义就是"符合本文件",不是凭感觉。 |
| 11 | > 无 ground-truth spec,跨模型 gate 会永远吐"style drift"却没有收敛方向。 |
| 12 | > — `examples/comic_m3_audit/ART_BIBLE.md`, lines 3–5 |
| 13 | |
| 14 | That second line is the **whole reason this skill exists**. Without one source of truth a cross-model gate |
| 15 | emits endless "style drift" with **no convergence direction**, and the film silently grows **two visual |
| 16 | dialects**. This skill locks each dimension to a named anchor so the gate has an individually-addressable, |
| 17 | source-pinned target instead of one prose blob — **one visual dialect, never two**. |
| 18 | |
| 19 | ```text |
| 20 | ART_BIBLE.md (taste, user-approved, dated, probe-anchored) |
| 21 | │ |
| 22 | ▼ |
| 23 | ① bootstrap ── deterministic parse → ONE immutable style_anchor node per dimension |
| 24 | │ (palette · line · shading · two-world warm/cyber lighting · identity-lock |
| 25 | │ · per-world STYLE_PREFIX · text-mode · forbidden · by-design exceptions) |
| 26 | │ + EXACT style_bible gate (6 dims ≥4, 6 vetoes) |
| 27 | ▼ |
| 28 | ② validate <authoring_text> ── deterministic lint (NO LLM): FORBIDDEN vocab + identity-conflict + world-mismatch |
| 29 | │ → called by every downstream author step BEFORE the text enters a bake prompt |
| 30 | ▼ |
| 31 | ③ update ── (after ≥1 KEEP panel) Gemini-harvest recurring drift → APPEND-ONLY by-design exception anchors |
| 32 | (≥50% same-beat quorum, cross-model only) — never rewrites the baseline |
| 33 | ``` |
| 34 | |
| 35 | ## Role |
| 36 | Compile, lock, and police the project's locked visual identity across the comic lifecycle. You **own** the |
| 37 | 3-subcommand lifecycle — `bootstrap` (bible → immutable anchors + gate), `validate` (deterministic lint of |
| 38 | candidate authoring text), `update` (cross-model drift-harvest into append-only exceptions) — and the |
| 39 | **EXACT `style_bible` gate** below. You do **not** invent taste: every anchor traces to a user-approved, dated, |
| 40 | probe-anchored line in `ART_BIBLE.md`. If the bible is missing you auto-bootstrap a scaffold and **escalate to |
| 41 | the user for approval**; if it exists and is locked you **leave it locked** and only ever *add* by-design |
| 42 | exceptions. The convergence guarantee — "one visual dialect, never two" — is enforced here or nowhere. |
| 43 | |
| 44 | ## Constants |
| 45 | - **BIBLE** = `<project>/ART_BIBLE.md` — the source of truth; **version-stamped + dated + project-pinned** |
| 46 | (real: `version art-bible/1.0 · 锁定 2026-06-08 · 项目 aris_comic_v1`). |
| 47 | - **ANCHOR_DIR** = `<project>/wiki/nodes/` — one `style:<slug>.json` per dimension (`node_type: style_anchor`). |
| 48 | - **DRIFT_REVIEWER** = `mcp__gemini__analyzeFile` (`auto-gemini-3`) — the **visual** drift reviewer for `update`. |
| 49 | Cross-model independence: the executor (Claude) only *aggregates* Gemini's JSON; it never judges drift itself. |
| 50 | - **QUORUM** = `(n+1)//2` (≥50%) of the **same-beat** multi-panel drift samples must flag a dimension before an |
| 51 | exception is written (bump to 75% if drift-from-noise floods). One noisy panel must **not** mutate the bible. |
| 52 | - **MAX_PANELS_PER_UPDATE** = 6 (cost cap on the Gemini drift pass). |
| 53 | - **GATE** = the deterministic `style_bible` gate (6 dims ≥4 + 6 hard vetoes) — **rule-check, NO cross-model |
| 54 | gate** ( |