Video-Editing
Wiki/Decisions.md
Decisions — Demo Factory
All decisions locked. See SCRATCHPAD for full rationale. Last updated: 2026-05-04
| ID | Decision | Detail |
|---|---|---|
| D0 | Claude Code plugin | Not SaaS, not desktop app. Runs from ~/.claude/plugins/demo-factory/. Desktop + Terminal both covered. |
| D1 | 3 invocation surfaces | /demo slash command + conversational skill + standalone CLI — same engine, three reach paths. |
| D2 | 4-gate resumable pipeline | Capture → Synopsis → Script → Render, each with a user approval gate. Bypassable with --yolo. |
| D3 | Hybrid capture | Replay capture.yaml if exists (deterministic). Live-record mode on first run → auto-generates capture.yaml. |
| D4 | Layered docs | Vault → Repo README/CLAUDE.md → user-pasted synopsis. Synopsis gate shows provenance. |
| D5 | Multi-track script | script.json has three parallel tracks: VO_TRACK (11Labs), TEXT_OVERLAY_TRACK (Remotion), AVATAR_TRACK (Heygen). Same source script, different track activations per channel. |
| D6 | Remotion render engine | React for video. Programmatic, deterministic, re-renderable. AI b-roll (Veo/Sora/Kling) deferred to Phase 2 as b-roll overlay only. |
| D7 | 9:16 default, all formats supported | 9:16 vertical (Reels/Shorts/TikTok), 16:9 landscape (YouTube), 1:1 square (in-feed). Default: 9:16. --format=all for full pack. |
| D8 | Pluggable providers | VoiceProvider, AvatarProvider, StorageProvider interfaces. New providers slot in without engine changes. Phase 1: 11Labs + Heygen export + Google Drive. |
| D9 | Two-layer brand model | Base profile (house style: font, avatar_id, voice_id, accent) + per-product override (colors, tagline). First-run autodetects from CSS/favicon. |
| D10 | Split storage | Text artifacts → vault (syncs). Binaries → local disk (fast IO). Final MP4s → Google Drive (shareable URL). |
| D11 | Prerequisites | ffmpeg: hard fail. Node ≥ 18: hard fail. Git: soft warn. Checked on every invoke. |
| D12 | Demo Readiness Check | Standalone read-only audit mode. Checks: server reachable, capture.yaml exists, brand profile exists, vault docs present. No LLM, no state. |
| D13 | Step -1 mandatory | Scope & Angle Selection runs before pipeline. Produces angle_slug + focus_keywords. Determines which vault docs to read and what script angle to take. |
| D14 | Doc selection strategy | List all docs → score by relevance to angle → read top-N within token budget. Never read source code. |
| D15 | Token discipline | Opus for LLM-2 (script-writer). Sonnet for LLM-1 (synopsis). Haiku for LLM-3/4 (capture, brand-extractor). Prompt caching on all LLM calls. |
| D16 | All skills via skill-creator | No hand-written skill files. All 4 sub-skills (synopsis, script-writer, capture, brand-extractor) created and iterated via skill-creator:skill-creator. |
| D17 | Format inference | LinkedIn/Stories context → 9:16. YouTube context → 16:9. No context → 9:16 default. |