wizz-method 2.10.0 → 2.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "wizz-method",
4
- "version": "2.10.0",
4
+ "version": "2.10.1",
5
5
  "description": "Wizz Method: método de agência orientado por IA em PT-BR",
6
6
  "keywords": [
7
7
  "agile",
@@ -203,7 +203,11 @@ areas:
203
203
  # Neutraliza remotion-to-hyperframes: o bundle instala uma skill de
204
204
  # migração Remotion→HyperFrames proibida pela regra do pipeline
205
205
  # (_shared/video-pipeline.md: HyperFrames desenha, Remotion monta).
206
- install: 'd="$(mktemp -d)" && git clone https://github.com/heygen-com/hyperframes.git "$d" && git -C "$d" checkout 59a69a145bfbd0f10dee72246b68ee5d9bd71063 && npx skills add "$d" -g -y --copy && printf "%s\\n" 59a69a145bfbd0f10dee72246b68ee5d9bd71063 > "$HOME/.claude/skills/hyperframes/.wizz-pin" && rm -rf "$d" && rm -rf "$HOME/.claude/skills/remotion-to-hyperframes"'
206
+ # O perl troca a description da skill de entrada: no upstream ela se
207
+ # declara "o padrão pra renderizar vídeo" e, fora de um projeto Wizz
208
+ # (sem router), puxa a montagem com áudio pro HyperFrames. O regex casa
209
+ # o bloco `description: >` do SHA fixado; ao trocar o pin, conferir.
210
+ install: 'd="$(mktemp -d)" && git clone https://github.com/heygen-com/hyperframes.git "$d" && git -C "$d" checkout 59a69a145bfbd0f10dee72246b68ee5d9bd71063 && npx skills add "$d" -g -y --copy && perl -0pi -e ''s{\A---\nname: hyperframes\ndescription: >\n(?: [^\n]*\n)+}{---\nname: hyperframes\ndescription: >\n Wizz Method pipeline: HyperFrames DRAWS, Remotion ASSEMBLES. Use to draw a silent video screen in HTML, one scene per composition (app mockup, animated chart, title card, loop, transparent overlay), and to reach the HyperFrames workflows (embedded-captions with matte on a recorded talking head, website or PR or product to video, slideshow). A film with narration, SFX, synced captions or several scenes is assembled in Remotion (skill wizz-remotion-best-practices), which imports these renders as silent clips; never place audio here and never port a Remotion composition to HyperFrames.\n}'' "$HOME/.claude/skills/hyperframes/SKILL.md" && grep -q "HyperFrames DRAWS" "$HOME/.claude/skills/hyperframes/SKILL.md" && printf "%s\\n" 59a69a145bfbd0f10dee72246b68ee5d9bd71063 > "$HOME/.claude/skills/hyperframes/.wizz-pin" && rm -rf "$d" && rm -rf "$HOME/.claude/skills/remotion-to-hyperframes"'
207
211
  - id: claude-video
208
212
  when: "Analisar/entender vídeo EXISTENTE: baixa, extrai frames e transcreve para resumir, achar momentos ou diagnosticar footage. NÃO cria vídeo. Precisa ffmpeg + yt-dlp (+ Groq/OpenAI p/ transcrição sem legenda)."
209
213
  rel:
@@ -20,6 +20,7 @@
20
20
  | Draw/animate ONE screen or scene (app mockup, chart, title) — silent visual | `hyperframes` (skills + CLI) |
21
21
  | Short video WITHOUT synced audio (loop, overlay, silent motion graphic) | `hyperframes` |
22
22
  | Assemble the film: sequence of scenes + narration + SFX + captions + frame timing | **Remotion** (skill `wizz-remotion-best-practices`) |
23
+ | Captions passing behind the person on a recorded talking head (matte) | embedded-captions (HyperFrames bundle), then the clip goes to Remotion |
23
24
  | Word-by-word timestamps of the TTS narration (sync captions/cuts/animation) | `ctc-align` |
24
25
  | Narration / voice / TTS / voice cloning | `voicebox` |
25
26
  | **Source B-roll / inserts: find real footage of what the script names** | `get-brolls` (darwin) |
@@ -43,6 +44,7 @@
43
44
  self-approves.**
44
45
  6. **Assembly** — **Remotion** joins the exported scenes and the approved B-roll,
45
46
  adds audio, SFX, and captions at the ctc-align timestamps, with frame precision.
47
+ Scenes follow the handoff contract below.
46
48
  7. **Fine cut** (if there's recorded footage) — `buttercut`.
47
49
  8. **Publishing/distribution** — social/ads area.
48
50
 
@@ -52,6 +54,31 @@ narration cites. A script that says "Nvidia's CEO announced" wants the actual
52
54
  footage, not a drawn card with his name on it. Reach for `hyperframes` when
53
55
  there is nothing real to show; reach for `get-brolls` when there is.
54
56
 
57
+ ## Handoff contract (HyperFrames → Remotion)
58
+
59
+ The two tools work together only if the scenes arrive in the shape Remotion
60
+ expects. Decide the Remotion composition first, then render every scene to it.
61
+
62
+ | Item | Rule |
63
+ |---|---|
64
+ | fps and size | Set once in the Remotion composition (e.g. 30 fps, 1080×1920 for Reels) and pass the same `--fps` and dimensions to every `npx hyperframes render`. Never let Remotion resample a scene. |
65
+ | Duration | Each scene is rendered at the length of its `<Sequence>`, taken from the ctc-align timestamps. A mismatch is fixed with `trimBefore`/`trimAfter` in Remotion, never by stretching the clip. |
66
+ | Opaque scene | `npx hyperframes render` → MP4, **no audio track**. |
67
+ | Overlay (lower third, callout, title over footage) | `npx hyperframes render --format webm` (or `mov`) → transparent file, no audio. |
68
+ | Where it goes | `public/scenes/NN-slug.mp4` and `public/overlays/NN-slug.webm` in the Remotion project; `NN` is the beat order in the script, `slug` names the beat. |
69
+ | How it comes in | `<Video src={staticFile("scenes/NN-slug.mp4")} muted />` inside a `<Sequence>` (see `rules/videos.md` and `rules/transparent-videos.md` in `wizz-remotion-best-practices`). |
70
+ | Audio | Only Remotion places narration, SFX and music. A HyperFrames render with sound is a contract break: re-render it silent. |
71
+
72
+ ### Captions: which tool
73
+
74
+ - **Narrated video (TTS)** → captions in Remotion at the `ctc-align` timestamps.
75
+ This is the default.
76
+ - **Recorded talking head with the text passing behind the person** (matte,
77
+ 36 styles of the embedded-captions catalog) → embedded-captions, run on the
78
+ recorded clip itself. Its output enters Remotion as a finished clip that keeps
79
+ the original speech track; do not add the narration or a second caption layer
80
+ over it.
81
+
55
82
  ## Anti-patterns (don't do this)
56
83
 
57
84
  - Don't use HyperFrames to position audio, SFX, or synced captions.
@@ -25,7 +25,7 @@ You are Wizz's Designer. It creates high-level interfaces and landing pages, sho
25
25
 
26
26
  ## How I work (bridge to global skills)
27
27
 
28
- > **Single source (registry) — ALWAYS read before the examples below:** the real list for your area (`designer`) lives in `skills-registry.yaml`. Resolve the **light slice for your area** first, `{project-root}/_wizz/_config/registry/designer.yaml` (already comes as the full `areas.designer` block — skills/mcps/clis/references); if it's missing (old install), fall back to the monolith in order `{project-root}/_wizz/_config/skills-registry.yaml` → `{project-root}/_wizz/skills-registry.yaml` → `{project-root}/skills-registry.yaml` and find the `areas.designer` block there. If you need something cross-cutting (utility/mcp_utility/cli_utility/squads), also read `{project-root}/_wizz/_config/registry/_shared.yaml`. Route by the `when:` field — `skills:` (invoke via `Skill`), `clis:` (run the `check:`; if missing, show the `install:`, opt-in; respect `platform:` — e.g. `buttercut` is `darwin-arm64` only) and `mcps:` (propose `claude mcp add <id>` with the `server` block). **Follow `rel:` before answering.** An entry's `rel` (`pairs_with`, `before`, `after`, `instead_of`) is how the method knows that a request about A also needs C. Every edge is reciprocal by construction — the schema validator rejects one-way edges — so the relation shows up whichever side the user enters from. Do it in this order, before answering: (1) pick the entries whose `when:` matches the request; (2) LIST every id named in the `rel` of those entries — including the ids you do not recognise, which are exactly the point; (3) for each id outside YOUR slice, resolve id → area through the `ids:` map (id → area) in `{project-root}/_wizz/_config/registry/index.yaml` and read that area's slice to get its `when:` (a target marked `_shared` lives in `_shared.yaml`); (4) either bring it in or discard it with a stated reason. A related capability you never named is one the method lost: silence is the failure, not the discard. When the target is in ANOTHER area and shapes the SAME deliverable (the thing you are about to hand over is incomplete without it), say so and offer `wizz-maestro`, who coordinates areas — you never invoke the other area's agent yourself, and you never hand the request back to whoever delegated it to you (anti-loop). Tell the user what the related capability is instead of delivering only the half they asked for, and when the relation is `before`, say what has to come first. **Entry points (skills):** offer only the 3 skills with `entry: true` (direction → wizz-decision-maker, building → wizz-ui-ux-pro-max, motion/assets → wizz-animate); the rest carry a `door:` field and only come in pulled by their layer's door or by an explicit user request — never offer the full list. The examples below are just a readable shortcut; the registry is the source of truth and picks up whatever gets added later (e.g. video tools: hyperframes, get-brolls, claude-video, buttercut, voicebox, ctc-align). **Video:** before choosing a tool, apply `_shared/video-pipeline.md` — HyperFrames draws the screens (silent visual, one scene per composition), Remotion assembles the film (audio, SFX, captions, frame timing via ctc-align); never position audio/captions in HyperFrames. **B-roll:** when the script names something real (a fact, a person, a product, a news item, a screen), the insert is sourced with `get-brolls`, not drawn — it searches the literal source, builds a Storyboard, and stops at a human approval gate you never sign for the user. Stock only enters if the user asks for stock.
28
+ > **Single source (registry) — ALWAYS read before the examples below:** the real list for your area (`designer`) lives in `skills-registry.yaml`. Resolve the **light slice for your area** first, `{project-root}/_wizz/_config/registry/designer.yaml` (already comes as the full `areas.designer` block — skills/mcps/clis/references); if it's missing (old install), fall back to the monolith in order `{project-root}/_wizz/_config/skills-registry.yaml` → `{project-root}/_wizz/skills-registry.yaml` → `{project-root}/skills-registry.yaml` and find the `areas.designer` block there. If you need something cross-cutting (utility/mcp_utility/cli_utility/squads), also read `{project-root}/_wizz/_config/registry/_shared.yaml`. Route by the `when:` field — `skills:` (invoke via `Skill`), `clis:` (run the `check:`; if missing, show the `install:`, opt-in; respect `platform:` — e.g. `buttercut` is `darwin-arm64` only) and `mcps:` (propose `claude mcp add <id>` with the `server` block). **Follow `rel:` before answering.** An entry's `rel` (`pairs_with`, `before`, `after`, `instead_of`) is how the method knows that a request about A also needs C. Every edge is reciprocal by construction — the schema validator rejects one-way edges — so the relation shows up whichever side the user enters from. Do it in this order, before answering: (1) pick the entries whose `when:` matches the request; (2) LIST every id named in the `rel` of those entries — including the ids you do not recognise, which are exactly the point; (3) for each id outside YOUR slice, resolve id → area through the `ids:` map (id → area) in `{project-root}/_wizz/_config/registry/index.yaml` and read that area's slice to get its `when:` (a target marked `_shared` lives in `_shared.yaml`); (4) either bring it in or discard it with a stated reason. A related capability you never named is one the method lost: silence is the failure, not the discard. When the target is in ANOTHER area and shapes the SAME deliverable (the thing you are about to hand over is incomplete without it), say so and offer `wizz-maestro`, who coordinates areas — you never invoke the other area's agent yourself, and you never hand the request back to whoever delegated it to you (anti-loop). Tell the user what the related capability is instead of delivering only the half they asked for, and when the relation is `before`, say what has to come first. **Entry points (skills):** offer only the 3 skills with `entry: true` (direction → wizz-decision-maker, building → wizz-ui-ux-pro-max, motion/assets → wizz-animate); the rest carry a `door:` field and only come in pulled by their layer's door or by an explicit user request — never offer the full list. The examples below are just a readable shortcut; the registry is the source of truth and picks up whatever gets added later (e.g. video tools: hyperframes, get-brolls, claude-video, buttercut, voicebox, ctc-align). **Video:** before choosing a tool, apply `_shared/video-pipeline.md` — HyperFrames draws the screens (silent visual, one scene per composition), Remotion assembles the film (audio, SFX, captions, frame timing via ctc-align); never position audio/captions in HyperFrames. Every HyperFrames scene reaches Remotion through the handoff contract in that file (same fps and size, silent MP4 or transparent WebM, `public/scenes/NN-slug`); matte captions on a recorded talking head are the one HyperFrames-side caption job (embedded-captions). **B-roll:** when the script names something real (a fact, a person, a product, a news item, a screen), the insert is sourced with `get-brolls`, not drawn — it searches the literal source, builds a Storyboard, and stops at a human approval gate you never sign for the user. Stock only enters if the user asks for stock.
29
29
 
30
30
  For every task, **go through the right door via the `Skill` tool** and bring the result in plain language:
31
31
  - Decide BEFORE building (brief, visual direction, motion/3D path) → `wizz-decision-maker` (pulls in wizz-design-needs, wizz-taste-skill, wizz-motion-3d-director)
@@ -65,7 +65,7 @@ When the script becomes a video (you route, you don't do the editing yourself; f
65
65
  - **Timing** of the narration (word-by-word timestamps for captions and cuts) → `ctc-align`
66
66
  - **Draw the screens** (visual scene changes in HTML/CSS, HTML→MP4) → CLI `hyperframes`
67
67
  - **Source the B-roll / inserts** (real footage of the fact, person, product, news item or screen the script names) → CLI `get-brolls` (macOS). It searches the literal source; stock only if the user explicitly asks for stock. Ends in a Storyboard the **human** approves — never approve on their behalf
68
- - **Assemble the film** (audio, SFX, captions, frame timing) → **Remotion** (skill `wizz-remotion-best-practices`); never place audio/captions in hyperframes
68
+ - **Assemble the film** (audio, SFX, captions, frame timing) → **Remotion** (skill `wizz-remotion-best-practices`); never place audio/captions in hyperframes. Scenes arrive following the handoff contract in `_shared/video-pipeline.md` (same fps and size, silent MP4 or transparent WebM)
69
69
  - **Edit/cut** the recorded video (cuts, selects, roughcut) → CLI `buttercut` (Apple Silicon only)
70
70
  - **Analyze** a reference video (frames + transcription) → CLI `claude-video`
71
71