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.
- package/package.json +3 -2
- package/skills-registry.yaml +35 -104
- package/src/bmm-skills/3-solutioning/wizz-architecture/scripts/__pycache__/lint_spine.cpython-313.pyc +0 -0
- package/src/bmm-skills/3-solutioning/wizz-architecture/scripts/tests/__pycache__/test_lint_spine.cpython-313-pytest-9.1.1.pyc +0 -0
- package/src/bmm-skills/4-implementation/wizz-code-review/SKILL.md +3 -5
- package/src/bmm-skills/4-implementation/wizz-code-review/customize.toml +71 -0
- package/src/bmm-skills/4-implementation/wizz-code-review/references/claims-check.md +14 -0
- package/src/bmm-skills/4-implementation/wizz-code-review/references/deletion-check.md +14 -0
- package/src/bmm-skills/4-implementation/wizz-code-review/review-prompts/edge-case-hunter.md +110 -0
- package/src/bmm-skills/4-implementation/wizz-code-review/review-prompts/verification-gap.md +113 -0
- package/src/bmm-skills/4-implementation/wizz-code-review/steps/step-01-gather-context.md +32 -23
- package/src/bmm-skills/4-implementation/wizz-code-review/steps/step-02-review.md +10 -13
- package/src/bmm-skills/4-implementation/wizz-code-review/steps/step-03-triage.md +16 -22
- package/src/bmm-skills/4-implementation/wizz-code-review/steps/step-04-present.md +4 -2
- package/src/bmm-skills/4-implementation/wizz-quick-dev/customize.toml +76 -0
- package/src/bmm-skills/4-implementation/wizz-quick-dev/references/claims-check.md +14 -0
- package/src/bmm-skills/4-implementation/wizz-quick-dev/references/deletion-check.md +14 -0
- package/src/bmm-skills/4-implementation/wizz-quick-dev/review-prompts/edge-case-hunter.md +110 -0
- package/src/bmm-skills/4-implementation/wizz-quick-dev/review-prompts/verification-gap.md +113 -0
- package/src/bmm-skills/4-implementation/wizz-quick-dev/step-04-review.md +38 -16
- package/src/bmm-skills/4-implementation/wizz-retrospective/SKILL.md +56 -1488
- package/src/bmm-skills/4-implementation/wizz-retrospective/customize.toml +3 -5
- package/src/bmm-skills/4-implementation/wizz-retrospective/references/acceptance-verdict.md +55 -0
- package/src/bmm-skills/4-implementation/wizz-retrospective/references/aggregate-views.md +17 -0
- package/src/bmm-skills/4-implementation/wizz-retrospective/references/evidence-gathering.md +30 -0
- package/src/bmm-skills/4-implementation/wizz-retrospective/references/retro-document.md +84 -0
- package/src/bmm-skills/4-implementation/wizz-retrospective/references/team-discussion.md +22 -0
- package/src/bmm-skills/4-implementation/wizz-retrospective/scripts/__pycache__/sprint_status.cpython-313.pyc +0 -0
- package/src/bmm-skills/4-implementation/wizz-retrospective/scripts/git_evidence.py +304 -0
- package/src/bmm-skills/4-implementation/wizz-retrospective/scripts/sprint_status.py +746 -0
- package/src/bmm-skills/4-implementation/wizz-retrospective/scripts/tests/__pycache__/test_git_evidence.cpython-313-pytest-9.1.1.pyc +0 -0
- package/src/bmm-skills/4-implementation/wizz-retrospective/scripts/tests/__pycache__/test_sprint_status.cpython-313-pytest-9.1.1.pyc +0 -0
- package/src/bmm-skills/4-implementation/wizz-retrospective/scripts/tests/fixtures/sprint-status-template.yaml +71 -0
- package/src/bmm-skills/4-implementation/wizz-retrospective/scripts/tests/test_git_evidence.py +750 -0
- package/src/bmm-skills/4-implementation/wizz-retrospective/scripts/tests/test_sprint_status.py +1579 -0
- package/src/bmm-skills/4-implementation/wizz-sprint-planning/SKILL.md +39 -296
- package/src/bmm-skills/4-implementation/wizz-sprint-planning/customize.toml +1 -3
- package/src/bmm-skills/4-implementation/wizz-sprint-planning/references/fix-sprint-status.md +30 -0
- package/src/bmm-skills/4-implementation/wizz-sprint-planning/references/generate-tracking.md +25 -0
- package/src/bmm-skills/4-implementation/wizz-sprint-planning/references/readiness-gate.md +20 -0
- package/src/bmm-skills/4-implementation/wizz-sprint-planning/references/status-view.md +14 -0
- package/src/bmm-skills/4-implementation/wizz-sprint-planning/references/validate.md +10 -0
- package/src/bmm-skills/4-implementation/wizz-sprint-planning/scripts/__pycache__/sprint_plan.cpython-313.pyc +0 -0
- package/src/bmm-skills/4-implementation/wizz-sprint-planning/scripts/sprint_plan.py +697 -0
- package/src/bmm-skills/4-implementation/wizz-sprint-planning/scripts/tests/__pycache__/test_sprint_plan.cpython-313-pytest-9.1.1.pyc +0 -0
- package/src/bmm-skills/4-implementation/wizz-sprint-planning/scripts/tests/test_sprint_plan.py +524 -0
- package/src/bmm-skills/4-implementation/wizz-sprint-planning/sprint-status-template.yaml +9 -7
- package/src/bmm-skills/module-help.csv +3 -3
- package/src/core-skills/module-help.csv +1 -0
- package/src/core-skills/wizz-advanced-elicitation/SKILL.md +36 -114
- package/src/core-skills/wizz-advanced-elicitation/{methods.csv → assets/methods.csv} +29 -27
- package/src/core-skills/wizz-advanced-elicitation/customize.toml +54 -0
- package/src/core-skills/wizz-advanced-elicitation/scripts/__pycache__/pick_methods.cpython-313.pyc +0 -0
- package/src/core-skills/wizz-advanced-elicitation/scripts/pick_methods.py +233 -0
- package/src/core-skills/wizz-advanced-elicitation/scripts/tests/__pycache__/test_pick_methods.cpython-313-pytest-9.1.1.pyc +0 -0
- package/src/core-skills/wizz-advanced-elicitation/scripts/tests/test_pick_methods.py +228 -0
- package/src/core-skills/wizz-brainstorming/SKILL.md +2 -2
- package/src/core-skills/wizz-brainstorming/assets/brain-selector.html +2 -0
- package/src/core-skills/wizz-brainstorming/references/converge.md +1 -1
- package/src/core-skills/wizz-brainstorming/references/finalize.md +1 -1
- package/src/core-skills/wizz-brainstorming/references/headless.md +1 -1
- package/src/core-skills/wizz-brainstorming/references/mode-autonomous.md +1 -1
- package/src/core-skills/wizz-brainstorming/scripts/__pycache__/brain.cpython-313.pyc +0 -0
- package/src/core-skills/wizz-brainstorming/scripts/brain.py +36 -6
- package/src/core-skills/wizz-brainstorming/scripts/tests/__pycache__/test_brain.cpython-313-pytest-9.1.1.pyc +0 -0
- package/src/core-skills/wizz-brainstorming/scripts/tests/__pycache__/test_brain.cpython-314.pyc +0 -0
- package/src/core-skills/wizz-brainstorming/scripts/tests/test_brain.py +24 -2
- package/src/core-skills/wizz-customize/scripts/__pycache__/list_customizable_skills.cpython-313.pyc +0 -0
- package/src/core-skills/wizz-customize/scripts/tests/__pycache__/test_list_customizable_skills.cpython-313-pytest-9.1.1.pyc +0 -0
- package/src/core-skills/wizz-forge-idea/SKILL.md +107 -0
- package/src/core-skills/wizz-forge-idea/customize.toml +41 -0
- package/src/core-skills/wizz-forge-idea/scripts/__pycache__/resolve_personas.cpython-313.pyc +0 -0
- package/src/core-skills/wizz-forge-idea/scripts/__pycache__/resolve_personas.cpython-314.pyc +0 -0
- package/src/core-skills/wizz-forge-idea/scripts/resolve_personas.py +275 -0
- package/src/core-skills/wizz-forge-idea/scripts/tests/__pycache__/test_resolve_personas.cpython-313-pytest-9.1.1.pyc +0 -0
- package/src/core-skills/wizz-forge-idea/scripts/tests/__pycache__/test_resolve_personas.cpython-314.pyc +0 -0
- package/src/core-skills/wizz-forge-idea/scripts/tests/test_resolve_personas.py +138 -0
- package/src/core-skills/wizz-party-mode/SKILL.md +37 -54
- package/src/core-skills/wizz-party-mode/customize.toml +61 -2
- package/src/core-skills/wizz-party-mode/references/create-party.md +8 -3
- package/src/core-skills/wizz-party-mode/references/mode-agent-team.md +3 -1
- package/src/core-skills/wizz-party-mode/references/mode-subagent.md +16 -4
- package/src/core-skills/wizz-party-mode/references/party-memory.md +51 -0
- package/src/core-skills/wizz-party-mode/scripts/__pycache__/resolve_party.cpython-313.pyc +0 -0
- package/src/core-skills/wizz-party-mode/scripts/__pycache__/resolve_party.cpython-314.pyc +0 -0
- package/src/core-skills/wizz-party-mode/scripts/resolve_party.py +22 -7
- package/src/core-skills/wizz-party-mode/scripts/tests/__pycache__/test_resolve_party.cpython-313-pytest-9.1.1.pyc +0 -0
- package/src/core-skills/wizz-party-mode/scripts/tests/__pycache__/test_resolve_party.cpython-314.pyc +0 -0
- package/src/core-skills/wizz-party-mode/scripts/tests/{test-resolve_party.py → test_resolve_party.py} +8 -0
- package/src/core-skills/wizz-review-edge-case-hunter/SKILL.md +17 -3
- package/src/modules/wizz/agents/wizz-growth/customize.toml +10 -0
- package/src/scripts/__pycache__/memlog.cpython-313.pyc +0 -0
- package/src/scripts/tests/__pycache__/test_memlog.cpython-313-pytest-9.1.1.pyc +0 -0
- package/src/scripts/tests/__pycache__/test_resolve_customization.cpython-313-pytest-9.1.1.pyc +0 -0
- package/src/skills-lib/pesquisa-de-publico-do-piva/README.md +83 -0
- package/src/skills-lib/pesquisa-de-publico-do-piva/SKILL.md +65 -0
- package/src/skills-lib/pesquisa-de-publico-do-piva/assets/template.html +414 -0
- package/src/skills-lib/pesquisa-de-publico-do-piva/prompts.md +131 -0
- package/src/skills-lib/wizz-offer-forge/README.md +13 -0
- package/src/skills-lib/wizz-offer-forge/SKILL.md +74 -0
- package/src/skills-lib/wizz-offer-forge/references/empilhamento-valor.md +25 -0
- package/src/skills-lib/wizz-offer-forge/references/garantia-reversa.md +22 -0
- package/src/skills-lib/wizz-offer-forge/references/mecanismo-unico.md +28 -0
- package/src/skills-lib/wizz-offer-forge/references/ponte-trafego.md +21 -0
- package/src/skills-lib/wizz-router/references/routing-table-flat.md +2 -0
- package/tools/installer/core/installer.js +57 -0
- package/tools/installer/ide/_config-driven.js +3 -3
- package/tools/installer/ide/platform-codes.yaml +28 -0
- package/tools/installer/modules/external-manager.js +140 -2
- package/tools/installer/modules/official-modules.js +68 -21
- package/tools/installer/prompts.js +45 -103
- package/tools/installer/ui.js +64 -7
- package/wizz-modules.yaml +65 -11
- package/src/bmm-skills/4-implementation/wizz-sprint-planning/checklist.md +0 -34
- package/src/core-skills/wizz-brainstorming/scripts/memlog.py +0 -202
- 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.
|
|
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",
|
package/skills-registry.yaml
CHANGED
|
@@ -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-
|
|
137
|
-
args: ["-y", "@21st-dev/magic@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-
|
|
158
|
-
#
|
|
159
|
-
|
|
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-
|
|
174
|
-
# + `skills add` local
|
|
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-
|
|
183
|
-
install: "git clone https://github.com/barefootford/buttercut.git buttercut && git -C buttercut checkout
|
|
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-
|
|
195
|
-
install: "git clone https://github.com/jamiepine/voicebox.git voicebox && git -C voicebox checkout
|
|
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-
|
|
249
|
-
|
|
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-
|
|
311
|
-
install: 'uv tool install "scrapling[ai]==0.4.
|
|
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-
|
|
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-
|
|
373
|
-
install: "git clone https://github.com/krusemediallc/arcads-claude-code.git arcads-claude-code && git -C arcads-claude-code checkout
|
|
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-
|
|
409
|
-
|
|
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-
|
|
435
|
-
install: "npm install -g agent-browser@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-
|
|
451
|
-
args: ["-y", "exa-mcp-server@3.
|
|
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-
|
|
484
|
-
args: ["-y", "@upstash/context7-mcp@
|
|
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.
|
|
452
|
+
min_version: 0.45.0
|
|
523
453
|
check: "rtk --version"
|
|
524
|
-
# Pin de supply chain (2026-
|
|
525
|
-
# Checksum do install.sh nesta tag (2026-
|
|
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.
|
|
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).
|
|
Binary file
|
|
Binary file
|
|
@@ -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
|
|
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
|
|
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.
|