@luanpdd/kit-mcp 1.29.0 → 1.30.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/LICENSE +21 -21
- package/README.md +168 -168
- package/gates/agent-no-recursive-dispatch.md +82 -82
- package/kit/COMANDOS.md +138 -138
- package/kit/README.md +76 -76
- package/kit/agents/advisor-researcher.md +106 -106
- package/kit/agents/assumptions-analyzer.md +107 -107
- package/kit/agents/audit-log-implementer.md +313 -313
- package/kit/agents/auditor-consistencia-isolamento.md +413 -413
- package/kit/agents/b2b-saas-architect.md +156 -156
- package/kit/agents/cascading-failures-auditor.md +298 -298
- package/kit/agents/codebase-mapper.md +768 -768
- package/kit/agents/crm-pipeline-implementer.md +256 -256
- package/kit/agents/debugger.md +813 -813
- package/kit/agents/detector-tenant-quente.md +337 -337
- package/kit/agents/evolution-go-integrator.md +200 -200
- package/kit/agents/example-reviewer.md +21 -21
- package/kit/agents/executor.md +564 -564
- package/kit/agents/integration-checker.md +200 -200
- package/kit/agents/invite-flow-implementer.md +189 -189
- package/kit/agents/legacy-characterizer.md +368 -368
- package/kit/agents/lgpd-compliance-auditor.md +295 -295
- package/kit/agents/multi-tenant-isolation-auditor.md +253 -253
- package/kit/agents/multi-tenant-rls-writer.md +340 -340
- package/kit/agents/nyquist-auditor.md +178 -178
- package/kit/agents/observability-coverage-auditor.md +315 -315
- package/kit/agents/org-onboarding-implementer.md +223 -223
- package/kit/agents/payload-capture-instrumenter.md +273 -273
- package/kit/agents/phase-researcher.md +696 -696
- package/kit/agents/plan-checker.md +272 -272
- package/kit/agents/planner.md +922 -922
- package/kit/agents/project-researcher.md +652 -652
- package/kit/agents/refactor-safety-auditor.md +404 -404
- package/kit/agents/research-synthesizer.md +245 -245
- package/kit/agents/roadmapper.md +677 -677
- package/kit/agents/seam-finder.md +359 -359
- package/kit/agents/shotgun-surgery-detector.md +349 -349
- package/kit/agents/supabase-branching-architect.md +562 -562
- package/kit/agents/supabase-cicd-pipeline-implementer.md +777 -777
- package/kit/agents/supabase-column-privileges-writer.md +399 -399
- package/kit/agents/supabase-edge-fn-tester.md +287 -0
- package/kit/agents/supabase-edge-fn-writer.md +239 -210
- package/kit/agents/supabase-migration-writer.md +385 -385
- package/kit/agents/supabase-rbac-implementer.md +392 -392
- package/kit/agents/supabase-realtime-implementer.md +363 -267
- package/kit/agents/supabase-rls-hardener.md +521 -521
- package/kit/agents/supabase-rls-writer.md +323 -323
- package/kit/agents/supabase-roles-implementer.md +355 -355
- package/kit/agents/super-admin-implementer.md +281 -281
- package/kit/agents/ui-auditor.md +437 -437
- package/kit/agents/ui-checker.md +302 -302
- package/kit/agents/ui-researcher.md +355 -355
- package/kit/agents/user-profiler.md +175 -175
- package/kit/agents/validador-evolucao-schema.md +335 -335
- package/kit/agents/verifier.md +728 -728
- package/kit/commands/adicionar-backlog.md +75 -75
- package/kit/commands/adicionar-fase.md +42 -42
- package/kit/commands/adicionar-tarefa.md +45 -45
- package/kit/commands/adicionar-testes.md +41 -41
- package/kit/commands/ajuda.md +21 -21
- package/kit/commands/atualizar.md +37 -37
- package/kit/commands/auditar-cascading.md +111 -111
- package/kit/commands/auditar-marco.md +179 -179
- package/kit/commands/auditar-observabilidade-cobertura.md +183 -183
- package/kit/commands/auditar-refactor.md +219 -219
- package/kit/commands/auditar-release.md +109 -109
- package/kit/commands/auditar-uat.md +23 -23
- package/kit/commands/autonomo.md +40 -40
- package/kit/commands/branch-pr.md +24 -24
- package/kit/commands/burn-rate-status.md +408 -408
- package/kit/commands/capturar-payloads.md +193 -193
- package/kit/commands/caracterizar.md +212 -212
- package/kit/commands/concluir-marco.md +247 -247
- package/kit/commands/configuracoes.md +36 -36
- package/kit/commands/dados-distribuidos.md +188 -188
- package/kit/commands/definir-perfil.md +10 -10
- package/kit/commands/depurar.md +190 -190
- package/kit/commands/detectar-duplicacao.md +197 -197
- package/kit/commands/discutir-fase.md +131 -131
- package/kit/commands/encontrar-seams.md +136 -136
- package/kit/commands/entrar-discord.md +17 -17
- package/kit/commands/estatisticas.md +18 -18
- package/kit/commands/example-greeting.md +33 -33
- package/kit/commands/executar-fase.md +58 -58
- package/kit/commands/expresso.md +56 -56
- package/kit/commands/fase-ui.md +34 -34
- package/kit/commands/fazer.md +57 -57
- package/kit/commands/fio.md +125 -125
- package/kit/commands/fluxos-trabalho.md +64 -64
- package/kit/commands/forense.md +176 -176
- package/kit/commands/gerenciador.md +38 -38
- package/kit/commands/inserir-fase.md +31 -31
- package/kit/commands/legacy.md +263 -263
- package/kit/commands/limpeza.md +17 -17
- package/kit/commands/listar-hipoteses-fase.md +45 -45
- package/kit/commands/listar-workspaces.md +18 -18
- package/kit/commands/load-shedding.md +117 -117
- package/kit/commands/mapear-codebase.md +70 -70
- package/kit/commands/multi-tenant.md +163 -163
- package/kit/commands/nota.md +33 -33
- package/kit/commands/novo-marco.md +43 -43
- package/kit/commands/novo-projeto.md +41 -41
- package/kit/commands/novo-workspace.md +43 -43
- package/kit/commands/pausar-trabalho.md +37 -37
- package/kit/commands/perfil-usuario.md +45 -45
- package/kit/commands/pesquisar-fase.md +195 -195
- package/kit/commands/planejar-fase.md +67 -67
- package/kit/commands/planejar-lacunas.md +33 -33
- package/kit/commands/plantar-ideia.md +25 -25
- package/kit/commands/progresso.md +24 -24
- package/kit/commands/proximo.md +30 -30
- package/kit/commands/publicar.md +490 -490
- package/kit/commands/rapido.md +35 -35
- package/kit/commands/reaplicar-patches.md +124 -124
- package/kit/commands/refactor-seguro.md +321 -321
- package/kit/commands/relatorio-sessao.md +19 -19
- package/kit/commands/remover-fase.md +31 -31
- package/kit/commands/remover-workspace.md +26 -26
- package/kit/commands/resumo-marco.md +50 -50
- package/kit/commands/retomar-trabalho.md +40 -40
- package/kit/commands/revisar-backlog.md +60 -60
- package/kit/commands/revisar-ui.md +32 -32
- package/kit/commands/revisar.md +37 -37
- package/kit/commands/saude.md +21 -21
- package/kit/commands/setup-notion.md +93 -93
- package/kit/commands/storytelling.md +179 -179
- package/kit/commands/supabase.md +30 -7
- package/kit/commands/sync-main.md +68 -68
- package/kit/commands/validar-fase.md +35 -35
- package/kit/commands/verificar-tarefas.md +44 -44
- package/kit/commands/verificar-trabalho.md +64 -64
- package/kit/file-manifest.json +15 -8
- package/kit/framework/bin/lib/commands.cjs +959 -959
- package/kit/framework/bin/lib/config.cjs +442 -442
- package/kit/framework/bin/lib/core.cjs +1230 -1230
- package/kit/framework/bin/lib/frontmatter.cjs +336 -336
- package/kit/framework/bin/lib/init.cjs +1442 -1442
- package/kit/framework/bin/lib/milestone.cjs +252 -252
- package/kit/framework/bin/lib/model-profiles.cjs +68 -68
- package/kit/framework/bin/lib/phase.cjs +888 -888
- package/kit/framework/bin/lib/profile-output.cjs +952 -952
- package/kit/framework/bin/lib/profile-pipeline.cjs +539 -539
- package/kit/framework/bin/lib/roadmap.cjs +329 -329
- package/kit/framework/bin/lib/security.cjs +382 -382
- package/kit/framework/bin/lib/state.cjs +1031 -1031
- package/kit/framework/bin/lib/template.cjs +222 -222
- package/kit/framework/bin/lib/uat.cjs +282 -282
- package/kit/framework/bin/lib/verify.cjs +888 -888
- package/kit/framework/bin/lib/workstream.cjs +491 -491
- package/kit/framework/bin/tools.cjs +918 -918
- package/kit/framework/commands/workstreams.md +63 -63
- package/kit/framework/references/checkpoints.md +778 -778
- package/kit/framework/references/continuation-format.md +249 -249
- package/kit/framework/references/decimal-phase-calculation.md +64 -64
- package/kit/framework/references/git-integration.md +295 -295
- package/kit/framework/references/git-planning-commit.md +38 -38
- package/kit/framework/references/model-profile-resolution.md +36 -36
- package/kit/framework/references/model-profiles.md +139 -139
- package/kit/framework/references/phase-argument-parsing.md +61 -61
- package/kit/framework/references/planning-config.md +202 -202
- package/kit/framework/references/questioning.md +162 -162
- package/kit/framework/references/tdd.md +263 -263
- package/kit/framework/references/ui-brand.md +160 -160
- package/kit/framework/references/user-profiling.md +657 -657
- package/kit/framework/references/verification-patterns.md +612 -612
- package/kit/framework/references/workstream-flag.md +58 -58
- package/kit/framework/templates/DEBUG.md +164 -164
- package/kit/framework/templates/UAT.md +265 -265
- package/kit/framework/templates/UI-SPEC.md +100 -100
- package/kit/framework/templates/VALIDATION.md +76 -76
- package/kit/framework/templates/claude-md.md +122 -122
- package/kit/framework/templates/codebase/architecture.md +185 -185
- package/kit/framework/templates/codebase/concerns.md +205 -205
- package/kit/framework/templates/codebase/conventions.md +204 -204
- package/kit/framework/templates/codebase/integrations.md +192 -192
- package/kit/framework/templates/codebase/stack.md +158 -158
- package/kit/framework/templates/codebase/structure.md +199 -199
- package/kit/framework/templates/codebase/testing.md +301 -301
- package/kit/framework/templates/config.json +44 -44
- package/kit/framework/templates/context.md +352 -352
- package/kit/framework/templates/continue-here.md +78 -78
- package/kit/framework/templates/copilot-instructions.md +7 -7
- package/kit/framework/templates/debug-subagent-prompt.md +91 -91
- package/kit/framework/templates/dev-preferences.md +20 -20
- package/kit/framework/templates/discovery.md +146 -146
- package/kit/framework/templates/discussion-log.md +63 -63
- package/kit/framework/templates/milestone-archive.md +123 -123
- package/kit/framework/templates/milestone.md +115 -115
- package/kit/framework/templates/phase-prompt.md +610 -610
- package/kit/framework/templates/planner-subagent-prompt.md +117 -117
- package/kit/framework/templates/project.md +186 -186
- package/kit/framework/templates/requirements.md +231 -231
- package/kit/framework/templates/research-project/ARCHITECTURE.md +204 -204
- package/kit/framework/templates/research-project/FEATURES.md +147 -147
- package/kit/framework/templates/research-project/PITFALLS.md +200 -200
- package/kit/framework/templates/research-project/STACK.md +120 -120
- package/kit/framework/templates/research-project/SUMMARY.md +170 -170
- package/kit/framework/templates/research.md +419 -419
- package/kit/framework/templates/retrospective.md +54 -54
- package/kit/framework/templates/roadmap.md +202 -202
- package/kit/framework/templates/state.md +176 -176
- package/kit/framework/templates/summary-complex.md +59 -59
- package/kit/framework/templates/summary-minimal.md +41 -41
- package/kit/framework/templates/summary-standard.md +48 -48
- package/kit/framework/templates/summary.md +209 -209
- package/kit/framework/templates/user-profile.md +146 -146
- package/kit/framework/templates/user-setup.md +256 -256
- package/kit/framework/templates/verification-report.md +258 -258
- package/kit/framework/workflows/add-phase.md +112 -112
- package/kit/framework/workflows/add-tests.md +351 -351
- package/kit/framework/workflows/add-todo.md +158 -158
- package/kit/framework/workflows/audit-milestone.md +340 -340
- package/kit/framework/workflows/audit-uat.md +109 -109
- package/kit/framework/workflows/autonomous.md +891 -891
- package/kit/framework/workflows/check-todos.md +177 -177
- package/kit/framework/workflows/cleanup.md +152 -152
- package/kit/framework/workflows/complete-milestone.md +696 -696
- package/kit/framework/workflows/diagnose-issues.md +231 -231
- package/kit/framework/workflows/discovery-phase.md +289 -289
- package/kit/framework/workflows/discuss-phase-assumptions.md +653 -653
- package/kit/framework/workflows/discuss-phase.md +784 -784
- package/kit/framework/workflows/do.md +104 -104
- package/kit/framework/workflows/execute-phase.md +838 -838
- package/kit/framework/workflows/execute-plan.md +510 -510
- package/kit/framework/workflows/fast.md +102 -102
- package/kit/framework/workflows/forensics.md +265 -265
- package/kit/framework/workflows/health.md +181 -181
- package/kit/framework/workflows/help.md +619 -619
- package/kit/framework/workflows/insert-phase.md +130 -130
- package/kit/framework/workflows/list-phase-assumptions.md +178 -178
- package/kit/framework/workflows/list-workspaces.md +56 -56
- package/kit/framework/workflows/manager.md +362 -362
- package/kit/framework/workflows/map-codebase.md +377 -377
- package/kit/framework/workflows/milestone-summary.md +223 -223
- package/kit/framework/workflows/new-milestone.md +486 -486
- package/kit/framework/workflows/new-project.md +1159 -1159
- package/kit/framework/workflows/new-workspace.md +237 -237
- package/kit/framework/workflows/next.md +97 -97
- package/kit/framework/workflows/node-repair.md +92 -92
- package/kit/framework/workflows/note.md +156 -156
- package/kit/framework/workflows/pause-work.md +176 -176
- package/kit/framework/workflows/plan-milestone-gaps.md +273 -273
- package/kit/framework/workflows/plan-phase.md +765 -765
- package/kit/framework/workflows/plant-seed.md +169 -169
- package/kit/framework/workflows/pr-branch.md +129 -129
- package/kit/framework/workflows/profile-user.md +450 -450
- package/kit/framework/workflows/progress.md +507 -507
- package/kit/framework/workflows/quick.md +757 -757
- package/kit/framework/workflows/remove-phase.md +155 -155
- package/kit/framework/workflows/remove-workspace.md +90 -90
- package/kit/framework/workflows/research-phase.md +82 -82
- package/kit/framework/workflows/resume-project.md +326 -326
- package/kit/framework/workflows/review.md +228 -228
- package/kit/framework/workflows/session-report.md +146 -146
- package/kit/framework/workflows/settings.md +283 -283
- package/kit/framework/workflows/ship.md +228 -228
- package/kit/framework/workflows/stats.md +60 -60
- package/kit/framework/workflows/transition.md +671 -671
- package/kit/framework/workflows/ui-phase.md +302 -302
- package/kit/framework/workflows/ui-review.md +165 -165
- package/kit/framework/workflows/update.md +323 -323
- package/kit/framework/workflows/validate-phase.md +174 -174
- package/kit/framework/workflows/verify-phase.md +252 -252
- package/kit/framework/workflows/verify-work.md +637 -637
- package/kit/hooks/check-update.js +118 -118
- package/kit/hooks/context-monitor.js +163 -163
- package/kit/hooks/kit-attribution-reminder.cjs +98 -0
- package/kit/hooks/prompt-guard.js +103 -103
- package/kit/hooks/statusline.js +125 -125
- package/kit/hooks/workflow-guard.js +101 -101
- package/kit/settings.json +45 -45
- package/kit/skills/_shared-supabase/glossary.md +17 -0
- package/kit/skills/ai-prompt-characterization/SKILL.md +335 -335
- package/kit/skills/armadilhas-sistemas-distribuidos/SKILL.md +447 -447
- package/kit/skills/audit-log-multi-tenant/SKILL.md +340 -340
- package/kit/skills/b2b-saas-architecture/SKILL.md +300 -300
- package/kit/skills/consistencia-leitura-replica/SKILL.md +385 -385
- package/kit/skills/crm-lead-pipeline-patterns/SKILL.md +343 -343
- package/kit/skills/escolha-modelo-consistencia/SKILL.md +494 -494
- package/kit/skills/evolucao-schema-compativel/SKILL.md +448 -448
- package/kit/skills/evolution-go-whatsapp-integration/SKILL.md +322 -322
- package/kit/skills/example-skill/SKILL.md +42 -42
- package/kit/skills/legacy-api-only-applications/SKILL.md +358 -358
- package/kit/skills/legacy-characterization-tests/SKILL.md +330 -330
- package/kit/skills/legacy-effect-analysis/SKILL.md +331 -331
- package/kit/skills/legacy-extract-class/SKILL.md +203 -203
- package/kit/skills/legacy-programming-by-difference/SKILL.md +252 -252
- package/kit/skills/legacy-seams-and-test-harness/SKILL.md +460 -460
- package/kit/skills/legacy-shotgun-surgery/SKILL.md +286 -286
- package/kit/skills/legacy-sprout-wrap-techniques/SKILL.md +434 -434
- package/kit/skills/legacy-storytelling-naked-crc/SKILL.md +270 -270
- package/kit/skills/lgpd-multi-tenant-compliance/SKILL.md +340 -340
- package/kit/skills/member-invite-flow/SKILL.md +305 -305
- package/kit/skills/member-management-react-shadcn/SKILL.md +328 -328
- package/kit/skills/multi-tenant-performance-scaling/SKILL.md +316 -316
- package/kit/skills/multi-tenant-rls-hierarchy/SKILL.md +342 -342
- package/kit/skills/org-onboarding-flow/SKILL.md +257 -257
- package/kit/skills/org-switcher-react-pattern/SKILL.md +349 -349
- package/kit/skills/permission-gate-react-pattern/SKILL.md +271 -271
- package/kit/skills/postgres-isolamento-concorrencia/SKILL.md +552 -552
- package/kit/skills/pre-refactor-characterization/SKILL.md +421 -421
- package/kit/skills/rbac-permissions-matrix-supabase/SKILL.md +338 -338
- package/kit/skills/streams-eventos-cdc/SKILL.md +711 -711
- package/kit/skills/supabase-branching-workflow/SKILL.md +544 -544
- package/kit/skills/supabase-ci-cd-github-actions/SKILL.md +880 -880
- package/kit/skills/supabase-column-level-security/SKILL.md +426 -426
- package/kit/skills/supabase-config-toml-remotes/SKILL.md +807 -807
- package/kit/skills/supabase-custom-claims-rbac/SKILL.md +472 -472
- package/kit/skills/supabase-edge-functions/SKILL.md +229 -141
- package/kit/skills/supabase-edge-functions-auth/SKILL.md +309 -0
- package/kit/skills/supabase-edge-functions-limits/SKILL.md +302 -0
- package/kit/skills/supabase-edge-functions-mcp-server/SKILL.md +279 -0
- package/kit/skills/supabase-edge-functions-testing/SKILL.md +277 -0
- package/kit/skills/supabase-edge-runtime-builtins/SKILL.md +357 -0
- package/kit/skills/supabase-migration-repair/SKILL.md +823 -823
- package/kit/skills/supabase-migrations/SKILL.md +297 -297
- package/kit/skills/supabase-pgtap-testing/SKILL.md +1053 -1053
- package/kit/skills/supabase-postgres-roles/SKILL.md +392 -392
- package/kit/skills/supabase-realtime/SKILL.md +460 -236
- package/kit/skills/supabase-rls-defense-in-depth/SKILL.md +418 -418
- package/kit/skills/supabase-rls-policies/SKILL.md +635 -635
- package/kit/skills/super-admin-platform-pattern/SKILL.md +326 -326
- package/kit/skills/tenant-quente-mitigacao/SKILL.md +605 -605
- package/kit/skills/whatsapp-conversation-state-machine/SKILL.md +287 -287
- package/package.json +1 -1
- package/src/core/kit.js +216 -216
- package/src/core/reflect.js +247 -247
- package/src/core/reverse-sync.js +372 -372
- package/src/core/sync.js +418 -418
- package/src/core/watch.js +121 -121
- package/src/mcp-server/index.js +715 -693
|
@@ -1,212 +1,212 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: caracterizar
|
|
3
|
-
description: Invoca legacy-characterizer — gera characterization tests (cap 13 Feathers) capturando comportamento atual como golden snapshots; cobre 5+ grupos de equivalência canônicos; valida cobertur…
|
|
4
|
-
argument-hint: "<target_file> [--symbol <name>] [--min-inputs N] [--gap-fill] [--fixtures-dir <path>] [--no-mutation]"
|
|
5
|
-
allowed-tools:
|
|
6
|
-
- Read
|
|
7
|
-
- Write
|
|
8
|
-
- Edit
|
|
9
|
-
- Bash
|
|
10
|
-
- Grep
|
|
11
|
-
- Glob
|
|
12
|
-
- Task
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
<objective>
|
|
16
|
-
Caracterizar arquivo de código legado (sem testes) gerando suite de characterization tests que congelam comportamento atual como oracle imutável durante refactor. Invoca o agente [`legacy-characterizer`](../agents/legacy-characterizer.md) que aplica a skill [`legacy-characterization-tests`](../skills/legacy-characterization-tests/SKILL.md) — 7 grupos canônicos de equivalência (empty/typical/boundary-low/boundary-up/recoverable-invalid/fatal-invalid/side-effect-heavy), golden snapshots com sanitização de PII, validação behavioral via mutation testing.
|
|
17
|
-
|
|
18
|
-
**Cria/Atualiza:**
|
|
19
|
-
- `tests/characterization/<file_stem>/` — suite de testes + snapshots + fakes auxiliares
|
|
20
|
-
- `tests/characterization/<file_stem>/README.md` — anotações de bugs preservados, fonte do oracle
|
|
21
|
-
|
|
22
|
-
**Após:** o user tem safety net que detecta regressão imediata em refactor. Gate `refactor-safety-auditor` muda de BLOCK → GO. Refactor pode prosseguir com `cover-and-modify` em vez de `edit-and-pray`.
|
|
23
|
-
</objective>
|
|
24
|
-
|
|
25
|
-
<context>
|
|
26
|
-
**Argumentos:**
|
|
27
|
-
- `<target_file>` — caminho do arquivo a caracterizar (relativo ao project root) — OBRIGATÓRIO
|
|
28
|
-
- `--symbol <name>` — caracterizar apenas símbolo específico (default: todos os exports)
|
|
29
|
-
- `--min-inputs N` — número mínimo de inputs (default: 8)
|
|
30
|
-
- `--gap-fill` — modo gap-fill: caracterizar APENAS o que falta para atingir 70% behavioral coverage (não recriar o que existe)
|
|
31
|
-
- `--fixtures-dir <path>` — diretório de payloads reais capturados (substitui inputs sintéticos por reais)
|
|
32
|
-
- `--no-mutation` — skip mutation testing após geração (default: roda se ferramenta detectada)
|
|
33
|
-
- `--output-dir <path>` — diretório base de output (default: `tests/characterization/<file_stem>/`)
|
|
34
|
-
|
|
35
|
-
**Exemplos:**
|
|
36
|
-
```
|
|
37
|
-
/caracterizar src/orders/handler.ts # caracterização completa, defaults
|
|
38
|
-
/caracterizar src/orders/handler.ts --symbol processOrder # só um método
|
|
39
|
-
/caracterizar src/orders/handler.ts --gap-fill # só preenche lacunas (re-rodar pós-refactor)
|
|
40
|
-
/caracterizar supabase/functions/webhook/index.ts \
|
|
41
|
-
--fixtures-dir .planning/captured-payloads/webhook # usa payloads reais
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
**Pré-requisitos:**
|
|
45
|
-
- Arquivo deve compilar/parsear no projeto atual
|
|
46
|
-
- Test framework instalado (Vitest, Jest, pytest, JUnit, go-test, etc.)
|
|
47
|
-
- (Recomendado) ferramenta de mutation testing instalada — Stryker (JS/TS), mutmut (Py), Pitest (Java)
|
|
48
|
-
- (Opcional) coverage tool com summary acessível (Istanbul/c8 para JS, coverage.py, JaCoCo)
|
|
49
|
-
|
|
50
|
-
**Quando este comando é o caminho certo:**
|
|
51
|
-
- Arquivo > 200 linhas com cobertura < 60% e mudança comportamental planejada
|
|
52
|
-
- Webhook/edge function/API pública sendo modificada
|
|
53
|
-
- Gate `refactor-safety-auditor` retornou BLOCK
|
|
54
|
-
- Refactor de monster method (cap 22) iniciando
|
|
55
|
-
|
|
56
|
-
**Quando NÃO é o caminho:**
|
|
57
|
-
- Arquivo trivial (< 50 linhas, sem branches significativas) — testes diretos sem ceremonial
|
|
58
|
-
- Mudança é apenas adicionar comportamento (sprout/wrap) — usar `/refactor-seguro --mode=sprout`
|
|
59
|
-
- Mudança é apenas mecânica (rename, extract-contiguous-block) — usar `/refactor-seguro --mode=safe-extract`
|
|
60
|
-
- Bug fix com TDD — TDD test do COMPORTAMENTO CORRETO é o caminho, não characterization
|
|
61
|
-
</context>
|
|
62
|
-
|
|
63
|
-
<process>
|
|
64
|
-
|
|
65
|
-
## 1. Parsear argumentos
|
|
66
|
-
|
|
67
|
-
```bash
|
|
68
|
-
# PT-BR: extrair primeiro positional como target_file
|
|
69
|
-
TARGET_FILE=$(echo "$ARGUMENTS" | awk '{print $1}')
|
|
70
|
-
SYMBOL=$(echo "$ARGUMENTS" | grep -oE -- '--symbol [^ ]+' | awk '{print $2}')
|
|
71
|
-
MIN_INPUTS=$(echo "$ARGUMENTS" | grep -oE -- '--min-inputs [0-9]+' | awk '{print $2}')
|
|
72
|
-
FIXTURES_DIR=$(echo "$ARGUMENTS" | grep -oE -- '--fixtures-dir [^ ]+' | awk '{print $2}')
|
|
73
|
-
OUTPUT_DIR=$(echo "$ARGUMENTS" | grep -oE -- '--output-dir [^ ]+' | awk '{print $2}')
|
|
74
|
-
GAP_FILL=false
|
|
75
|
-
NO_MUTATION=false
|
|
76
|
-
|
|
77
|
-
echo "$ARGUMENTS" | grep -qE -- '--gap-fill' && GAP_FILL=true
|
|
78
|
-
echo "$ARGUMENTS" | grep -qE -- '--no-mutation' && NO_MUTATION=true
|
|
79
|
-
|
|
80
|
-
[ -z "$MIN_INPUTS" ] && MIN_INPUTS=8
|
|
81
|
-
|
|
82
|
-
if [ -z "$TARGET_FILE" ]; then
|
|
83
|
-
echo "ERROR: target_file é obrigatório."
|
|
84
|
-
echo "Uso: /caracterizar <target_file> [opções]"
|
|
85
|
-
exit 1
|
|
86
|
-
fi
|
|
87
|
-
|
|
88
|
-
if [ ! -f "$TARGET_FILE" ]; then
|
|
89
|
-
echo "ERROR: arquivo não encontrado: $TARGET_FILE"
|
|
90
|
-
exit 1
|
|
91
|
-
fi
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
## 2. Validar pré-requisitos
|
|
95
|
-
|
|
96
|
-
```bash
|
|
97
|
-
# PT-BR: detectar test framework + alertar se ausente
|
|
98
|
-
FRAMEWORK_OK=false
|
|
99
|
-
case "$TARGET_FILE" in
|
|
100
|
-
*.ts|*.tsx|*.js|*.jsx|*.mjs)
|
|
101
|
-
if [ -f "package.json" ]; then
|
|
102
|
-
jq -re '.devDependencies | (.vitest // .jest)' package.json >/dev/null 2>&1 && FRAMEWORK_OK=true
|
|
103
|
-
fi
|
|
104
|
-
;;
|
|
105
|
-
*.py)
|
|
106
|
-
pip show pytest >/dev/null 2>&1 && FRAMEWORK_OK=true
|
|
107
|
-
;;
|
|
108
|
-
*.java)
|
|
109
|
-
[ -f pom.xml ] || [ -f build.gradle ] && FRAMEWORK_OK=true
|
|
110
|
-
;;
|
|
111
|
-
*.go)
|
|
112
|
-
[ -f go.mod ] && FRAMEWORK_OK=true
|
|
113
|
-
;;
|
|
114
|
-
esac
|
|
115
|
-
|
|
116
|
-
if [ "$FRAMEWORK_OK" = false ]; then
|
|
117
|
-
echo "⚠ Test framework não detectado. Agent pode gerar testes mas execução exigirá setup."
|
|
118
|
-
fi
|
|
119
|
-
|
|
120
|
-
# PT-BR: avisar se gap-fill mas não há characterization existente
|
|
121
|
-
if [ "$GAP_FILL" = true ]; then
|
|
122
|
-
STEM=$(basename "$TARGET_FILE" | sed 's/\.[^.]*$//')
|
|
123
|
-
if ! find tests test __tests__ -path "*characterization*$STEM*" 2>/dev/null | head -1 | grep -q .; then
|
|
124
|
-
echo "⚠ --gap-fill solicitado mas nenhum characterization existente encontrado."
|
|
125
|
-
echo " Caindo em modo full-characterization."
|
|
126
|
-
GAP_FILL=false
|
|
127
|
-
fi
|
|
128
|
-
fi
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
## 3. Dispatch para `legacy-characterizer`
|
|
132
|
-
|
|
133
|
-
```text
|
|
134
|
-
Task(
|
|
135
|
-
subagent_type="legacy-characterizer",
|
|
136
|
-
prompt="
|
|
137
|
-
target_file: ${TARGET_FILE}
|
|
138
|
-
${SYMBOL:+target_symbol: ${SYMBOL}}
|
|
139
|
-
min_inputs: ${MIN_INPUTS}
|
|
140
|
-
${FIXTURES_DIR:+payload_fixtures_dir: ${FIXTURES_DIR}}
|
|
141
|
-
${OUTPUT_DIR:+output_dir: ${OUTPUT_DIR}}
|
|
142
|
-
mutation_check: $([ "$NO_MUTATION" = true ] && echo false || echo true)
|
|
143
|
-
mode: $([ "$GAP_FILL" = true ] && echo gap-fill || echo full)
|
|
144
|
-
|
|
145
|
-
Aplicar skill legacy-characterization-tests. Etapas canônicas:
|
|
146
|
-
1. Análise estática: identificar exports, parâmetros, deps de I/O, side effects, branches
|
|
147
|
-
2. Aplicar 7 grupos de equivalência canônicos (ou substituir por payloads reais se fixtures-dir fornecido)
|
|
148
|
-
3. Construir fakes mínimos para deps de I/O (DB, HTTP, FS, clock, random, UUID)
|
|
149
|
-
4. Executar código real com cada input + fakes; capturar return + sideEffects
|
|
150
|
-
5. Sanitizar (PII, secrets, UUIDs voláteis) antes de salvar como snapshot
|
|
151
|
-
6. Imprimir warning de revisão obrigatória dos snapshots
|
|
152
|
-
7. Validar cobertura behavioral via mutation testing (Stryker/mutmut/Pitest)
|
|
153
|
-
8. Output: tests/characterization/<file_stem>/ + README.md
|
|
154
|
-
|
|
155
|
-
Modo gap-fill (se aplicável): caracterizar APENAS branches/paths não cobertos pela suite existente; NÃO recriar tests existentes.
|
|
156
|
-
"
|
|
157
|
-
)
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
## 4. Pós-output: revisão obrigatória + integração com gate
|
|
161
|
-
|
|
162
|
-
Após o agent completar:
|
|
163
|
-
|
|
164
|
-
```
|
|
165
|
-
═══════════════════════════════════════════════════════════
|
|
166
|
-
framework ► CARACTERIZAR ▸ tests/characterization/<file_stem>/
|
|
167
|
-
═══════════════════════════════════════════════════════════
|
|
168
|
-
|
|
169
|
-
[output do legacy-characterizer]
|
|
170
|
-
|
|
171
|
-
## ⚠ REVISÃO MANUAL OBRIGATÓRIA dos snapshots
|
|
172
|
-
|
|
173
|
-
Localização: tests/characterization/<file_stem>/__snapshots__/
|
|
174
|
-
|
|
175
|
-
Steps antes de commit:
|
|
176
|
-
1. Ler cada snapshot linha por linha
|
|
177
|
-
2. Marcar bugs conhecidos como comments inline (// BUG #X: ...)
|
|
178
|
-
3. Verificar redaction de PII/secrets adicional
|
|
179
|
-
4. Confirmar zero secrets/UUIDs locais expostos
|
|
180
|
-
|
|
181
|
-
Não commitar como `chore: characterize <file>` sem revisão.
|
|
182
|
-
|
|
183
|
-
## Próximos passos
|
|
184
|
-
|
|
185
|
-
1. **Revisar snapshots** — manualmente, todos os arquivos em __snapshots__/
|
|
186
|
-
2. **Rodar suite** — verificar todos verdes:
|
|
187
|
-
- JS/TS: `npm test -- tests/characterization/<file_stem>`
|
|
188
|
-
- Python: `pytest tests/characterization/<file_stem>`
|
|
189
|
-
- Java: `mvn test -Dtest='Characterization*'`
|
|
190
|
-
3. **Commit** — `chore: characterize <file_stem>` (PR separado, NÃO misturar com refactor)
|
|
191
|
-
4. **Re-auditar gate** — `/auditar-refactor <file>` deve agora retornar GO
|
|
192
|
-
5. **Iniciar refactor** — `/refactor-seguro <file>` (ou diretamente PR de refactor)
|
|
193
|
-
|
|
194
|
-
## Cross-suite
|
|
195
|
-
|
|
196
|
-
- Para sprout/wrap em vez de full characterization: `/refactor-seguro --mode=sprout <file>`
|
|
197
|
-
- Para safe-extract em vez de behavioral change: `/refactor-seguro --mode=safe-extract <file>`
|
|
198
|
-
- Para SLO protection durante refactor: `/instrumentar-fase` (v1.9 — captura behavioral diff)
|
|
199
|
-
```
|
|
200
|
-
|
|
201
|
-
</process>
|
|
202
|
-
|
|
203
|
-
<success_criteria>
|
|
204
|
-
- [ ] $ARGUMENTS parseados (target_file obrigatório, 7 flags opcionais)
|
|
205
|
-
- [ ] Pré-requisitos validados (framework de teste detectado; warning se não)
|
|
206
|
-
- [ ] `legacy-characterizer` invocado via `Task(subagent_type=...)` com prompt completo (8 etapas)
|
|
207
|
-
- [ ] `tests/characterization/<file_stem>/` criado com tests + snapshots + fakes + README
|
|
208
|
-
- [ ] Output forwarded transparentemente do agent
|
|
209
|
-
- [ ] Warning de revisão manual emitido (snapshots NÃO são committed automaticamente)
|
|
210
|
-
- [ ] Próximos passos sugeridos: revisar, rodar, commitar, re-auditar gate, iniciar refactor
|
|
211
|
-
- [ ] Modo gap-fill respeitado se solicitado e characterization existente encontrada
|
|
212
|
-
</success_criteria>
|
|
1
|
+
---
|
|
2
|
+
name: caracterizar
|
|
3
|
+
description: Invoca legacy-characterizer — gera characterization tests (cap 13 Feathers) capturando comportamento atual como golden snapshots; cobre 5+ grupos de equivalência canônicos; valida cobertur…
|
|
4
|
+
argument-hint: "<target_file> [--symbol <name>] [--min-inputs N] [--gap-fill] [--fixtures-dir <path>] [--no-mutation]"
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- Read
|
|
7
|
+
- Write
|
|
8
|
+
- Edit
|
|
9
|
+
- Bash
|
|
10
|
+
- Grep
|
|
11
|
+
- Glob
|
|
12
|
+
- Task
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
<objective>
|
|
16
|
+
Caracterizar arquivo de código legado (sem testes) gerando suite de characterization tests que congelam comportamento atual como oracle imutável durante refactor. Invoca o agente [`legacy-characterizer`](../agents/legacy-characterizer.md) que aplica a skill [`legacy-characterization-tests`](../skills/legacy-characterization-tests/SKILL.md) — 7 grupos canônicos de equivalência (empty/typical/boundary-low/boundary-up/recoverable-invalid/fatal-invalid/side-effect-heavy), golden snapshots com sanitização de PII, validação behavioral via mutation testing.
|
|
17
|
+
|
|
18
|
+
**Cria/Atualiza:**
|
|
19
|
+
- `tests/characterization/<file_stem>/` — suite de testes + snapshots + fakes auxiliares
|
|
20
|
+
- `tests/characterization/<file_stem>/README.md` — anotações de bugs preservados, fonte do oracle
|
|
21
|
+
|
|
22
|
+
**Após:** o user tem safety net que detecta regressão imediata em refactor. Gate `refactor-safety-auditor` muda de BLOCK → GO. Refactor pode prosseguir com `cover-and-modify` em vez de `edit-and-pray`.
|
|
23
|
+
</objective>
|
|
24
|
+
|
|
25
|
+
<context>
|
|
26
|
+
**Argumentos:**
|
|
27
|
+
- `<target_file>` — caminho do arquivo a caracterizar (relativo ao project root) — OBRIGATÓRIO
|
|
28
|
+
- `--symbol <name>` — caracterizar apenas símbolo específico (default: todos os exports)
|
|
29
|
+
- `--min-inputs N` — número mínimo de inputs (default: 8)
|
|
30
|
+
- `--gap-fill` — modo gap-fill: caracterizar APENAS o que falta para atingir 70% behavioral coverage (não recriar o que existe)
|
|
31
|
+
- `--fixtures-dir <path>` — diretório de payloads reais capturados (substitui inputs sintéticos por reais)
|
|
32
|
+
- `--no-mutation` — skip mutation testing após geração (default: roda se ferramenta detectada)
|
|
33
|
+
- `--output-dir <path>` — diretório base de output (default: `tests/characterization/<file_stem>/`)
|
|
34
|
+
|
|
35
|
+
**Exemplos:**
|
|
36
|
+
```
|
|
37
|
+
/caracterizar src/orders/handler.ts # caracterização completa, defaults
|
|
38
|
+
/caracterizar src/orders/handler.ts --symbol processOrder # só um método
|
|
39
|
+
/caracterizar src/orders/handler.ts --gap-fill # só preenche lacunas (re-rodar pós-refactor)
|
|
40
|
+
/caracterizar supabase/functions/webhook/index.ts \
|
|
41
|
+
--fixtures-dir .planning/captured-payloads/webhook # usa payloads reais
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
**Pré-requisitos:**
|
|
45
|
+
- Arquivo deve compilar/parsear no projeto atual
|
|
46
|
+
- Test framework instalado (Vitest, Jest, pytest, JUnit, go-test, etc.)
|
|
47
|
+
- (Recomendado) ferramenta de mutation testing instalada — Stryker (JS/TS), mutmut (Py), Pitest (Java)
|
|
48
|
+
- (Opcional) coverage tool com summary acessível (Istanbul/c8 para JS, coverage.py, JaCoCo)
|
|
49
|
+
|
|
50
|
+
**Quando este comando é o caminho certo:**
|
|
51
|
+
- Arquivo > 200 linhas com cobertura < 60% e mudança comportamental planejada
|
|
52
|
+
- Webhook/edge function/API pública sendo modificada
|
|
53
|
+
- Gate `refactor-safety-auditor` retornou BLOCK
|
|
54
|
+
- Refactor de monster method (cap 22) iniciando
|
|
55
|
+
|
|
56
|
+
**Quando NÃO é o caminho:**
|
|
57
|
+
- Arquivo trivial (< 50 linhas, sem branches significativas) — testes diretos sem ceremonial
|
|
58
|
+
- Mudança é apenas adicionar comportamento (sprout/wrap) — usar `/refactor-seguro --mode=sprout`
|
|
59
|
+
- Mudança é apenas mecânica (rename, extract-contiguous-block) — usar `/refactor-seguro --mode=safe-extract`
|
|
60
|
+
- Bug fix com TDD — TDD test do COMPORTAMENTO CORRETO é o caminho, não characterization
|
|
61
|
+
</context>
|
|
62
|
+
|
|
63
|
+
<process>
|
|
64
|
+
|
|
65
|
+
## 1. Parsear argumentos
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
# PT-BR: extrair primeiro positional como target_file
|
|
69
|
+
TARGET_FILE=$(echo "$ARGUMENTS" | awk '{print $1}')
|
|
70
|
+
SYMBOL=$(echo "$ARGUMENTS" | grep -oE -- '--symbol [^ ]+' | awk '{print $2}')
|
|
71
|
+
MIN_INPUTS=$(echo "$ARGUMENTS" | grep -oE -- '--min-inputs [0-9]+' | awk '{print $2}')
|
|
72
|
+
FIXTURES_DIR=$(echo "$ARGUMENTS" | grep -oE -- '--fixtures-dir [^ ]+' | awk '{print $2}')
|
|
73
|
+
OUTPUT_DIR=$(echo "$ARGUMENTS" | grep -oE -- '--output-dir [^ ]+' | awk '{print $2}')
|
|
74
|
+
GAP_FILL=false
|
|
75
|
+
NO_MUTATION=false
|
|
76
|
+
|
|
77
|
+
echo "$ARGUMENTS" | grep -qE -- '--gap-fill' && GAP_FILL=true
|
|
78
|
+
echo "$ARGUMENTS" | grep -qE -- '--no-mutation' && NO_MUTATION=true
|
|
79
|
+
|
|
80
|
+
[ -z "$MIN_INPUTS" ] && MIN_INPUTS=8
|
|
81
|
+
|
|
82
|
+
if [ -z "$TARGET_FILE" ]; then
|
|
83
|
+
echo "ERROR: target_file é obrigatório."
|
|
84
|
+
echo "Uso: /caracterizar <target_file> [opções]"
|
|
85
|
+
exit 1
|
|
86
|
+
fi
|
|
87
|
+
|
|
88
|
+
if [ ! -f "$TARGET_FILE" ]; then
|
|
89
|
+
echo "ERROR: arquivo não encontrado: $TARGET_FILE"
|
|
90
|
+
exit 1
|
|
91
|
+
fi
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## 2. Validar pré-requisitos
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
# PT-BR: detectar test framework + alertar se ausente
|
|
98
|
+
FRAMEWORK_OK=false
|
|
99
|
+
case "$TARGET_FILE" in
|
|
100
|
+
*.ts|*.tsx|*.js|*.jsx|*.mjs)
|
|
101
|
+
if [ -f "package.json" ]; then
|
|
102
|
+
jq -re '.devDependencies | (.vitest // .jest)' package.json >/dev/null 2>&1 && FRAMEWORK_OK=true
|
|
103
|
+
fi
|
|
104
|
+
;;
|
|
105
|
+
*.py)
|
|
106
|
+
pip show pytest >/dev/null 2>&1 && FRAMEWORK_OK=true
|
|
107
|
+
;;
|
|
108
|
+
*.java)
|
|
109
|
+
[ -f pom.xml ] || [ -f build.gradle ] && FRAMEWORK_OK=true
|
|
110
|
+
;;
|
|
111
|
+
*.go)
|
|
112
|
+
[ -f go.mod ] && FRAMEWORK_OK=true
|
|
113
|
+
;;
|
|
114
|
+
esac
|
|
115
|
+
|
|
116
|
+
if [ "$FRAMEWORK_OK" = false ]; then
|
|
117
|
+
echo "⚠ Test framework não detectado. Agent pode gerar testes mas execução exigirá setup."
|
|
118
|
+
fi
|
|
119
|
+
|
|
120
|
+
# PT-BR: avisar se gap-fill mas não há characterization existente
|
|
121
|
+
if [ "$GAP_FILL" = true ]; then
|
|
122
|
+
STEM=$(basename "$TARGET_FILE" | sed 's/\.[^.]*$//')
|
|
123
|
+
if ! find tests test __tests__ -path "*characterization*$STEM*" 2>/dev/null | head -1 | grep -q .; then
|
|
124
|
+
echo "⚠ --gap-fill solicitado mas nenhum characterization existente encontrado."
|
|
125
|
+
echo " Caindo em modo full-characterization."
|
|
126
|
+
GAP_FILL=false
|
|
127
|
+
fi
|
|
128
|
+
fi
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## 3. Dispatch para `legacy-characterizer`
|
|
132
|
+
|
|
133
|
+
```text
|
|
134
|
+
Task(
|
|
135
|
+
subagent_type="legacy-characterizer",
|
|
136
|
+
prompt="
|
|
137
|
+
target_file: ${TARGET_FILE}
|
|
138
|
+
${SYMBOL:+target_symbol: ${SYMBOL}}
|
|
139
|
+
min_inputs: ${MIN_INPUTS}
|
|
140
|
+
${FIXTURES_DIR:+payload_fixtures_dir: ${FIXTURES_DIR}}
|
|
141
|
+
${OUTPUT_DIR:+output_dir: ${OUTPUT_DIR}}
|
|
142
|
+
mutation_check: $([ "$NO_MUTATION" = true ] && echo false || echo true)
|
|
143
|
+
mode: $([ "$GAP_FILL" = true ] && echo gap-fill || echo full)
|
|
144
|
+
|
|
145
|
+
Aplicar skill legacy-characterization-tests. Etapas canônicas:
|
|
146
|
+
1. Análise estática: identificar exports, parâmetros, deps de I/O, side effects, branches
|
|
147
|
+
2. Aplicar 7 grupos de equivalência canônicos (ou substituir por payloads reais se fixtures-dir fornecido)
|
|
148
|
+
3. Construir fakes mínimos para deps de I/O (DB, HTTP, FS, clock, random, UUID)
|
|
149
|
+
4. Executar código real com cada input + fakes; capturar return + sideEffects
|
|
150
|
+
5. Sanitizar (PII, secrets, UUIDs voláteis) antes de salvar como snapshot
|
|
151
|
+
6. Imprimir warning de revisão obrigatória dos snapshots
|
|
152
|
+
7. Validar cobertura behavioral via mutation testing (Stryker/mutmut/Pitest)
|
|
153
|
+
8. Output: tests/characterization/<file_stem>/ + README.md
|
|
154
|
+
|
|
155
|
+
Modo gap-fill (se aplicável): caracterizar APENAS branches/paths não cobertos pela suite existente; NÃO recriar tests existentes.
|
|
156
|
+
"
|
|
157
|
+
)
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
## 4. Pós-output: revisão obrigatória + integração com gate
|
|
161
|
+
|
|
162
|
+
Após o agent completar:
|
|
163
|
+
|
|
164
|
+
```
|
|
165
|
+
═══════════════════════════════════════════════════════════
|
|
166
|
+
framework ► CARACTERIZAR ▸ tests/characterization/<file_stem>/
|
|
167
|
+
═══════════════════════════════════════════════════════════
|
|
168
|
+
|
|
169
|
+
[output do legacy-characterizer]
|
|
170
|
+
|
|
171
|
+
## ⚠ REVISÃO MANUAL OBRIGATÓRIA dos snapshots
|
|
172
|
+
|
|
173
|
+
Localização: tests/characterization/<file_stem>/__snapshots__/
|
|
174
|
+
|
|
175
|
+
Steps antes de commit:
|
|
176
|
+
1. Ler cada snapshot linha por linha
|
|
177
|
+
2. Marcar bugs conhecidos como comments inline (// BUG #X: ...)
|
|
178
|
+
3. Verificar redaction de PII/secrets adicional
|
|
179
|
+
4. Confirmar zero secrets/UUIDs locais expostos
|
|
180
|
+
|
|
181
|
+
Não commitar como `chore: characterize <file>` sem revisão.
|
|
182
|
+
|
|
183
|
+
## Próximos passos
|
|
184
|
+
|
|
185
|
+
1. **Revisar snapshots** — manualmente, todos os arquivos em __snapshots__/
|
|
186
|
+
2. **Rodar suite** — verificar todos verdes:
|
|
187
|
+
- JS/TS: `npm test -- tests/characterization/<file_stem>`
|
|
188
|
+
- Python: `pytest tests/characterization/<file_stem>`
|
|
189
|
+
- Java: `mvn test -Dtest='Characterization*'`
|
|
190
|
+
3. **Commit** — `chore: characterize <file_stem>` (PR separado, NÃO misturar com refactor)
|
|
191
|
+
4. **Re-auditar gate** — `/auditar-refactor <file>` deve agora retornar GO
|
|
192
|
+
5. **Iniciar refactor** — `/refactor-seguro <file>` (ou diretamente PR de refactor)
|
|
193
|
+
|
|
194
|
+
## Cross-suite
|
|
195
|
+
|
|
196
|
+
- Para sprout/wrap em vez de full characterization: `/refactor-seguro --mode=sprout <file>`
|
|
197
|
+
- Para safe-extract em vez de behavioral change: `/refactor-seguro --mode=safe-extract <file>`
|
|
198
|
+
- Para SLO protection durante refactor: `/instrumentar-fase` (v1.9 — captura behavioral diff)
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
</process>
|
|
202
|
+
|
|
203
|
+
<success_criteria>
|
|
204
|
+
- [ ] $ARGUMENTS parseados (target_file obrigatório, 7 flags opcionais)
|
|
205
|
+
- [ ] Pré-requisitos validados (framework de teste detectado; warning se não)
|
|
206
|
+
- [ ] `legacy-characterizer` invocado via `Task(subagent_type=...)` com prompt completo (8 etapas)
|
|
207
|
+
- [ ] `tests/characterization/<file_stem>/` criado com tests + snapshots + fakes + README
|
|
208
|
+
- [ ] Output forwarded transparentemente do agent
|
|
209
|
+
- [ ] Warning de revisão manual emitido (snapshots NÃO são committed automaticamente)
|
|
210
|
+
- [ ] Próximos passos sugeridos: revisar, rodar, commitar, re-auditar gate, iniciar refactor
|
|
211
|
+
- [ ] Modo gap-fill respeitado se solicitado e characterization existente encontrada
|
|
212
|
+
</success_criteria>
|