diff --git a/.claude/skills/open-edit/SKILL.md b/.claude/skills/open-edit/SKILL.md index 4551282..4876dbc 100644 --- a/.claude/skills/open-edit/SKILL.md +++ b/.claude/skills/open-edit/SKILL.md @@ -23,10 +23,10 @@ scripted, never whether the work is supported.** the base frames are all derived from the file, which is what lets a compiled recipe run at zero tokens. - **Several videos** — ONE batch, not one run each. `prep/transcribe.ts`, `veed/go.ts` and `prep/prep.ts` all take ` [...]` and write one `runs/` per video, so the provider question, the sign-in - and any install happen once; steps 3-5 then run per `runs/`. + and any install happen once; STYLE, DESIGN + RENDER and MUX then run per `runs/`. - **No video — FULLY SUPPORTED, not a degraded mode.** Motion graphics, stills, slides, generated imagery, audio-only sources. Author the `.wv` INLINE per `pipeline/director-brief.md` and run the SAME - gates as every other run: `lint-template.ts` → `veed-engine-cli --verify` → `--record` (step 4's + gates as every other run: `lint-template.ts` → `veed-engine-cli --verify` → `--record` (the DESIGN + RENDER step's RENDER + VERIFY block — none of it reads `meta.json`). Choose `` from the ask, take the canvas and duration from the ask rather than from ffprobe, and drop only the steps that have no subject: the recipe draw (no footage to derive facets from), `probe-qa` (it diffs frames against source footage) and @@ -40,13 +40,13 @@ OWN reference/brand/concept — their materials are the design authority) is aut orchestrator, and creative iteration on a delivered result is REMIXED inline (no subagent). There are **no per-shot intermediates and no user-approval gate**. Read `docs/FLOW.md` for the map. -Default run (the FAST PATH) = steps 0 → 1 → 3 → 4 → 5 (step 2 is SKIPPED). Vibe/genre/energy come from the +Default run (the FAST PATH) = PREFLIGHT → PREP → SAMPLE ONE STYLE → DESIGN + RENDER → MUX AUDIO (ANALYSE is SKIPPED). Vibe/genre/energy come from the transcript; placement comes from the brief's safe margins; the style is SAMPLED by script; word reveal -timings are precomputed (`word-timings.json`). The runtime index is recipes-only, so a default run's step 4 +timings are precomputed (`word-timings.json`). The runtime index is recipes-only, so a default run's DESIGN + RENDER step is always `pipeline/scripts/generate-recipe.ts` — a SCRIPT, no model, no subagent: the recipe already did the design thinking, offline, and the code does the assembly + the full gate chain (lint → verify → record → probe). Creative face-1 is authored INLINE by the orchestrator; the only spawned agent is the opt-in analyse pass. -REFINEMENT is declared by `analysis.json` existing (step 2 ran on user request) — placement then composes +REFINEMENT is declared by `analysis.json` existing (the ANALYSE step ran on user request) — placement then composes from it instead of the safe margins. ## User-facing output — talk like a product, not a pipeline @@ -126,16 +126,17 @@ client discovering instructions inside the newly cloned runtime automatically. ## The flow -Written for the footage case, and steps 0, 4 and 5.5 hold for every run. Steps **1** (transcript, frames, -meta), **3** (style draw) and **5** (mux) derive from a source file, so a run with no video simply has no -subject for them — see INPUTS: authoring, lint, `--verify` and `--record` are unchanged. +Written for the footage case. PREFLIGHT, DESIGN + RENDER and PREVIEW hold for every run; **PREP** +(transcript, frames, meta), **SAMPLE ONE STYLE** (the style draw) and **MUX AUDIO** derive from a source +file, so a run with no video simply has no subject for them — see INPUTS: authoring, lint, `--verify` and +`--record` are unchanged. -### 0. PREFLIGHT — completed above · SCRIPT +### PREFLIGHT — completed above · SCRIPT Do not run a second dependency implementation. `pipeline/scripts/preflight.sh` is only a compatibility wrapper around the skill-bundled preflight. The provider choice — and any sign-in or install it implies — -remains the interactive step 1. +remains the interactive PREP step. -### 1. PREP — transcript, then frames + meta · SCRIPT +### PREP — transcript, then frames + meta · SCRIPT The transcript comes from the provider the user chose, and either way lands at `runs//transcript.json` (**each chunk = one beat**; chunks carry REAL per-word timings in `words: [{text, timestamp:[start,end]}]`). Nothing downstream cares which provider ran. **`` is the @@ -178,10 +179,10 @@ WhisperX so a later run cannot drift onto a different model: If they answer "WhisperX" without choosing a tier, take **fastest** (`small.en`), record it, and say which one you took — they can switch later. Never record `whisperx` with no tier. -- **veed** → `node --import tsx veed/go.ts [...]`, login flow below. When the browser opens, say +- **veed** → `node --import tsx veed/go.ts