wizz-method 2.17.2 → 2.19.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 (177) hide show
  1. package/THIRD-PARTY-NOTICES.md +12 -0
  2. package/package.json +5 -3
  3. package/removals.txt +10 -0
  4. package/skills-registry.yaml +72 -42
  5. package/src/bmm-skills/1-analysis/wizz-set-feature/SKILL.md +9 -9
  6. package/src/bmm-skills/4-implementation/wizz-create-story/SKILL.md +1 -1
  7. package/src/bmm-skills/4-implementation/wizz-dev-story/SKILL.md +1 -1
  8. package/src/bmm-skills/4-implementation/wizz-qa-generate-e2e-tests/SKILL.md +1 -1
  9. package/src/bmm-skills/4-implementation/wizz-qa-generate-e2e-tests/checklist.md +1 -1
  10. package/src/bmm-skills/4-implementation/wizz-quick-dev/SKILL.md +1 -1
  11. package/src/bmm-skills/4-implementation/wizz-sprint-status/SKILL.md +5 -5
  12. package/src/bmm-skills/module-help.csv +1 -1
  13. package/src/bmm-skills/module.yaml +1 -1
  14. package/src/core-skills/_shared/handoff-protocol.md +5 -3
  15. package/src/modules/lowticket/skills/wizz-lowticket-funil/SKILL.md +1 -1
  16. package/src/modules/lowticket/skills/wizz-lowticket-guia/SKILL.md +1 -1
  17. package/src/modules/lowticket/skills/wizz-lowticket-metodologia/SKILL.md +1 -1
  18. package/src/modules/lowticket/skills/wizz-lowticket-minerador/SKILL.md +1 -1
  19. package/src/modules/lowticket/skills/wizz-lowticket-pagina/SKILL.md +1 -1
  20. package/src/modules/lowticket/skills/wizz-lowticket-trafego/SKILL.md +1 -1
  21. package/src/modules/wizz/_shared/cerebro.md +7 -7
  22. package/src/modules/wizz/_shared/communication-rules.md +1 -1
  23. package/src/modules/wizz/_shared/despacho-barato.md +1 -1
  24. package/src/modules/wizz/_shared/encerramento.md +4 -3
  25. package/src/modules/wizz/_shared/model-ladder.md +10 -0
  26. package/src/modules/wizz/_shared/organizacao.md +8 -4
  27. package/src/modules/wizz/_shared/token-economy.md +1 -1
  28. package/src/modules/wizz/_shared/video-pipeline.md +13 -3
  29. package/src/modules/wizz/agents/wizz-ads/SKILL.md +4 -1
  30. package/src/modules/wizz/agents/wizz-ads/customize.toml +12 -3
  31. package/src/modules/wizz/agents/wizz-ads/knowledge/playbook.md +36 -0
  32. package/src/modules/wizz/agents/wizz-copy/SKILL.md +4 -1
  33. package/src/modules/wizz/agents/wizz-copy/customize.toml +2 -3
  34. package/src/modules/wizz/agents/wizz-copy/knowledge/playbook.md +34 -0
  35. package/src/modules/wizz/agents/wizz-designer/SKILL.md +2 -2
  36. package/src/modules/wizz/agents/wizz-designer/customize.toml +2 -3
  37. package/src/modules/wizz/agents/wizz-growth/SKILL.md +4 -1
  38. package/src/modules/wizz/agents/wizz-growth/customize.toml +33 -4
  39. package/src/modules/wizz/agents/wizz-growth/knowledge/playbook.md +39 -0
  40. package/src/modules/wizz/agents/wizz-maestro/SKILL.md +7 -9
  41. package/src/modules/wizz/agents/wizz-maestro/customize.toml +2 -3
  42. package/src/modules/wizz/agents/wizz-memoria/SKILL.md +7 -7
  43. package/src/modules/wizz/agents/wizz-memoria/customize.toml +5 -6
  44. package/src/modules/wizz/agents/wizz-qa/SKILL.md +5 -6
  45. package/src/modules/wizz/agents/wizz-qa/customize.toml +3 -4
  46. package/src/modules/wizz/agents/wizz-seo/SKILL.md +4 -1
  47. package/src/modules/wizz/agents/wizz-seo/customize.toml +2 -3
  48. package/src/modules/wizz/agents/wizz-seo/knowledge/playbook.md +31 -0
  49. package/src/modules/wizz/agents/wizz-social/SKILL.md +5 -3
  50. package/src/modules/wizz/agents/wizz-social/customize.toml +12 -3
  51. package/src/modules/wizz/overrides/wizz-agent-analyst.toml +2 -2
  52. package/src/modules/wizz/overrides/wizz-agent-architect.toml +3 -3
  53. package/src/modules/wizz/overrides/wizz-agent-dev.toml +3 -3
  54. package/src/modules/wizz/overrides/wizz-agent-pm.toml +2 -2
  55. package/src/modules/wizz/overrides/wizz-agent-tech-writer.toml +2 -2
  56. package/src/modules/wizz/overrides/wizz-agent-ux-designer.toml +2 -2
  57. package/src/modules/wizz/subagents/codex/wizz-exec-standard.toml +1 -1
  58. package/src/modules/wizz/subagents/codex/wizz-exec-strong.toml +1 -1
  59. package/src/modules/wizz/subagents/gemini/wizz-exec-standard.md +1 -1
  60. package/src/modules/wizz/subagents/gemini/wizz-exec-strong.md +1 -1
  61. package/src/modules/wizz/subagents/opencode/wizz-exec-standard.md +1 -1
  62. package/src/modules/wizz/subagents/opencode/wizz-exec-strong.md +1 -1
  63. package/src/modules/wizz/subagents/spec.yaml +6 -6
  64. package/src/modules/wizz/subagents/wizz-exec-standard.md +1 -1
  65. package/src/modules/wizz/subagents/wizz-exec-strong.md +1 -1
  66. package/src/skills-lib/_shared/complexity-signal.md +8 -9
  67. package/src/skills-lib/_shared/dispatch-rule.yaml +21 -0
  68. package/src/skills-lib/{cerebro → wizz-cerebro}/SKILL.md +1 -1
  69. package/src/skills-lib/{ctc-align → wizz-ctc-align}/SKILL.md +1 -1
  70. package/src/skills-lib/{enhance-prompt → wizz-enhance-prompt}/SKILL.md +1 -1
  71. package/src/skills-lib/{find-skills → wizz-find-skills}/SKILL.md +1 -1
  72. package/src/skills-lib/wizz-hook-extractor/LICENSE +21 -0
  73. package/src/skills-lib/wizz-hook-extractor/SKILL.md +56 -0
  74. package/src/skills-lib/wizz-hook-extractor/references/examples.md +59 -0
  75. package/src/skills-lib/wizz-hook-extractor/references/formulas.md +136 -0
  76. package/src/skills-lib/wizz-hook-extractor/scripts/read-post.sh +83 -0
  77. package/src/skills-lib/wizz-huashu-design/references/sfx-library.md +1 -1
  78. package/src/skills-lib/wizz-huashu-design/scripts/add-music.sh +1 -1
  79. package/src/skills-lib/wizz-huashu-design/scripts/html2pptx.js +45 -37
  80. package/src/skills-lib/wizz-huashu-design/scripts/mix-voiceover.sh +1 -1
  81. package/src/skills-lib/wizz-huashu-design/scripts/narrate-pipeline.mjs +11 -5
  82. package/src/skills-lib/wizz-huashu-design/scripts/test_scripts.py +209 -0
  83. package/src/skills-lib/wizz-huashu-design/scripts/tts-doubao.mjs +42 -28
  84. package/src/skills-lib/wizz-ig-profile-optimizer/LICENSE +21 -0
  85. package/src/skills-lib/wizz-ig-profile-optimizer/SKILL.md +74 -0
  86. package/src/skills-lib/wizz-ig-profile-optimizer/scripts/capture-profile.sh +41 -0
  87. package/src/skills-lib/wizz-ig-profile-optimizer/scripts/limits.mjs +82 -0
  88. package/src/skills-lib/wizz-inicio-de-projeto/SKILL.md +1 -1
  89. package/src/skills-lib/wizz-launch-readiness/SKILL.md +7 -7
  90. package/src/skills-lib/wizz-launch-readiness/references/02-seguranca.md +3 -3
  91. package/src/skills-lib/wizz-launch-readiness/references/03-seo-descoberta.md +5 -5
  92. package/src/skills-lib/wizz-launch-readiness/references/04-analytics-medicao.md +1 -1
  93. package/src/skills-lib/wizz-launch-readiness/references/05-conteudo-prova-social.md +6 -6
  94. package/src/skills-lib/wizz-launch-readiness/references/06-legal-lgpd.md +1 -1
  95. package/src/skills-lib/wizz-launch-readiness/references/08-fusao-priorizacao.md +1 -1
  96. package/src/skills-lib/wizz-offer-forge/SKILL.md +3 -3
  97. package/src/skills-lib/{pesquisa-de-publico-do-piva → wizz-pesquisa-de-publico-do-piva}/README.md +1 -1
  98. package/src/skills-lib/{pesquisa-de-publico-do-piva → wizz-pesquisa-de-publico-do-piva}/SKILL.md +1 -1
  99. package/src/skills-lib/wizz-router/SKILL.md +3 -3
  100. package/src/skills-lib/wizz-router/references/routing-table-flat.md +11 -9
  101. package/src/skills-lib/{security-audit-pentest → wizz-security-audit-pentest}/SKILL.md +1 -1
  102. package/src/skills-lib/{site-launch-kit → wizz-site-launch-kit}/SKILL.md +1 -1
  103. package/src/skills-lib/wizz-video-effects/SKILL.md +4 -3
  104. package/src/skills-lib/wizz-video-effects/references/data-contract.md +3 -3
  105. package/src/skills-lib/wizz-video-effects/scripts/fill_breaths.py +15 -1
  106. package/src/skills-lib/wizz-video-effects/scripts/test_fill_breaths.py +20 -0
  107. package/src/skills-lib/wizz-video-styles/SKILL.md +11 -5
  108. package/src/skills-lib/wizz-video-styles/data/recipes.json +65 -2
  109. package/src/skills-lib/wizz-video-styles/data/references.json +386 -1
  110. package/src/skills-lib/wizz-video-styles/data/styles.json +109 -0
  111. package/src/skills-lib/wizz-video-styles/references/generated-prompts.md +70 -0
  112. package/src/skills-lib/wizz-video-styles/references/measured-patterns.md +2 -0
  113. package/src/skills-lib/wizz-video-styles/references/style-picker.md +8 -4
  114. package/src/skills-lib/wizz-video-styles/references/styles/tipografia-cinetica.md +68 -0
  115. package/src/skills-lib/wizz-video-styles/references/styles/ui-morph.md +68 -0
  116. package/src/skills-lib/wizz-video-styles/scripts/analyze.sh +23 -10
  117. package/src/skills-lib/wizz-video-styles/scripts/beat_grid.py +68 -0
  118. package/src/skills-lib/wizz-video-styles/scripts/references.mjs +265 -0
  119. package/src/skills-lib/wizz-web-security/SKILL.md +1 -1
  120. package/tools/fetch-assets.mjs +1 -1
  121. package/tools/hooks/README.md +18 -14
  122. package/tools/hooks/rtk-rewrite.js +95 -0
  123. package/tools/hooks/security-defensive-context.js +17 -1
  124. package/tools/hooks/session-rules.js +25 -5
  125. package/tools/hooks/wizz-arrumar.js +126 -12
  126. package/tools/hooks/wizz-artifact-guard.js +41 -7
  127. package/tools/hooks/wizz-cerebro-lib.js +239 -0
  128. package/tools/hooks/wizz-close-reminder.js +124 -0
  129. package/tools/hooks/wizz-debug-lib.js +55 -0
  130. package/tools/hooks/wizz-decision-trace.js +19 -2
  131. package/tools/hooks/wizz-feature.js +20 -4
  132. package/tools/hooks/wizz-router-enforce.js +30 -13
  133. package/tools/installer/command-text.js +243 -0
  134. package/tools/installer/commands/catalog.js +2 -0
  135. package/tools/installer/commands/doctor.js +10 -12
  136. package/tools/installer/commands/fetch-assets.js +5 -5
  137. package/tools/installer/commands/install.js +6 -7
  138. package/tools/installer/commands/resolve.js +17 -17
  139. package/tools/installer/commands/trace-report.js +40 -37
  140. package/tools/installer/core/doctor.js +60 -55
  141. package/tools/installer/core/hooks-settings.js +88 -14
  142. package/tools/installer/core/hooks-smoke.js +134 -0
  143. package/tools/installer/core/installer.js +61 -52
  144. package/tools/installer/core/quick-update.js +2 -3
  145. package/tools/installer/install-text.js +201 -0
  146. package/tools/installer/modules/channel-plan.js +2 -2
  147. package/tools/installer/modules/env-vars.js +5 -6
  148. package/tools/installer/modules/skills-lib.js +1 -1
  149. package/tools/installer/ui.js +17 -9
  150. /package/src/skills-lib/{cerebro → wizz-cerebro}/references/comandos-pesquisa-e-memoria.md +0 -0
  151. /package/src/skills-lib/{cerebro → wizz-cerebro}/references/comandos-rotina-e-captura.md +0 -0
  152. /package/src/skills-lib/{cerebro → wizz-cerebro}/references/comandos-sessao.md +0 -0
  153. /package/src/skills-lib/{ctc-align → wizz-ctc-align}/scripts/align.py +0 -0
  154. /package/src/skills-lib/{enhance-prompt → wizz-enhance-prompt}/README.md +0 -0
  155. /package/src/skills-lib/{enhance-prompt → wizz-enhance-prompt}/references/KEYWORDS.md +0 -0
  156. /package/src/skills-lib/{pesquisa-de-publico-do-piva → wizz-pesquisa-de-publico-do-piva}/assets/template.html +0 -0
  157. /package/src/skills-lib/{pesquisa-de-publico-do-piva → wizz-pesquisa-de-publico-do-piva}/prompts.md +0 -0
  158. /package/src/skills-lib/{security-audit-pentest → wizz-security-audit-pentest}/references/stage-1-validacao-entrada.md +0 -0
  159. /package/src/skills-lib/{security-audit-pentest → wizz-security-audit-pentest}/references/stage-2-autorizacao.md +0 -0
  160. /package/src/skills-lib/{security-audit-pentest → wizz-security-audit-pentest}/references/stage-3-abuso-volume.md +0 -0
  161. /package/src/skills-lib/{security-audit-pentest → wizz-security-audit-pentest}/references/stage-4-vazamento-resposta.md +0 -0
  162. /package/src/skills-lib/{security-audit-pentest → wizz-security-audit-pentest}/references/stage-5-fusao-plano.md +0 -0
  163. /package/src/skills-lib/{site-launch-kit → wizz-site-launch-kit}/references/01-cta-principal.md +0 -0
  164. /package/src/skills-lib/{site-launch-kit → wizz-site-launch-kit}/references/02-barra-fixa-mobile.md +0 -0
  165. /package/src/skills-lib/{site-launch-kit → wizz-site-launch-kit}/references/03-tempo-de-resposta.md +0 -0
  166. /package/src/skills-lib/{site-launch-kit → wizz-site-launch-kit}/references/04-prova-social.md +0 -0
  167. /package/src/skills-lib/{site-launch-kit → wizz-site-launch-kit}/references/05-faq-decisao.md +0 -0
  168. /package/src/skills-lib/{site-launch-kit → wizz-site-launch-kit}/references/06-imagens-reais.md +0 -0
  169. /package/src/skills-lib/{site-launch-kit → wizz-site-launch-kit}/references/07-endereco-como-chegar.md +0 -0
  170. /package/src/skills-lib/{site-launch-kit → wizz-site-launch-kit}/references/08-titles.md +0 -0
  171. /package/src/skills-lib/{site-launch-kit → wizz-site-launch-kit}/references/09-open-graph.md +0 -0
  172. /package/src/skills-lib/{site-launch-kit → wizz-site-launch-kit}/references/10-breadcrumbs.md +0 -0
  173. /package/src/skills-lib/{site-launch-kit → wizz-site-launch-kit}/references/11-alt-text.md +0 -0
  174. /package/src/skills-lib/{site-launch-kit → wizz-site-launch-kit}/references/12-schema-local.md +0 -0
  175. /package/src/skills-lib/{site-launch-kit → wizz-site-launch-kit}/references/13-robots-sitemap.md +0 -0
  176. /package/src/skills-lib/{site-launch-kit → wizz-site-launch-kit}/references/14-privacidade-termos.md +0 -0
  177. /package/src/skills-lib/{site-launch-kit → wizz-site-launch-kit}/references/15-medicao.md +0 -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.2",
4
+ "version": "2.19.0",
5
5
  "description": "Wizz Method: método de agência orientado por IA em PT-BR",
6
6
  "keywords": [
7
7
  "agile",
@@ -61,6 +61,7 @@
61
61
  "format:check": "prettier --check \"**/*.{js,cjs,mjs,json,yaml}\"",
62
62
  "format:fix": "prettier --write \"**/*.{js,cjs,mjs,json,yaml}\"",
63
63
  "format:fix:staged": "prettier --write",
64
+ "generate:dispatch-rule": "node tools/generate-dispatch-rule.mjs",
64
65
  "generate:subagents": "node tools/generate-subagents.mjs",
65
66
  "install:wizz": "node tools/installer/wizz-cli.js install",
66
67
  "lint": "eslint . --ext .js,.cjs,.mjs,.yaml --max-warnings=0",
@@ -68,8 +69,9 @@
68
69
  "lint:md": "markdownlint-cli2 \"**/*.md\"",
69
70
  "prepare": "command -v husky >/dev/null 2>&1 && husky || exit 0",
70
71
  "quality": "npm run format:check && npm run lint && npm run lint:md && npm run docs:build && npm run quality:validate",
71
- "quality:validate": "npm test && npm run validate:refs && npm run validate:registry-schema && npm run validate:method-refs && npm run validate:model-ids && npm run validate:skills && npm run docs:validate-sidebar && npm run validate:generated && npm run eval:routing && npm run eval:feature && npm run eval:output",
72
+ "quality:validate": "npm test && npm run validate:refs && npm run validate:registry-schema && npm run validate:method-refs && npm run validate:model-ids && npm run validate:skills && npm run docs:validate-sidebar && npm run docs:validate-links && npm run validate:generated && npm run eval:routing && npm run eval:feature && npm run eval:output",
72
73
  "rebundle": "node tools/bundle-web-bundles.js",
74
+ "release": "node tools/release.mjs",
73
75
  "sync:check": "node tools/sync-check.mjs",
74
76
  "sync:global": "node tools/sync-global.mjs",
75
77
  "test": "node test/run-tests.js && npm run sync:check",
@@ -122,7 +124,7 @@
122
124
  "test:trace-report": "node test/test-trace-report.js",
123
125
  "test:urls": "node test/test-parse-source-urls.js",
124
126
  "test:workflow-path-regex": "node test/test-workflow-path-regex.js",
125
- "validate:generated": "npm run test:dispatch-rule && npm run test:routing-table-refs && npm run test:subagents-parity",
127
+ "validate:generated": "npm run test:dispatch-rule && node tools/generate-dispatch-rule.mjs --check && npm run test:routing-table-refs && npm run test:subagents-parity",
126
128
  "validate:method-refs": "node tools/validate-method-refs.js --strict",
127
129
  "validate:model-ids": "node tools/validate-model-ids.mjs",
128
130
  "validate:refs": "node tools/validate-file-refs.js --strict",
package/removals.txt CHANGED
@@ -69,3 +69,13 @@ taste-redesign
69
69
 
70
70
  # Removida na auditoria de contexto (2026-08-28): knowledge graph descontinuado.
71
71
  graphify
72
+
73
+ # Renomeadas para o prefixo wizz- (2026-10-15): as 7 que ficavam de fora.
74
+ # Nesses caminhos do projeto quem escrevia era o próprio install do Wizz.
75
+ cerebro
76
+ ctc-align
77
+ enhance-prompt
78
+ find-skills
79
+ pesquisa-de-publico-do-piva
80
+ security-audit-pentest
81
+ site-launch-kit
@@ -171,21 +171,22 @@ areas:
171
171
  door: motion
172
172
  when: "MONTAR o filme: vídeo em React (Remotion) com áudio, SFX, legenda e timing com precisão de frame. No pipeline de vídeo é o Remotion que faz a montagem final; o hyperframes só desenha as telas mudas (regra: HyperFrames desenha, Remotion monta — ver _shared/video-pipeline.md do módulo wizz)."
173
173
  rel:
174
- after: [buttercut, ctc-align, get-brolls, hyperframes, wizz-motion-3d-director, wizz-video-effects, wizz-video-styles]
174
+ after: [buttercut, wizz-ctc-align, get-brolls, hyperframes, wizz-motion-3d-director, wizz-video-effects, wizz-video-styles]
175
175
  - id: wizz-canvas-design
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."
183
183
  rel:
184
184
  pairs_with: [wizz-canvas-design]
185
- - id: ctc-align
185
+ - id: wizz-ctc-align
186
186
  door: motion
187
187
  when: "Timing por forced alignment: timestamps palavra a palavra de narração TTS para sincronizar legenda, corte de cena e animação com a fala. Fonte única de timing no pipeline de vídeo; substitui Whisper e estimativa manual."
188
188
  rel:
189
+ pairs_with: [ctc-align]
189
190
  after: [voicebox, wizz-video-styles]
190
191
  before: [wizz-remotion-best-practices, wizz-video-effects]
191
192
  # Motor de decisão de efeitos (Python) portado do sistema de efeitos do
@@ -199,20 +200,21 @@ areas:
199
200
  - "Montar o filme em React (sequência de cenas, legenda, <Audio>): é wizz-remotion-best-practices; esta skill decide os efeitos que ele monta."
200
201
  - "Filme de lançamento de produto com trilha e direção visual: é wizz-huashu-design."
201
202
  rel:
202
- after: [ctc-align, hyperframes, wizz-video-styles]
203
+ after: [wizz-ctc-align, hyperframes, wizz-video-styles]
203
204
  before: [wizz-remotion-best-practices]
204
205
  pairs_with: [wizz-ad-creative]
205
- # Catálogo de estilos de vídeo curto medido em 99 shorts reais: decide QUAL
206
+ # Catálogo de estilos de vídeo curto medido em 110 vídeos reais: decide QUAL
206
207
  # estilo copiar antes de voz, timing, efeitos e montagem.
207
208
  - id: wizz-video-styles
208
209
  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'."
210
+ 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 110 vídeos reais (ritmo de corte, legenda, áudio, zoom, gancho), para qualquer nicho, inclusive clipe com a letra da música, tipografia cinética (texto como imagem, cortes na batida) e vídeo do app só com a interface (UI morph: uma forma vira cada tela, cursor conduz, estilo Dribbble). 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', 'vídeo do app mexendo', 'anima o app num vídeo', 'animação da interface tipo Dribbble'."
210
211
  not_when:
211
212
  - "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
213
  - "Montar o filme em React (cenas, legenda, <Audio>): é wizz-remotion-best-practices."
214
+ - "Animar componente dentro do código do app (hover, transição de página, modal): é wizz-animate; aqui é vídeo para divulgar."
213
215
  rel:
214
- before: [ctc-align, wizz-video-effects, wizz-remotion-best-practices]
215
- pairs_with: [wizz-social-content, get-brolls, hyperframes]
216
+ before: [wizz-ctc-align, wizz-video-effects, wizz-remotion-best-practices]
217
+ pairs_with: [wizz-social-content, get-brolls, hyperframes, wizz-hook-extractor]
216
218
  clis:
217
219
  - id: hyperframes
218
220
  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."
@@ -256,7 +258,7 @@ areas:
256
258
  - "Cortar/montar footage já captado: é buttercut (corte fino) ou wizz-remotion-best-practices (montagem final)."
257
259
  - "Gerar imagem/vídeo por IA: é wizz-ad-creative, que escreve o prompt para o usuário colar no Flow ou em outra IA. O get-brolls busca material REAL, não sintético."
258
260
  - "Desenhar uma tela/cena em HTML: é hyperframes."
259
- - "Minerar/estudar criativo ou oferta de concorrente (Biblioteca de Anúncios, 'baixa esse anúncio pra eu ver'): é wizz-lowticket-minerador na área ads. O get-brolls capta insert para a SUA edição, com procedência registrada — não é ferramenta de inteligência competitiva, e o fato de saber baixar um Reel não o torna uma."
261
+ - "Minerar/estudar criativo ou oferta de concorrente (Biblioteca de Anúncios, 'baixa esse anúncio pra eu ver'): é wizz-lowticket-minerador na área growth. O get-brolls capta insert para a SUA edição, com procedência registrada — não é ferramenta de inteligência competitiva, e o fato de saber baixar um Reel não o torna uma."
260
262
  rel:
261
263
  after: [wizz-social-content]
262
264
  before: [buttercut, wizz-remotion-best-practices]
@@ -298,7 +300,7 @@ areas:
298
300
  - id: voicebox
299
301
  when: "Voz/TTS/clonagem de voz local para narração/VO de vídeo (7 engines TTS + Whisper STT). App desktop que expõe endpoint MCP local em runtime. Clone-and-run no projeto."
300
302
  rel:
301
- before: [ctc-align]
303
+ before: [wizz-ctc-align]
302
304
  platform: [darwin, linux]
303
305
  # Clone-and-run: o próprio repo responde o SHA, então o check compara com o
304
306
  # pin. O install repara um clone existente em vez de falhar no git clone.
@@ -306,10 +308,9 @@ areas:
306
308
  # Pin de supply chain (2026-08-23): checkout de SHA fixo; atualizar conscientemente.
307
309
  install: "{ [ -d voicebox/.git ] || git clone https://github.com/jamiepine/voicebox.git voicebox; } && git -C voicebox fetch --tags origin && git -C voicebox checkout 2bcb98d1a8b6fe05e15fbc1559e3085669e4035d"
308
310
  - id: ctc-align
309
- when: "Timestamps palavra a palavra CONFIÁVEIS de narração TTS (texto conhecido): sincronizar legenda, corte de cena, animação e elemento gráfico com a fala. Fonte única de timing em vídeo — substitui timestamps do Whisper e estimativa manual. Skill da lib: ctc-align (instalação + helper align.py + regras de âncora monotônica e duração mínima). Roda em CPU, sem CUDA."
311
+ when: "Timestamps palavra a palavra CONFIÁVEIS de narração TTS (texto conhecido): sincronizar legenda, corte de cena, animação e elemento gráfico com a fala. Fonte única de timing em vídeo — substitui timestamps do Whisper e estimativa manual. Skill da lib: wizz-ctc-align (instalação + helper align.py + regras de âncora monotônica e duração mínima). Roda em CPU, sem CUDA."
310
312
  rel:
311
- after: [voicebox, wizz-video-styles]
312
- before: [wizz-remotion-best-practices, wizz-video-effects]
313
+ pairs_with: [wizz-ctc-align]
313
314
  platform: [darwin, linux]
314
315
  # O pip grava o commit instalado no direct_url.json: o check compara com o pin.
315
316
  check: "test -x ./tools/ctc-align/.venv/bin/ctc-forced-aligner && grep -qs 64293cc6d711e57666c4a8b098e9fd93b381fd88 ./tools/ctc-align/.venv/lib/python*/site-packages/ctc_forced_aligner-*.dist-info/direct_url.json"
@@ -336,16 +337,18 @@ areas:
336
337
  agent: wizz-copy
337
338
  summary: "Copywriting: texto de venda, headlines, páginas, e-mails, sequências."
338
339
  skills:
339
- # Módulo lowticket: as skills dele moram SÓ na área growth desde
340
- # 2026-09-18 (decisão do dono: um dono por skill). A copy chega nelas
341
- # pelo `rel` de wizz-copywriting — que é o caminho que o método usa pra
342
- # tudo mais. Antes a mesma skill existia em copy, growth e ads, e o
340
+ # Módulo lowticket: um dono por skill desde 2026-09-18 (decisão do
341
+ # dono). Guia, metodologia, funil, minerador e página moram em growth;
342
+ # wizz-lowticket-trafego mora em ads (campanha Meta, bid cap, régua de
343
+ # corte é trabalho de ads; confirmado pelo dono em 2026-10-15). A copy
344
+ # chega nelas pelo `rel` de wizz-copywriting — que é o caminho que o
345
+ # método usa pra tudo mais. Antes a mesma skill existia em copy, growth e ads, e o
343
346
  # eval mostrava o custo: "qual prazo de garantia?" respondia copy,
344
347
  # growth ou ads em amostras diferentes, porque as três estavam certas.
345
348
  - id: wizz-copywriting
346
349
  when: "Escrever copy de venda/página/headline do zero ou reescrever. Na página de vendas completa, incluir wizz-offer-forge se faltar oferta aprovada e wizz-page-cro se faltar estrutura de conversão aprovada; headline/CTA isolado ou texto sobre oferta e estrutura já aprovadas não exige refazê-las."
347
350
  rel:
348
- after: [pesquisa-de-publico-do-piva, wizz-offer-forge]
351
+ after: [wizz-pesquisa-de-publico-do-piva, wizz-offer-forge]
349
352
  before: [wizz-copy-editing]
350
353
  pairs_with:
351
354
  [
@@ -365,7 +368,7 @@ areas:
365
368
  - id: wizz-humanizer
366
369
  when: "Texto soa AI: remover padrões de escrita de máquina, dar naturalidade."
367
370
  rel:
368
- pairs_with: [wizz-copywriting]
371
+ pairs_with: [wizz-copywriting, wizz-ig-profile-optimizer]
369
372
  - id: wizz-email-sequence
370
373
  when: "Sequências de e-mail (onboarding, nurture, lançamento)."
371
374
  rel:
@@ -396,7 +399,7 @@ areas:
396
399
  when: "Implementar dados estruturados / structured data."
397
400
  rel:
398
401
  after: [wizz-seo-audit]
399
- pairs_with: [site-launch-kit, wizz-ai-seo]
402
+ pairs_with: [wizz-site-launch-kit, wizz-ai-seo]
400
403
  - id: wizz-programmatic-seo
401
404
  when: "Gerar páginas em escala pra atacar muitas keywords."
402
405
  rel:
@@ -496,20 +499,20 @@ areas:
496
499
  when: "Setar/auditar tracking e medição (GA4, GTM, eventos, UTM, atribuição)."
497
500
  rel:
498
501
  pairs_with: [wizz-ab-test-setup, wizz-referral-program, wizz-tracking-audit]
499
- - id: site-launch-kit
502
+ - id: wizz-site-launch-kit
500
503
  when: "Site pronto ou quase pronto pra ir ao ar: revisão de pré-lançamento em 15 rodadas corretivas (CTA acima da dobra, barra fixa mobile, tempo de resposta, prova social real, FAQ+FAQPage, imagens reais, endereço, titles, Open Graph, breadcrumbs, alt text, schema local, robots/sitemap, LGPD, medição), com regra anti-invenção e PENDÊNCIAS. Gatilhos: 'vamos subir o site', 'checklist de lançamento', 'revisa antes do deploy', pré-go-live, ou um item isolado (og:image, FAQ com schema, robots.txt). Roda DEPOIS do site construído, ANTES do deploy."
501
504
  rel:
502
505
  pairs_with: [wizz-launch-readiness, wizz-schema-markup]
503
- - id: pesquisa-de-publico-do-piva
506
+ - id: wizz-pesquisa-de-publico-do-piva
504
507
  when: "Pesquisa profunda de público, VoC, níveis de consciência, matriz de ângulos e léxico nativo de oferta compilados em HTML (metodologia @soupiva)."
505
508
  rel:
506
509
  before: [wizz-copywriting, wizz-offer-forge]
507
510
  - id: wizz-offer-forge
508
511
  when: "Forjar oferta irresistível de resposta direta/infoproduto (mecanismo único, empilhamento de valor, garantia reversa, ponte de tráfego)."
509
512
  rel:
510
- after: [pesquisa-de-publico-do-piva, wizz-lowticket-minerador]
513
+ after: [wizz-pesquisa-de-publico-do-piva, wizz-lowticket-minerador]
511
514
  before: [wizz-copywriting]
512
- pairs_with: [wizz-pricing-strategy, wizz-lowticket-metodologia]
515
+ pairs_with: [wizz-ig-profile-optimizer, wizz-pricing-strategy, wizz-lowticket-metodologia]
513
516
  # Módulo lowticket (src/modules/lowticket) — ver nota em ads.skills. Desde
514
517
  # 2026-09-18 o módulo inteiro mora aqui (um dono por skill): copy e ads
515
518
  # chegam nele pelo `rel`. Isto é comentário de propósito — escrever "vale
@@ -591,6 +594,7 @@ areas:
591
594
  - "Editar/revisar texto de social já escrito: aí é wizz-copy-editing."
592
595
  - "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
596
  rel:
597
+ after: [wizz-hook-extractor]
594
598
  before: [buffer, get-brolls]
595
599
  pairs_with: [wizz-canvas-design, wizz-content-strategy, wizz-copy-editing, wizz-launch-strategy, wizz-video-styles]
596
600
  - id: wizz-content-strategy
@@ -602,6 +606,23 @@ areas:
602
606
  rel:
603
607
  after: [wizz-copywriting]
604
608
  pairs_with: [wizz-social-content]
609
+ # Adaptadas do sergebulaev/instagram-skills (MIT) em 2026-10-10: o resto
610
+ # do pacote (legenda, carrossel, calendário, humanizer) o Method já cobre.
611
+ - id: wizz-hook-extractor
612
+ 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'."
613
+ not_when:
614
+ - "Escrever o roteiro ou o post do usuário do zero, sem um post de referência: é wizz-social-content."
615
+ - "Estudar um nicho ou vários criadores de uma vez: é a referência de engenharia reversa do wizz-social-content."
616
+ rel:
617
+ before: [wizz-social-content]
618
+ pairs_with: [wizz-video-styles, wizz-canvas-design]
619
+ - id: wizz-ig-profile-optimizer
620
+ 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'."
621
+ not_when:
622
+ - "Escrever legenda ou roteiro de post: é wizz-social-content."
623
+ - "Desenhar as capas dos destaques ou a arte dos posts: é wizz-canvas-design."
624
+ rel:
625
+ pairs_with: [wizz-canvas-design, wizz-humanizer, wizz-offer-forge]
605
626
  clis:
606
627
  - id: buffer
607
628
  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."
@@ -664,7 +685,7 @@ areas:
664
685
  - id: wizz-web-security
665
686
  when: "Auditar segurança web, OWASP, XSS/CSRF/injeção/SQLi, IDOR, headers, rate limit (IP+conta), CORS, clickjacking, vazamento de PII na resposta, antes de deploy/PR."
666
687
  rel:
667
- before: [security-audit-pentest]
688
+ before: [wizz-security-audit-pentest]
668
689
  pairs_with: [wizz-auth-and-secrets, wizz-database-and-deps, wizz-desktop-security]
669
690
  - id: wizz-auth-and-secrets
670
691
  when: "Auth (JWT/OAuth/SSO/Clerk), token no header vs URL, revogar no logout, enumeração de usuário, gestão de secrets, rotação de credenciais."
@@ -701,7 +722,7 @@ areas:
701
722
  - id: wizz-ai-product-design
702
723
  when: "Construir/melhorar um agente ou produto de IA: escrever/revisar system prompt, definir persona/tom, guardrails e recusas, few-shot, chain-of-thought, orquestração multi-agente, handoff, detecção de frustração, generative UI, avaliar qualidade de saída. Base para desenhar os próprios agentes do método. 44 padrões (Owl-Listener, MIT)."
703
724
  rel:
704
- pairs_with: [enhance-prompt]
725
+ pairs_with: [wizz-enhance-prompt]
705
726
  mcps:
706
727
  - id: supabase
707
728
  when: "Operar Supabase de verdade: rodar SQL, migrations, inspecionar schema/RLS, logs. Default é READ-ONLY e escopado a um projeto (--read-only --project-id); para ESCREVER (migrations, mutações), o agente precisa remover conscientemente o --read-only desta entrada antes de usar — nunca por padrão silencioso."
@@ -753,19 +774,19 @@ areas:
753
774
  when: "Passe único adversarial, ad hoc, fora de workflow — 'tear this apart' num trecho colado, sem contexto de projeto. Não confundir com wizz-review-adversarial-general (persona do 'Blind Hunter'; o prompt operacional vive em review-prompts/blind-hunter.md e nenhum workflow invoca a skill) nem com wizz-code-review (orquestrador bmm: 3 camadas paralelas + triagem, para review real de diff/PR)."
754
775
  rel:
755
776
  instead_of: [wizz-code-review]
756
- - id: security-audit-pentest
777
+ - id: wizz-security-audit-pentest
757
778
  when: "Auditoria/pentest de segurança do app inteiro — 'auditar segurança', 'pentest', 'encontrar vulnerabilidades', varredura antes de release. Só para teste de segurança AUTORIZADO (seus sistemas ou de clientes com permissão): ferramenta dual-use, nunca usar contra alvo sem autorização."
758
779
  rel:
759
780
  after: [wizz-web-security]
760
781
  pairs_with: [strix, wizz-launch-readiness]
761
782
  - id: wizz-launch-readiness
762
- when: "Auditoria de prontidão pra lançamento (Pre-launch Audit), multi-área: técnico/build, segurança, SEO/descoberta, analytics/medição, conteúdo/copy/prova social, legal/LGPD, infra/deploy/rollback. Gatilhos: 'tá pronto pra lançar?', 'auditoria de pré-lançamento', 'checklist de release amplo', 'o que falta antes de ir pra produção'. Gate por estágio: só roda de verdade em mvp/production, e recusa educadamente em estágio de descoberta/ideação. Diagnostica e prioriza por severidade (bloqueia/alto/médio/ok), nunca corrige cego: aponta security-audit-pentest pra aprofundar segurança com prova de exploração e site-launch-kit pra executar a correção quando a superfície do achado é site. Resultado persiste numa seção datada do project-context.md."
783
+ when: "Auditoria de prontidão pra lançamento (Pre-launch Audit), multi-área: técnico/build, segurança, SEO/descoberta, analytics/medição, conteúdo/copy/prova social, legal/LGPD, infra/deploy/rollback. Gatilhos: 'tá pronto pra lançar?', 'auditoria de pré-lançamento', 'checklist de release amplo', 'o que falta antes de ir pra produção'. Gate por estágio: só roda de verdade em mvp/production, e recusa educadamente em estágio de descoberta/ideação. Diagnostica e prioriza por severidade (bloqueia/alto/médio/ok), nunca corrige cego: aponta wizz-security-audit-pentest pra aprofundar segurança com prova de exploração e wizz-site-launch-kit pra executar a correção quando a superfície do achado é site. Resultado persiste numa seção datada do project-context.md."
763
784
  not_when:
764
785
  - "Estágio de descoberta/ideação: projeto ainda sem superfície construída pra auditar (sem project-context.md, ou stage 'prototype' vazio)."
765
- - "Correção de um achado isolado de site já identificado: nesse caso vá direto pra site-launch-kit."
786
+ - "Correção de um achado isolado de site já identificado: nesse caso vá direto pra wizz-site-launch-kit."
766
787
  rel:
767
- pairs_with: [security-audit-pentest, site-launch-kit, wizz-database-and-deps]
768
- - id: site-launch-kit
788
+ pairs_with: [wizz-security-audit-pentest, wizz-site-launch-kit, wizz-database-and-deps]
789
+ - id: wizz-site-launch-kit
769
790
  when: "Site pronto ou quase pronto pra ir ao ar: revisão de pré-lançamento em 15 rodadas corretivas (CTA acima da dobra, barra fixa mobile, tempo de resposta, prova social real, FAQ+FAQPage, imagens reais, endereço, titles, Open Graph, breadcrumbs, alt text, schema local, robots/sitemap, LGPD, medição), com regra anti-invenção e PENDÊNCIAS. Gatilhos: 'vamos subir o site', 'checklist de lançamento', 'revisa antes do deploy', pré-go-live, ou um item isolado (og:image, FAQ com schema, robots.txt). Roda DEPOIS do site construído, ANTES do deploy."
770
791
  rel:
771
792
  pairs_with: [wizz-launch-readiness, wizz-schema-markup]
@@ -782,10 +803,10 @@ areas:
782
803
  # Pin de supply chain (2026-08-23): versão fixa; atualizar conscientemente.
783
804
  install: "npm install -g agent-browser@0.38.1"
784
805
  - id: strix
785
- when: "CONDICIONAL, nunca default — executor de pentest AUTÔNOMO e OFENSIVO (agentes de IA que rodam o app, exploram e VALIDAM vulnerabilidades com PoC real). Complementa security-audit-pentest: aquela skill é a metodologia/checklist humana; o Strix é o executor automatizado. Ferramenta dual-use: SÓ contra alvo próprio ou com AUTORIZAÇÃO ESCRITA do dono do sistema e ESCOPO definido — nunca contra alvo de terceiros sem permissão. Roda SEMPRE dentro do sandbox Docker isolado que a própria ferramenta provê (jamais direto no host). Gate condicional: ofereça apenas mediante confirmação explícita do usuário, com escopo e autorização declarados; jamais acione por padrão silencioso. RETORNO DEFENSIVO OBRIGATÓRIO: o executor (subagente) SEMPRE devolve o achado em formato defensivo — falha, severidade, evidência mínima e correção — nunca payload/exploit cru ou arma pronta; assim o revisor recebe conteúdo defensivo pra corrigir, não instrução de ataque. Precisa de Docker rodando e de uma LLM API key configurada."
806
+ when: "CONDICIONAL, nunca default — executor de pentest AUTÔNOMO e OFENSIVO (agentes de IA que rodam o app, exploram e VALIDAM vulnerabilidades com PoC real). Complementa wizz-security-audit-pentest: aquela skill é a metodologia/checklist humana; o Strix é o executor automatizado. Ferramenta dual-use: SÓ contra alvo próprio ou com AUTORIZAÇÃO ESCRITA do dono do sistema e ESCOPO definido — nunca contra alvo de terceiros sem permissão. Roda SEMPRE dentro do sandbox Docker isolado que a própria ferramenta provê (jamais direto no host). Gate condicional: ofereça apenas mediante confirmação explícita do usuário, com escopo e autorização declarados; jamais acione por padrão silencioso. RETORNO DEFENSIVO OBRIGATÓRIO: o executor (subagente) SEMPRE devolve o achado em formato defensivo — falha, severidade, evidência mínima e correção — nunca payload/exploit cru ou arma pronta; assim o revisor recebe conteúdo defensivo pra corrigir, não instrução de ataque. Precisa de Docker rodando e de uma LLM API key configurada."
786
807
  not_when: "Sem alvo próprio ou sem autorização escrita e escopo definido do dono do sistema; nunca acionar por padrão silencioso."
787
808
  rel:
788
- pairs_with: [security-audit-pentest]
809
+ pairs_with: [wizz-security-audit-pentest]
789
810
  platform: [darwin, linux]
790
811
  check: "command -v strix"
791
812
  # Pin de supply chain (2026-08-25): versão fixa do pacote pip; o sandbox
@@ -827,6 +848,13 @@ areas:
827
848
  when: "DEV PONTUAL: ajuste, bug fix, feature única sem cerimônia de story. Fluxo unificado: clarificar → planejar → implementar → review → apresentar. É o destino padrão quando o router/maestro diz 'dev pontual'."
828
849
  rel:
829
850
  after: [wizz-implementation-planner, wizz-investigate]
851
+ # Também em designer, como porta de motion (2026-10-15): animar algo no
852
+ # código do app é do dev, e sem esta entrada o dev não enxergava o craft.
853
+ - id: wizz-animate
854
+ when: "Implementar micro-interação de um componente que já existe no app (hover, clique, toast, modal, popover) com o craft do Emil Kowalski: saída mais rápida que a entrada, só transform/opacity, reduced-motion."
855
+ not_when:
856
+ - "Animação de página inteira ou de entrada no scroll, em que o movimento ainda não foi decidido: é do designer (wizz-animate como porta de motion)."
857
+ - "Vídeo para divulgar o app: é wizz-video-styles."
830
858
  - id: wizz-dev-story
831
859
  module: bmm
832
860
  when: "Implementar UMA story específica com spec preenchida ('dev this story', 'implementa a próxima story do sprint')."
@@ -837,7 +865,7 @@ areas:
837
865
  module: bmm
838
866
  when: "Preparar story com todo o contexto de implementação ('cria a story', 'prepara a story'). Antes do dev, no gate de planejamento."
839
867
  rel:
840
- after: [wizz-prd, wizz-set-feature, wizz-sprint-planning]
868
+ after: [wizz-prd, wizz-sprint-planning]
841
869
  before: [wizz-dev-story]
842
870
  - id: wizz-code-review
843
871
  module: bmm
@@ -876,7 +904,7 @@ areas:
876
904
  when: "Criar, atualizar ou validar PRD ('cria o PRD', 'documento de requisitos', 'define o escopo'). Consolida os antigos create/edit/validate-prd (removidos em v7)."
877
905
  rel:
878
906
  after: [wizz-product-brief]
879
- before: [wizz-create-story, wizz-set-feature]
907
+ before: [wizz-create-story]
880
908
  pairs_with: [wizz-ux]
881
909
  - id: wizz-product-brief
882
910
  module: bmm
@@ -889,12 +917,14 @@ areas:
889
917
  when: "Desafio Working Backwards PRFAQ para forjar conceito de produto ('cria a PRFAQ', 'work backwards')."
890
918
  rel:
891
919
  before: [wizz-product-brief]
920
+ # Ajuste MANUAL da feature ativa. Desde a 2.16 a feature é definida sozinha
921
+ # (branch > config > primeiro pedido nomeado, via `wizz-feature.js definir`,
922
+ # regra em src/modules/wizz/_shared/organizacao.md), então esta entrada fica
923
+ # fora da cadeia PRD → story: sem `rel`, de propósito.
892
924
  - id: wizz-set-feature
893
925
  module: bmm
894
- when: "Definir feature específica dentro do produto (análise de feature única)."
895
- rel:
896
- after: [wizz-prd]
897
- before: [wizz-create-story]
926
+ when: "Trocar, renomear, limpar ou forçar a feature ativa de propósito, ou dizer qual está ativa ('muda a feature ativa', 'renomeia a feature', 'qual feature está ativa')."
927
+ not_when: "Começar, planejar ou especificar uma feature nova: o hook define a feature ativa sozinho."
898
928
 
899
929
  tech-writer:
900
930
  agent: wizz-agent-tech-writer
@@ -920,16 +950,16 @@ areas:
920
950
  agent: wizz-memoria
921
951
  summary: "Memória do projeto: o que foi decidido, salvar, ver estado."
922
952
  skills:
923
- - id: cerebro
953
+ - id: wizz-cerebro
924
954
  when: "Recuperar/salvar decisões, contexto, aprendizados; ver estado do projeto (/ver, /salvar, /decisao, /dump); ler a auto-memória fora do Claude Code (/memoria)."
925
955
 
926
956
  # ─────────────────────────────────────────────────────────────────────────────
927
957
  # UTILITÁRIOS — cross-cutting, não pertencem a uma área só.
928
958
  # ─────────────────────────────────────────────────────────────────────────────
929
959
  utility:
930
- - id: find-skills
960
+ - id: wizz-find-skills
931
961
  when: "Nenhuma skill cobre o pedido: buscar/instalar no marketplace (npx skills find)."
932
- - id: enhance-prompt
962
+ - id: wizz-enhance-prompt
933
963
  when: "Empacotar um briefing mais completo/estruturado pra mandar a outro agente ou skill."
934
964
  rel:
935
965
  pairs_with: [wizz-ai-product-design]
@@ -1,33 +1,33 @@
1
1
  ---
2
2
  name: wizz-set-feature
3
- description: 'Resolve, switch or clear the active feature context so planning artifacts, implementation artifacts and memory are organized under one named slug. Runs automatically from the git branch; only invoke it when the user says "set feature", "switch feature", "new feature", "clear feature", or asks "what feature is active".'
3
+ description: 'Manual override for the active feature: rename, switch or clear it, or answer which feature is active. The feature is resolved automatically (git branch, config, the request itself) by the hooks and the `wizz-feature.js definir` CLI; invoke this skill only when the user says "set feature", "switch feature", "rename feature", "clear feature", or asks "what feature is active".'
4
4
  ---
5
5
 
6
6
  # Set Feature
7
7
 
8
8
  **Goal:** Keep `active_feature` correct so planning artifacts, implementation artifacts and memory entries all land under the same named slug.
9
9
 
10
- **Default mode is automatic, with or without git, on `main` or on a branch.** The hooks do the work and nobody invokes this skill in the normal case:
10
+ **This skill is the manual override, not the way the feature gets set.** Setting the feature is automatic, with or without git, on `main` or on a branch: the hooks and the area agents do it with the CLI `node _wizz/hooks/wizz-feature.js definir <slug>`, and nobody invokes this skill in the normal case. Use it when the owner explicitly asks to rename, switch or clear the feature, or asks which one is active; the action itself is always `wizz-feature.js definir` (or `encerrar`), described below.
11
11
 
12
12
  - `session-rules.js` (SessionStart) resolves the feature from the git branch or the config and injects `FEATURE ATIVA: <slug>`. In a Wizz project with no feature it injects the reminder `NENHUMA FEATURE ATIVA: o primeiro pedido nomeado define uma`.
13
13
  - `wizz-router-enforce.js` (UserPromptSubmit) repeats the state on every non-trivial prompt: `Feature: <slug>` or `nenhuma ativa`.
14
14
  - The router, the maestro and the area agents then run the deterministic CLI `node _wizz/hooks/wizz-feature.js definir <slug>` BEFORE dispatching named work, and the handoff carries `feature:` (see the wizz module's `_shared/organizacao.md`).
15
- - `wizz-artifact-guard.js` (PostToolUse on Write) warns when an artifact lands outside the active feature's folder.
15
+ - `wizz-artifact-guard.js` (PostToolUse on Write and Edit) warns when an artifact lands outside the active feature's folder.
16
16
 
17
- Invoke this skill only for the three explicit cases in "When this skill runs" below.
17
+ Invoke this skill only for the explicit cases in "When this skill runs" below.
18
18
 
19
19
  ## Conventions
20
20
 
21
21
  - `{project-root}`-prefixed paths resolve from the project working directory.
22
22
 
23
- ## Resolution order (never ask before exhausting it)
23
+ ## Resolution order (what `resolver` applies; never ask before exhausting it)
24
24
 
25
25
  1. **Git branch.** `feat/dashboard-financeiro` → `dashboard-financeiro`. Strip the type prefix (`feat/`, `feature/`, `fix/`, `bugfix/`, `hotfix/`, `chore/`, `refactor/`, `docs/`, `test/`, `perf/`, `ci/`, `build/`, `style/`), lowercase, kebab-case. Trunk branches (`main`, `master`, `develop`, `dev`, `staging`, `prod`, `production`, `release`) and release branches yield **no** feature, not a bad one.
26
26
  2. **`active_feature` in `{project-root}/_wizz/bmm/config.yaml`.** Used when the branch gives nothing.
27
27
  3. **The request itself.** When 1 and 2 are both empty and the request is named work (a feature, a batch, a screen, a page, a campaign, a bug with a scope: "vamos fazer o painel de assinaturas"). Derive the slug from the subject, 2 to 4 words, and run `node _wizz/hooks/wizz-feature.js definir <slug>` BEFORE dispatching; say so in **one line**. Do not ask. This step is mandatory for the router and the maestro, not a nice-to-have: skipping it is how a project spends its whole life with an empty `active_feature`.
28
28
  4. **Nothing.** Only for work that is not named (a question, a conversation, a one-line tweak with no artifact). Artifacts go to the roots and memory carries no feature tag.
29
29
 
30
- **Switch or keep.** With a feature active, a request about a different subject switches (`definir <new>`; the previous one stays open until closed) and a continuation keeps it. **Close** when the delivery closes (deploy or acceptance): `wizz-feature.js verificar` must pass, then `wizz-feature.js encerrar [--proxima <slug>]` marks the spec `no-ar`, clears or switches `active_feature`, and reminds you to record the Cérebro.
30
+ **Switch or keep.** With a feature active, a request about a different subject switches (`definir <new>`; the previous one stays open until closed) and a continuation keeps it. **Close** when the delivery closes (deploy or acceptance): `wizz-feature.js verificar` must pass, then `wizz-feature.js encerrar --cerebro [--proxima <slug>]` marks the spec `no-ar`, clears or switches `active_feature`, and writes the Cérebro (state + one Sessions line; without a vault it prints the instruction instead).
31
31
 
32
32
  **Optional branch.** `feature_branches: auto` in `_wizz/bmm/config.yaml` makes `definir` (and the SessionStart hook) propose `git switch -c feat/<slug>` when you are on a trunk branch of a git repo. The default is `off`, for whoever works directly on `main`.
33
33
 
@@ -39,7 +39,7 @@ Invoke this skill only for the three explicit cases in "When this skill runs" be
39
39
  | `definir <slug or name>` | Normalizes, writes `active_feature`, creates both subfolders, prints one line. |
40
40
  | `artefato <tipo>` | Creates `<tipo>-<slug>.md` (spec, plano, auditoria, story, review, roteiro) in the right folder with valid frontmatter. |
41
41
  | `decidir "<texto>"` | Appends `D-NN` with the date to the feature's spec and to its `decisoes:` frontmatter. |
42
- | `status <status>` | `rascunho`, `aprovado`, `implementado` or `no-ar` in the spec. |
42
+ | `status <status>` | Sets the spec's status: `rascunho`, `aprovado`, `implementado` or `no-ar` (it writes; to only read, use `resolver` or `listar`). |
43
43
  | `verificar` | Closing checklist; exit 1 while an item is pending. |
44
44
  | `encerrar` | Refuses with a pending item (unless `--forcar`); otherwise closes as above. |
45
45
  | `listar` | Features with a folder and the status of each spec. |
@@ -51,7 +51,7 @@ The branch wins over the config: it describes the work happening now, while the
51
51
  ## When this skill runs
52
52
 
53
53
  - **The user asks what is active** → answer from the resolution order and stop. Do not write anything.
54
- - **The user asks to set, switch or clear** → they already named it (or asked to clear); normalize, write, confirm in one line. Do not ask for a slug they just gave you.
54
+ - **The user asks to rename, set, switch or clear** → this is the manual override. They already named it (or asked to clear): run `node _wizz/hooks/wizz-feature.js definir <slug>` (or clear, see Step 4), confirm in one line. Do not ask for a slug they just gave you. A rename keeps the old folders; `definir` creates the new ones.
55
55
  - **Genuine ambiguity** → two or more features are open and the request does not decide between them. This is the only case where you ask, and you ask once, offering the open features as options.
56
56
 
57
57
  ## Steps
@@ -68,7 +68,7 @@ Confirm with the user **only** in the ambiguity case. A slug that came from the
68
68
 
69
69
  ### Step 3: Write the config and create the subfolders
70
70
 
71
- Run `node _wizz/hooks/wizz-feature.js definir <slug>` from the project root. It sets `active_feature:` (adding the key if absent) and creates `{planning_artifacts}/{active_feature}/` and `{implementation_artifacts}/{active_feature}/`. Without the CLI (old install), edit the config and create the folders by hand.
71
+ Run `node _wizz/hooks/wizz-feature.js definir <slug>` from the project root; this is the override itself. It sets `active_feature:` (adding the key if absent) and creates `{planning_artifacts}/{active_feature}/` and `{implementation_artifacts}/{active_feature}/`. Without the CLI (old install), edit the config and create the folders by hand.
72
72
 
73
73
  ### Step 4: Clearing
74
74
 
@@ -421,7 +421,7 @@ Activation is complete. If `activation_steps_prepend` or `activation_steps_appen
421
421
  1. Review the comprehensive story in {{story_file}}
422
422
  2. Run dev agents `dev-story` for optimized implementation
423
423
  3. Run `code-review` when complete (auto-marks done)
424
- 4. Optional: If Test Architect module installed, run `/wizz:tea:automate` after `dev-story` to generate guardrail tests
424
+ 4. Optional: If Test Architect module installed, run the Test Architect `automate` workflow after `dev-story` to generate guardrail tests
425
425
 
426
426
  **The developer now has everything needed for flawless implementation!**
427
427
  </output>
@@ -486,7 +486,7 @@ Activation is complete. If `activation_steps_prepend` or `activation_steps_appen
486
486
  - Verify all acceptance criteria are met
487
487
  - Ensure deployment readiness if applicable
488
488
  - Run `code-review` workflow for peer review
489
- - Optional: If Test Architect module installed, run `/wizz:tea:automate` to expand guardrail tests
489
+ - Optional: If Test Architect module installed, run the Test Architect `automate` workflow to expand guardrail tests
490
490
  </action>
491
491
 
492
492
  <output>💡 **Tip:** For best results, run `code-review` using a **different** LLM than the one that implemented this story.</output>
@@ -160,7 +160,7 @@ If the project needs:
160
160
  - Comprehensive coverage analysis
161
161
  - Advanced testing patterns and utilities
162
162
 
163
- > **Install Test Architect (TEA) module**: <https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/>
163
+ > **Wizz Test Architect (TEA) module**: enable it in the Wizz installer (install, then select the module `tea`).
164
164
 
165
165
  ## Output
166
166
 
@@ -30,4 +30,4 @@ Run the tests using your project's test command.
30
30
 
31
31
  ---
32
32
 
33
- **Need more comprehensive testing?** Install [Test Architect (TEA)](https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/) for advanced workflows.
33
+ **Need more comprehensive testing?** Enable the Wizz Test Architect (`tea`) module in the Wizz installer (install, then modules) for advanced workflows.
@@ -37,7 +37,7 @@ A specification should target a **single user-facing goal** within **900–1600
37
37
 
38
38
  You are the leaf: the maestro demotes here for pointed work (bug, tweak, single-goal feature). Re-check scope against the shared complexity signal (areas, steps, needs-planning?, artifact+memory?):
39
39
 
40
- **Dispatch rule:** IF 2+ areas → `wizz-maestro`, always. ELSE count the 3 remaining factors (multi-step, needs planning, produces a memorable artifact); 2+ factors → `wizz-maestro`. The area clause decides on its own, without summing with anything else.
40
+ **Dispatch rule:** IF 2+ areas → `wizz-maestro`, always. OTHERWISE count the 3 remaining factors (multi-step, needs planning, produces a memorable artifact); 2+ factors → `wizz-maestro`. The area clause decides on its own, without combining with anything else.
41
41
 
42
42
  **Decision order — capabilities → required relations → areas → shortcuts.** Match the catalogue entries, inspect their `rel`, and include only capabilities needed for the requested deliverable and not already supplied in the context. Resolve their owning areas before applying ANY one-area shortcut. One artifact can require multiple areas; the word "copy" does not prove that only copy is needed. For full sales-page copy, if either the offer or the conversion structure is missing from the supplied context, include the missing capability: `wizz-offer-forge` for the offer and/or `wizz-page-cro` for conversion structure (growth), alongside `wizz-copywriting` (copy); route to maestro. Do not assume those inputs are ready merely because the user did not mention them. If both are already approved and the request is limited to text, keep copy-only work in copy. An isolated headline or CTA does not require redesigning the whole page. Optional neighbours and separate deliverables do not add areas; `pairs_with` alone never escalates.
43
43
 
@@ -93,7 +93,7 @@ Activation is complete. If `activation_steps_prepend` or `activation_steps_appen
93
93
  <action>Try {sprint_status_file}</action>
94
94
  <check if="file not found">
95
95
  <output>sprint-status.yaml not found.
96
- Run `/wizz:bmm:workflows:sprint-planning` to generate it, then rerun sprint-status.</output>
96
+ Run `/wizz-sprint-planning` to generate it, then rerun sprint-status.</output>
97
97
  <action>Exit workflow</action>
98
98
  </check>
99
99
  <action>Continue to Step 2</action>
@@ -149,9 +149,9 @@ Enter corrections (e.g., "1=in-progress, 2=backlog") or "skip" to continue witho
149
149
 
150
150
  <action>Detect risks:</action>
151
151
 
152
- - IF any story has status "review": suggest `/wizz:bmm:workflows:code-review`
152
+ - IF any story has status "review": suggest `/wizz-code-review`
153
153
  - IF any story has status "in-progress" AND no stories have status "ready-for-dev": recommend staying focused on active story
154
- - IF all epics have status "backlog" AND no stories have status "ready-for-dev": prompt `/wizz:bmm:workflows:create-story`
154
+ - IF all epics have status "backlog" AND no stories have status "ready-for-dev": prompt `/wizz-create-story`
155
155
  - IF `last_updated` timestamp is more than 7 days old (or `last_updated` is missing, fall back to `generated`): warn "sprint-status.yaml may be stale"
156
156
  - IF any story key doesn't match an epic pattern (e.g., story "5-1-..." but no "epic-5"): warn "orphaned story detected"
157
157
  - IF any epic has status in-progress but has no associated stories: warn "in-progress epic has no stories"
@@ -181,7 +181,7 @@ Enter corrections (e.g., "1=in-progress, 2=backlog") or "skip" to continue witho
181
181
 
182
182
  **Epics:** backlog {{epic_backlog}}, in-progress {{epic_in_progress}}, done {{epic_done}}
183
183
 
184
- **Next Recommendation:** /wizz:bmm:workflows:{{next_workflow_id}} ({{next_story_id}})
184
+ **Next Recommendation:** /wizz-{{next_workflow_id}} ({{next_story_id}})
185
185
 
186
186
  {{#if open_action_items}}
187
187
  **Open Action Items:**
@@ -211,7 +211,7 @@ Enter corrections (e.g., "1=in-progress, 2=backlog") or "skip" to continue witho
211
211
  Choice:</ask>
212
212
 
213
213
  <check if="choice == 1">
214
- <output>Run `/wizz:bmm:workflows:{{next_workflow_id}}`.
214
+ <output>Run `/wizz-{{next_workflow_id}}`.
215
215
  If the command targets a story, set `story_key={{next_story_id}}` when prompted.</output>
216
216
  </check>
217
217
 
@@ -1,7 +1,7 @@
1
1
  module,skill,display-name,menu-code,description,action,args,phase,preceded-by,followed-by,required,output-location,outputs
2
2
  Wizz Method,_meta,,,,,,,,,false,https://docs.wizz-method.org/llms.txt,
3
3
  Wizz Method,wizz-document-project,Document Project,DP,Analyze an existing project to produce useful documentation.,,,anytime,,,false,project-knowledge,*
4
- Wizz Method,wizz-set-feature,Set Feature,SF,Set or switch the active feature context so planning and implementation artifacts are organized into a named subfolder.,,,anytime,,,false,,
4
+ Wizz Method,wizz-set-feature,Set Feature,SF,Manual override: switch, rename or clear the active feature on purpose (it is normally set automatically by the first named request).,,,anytime,,,false,,
5
5
  Wizz Method,wizz-generate-project-context,Generate Project Context,GPC,Scan existing codebase to generate a lean LLM-optimized project-context.md. Essential for brownfield projects.,,,anytime,,,false,output_folder,project context
6
6
  Wizz Method,wizz-quick-dev,Quick Dev,QQ,Unified intent-in code-out workflow: clarify plan implement review and present.,,,anytime,,,false,implementation_artifacts,spec and project implementation
7
7
  Wizz Method,wizz-correct-course,Correct Course,CC,Navigate significant changes. May recommend start over update PRD redo architecture sprint planning or correct epics and stories.,,,anytime,,,false,planning_artifacts,change proposal
@@ -40,7 +40,7 @@ project_knowledge: # Artifacts from research, document-project output, other lon
40
40
  default: "docs"
41
41
  result: "{project-root}/{value}"
42
42
 
43
- active_feature: # Current feature context. Used as a subfolder inside planning and implementation artifacts. Set or switch it with the wizz-set-feature skill.
43
+ active_feature: # Current feature context. Used as a subfolder inside planning and implementation artifacts. Set automatically by the first named request (wizz-feature.js definir); the wizz-set-feature skill is the manual override to switch or rename it.
44
44
  prompt: "Active feature slug (e.g. admin-panel, auth-refactor). Used as a subfolder inside planning and implementation artifacts. Leave blank for none."
45
45
  default: ""
46
46
  result: "{value}"
@@ -22,9 +22,9 @@ and pass along only the skill's entrypoint and the references actually needed
22
22
  - origin: who is delegating (e.g. wizz-router, wizz-maestro). Anti-loop
23
23
  rule: never invoke whoever is already in the origin chain. Forbidden
24
24
  example: router delegates to maestro, maestro hands it back to router.
25
- - cerebro already consulted: a summary of up to 3 lines of what `/cerebro ver` already
25
+ - cerebro already consulted: a summary of up to 3 lines of what `/wizz-cerebro ver` already
26
26
  brought back (project state, recent decisions relevant to the area). If this
27
- field is filled in, whoever receives the handoff does not run `/cerebro ver`
27
+ field is filled in, whoever receives the handoff does not run `/wizz-cerebro ver`
28
28
  again, and uses the summary received instead.
29
29
  - decisions already made in the chain: a short list of what was already decided before
30
30
  this handoff (e.g. approved palette, defined scope).
@@ -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