wizz-method 1.15.0 → 1.16.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/package.json +3 -2
  2. package/skills-registry.yaml +35 -104
  3. package/src/bmm-skills/3-solutioning/wizz-architecture/scripts/__pycache__/lint_spine.cpython-313.pyc +0 -0
  4. package/src/bmm-skills/3-solutioning/wizz-architecture/scripts/tests/__pycache__/test_lint_spine.cpython-313-pytest-9.1.1.pyc +0 -0
  5. package/src/bmm-skills/4-implementation/wizz-code-review/SKILL.md +3 -5
  6. package/src/bmm-skills/4-implementation/wizz-code-review/customize.toml +71 -0
  7. package/src/bmm-skills/4-implementation/wizz-code-review/references/claims-check.md +14 -0
  8. package/src/bmm-skills/4-implementation/wizz-code-review/references/deletion-check.md +14 -0
  9. package/src/bmm-skills/4-implementation/wizz-code-review/review-prompts/edge-case-hunter.md +110 -0
  10. package/src/bmm-skills/4-implementation/wizz-code-review/review-prompts/verification-gap.md +113 -0
  11. package/src/bmm-skills/4-implementation/wizz-code-review/steps/step-01-gather-context.md +32 -23
  12. package/src/bmm-skills/4-implementation/wizz-code-review/steps/step-02-review.md +10 -13
  13. package/src/bmm-skills/4-implementation/wizz-code-review/steps/step-03-triage.md +16 -22
  14. package/src/bmm-skills/4-implementation/wizz-code-review/steps/step-04-present.md +4 -2
  15. package/src/bmm-skills/4-implementation/wizz-quick-dev/customize.toml +76 -0
  16. package/src/bmm-skills/4-implementation/wizz-quick-dev/references/claims-check.md +14 -0
  17. package/src/bmm-skills/4-implementation/wizz-quick-dev/references/deletion-check.md +14 -0
  18. package/src/bmm-skills/4-implementation/wizz-quick-dev/review-prompts/edge-case-hunter.md +110 -0
  19. package/src/bmm-skills/4-implementation/wizz-quick-dev/review-prompts/verification-gap.md +113 -0
  20. package/src/bmm-skills/4-implementation/wizz-quick-dev/step-04-review.md +38 -16
  21. package/src/bmm-skills/4-implementation/wizz-retrospective/SKILL.md +56 -1488
  22. package/src/bmm-skills/4-implementation/wizz-retrospective/customize.toml +3 -5
  23. package/src/bmm-skills/4-implementation/wizz-retrospective/references/acceptance-verdict.md +55 -0
  24. package/src/bmm-skills/4-implementation/wizz-retrospective/references/aggregate-views.md +17 -0
  25. package/src/bmm-skills/4-implementation/wizz-retrospective/references/evidence-gathering.md +30 -0
  26. package/src/bmm-skills/4-implementation/wizz-retrospective/references/retro-document.md +84 -0
  27. package/src/bmm-skills/4-implementation/wizz-retrospective/references/team-discussion.md +22 -0
  28. package/src/bmm-skills/4-implementation/wizz-retrospective/scripts/__pycache__/sprint_status.cpython-313.pyc +0 -0
  29. package/src/bmm-skills/4-implementation/wizz-retrospective/scripts/git_evidence.py +304 -0
  30. package/src/bmm-skills/4-implementation/wizz-retrospective/scripts/sprint_status.py +746 -0
  31. package/src/bmm-skills/4-implementation/wizz-retrospective/scripts/tests/__pycache__/test_git_evidence.cpython-313-pytest-9.1.1.pyc +0 -0
  32. package/src/bmm-skills/4-implementation/wizz-retrospective/scripts/tests/__pycache__/test_sprint_status.cpython-313-pytest-9.1.1.pyc +0 -0
  33. package/src/bmm-skills/4-implementation/wizz-retrospective/scripts/tests/fixtures/sprint-status-template.yaml +71 -0
  34. package/src/bmm-skills/4-implementation/wizz-retrospective/scripts/tests/test_git_evidence.py +750 -0
  35. package/src/bmm-skills/4-implementation/wizz-retrospective/scripts/tests/test_sprint_status.py +1579 -0
  36. package/src/bmm-skills/4-implementation/wizz-sprint-planning/SKILL.md +39 -296
  37. package/src/bmm-skills/4-implementation/wizz-sprint-planning/customize.toml +1 -3
  38. package/src/bmm-skills/4-implementation/wizz-sprint-planning/references/fix-sprint-status.md +30 -0
  39. package/src/bmm-skills/4-implementation/wizz-sprint-planning/references/generate-tracking.md +25 -0
  40. package/src/bmm-skills/4-implementation/wizz-sprint-planning/references/readiness-gate.md +20 -0
  41. package/src/bmm-skills/4-implementation/wizz-sprint-planning/references/status-view.md +14 -0
  42. package/src/bmm-skills/4-implementation/wizz-sprint-planning/references/validate.md +10 -0
  43. package/src/bmm-skills/4-implementation/wizz-sprint-planning/scripts/__pycache__/sprint_plan.cpython-313.pyc +0 -0
  44. package/src/bmm-skills/4-implementation/wizz-sprint-planning/scripts/sprint_plan.py +697 -0
  45. package/src/bmm-skills/4-implementation/wizz-sprint-planning/scripts/tests/__pycache__/test_sprint_plan.cpython-313-pytest-9.1.1.pyc +0 -0
  46. package/src/bmm-skills/4-implementation/wizz-sprint-planning/scripts/tests/test_sprint_plan.py +524 -0
  47. package/src/bmm-skills/4-implementation/wizz-sprint-planning/sprint-status-template.yaml +9 -7
  48. package/src/bmm-skills/module-help.csv +3 -3
  49. package/src/core-skills/module-help.csv +1 -0
  50. package/src/core-skills/wizz-advanced-elicitation/SKILL.md +36 -114
  51. package/src/core-skills/wizz-advanced-elicitation/{methods.csv → assets/methods.csv} +29 -27
  52. package/src/core-skills/wizz-advanced-elicitation/customize.toml +54 -0
  53. package/src/core-skills/wizz-advanced-elicitation/scripts/__pycache__/pick_methods.cpython-313.pyc +0 -0
  54. package/src/core-skills/wizz-advanced-elicitation/scripts/pick_methods.py +233 -0
  55. package/src/core-skills/wizz-advanced-elicitation/scripts/tests/__pycache__/test_pick_methods.cpython-313-pytest-9.1.1.pyc +0 -0
  56. package/src/core-skills/wizz-advanced-elicitation/scripts/tests/test_pick_methods.py +228 -0
  57. package/src/core-skills/wizz-brainstorming/SKILL.md +2 -2
  58. package/src/core-skills/wizz-brainstorming/assets/brain-selector.html +2 -0
  59. package/src/core-skills/wizz-brainstorming/references/converge.md +1 -1
  60. package/src/core-skills/wizz-brainstorming/references/finalize.md +1 -1
  61. package/src/core-skills/wizz-brainstorming/references/headless.md +1 -1
  62. package/src/core-skills/wizz-brainstorming/references/mode-autonomous.md +1 -1
  63. package/src/core-skills/wizz-brainstorming/scripts/__pycache__/brain.cpython-313.pyc +0 -0
  64. package/src/core-skills/wizz-brainstorming/scripts/brain.py +36 -6
  65. package/src/core-skills/wizz-brainstorming/scripts/tests/__pycache__/test_brain.cpython-313-pytest-9.1.1.pyc +0 -0
  66. package/src/core-skills/wizz-brainstorming/scripts/tests/__pycache__/test_brain.cpython-314.pyc +0 -0
  67. package/src/core-skills/wizz-brainstorming/scripts/tests/test_brain.py +24 -2
  68. package/src/core-skills/wizz-customize/scripts/__pycache__/list_customizable_skills.cpython-313.pyc +0 -0
  69. package/src/core-skills/wizz-customize/scripts/tests/__pycache__/test_list_customizable_skills.cpython-313-pytest-9.1.1.pyc +0 -0
  70. package/src/core-skills/wizz-forge-idea/SKILL.md +107 -0
  71. package/src/core-skills/wizz-forge-idea/customize.toml +41 -0
  72. package/src/core-skills/wizz-forge-idea/scripts/__pycache__/resolve_personas.cpython-313.pyc +0 -0
  73. package/src/core-skills/wizz-forge-idea/scripts/__pycache__/resolve_personas.cpython-314.pyc +0 -0
  74. package/src/core-skills/wizz-forge-idea/scripts/resolve_personas.py +275 -0
  75. package/src/core-skills/wizz-forge-idea/scripts/tests/__pycache__/test_resolve_personas.cpython-313-pytest-9.1.1.pyc +0 -0
  76. package/src/core-skills/wizz-forge-idea/scripts/tests/__pycache__/test_resolve_personas.cpython-314.pyc +0 -0
  77. package/src/core-skills/wizz-forge-idea/scripts/tests/test_resolve_personas.py +138 -0
  78. package/src/core-skills/wizz-party-mode/SKILL.md +37 -54
  79. package/src/core-skills/wizz-party-mode/customize.toml +61 -2
  80. package/src/core-skills/wizz-party-mode/references/create-party.md +8 -3
  81. package/src/core-skills/wizz-party-mode/references/mode-agent-team.md +3 -1
  82. package/src/core-skills/wizz-party-mode/references/mode-subagent.md +16 -4
  83. package/src/core-skills/wizz-party-mode/references/party-memory.md +51 -0
  84. package/src/core-skills/wizz-party-mode/scripts/__pycache__/resolve_party.cpython-313.pyc +0 -0
  85. package/src/core-skills/wizz-party-mode/scripts/__pycache__/resolve_party.cpython-314.pyc +0 -0
  86. package/src/core-skills/wizz-party-mode/scripts/resolve_party.py +22 -7
  87. package/src/core-skills/wizz-party-mode/scripts/tests/__pycache__/test_resolve_party.cpython-313-pytest-9.1.1.pyc +0 -0
  88. package/src/core-skills/wizz-party-mode/scripts/tests/__pycache__/test_resolve_party.cpython-314.pyc +0 -0
  89. package/src/core-skills/wizz-party-mode/scripts/tests/{test-resolve_party.py → test_resolve_party.py} +8 -0
  90. package/src/core-skills/wizz-review-edge-case-hunter/SKILL.md +17 -3
  91. package/src/modules/wizz/agents/wizz-growth/customize.toml +10 -0
  92. package/src/scripts/__pycache__/memlog.cpython-313.pyc +0 -0
  93. package/src/scripts/tests/__pycache__/test_memlog.cpython-313-pytest-9.1.1.pyc +0 -0
  94. package/src/scripts/tests/__pycache__/test_resolve_customization.cpython-313-pytest-9.1.1.pyc +0 -0
  95. package/src/skills-lib/pesquisa-de-publico-do-piva/README.md +83 -0
  96. package/src/skills-lib/pesquisa-de-publico-do-piva/SKILL.md +65 -0
  97. package/src/skills-lib/pesquisa-de-publico-do-piva/assets/template.html +414 -0
  98. package/src/skills-lib/pesquisa-de-publico-do-piva/prompts.md +131 -0
  99. package/src/skills-lib/wizz-offer-forge/README.md +13 -0
  100. package/src/skills-lib/wizz-offer-forge/SKILL.md +74 -0
  101. package/src/skills-lib/wizz-offer-forge/references/empilhamento-valor.md +25 -0
  102. package/src/skills-lib/wizz-offer-forge/references/garantia-reversa.md +22 -0
  103. package/src/skills-lib/wizz-offer-forge/references/mecanismo-unico.md +28 -0
  104. package/src/skills-lib/wizz-offer-forge/references/ponte-trafego.md +21 -0
  105. package/src/skills-lib/wizz-router/references/routing-table-flat.md +2 -0
  106. package/tools/installer/core/installer.js +57 -0
  107. package/tools/installer/ide/_config-driven.js +3 -3
  108. package/tools/installer/ide/platform-codes.yaml +28 -0
  109. package/tools/installer/modules/external-manager.js +140 -2
  110. package/tools/installer/modules/official-modules.js +68 -21
  111. package/tools/installer/prompts.js +45 -103
  112. package/tools/installer/ui.js +64 -7
  113. package/wizz-modules.yaml +65 -11
  114. package/src/bmm-skills/4-implementation/wizz-sprint-planning/checklist.md +0 -34
  115. package/src/core-skills/wizz-brainstorming/scripts/memlog.py +0 -202
  116. package/src/core-skills/wizz-brainstorming/scripts/tests/test_memlog.py +0 -265
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.15.0",
4
+ "version": "1.16.1",
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,7 +61,7 @@
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: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: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",
65
65
  "test:channels": "node test/test-installer-channels.js",
66
66
  "test:cli": "node test/test-cli-config.js",
67
67
  "test:deps": "node test/test-deps-cache.js",
@@ -74,6 +74,7 @@
74
74
  "test:install-smoke-mcp": "node test/test-install-smoke-mcp.js",
75
75
  "test:mcp": "node test/test-mcp-config.js",
76
76
  "test:method-refs-allowlist": "node test/test-method-refs-allowlist.js",
77
+ "test:module-registry": "node test/test-module-registry-fields.js",
77
78
  "test:network-retry": "node test/test-network-retry.js",
78
79
  "test:preflight-tools-check": "node test/test-preflight-tools-check.js",
79
80
  "test:quickupdate": "node test/test-quick-update-gate.js",
@@ -133,8 +133,8 @@ areas:
133
133
  when: "Gerar/refinar componentes prontos via 21st.dev (UI builder, inspiration, refiner)."
134
134
  server:
135
135
  command: npx
136
- # Pin de supply chain (2026-07-06): versão fixa; atualizar conscientemente.
137
- args: ["-y", "@21st-dev/magic@0.1.0"]
136
+ # Pin de supply chain (2026-08-23): versão fixa; atualizar conscientemente.
137
+ args: ["-y", "@21st-dev/magic@0.2.2"]
138
138
  env:
139
139
  API_KEY: "${MAGIC_API_KEY}"
140
140
  clis:
@@ -144,60 +144,31 @@ areas:
144
144
  install: "npm i -g @21st-dev/cli && npx @21st-dev/cli install-skill"
145
145
  - id: hyperframes
146
146
  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."
147
- # Gate de plataforma (2026-07-08): o `install` virou clone+checkout
148
- # POSIX (mktemp/rm), então macOS/Linux/WSL — mesma regra das
149
- # clone-and-run abaixo. (Antes ficava sem gate porque check/install
150
- # eram só npx.)
151
147
  platform: [darwin, linux]
152
- # Check (2026-07-08): antes era `npx --yes hyperframes --version`, que
153
- # baixa o pacote do npm e portanto passa SEMPRE — o installer reportava
154
- # "já instalado" sem as skills nunca terem sido adicionadas. O que o
155
- # `install` traz são as SKILLS, então o check testa a skill instalada.
156
148
  check: "test -d $HOME/.claude/skills/hyperframes"
157
- # Pin de supply chain (2026-07-08): a convenção `#<sha>` na URL NÃO
158
- # funciona — a CLI `skills add` trata o fragmento como BRANCH
159
- # (`git clone --branch <sha>` "Remote branch not found"), e não
160
- # flag --ref/pin. Pin real = clone temporário + checkout do SHA +
161
- # `skills add` do path local. `--copy` é obrigatório (senão symlinka
162
- # pro temp dir que é apagado); `-g` casa com o `check` global; `-y`
163
- # evita prompt em shell não-interativo. Atualizar conscientemente.
164
- install: 'd="$(mktemp -d)" && git clone https://github.com/heygen-com/hyperframes.git "$d" && git -C "$d" checkout 4c8064d4d3d1ffe51a10b1c7eee79a49b2fc468f && npx skills add "$d" -g -y --copy && rm -rf "$d"'
149
+ # Pin de supply chain (2026-08-23): clone temporário + checkout do SHA
150
+ # + `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"'
165
152
  - id: claude-video
166
153
  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)."
167
- # M20 (2026-07-07): check é POSIX puro (`test -d`, `$HOME`); em
168
- # Windows nativo sempre falha e o usuário é convidado a reinstalar
169
- # algo que nunca vai "ficar instalado" ali. Suporte oficial é
170
- # macOS/Linux/WSL (WSL reporta platform 'linux').
171
154
  platform: [darwin, linux]
172
155
  check: "test -d $HOME/.claude/skills/watch"
173
- # Pin de supply chain (2026-07-08): clone temporário + checkout do SHA
174
- # + `skills add` local (mesma convenção e racional do hyperframes
175
- # acima — `#<sha>` na URL falha porque a CLI trata o fragmento como
176
- # branch); atualizar conscientemente.
156
+ # Pin de supply chain (2026-08-23): clone temporário + checkout do SHA
157
+ # + `skills add` local. Atualizar conscientemente.
177
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"'
178
159
  - id: buttercut
179
160
  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."
180
161
  platform: darwin-arm64
181
162
  check: "test -d ./buttercut"
182
- # Pin de supply chain (2026-07-06): checkout de SHA fixo; atualizar conscientemente.
183
- install: "git clone https://github.com/barefootford/buttercut.git buttercut && git -C buttercut checkout 1383f964ebc8b43c4af17f70b3ec6f611b18b3ce"
184
- # M14: `check` só prova "o clone existe"; o runtime pesado (Ruby +
185
- # Python + FFmpeg + WhisperX, documentado no `when` acima) não é
186
- # testado por ele. `verify` cobre a dependência mínima (falha =
187
- # aviso, nunca abort — CLI clone-and-run continua opt-in).
163
+ # 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"
188
165
  verify: "command -v ffmpeg >/dev/null 2>&1 && command -v ruby >/dev/null 2>&1 && command -v python3 >/dev/null 2>&1"
189
166
  - id: voicebox
190
167
  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."
191
- # M20: check é POSIX puro (`test -d`); suporte oficial macOS/Linux/WSL.
192
168
  platform: [darwin, linux]
193
169
  check: "test -d ./voicebox"
194
- # Pin de supply chain (2026-07-06): checkout de SHA fixo; atualizar conscientemente.
195
- install: "git clone https://github.com/jamiepine/voicebox.git voicebox && git -C voicebox checkout f2cf2a729d733acd7c759d85c6ace2d602f50d6e"
196
- # Sem `verify:` deliberadamente (2026-07-07): diferente de
197
- # buttercut/arcads, o `when` acima não documenta uma dependência de
198
- # sistema específica (é um app desktop autocontido que expõe um
199
- # endpoint MCP local) — nada de concreto pra checar sem inventar um
200
- # requisito que o registry não afirma.
170
+ # 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"
201
172
  - id: ctc-align
202
173
  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."
203
174
  platform: [darwin, linux]
@@ -241,15 +212,10 @@ areas:
241
212
  clis:
242
213
  - id: distribb
243
214
  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)."
244
- # M20: check é POSIX puro (`ls`, `grep -qi`, `$HOME`); suporte oficial
245
- # macOS/Linux/WSL.
246
215
  platform: [darwin, linux]
247
216
  check: "ls $HOME/.claude/skills 2>/dev/null | grep -qi distribb"
248
- # Pin de supply chain (2026-07-08): clone temporário + checkout do SHA
249
- # + `skills add` local (mesma convenção e racional do hyperframes
250
- # acima — `#<sha>` na URL falha porque a CLI trata o fragmento como
251
- # branch); atualizar conscientemente.
252
- install: 'd="$(mktemp -d)" && git clone https://github.com/Bomx/distribb-skill.git "$d" && git -C "$d" checkout 860700de171f2ff741985ffdc739010f3f0c0e25 && npx skills add "$d" -g -y --copy && rm -rf "$d"'
217
+ # 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"'
253
219
 
254
220
  growth:
255
221
  agent: wizz-growth
@@ -293,22 +259,20 @@ areas:
293
259
  when: "Setar/auditar tracking e medição (GA4, GTM, eventos, UTM, atribuição)."
294
260
  - id: site-launch-kit
295
261
  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."
262
+ - id: pesquisa-de-publico-do-piva
263
+ 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
+ - id: wizz-offer-forge
265
+ when: "Forjar oferta irresistível de resposta direta/infoproduto (mecanismo único, empilhamento de valor, garantia reversa, ponte de tráfego)."
296
266
  mcps:
297
267
  - id: scrapling
298
268
  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."
299
269
  server:
300
270
  command: scrapling
301
271
  args: ["mcp"]
302
- # The MCP server lives in the `[ai]` extra, and fetching needs browsers.
303
- # Without this the installer would write a config for a binary that
304
- # isn't installed → the client fails with ENOENT. `setup` makes the
305
- # installer install the package, download browsers, resolve `scrapling`
306
- # to an absolute path (server.command is rewritten), and verify it boots
307
- # before writing; if verify fails the server is skipped, not written.
308
272
  setup:
309
273
  bin: scrapling
310
- # Pin de supply chain (2026-07-06): versão fixa; atualizar conscientemente.
311
- install: 'uv tool install "scrapling[ai]==0.4.10" || pipx install "scrapling[ai]==0.4.10" || pip install --user "scrapling[ai]==0.4.10"'
274
+ # Pin de supply chain (2026-08-23): versão fixa; atualizar conscientemente.
275
+ install: 'uv tool install "scrapling[ai]==0.4.14" || pipx install "scrapling[ai]==0.4.14" || pip install --user "scrapling[ai]==0.4.14"'
312
276
  post_install: "{bin} install"
313
277
  verify: "{bin} --version"
314
278
 
@@ -322,20 +286,6 @@ areas:
322
286
  when: "Decidir O QUE produzir de conteúdo (topic clusters, calendário, pilares)."
323
287
  - id: copy-editing
324
288
  when: "Revisar/editar o texto do roteiro ou da legenda antes de publicar."
325
- # Roteiro viral em si (hook, corpo, CTA) é conhecimento do próprio agente
326
- # wizz-social (Blueprint de Roteiro Viral em knowledge/), não uma skill global.
327
- #
328
- # CLIs de vídeo: o roteiro é o começo do pipeline (roteiro → voz → timing →
329
- # telas → montagem → corte → publicação). As tools de vídeo VIVEM na área
330
- # `designer` (fonte única, não duplicar aqui). O wizz-social ROTEIA para elas
331
- # pelo `when:`; a construção pesada de vídeo é com o wizz-designer. Cadeia e
332
- # regra completa em src/modules/wizz/_shared/video-pipeline.md:
333
- # voicebox → narração/voz/TTS do roteiro
334
- # ctc-align → timestamps palavra a palavra da narração (fonte de timing)
335
- # hyperframes → desenhar as TELAS (visual mudo, HTML→MP4)
336
- # remotion → MONTAR o filme (áudio, SFX, legenda, timing de frame)
337
- # buttercut → editar/cortar o vídeo gravado (só darwin-arm64)
338
- # claude-video → analisar um vídeo de referência (frames + transcrição)
339
289
 
340
290
  ads:
341
291
  agent: wizz-ads
@@ -352,28 +302,17 @@ areas:
352
302
  when: "Gestão real de campanha Meta/Facebook/Instagram via API (criar/editar/medir ads)."
353
303
  server:
354
304
  command: npx
355
- # Pin de supply chain (2026-07-06): versão fixa; atualizar conscientemente.
356
- # Risco (2026-07-07, C5/RT3): pacote COMUNITÁRIO (não é @meta/@facebook
357
- # oficial), revisado nesta data na versão pinada 1.0.0; acesso a
358
- # META_ACCESS_TOKEN = gasto real de ads. O mesmo token é reaproveitado
359
- # pela CLI `arcads` (ver clis.arcads nesta mesma área): duas
360
- # ferramentas, mesma credencial. Recomendado: token com escopo
361
- # mínimo (ads_read pra relatórios; ads_management só com campanha
362
- # real confirmada).
305
+ # Pin de supply chain (2026-08-23): versão fixa; atualizar conscientemente.
363
306
  args: ["-y", "mcp-meta-ads@1.0.0"]
364
307
  env:
365
308
  META_ACCESS_TOKEN: "${META_ACCESS_TOKEN}"
366
309
  clis:
367
310
  - id: arcads
368
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)."
369
- # M20: check é POSIX puro (`test -d`); suporte oficial macOS/Linux/WSL.
370
312
  platform: [darwin, linux]
371
313
  check: "test -d ./arcads-claude-code"
372
- # Pin de supply chain (2026-07-06): checkout de SHA fixo; atualizar conscientemente.
373
- install: "git clone https://github.com/krusemediallc/arcads-claude-code.git arcads-claude-code && git -C arcads-claude-code checkout 0b0d3610bbdcfcc2607c77a748d6abb341adda46"
374
- # M14: `check` só prova "o clone existe", não o runtime (Python 3.10+
375
- # documentado no `when` acima). `verify` cobre essa dependência mínima
376
- # (falha = aviso, nunca abort — CLI clone-and-run continua opt-in).
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"
377
316
  verify: "command -v python3 >/dev/null 2>&1 && python3 -c 'import sys; sys.exit(0 if sys.version_info >= (3, 10) else 1)'"
378
317
 
379
318
  architect:
@@ -405,15 +344,8 @@ areas:
405
344
  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."
406
345
  server:
407
346
  command: npx
408
- # Pin de supply chain (2026-07-06): versão fixa (era @latest); atualizar conscientemente.
409
- # Read-only + projeto escopado por padrão (2026-07-07, C5/RT3):
410
- # SUPABASE_ACCESS_TOKEN sem esses flags permite SQL arbitrário na
411
- # conta inteira. --read-only roda como usuário Postgres somente
412
- # leitura e desliga tools de mutação (projeto/branch/storage);
413
- # --project-id escopa ao projeto em SUPABASE_PROJECT_REF. Escrita
414
- # continua a 1 edição de distância (remover --read-only), nunca o
415
- # default.
416
- args: ["-y", "@supabase/mcp-server-supabase@0.8.2", "--read-only", "--project-id", "${SUPABASE_PROJECT_REF}"]
347
+ # Pin de supply chain (2026-08-23): versão fixa; atualizar conscientemente.
348
+ args: ["-y", "@supabase/mcp-server-supabase@0.11.0", "--read-only", "--project-id", "${SUPABASE_PROJECT_REF}"]
417
349
  env:
418
350
  SUPABASE_ACCESS_TOKEN: "${SUPABASE_ACCESS_TOKEN}"
419
351
 
@@ -425,14 +357,12 @@ areas:
425
357
  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)."
426
358
  - id: agent-browser
427
359
  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."
428
- # qa NÃO declara mcps: verificação de browser é via agent-browser (CLI/skill),
429
- # não via MCP. Não usar o MCP do Playwright.
430
360
  clis:
431
361
  - id: agent-browser
432
362
  when: "Dirigir um browser real pra E2E/verificação: navegar, clicar, preencher form, screenshot, console. É CLI, não MCP."
433
363
  check: "agent-browser --version"
434
- # Pin de supply chain (2026-07-06): versão fixa; atualizar conscientemente.
435
- install: "npm install -g agent-browser@0.27.0"
364
+ # Pin de supply chain (2026-08-23): versão fixa; atualizar conscientemente.
365
+ install: "npm install -g agent-browser@0.34.0"
436
366
 
437
367
  analyst:
438
368
  agent: wizz-agent-analyst
@@ -447,8 +377,8 @@ areas:
447
377
  when: "Pesquisa web/prior-art durante planejamento (web search, descoberta de fontes)."
448
378
  server:
449
379
  command: npx
450
- # Pin de supply chain (2026-07-06): versão fixa; atualizar conscientemente.
451
- args: ["-y", "exa-mcp-server@3.2.1"]
380
+ # Pin de supply chain (2026-08-23): versão fixa; atualizar conscientemente.
381
+ args: ["-y", "exa-mcp-server@3.4.1"]
452
382
  env:
453
383
  EXA_API_KEY: "${EXA_API_KEY}"
454
384
 
@@ -480,8 +410,8 @@ mcp_utility:
480
410
  when: "Docs atualizadas de qualquer lib/framework/SDK (React, Next, Prisma, Tailwind...). Útil em todo dev."
481
411
  server:
482
412
  command: npx
483
- # Pin de supply chain (2026-07-06): versão fixa; atualizar conscientemente.
484
- args: ["-y", "@upstash/context7-mcp@3.2.2"]
413
+ # Pin de supply chain (2026-08-23): versão fixa; atualizar conscientemente.
414
+ args: ["-y", "@upstash/context7-mcp@4.0.3"]
485
415
 
486
416
  # ─────────────────────────────────────────────────────────────────────────────
487
417
  # CLIs — ferramentas de linha de comando que os agentes chamam direto (não são
@@ -519,16 +449,17 @@ cli_utility:
519
449
  # --version` só testava que rodava). Agora `check` volta a ser só
520
450
  # presença/versão (roda e imprime o número); a COMPARAÇÃO semver contra
521
451
  # min_version é feita pelo installer (detectClis), não em shell.
522
- min_version: 0.43.0
452
+ min_version: 0.45.0
523
453
  check: "rtk --version"
524
- # Pin de supply chain (2026-07-07): tag v0.43.0 (antes: branch master)
525
- # Checksum do install.sh nesta tag (2026-07-07): sha256
454
+ # Pin de supply chain (2026-08-23): tag v0.45.0 (antes: v0.43.0)
455
+ # Checksum do install.sh nesta tag (2026-08-23): sha256
526
456
  # d6eb73a772903e13ff34ee1be8a8b24e896ba9a978f20d2279a08b4083ea6f77
457
+ # (install.sh idêntico ao v0.43.0 — mesmo checksum.)
527
458
  # (RT1: tag git pode ser movida à força; o checksum trava o conteúdo real
528
459
  # que será executado, não só o nome da tag. Verificado com `shasum -c`
529
460
  # antes do `sh`; se a tag mudar de conteúdo, o install aborta em vez de
530
461
  # rodar script desconhecido.)
531
- install: "curl -fsSL https://raw.githubusercontent.com/rtk-ai/rtk/refs/tags/v0.43.0/install.sh -o /tmp/rtk-install-v0.43.0.sh && echo 'd6eb73a772903e13ff34ee1be8a8b24e896ba9a978f20d2279a08b4083ea6f77 /tmp/rtk-install-v0.43.0.sh' | shasum -a 256 -c - && sh /tmp/rtk-install-v0.43.0.sh"
462
+ install: "curl -fsSL https://raw.githubusercontent.com/rtk-ai/rtk/refs/tags/v0.45.0/install.sh -o /tmp/rtk-install-v0.45.0.sh && echo 'd6eb73a772903e13ff34ee1be8a8b24e896ba9a978f20d2279a08b4083ea6f77 /tmp/rtk-install-v0.45.0.sh' | shasum -a 256 -c - && sh /tmp/rtk-install-v0.45.0.sh"
532
463
 
533
464
  # ─────────────────────────────────────────────────────────────────────────────
534
465
  # SQUADS — painéis consultivos de personas (rodam via wizz-party-mode).
@@ -1,15 +1,13 @@
1
1
  ---
2
2
  name: wizz-code-review
3
- description: 'Review code changes adversarially using parallel review layers (Blind Hunter, Edge Case Hunter, Acceptance Auditor) with structured triage into actionable categories. Use when the user says "run code review" or "review this code"'
3
+ description: 'Review code changes adversarially using parallel review layers (Blind Hunter, Edge Case Hunter, Verification Gap Reviewer, Acceptance Auditor) with structured triage into actionable categories. Use when the user says "run code review" or "review this code"'
4
4
  ---
5
5
 
6
6
  # Code Review Workflow
7
7
 
8
- > **Cross-reference:** this is the orchestrator it gathers context, runs three parallel adversarial layers (Blind Hunter via `wizz-review-adversarial-general`, Edge Case Hunter, Acceptance Auditor), then triages and presents findings by severity. Use it for a real diff/PR review. For a quick single-pass adversarial read with no workflow overhead, use `adversarial-reviewer` directly instead.
8
+ > **Cross-reference:** this is the orchestrator. It gathers context, runs the review layers declared in `customize.toml` (Blind Hunter, Edge Case Hunter, Verification Gap Reviewer, Acceptance Auditor) as parallel context-free subagents driven by the prompt files under `review-prompts/`, then verifies, triages and presents findings by severity. Use it for a real diff/PR review. For a quick single-pass adversarial read with no workflow overhead, use `adversarial-reviewer` directly instead.
9
9
 
10
- **Goal:** Review code changes adversarially using parallel review layers and structured triage.
11
-
12
- **Your Role:** You are an elite code reviewer. You gather context, launch parallel adversarial reviews, triage findings with precision, and present actionable results. No noise, no filler.
10
+ **Goal:** Review code changes adversarially. No noise, no filler.
13
11
 
14
12
  Subagents, when the capability is available, are an important part of this workflow. Use them as directed by the workflow steps.
15
13
  If you need an explicit user instruction to run them, ask once now for the whole workflow run.
@@ -39,3 +39,74 @@ persistent_facts = [
39
39
  # Leave empty for no custom post-completion behavior.
40
40
 
41
41
  on_complete = ""
42
+
43
+ # Review layers for the review step. `instruction` is the layer's whole
44
+ # execution recipe — subagents by default, but an override may run anything
45
+ # (e.g. an external reviewer via bash). {diff_file} and {spec_file} are
46
+ # substituted at run time; both are paths, and {diff_file} is the unified
47
+ # diff file the layer reads. `when` (optional) gates a layer; empty
48
+ # `instruction` disables it.
49
+
50
+ [[workflow.review_layers]]
51
+ id = "blind-hunter"
52
+ name = "Blind Hunter"
53
+ instruction = """
54
+ Launch a context-free subagent with this prompt:
55
+
56
+ Conduct a review of CONTENT.
57
+ Look for what's missing, not only what's wrong.
58
+ Find at least ten issues to fix or improve.
59
+ Output a Markdown list of findings only — no severity, priority, or ranking.
60
+ If the content is empty, stop and say so.
61
+ If you have zero findings, re-check and keep thinking; do not stop with an empty list.
62
+
63
+ CONTENT: the unified diff at `{diff_file}`. Read that file — it is the content under review.
64
+
65
+ Do not invoke any skill, and do not spawn subagents of your own — you are the reviewer. Return your findings as text in your final message; do not route them through any findings-reporting tool the host may offer.
66
+
67
+ """
68
+
69
+ [[workflow.review_layers]]
70
+ id = "edge-case-hunter"
71
+ name = "Edge Case Hunter"
72
+ instruction = """
73
+ Launch a context-free subagent with this prompt:
74
+
75
+ Read `{skill-root}/review-prompts/edge-case-hunter.md` completely and follow it as your review instructions.
76
+
77
+ claims_file (leave unread until your instructions call for it): {claims_file}
78
+
79
+ Review content: the unified diff at `{diff_file}`. Read that file — it is the content under review.
80
+
81
+ Do not invoke any skill, and do not spawn subagents of your own — you are the reviewer. If the instruction file is unreadable, report that exact failure and stop. Return your findings as text in your final message; do not route them through any findings-reporting tool the host may offer.
82
+
83
+ """
84
+
85
+ [[workflow.review_layers]]
86
+ id = "verification-gap"
87
+ name = "Verification Gap Reviewer"
88
+ instruction = """
89
+ Launch a context-free subagent with this prompt:
90
+
91
+ Read `{skill-root}/review-prompts/verification-gap.md` completely and follow it as your review instructions.
92
+
93
+ Review content: the unified diff at `{diff_file}`. Read that file — it is the content under review.
94
+
95
+ Do not invoke any skill, and do not spawn subagents of your own — you are the reviewer. If the instruction file is unreadable, report that exact failure and stop. Return your findings as text in your final message; do not route them through any findings-reporting tool the host may offer.
96
+
97
+ """
98
+
99
+ [[workflow.review_layers]]
100
+ id = "acceptance-auditor"
101
+ name = "Acceptance Auditor"
102
+ when = 'Only when {review_mode} = "full".'
103
+ instruction = """
104
+ Launch a subagent with this prompt:
105
+
106
+ You are an Acceptance Auditor. Review the provided diff against `{spec_file}` and any loaded context docs. Check for: violations of acceptance criteria, deviations from spec intent, missing implementation of specified behavior, contradictions between spec constraints and actual code. Output findings as a Markdown list. Each finding: one-line title, which AC/constraint it violates, and evidence from the diff.
107
+
108
+ Diff: the unified diff at `{diff_file}`. Read that file — it is the content under review.
109
+
110
+ Do not invoke any skill, and do not spawn subagents of your own — you are the reviewer. Return your findings as text in your final message; do not route them through any findings-reporting tool the host may offer.
111
+
112
+ """
@@ -0,0 +1,14 @@
1
+ # Claims Check
2
+
3
+ Final pass for the Edge Case Hunter — runs only when the message that launched you named a claims file. Read that file now, for the first time; the path tracing is finished and the claims cannot steer it retroactively.
4
+
5
+ The file holds the change's own narrative — commit messages and any stated description. The narrative is the author's testimony, not evidence: a claim repeated in a code comment is still the same claim, not confirmation. Extract each checkable claim — what the change does, what it preserves, ordering, arithmetic, and parity with existing code ("exactly as X does") — then try to falsify each one against the code you have already traced. Where your trace is not enough to decide, read the code that decides it: the compared-to function, the actual callee, the state the claim assumes.
6
+
7
+ Append one finding per falsified claim to the same JSON array, with the four standard fields plus:
8
+
9
+ - `kind`: `"claim"`
10
+ - `confidence`: `"high"`, `"medium"`, or `"low"`
11
+
12
+ For a claim finding the standard fields read as: `location` = where the code contradicts the claim; `trigger_condition` = the claim, quoted or tightly paraphrased; `guard_snippet` = what the code actually does; `potential_consequence` = what goes wrong for someone who believed the claim.
13
+
14
+ Verified claims produce nothing. Add nothing if nothing is falsified.
@@ -0,0 +1,14 @@
1
+ # Deletion Check
2
+
3
+ Secondary pass for the Edge Case Hunter — runs only when the diff removed meaningful code. Subordinate to the edge-case pass; findings are usually few or none.
4
+
5
+ For each chunk of removed or replaced code (ignore pure renames and whitespace), ask: did it carry behavior or a contract that the change neither re-established nor intentionally retired? Add a finding for any resulting regression, orphaned reference, or newly-dead code. Skip anything already covered by your edge-case findings.
6
+
7
+ Append each finding to the same JSON array as the edge-case findings, with the four standard fields plus:
8
+
9
+ - `kind`: `"deletion"`
10
+ - `confidence`: `"high"`, `"medium"`, or `"low"` — these are inferences; rate them
11
+
12
+ For a deletion finding the standard fields read as: `location` = the removed item; `trigger_condition` = the behavior or contract it enforced; `guard_snippet` = where or how to re-establish it; `potential_consequence` = the regression or orphan.
13
+
14
+ Add nothing if nothing qualifies.
@@ -0,0 +1,110 @@
1
+ # Edge Case Hunter Review
2
+
3
+ **Goal:** You are a pure path tracer. Never comment on whether code is good or bad; only list missing handling.
4
+ When a diff is provided, scan only the diff hunks and list boundaries that are directly reachable from the changed lines and lack an explicit guard in the diff.
5
+ When no diff is provided (full file or function), treat the entire provided content as the scope.
6
+ Ignore the rest of the codebase unless the provided content explicitly references external functions.
7
+ A brief secondary deletion check runs as Step 4 when the diff removes code.
8
+ A claims check runs as Step 5 when the launch message names a claims file.
9
+
10
+ **Inputs:**
11
+ - **content** — Content to review, or a path to read it from: diff, full file, or function
12
+ - **also_consider** (optional) — Areas to keep in mind during review alongside normal edge-case analysis
13
+ - **claims_file** (optional) — Path to the change's stated narrative. Do NOT read it before Step 5: the path tracing in Steps 2–3 must finish before the narrative is seen.
14
+
15
+ **MANDATORY: Execute steps in the Execution section IN EXACT ORDER. DO NOT skip steps or change the sequence. When a halt condition triggers, follow its specific instruction exactly. Each action within a step is a REQUIRED action to complete that step.**
16
+
17
+ **Your method is exhaustive path enumeration — mechanically walk every branch, not hunt by intuition. Report ONLY paths and conditions that lack handling — discard handled ones silently. Do NOT editorialize or add filler. Do not assign severity labels, rankings, or priority levels.**
18
+
19
+
20
+ ## EXECUTION
21
+
22
+ ### Step 1: Receive Content
23
+
24
+ - Take the content to review from the parent message that launched you — inline, or by reading the file it points to (never from this instruction file)
25
+ - If no content is supplied, or it is empty, unreadable, or cannot be decoded as text, return `[{"location":"N/A","trigger_condition":"Input empty or undecodable","guard_snippet":"Provide valid content to review","potential_consequence":"Review skipped — no analysis performed"}]` and stop
26
+ - Identify content type (diff, full file, or function) to determine scope rules
27
+
28
+ ### Step 2: Exhaustive Path Analysis
29
+
30
+ **Walk every branching path and boundary condition within scope — report only unhandled ones.**
31
+
32
+ - If `also_consider` input was provided, incorporate those areas into the analysis
33
+ - Walk all branching paths: control flow (conditionals, loops, error handlers, early returns) and domain boundaries (where values, states, or conditions transition). Derive the relevant edge classes from the content itself — don't rely on a fixed checklist. Examples: missing else/default, unguarded inputs, off-by-one loops, arithmetic overflow, implicit type coercion, race conditions, timeout gaps
34
+ - Consider implicit branches: the diff special-cases or changes the handling of one or more members of a fixed set of values — enums, status codes, sentinels, type tags, flags, value ranges. The rest of the set is implicit branches (e.g. the diff changes the `RED` and `YELLOW` cases of a `RED`/`YELLOW`/`GREEN` enum; `GREEN` is the implicit branch)
35
+ - For each path: determine whether the content handles it
36
+ - Collect only the unhandled paths as findings — discard handled ones silently
37
+
38
+ ### Step 3: Validate Completeness
39
+
40
+ - Revisit every edge class from Step 2 — e.g., missing else/default, null/empty inputs, off-by-one loops, arithmetic overflow, implicit type coercion, race conditions, timeout gaps
41
+ - Add any newly found unhandled paths to findings; discard confirmed-handled ones
42
+
43
+ ### Step 4: Deletion Check
44
+
45
+ If the diff removed or replaced meaningful code (ignore pure renames and whitespace): load `references/deletion-check.md` and follow it.
46
+
47
+ ### Step 5: Claims Check
48
+
49
+ If the launch message provided a `claims_file` path and the file exists and is non-empty: load `references/claims-check.md` and follow it.
50
+
51
+ ### Step 6: Present Findings
52
+
53
+ Output all findings as a single JSON array following the Output Format specification exactly.
54
+
55
+
56
+ ## OUTPUT FORMAT
57
+
58
+ Return ONLY a valid JSON array of objects. Each edge-case finding contains exactly these four fields:
59
+
60
+ ```json
61
+ [{
62
+ "location": "file:start-end (or file:line when single line, or file:hunk when exact line unavailable)",
63
+ "trigger_condition": "one-line description (max 15 words)",
64
+ "guard_snippet": "minimal code sketch that closes the gap (single-line escaped string, no raw newlines or unescaped quotes)",
65
+ "potential_consequence": "what could actually go wrong (max 15 words)"
66
+ }]
67
+ ```
68
+
69
+ No extra text, no explanations, no markdown wrapping. An empty array `[]` is valid when nothing is found. Deletion findings from Step 4 and claim findings from Step 5, if any, go in the same array with the extra fields defined in `references/deletion-check.md` and `references/claims-check.md`.
70
+
71
+
72
+ ## HALT CONDITIONS
73
+
74
+ - If no content is supplied, or it is empty, unreadable, or cannot be decoded as text, return `[{"location":"N/A","trigger_condition":"Input empty or undecodable","guard_snippet":"Provide valid content to review","potential_consequence":"Review skipped — no analysis performed"}]` and stop
75
+ <reference path="references/deletion-check.md">
76
+ # Deletion Check
77
+
78
+ Secondary pass for the Edge Case Hunter — runs only when the diff removed meaningful code. Subordinate to the edge-case pass; findings are usually few or none.
79
+
80
+ For each chunk of removed or replaced code (ignore pure renames and whitespace), ask: did it carry behavior or a contract that the change neither re-established nor intentionally retired? Add a finding for any resulting regression, orphaned reference, or newly-dead code. Skip anything already covered by your edge-case findings.
81
+
82
+ Append each finding to the same JSON array as the edge-case findings, with the four standard fields plus:
83
+
84
+ - `kind`: `"deletion"`
85
+ - `confidence`: `"high"`, `"medium"`, or `"low"` — these are inferences; rate them
86
+
87
+ For a deletion finding the standard fields read as: `location` = the removed item; `trigger_condition` = the behavior or contract it enforced; `guard_snippet` = where or how to re-establish it; `potential_consequence` = the regression or orphan.
88
+
89
+ Add nothing if nothing qualifies.
90
+ </reference>
91
+ <reference path="references/claims-check.md">
92
+ # Claims Check
93
+
94
+ Final pass for the Edge Case Hunter — runs only when the message that launched you named a claims file. Read that file now, for the first time; the path tracing is finished and the claims cannot steer it retroactively.
95
+
96
+ The file holds the change's own narrative — commit messages and any stated description. The narrative is the author's testimony, not evidence: a claim repeated in a code comment is still the same claim, not confirmation. Extract each checkable claim — what the change does, what it preserves, ordering, arithmetic, and parity with existing code ("exactly as X does") — then try to falsify each one against the code you have already traced. Where your trace is not enough to decide, read the code that decides it: the compared-to function, the actual callee, the state the claim assumes.
97
+
98
+ Append one finding per falsified claim to the same JSON array, with the four standard fields plus:
99
+
100
+ - `kind`: `"claim"`
101
+ - `confidence`: `"high"`, `"medium"`, or `"low"`
102
+
103
+ For a claim finding the standard fields read as: `location` = where the code contradicts the claim; `trigger_condition` = the claim, quoted or tightly paraphrased; `guard_snippet` = what the code actually does; `potential_consequence` = what goes wrong for someone who believed the claim.
104
+
105
+ Verified claims produce nothing. Add nothing if nothing is falsified.
106
+ </reference>
107
+
108
+ ## CONTENT SOURCE
109
+
110
+ "Review content:" in the message that launched you gives the content itself or a path to read it from. Read the file when it is a path; either way that is the content under review, and this instruction file never is.