wizz-method 2.17.1 → 2.18.0

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.
Files changed (47) hide show
  1. package/THIRD-PARTY-NOTICES.md +12 -0
  2. package/package.json +1 -1
  3. package/skills-registry.yaml +24 -6
  4. package/src/core-skills/_shared/handoff-protocol.md +3 -1
  5. package/src/modules/wizz/_shared/despacho-barato.md +1 -1
  6. package/src/modules/wizz/_shared/model-ladder.md +10 -0
  7. package/src/modules/wizz/_shared/video-pipeline.md +10 -0
  8. package/src/modules/wizz/agents/wizz-designer/customize.toml +2 -2
  9. package/src/modules/wizz/agents/wizz-maestro/SKILL.md +1 -1
  10. package/src/modules/wizz/agents/wizz-social/SKILL.md +2 -0
  11. package/src/modules/wizz/agents/wizz-social/customize.toml +10 -0
  12. package/src/modules/wizz/subagents/codex/wizz-exec-standard.toml +1 -1
  13. package/src/modules/wizz/subagents/codex/wizz-exec-strong.toml +1 -1
  14. package/src/modules/wizz/subagents/gemini/wizz-exec-standard.md +1 -1
  15. package/src/modules/wizz/subagents/gemini/wizz-exec-strong.md +1 -1
  16. package/src/modules/wizz/subagents/opencode/wizz-exec-standard.md +1 -1
  17. package/src/modules/wizz/subagents/opencode/wizz-exec-strong.md +1 -1
  18. package/src/modules/wizz/subagents/spec.yaml +6 -6
  19. package/src/modules/wizz/subagents/wizz-exec-standard.md +1 -1
  20. package/src/modules/wizz/subagents/wizz-exec-strong.md +1 -1
  21. package/src/skills-lib/wizz-hook-extractor/LICENSE +21 -0
  22. package/src/skills-lib/wizz-hook-extractor/SKILL.md +56 -0
  23. package/src/skills-lib/wizz-hook-extractor/references/examples.md +59 -0
  24. package/src/skills-lib/wizz-hook-extractor/references/formulas.md +136 -0
  25. package/src/skills-lib/wizz-hook-extractor/scripts/read-post.sh +83 -0
  26. package/src/skills-lib/wizz-ig-profile-optimizer/LICENSE +21 -0
  27. package/src/skills-lib/wizz-ig-profile-optimizer/SKILL.md +74 -0
  28. package/src/skills-lib/wizz-ig-profile-optimizer/scripts/capture-profile.sh +41 -0
  29. package/src/skills-lib/wizz-ig-profile-optimizer/scripts/limits.mjs +82 -0
  30. package/src/skills-lib/wizz-premium-landing-ui-researcher/SKILL.md +5 -0
  31. package/src/skills-lib/wizz-premium-landing-ui-researcher/references/component-sources.md +1 -1
  32. package/src/skills-lib/wizz-premium-landing-ui-researcher/references/source-first-protocol.md +1 -1
  33. package/src/skills-lib/wizz-premium-landing-ui-researcher/references/web-access-and-evidence.md +40 -0
  34. package/src/skills-lib/wizz-router/references/routing-table-flat.md +3 -1
  35. package/src/skills-lib/wizz-ui-component-curator/SKILL.md +5 -3
  36. package/src/skills-lib/wizz-video-effects/SKILL.md +1 -0
  37. package/src/skills-lib/wizz-video-styles/SKILL.md +9 -3
  38. package/src/skills-lib/wizz-video-styles/data/recipes.json +33 -1
  39. package/src/skills-lib/wizz-video-styles/data/references.json +175 -0
  40. package/src/skills-lib/wizz-video-styles/data/styles.json +55 -0
  41. package/src/skills-lib/wizz-video-styles/references/generated-prompts.md +60 -0
  42. package/src/skills-lib/wizz-video-styles/references/measured-patterns.md +2 -0
  43. package/src/skills-lib/wizz-video-styles/references/style-picker.md +5 -3
  44. package/src/skills-lib/wizz-video-styles/references/styles/tipografia-cinetica.md +68 -0
  45. package/src/skills-lib/wizz-video-styles/scripts/analyze.sh +2 -1
  46. package/src/skills-lib/wizz-video-styles/scripts/beat_grid.py +68 -0
  47. package/src/skills-lib/wizz-video-styles/scripts/references.mjs +264 -0
@@ -142,3 +142,15 @@ the `<Font>-OFL.txt` file in the same folder.
142
142
  - Path: `src/skills-lib/wizz-video-styles/assets/audio/music/cinematic-tense.mp3`, `src/skills-lib/wizz-video-styles/assets/audio/music/meme-beat.mp3`
143
143
  - Origin: "Hitman" and "Monkeys Spinning Monkeys" by Kevin MacLeod ([incompetech.com](https://incompetech.com)), via Wikimedia Commons
144
144
  - License: Creative Commons Attribution 4.0 (CC BY 4.0). Both tracks were trimmed, faded and loudness-normalised; the exact changes and the credit text to paste are in `src/skills-lib/wizz-video-styles/assets/audio/CREDITS.md`.
145
+
146
+ ## wizz-video-styles (kinetic typography and generated-video prompts)
147
+
148
+ - Path: `src/skills-lib/wizz-video-styles/scripts/beat_grid.py`, `src/skills-lib/wizz-video-styles/data/recipes.json` (style `tipografia-cinetica`), `src/skills-lib/wizz-video-styles/references/generated-prompts.md`
149
+ - Origin: the beat-grid approach and the kinetic typography recipe follow [mexicat/pdoom-video](https://github.com/mexicat/pdoom-video) (beat, downbeat and lyric alignment driving the edit); no code was copied, and its `data/audio.json` was used only to check `beat_grid.py`. The prompt list links to [yihui-dev/awesome-opus5-5-videos](https://github.com/yihui-dev/awesome-opus5-5-videos), summarising 15 entries in our words; each prompt remains its creator's.
150
+ - License: MIT, copyright (c) 2026 Giacomo Magnanini (pdoom-video) and copyright (c) 2026 yihui-dev (awesome-opus5-5-videos).
151
+
152
+ ## wizz-hook-extractor and wizz-ig-profile-optimizer
153
+
154
+ - Path: `src/skills-lib/wizz-hook-extractor/`, `src/skills-lib/wizz-ig-profile-optimizer/`
155
+ - Origin: adapted from `skills/ig-hook-extractor/`, `references/hook-formulas.md` and `skills/ig-profile-optimizer/` of [sergebulaev/instagram-skills](https://github.com/sergebulaev/instagram-skills). Translated to Brazilian Portuguese, hooks mapped to the Viral Script Blueprint types, and extended with reading the post or profile directly (yt-dlp, local transcription, agent-browser) and a limits checker.
156
+ - License: MIT (full text at `src/skills-lib/wizz-hook-extractor/LICENSE` and `src/skills-lib/wizz-ig-profile-optimizer/LICENSE`, copyright (c) 2026 Sergey Bulaev)
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.17.1",
4
+ "version": "2.18.0",
5
5
  "description": "Wizz Method: método de agência orientado por IA em PT-BR",
6
6
  "keywords": [
7
7
  "agile",
@@ -176,7 +176,7 @@ areas:
176
176
  door: motion
177
177
  when: "Gerar PNG/PDF editável por código (carrossel, quote card, infográfico) com fonte/cor/logo sempre certos. Traz canvas-fonts."
178
178
  rel:
179
- pairs_with: [wizz-algorithmic-art, wizz-social-content]
179
+ pairs_with: [wizz-algorithmic-art, wizz-hook-extractor, wizz-ig-profile-optimizer, wizz-social-content]
180
180
  - id: wizz-algorithmic-art
181
181
  door: motion
182
182
  when: "Visual generativo por código (flow fields, ruído, partículas) para fundo/textura de hero, único a cada render, sem cara de banco de imagem."
@@ -202,17 +202,17 @@ areas:
202
202
  after: [ctc-align, hyperframes, wizz-video-styles]
203
203
  before: [wizz-remotion-best-practices]
204
204
  pairs_with: [wizz-ad-creative]
205
- # Catálogo de estilos de vídeo curto medido em 99 shorts reais: decide QUAL
205
+ # Catálogo de estilos de vídeo curto medido em 104 shorts reais: decide QUAL
206
206
  # estilo copiar antes de voz, timing, efeitos e montagem.
207
207
  - id: wizz-video-styles
208
208
  door: motion
209
- when: "Decidir QUAL estilo de vídeo curto copiar a partir do inventário do material (pessoa real, só voz, b-roll, telas, produto) e entregar a receita medida em 99 shorts reais (ritmo de corte, legenda, áudio, zoom, gancho), para qualquer nicho. Gatilhos: 'estilo do vídeo', 'editar no estilo de', 'copiar a edição de', 'que estilo usar no reel', 'o vídeo ficou amador'."
209
+ when: "Decidir QUAL estilo de vídeo curto copiar a partir do inventário do material (pessoa real, só voz, b-roll, telas, produto) e entregar a receita medida em 104 shorts reais (ritmo de corte, legenda, áudio, zoom, gancho), para qualquer nicho, inclusive clipe com a letra da música e tipografia cinética (texto como imagem, cortes na batida). Gatilhos: 'estilo do vídeo', 'editar no estilo de', 'copiar a edição de', 'que estilo usar no reel', 'o vídeo ficou amador', 'clipe com a letra', 'tipografia cinética'."
210
210
  not_when:
211
211
  - "Decidir efeitos e SFX por evento, volume, LUFS e portões de zona segura: é wizz-video-effects; esta skill escolhe o estilo que ele depois refina."
212
212
  - "Montar o filme em React (cenas, legenda, <Audio>): é wizz-remotion-best-practices."
213
213
  rel:
214
214
  before: [ctc-align, wizz-video-effects, wizz-remotion-best-practices]
215
- pairs_with: [wizz-social-content, get-brolls, hyperframes]
215
+ pairs_with: [wizz-social-content, get-brolls, hyperframes, wizz-hook-extractor]
216
216
  clis:
217
217
  - id: hyperframes
218
218
  when: "DESENHAR telas de vídeo em HTML/CSS (HTML→MP4, agent-native, 20+ skills): cena isolada e MUDA — maqueta de WhatsApp/ChatGPT, gráfico animado, título, loop. NÃO usar para montagem com áudio/SFX/legenda sincronizada (posicionador de áudio falhou em produção, ~2,76s de drift; CSS vaza entre telas): a montagem final é do Remotion (regra: HyperFrames desenha, Remotion monta — ver _shared/video-pipeline.md do módulo wizz). Precisa ffmpeg + Node 22 + Chrome headless."
@@ -365,7 +365,7 @@ areas:
365
365
  - id: wizz-humanizer
366
366
  when: "Texto soa AI: remover padrões de escrita de máquina, dar naturalidade."
367
367
  rel:
368
- pairs_with: [wizz-copywriting]
368
+ pairs_with: [wizz-copywriting, wizz-ig-profile-optimizer]
369
369
  - id: wizz-email-sequence
370
370
  when: "Sequências de e-mail (onboarding, nurture, lançamento)."
371
371
  rel:
@@ -509,7 +509,7 @@ areas:
509
509
  rel:
510
510
  after: [pesquisa-de-publico-do-piva, wizz-lowticket-minerador]
511
511
  before: [wizz-copywriting]
512
- pairs_with: [wizz-pricing-strategy, wizz-lowticket-metodologia]
512
+ pairs_with: [wizz-ig-profile-optimizer, wizz-pricing-strategy, wizz-lowticket-metodologia]
513
513
  # Módulo lowticket (src/modules/lowticket) — ver nota em ads.skills. Desde
514
514
  # 2026-09-18 o módulo inteiro mora aqui (um dono por skill): copy e ads
515
515
  # chegam nele pelo `rel`. Isto é comentário de propósito — escrever "vale
@@ -591,6 +591,7 @@ areas:
591
591
  - "Editar/revisar texto de social já escrito: aí é wizz-copy-editing."
592
592
  - "Pedir SÓ o asset de um Reel/vídeo — b-roll, 'imagens de apoio', 'cenas de apoio', imagem de corte, footage — sem que o texto ou o roteiro façam parte do pedido: a captação é get-brolls, na área designer. Esta entrada entra quando o TEXTO ou o ROTEIRO é parte do que se pede; se o pedido junta roteiro E captação, são 2 áreas."
593
593
  rel:
594
+ after: [wizz-hook-extractor]
594
595
  before: [buffer, get-brolls]
595
596
  pairs_with: [wizz-canvas-design, wizz-content-strategy, wizz-copy-editing, wizz-launch-strategy, wizz-video-styles]
596
597
  - id: wizz-content-strategy
@@ -602,6 +603,23 @@ areas:
602
603
  rel:
603
604
  after: [wizz-copywriting]
604
605
  pairs_with: [wizz-social-content]
606
+ # Adaptadas do sergebulaev/instagram-skills (MIT) em 2026-10-10: o resto
607
+ # do pacote (legenda, carrossel, calendário, humanizer) o Method já cobre.
608
+ - id: wizz-hook-extractor
609
+ when: "Destrinchar UM post viral do Instagram (Reel, carrossel ou legenda) a partir do link: por que funcionou, qual gancho e estrutura usou, e devolver um molde pra fazer um igual no tema do usuário. Gatilhos: 'por que esse reel viralizou', 'o que tem de bom nesse post', 'quero fazer um igual a esse', 'destrincha esse carrossel'."
610
+ not_when:
611
+ - "Escrever o roteiro ou o post do usuário do zero, sem um post de referência: é wizz-social-content."
612
+ - "Estudar um nicho ou vários criadores de uma vez: é a referência de engenharia reversa do wizz-social-content."
613
+ rel:
614
+ before: [wizz-social-content]
615
+ pairs_with: [wizz-video-styles, wizz-canvas-design]
616
+ - id: wizz-ig-profile-optimizer
617
+ when: "Auditar e reescrever o PERFIL do Instagram (foto, nome de busca, @, bio, link, categoria, destaques, grid, fixados) para o visitante seguir. Gatilhos: 'arruma minha bio', 'revisa meu perfil do instagram', 'o que colocar nos destaques', 'quais posts fixar'."
618
+ not_when:
619
+ - "Escrever legenda ou roteiro de post: é wizz-social-content."
620
+ - "Desenhar as capas dos destaques ou a arte dos posts: é wizz-canvas-design."
621
+ rel:
622
+ pairs_with: [wizz-canvas-design, wizz-humanizer, wizz-offer-forge]
605
623
  clis:
606
624
  - id: buffer
607
625
  when: "PUBLICAR/agendar de verdade em redes sociais (Instagram, TikTok, YouTube, LinkedIn, Facebook, Threads, X, Pinterest, Bluesky, Mastodon, Google Business) a partir do conteúdo que o wizz-social já gerou. Separa 'gerar' (Wizz) de 'publicar' (Buffer). Precisa de API key (`buffer init` ou env `BUFFER_API_KEY`). Imagem/vídeo NÃO sobe do disco: a mídia precisa estar numa URL pública HTTPS e direta (Cloudinary, Cloudflare R2), estável até o post publicar."
@@ -52,7 +52,9 @@ and pass along only the skill's entrypoint and the references actually needed
52
52
  escalate on its own: the delegator decides the next step (reissue with a
53
53
  higher cap, escalate one tier, or absorb the rest). An instructional rule, just
54
54
  like the anti-loop one: nothing programmatic counts the calls. Without `max_calls` the
55
- handoff works fine.
55
+ handoff works fine, EXCEPT when the work crosses more than one layer or ~8 files:
56
+ then the work is split per layer and every brief carries `max_calls` (rule and
57
+ default values in "Size before dispatch", `_shared/model-ladder.md`, wizz module).
56
58
  - needs planning (optional): a yes/no verdict on the planning factor
57
59
  of the complexity signal, assessed by the delegator. Keeps the receiver
58
60
  from re-deriving the signal to apply the Planning Gate
@@ -6,4 +6,4 @@
6
6
  # once. Don't copy this text into another toml: reference it via `include`.
7
7
  # ---
8
8
 
9
- Mechanical work (scanning, lookup, repetitive diff, an already-specified change): don't run it in the session when it's large; dispatch wizz-exec-mechanical/wizz-exec-standard subagents, partitioned one per file/module, up to 4 concurrent. The session's model is the boss: it does common work itself, dispatches, and decides with the user. Hard work escalates to wizz-exec-strong when the session's own tier isn't enough (same error twice, cause unclear, or architecture/schema/auth/payments/3+ modules); strong never dispatches, it returns ESCALAR to the session, which then dispatches wizz-exec-ultra with strong's findings. Diff review always goes to wizz-exec-review (pinned to the Strong tier, never inherits the session). Tell the user the tier and quantity of each dispatch. Full ladder in `_shared/model-ladder.md` and the rule in `_shared/token-economy.md` of the wizz module.
9
+ Mechanical work (scanning, lookup, repetitive diff, an already-specified change): don't run it in the session when it's large; dispatch wizz-exec-mechanical/wizz-exec-standard subagents, partitioned one per file/module, up to 4 concurrent. The session's model is the boss: it does common work itself, dispatches, and decides with the user. Hard work escalates to wizz-exec-strong when the session's own tier isn't enough (same error twice, cause unclear, or architecture/schema/auth/payments/3+ modules); strong never dispatches, it returns ESCALAR to the session, which then dispatches wizz-exec-ultra with strong's findings. Before any dispatch, measure the size, not just the difficulty: more than one layer (database, backend/worker, app/UI, external automation) or ~8 files means one executor per layer, each brief with max_calls at about 2/3 of the tier's turn cap; a cross-layer story never goes whole to one executor, and a partial return gets split, not "continue". Diff review always goes to wizz-exec-review (pinned to the Strong tier, never inherits the session). Tell the user the tier and quantity of each dispatch. Full ladder in `_shared/model-ladder.md` and the rule in `_shared/token-economy.md` of the wizz module.
@@ -53,6 +53,16 @@ Review workflows (`wizz-code-review`, `wizz-quick-dev`) stay pinned to the Stron
53
53
  - Default cap: 4 concurrent, 10 per request. Going past 10 dispatches in one request, or past 4 concurrent, requires asking the user first. Never two on the same file.
54
54
  - "Large" mechanical work is more than 3 files, or a scan across a directory — it still doesn't run in the session. A small mechanical change can run in the session.
55
55
 
56
+ ## Size before dispatch
57
+
58
+ The tier answers "how hard"; it does not answer "how big". Work that is easy per file but wide (several layers) fits the tier and still runs out of turns. Before dispatching, the session measures the size:
59
+
60
+ 1. **Count layers and files.** A layer is one of: database (migration, SQL, pgTAP), backend or worker, app or UI, external automation (n8n and similar), docs or script.
61
+ 2. **More than ~8 files OR more than one layer = split.** One executor per layer, with disjoint file sets. When one layer depends on another (database before app), dispatch them in sequence and pass the contract (function, table, and route names) in the next brief.
62
+ 3. **Budget in every brief.** A split dispatch always carries `max_calls` below the tier's turn cap: about 2/3 of it (35 for mechanical, 55 for standard, 80 for strong, 100 for ultra). The brief tells the executor to stop and report what is left when it gets close, instead of dying at the limit.
63
+ 4. **A whole story never goes to a single executor** when it crosses layers. The session (the boss) joins the parts, runs the suite, and makes the single commit.
64
+ 5. **A resume is not a plan.** If an executor comes back partial because of a limit, the session splits what is left into new briefs instead of sending "continue" to the same agent.
65
+
56
66
  ## Transparency
57
67
 
58
68
  Every dispatch states the tier and quantity in the text to the user ("1 × strong", "3 × mechanical"). Never just "executors".
@@ -23,6 +23,7 @@
23
23
  | Captions passing behind the person on a recorded talking head (matte) | embedded-captions (HyperFrames bundle), then the clip goes to Remotion |
24
24
  | Pick WHICH short-video style to copy (from the inventory of the material) and get its measured recipe, before voice, timing and effects | `wizz-video-styles` |
25
25
  | Word-by-word timestamps of the TTS narration (sync captions/cuts/animation) | `ctc-align` |
26
+ | Beat grid of a song (BPM, beats, downbeats) to snap scene cuts to the music | `wizz-video-styles/scripts/beat_grid.py` |
26
27
  | Decide which effects and SFX go where (and where not), then gate the render: safe zone (ad or organic), density, excess, rhythm, loudness | `wizz-video-effects` |
27
28
  | Narration / voice / TTS / voice cloning | `voicebox` |
28
29
  | **Source B-roll / inserts: find real footage of what the script names** | `get-brolls` (darwin) |
@@ -57,6 +58,15 @@
57
58
  9. **Fine cut** (if there's recorded footage) — `buttercut`.
58
59
  10. **Publishing/distribution** — social/ads area.
59
60
 
61
+ **Music-driven pieces (lyric video, kinetic typography over a song).** The song
62
+ replaces the narration in steps 2 and 3: `ctc-align` runs on the vocal with the
63
+ lyrics as the script (separate the vocal first when the mix buries it), and
64
+ `wizz-video-styles/scripts/beat_grid.py` gives the BPM, beats and downbeats
65
+ (also as frames). Scene windows start on a downbeat; inside a scene, each word
66
+ lands on its ctc-align timestamp. HyperFrames still draws the scenes silent and
67
+ Remotion still assembles them with the song. Style and recipe: the kinetic typography card
68
+ in `wizz-video-styles`.
69
+
60
70
  **Screens vs. B-roll — they are not interchangeable.** `hyperframes` invents a
61
71
  visual (a mockup, a chart, a title); `get-brolls` finds the real thing that the
62
72
  narration cites. A script that says "Nvidia's CEO announced" wants the actual
@@ -41,7 +41,7 @@ principles = [
41
41
  [[agent.menu]]
42
42
  code = "LP"
43
43
  description = "Landing page, hero, conversion page, 3D experience"
44
- prompt = "Invoke the GLOBAL skill 'wizz-premium-landing-ui-researcher' via the Skill tool to research references/components and build the landing page. Bring the result in easy {communication_language} and show the visual before the code."
44
+ prompt = "Invoke the GLOBAL skill 'wizz-premium-landing-ui-researcher' via the Skill tool to research references/components and build the landing page. Mining runs on live sources opened in this session (load WebSearch/WebFetch first; curl, agent-browser or the local source cache as fallback); with none of them, report BLOCKED instead of recommending from memory. Bring the result in easy {communication_language} and show the visual before the code."
45
45
 
46
46
  [[agent.menu]]
47
47
  code = "UI"
@@ -61,4 +61,4 @@ prompt = "Invoke the GLOBAL skill 'wizz-taste-skill' via the Skill tool to revie
61
61
  [[agent.menu]]
62
62
  code = "CC"
63
63
  description = "Choose components that fit the existing project"
64
- prompt = "Invoke the GLOBAL skill 'wizz-ui-component-curator' via the Skill tool to analyze the project and recommend compatible components."
64
+ prompt = "Invoke the GLOBAL skill 'wizz-ui-component-curator' via the Skill tool to analyze the project and recommend compatible components. Mining runs on live sources opened in this session (load WebSearch/WebFetch first; curl, agent-browser or the local source cache as fallback); with none of them, report BLOCKED instead of recommending from memory."
@@ -125,7 +125,7 @@ Handoff rule:
125
125
 
126
126
  **Invocation contract:** `areas.<area>.agent` and the menu destinations are **persona skill** names, not native subagent types. In the current session, invoke `Skill(skill="wizz-growth", args="<CRO brief>")` (or the chosen area's skill). Never pass `wizz-growth`, `wizz-designer`, `wizz-qa`, or `wizz-maestro` as `subagent_type` just because the registry calls them agents.
127
127
 
128
- For isolated/parallel work, pick a `wizz-exec-*` that's on the list of available agents and pass in the brief the area skill to load, the shard, and the scope. The executor must load the full entry skill before the relevant references; it doesn't inherit the skills the maestro already loaded. If no suitable executor is available, run the skill in the current session. If the skill is also missing, report the missing install, without inventing an agent type or repeating the call that failed.
128
+ Before any `wizz-exec-*` dispatch, measure and partition: count layers (database, backend/worker, app/UI, external automation, docs) and files; more than one layer or ~8 files means one executor per layer, each brief with `max_calls`, and you join the parts (rule in "Size before dispatch", `_shared/model-ladder.md`). For isolated/parallel work, pick a `wizz-exec-*` that's on the list of available agents and pass in the brief the area skill to load, the shard, and the scope. The executor must load the full entry skill before the relevant references; it doesn't inherit the skills the maestro already loaded. If no suitable executor is available, run the skill in the current session. If the skill is also missing, report the missing install, without inventing an agent type or repeating the call that failed.
129
129
 
130
130
  When invoking the area agent, declare the brief in the format of the [shared handoff protocol](../../../../core-skills/_shared/handoff-protocol.md): `feature` (the slug resolved above, or `nenhuma`), `origem` (you, for the anti-loop — the agent never hands the same request back to you), `cérebro já consultado` (the up-to-3-line summary you already pulled in Step 2, cutting the agent's duplicate lookup), decisions already made in the chain, the entry skill and the relevant references (without loading references unrelated to the task), optional `model_hint`, and optional `max_calls` (cap on the executor's tool calls). The area agent that receives this summary skips its own `/cerebro ver` step.
131
131
 
@@ -54,6 +54,8 @@ Script and content (you yourself, with the blueprint + skills):
54
54
  - Create/schedule posts, editorial calendar → `wizz-social-content`
55
55
  - Decide WHAT to produce (pillars, topic clusters) → `wizz-content-strategy`
56
56
  - Review/edit the script or caption text before publishing → `wizz-copy-editing`
57
+ - Viral post someone shared ("why did this work", "I want one like it") → `wizz-hook-extractor`: it reads the link, classifies the hook with the Blueprint types and returns a mould in the RT format
58
+ - Instagram profile audit (bio, search NAME, link, highlights, pins) → `wizz-ig-profile-optimizer`
57
59
 
58
60
  Disambiguation: already have an approved script from the 3D pipeline and want the per-scene prompts → `prompts-imagem-video.md` (PROMPT item). Standalone image with no script → `biblioteca-prompts-imagem.md` (IMG item).
59
61
 
@@ -69,6 +69,16 @@ code = "POST"
69
69
  description = "Create/schedule social posts (LinkedIn, X, TikTok, IG) + optimized caption"
70
70
  prompt = "For an Instagram post caption, apply knowledge/legenda-instagram.md (hook, value, CTA, hashtags, SEO). To schedule or for other channels, invoke the GLOBAL skill 'wizz-social-content' via the Skill tool."
71
71
 
72
+ [[agent.menu]]
73
+ code = "HOOK"
74
+ description = "Tear down a viral post from its link (why it worked + a mould for your topic)"
75
+ prompt = "Invoke the GLOBAL skill 'wizz-hook-extractor' via the Skill tool with the link (or screenshot) and the user's topic. It reads the post itself, classifies the hook with the Blueprint types (Tipo 01 to 07) and returns a mould in the RT script format; offer RT next to turn the mould into a full script."
76
+
77
+ [[agent.menu]]
78
+ code = "PERFIL"
79
+ description = "Audit and rewrite the Instagram profile (bio, NAME, link, highlights, pins)"
80
+ prompt = "Invoke the GLOBAL skill 'wizz-ig-profile-optimizer' via the Skill tool with the @ and the profile's goal (grow, sell, land clients, authority). Highlight covers and pinned art go to wizz-canvas-design (designer area): offer wizz-maestro when the user wants them in the same delivery."
81
+
72
82
  [[agent.menu]]
73
83
  code = "VID"
74
84
  description = "Turn the script into a video (voice, render, cut)"
@@ -1,7 +1,7 @@
1
1
  # Gerado por tools/generate-subagents.mjs a partir de src/modules/wizz/subagents/spec.yaml. Não edite este arquivo direto: edite o spec.yaml e rode `npm run generate:subagents`.
2
2
  name = "wizz-exec-standard"
3
3
  description = """
4
- Standard Wizz Method executor for day-to-day implementation. Well-defined small/medium features, bug fixes with a known cause, multi-file edits, tests. Same tier as the recommended session model: dispatch it for isolation or parallel work (1 per file/module, up to 4 at once), not to escalate. Model on this platform: gpt-6-sol, effort medium.
4
+ Standard Wizz Method executor for day-to-day implementation. Well-defined small/medium features, bug fixes with a known cause, multi-file edits, tests. Same tier as the recommended session model: dispatch it for isolation or parallel work (1 per file/module, up to 4 at once), not to escalate. Size, not just difficulty: work crossing more than one layer (database, backend/worker, app/UI, external automation) or ~8 files is split, one dispatch per layer, each brief with max_calls. Model on this platform: gpt-6-sol, effort medium.
5
5
  """
6
6
  model = "gpt-6-sol"
7
7
  model_reasoning_effort = "medium"
@@ -1,7 +1,7 @@
1
1
  # Gerado por tools/generate-subagents.mjs a partir de src/modules/wizz/subagents/spec.yaml. Não edite este arquivo direto: edite o spec.yaml e rode `npm run generate:subagents`.
2
2
  name = "wizz-exec-strong"
3
3
  description = """
4
- Strong Wizz Method executor for hard work. Bugs with no known cause after one investigation cycle, cross-module refactors, schema/auth/payment changes, local technical decisions. The session dispatches it when the work is too hard for the session's own tier. If the work turns out to be ultra hard, it returns ESCALAR with its findings; it never dispatches anything itself. Model on this platform: gpt-6-sol, effort high.
4
+ Strong Wizz Method executor for hard work. Bugs with no known cause after one investigation cycle, cross-module refactors, schema/auth/payment changes, local technical decisions. Size, not just difficulty: work crossing more than one layer (database, backend/worker, app/UI, external automation) or ~8 files is split, one dispatch per layer, each brief with max_calls. The session dispatches it when the work is too hard for the session's own tier. If the work turns out to be ultra hard, it returns ESCALAR with its findings; it never dispatches anything itself. Model on this platform: gpt-6-sol, effort high.
5
5
  """
6
6
  model = "gpt-6-sol"
7
7
  model_reasoning_effort = "high"
@@ -2,7 +2,7 @@
2
2
  # Gerado por tools/generate-subagents.mjs a partir de src/modules/wizz/subagents/spec.yaml. Não edite este arquivo direto: edite o spec.yaml e rode `npm run generate:subagents`.
3
3
  name: wizz-exec-standard
4
4
  description: >-
5
- Standard Wizz Method executor for day-to-day implementation. Well-defined small/medium features, bug fixes with a known cause, multi-file edits, tests. Same tier as the recommended session model: dispatch it for isolation or parallel work (1 per file/module, up to 4 at once), not to escalate. Model on this platform: gemini-3.5-flash.
5
+ Standard Wizz Method executor for day-to-day implementation. Well-defined small/medium features, bug fixes with a known cause, multi-file edits, tests. Same tier as the recommended session model: dispatch it for isolation or parallel work (1 per file/module, up to 4 at once), not to escalate. Size, not just difficulty: work crossing more than one layer (database, backend/worker, app/UI, external automation) or ~8 files is split, one dispatch per layer, each brief with max_calls. Model on this platform: gemini-3.5-flash.
6
6
  kind: local
7
7
  model: gemini-3.5-flash
8
8
  max_turns: 80
@@ -2,7 +2,7 @@
2
2
  # Gerado por tools/generate-subagents.mjs a partir de src/modules/wizz/subagents/spec.yaml. Não edite este arquivo direto: edite o spec.yaml e rode `npm run generate:subagents`.
3
3
  name: wizz-exec-strong
4
4
  description: >-
5
- Strong Wizz Method executor for hard work. Bugs with no known cause after one investigation cycle, cross-module refactors, schema/auth/payment changes, local technical decisions. The session dispatches it when the work is too hard for the session's own tier. If the work turns out to be ultra hard, it returns ESCALAR with its findings; it never dispatches anything itself. Model on this platform: gemini-3.1-pro-preview.
5
+ Strong Wizz Method executor for hard work. Bugs with no known cause after one investigation cycle, cross-module refactors, schema/auth/payment changes, local technical decisions. Size, not just difficulty: work crossing more than one layer (database, backend/worker, app/UI, external automation) or ~8 files is split, one dispatch per layer, each brief with max_calls. The session dispatches it when the work is too hard for the session's own tier. If the work turns out to be ultra hard, it returns ESCALAR with its findings; it never dispatches anything itself. Model on this platform: gemini-3.1-pro-preview.
6
6
  kind: local
7
7
  model: gemini-3.1-pro-preview
8
8
  max_turns: 120
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  # Gerado por tools/generate-subagents.mjs a partir de src/modules/wizz/subagents/spec.yaml. Não edite este arquivo direto: edite o spec.yaml e rode `npm run generate:subagents`.
3
3
  description: >-
4
- Standard Wizz Method executor for day-to-day implementation. Well-defined small/medium features, bug fixes with a known cause, multi-file edits, tests. Same tier as the recommended session model: dispatch it for isolation or parallel work (1 per file/module, up to 4 at once), not to escalate. Model on this platform: anthropic/claude-sonnet-5-5.
4
+ Standard Wizz Method executor for day-to-day implementation. Well-defined small/medium features, bug fixes with a known cause, multi-file edits, tests. Same tier as the recommended session model: dispatch it for isolation or parallel work (1 per file/module, up to 4 at once), not to escalate. Size, not just difficulty: work crossing more than one layer (database, backend/worker, app/UI, external automation) or ~8 files is split, one dispatch per layer, each brief with max_calls. Model on this platform: anthropic/claude-sonnet-5-5.
5
5
  mode: subagent
6
6
  model: anthropic/claude-sonnet-5-5
7
7
  ---
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  # Gerado por tools/generate-subagents.mjs a partir de src/modules/wizz/subagents/spec.yaml. Não edite este arquivo direto: edite o spec.yaml e rode `npm run generate:subagents`.
3
3
  description: >-
4
- Strong Wizz Method executor for hard work. Bugs with no known cause after one investigation cycle, cross-module refactors, schema/auth/payment changes, local technical decisions. The session dispatches it when the work is too hard for the session's own tier. If the work turns out to be ultra hard, it returns ESCALAR with its findings; it never dispatches anything itself. Model on this platform: anthropic/claude-opus-5-5.
4
+ Strong Wizz Method executor for hard work. Bugs with no known cause after one investigation cycle, cross-module refactors, schema/auth/payment changes, local technical decisions. Size, not just difficulty: work crossing more than one layer (database, backend/worker, app/UI, external automation) or ~8 files is split, one dispatch per layer, each brief with max_calls. The session dispatches it when the work is too hard for the session's own tier. If the work turns out to be ultra hard, it returns ESCALAR with its findings; it never dispatches anything itself. Model on this platform: anthropic/claude-opus-5-5.
5
5
  mode: subagent
6
6
  model: anthropic/claude-opus-5-5
7
7
  ---
@@ -74,11 +74,11 @@ tiers:
74
74
  - Return: what changed (1 line per file), test results, pending items. No narration.
75
75
  description:
76
76
  claude: >-
77
- Standard Wizz Method executor for day-to-day implementation. Well-defined small/medium features, bug fixes with a known cause, multi-file edits, tests. Same tier as the recommended session model: dispatch it for isolation or parallel work (1 per file/module, up to 4 at once), not to escalate.
77
+ Standard Wizz Method executor for day-to-day implementation. Well-defined small/medium features, bug fixes with a known cause, multi-file edits, tests. Same tier as the recommended session model: dispatch it for isolation or parallel work (1 per file/module, up to 4 at once), not to escalate. Size, not just difficulty: work crossing more than one layer (database, backend/worker, app/UI, external automation) or ~8 files is split, one dispatch per layer, each brief with max_calls.
78
78
  ladder: >-
79
- Standard Wizz Method executor for day-to-day implementation. Well-defined small/medium features, bug fixes with a known cause, multi-file edits, tests. Same tier as the recommended session model: dispatch it for isolation or parallel work (1 per file/module, up to 4 at once), not to escalate. Model on this platform: {model}.
79
+ Standard Wizz Method executor for day-to-day implementation. Well-defined small/medium features, bug fixes with a known cause, multi-file edits, tests. Same tier as the recommended session model: dispatch it for isolation or parallel work (1 per file/module, up to 4 at once), not to escalate. Size, not just difficulty: work crossing more than one layer (database, backend/worker, app/UI, external automation) or ~8 files is split, one dispatch per layer, each brief with max_calls. Model on this platform: {model}.
80
80
  codex: >-
81
- Standard Wizz Method executor for day-to-day implementation. Well-defined small/medium features, bug fixes with a known cause, multi-file edits, tests. Same tier as the recommended session model: dispatch it for isolation or parallel work (1 per file/module, up to 4 at once), not to escalate. Model on this platform: {model}, effort {effort}.
81
+ Standard Wizz Method executor for day-to-day implementation. Well-defined small/medium features, bug fixes with a known cause, multi-file edits, tests. Same tier as the recommended session model: dispatch it for isolation or parallel work (1 per file/module, up to 4 at once), not to escalate. Size, not just difficulty: work crossing more than one layer (database, backend/worker, app/UI, external automation) or ~8 files is split, one dispatch per layer, each brief with max_calls. Model on this platform: {model}, effort {effort}.
82
82
 
83
83
  strong:
84
84
  head: You are a senior executor for the Wizz Method. You receive a brief with a goal and context for hard work, where the root cause or the path forward isn't clear yet.
@@ -92,11 +92,11 @@ tiers:
92
92
  - Return: what changed (1 line per file), the root cause identified, test results, pending items. No narration.
93
93
  description:
94
94
  claude: >-
95
- Strong Wizz Method executor for hard work. Bugs with no known cause after one investigation cycle, cross-module refactors, schema/auth/payment changes, local technical decisions. The session dispatches it when the work is too hard for the session's own tier. If the work turns out to be ultra hard, it returns ESCALAR with its findings; it never dispatches anything itself.
95
+ Strong Wizz Method executor for hard work. Bugs with no known cause after one investigation cycle, cross-module refactors, schema/auth/payment changes, local technical decisions. Size, not just difficulty: work crossing more than one layer (database, backend/worker, app/UI, external automation) or ~8 files is split, one dispatch per layer, each brief with max_calls. The session dispatches it when the work is too hard for the session's own tier. If the work turns out to be ultra hard, it returns ESCALAR with its findings; it never dispatches anything itself.
96
96
  ladder: >-
97
- Strong Wizz Method executor for hard work. Bugs with no known cause after one investigation cycle, cross-module refactors, schema/auth/payment changes, local technical decisions. The session dispatches it when the work is too hard for the session's own tier. If the work turns out to be ultra hard, it returns ESCALAR with its findings; it never dispatches anything itself. Model on this platform: {model}.
97
+ Strong Wizz Method executor for hard work. Bugs with no known cause after one investigation cycle, cross-module refactors, schema/auth/payment changes, local technical decisions. Size, not just difficulty: work crossing more than one layer (database, backend/worker, app/UI, external automation) or ~8 files is split, one dispatch per layer, each brief with max_calls. The session dispatches it when the work is too hard for the session's own tier. If the work turns out to be ultra hard, it returns ESCALAR with its findings; it never dispatches anything itself. Model on this platform: {model}.
98
98
  codex: >-
99
- Strong Wizz Method executor for hard work. Bugs with no known cause after one investigation cycle, cross-module refactors, schema/auth/payment changes, local technical decisions. The session dispatches it when the work is too hard for the session's own tier. If the work turns out to be ultra hard, it returns ESCALAR with its findings; it never dispatches anything itself. Model on this platform: {model}, effort {effort}.
99
+ Strong Wizz Method executor for hard work. Bugs with no known cause after one investigation cycle, cross-module refactors, schema/auth/payment changes, local technical decisions. Size, not just difficulty: work crossing more than one layer (database, backend/worker, app/UI, external automation) or ~8 files is split, one dispatch per layer, each brief with max_calls. The session dispatches it when the work is too hard for the session's own tier. If the work turns out to be ultra hard, it returns ESCALAR with its findings; it never dispatches anything itself. Model on this platform: {model}, effort {effort}.
100
100
 
101
101
  ultra:
102
102
  head: You are the top-tier executor for the Wizz Method. You receive ultra-hard work that the strong executor could not solve, together with its findings.
@@ -2,7 +2,7 @@
2
2
  # Gerado por tools/generate-subagents.mjs a partir de src/modules/wizz/subagents/spec.yaml. Não edite este arquivo direto: edite o spec.yaml e rode `npm run generate:subagents`.
3
3
  name: wizz-exec-standard
4
4
  description: >-
5
- Standard Wizz Method executor for day-to-day implementation. Well-defined small/medium features, bug fixes with a known cause, multi-file edits, tests. Same tier as the recommended session model: dispatch it for isolation or parallel work (1 per file/module, up to 4 at once), not to escalate.
5
+ Standard Wizz Method executor for day-to-day implementation. Well-defined small/medium features, bug fixes with a known cause, multi-file edits, tests. Same tier as the recommended session model: dispatch it for isolation or parallel work (1 per file/module, up to 4 at once), not to escalate. Size, not just difficulty: work crossing more than one layer (database, backend/worker, app/UI, external automation) or ~8 files is split, one dispatch per layer, each brief with max_calls.
6
6
  model: sonnet
7
7
  effort: medium
8
8
  maxTurns: 80
@@ -2,7 +2,7 @@
2
2
  # Gerado por tools/generate-subagents.mjs a partir de src/modules/wizz/subagents/spec.yaml. Não edite este arquivo direto: edite o spec.yaml e rode `npm run generate:subagents`.
3
3
  name: wizz-exec-strong
4
4
  description: >-
5
- Strong Wizz Method executor for hard work. Bugs with no known cause after one investigation cycle, cross-module refactors, schema/auth/payment changes, local technical decisions. The session dispatches it when the work is too hard for the session's own tier. If the work turns out to be ultra hard, it returns ESCALAR with its findings; it never dispatches anything itself.
5
+ Strong Wizz Method executor for hard work. Bugs with no known cause after one investigation cycle, cross-module refactors, schema/auth/payment changes, local technical decisions. Size, not just difficulty: work crossing more than one layer (database, backend/worker, app/UI, external automation) or ~8 files is split, one dispatch per layer, each brief with max_calls. The session dispatches it when the work is too hard for the session's own tier. If the work turns out to be ultra hard, it returns ESCALAR with its findings; it never dispatches anything itself.
6
6
  model: opus
7
7
  effort: high
8
8
  maxTurns: 120
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Sergey Bulaev
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,56 @@
1
+ ---
2
+ name: wizz-hook-extractor
3
+ description: Reverse-engineers the hook of one viral Instagram Reel, carousel or post and hands back a mould ready to fill with the user's own topic. Reads the post itself from the link (caption, metrics, first 3 seconds, local transcription), classifies the hook with the Viral Script Blueprint types (Tipo 01 to 07) plus the post shape, breaks down hook, body and close, names the goal the original chased and why it worked, points the editing style from the wizz-video-styles catalogue, and lists what not to copy. Use when someone shares a viral post and wants to know why it worked or wants to do one like it. Triggers - por que esse reel viralizou, o que tem de bom nesse post, quero fazer um igual a esse, destrincha esse carrossel, extrai o gancho desse vídeo. Does not write the user's own script from scratch (that is wizz-social-content and the Blueprint) and does not study a whole niche (that is the reverse-engineering reference of wizz-social-content).
4
+ ---
5
+
6
+ # wizz-hook-extractor: why that post worked, as a mould
7
+
8
+ One post in, one teardown out: the hook classified the way the Method already numbers hooks, the structure around it, the goal, and a mould with `{slots}` that drops into a script without rework.
9
+
10
+ All text delivered to the user is Brazilian Portuguese with "você" (never "tu/teu"), and no em dash in anything a third party reads.
11
+
12
+ ## Inputs
13
+
14
+ - A link (`instagram.com/reel/...`, `/p/...`, `/tv/...`). Preferred: the skill reads it.
15
+ - Or, when reading is impossible: a screenshot, or the caption plus the text on the slides, or a description of the Reel's first 3 seconds.
16
+ - The user's topic (or project), to aim the mould. If missing, ask once, in the same message as anything else.
17
+
18
+ ## Steps
19
+
20
+ 1. **Read the post yourself.** Run `scripts/read-post.sh <url> <out_dir>` (out_dir under the project's `_wizz-output/`). It writes `post.json` (surface, caption, author, likes, comments, views), and for a Reel `head.png` (first 3 s, 6 frames), `sheet.png` (whole Reel) and `transcript.json` (first 10 s, local Whisper through `npx hyperframes transcribe`, no API key). **Open the images**: the hook of a Reel is usually the text on the first frame. When `post.json` says `speech: suspeita` or `sem fala`, the transcript is Whisper inventing words over music: ignore it and read the hook from the frames.
21
+ - Exit 3 = Instagram asked for a login. Ask the user, once, whether to use their own logged-in browser for this read (`WIZZ_IG_COOKIES_BROWSER=<browser>`); never do it without that OK. If they decline, ask for a screenshot or the pasted text.
22
+ - A carousel comes back with the slide count only: capture the slides with `wizz-agent-browser` (one screenshot per slide) or ask for them.
23
+ 2. **Classify the hook** with [references/formulas.md](references/formulas.md): the Blueprint type (Tipo 01 to 07, or "fora dos 7") with a confidence from 0 to 1, and the post shape. When two fit, give both with their scores; the tiebreaker is the goal and the surface.
24
+ 3. **Break down the structure.** Hook (first ~125 characters of the caption, slide 1, or the first 3 s), body (role of each slide, or the order of the Reel's beats with timestamps from the transcript), close (what earns the save, send, comment or follow).
25
+ 4. **Goal and why it worked.** One goal (saves, shares, comments, follows) and two or three reasons tied to what is on the post, not generic psychology. Metrics from `post.json` back the claim when present (comments far above the usual ratio = a comment hook).
26
+ 5. **Editing style (Reels).** Compare `sheet.png` with the cards of `wizz-video-styles` and name the closest style. That is what keeps the hook and the edit in one delivery.
27
+ 6. **Mould.** The shape's skeleton from formulas.md, slots renamed to the user's topic. For a Reel, write it in the `wizz-social` script format (`[HOOK · Tipo NN]`, `[TUTORIAL]`, `[RESULTADO VISUAL]`, `[CTA triplo]`) so it pastes into a script. For a carousel, slide by slide.
28
+ 7. **What not to copy.** Formulas.md section 5, applied to this post.
29
+
30
+ ## Delivery
31
+
32
+ ```
33
+ 🔎 POST LIDO: superfície · autor · métricas (curtidas, comentários, views) · como foi lido (link / login / print)
34
+ 🎣 GANCHO: Tipo NN · nome (0,x) [+ 2ª opção] · formato: {forma do post}
35
+ 🧱 ESTRUTURA: gancho / corpo / fechamento
36
+ 🎯 OBJETIVO: salvar | enviar | comentar | seguir · por que funcionou (2 a 3 motivos ligados ao post)
37
+ 🎬 ESTILO DE EDIÇÃO: {estilo do wizz-video-styles} (Reels)
38
+ 🧩 MOLDE PRO SEU TEMA: {molde com slots}
39
+ ⚠️ NÃO COPIAR: {lista}
40
+ ```
41
+
42
+ Worked examples: [references/examples.md](references/examples.md).
43
+
44
+ ## Hand-off
45
+
46
+ - Turning the mould into a full Reel script: `wizz-social` (RT command, Blueprint) or `wizz-social-content` for a post.
47
+ - The carousel slides themselves: `wizz-canvas-design`.
48
+ - The edit of the Reel: `wizz-video-styles` with the style named in step 5.
49
+ - Text that needs to sound less like AI before publishing: `wizz-humanizer`.
50
+
51
+ ## Hard rules
52
+
53
+ - Never invent a metric or a number for the mould; a slot stays a slot.
54
+ - Never log in on the user's behalf, and never store cookies or credentials. The browser session is theirs and is used only after their OK, for that read.
55
+ - Delete downloaded media after reading (the script does); keep only the frames, the transcript and `post.json`.
56
+ - One post per teardown. Studying a whole profile or niche is the reverse-engineering reference of `wizz-social-content`.
@@ -0,0 +1,59 @@
1
+ # Worked teardowns
2
+
3
+ Three teardowns in the delivery format of [SKILL.md](../SKILL.md). The posts are illustrative, not real.
4
+
5
+ ## Legenda (single image)
6
+
7
+ **Read:** caption starts "Apaguei 4.000 dos meus 6.000 inscritos da newsletter e a taxa de abertura dobrou."
8
+
9
+ - **Gancho:** Tipo 03 · O Comando Provocador (0,7), as a contrary action; second: Tipo 01 · A Façanha Pessoal (0,6), pulled by the exact numbers. Shape: Verdade contrária.
10
+ - **Superfície:** single image; the whole idea fits in the first 125 characters.
11
+ - **Estrutura:** hook = the counter-move with two real numbers, no setup. Body = one reason. Close = a "manda pra quem..." prompt.
12
+ - **Objetivo:** shares ("viu, eu falei").
13
+ - **Por que funcionou:** a defensible counter-move plus hard numbers is screenshot-ready; the numbers pre-empt the "prova" comment.
14
+ - **Molde:**
15
+ ```
16
+ Eu {ação contrária com número real} e {resultado melhor e inesperado}.
17
+
18
+ {a razão em uma linha}.
19
+
20
+ {pedido de envio ou de salvar}.
21
+ ```
22
+ - **Não copiar:** nothing in the hook; confirm the numbers are real before reusing.
23
+
24
+ ## Carrossel (7 slides)
25
+
26
+ **Read:** slide 1 "5 erros de precificação que estão te fazendo cobrar 40% a menos (o 4º quase ninguém percebe)"; slides 2 to 6 one error each; slide 7 the list on one slide + "salva".
27
+
28
+ - **Gancho:** Tipo 05 · A Lista Urgente (0,9). Shape: Lista.
29
+ - **Superfície:** carousel; one item per slide earns the save.
30
+ - **Estrutura:** slide 1 = promise + named loss + open loop ("o 4º"). Slides 2 to 6 = one error, one example. Slide 7 = recap, single ask.
31
+ - **Objetivo:** saves.
32
+ - **Por que funcionou:** a specific loss (40%) raises the stakes; the open loop pulls the swipe to slide 5.
33
+ - **Molde:**
34
+ ```
35
+ Slide 1: {N} erros de {tema} que estão te fazendo {perda com número} (o {k}º quase ninguém percebe)
36
+ Slides 2..N+1: erro, por que custa, o que fazer no lugar.
37
+ Último: a lista num slide só + "salva pra revisar antes de {momento}".
38
+ ```
39
+ - **Estilo de edição:** static carousel, no video: hand the slides to `wizz-canvas-design`.
40
+ - **Não copiar:** if any slide has 3 lines of text where 1 fits, cut it.
41
+
42
+ ## Reel (32 s, read with scripts/read-post.sh)
43
+
44
+ **Read:** head.png shows on-screen text "Você está postando Reels no pior horário possível"; transcript starts "Aqui está quando o seu público está online de verdade"; sheet.png shows a talking head with captions 2 to 3 words at a time, cutting to phone screenshots.
45
+
46
+ - **Gancho:** Tipo 06 · A Revelação de Erro (0,8). Shape: Quebra de padrão.
47
+ - **Superfície:** Reel; text on the first frame gets silent viewers.
48
+ - **Estrutura:** 0 to 3 s = mistake named on screen + first line goes straight to the fix. 3 to 25 s = three steps, each with a screenshot. 25 to 32 s = result on screen, "salva", follow.
49
+ - **Objetivo:** shares (people send it to whoever manages their account).
50
+ - **Estilo de edição (wizz-video-styles):** talking-head-cards (face + full-screen screenshots), captions as in talking-head-legenda.
51
+ - **Molde (pronto pro roteiro):**
52
+ ```
53
+ [HOOK · Tipo 06] Texto na tela: "Você está {erro comum} {consequência}."
54
+ 1ª fala: "Aqui está {a correção} de verdade."
55
+ [TUTORIAL] passo 1 → print / passo 2 → print / passo 3 → print
56
+ [RESULTADO VISUAL] → mostrar {métrica antes e depois}
57
+ [CTA triplo]
58
+ ```
59
+ - **Não copiar:** 25 hashtags in the caption.