wizz-method 1.16.1 → 1.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 (148) hide show
  1. package/README.md +1 -1
  2. package/package.json +7 -2
  3. package/removals.txt +9 -0
  4. package/skills-registry.yaml +119 -36
  5. package/src/bmm-skills/1-analysis/wizz-agent-analyst/customize.toml +1 -1
  6. package/src/bmm-skills/1-analysis/wizz-set-feature/SKILL.md +41 -37
  7. package/src/bmm-skills/2-plan-workflows/wizz-agent-pm/customize.toml +1 -1
  8. package/src/bmm-skills/2-plan-workflows/wizz-agent-ux-designer/customize.toml +1 -1
  9. package/src/bmm-skills/3-solutioning/wizz-agent-architect/customize.toml +1 -1
  10. package/src/bmm-skills/3-solutioning/wizz-generate-project-context/project-context-template.md +5 -0
  11. package/src/bmm-skills/3-solutioning/wizz-generate-project-context/steps/step-01-discover.md +16 -5
  12. package/src/bmm-skills/3-solutioning/wizz-generate-project-context/steps/step-03-complete.md +5 -0
  13. package/src/bmm-skills/4-implementation/wizz-agent-dev/customize.toml +1 -1
  14. package/src/bmm-skills/4-implementation/wizz-retrospective/customize.toml +3 -1
  15. package/src/bmm-skills/4-implementation/wizz-retrospective/scripts/__pycache__/sprint_status.cpython-313.pyc +0 -0
  16. package/src/bmm-skills/4-implementation/wizz-retrospective/scripts/tests/__pycache__/test_git_evidence.cpython-313-pytest-9.1.1.pyc +0 -0
  17. package/src/bmm-skills/4-implementation/wizz-retrospective/scripts/tests/__pycache__/test_sprint_status.cpython-313-pytest-9.1.1.pyc +0 -0
  18. package/src/bmm-skills/4-implementation/wizz-sprint-planning/customize.toml +3 -1
  19. package/src/bmm-skills/4-implementation/wizz-sprint-planning/scripts/__pycache__/sprint_plan.cpython-313.pyc +0 -0
  20. package/src/bmm-skills/4-implementation/wizz-sprint-planning/scripts/tests/__pycache__/test_sprint_plan.cpython-313-pytest-9.1.1.pyc +0 -0
  21. package/src/core-skills/wizz-advanced-elicitation/scripts/__pycache__/pick_methods.cpython-313.pyc +0 -0
  22. package/src/core-skills/wizz-advanced-elicitation/scripts/tests/__pycache__/test_pick_methods.cpython-313-pytest-9.1.1.pyc +0 -0
  23. package/src/core-skills/wizz-brainstorming/scripts/__pycache__/brain.cpython-313.pyc +0 -0
  24. package/src/core-skills/wizz-brainstorming/scripts/tests/__pycache__/test_brain.cpython-313-pytest-9.1.1.pyc +0 -0
  25. package/src/core-skills/wizz-brainstorming/scripts/tests/__pycache__/test_brain.cpython-314.pyc +0 -0
  26. package/src/core-skills/wizz-forge-idea/scripts/__pycache__/resolve_personas.cpython-314.pyc +0 -0
  27. package/src/core-skills/wizz-forge-idea/scripts/tests/__pycache__/test_resolve_personas.cpython-314.pyc +0 -0
  28. package/src/core-skills/wizz-party-mode/scripts/__pycache__/resolve_party.cpython-314.pyc +0 -0
  29. package/src/core-skills/wizz-party-mode/scripts/tests/__pycache__/test_resolve_party.cpython-314.pyc +0 -0
  30. package/src/modules/lowticket/README.md +55 -0
  31. package/src/modules/lowticket/module.yaml +31 -0
  32. package/src/modules/lowticket/skills/lowticket-funil/SKILL.md +112 -0
  33. package/src/modules/lowticket/skills/lowticket-funil/references/copy-das-paginas.md +75 -0
  34. package/src/modules/lowticket/skills/lowticket-funil/references/mapa-do-funil.md +71 -0
  35. package/src/modules/lowticket/skills/lowticket-metodologia/CATALOGO.md +352 -0
  36. package/src/modules/lowticket/skills/lowticket-metodologia/SKILL.md +62 -0
  37. package/src/modules/lowticket/skills/lowticket-metodologia/knowledge/01-principios.md +12 -0
  38. package/src/modules/lowticket/skills/lowticket-metodologia/knowledge/02-diagnostico-funil.md +83 -0
  39. package/src/modules/lowticket/skills/lowticket-metodologia/knowledge/03-campanha-bidcap.md +95 -0
  40. package/src/modules/lowticket/skills/lowticket-metodologia/knowledge/04-criativos.md +66 -0
  41. package/src/modules/lowticket/skills/lowticket-metodologia/knowledge/04a-criativos-ia.md +79 -0
  42. package/src/modules/lowticket/skills/lowticket-metodologia/knowledge/04b-criativos-formatos.md +152 -0
  43. package/src/modules/lowticket/skills/lowticket-metodologia/knowledge/05-oferta.md +51 -0
  44. package/src/modules/lowticket/skills/lowticket-metodologia/knowledge/06-pagina-vendas.md +175 -0
  45. package/src/modules/lowticket/skills/lowticket-metodologia/knowledge/06a-instagram.md +138 -0
  46. package/src/modules/lowticket/skills/lowticket-metodologia/knowledge/07-funil-upsell.md +73 -0
  47. package/src/modules/lowticket/skills/lowticket-metodologia/knowledge/08-pesquisa-publico.md +14 -0
  48. package/src/modules/lowticket/skills/lowticket-metodologia/knowledge/09-especialista-coproducao.md +41 -0
  49. package/src/modules/lowticket/skills/lowticket-metodologia/knowledge/10-levantar-caixa.md +49 -0
  50. package/src/modules/lowticket/skills/lowticket-metodologia/knowledge/11-checklist-roi.md +36 -0
  51. package/src/modules/lowticket/skills/lowticket-metodologia/knowledge/12-mineracao-ofertas.md +63 -0
  52. package/src/modules/lowticket/skills/lowticket-metodologia/knowledge/12a-mineracao-veredito.md +78 -0
  53. package/src/modules/lowticket/skills/lowticket-metodologia/knowledge/12b-fabrica-de-ofertas.md +178 -0
  54. package/src/modules/lowticket/skills/lowticket-metodologia/knowledge/13-benchmarks-vsl.md +10 -0
  55. package/src/modules/lowticket/skills/lowticket-metodologia/knowledge/14-vocabulario.md +55 -0
  56. package/src/modules/lowticket/skills/lowticket-metodologia/knowledge/15-como-estender.md +35 -0
  57. package/src/modules/lowticket/skills/lowticket-metodologia/knowledge/INDEX.md +45 -0
  58. package/src/modules/lowticket/skills/lowticket-metodologia/knowledge/guardrails.md +33 -0
  59. package/src/modules/lowticket/skills/lowticket-metodologia/knowledge/pontos-em-aberto.md +42 -0
  60. package/src/modules/lowticket/skills/lowticket-metodologia/references/swipe-file.md +38 -0
  61. package/src/modules/lowticket/skills/lowticket-minerador/SKILL.md +115 -0
  62. package/src/modules/lowticket/skills/lowticket-minerador/references/rubrica.md +75 -0
  63. package/src/modules/lowticket/skills/lowticket-pagina/SKILL.md +106 -0
  64. package/src/modules/lowticket/skills/lowticket-pagina/references/metas-e-medicao.md +70 -0
  65. package/src/modules/lowticket/skills/lowticket-pagina/references/padroes-de-codigo.md +148 -0
  66. package/src/modules/lowticket/skills/lowticket-trafego/SKILL.md +88 -0
  67. package/src/modules/lowticket/skills/lowticket-trafego/references/formato-do-diagnostico.md +56 -0
  68. package/src/modules/lowticket/skills/lowticket-trafego/references/reguas.md +72 -0
  69. package/src/modules/wizz/README.md +1 -1
  70. package/src/modules/wizz/_shared/cerebro.md +35 -1
  71. package/src/modules/wizz/_shared/communication-rules.md +8 -1
  72. package/src/modules/wizz/_shared/encerramento.md +22 -0
  73. package/src/modules/wizz/_shared/token-economy.md +7 -10
  74. package/src/modules/wizz/agents/wizz-ads/customize.toml +1 -1
  75. package/src/modules/wizz/agents/wizz-copy/customize.toml +1 -1
  76. package/src/modules/wizz/agents/wizz-designer/SKILL.md +1 -1
  77. package/src/modules/wizz/agents/wizz-designer/customize.toml +1 -1
  78. package/src/modules/wizz/agents/wizz-growth/customize.toml +1 -1
  79. package/src/modules/wizz/agents/wizz-maestro/SKILL.md +5 -1
  80. package/src/modules/wizz/agents/wizz-maestro/customize.toml +1 -1
  81. package/src/modules/wizz/agents/wizz-memoria/SKILL.md +1 -1
  82. package/src/modules/wizz/agents/wizz-qa/SKILL.md +6 -0
  83. package/src/modules/wizz/agents/wizz-qa/customize.toml +1 -1
  84. package/src/modules/wizz/agents/wizz-seo/customize.toml +1 -1
  85. package/src/modules/wizz/agents/wizz-social/SKILL.md +1 -0
  86. package/src/modules/wizz/agents/wizz-social/customize.toml +1 -1
  87. package/src/modules/wizz/overrides/wizz-agent-analyst.toml +2 -2
  88. package/src/modules/wizz/overrides/wizz-agent-architect.toml +2 -2
  89. package/src/modules/wizz/overrides/wizz-agent-dev.toml +1 -1
  90. package/src/modules/wizz/overrides/wizz-agent-pm.toml +1 -1
  91. package/src/modules/wizz/overrides/wizz-agent-tech-writer.toml +1 -1
  92. package/src/modules/wizz/overrides/wizz-agent-ux-designer.toml +1 -1
  93. package/src/modules/wizz/subagents/codex/wizz-exec-haiku.toml +12 -0
  94. package/src/modules/wizz/subagents/codex/wizz-exec-opus.toml +12 -0
  95. package/src/modules/wizz/subagents/codex/wizz-exec-review.toml +11 -0
  96. package/src/modules/wizz/subagents/codex/wizz-exec-sonnet.toml +12 -0
  97. package/src/modules/wizz/subagents/gemini/wizz-exec-haiku.md +12 -0
  98. package/src/modules/wizz/subagents/gemini/wizz-exec-opus.md +12 -0
  99. package/src/modules/wizz/subagents/gemini/wizz-exec-review.md +11 -0
  100. package/src/modules/wizz/subagents/gemini/wizz-exec-sonnet.md +12 -0
  101. package/src/modules/wizz/subagents/opencode/wizz-exec-haiku.md +12 -0
  102. package/src/modules/wizz/subagents/opencode/wizz-exec-opus.md +12 -0
  103. package/src/modules/wizz/subagents/opencode/wizz-exec-review.md +11 -0
  104. package/src/modules/wizz/subagents/opencode/wizz-exec-sonnet.md +12 -0
  105. package/src/modules/wizz/subagents/wizz-exec-haiku.md +12 -0
  106. package/src/modules/wizz/subagents/wizz-exec-opus.md +12 -0
  107. package/src/modules/wizz/subagents/wizz-exec-review.md +11 -0
  108. package/src/modules/wizz/subagents/wizz-exec-sonnet.md +12 -0
  109. package/src/skills-lib/analytics-tracking/SKILL.md +2 -0
  110. package/src/skills-lib/analytics-tracking/references/utm-taxonomy.md +92 -0
  111. package/src/skills-lib/cerebro/SKILL.md +20 -17
  112. package/src/skills-lib/cerebro/references/comandos-pesquisa-e-memoria.md +96 -0
  113. package/src/skills-lib/cerebro/references/comandos-rotina-e-captura.md +25 -6
  114. package/src/skills-lib/cerebro/references/comandos-sessao.md +61 -37
  115. package/src/skills-lib/launch-readiness/SKILL.md +94 -0
  116. package/src/skills-lib/launch-readiness/references/01-tecnico-build.md +26 -0
  117. package/src/skills-lib/launch-readiness/references/02-seguranca.md +26 -0
  118. package/src/skills-lib/launch-readiness/references/03-seo-descoberta.md +27 -0
  119. package/src/skills-lib/launch-readiness/references/04-analytics-medicao.md +25 -0
  120. package/src/skills-lib/launch-readiness/references/05-conteudo-prova-social.md +25 -0
  121. package/src/skills-lib/launch-readiness/references/06-legal-lgpd.md +25 -0
  122. package/src/skills-lib/launch-readiness/references/07-infra-deploy-rollback.md +26 -0
  123. package/src/skills-lib/launch-readiness/references/08-fusao-priorizacao.md +33 -0
  124. package/src/skills-lib/launch-readiness/references/09-persistencia-project-context.md +48 -0
  125. package/src/skills-lib/premium-landing-ui-researcher/references/source-first-protocol.md +1 -1
  126. package/src/skills-lib/site-launch-kit/SKILL.md +1 -1
  127. package/src/skills-lib/taste-skill/SKILL.md +4 -2
  128. package/src/skills-lib/{taste-redesign → taste-skill}/references/design-audit.md +30 -41
  129. package/src/skills-lib/taste-skill/references/redesign-protocol.md +2 -2
  130. package/src/skills-lib/taste-skill/references/upgrade-techniques.md +33 -0
  131. package/src/skills-lib/tracking-audit/SKILL.md +78 -0
  132. package/src/skills-lib/tracking-audit/references/modo-diagnostico.md +72 -0
  133. package/src/skills-lib/tracking-audit/references/modo-implantacao.md +89 -0
  134. package/src/skills-lib/tracking-audit/references/utm-e-atribuicao.md +75 -0
  135. package/src/skills-lib/wizz-offer-forge/SKILL.md +30 -4
  136. package/src/skills-lib/wizz-offer-forge/references/plano-de-medicao.md +74 -0
  137. package/src/skills-lib/wizz-router/SKILL.md +8 -2
  138. package/src/skills-lib/wizz-router/references/routing-table-flat.md +4 -3
  139. package/tools/fetch-assets.mjs +3 -2
  140. package/tools/installer/commands/trace-report.js +248 -4
  141. package/tools/installer/modules/official-modules.js +5 -0
  142. package/tools/installer/modules/skills-lib.js +7 -1
  143. package/wizz-modules.yaml +20 -3
  144. package/src/skills-lib/cerebro/references/comandos-pesquisa-e-sync.md +0 -44
  145. package/src/skills-lib/graphify/.graphify_version +0 -1
  146. package/src/skills-lib/graphify/SKILL.md +0 -1199
  147. package/src/skills-lib/taste-redesign/SKILL.md +0 -42
  148. package/src/skills-lib/taste-redesign/references/upgrade-techniques.md +0 -31
package/README.md CHANGED
@@ -26,7 +26,7 @@ O ponto de entrada técnico é o `wizz-router`: ele faz a triagem e manda pedido
26
26
 
27
27
  Os papéis de dev e produto reusam os agentes WIZZ (Mary, John, Winston, Amelia, Sally, Paige), personalizados em PT-BR pelos overrides em `src/modules/wizz/overrides/`.
28
28
 
29
- A camada Wizz vale para todos os agentes: encerramento padrão (✅/➡️/🎯), economia de token (graphify, depois cérebro, depois grep antes de abrir arquivos), auto-load leve do cérebro na ativação e idioma à sua escolha. Detalhes em [src/modules/wizz/README.md](src/modules/wizz/README.md).
29
+ A camada Wizz vale para todos os agentes: encerramento padrão (✅/➡️/🎯), economia de token (cérebro, depois grep antes de abrir arquivos), auto-load leve do cérebro na ativação e idioma à sua escolha. Detalhes em [src/modules/wizz/README.md](src/modules/wizz/README.md).
30
30
 
31
31
  ## Quick Start
32
32
 
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": "1.16.1",
4
+ "version": "1.18.0",
5
5
  "description": "Wizz Method — método de agência orientado por IA em PT-BR (fork independente do BMad Method)",
6
6
  "keywords": [
7
7
  "agile",
@@ -61,17 +61,21 @@
61
61
  "rebundle": "node tools/installer/bundlers/bundle-web.js rebundle",
62
62
  "sync:check": "node tools/sync-check.mjs",
63
63
  "sync:global": "node tools/sync-global.mjs",
64
- "test": "npm run test:refs && npm run test:install && npm run test:urls && npm run test:channels && npm run test:mcp && npm run test:env-vars && npm run test:cli && npm run test:deps && npm run test:dispatch-rule && npm run test:hooks && npm run test:quickupdate && npm run test:registry-schema && npm run test:module-registry && npm run test:method-refs-allowlist && npm run test:rtk-hook && npm run test:network-retry && npm run test:sync-check && npm run test:resolver && npm run test:fetch-assets && npm run test:install-smoke && npm run test:trace-report && npm run test:rehype-plugins && npm run test:workflow-path-regex && npm run test:preflight-tools-check && npm run lint && npm run lint:md && npm run format:check && npm run sync:check",
64
+ "test": "npm run test:refs && npm run test:install && npm run test:urls && npm run test:channels && npm run test:mcp && npm run test:env-vars && npm run test:cli && npm run test:cli-pin-consistency && npm run test:deps && npm run test:dispatch-rule && npm run test:hooks && npm run test:feature-context && npm run test:decision-trace && npm run test:quickupdate && npm run test:registry-schema && npm run test:registry-lib-parity && npm run test:lowticket-third-party && npm run test:module-registry && npm run test:method-refs-allowlist && npm run test:rtk-hook && npm run test:network-retry && npm run test:sync-check && npm run test:resolver && npm run test:fetch-assets && npm run test:install-smoke && npm run test:trace-report && npm run test:rehype-plugins && npm run test:workflow-path-regex && npm run test:preflight-tools-check && npm run lint && npm run lint:md && npm run format:check && npm run sync:check",
65
65
  "test:channels": "node test/test-installer-channels.js",
66
66
  "test:cli": "node test/test-cli-config.js",
67
+ "test:cli-pin-consistency": "node test/test-cli-pin-consistency.js",
68
+ "test:decision-trace": "node test/test-decision-trace.js",
67
69
  "test:deps": "node test/test-deps-cache.js",
68
70
  "test:dispatch-rule": "node test/test-dispatch-rule-consistency.js",
69
71
  "test:env-vars": "node test/test-env-vars.js",
72
+ "test:feature-context": "node test/test-feature-context.js",
70
73
  "test:fetch-assets": "node test/test-fetch-assets.js",
71
74
  "test:hooks": "node test/test-router-hook.js",
72
75
  "test:install": "node test/test-installation-components.js",
73
76
  "test:install-smoke": "node test/test-install-smoke.js",
74
77
  "test:install-smoke-mcp": "node test/test-install-smoke-mcp.js",
78
+ "test:lowticket-third-party": "node test/test-lowticket-third-party.js",
75
79
  "test:mcp": "node test/test-mcp-config.js",
76
80
  "test:method-refs-allowlist": "node test/test-method-refs-allowlist.js",
77
81
  "test:module-registry": "node test/test-module-registry-fields.js",
@@ -79,6 +83,7 @@
79
83
  "test:preflight-tools-check": "node test/test-preflight-tools-check.js",
80
84
  "test:quickupdate": "node test/test-quick-update-gate.js",
81
85
  "test:refs": "node test/test-file-refs-csv.js",
86
+ "test:registry-lib-parity": "node test/test-registry-lib-parity.js",
82
87
  "test:registry-schema": "node test/test-registry-schema.js",
83
88
  "test:rehype-plugins": "node test/test-rehype-plugins.mjs",
84
89
  "test:resolver": "node test/test-resolve-customization.js",
package/removals.txt CHANGED
@@ -60,3 +60,12 @@ wizz-distillator
60
60
  # wizz-create-ux-design: renamed to wizz-ux (spine-based skill with separate
61
61
  # DESIGN.md and EXPERIENCE.md outputs).
62
62
  wizz-create-ux-design
63
+ # taste-redesign: merged into taste-skill (P2 auditoria 360°, 2026-08-25).
64
+ # The redesign audit checklist and upgrade techniques now live as
65
+ # references/design-audit.md and references/upgrade-techniques.md inside
66
+ # taste-skill; taste-skill's description and redesign-protocol.md cover
67
+ # the same existing-project audit ground taste-redesign used to own.
68
+ taste-redesign
69
+
70
+ # Removida na auditoria de contexto (2026-08-28): knowledge graph descontinuado.
71
+ graphify
@@ -80,9 +80,11 @@ areas:
80
80
  entry: true
81
81
  door: direcao
82
82
  when: "PORTA de direção: todo trabalho de decidir ANTES de construir. Brief visual inicial (6 decisões de estética + 3 lógicas) no kickoff. Puxa: taste-skill (direção anti-slop de brief novo) e motion-3d-director (decidir caminho motion/3D/vídeo)."
83
+ rel:
84
+ pairs_with: [taste-skill, motion-3d-director]
83
85
  - id: taste-skill
84
86
  door: direcao
85
- when: "Anti-slop em briefs NOVOS: lê o brief, define a direção e audita contra defaults de AI."
87
+ when: "Anti-slop em briefs NOVOS: lê o brief, define a direção e audita contra defaults de AI. Também cobre projeto EXISTENTE: audita o código atual, lista problemas, prioriza fixes (protocolo de redesign)."
86
88
  - id: motion-3d-director
87
89
  door: direcao
88
90
  when: "Direção de motion/animação, 3D, WebGL, scroll cinematográfico, image-to-video. Decide o caminho ANTES de implementar."
@@ -91,7 +93,7 @@ areas:
91
93
  - id: ui-ux-pro-max
92
94
  entry: true
93
95
  door: construcao
94
- when: "PORTA de construção: criar/melhorar UI (design system, paleta, tipografia, componente, página). Puxa: premium-landing-ui-researcher (landing premium greenfield), ui-component-curator (1 componente em projeto existente), impeccable (gate de polish/acessibilidade), taste-redesign (anti-slop em código existente), huashu-design (protótipo HTML hi-fi/variantes/review) e react-components (Stitch→React)."
96
+ when: "PORTA de construção: criar/melhorar UI (design system, paleta, tipografia, componente, página). Puxa: premium-landing-ui-researcher (landing premium greenfield), ui-component-curator (1 componente em projeto existente), impeccable (gate de polish/acessibilidade), taste-skill (anti-slop em código existente, protocolo de redesign), huashu-design (protótipo HTML hi-fi/variantes/review) e react-components (Stitch→React)."
95
97
  - id: premium-landing-ui-researcher
96
98
  door: construcao
97
99
  when: "Projeto NOVO (greenfield): cria landing premium do zero, hero, 3D high-end. Estratégia source-first."
@@ -101,9 +103,6 @@ areas:
101
103
  - id: impeccable
102
104
  door: construcao
103
105
  when: "Gate de polish/qualidade de frontend: hardening de UI, acessibilidade, anti-padrões. Refina o que já existe."
104
- - id: taste-redesign
105
- door: construcao
106
- when: "Anti-slop em projeto EXISTENTE: audita o código atual, lista problemas, prioriza fixes."
107
106
  - id: huashu-design
108
107
  door: construcao
109
108
  when: "Direção visual + protótipo HTML hi-fi, exploração de variantes, review 5-dim, export MP4/GIF."
@@ -122,12 +121,17 @@ areas:
122
121
  - id: remotion-best-practices
123
122
  door: motion
124
123
  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)."
124
+ rel:
125
+ after: [hyperframes]
125
126
  - id: canvas-design
126
127
  door: motion
127
128
  when: "Gerar PNG/PDF editável por código (carrossel, quote card, infográfico) com fonte/cor/logo sempre certos. Traz canvas-fonts."
128
129
  - id: algorithmic-art
129
130
  door: motion
130
131
  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."
132
+ - id: ctc-align
133
+ door: motion
134
+ 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."
131
135
  mcps:
132
136
  - id: magic
133
137
  when: "Gerar/refinar componentes prontos via 21st.dev (UI builder, inspiration, refiner)."
@@ -140,41 +144,63 @@ areas:
140
144
  clis:
141
145
  - id: 21st-cli
142
146
  when: "Fonte PAGA complementar (catálogos gratuitos como React Bits/Cult UI/Componentry vêm primeiro; gate de aprovação do usuário). Buscar, inspecionar, instalar e publicar componentes no 21st.dev via terminal (search/get/add/publish, registry do time @wizzdigitalagency). Complementa o Magic MCP (geração assistida); é o caminho de catálogo/registry e o fallback declarado quando o MCP está offline. O install traz também as skills oficiais 21st-cli-use, 21st-registry e 21st-design-sync. Login interativo: `21st login` (em CI usar env API_KEY_21ST)."
147
+ rel:
148
+ pairs_with: [magic]
143
149
  check: "command -v 21st"
144
150
  install: "npm i -g @21st-dev/cli && npx @21st-dev/cli install-skill"
145
151
  - id: hyperframes
146
152
  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."
153
+ not_when: "Montagem com áudio/SFX/legenda sincronizada (posicionador de áudio falhou em produção, ~2,76s de drift; CSS vaza entre telas)."
154
+ rel:
155
+ before: [remotion-best-practices]
147
156
  platform: [darwin, linux]
148
- check: "test -d $HOME/.claude/skills/hyperframes"
157
+ # O check confere o SHA fixado, não só a existência da pasta: o bundle é
158
+ # copiado (não clonado), então o pin é gravado num marcador no install.
159
+ check: 'grep -qx 59a69a145bfbd0f10dee72246b68ee5d9bd71063 "$HOME/.claude/skills/hyperframes/.wizz-pin" 2>/dev/null'
149
160
  # Pin de supply chain (2026-08-23): clone temporário + checkout do SHA
150
161
  # + `skills add` do path local. Atualizar conscientemente.
151
- install: 'd="$(mktemp -d)" && git clone https://github.com/heygen-com/hyperframes.git "$d" && git -C "$d" checkout 59a69a145bfbd0f10dee72246b68ee5d9bd71063 && npx skills add "$d" -g -y --copy && rm -rf "$d"'
162
+ # Neutraliza remotion-to-hyperframes: o bundle instala uma skill de
163
+ # migração Remotion→HyperFrames proibida pela regra do pipeline
164
+ # (_shared/video-pipeline.md: HyperFrames desenha, Remotion monta).
165
+ install: 'd="$(mktemp -d)" && git clone https://github.com/heygen-com/hyperframes.git "$d" && git -C "$d" checkout 59a69a145bfbd0f10dee72246b68ee5d9bd71063 && npx skills add "$d" -g -y --copy && printf "%s\\n" 59a69a145bfbd0f10dee72246b68ee5d9bd71063 > "$HOME/.claude/skills/hyperframes/.wizz-pin" && rm -rf "$d" && rm -rf "$HOME/.claude/skills/remotion-to-hyperframes"'
152
166
  - id: claude-video
153
167
  when: "Analisar/entender vídeo EXISTENTE: baixa, extrai frames e transcreve para resumir, achar momentos ou diagnosticar footage. NÃO cria vídeo. Precisa ffmpeg + yt-dlp (+ Groq/OpenAI p/ transcrição sem legenda)."
154
168
  platform: [darwin, linux]
155
- check: "test -d $HOME/.claude/skills/watch"
169
+ # O check confere o SHA fixado, não só a existência da pasta: o bundle é
170
+ # copiado (não clonado), então o pin é gravado num marcador no install.
171
+ check: 'grep -qx 83da59fa78c3eee9e20f515fe75c438bb5166efd "$HOME/.claude/skills/watch/.wizz-pin" 2>/dev/null'
156
172
  # Pin de supply chain (2026-08-23): clone temporário + checkout do SHA
157
173
  # + `skills add` local. Atualizar conscientemente.
158
- install: 'd="$(mktemp -d)" && git clone https://github.com/bradautomates/claude-video.git "$d" && git -C "$d" checkout 83da59fa78c3eee9e20f515fe75c438bb5166efd && npx skills add "$d" -g -y --copy && rm -rf "$d"'
174
+ install: 'd="$(mktemp -d)" && git clone https://github.com/bradautomates/claude-video.git "$d" && git -C "$d" checkout 83da59fa78c3eee9e20f515fe75c438bb5166efd && npx skills add "$d" -g -y --copy && printf "%s\\n" 83da59fa78c3eee9e20f515fe75c438bb5166efd > "$HOME/.claude/skills/watch/.wizz-pin" && rm -rf "$d"'
159
175
  - id: buttercut
160
176
  when: "EDITAR vídeo por IA: cortes, selects, cenas, roughcut via XML/FFmpeg. Sugerir quando o pedido for editar/cortar vídeo. Clone-and-run no PROJETO (não é skill add), pesado: Ruby + Python + FFmpeg + WhisperX. AVISOS: ~GB de modelos (WhisperX), build demorado, só Apple Silicon."
161
177
  platform: darwin-arm64
162
- check: "test -d ./buttercut"
178
+ # Clone-and-run: o próprio repo responde o SHA, então o check compara com o
179
+ # pin. O install repara um clone existente em vez de falhar no git clone.
180
+ check: 'test "$(git -C ./buttercut rev-parse HEAD 2>/dev/null)" = f71d9537e2c22c3c4c1c659c4bdfb11e90ccd961'
163
181
  # Pin de supply chain (2026-08-23): checkout de SHA fixo; atualizar conscientemente.
164
- install: "git clone https://github.com/barefootford/buttercut.git buttercut && git -C buttercut checkout f71d9537e2c22c3c4c1c659c4bdfb11e90ccd961"
182
+ install: "{ [ -d buttercut/.git ] || git clone https://github.com/barefootford/buttercut.git buttercut; } && git -C buttercut fetch --tags origin && git -C buttercut checkout f71d9537e2c22c3c4c1c659c4bdfb11e90ccd961"
165
183
  verify: "command -v ffmpeg >/dev/null 2>&1 && command -v ruby >/dev/null 2>&1 && command -v python3 >/dev/null 2>&1"
166
184
  - id: voicebox
167
185
  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."
168
186
  platform: [darwin, linux]
169
- check: "test -d ./voicebox"
187
+ # Clone-and-run: o próprio repo responde o SHA, então o check compara com o
188
+ # pin. O install repara um clone existente em vez de falhar no git clone.
189
+ check: 'test "$(git -C ./voicebox rev-parse HEAD 2>/dev/null)" = 2bcb98d1a8b6fe05e15fbc1559e3085669e4035d'
170
190
  # Pin de supply chain (2026-08-23): checkout de SHA fixo; atualizar conscientemente.
171
- install: "git clone https://github.com/jamiepine/voicebox.git voicebox && git -C voicebox checkout 2bcb98d1a8b6fe05e15fbc1559e3085669e4035d"
191
+ install: "{ [ -d voicebox/.git ] || git clone https://github.com/jamiepine/voicebox.git voicebox; } && git -C voicebox fetch --tags origin && git -C voicebox checkout 2bcb98d1a8b6fe05e15fbc1559e3085669e4035d"
172
192
  - id: ctc-align
173
193
  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."
174
194
  platform: [darwin, linux]
175
195
  check: "test -x ./tools/ctc-align/.venv/bin/ctc-forced-aligner"
176
196
  install: 'mkdir -p tools/ctc-align && uv venv --python 3.12 tools/ctc-align/.venv && uv pip install --python tools/ctc-align/.venv/bin/python "git+https://github.com/MahmoudAshraf97/ctc-forced-aligner.git"'
177
197
  verify: "command -v ffmpeg >/dev/null 2>&1 && command -v uv >/dev/null 2>&1"
198
+ - id: fal-video
199
+ when: "GERAR vídeo/imagem por IA (Veo/Kling/Wan e outros modelos via API da fal.ai), estilo UGC/ad-ready. Substitui o arcads: mesmo caso de uso (vídeo gerado por IA), custo 50-95% menor por vídeo, sem clone-and-run pesado. Precisa FAL_KEY em .env. Sem CLI binária oficial: usa o client Node oficial @fal-ai/client como dependência do projeto."
200
+ platform: [darwin, linux]
201
+ check: "test -f node_modules/@fal-ai/client/package.json"
202
+ # Pin de supply chain (2026-08-25): versão fixa (client oficial fal.ai); atualizar conscientemente.
203
+ install: "npm install @fal-ai/client@1.10.1"
178
204
  references:
179
205
  - "references/premium-agency-rules.md (regras $150k-tier, importadas por impeccable/huashu no modo high-end)"
180
206
 
@@ -213,9 +239,11 @@ areas:
213
239
  - id: distribb
214
240
  when: "EXECUTAR distribuição de SEO: publicar artigos + construir backlinks pela rede da Distribb, conectar Google Search Console, autopublicar notícias. Complementa (não duplica) as skills de SEO que só geram/auditam. Requer Distribb API + GSC (+ DataForSEO/Ahrefs no plano free)."
215
241
  platform: [darwin, linux]
216
- check: "ls $HOME/.claude/skills 2>/dev/null | grep -qi distribb"
242
+ # O check confere o SHA fixado, não a existência da pasta: o bundle é
243
+ # copiado (não clonado), então o pin é gravado num marcador no install.
244
+ check: 'grep -qx 061a055768e13cf09108932a90aeb2e957183858 "$HOME/.claude/skills/distribb/.wizz-pin" 2>/dev/null'
217
245
  # Pin de supply chain (2026-08-23): clone temporário + checkout do SHA. Atualizar conscientemente.
218
- install: 'd="$(mktemp -d)" && git clone https://github.com/Bomx/distribb-skill.git "$d" && git -C "$d" checkout 061a055768e13cf09108932a90aeb2e957183858 && npx skills add "$d" -g -y --copy && rm -rf "$d"'
246
+ install: 'd="$(mktemp -d)" && git clone https://github.com/Bomx/distribb-skill.git "$d" && git -C "$d" checkout 061a055768e13cf09108932a90aeb2e957183858 && npx skills add "$d" -g -y --copy && printf "%s\\n" 061a055768e13cf09108932a90aeb2e957183858 > "$HOME/.claude/skills/distribb/.wizz-pin" && rm -rf "$d"'
219
247
 
220
248
  growth:
221
249
  agent: wizz-growth
@@ -263,6 +291,28 @@ areas:
263
291
  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)."
264
292
  - id: wizz-offer-forge
265
293
  when: "Forjar oferta irresistível de resposta direta/infoproduto (mecanismo único, empilhamento de valor, garantia reversa, ponte de tráfego)."
294
+ # Módulo lowticket (src/modules/lowticket) — ver nota em ads.skills.
295
+ - id: lowticket-metodologia
296
+ module: lowticket
297
+ when: "Roteador da base low ticket BR/PT: gatilho → um shard. Régua de preço, garantia e oferta que tem precedência sobre a skill genérica."
298
+ not_when:
299
+ - "SaaS, B2B, site de cliente, high ticket ou mentoria: os números não transferem."
300
+ - id: lowticket-funil
301
+ module: lowticket
302
+ when: "Escada pós-checkout de low ticket: upsell 1, upsell 2, downsell, oferta final, régua de preço por degrau e copy das páginas."
303
+ not_when:
304
+ - "Antes de existir um front-end que converte: estender funil sobre front que não vende multiplica zero."
305
+ - id: lowticket-minerador
306
+ module: lowticket
307
+ when: "Garimpo e veredito de oferta de concorrente: vocabulário de busca, veredito em 4 níveis, comparação lado a lado, diagnóstico de por que não escalou."
308
+ not_when:
309
+ - "A oferta já está definida: aí é wizz-offer-forge."
310
+ - id: lowticket-pagina
311
+ module: lowticket
312
+ when: "Engenharia de performance da página de venda low ticket: connect rate, ordem do pixel, LCP/TTFB/CLS, peso acima da dobra, relatório antes e depois."
313
+ not_when:
314
+ - "Reescrever copy, preço ou estrutura de oferta: esta skill é o engenheiro, não o copywriter."
315
+ - "Site institucional ou app."
266
316
  mcps:
267
317
  - id: scrapling
268
318
  when: "Scraping/crawl web para pesquisa de mercado, prospecção de leads e inteligência competitiva. Bypass anti-bot (Cloudflare), parsing adaptativo, spider concorrente. Requer: pip install 'scrapling[ai]' && scrapling install."
@@ -297,6 +347,28 @@ areas:
297
347
  when: "Gerar/iterar criativos e headlines de anúncio em escala (RSA, variações)."
298
348
  - id: analytics-tracking
299
349
  when: "Tracking de conversão pros anúncios (compartilhada com growth)."
350
+ - id: tracking-audit
351
+ when: "Auditar rastreamento de oferta de resposta direta. Modo implantação: pixel, CAPI, domínio verificado, eventos priorizados, UTM com ID, repasse do parâmetro nativo pelo checkout, higiene de nomenclatura, compra-teste por rota. Modo diagnóstico: qual transição do funil está furando, medição contra conversão, ROI verdadeiro contra falso, qual dado falta pra decidir."
352
+ not_when:
353
+ - "Plano de medição de SaaS ou produto instrumentado por evento de uso: é analytics-tracking."
354
+ - "Decidir bid, orçamento ou estrutura de campanha: é paid-ads."
355
+ rel:
356
+ pairs_with: [analytics-tracking, paid-ads]
357
+ before: [page-cro]
358
+ # Módulo lowticket (src/modules/lowticket) — instaladas COM O MÓDULO, não
359
+ # por skills-lib. O campo `module` é o gate: resolveSkillIds as ignora ao
360
+ # copiar de src/skills-lib, e o router continua enxergando as entradas.
361
+ - id: lowticket-metodologia
362
+ module: lowticket
363
+ when: "Roteador da base low ticket BR/PT: gatilho → um shard (diagnóstico de funil, bid cap, criativo, oferta, página, Instagram, upsell, mineração). Carrega guardrails junto."
364
+ not_when:
365
+ - "SaaS, B2B, site de cliente, high ticket ou mentoria: os números não transferem."
366
+ - id: lowticket-trafego
367
+ module: lowticket
368
+ when: "Diagnóstico e régua de campanha Meta de low ticket: estrutura 1-1-X, bid cap, régua de 3x, quando cortar, como escalar, ler print do gerenciador ou do funil."
369
+ not_when:
370
+ - "Google Ads institucional, campanha de marca, lead gen B2B."
371
+ - "Escrever copy ou criativo: a skill lê número, não produz anúncio."
300
372
  mcps:
301
373
  - id: meta-ads
302
374
  when: "Gestão real de campanha Meta/Facebook/Instagram via API (criar/editar/medir ads)."
@@ -306,14 +378,6 @@ areas:
306
378
  args: ["-y", "mcp-meta-ads@1.0.0"]
307
379
  env:
308
380
  META_ACCESS_TOKEN: "${META_ACCESS_TOKEN}"
309
- clis:
310
- - id: arcads
311
- when: "GERAR vídeo-ad e imagem por IA (Seedance/Sora/Veo/Kling/OmniHuman + Nano Banana) e publicar como Meta ad. Clone-and-run no projeto: git clone + ./scripts/setup.sh; precisa Python 3.10+ e ARCADS API key em .env (META_ACCESS_TOKEN opcional p/ publicar)."
312
- platform: [darwin, linux]
313
- check: "test -d ./arcads-claude-code"
314
- # Pin de supply chain (2026-08-23): checkout de SHA fixo; atualizar conscientemente.
315
- install: "git clone https://github.com/krusemediallc/arcads-claude-code.git arcads-claude-code && git -C arcads-claude-code checkout 0bfafb256cfce3ff4447d7ea1611a37f0af536be"
316
- verify: "command -v python3 >/dev/null 2>&1 && python3 -c 'import sys; sys.exit(0 if sys.version_info >= (3, 10) else 1)'"
317
381
 
318
382
  architect:
319
383
  agent: wizz-agent-architect
@@ -348,6 +412,15 @@ areas:
348
412
  args: ["-y", "@supabase/mcp-server-supabase@0.11.0", "--read-only", "--project-id", "${SUPABASE_PROJECT_REF}"]
349
413
  env:
350
414
  SUPABASE_ACCESS_TOKEN: "${SUPABASE_ACCESS_TOKEN}"
415
+ clis:
416
+ - id: sentry-cli
417
+ when: "CONDICIONAL — só ofereça se o projeto JÁ usa Sentry (existe SENTRY_DSN no env, sentry.properties, ou '@sentry/' no package.json) E o estágio é produção: subir release/sourcemaps, associar commits, monitorar erro em deploy. Nunca default e nunca sugerir ADOTAR Sentry só por causa desta CLI — é suporte a um Sentry que já existe, não uma recomendação de ferramenta."
418
+ not_when:
419
+ - "Projeto ainda não usa Sentry (sem SENTRY_DSN, sentry.properties ou '@sentry/' no package.json)."
420
+ - "Fora de estágio de produção."
421
+ check: "sentry-cli --version"
422
+ # Pin de supply chain (2026-08-25): versão fixa; atualizar conscientemente.
423
+ install: "npm install -g @sentry/cli@3.6.2"
351
424
 
352
425
  qa:
353
426
  agent: wizz-qa
@@ -355,6 +428,15 @@ areas:
355
428
  skills:
356
429
  - id: adversarial-reviewer
357
430
  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 (camada interna 'Blind Hunter' chamada só por wizz-code-review) nem com wizz-code-review (orquestrador bmm: 3 camadas paralelas + triagem, para review real de diff/PR)."
431
+ - id: security-audit-pentest
432
+ 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."
433
+ - id: launch-readiness
434
+ 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."
435
+ not_when:
436
+ - "Estágio de descoberta/ideação: projeto ainda sem superfície construída pra auditar (sem project-context.md, ou stage 'prototype' vazio)."
437
+ - "Correção de um achado isolado de site já identificado: nesse caso vá direto pra site-launch-kit."
438
+ rel:
439
+ pairs_with: [site-launch-kit, security-audit-pentest]
358
440
  - id: agent-browser
359
441
  when: "Verificação visual/browser, preencher forms, screenshots, testar UI no navegador. CLI já instalado (não é MCP); browser SEMPRE via agent-browser, nunca Playwright."
360
442
  clis:
@@ -363,6 +445,18 @@ areas:
363
445
  check: "agent-browser --version"
364
446
  # Pin de supply chain (2026-08-23): versão fixa; atualizar conscientemente.
365
447
  install: "npm install -g agent-browser@0.34.0"
448
+ - id: strix
449
+ 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."
450
+ not_when: "Sem alvo próprio ou sem autorização escrita e escopo definido do dono do sistema; nunca acionar por padrão silencioso."
451
+ rel:
452
+ pairs_with: [security-audit-pentest]
453
+ platform: [darwin, linux]
454
+ check: "command -v strix"
455
+ # Pin de supply chain (2026-08-25): versão fixa do pacote pip; o sandbox
456
+ # é a imagem pinada ghcr.io/usestrix/strix-sandbox:1.3.0, puxada no 1º run
457
+ # dentro do Docker isolado. Atualizar conscientemente.
458
+ install: "pipx install strix-agent==1.5.3"
459
+ verify: "command -v docker >/dev/null 2>&1 && docker info >/dev/null 2>&1"
366
460
 
367
461
  analyst:
368
462
  agent: wizz-agent-analyst
@@ -371,30 +465,19 @@ areas:
371
465
  - id: inicio-de-projeto
372
466
  when: "Kickoff LEVE de engenharia: stack, personas, glossário, princípios, estrutura de pastas, checklist. Atalho sem cerimônia de PRD."
373
467
  - id: implementation-planner
374
- when: "Plano técnico de implementação de site/app premium pós-direção aprovada."
375
- mcps:
376
- - id: exa
377
- when: "Pesquisa web/prior-art durante planejamento (web search, descoberta de fontes)."
378
- server:
379
- command: npx
380
- # Pin de supply chain (2026-08-23): versão fixa; atualizar conscientemente.
381
- args: ["-y", "exa-mcp-server@3.4.1"]
382
- env:
383
- EXA_API_KEY: "${EXA_API_KEY}"
468
+ when: "Plano técnico de implementação de site/app premium pós-direção aprovada. Pesquisa web/prior-art durante o planejamento usa a tool nativa WebSearch (sem custo/MCP metered — o MCP exa foi removido em 2026-08-25)."
384
469
 
385
470
  memoria:
386
471
  agent: wizz-memoria
387
472
  summary: "Memória do projeto: o que foi decidido, salvar, ver estado."
388
473
  skills:
389
474
  - id: cerebro
390
- when: "Recuperar/salvar decisões, contexto, aprendizados; ver estado do projeto (/ver, /salvar, /decisao, /dump)."
475
+ 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)."
391
476
 
392
477
  # ─────────────────────────────────────────────────────────────────────────────
393
478
  # UTILITÁRIOS — cross-cutting, não pertencem a uma área só.
394
479
  # ─────────────────────────────────────────────────────────────────────────────
395
480
  utility:
396
- - id: graphify
397
- when: "Transformar código/docs em knowledge graph; navegar estrutura antes de ler arquivos crus."
398
481
  - id: find-skills
399
482
  when: "Nenhuma skill cobre o pedido: buscar/instalar no marketplace (npx skills find)."
400
483
  - id: enhance-prompt
@@ -37,7 +37,7 @@ activation_steps_append = []
37
37
 
38
38
  persistent_facts = [
39
39
  "file:{project-root}/**/project-context.md",
40
- "If active_feature is set in {project-root}/_wizz/bmm/config.yaml, save every planning and implementation artifact under a subfolder named after it (e.g. {planning_artifacts}/{active_feature}/, {implementation_artifacts}/{active_feature}/). If it is empty or unset, write to the artifact roots as usual.",
40
+ "FEATURE: o hook SessionStart resolve a feature ativa a partir do branch git e injeta 'FEATURE ATIVA: <slug>'. Se ela existir, salve TODO artefato de planejamento e implementação na subpasta com esse nome ({planning_artifacts}/{active_feature}/, {implementation_artifacts}/{active_feature}/) e grave o slug em active_feature no {project-root}/_wizz/bmm/config.yaml na primeira escrita, avisando em UMA linha. Memória gravada nesta sessão leva o mesmo slug como tema. Sem feature resolvida, escreva nas raízes. NUNCA pergunte a feature ao usuário: invoque wizz-set-feature só se ele pedir para trocar, ou se houver duas features abertas e o pedido não decidir entre elas.",
41
41
  ]
42
42
 
43
43
  role = "Help the user ideate research and analyze before committing to a project in the Wizz Method analysis phase."
@@ -1,74 +1,78 @@
1
1
  ---
2
2
  name: wizz-set-feature
3
- description: 'Set or switch the active feature context so planning and implementation artifacts are organized into a named subfolder. Use when the user says "set feature", "switch feature", "new feature", or asks "what feature is active".'
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".'
4
4
  ---
5
5
 
6
6
  # Set Feature
7
7
 
8
- **Goal:** Set or switch the `active_feature` context so all subsequent planning and implementation artifacts are saved into a named subfolder.
8
+ **Goal:** Keep `active_feature` correct so planning artifacts, implementation artifacts and memory entries all land under the same named slug.
9
+
10
+ **Default mode is automatic.** The `session-rules.js` SessionStart hook already resolves the feature from the git branch and injects it as `FEATURE ATIVA: <slug>`. In the normal case nobody invokes this skill and nobody is asked anything. Invoke it only for the three explicit cases in "When this skill runs" below.
9
11
 
10
12
  ## Conventions
11
13
 
12
14
  - `{project-root}`-prefixed paths resolve from the project working directory.
13
15
 
14
- ## On Activation
16
+ ## Resolution order (never ask before exhausting it)
15
17
 
16
- ### Step 1: Load Config
18
+ 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.
19
+ 2. **`active_feature` in `{project-root}/_wizz/bmm/config.yaml`.** Used when the branch gives nothing.
20
+ 3. **The request itself.** Only when 1 and 2 are both empty AND the user is clearly starting named work ("vamos fazer o painel de assinaturas"). Derive the slug, write it, and say so in **one line**. Do not ask.
21
+ 4. **Nothing.** Artifacts go to the roots and memory carries no feature tag. This is a valid state, not a problem to fix.
17
22
 
18
- Load config from `{project-root}/_wizz/bmm/config.yaml` and resolve:
23
+ The branch wins over the config: it describes the work happening now, while the config may be stale from a feature nobody switched off.
19
24
 
20
- - `project_name`, `user_name`, `communication_language`
21
- - `planning_artifacts`, `implementation_artifacts`
22
- - `active_feature` (current value, may be empty or absent)
25
+ ## When this skill runs
23
26
 
24
- Always speak in `{communication_language}`.
27
+ - **The user asks what is active** → answer from the resolution order and stop. Do not write anything.
28
+ - **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.
29
+ - **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.
25
30
 
26
- ### Step 2: Show Current State
31
+ ## Steps
27
32
 
28
- - If `active_feature` is set: "Active feature: **{active_feature}**".
29
- - If empty or absent: "No active feature set. Artifacts are saving to the roots."
33
+ ### Step 1: Load config
30
34
 
31
- If the user only asked which feature is active, stop here.
35
+ Load `{project-root}/_wizz/bmm/config.yaml` and resolve `project_name`, `communication_language`, `planning_artifacts`, `implementation_artifacts`, and the current `active_feature`. Always speak in `{communication_language}`.
32
36
 
33
- ### Step 3: Ask for the Feature Slug
37
+ ### Step 2: Resolve the slug
34
38
 
35
- Ask: "What is the feature name? Use a short kebab-case slug (e.g. `admin-panel`, `auth-refactor`, `dashboard-financeiro`). It becomes the subfolder name inside `planning-artifacts/` and `implementation-artifacts/`."
39
+ Apply the resolution order above. Normalize to kebab-case: lowercase, strip accents, non-alphanumerics become hyphens, no leading or trailing hyphen, 60 characters max.
36
40
 
37
- Wait for the user's answer.
41
+ Confirm with the user **only** in the ambiguity case. A slug that came from the branch, from an explicit user instruction, or from a clear request is written without a confirmation round.
38
42
 
39
- ### Step 4: Validate and Confirm
43
+ ### Step 3: Write the config
40
44
 
41
- - Reject empty input.
42
- - Normalize: lowercase and replace spaces with hyphens.
43
- - Show the normalized slug and confirm it with the user before proceeding.
45
+ Set `active_feature:` to the slug (add the key if absent). To clear it, set it to `""`.
44
46
 
45
- ### Step 5: Update Config
47
+ ### Step 4: Create the subfolders
46
48
 
47
- Edit `{project-root}/_wizz/bmm/config.yaml`:
49
+ Create if missing:
48
50
 
49
- - If an `active_feature:` key exists, set its value to the confirmed slug.
50
- - If it does not exist, add the line `active_feature: "{slug}"`.
51
- - Save the file.
51
+ - `{planning_artifacts}/{active_feature}/`
52
+ - `{implementation_artifacts}/{active_feature}/`
52
53
 
53
- ### Step 6: Create Subfolders
54
+ Skip this step when clearing.
54
55
 
55
- Create these directories if they do not already exist:
56
+ ### Step 5: Report in one line
56
57
 
57
- - `{planning_artifacts}/{active_feature}/`
58
- - `{implementation_artifacts}/{active_feature}/`
58
+ "Feature: **{active_feature}**. Artefatos em `{planning_artifacts}/{active_feature}/` e `{implementation_artifacts}/{active_feature}/`, memória desta sessão marcada com o mesmo tema."
59
59
 
60
- ### Step 7: Confirm
60
+ When clearing: "Feature limpa. Artefatos voltam para as raízes e a memória sai sem tema de feature."
61
61
 
62
- Tell the user:
62
+ ## The feature is also the memory tag
63
63
 
64
- "Feature set to **{active_feature}**. New planning and implementation artifacts will be saved under:
65
- - `{planning_artifacts}/{active_feature}/`
66
- - `{implementation_artifacts}/{active_feature}/`
64
+ The slug is the single organizing axis, not a folder rule that stops at artifacts. While a feature is active:
65
+
66
+ - A decision saved to the Cérebro carries `tema: {active_feature}` in its frontmatter.
67
+ - The project state block records which feature the work sits under.
68
+ - An auto-memory entry about this work mentions the feature in its description, so a later `grep` by slug finds artifact, decision and trap together.
67
69
 
68
- Run this skill again anytime to switch features, or clear the slug to go back to the roots."
70
+ This reuses the `tema` axis that already exists for decisions. Do not create a second, parallel `feature:` field alongside it.
69
71
 
70
72
  ## Success Criteria
71
73
 
74
+ - ✅ The slug was resolved without asking the user, except in genuine ambiguity.
72
75
  - ✅ `active_feature` updated in `_wizz/bmm/config.yaml`.
73
- - ✅ Subfolders created in planning-artifacts and implementation-artifacts.
74
- - ✅ User clearly informed of the new artifact paths.
76
+ - ✅ Subfolders exist under planning-artifacts and implementation-artifacts.
77
+ - ✅ Memory written during the session carries the same slug as `tema`.
78
+ - ✅ The user got one line, not a dialogue.
@@ -37,7 +37,7 @@ activation_steps_append = []
37
37
 
38
38
  persistent_facts = [
39
39
  "file:{project-root}/**/project-context.md",
40
- "If active_feature is set in {project-root}/_wizz/bmm/config.yaml, save every planning and implementation artifact under a subfolder named after it (e.g. {planning_artifacts}/{active_feature}/, {implementation_artifacts}/{active_feature}/). If it is empty or unset, write to the artifact roots as usual.",
40
+ "FEATURE: o hook SessionStart resolve a feature ativa a partir do branch git e injeta 'FEATURE ATIVA: <slug>'. Se ela existir, salve TODO artefato de planejamento e implementação na subpasta com esse nome ({planning_artifacts}/{active_feature}/, {implementation_artifacts}/{active_feature}/) e grave o slug em active_feature no {project-root}/_wizz/bmm/config.yaml na primeira escrita, avisando em UMA linha. Memória gravada nesta sessão leva o mesmo slug como tema. Sem feature resolvida, escreva nas raízes. NUNCA pergunte a feature ao usuário: invoque wizz-set-feature só se ele pedir para trocar, ou se houver duas features abertas e o pedido não decidir entre elas.",
41
41
  ]
42
42
 
43
43
  role = "Translate product vision into a validated PRD, epics, and stories that development can execute during the Wizz Method planning phase."
@@ -37,7 +37,7 @@ activation_steps_append = []
37
37
 
38
38
  persistent_facts = [
39
39
  "file:{project-root}/**/project-context.md",
40
- "If active_feature is set in {project-root}/_wizz/bmm/config.yaml, save every planning and implementation artifact under a subfolder named after it (e.g. {planning_artifacts}/{active_feature}/, {implementation_artifacts}/{active_feature}/). If it is empty or unset, write to the artifact roots as usual.",
40
+ "FEATURE: o hook SessionStart resolve a feature ativa a partir do branch git e injeta 'FEATURE ATIVA: <slug>'. Se ela existir, salve TODO artefato de planejamento e implementação na subpasta com esse nome ({planning_artifacts}/{active_feature}/, {implementation_artifacts}/{active_feature}/) e grave o slug em active_feature no {project-root}/_wizz/bmm/config.yaml na primeira escrita, avisando em UMA linha. Memória gravada nesta sessão leva o mesmo slug como tema. Sem feature resolvida, escreva nas raízes. NUNCA pergunte a feature ao usuário: invoque wizz-set-feature só se ele pedir para trocar, ou se houver duas features abertas e o pedido não decidir entre elas.",
41
41
  ]
42
42
 
43
43
  role = "Turn user needs and the PRD into UX design specifications that inform architecture and implementation during the Wizz Method planning phase."
@@ -37,7 +37,7 @@ activation_steps_append = []
37
37
 
38
38
  persistent_facts = [
39
39
  "file:{project-root}/**/project-context.md",
40
- "If active_feature is set in {project-root}/_wizz/bmm/config.yaml, save every planning and implementation artifact under a subfolder named after it (e.g. {planning_artifacts}/{active_feature}/, {implementation_artifacts}/{active_feature}/). If it is empty or unset, write to the artifact roots as usual.",
40
+ "FEATURE: o hook SessionStart resolve a feature ativa a partir do branch git e injeta 'FEATURE ATIVA: <slug>'. Se ela existir, salve TODO artefato de planejamento e implementação na subpasta com esse nome ({planning_artifacts}/{active_feature}/, {implementation_artifacts}/{active_feature}/) e grave o slug em active_feature no {project-root}/_wizz/bmm/config.yaml na primeira escrita, avisando em UMA linha. Memória gravada nesta sessão leva o mesmo slug como tema. Sem feature resolvida, escreva nas raízes. NUNCA pergunte a feature ao usuário: invoque wizz-set-feature só se ele pedir para trocar, ou se houver duas features abertas e o pedido não decidir entre elas.",
41
41
  ]
42
42
 
43
43
  role = "Convert the PRD and UX into technical architecture decisions that keep implementation on track during the Wizz Method solutioning phase."
@@ -4,6 +4,7 @@ user_name: '{{user_name}}'
4
4
  date: '{{date}}'
5
5
  sections_completed: ['technology_stack']
6
6
  existing_patterns_found: { { number_of_patterns_discovered } }
7
+ stage: '{{project_stage}}' # prototype|mvp|production|maintenance
7
8
  ---
8
9
 
9
10
  # Project Context for AI Agents
@@ -12,6 +13,10 @@ _This file contains critical rules and patterns that AI agents must follow when
12
13
 
13
14
  ---
14
15
 
16
+ ## Estado do Projeto
17
+
18
+ _Documented after discovery phase (estágio atual, o que está no ar, o que falta)_
19
+
15
20
  ## Technology Stack & Versions
16
21
 
17
22
  _Documented after discovery phase_
@@ -38,7 +38,18 @@ First, check if project context already exists:
38
38
  - If exists: Read complete file to understand existing rules
39
39
  - Present to user: "Found existing project context with {number_of_sections} sections. Would you like to update this or create a new one?"
40
40
 
41
- ### 2. Discover Project Technology Stack
41
+ ### 2. Determine Project Stage
42
+
43
+ Infer the project's lifecycle stage from repo signals before going deeper:
44
+
45
+ - No deploy config, few commits, scaffolding only → likely `prototype`
46
+ - Deployed but still shaping core flows, no monitoring/CI → likely `mvp`
47
+ - CI/CD, monitoring, error tracking, real users → likely `production`
48
+ - Low commit velocity, mostly fixes/deps → likely `maintenance`
49
+
50
+ Present the inferred stage and confirm with the user: "Pelos sinais do repo, este projeto parece estar em **{{inferred_stage}}**. Confere?" Use the confirmed value for `stage:` in the frontmatter.
51
+
52
+ ### 3. Discover Project Technology Stack
42
53
 
43
54
  Load and analyze project files to identify technologies:
44
55
 
@@ -61,7 +72,7 @@ Load and analyze project files to identify technologies:
61
72
  - Linting and formatting configs (.eslintrc, .prettierrc, etc.)
62
73
  - Testing configurations (jest.config.js, vitest.config.ts, etc.)
63
74
 
64
- ### 3. Identify Existing Code Patterns
75
+ ### 4. Identify Existing Code Patterns
65
76
 
66
77
  Search through existing codebase for patterns:
67
78
 
@@ -85,7 +96,7 @@ Search through existing codebase for patterns:
85
96
  - Documentation requirements
86
97
  - README and API doc patterns
87
98
 
88
- ### 4. Extract Critical Implementation Rules
99
+ ### 5. Extract Critical Implementation Rules
89
100
 
90
101
  Look for rules that AI agents might miss:
91
102
 
@@ -117,7 +128,7 @@ Look for rules that AI agents might miss:
117
128
  - PR review requirements
118
129
  - Deployment procedures
119
130
 
120
- ### 5. Initialize Project Context Document
131
+ ### 6. Initialize Project Context Document
121
132
 
122
133
  Based on discovery, create or update the context document:
123
134
 
@@ -131,7 +142,7 @@ Initialize frontmatter fields.
131
142
  Load existing context and prepare for updates
132
143
  Set frontmatter `sections_completed` to track what will be updated
133
144
 
134
- ### 6. Present Discovery Summary
145
+ ### 7. Present Discovery Summary
135
146
 
136
147
  Report findings to user:
137
148