@luanpdd/kit-mcp 1.30.2 → 1.32.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/README.md +168 -168
- package/gates/agent-no-recursive-dispatch.md +84 -82
- package/kit/COMANDOS.md +138 -138
- package/kit/COMPATIBILITY.md +5 -0
- package/kit/README.md +76 -76
- package/kit/agents/advisor-researcher.md +107 -106
- package/kit/agents/ai-mutation-tester.md +1 -0
- package/kit/agents/assumptions-analyzer.md +108 -107
- package/kit/agents/audit-log-implementer.md +314 -313
- package/kit/agents/auditor-consistencia-isolamento.md +414 -413
- package/kit/agents/b2b-saas-architect.md +157 -156
- package/kit/agents/burn-rate-forecaster.md +1 -0
- package/kit/agents/cascading-failures-auditor.md +299 -298
- package/kit/agents/codebase-mapper.md +769 -768
- package/kit/agents/crm-pipeline-implementer.md +257 -256
- package/kit/agents/debugger.md +814 -813
- package/kit/agents/detector-tenant-quente.md +338 -337
- package/kit/agents/evolution-go-integrator.md +201 -200
- package/kit/agents/example-reviewer.md +22 -21
- package/kit/agents/executor.md +565 -564
- package/kit/agents/golden-signals-instrumenter.md +1 -0
- package/kit/agents/incident-investigator.md +1 -0
- package/kit/agents/integration-checker.md +201 -200
- package/kit/agents/invite-flow-implementer.md +190 -189
- package/kit/agents/legacy-characterizer.md +369 -368
- package/kit/agents/lgpd-compliance-auditor.md +296 -295
- package/kit/agents/load-shedding-instrumenter.md +1 -0
- package/kit/agents/multi-tenant-isolation-auditor.md +254 -253
- package/kit/agents/multi-tenant-rls-writer.md +341 -340
- package/kit/agents/nyquist-auditor.md +179 -178
- package/kit/agents/observability-coverage-auditor.md +316 -315
- package/kit/agents/observability-instrumenter.md +1 -0
- package/kit/agents/omm-auditor.md +1 -0
- package/kit/agents/org-onboarding-implementer.md +224 -223
- package/kit/agents/payload-capture-instrumenter.md +274 -273
- package/kit/agents/phase-researcher.md +697 -696
- package/kit/agents/plan-checker.md +273 -272
- package/kit/agents/planner.md +923 -922
- package/kit/agents/postmortem-writer.md +1 -0
- package/kit/agents/project-researcher.md +653 -652
- package/kit/agents/prr-conductor.md +1 -0
- package/kit/agents/refactor-safety-auditor.md +405 -404
- package/kit/agents/release-pipeline-auditor.md +1 -0
- package/kit/agents/research-synthesizer.md +246 -245
- package/kit/agents/roadmapper.md +678 -677
- package/kit/agents/schema-checker.md +1 -0
- package/kit/agents/seam-finder.md +360 -359
- package/kit/agents/shotgun-surgery-detector.md +350 -349
- package/kit/agents/slo-engineer.md +1 -0
- package/kit/agents/storytelling-analyst.md +1 -0
- package/kit/agents/supabase-architect.md +1 -0
- package/kit/agents/supabase-auth-bootstrapper.md +16 -1
- package/kit/agents/supabase-auth-hook-writer.md +418 -0
- package/kit/agents/supabase-branching-architect.md +563 -562
- package/kit/agents/supabase-cicd-pipeline-implementer.md +778 -777
- package/kit/agents/supabase-column-privileges-writer.md +400 -399
- package/kit/agents/supabase-edge-fn-tester.md +2 -1
- package/kit/agents/supabase-edge-fn-writer.md +2 -1
- package/kit/agents/supabase-mfa-implementer.md +439 -0
- package/kit/agents/supabase-migration-writer.md +386 -385
- package/kit/agents/supabase-oauth-server-implementer.md +507 -0
- package/kit/agents/supabase-rbac-implementer.md +393 -392
- package/kit/agents/supabase-realtime-implementer.md +364 -363
- package/kit/agents/supabase-rls-hardener.md +522 -521
- package/kit/agents/supabase-rls-writer.md +324 -323
- package/kit/agents/supabase-roles-implementer.md +356 -355
- package/kit/agents/supabase-social-auth-implementer.md +451 -0
- package/kit/agents/supabase-sso-saml-architect.md +549 -0
- package/kit/agents/supabase-storage-implementer.md +1 -0
- package/kit/agents/super-admin-implementer.md +282 -281
- package/kit/agents/toil-auditor.md +1 -0
- package/kit/agents/ui-auditor.md +438 -437
- package/kit/agents/ui-checker.md +303 -302
- package/kit/agents/ui-researcher.md +356 -355
- package/kit/agents/user-profiler.md +176 -175
- package/kit/agents/validador-evolucao-schema.md +336 -335
- package/kit/agents/verifier.md +729 -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 +21 -1
- 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 +100 -84
- 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 +29 -50
- package/kit/hooks/kit-router.cjs +137 -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/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-auth-hardening/SKILL.md +674 -0
- package/kit/skills/supabase-auth-hooks/SKILL.md +875 -0
- package/kit/skills/supabase-auth-methods/SKILL.md +486 -0
- package/kit/skills/supabase-auth-sessions/SKILL.md +579 -0
- package/kit/skills/supabase-auth-ssr/SKILL.md +60 -14
- 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 +1 -1
- package/kit/skills/supabase-edge-functions-auth/SKILL.md +1 -1
- package/kit/skills/supabase-edge-functions-limits/SKILL.md +1 -1
- package/kit/skills/supabase-edge-functions-mcp-server/SKILL.md +1 -1
- package/kit/skills/supabase-edge-functions-testing/SKILL.md +1 -1
- package/kit/skills/supabase-edge-runtime-builtins/SKILL.md +1 -1
- package/kit/skills/supabase-enterprise-sso-saml/SKILL.md +545 -0
- package/kit/skills/supabase-jwt-signing-keys/SKILL.md +399 -0
- package/kit/skills/supabase-mfa/SKILL.md +488 -0
- package/kit/skills/supabase-migration-repair/SKILL.md +823 -823
- package/kit/skills/supabase-migrations/SKILL.md +297 -297
- package/kit/skills/supabase-oauth-server/SKILL.md +537 -0
- 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 -460
- 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/supabase-social-oauth/SKILL.md +480 -0
- package/kit/skills/supabase-third-party-auth/SKILL.md +450 -0
- 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 +437 -418
- package/src/core/watch.js +121 -121
- package/src/mcp-server/index.js +794 -746
|
@@ -1,321 +1,321 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: refactor-seguro
|
|
3
|
-
description: Orquestrador de refactor seguro — chain canônico encontrar-seams → caracterizar → auditar-refactor → executar. Suporta modos --mode=full|sprout|safe-extract|override.
|
|
4
|
-
argument-hint: "<target_file> [--mode full|sprout|safe-extract|override] [--ticket REQ-N] [--reason \"...\"] [--skip-seams] [--skip-characterize]"
|
|
5
|
-
allowed-tools:
|
|
6
|
-
- Read
|
|
7
|
-
- Write
|
|
8
|
-
- Bash
|
|
9
|
-
- Grep
|
|
10
|
-
- Glob
|
|
11
|
-
- Task
|
|
12
|
-
- AskUserQuestion
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
<objective>
|
|
16
|
-
Orquestrar fluxo canônico de refactor seguro em código legado: (1) identificar seams + quebrar deps; (2) caracterizar comportamento; (3) auditar safety net; (4) executar refactor com cover-and-modify. Substitui o pattern edit-and-pray (cap 1 Feathers) por cover-and-modify, baseado em characterization tests como oracle.
|
|
17
|
-
|
|
18
|
-
**Chain padrão (`--mode=full`):**
|
|
19
|
-
|
|
20
|
-
```
|
|
21
|
-
seam-finder → legacy-characterizer → refactor-safety-auditor → executor
|
|
22
|
-
(se necessário) (sempre) (gate) (refactor real)
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
**Modos alternativos** (atalhos quando mudança não justifica chain completo):
|
|
26
|
-
- `--mode=sprout` — usa `legacy-sprout-wrap-techniques`; legado intocado, comportamento adicionado em sprout testado isoladamente
|
|
27
|
-
- `--mode=safe-extract` — refactor mecânico (rename, IDE-extract bloco contíguo); checklist signed-off + sem characterization
|
|
28
|
-
- `--mode=override` — bypass com audit trail (--ticket + --reason obrigatórios)
|
|
29
|
-
|
|
30
|
-
**Cria/Atualiza:**
|
|
31
|
-
- Em modo full: `.planning/SEAM-ANALYSIS.md`, `tests/characterization/<file_stem>/`, `.planning/REFACTOR-SAFETY.md`
|
|
32
|
-
- Em modo sprout: novo módulo + tests
|
|
33
|
-
- Em modo safe-extract: refactor commit + checklist em `.planning/SAFE-EXTRACT-<file>.md`
|
|
34
|
-
- Em modo override: `.planning/REFACTOR-SAFETY.md` com audit trail
|
|
35
|
-
|
|
36
|
-
**Após:** o user terminou refactor com confiança proporcional ao nível de safety net adotado.
|
|
37
|
-
</objective>
|
|
38
|
-
|
|
39
|
-
<context>
|
|
40
|
-
**Argumentos:**
|
|
41
|
-
- `<target_file>` — caminho do arquivo a refatorar — OBRIGATÓRIO
|
|
42
|
-
- `--mode <full|sprout|safe-extract|override>` — modo do orquestrador (default: `full`)
|
|
43
|
-
- `--ticket REQ-N` — ticket linkado (obrigatório com `--mode=override`)
|
|
44
|
-
- `--reason "<texto>"` — justificativa (obrigatória com `--mode=override`)
|
|
45
|
-
- `--skip-seams` — pular seam-finder (assume deps já controláveis)
|
|
46
|
-
- `--skip-characterize` — pular caracterizar (assume safety net já existe)
|
|
47
|
-
- `--symbol <name>` — escopo limitado a símbolo específico
|
|
48
|
-
- `--feature-description "<texto>"` — em mode=sprout, descreve feature a adicionar
|
|
49
|
-
|
|
50
|
-
**Modos detalhados:**
|
|
51
|
-
|
|
52
|
-
```
|
|
53
|
-
--mode=full (default)
|
|
54
|
-
=====================
|
|
55
|
-
1. /encontrar-seams <file> (se necessário, deps externas presentes)
|
|
56
|
-
2. Aplicar técnicas de break-deps (commits 1-N, manual ou via executor)
|
|
57
|
-
3. /caracterizar <file> (gera safety net)
|
|
58
|
-
4. /auditar-refactor <file> (gate retorna GO)
|
|
59
|
-
5. Refactor real (cover-and-modify, suite verde a cada commit)
|
|
60
|
-
6. Re-rodar suite final (regressão = 0)
|
|
61
|
-
|
|
62
|
-
--mode=sprout
|
|
63
|
-
=============
|
|
64
|
-
1. AskUserQuestion para feature description
|
|
65
|
-
2. Aplicar legacy-sprout-wrap-techniques
|
|
66
|
-
3. Gerar sprout method/class testável
|
|
67
|
-
4. Conectar ao legado em 1-2 linhas
|
|
68
|
-
5. Tests do sprout (100% cobertura no novo)
|
|
69
|
-
6. PR criado com TODO de débito técnico (legado ainda untested)
|
|
70
|
-
|
|
71
|
-
--mode=safe-extract
|
|
72
|
-
====================
|
|
73
|
-
1. Validar checklist canônico:
|
|
74
|
-
- Bloco a extrair é CONTÍGUO?
|
|
75
|
-
- Sem control flow saindo do meio (return/throw/break)?
|
|
76
|
-
- Variáveis lidas/escritas mapeadas?
|
|
77
|
-
- Sem mover lógica entre escopos?
|
|
78
|
-
2. Aplicar refactor IDE-assisted
|
|
79
|
-
3. Compilação verde + smoke run
|
|
80
|
-
4. PR com SAFE-EXTRACT-<file>.md como artefato
|
|
81
|
-
|
|
82
|
-
--mode=override
|
|
83
|
-
================
|
|
84
|
-
1. Validar --ticket E --reason
|
|
85
|
-
2. Auditoria do refactor-safety-auditor com flag override
|
|
86
|
-
3. Audit trail registrado em REFACTOR-SAFETY.md
|
|
87
|
-
4. Refactor pode prosseguir SEM characterization
|
|
88
|
-
5. Débito técnico documentado no ticket
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
**Exemplos:**
|
|
92
|
-
```
|
|
93
|
-
/refactor-seguro src/orders/handler.ts # full chain (recomendado)
|
|
94
|
-
/refactor-seguro src/orders/handler.ts --mode=sprout # adicionar feature sem tocar legado
|
|
95
|
-
/refactor-seguro src/orders/handler.ts --mode=safe-extract # rename/extract mecânico
|
|
96
|
-
/refactor-seguro src/orders/handler.ts --mode=override \
|
|
97
|
-
--ticket REQ-2026-Q2-1234 --reason "hot fix SEV1, char em REQ-...1235"
|
|
98
|
-
/refactor-seguro src/orders/handler.ts --skip-seams # deps já testáveis
|
|
99
|
-
/refactor-seguro src/orders/handler.ts --symbol processOrder # método específico
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
**Quando este comando é o caminho certo:**
|
|
103
|
-
- Você vai modificar arquivo > 200 linhas com cobertura < 60%
|
|
104
|
-
- Webhook/API/Edge Function precisa refactor (contrato externo)
|
|
105
|
-
- Equipe quer disciplina cover-and-modify em vez de edit-and-pray
|
|
106
|
-
- `/discutir-fase` ou `/planejar-fase` detectaram refactor intent
|
|
107
|
-
|
|
108
|
-
**Quando NÃO é o caminho:**
|
|
109
|
-
- Bug fix → use TDD direto (escrever test do comportamento correto, depois fix)
|
|
110
|
-
- Feature nova em código novo → use `/discutir-fase` + `/planejar-fase` normais
|
|
111
|
-
- Arquivo trivial → refactor inline sem ceremonial
|
|
112
|
-
</context>
|
|
113
|
-
|
|
114
|
-
<process>
|
|
115
|
-
|
|
116
|
-
## 1. Parsear argumentos + validações
|
|
117
|
-
|
|
118
|
-
```bash
|
|
119
|
-
TARGET_FILE=$(echo "$ARGUMENTS" | awk '{print $1}')
|
|
120
|
-
MODE=$(echo "$ARGUMENTS" | grep -oE -- '--mode[= ][^ ]+' | sed 's/--mode[= ]//')
|
|
121
|
-
TICKET=$(echo "$ARGUMENTS" | grep -oE -- '--ticket [^ ]+' | awk '{print $2}')
|
|
122
|
-
REASON=$(echo "$ARGUMENTS" | grep -oE -- '--reason "[^"]+"' | sed 's/--reason "\(.*\)"/\1/')
|
|
123
|
-
SYMBOL=$(echo "$ARGUMENTS" | grep -oE -- '--symbol [^ ]+' | awk '{print $2}')
|
|
124
|
-
FEATURE_DESC=$(echo "$ARGUMENTS" | grep -oE -- '--feature-description "[^"]+"' | sed 's/--feature-description "\(.*\)"/\1/')
|
|
125
|
-
SKIP_SEAMS=false
|
|
126
|
-
SKIP_CHAR=false
|
|
127
|
-
|
|
128
|
-
echo "$ARGUMENTS" | grep -qE -- '--skip-seams' && SKIP_SEAMS=true
|
|
129
|
-
echo "$ARGUMENTS" | grep -qE -- '--skip-characterize' && SKIP_CHAR=true
|
|
130
|
-
|
|
131
|
-
[ -z "$MODE" ] && MODE="full"
|
|
132
|
-
|
|
133
|
-
if [ -z "$TARGET_FILE" ]; then
|
|
134
|
-
echo "ERROR: target_file é obrigatório."
|
|
135
|
-
echo "Uso: /refactor-seguro <target_file> [opções]"
|
|
136
|
-
exit 1
|
|
137
|
-
fi
|
|
138
|
-
|
|
139
|
-
if [ ! -f "$TARGET_FILE" ]; then
|
|
140
|
-
echo "ERROR: arquivo não encontrado: $TARGET_FILE"
|
|
141
|
-
exit 1
|
|
142
|
-
fi
|
|
143
|
-
|
|
144
|
-
# PT-BR: validações por mode
|
|
145
|
-
case "$MODE" in
|
|
146
|
-
full|sprout|safe-extract|override) ;;
|
|
147
|
-
*)
|
|
148
|
-
echo "ERROR: --mode inválido: $MODE"
|
|
149
|
-
echo "Valores válidos: full, sprout, safe-extract, override"
|
|
150
|
-
exit 1
|
|
151
|
-
;;
|
|
152
|
-
esac
|
|
153
|
-
|
|
154
|
-
if [ "$MODE" = "override" ]; then
|
|
155
|
-
if [ -z "$TICKET" ] || [ -z "$REASON" ]; then
|
|
156
|
-
echo "ERROR: --mode=override requer --ticket REQ-N E --reason \"<texto>\"."
|
|
157
|
-
exit 1
|
|
158
|
-
fi
|
|
159
|
-
fi
|
|
160
|
-
```
|
|
161
|
-
|
|
162
|
-
## 2. Roteamento por mode
|
|
163
|
-
|
|
164
|
-
### Mode=full (default chain)
|
|
165
|
-
|
|
166
|
-
```text
|
|
167
|
-
Step 1 — Seam analysis (skip se --skip-seams)
|
|
168
|
-
/encontrar-seams ${TARGET_FILE} ${SYMBOL:+--symbol $SYMBOL}
|
|
169
|
-
→ produz .planning/SEAM-ANALYSIS.md
|
|
170
|
-
→ user aplica técnicas (commits 1-N)
|
|
171
|
-
|
|
172
|
-
Step 2 — Verificar suite verde após break-deps
|
|
173
|
-
Run test suite, abort se vermelho
|
|
174
|
-
|
|
175
|
-
Step 3 — Characterization (skip se --skip-characterize)
|
|
176
|
-
/caracterizar ${TARGET_FILE} ${SYMBOL:+--symbol $SYMBOL}
|
|
177
|
-
→ produz tests/characterization/<file_stem>/
|
|
178
|
-
→ user revisa snapshots manualmente
|
|
179
|
-
→ user commita como `chore: characterize <file_stem>`
|
|
180
|
-
|
|
181
|
-
Step 4 — Audit do safety net
|
|
182
|
-
/auditar-refactor ${TARGET_FILE} --change-kind=refactor
|
|
183
|
-
→ produz .planning/REFACTOR-SAFETY.md com veredito GO/WARN/BLOCK
|
|
184
|
-
→ SE BLOCK ainda → loop de volta para step 3 (com --gap-fill)
|
|
185
|
-
→ SE GO → prossegue
|
|
186
|
-
|
|
187
|
-
Step 5 — Refactor real
|
|
188
|
-
Delegar para executor OR prompt user para refactor manual
|
|
189
|
-
Após cada commit: rodar suite (verde)
|
|
190
|
-
Após cada commit: characterization tests (verdes — comportamento preservado)
|
|
191
|
-
|
|
192
|
-
Step 6 — Verificação final
|
|
193
|
-
Suite verde
|
|
194
|
-
Characterization VERDE (regressão = 0)
|
|
195
|
-
Mutation kill ≥ 70% (validar safety net)
|
|
196
|
-
PR pode ser aberto
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
### Mode=sprout
|
|
200
|
-
|
|
201
|
-
```text
|
|
202
|
-
Step 1 — Coletar feature description
|
|
203
|
-
Se $FEATURE_DESC vazio → AskUserQuestion:
|
|
204
|
-
"Descreva a feature a ser adicionada (será encapsulada em sprout):"
|
|
205
|
-
|
|
206
|
-
Step 2 — Aplicar legacy-sprout-wrap-techniques
|
|
207
|
-
Decision: sprout method vs sprout class vs wrap method vs wrap class
|
|
208
|
-
- feature ≤ 30 linhas, 1 responsabilidade → sprout method
|
|
209
|
-
- feature > 30 linhas OR multi-responsibility → sprout class
|
|
210
|
-
- feature transforma input/output do legado inteiro → wrap method
|
|
211
|
-
- feature atravessa N métodos da classe → wrap class
|
|
212
|
-
|
|
213
|
-
Step 3 — Gerar sprout
|
|
214
|
-
Criar arquivo novo (sprout module) com lógica testável
|
|
215
|
-
DI explícita para qualquer dep
|
|
216
|
-
|
|
217
|
-
Step 4 — Conectar ao legado em 1-2 linhas
|
|
218
|
-
Inserir chamada ao sprout no legado
|
|
219
|
-
Comment canônico: [legacy-debt #issue-N] sprout — <descrição>
|
|
220
|
-
|
|
221
|
-
Step 5 — Tests do sprout (100% cobertura)
|
|
222
|
-
Escrever 5+ tests cobrindo grupos de equivalência
|
|
223
|
-
Mutation testing no sprout (não no legado)
|
|
224
|
-
|
|
225
|
-
Step 6 — PR
|
|
226
|
-
Diff esperado: arquivo novo + 1-2 linhas no legado
|
|
227
|
-
README/CHANGELOG atualizado se aplicável
|
|
228
|
-
Ticket de débito técnico criado se ainda não existia
|
|
229
|
-
```
|
|
230
|
-
|
|
231
|
-
### Mode=safe-extract
|
|
232
|
-
|
|
233
|
-
```text
|
|
234
|
-
Step 1 — Validar checklist canônico
|
|
235
|
-
AskUserQuestion ou inline-confirm:
|
|
236
|
-
□ Bloco a extrair é CONTÍGUO? (não pode ter return/throw/break/continue saindo)
|
|
237
|
-
□ Variáveis lidas dentro mas declaradas fora → parâmetros (in)?
|
|
238
|
-
□ Variáveis escritas dentro mas usadas fora → return values (out)?
|
|
239
|
-
□ NÃO move lógica entre escopos? (sem move method)
|
|
240
|
-
□ NÃO muda control flow? (sem inverter ifs, sem early return novo)
|
|
241
|
-
□ NÃO modifica sintaxe além de extract/rename?
|
|
242
|
-
Qualquer NÃO → veto, voltar para mode=full
|
|
243
|
-
|
|
244
|
-
Step 2 — Identificar refactor IDE-assisted
|
|
245
|
-
Se Cursor/VS Code/IntelliJ disponível → usar Refactor → Extract Function/Method/Variable
|
|
246
|
-
Caso contrário → manual mas mecânico
|
|
247
|
-
|
|
248
|
-
Step 3 — Aplicar refactor (commits single-goal)
|
|
249
|
-
Após cada commit: compilação verde
|
|
250
|
-
Após cada commit: smoke run (qualquer comando que rodava antes)
|
|
251
|
-
|
|
252
|
-
Step 4 — Output checklist signed-off
|
|
253
|
-
Escrever .planning/SAFE-EXTRACT-<file_stem>.md com:
|
|
254
|
-
- Checklist canônico (todos os itens marcados)
|
|
255
|
-
- Lista de commits (cada um single-goal)
|
|
256
|
-
- Validação de comportamento (smoke verde)
|
|
257
|
-
```
|
|
258
|
-
|
|
259
|
-
### Mode=override
|
|
260
|
-
|
|
261
|
-
```text
|
|
262
|
-
Step 1 — Validar --ticket E --reason (já feito acima)
|
|
263
|
-
|
|
264
|
-
Step 2 — Auditar com flag override
|
|
265
|
-
/auditar-refactor ${TARGET_FILE} \
|
|
266
|
-
--change-kind=override \
|
|
267
|
-
--ticket ${TICKET} \
|
|
268
|
-
--reason "${REASON}"
|
|
269
|
-
→ audit trail registrado em REFACTOR-SAFETY.md
|
|
270
|
-
|
|
271
|
-
Step 3 — Refactor pode prosseguir
|
|
272
|
-
Output:
|
|
273
|
-
⚠ MODE=OVERRIDE — refactor sem characterization
|
|
274
|
-
Ticket: ${TICKET}
|
|
275
|
-
Reason: ${REASON}
|
|
276
|
-
Audit trail: .planning/REFACTOR-SAFETY.md
|
|
277
|
-
|
|
278
|
-
Você aceitou o débito técnico. Refactor pode iniciar AGORA.
|
|
279
|
-
Lembre-se: regressão silenciosa em prod é responsabilidade do owner do ticket.
|
|
280
|
-
```
|
|
281
|
-
|
|
282
|
-
## 3. Output canônico
|
|
283
|
-
|
|
284
|
-
```
|
|
285
|
-
═══════════════════════════════════════════════════════════
|
|
286
|
-
framework ► REFACTOR-SEGURO ▸ ${TARGET_FILE} (mode: ${MODE})
|
|
287
|
-
═══════════════════════════════════════════════════════════
|
|
288
|
-
|
|
289
|
-
[output específico do mode escolhido]
|
|
290
|
-
|
|
291
|
-
## Sumário do que foi feito
|
|
292
|
-
|
|
293
|
-
| Step | Ação | Output |
|
|
294
|
-
|---|---|---|
|
|
295
|
-
| 1 | Seam analysis | .planning/SEAM-ANALYSIS.md |
|
|
296
|
-
| 2 | Characterization | tests/characterization/<file_stem>/ |
|
|
297
|
-
| 3 | Safety audit | .planning/REFACTOR-SAFETY.md (veredito: GO) |
|
|
298
|
-
| 4 | Refactor | <commits sequenciais> |
|
|
299
|
-
| 5 | Verificação final | suite verde, mutation kill ≥ 70% |
|
|
300
|
-
|
|
301
|
-
## Cross-suite
|
|
302
|
-
|
|
303
|
-
- **/instrumentar-fase** (v1.9) — adicionar instrumentação para detectar regressão precoce em prod via golden signals
|
|
304
|
-
- **/burn-rate-status** (v1.9) — monitor SLO budget pós-deploy do refactor
|
|
305
|
-
- **/prr** (v1.10) — PRR Axe 5 (Change Management) — invoque após refactor para validar production-readiness
|
|
306
|
-
- **/postmortem** (v1.10) — pronto para usar se algo regredir em prod (audit trail completo via REFACTOR-SAFETY.md)
|
|
307
|
-
- **/concluir-marco** — gate `legacy-refactor-safety` (opt-in) bloqueia close se há refactors com mode=override sem ticket close
|
|
308
|
-
```
|
|
309
|
-
|
|
310
|
-
</process>
|
|
311
|
-
|
|
312
|
-
<success_criteria>
|
|
313
|
-
- [ ] $ARGUMENTS parseados (target_file obrigatório, --mode opcional com 4 valores)
|
|
314
|
-
- [ ] Validações por mode aplicadas (override → ticket + reason; safe-extract → checklist)
|
|
315
|
-
- [ ] Mode=full executa chain canônico (seam-finder → characterizer → safety-auditor → refactor)
|
|
316
|
-
- [ ] Mode=sprout aplica legacy-sprout-wrap-techniques + AskUserQuestion para feature
|
|
317
|
-
- [ ] Mode=safe-extract valida checklist + commits single-goal
|
|
318
|
-
- [ ] Mode=override registra audit trail completo via refactor-safety-auditor
|
|
319
|
-
- [ ] Steps 1-5 e cross-suite documentados no output
|
|
320
|
-
- [ ] Each sub-comando invocado via syntax canônica (`/encontrar-seams`, `/caracterizar`, `/auditar-refactor`)
|
|
321
|
-
</success_criteria>
|
|
1
|
+
---
|
|
2
|
+
name: refactor-seguro
|
|
3
|
+
description: Orquestrador de refactor seguro — chain canônico encontrar-seams → caracterizar → auditar-refactor → executar. Suporta modos --mode=full|sprout|safe-extract|override.
|
|
4
|
+
argument-hint: "<target_file> [--mode full|sprout|safe-extract|override] [--ticket REQ-N] [--reason \"...\"] [--skip-seams] [--skip-characterize]"
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- Read
|
|
7
|
+
- Write
|
|
8
|
+
- Bash
|
|
9
|
+
- Grep
|
|
10
|
+
- Glob
|
|
11
|
+
- Task
|
|
12
|
+
- AskUserQuestion
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
<objective>
|
|
16
|
+
Orquestrar fluxo canônico de refactor seguro em código legado: (1) identificar seams + quebrar deps; (2) caracterizar comportamento; (3) auditar safety net; (4) executar refactor com cover-and-modify. Substitui o pattern edit-and-pray (cap 1 Feathers) por cover-and-modify, baseado em characterization tests como oracle.
|
|
17
|
+
|
|
18
|
+
**Chain padrão (`--mode=full`):**
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
seam-finder → legacy-characterizer → refactor-safety-auditor → executor
|
|
22
|
+
(se necessário) (sempre) (gate) (refactor real)
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
**Modos alternativos** (atalhos quando mudança não justifica chain completo):
|
|
26
|
+
- `--mode=sprout` — usa `legacy-sprout-wrap-techniques`; legado intocado, comportamento adicionado em sprout testado isoladamente
|
|
27
|
+
- `--mode=safe-extract` — refactor mecânico (rename, IDE-extract bloco contíguo); checklist signed-off + sem characterization
|
|
28
|
+
- `--mode=override` — bypass com audit trail (--ticket + --reason obrigatórios)
|
|
29
|
+
|
|
30
|
+
**Cria/Atualiza:**
|
|
31
|
+
- Em modo full: `.planning/SEAM-ANALYSIS.md`, `tests/characterization/<file_stem>/`, `.planning/REFACTOR-SAFETY.md`
|
|
32
|
+
- Em modo sprout: novo módulo + tests
|
|
33
|
+
- Em modo safe-extract: refactor commit + checklist em `.planning/SAFE-EXTRACT-<file>.md`
|
|
34
|
+
- Em modo override: `.planning/REFACTOR-SAFETY.md` com audit trail
|
|
35
|
+
|
|
36
|
+
**Após:** o user terminou refactor com confiança proporcional ao nível de safety net adotado.
|
|
37
|
+
</objective>
|
|
38
|
+
|
|
39
|
+
<context>
|
|
40
|
+
**Argumentos:**
|
|
41
|
+
- `<target_file>` — caminho do arquivo a refatorar — OBRIGATÓRIO
|
|
42
|
+
- `--mode <full|sprout|safe-extract|override>` — modo do orquestrador (default: `full`)
|
|
43
|
+
- `--ticket REQ-N` — ticket linkado (obrigatório com `--mode=override`)
|
|
44
|
+
- `--reason "<texto>"` — justificativa (obrigatória com `--mode=override`)
|
|
45
|
+
- `--skip-seams` — pular seam-finder (assume deps já controláveis)
|
|
46
|
+
- `--skip-characterize` — pular caracterizar (assume safety net já existe)
|
|
47
|
+
- `--symbol <name>` — escopo limitado a símbolo específico
|
|
48
|
+
- `--feature-description "<texto>"` — em mode=sprout, descreve feature a adicionar
|
|
49
|
+
|
|
50
|
+
**Modos detalhados:**
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
--mode=full (default)
|
|
54
|
+
=====================
|
|
55
|
+
1. /encontrar-seams <file> (se necessário, deps externas presentes)
|
|
56
|
+
2. Aplicar técnicas de break-deps (commits 1-N, manual ou via executor)
|
|
57
|
+
3. /caracterizar <file> (gera safety net)
|
|
58
|
+
4. /auditar-refactor <file> (gate retorna GO)
|
|
59
|
+
5. Refactor real (cover-and-modify, suite verde a cada commit)
|
|
60
|
+
6. Re-rodar suite final (regressão = 0)
|
|
61
|
+
|
|
62
|
+
--mode=sprout
|
|
63
|
+
=============
|
|
64
|
+
1. AskUserQuestion para feature description
|
|
65
|
+
2. Aplicar legacy-sprout-wrap-techniques
|
|
66
|
+
3. Gerar sprout method/class testável
|
|
67
|
+
4. Conectar ao legado em 1-2 linhas
|
|
68
|
+
5. Tests do sprout (100% cobertura no novo)
|
|
69
|
+
6. PR criado com TODO de débito técnico (legado ainda untested)
|
|
70
|
+
|
|
71
|
+
--mode=safe-extract
|
|
72
|
+
====================
|
|
73
|
+
1. Validar checklist canônico:
|
|
74
|
+
- Bloco a extrair é CONTÍGUO?
|
|
75
|
+
- Sem control flow saindo do meio (return/throw/break)?
|
|
76
|
+
- Variáveis lidas/escritas mapeadas?
|
|
77
|
+
- Sem mover lógica entre escopos?
|
|
78
|
+
2. Aplicar refactor IDE-assisted
|
|
79
|
+
3. Compilação verde + smoke run
|
|
80
|
+
4. PR com SAFE-EXTRACT-<file>.md como artefato
|
|
81
|
+
|
|
82
|
+
--mode=override
|
|
83
|
+
================
|
|
84
|
+
1. Validar --ticket E --reason
|
|
85
|
+
2. Auditoria do refactor-safety-auditor com flag override
|
|
86
|
+
3. Audit trail registrado em REFACTOR-SAFETY.md
|
|
87
|
+
4. Refactor pode prosseguir SEM characterization
|
|
88
|
+
5. Débito técnico documentado no ticket
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
**Exemplos:**
|
|
92
|
+
```
|
|
93
|
+
/refactor-seguro src/orders/handler.ts # full chain (recomendado)
|
|
94
|
+
/refactor-seguro src/orders/handler.ts --mode=sprout # adicionar feature sem tocar legado
|
|
95
|
+
/refactor-seguro src/orders/handler.ts --mode=safe-extract # rename/extract mecânico
|
|
96
|
+
/refactor-seguro src/orders/handler.ts --mode=override \
|
|
97
|
+
--ticket REQ-2026-Q2-1234 --reason "hot fix SEV1, char em REQ-...1235"
|
|
98
|
+
/refactor-seguro src/orders/handler.ts --skip-seams # deps já testáveis
|
|
99
|
+
/refactor-seguro src/orders/handler.ts --symbol processOrder # método específico
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
**Quando este comando é o caminho certo:**
|
|
103
|
+
- Você vai modificar arquivo > 200 linhas com cobertura < 60%
|
|
104
|
+
- Webhook/API/Edge Function precisa refactor (contrato externo)
|
|
105
|
+
- Equipe quer disciplina cover-and-modify em vez de edit-and-pray
|
|
106
|
+
- `/discutir-fase` ou `/planejar-fase` detectaram refactor intent
|
|
107
|
+
|
|
108
|
+
**Quando NÃO é o caminho:**
|
|
109
|
+
- Bug fix → use TDD direto (escrever test do comportamento correto, depois fix)
|
|
110
|
+
- Feature nova em código novo → use `/discutir-fase` + `/planejar-fase` normais
|
|
111
|
+
- Arquivo trivial → refactor inline sem ceremonial
|
|
112
|
+
</context>
|
|
113
|
+
|
|
114
|
+
<process>
|
|
115
|
+
|
|
116
|
+
## 1. Parsear argumentos + validações
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
TARGET_FILE=$(echo "$ARGUMENTS" | awk '{print $1}')
|
|
120
|
+
MODE=$(echo "$ARGUMENTS" | grep -oE -- '--mode[= ][^ ]+' | sed 's/--mode[= ]//')
|
|
121
|
+
TICKET=$(echo "$ARGUMENTS" | grep -oE -- '--ticket [^ ]+' | awk '{print $2}')
|
|
122
|
+
REASON=$(echo "$ARGUMENTS" | grep -oE -- '--reason "[^"]+"' | sed 's/--reason "\(.*\)"/\1/')
|
|
123
|
+
SYMBOL=$(echo "$ARGUMENTS" | grep -oE -- '--symbol [^ ]+' | awk '{print $2}')
|
|
124
|
+
FEATURE_DESC=$(echo "$ARGUMENTS" | grep -oE -- '--feature-description "[^"]+"' | sed 's/--feature-description "\(.*\)"/\1/')
|
|
125
|
+
SKIP_SEAMS=false
|
|
126
|
+
SKIP_CHAR=false
|
|
127
|
+
|
|
128
|
+
echo "$ARGUMENTS" | grep -qE -- '--skip-seams' && SKIP_SEAMS=true
|
|
129
|
+
echo "$ARGUMENTS" | grep -qE -- '--skip-characterize' && SKIP_CHAR=true
|
|
130
|
+
|
|
131
|
+
[ -z "$MODE" ] && MODE="full"
|
|
132
|
+
|
|
133
|
+
if [ -z "$TARGET_FILE" ]; then
|
|
134
|
+
echo "ERROR: target_file é obrigatório."
|
|
135
|
+
echo "Uso: /refactor-seguro <target_file> [opções]"
|
|
136
|
+
exit 1
|
|
137
|
+
fi
|
|
138
|
+
|
|
139
|
+
if [ ! -f "$TARGET_FILE" ]; then
|
|
140
|
+
echo "ERROR: arquivo não encontrado: $TARGET_FILE"
|
|
141
|
+
exit 1
|
|
142
|
+
fi
|
|
143
|
+
|
|
144
|
+
# PT-BR: validações por mode
|
|
145
|
+
case "$MODE" in
|
|
146
|
+
full|sprout|safe-extract|override) ;;
|
|
147
|
+
*)
|
|
148
|
+
echo "ERROR: --mode inválido: $MODE"
|
|
149
|
+
echo "Valores válidos: full, sprout, safe-extract, override"
|
|
150
|
+
exit 1
|
|
151
|
+
;;
|
|
152
|
+
esac
|
|
153
|
+
|
|
154
|
+
if [ "$MODE" = "override" ]; then
|
|
155
|
+
if [ -z "$TICKET" ] || [ -z "$REASON" ]; then
|
|
156
|
+
echo "ERROR: --mode=override requer --ticket REQ-N E --reason \"<texto>\"."
|
|
157
|
+
exit 1
|
|
158
|
+
fi
|
|
159
|
+
fi
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
## 2. Roteamento por mode
|
|
163
|
+
|
|
164
|
+
### Mode=full (default chain)
|
|
165
|
+
|
|
166
|
+
```text
|
|
167
|
+
Step 1 — Seam analysis (skip se --skip-seams)
|
|
168
|
+
/encontrar-seams ${TARGET_FILE} ${SYMBOL:+--symbol $SYMBOL}
|
|
169
|
+
→ produz .planning/SEAM-ANALYSIS.md
|
|
170
|
+
→ user aplica técnicas (commits 1-N)
|
|
171
|
+
|
|
172
|
+
Step 2 — Verificar suite verde após break-deps
|
|
173
|
+
Run test suite, abort se vermelho
|
|
174
|
+
|
|
175
|
+
Step 3 — Characterization (skip se --skip-characterize)
|
|
176
|
+
/caracterizar ${TARGET_FILE} ${SYMBOL:+--symbol $SYMBOL}
|
|
177
|
+
→ produz tests/characterization/<file_stem>/
|
|
178
|
+
→ user revisa snapshots manualmente
|
|
179
|
+
→ user commita como `chore: characterize <file_stem>`
|
|
180
|
+
|
|
181
|
+
Step 4 — Audit do safety net
|
|
182
|
+
/auditar-refactor ${TARGET_FILE} --change-kind=refactor
|
|
183
|
+
→ produz .planning/REFACTOR-SAFETY.md com veredito GO/WARN/BLOCK
|
|
184
|
+
→ SE BLOCK ainda → loop de volta para step 3 (com --gap-fill)
|
|
185
|
+
→ SE GO → prossegue
|
|
186
|
+
|
|
187
|
+
Step 5 — Refactor real
|
|
188
|
+
Delegar para executor OR prompt user para refactor manual
|
|
189
|
+
Após cada commit: rodar suite (verde)
|
|
190
|
+
Após cada commit: characterization tests (verdes — comportamento preservado)
|
|
191
|
+
|
|
192
|
+
Step 6 — Verificação final
|
|
193
|
+
Suite verde
|
|
194
|
+
Characterization VERDE (regressão = 0)
|
|
195
|
+
Mutation kill ≥ 70% (validar safety net)
|
|
196
|
+
PR pode ser aberto
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
### Mode=sprout
|
|
200
|
+
|
|
201
|
+
```text
|
|
202
|
+
Step 1 — Coletar feature description
|
|
203
|
+
Se $FEATURE_DESC vazio → AskUserQuestion:
|
|
204
|
+
"Descreva a feature a ser adicionada (será encapsulada em sprout):"
|
|
205
|
+
|
|
206
|
+
Step 2 — Aplicar legacy-sprout-wrap-techniques
|
|
207
|
+
Decision: sprout method vs sprout class vs wrap method vs wrap class
|
|
208
|
+
- feature ≤ 30 linhas, 1 responsabilidade → sprout method
|
|
209
|
+
- feature > 30 linhas OR multi-responsibility → sprout class
|
|
210
|
+
- feature transforma input/output do legado inteiro → wrap method
|
|
211
|
+
- feature atravessa N métodos da classe → wrap class
|
|
212
|
+
|
|
213
|
+
Step 3 — Gerar sprout
|
|
214
|
+
Criar arquivo novo (sprout module) com lógica testável
|
|
215
|
+
DI explícita para qualquer dep
|
|
216
|
+
|
|
217
|
+
Step 4 — Conectar ao legado em 1-2 linhas
|
|
218
|
+
Inserir chamada ao sprout no legado
|
|
219
|
+
Comment canônico: [legacy-debt #issue-N] sprout — <descrição>
|
|
220
|
+
|
|
221
|
+
Step 5 — Tests do sprout (100% cobertura)
|
|
222
|
+
Escrever 5+ tests cobrindo grupos de equivalência
|
|
223
|
+
Mutation testing no sprout (não no legado)
|
|
224
|
+
|
|
225
|
+
Step 6 — PR
|
|
226
|
+
Diff esperado: arquivo novo + 1-2 linhas no legado
|
|
227
|
+
README/CHANGELOG atualizado se aplicável
|
|
228
|
+
Ticket de débito técnico criado se ainda não existia
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
### Mode=safe-extract
|
|
232
|
+
|
|
233
|
+
```text
|
|
234
|
+
Step 1 — Validar checklist canônico
|
|
235
|
+
AskUserQuestion ou inline-confirm:
|
|
236
|
+
□ Bloco a extrair é CONTÍGUO? (não pode ter return/throw/break/continue saindo)
|
|
237
|
+
□ Variáveis lidas dentro mas declaradas fora → parâmetros (in)?
|
|
238
|
+
□ Variáveis escritas dentro mas usadas fora → return values (out)?
|
|
239
|
+
□ NÃO move lógica entre escopos? (sem move method)
|
|
240
|
+
□ NÃO muda control flow? (sem inverter ifs, sem early return novo)
|
|
241
|
+
□ NÃO modifica sintaxe além de extract/rename?
|
|
242
|
+
Qualquer NÃO → veto, voltar para mode=full
|
|
243
|
+
|
|
244
|
+
Step 2 — Identificar refactor IDE-assisted
|
|
245
|
+
Se Cursor/VS Code/IntelliJ disponível → usar Refactor → Extract Function/Method/Variable
|
|
246
|
+
Caso contrário → manual mas mecânico
|
|
247
|
+
|
|
248
|
+
Step 3 — Aplicar refactor (commits single-goal)
|
|
249
|
+
Após cada commit: compilação verde
|
|
250
|
+
Após cada commit: smoke run (qualquer comando que rodava antes)
|
|
251
|
+
|
|
252
|
+
Step 4 — Output checklist signed-off
|
|
253
|
+
Escrever .planning/SAFE-EXTRACT-<file_stem>.md com:
|
|
254
|
+
- Checklist canônico (todos os itens marcados)
|
|
255
|
+
- Lista de commits (cada um single-goal)
|
|
256
|
+
- Validação de comportamento (smoke verde)
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
### Mode=override
|
|
260
|
+
|
|
261
|
+
```text
|
|
262
|
+
Step 1 — Validar --ticket E --reason (já feito acima)
|
|
263
|
+
|
|
264
|
+
Step 2 — Auditar com flag override
|
|
265
|
+
/auditar-refactor ${TARGET_FILE} \
|
|
266
|
+
--change-kind=override \
|
|
267
|
+
--ticket ${TICKET} \
|
|
268
|
+
--reason "${REASON}"
|
|
269
|
+
→ audit trail registrado em REFACTOR-SAFETY.md
|
|
270
|
+
|
|
271
|
+
Step 3 — Refactor pode prosseguir
|
|
272
|
+
Output:
|
|
273
|
+
⚠ MODE=OVERRIDE — refactor sem characterization
|
|
274
|
+
Ticket: ${TICKET}
|
|
275
|
+
Reason: ${REASON}
|
|
276
|
+
Audit trail: .planning/REFACTOR-SAFETY.md
|
|
277
|
+
|
|
278
|
+
Você aceitou o débito técnico. Refactor pode iniciar AGORA.
|
|
279
|
+
Lembre-se: regressão silenciosa em prod é responsabilidade do owner do ticket.
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
## 3. Output canônico
|
|
283
|
+
|
|
284
|
+
```
|
|
285
|
+
═══════════════════════════════════════════════════════════
|
|
286
|
+
framework ► REFACTOR-SEGURO ▸ ${TARGET_FILE} (mode: ${MODE})
|
|
287
|
+
═══════════════════════════════════════════════════════════
|
|
288
|
+
|
|
289
|
+
[output específico do mode escolhido]
|
|
290
|
+
|
|
291
|
+
## Sumário do que foi feito
|
|
292
|
+
|
|
293
|
+
| Step | Ação | Output |
|
|
294
|
+
|---|---|---|
|
|
295
|
+
| 1 | Seam analysis | .planning/SEAM-ANALYSIS.md |
|
|
296
|
+
| 2 | Characterization | tests/characterization/<file_stem>/ |
|
|
297
|
+
| 3 | Safety audit | .planning/REFACTOR-SAFETY.md (veredito: GO) |
|
|
298
|
+
| 4 | Refactor | <commits sequenciais> |
|
|
299
|
+
| 5 | Verificação final | suite verde, mutation kill ≥ 70% |
|
|
300
|
+
|
|
301
|
+
## Cross-suite
|
|
302
|
+
|
|
303
|
+
- **/instrumentar-fase** (v1.9) — adicionar instrumentação para detectar regressão precoce em prod via golden signals
|
|
304
|
+
- **/burn-rate-status** (v1.9) — monitor SLO budget pós-deploy do refactor
|
|
305
|
+
- **/prr** (v1.10) — PRR Axe 5 (Change Management) — invoque após refactor para validar production-readiness
|
|
306
|
+
- **/postmortem** (v1.10) — pronto para usar se algo regredir em prod (audit trail completo via REFACTOR-SAFETY.md)
|
|
307
|
+
- **/concluir-marco** — gate `legacy-refactor-safety` (opt-in) bloqueia close se há refactors com mode=override sem ticket close
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
</process>
|
|
311
|
+
|
|
312
|
+
<success_criteria>
|
|
313
|
+
- [ ] $ARGUMENTS parseados (target_file obrigatório, --mode opcional com 4 valores)
|
|
314
|
+
- [ ] Validações por mode aplicadas (override → ticket + reason; safe-extract → checklist)
|
|
315
|
+
- [ ] Mode=full executa chain canônico (seam-finder → characterizer → safety-auditor → refactor)
|
|
316
|
+
- [ ] Mode=sprout aplica legacy-sprout-wrap-techniques + AskUserQuestion para feature
|
|
317
|
+
- [ ] Mode=safe-extract valida checklist + commits single-goal
|
|
318
|
+
- [ ] Mode=override registra audit trail completo via refactor-safety-auditor
|
|
319
|
+
- [ ] Steps 1-5 e cross-suite documentados no output
|
|
320
|
+
- [ ] Each sub-comando invocado via syntax canônica (`/encontrar-seams`, `/caracterizar`, `/auditar-refactor`)
|
|
321
|
+
</success_criteria>
|