@luanpdd/kit-mcp 1.29.0 → 1.30.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 +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 +14 -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/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 +693 -693
|
@@ -1,197 +1,197 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: detectar-duplicacao
|
|
3
|
-
description: Invoca shotgun-surgery-detector — detecta duplicação sintática (jscpd/regex) + semântica (embeddings) cross-codebase, prioriza por size × frequency × extract feasibility.
|
|
4
|
-
argument-hint: "<root_dir> [--threshold 0.85] [--min-cluster-size 3] [--mode syntactic|semantic|both] [--provider openai|pgvector|auto]"
|
|
5
|
-
allowed-tools:
|
|
6
|
-
- Read
|
|
7
|
-
- Bash
|
|
8
|
-
- Grep
|
|
9
|
-
- Glob
|
|
10
|
-
- Task
|
|
11
|
-
- Write
|
|
12
|
-
- mcp__supabase__execute_sql
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
<objective>
|
|
16
|
-
Detectar **shotgun surgery** (mesma mudança/lógica espalhada em N lugares) cross-codebase via:
|
|
17
|
-
1. **Detecção sintática** — Feathers cap 21 original; jscpd/regex/AST
|
|
18
|
-
2. **Detecção semântica** — modernização 2026; embeddings + cosine similarity
|
|
19
|
-
|
|
20
|
-
Invoca o agente [`shotgun-surgery-detector`](../agents/shotgun-surgery-detector.md) que aplica a skill [`legacy-shotgun-surgery`](../skills/legacy-shotgun-surgery/SKILL.md). Output: clusters priorizados por (size × frequency × extract feasibility).
|
|
21
|
-
|
|
22
|
-
**Cria/Atualiza:**
|
|
23
|
-
- `.planning/SHOTGUN-SURGERY.md` — clusters detectados, top 10 priorizados, sugestões extract
|
|
24
|
-
|
|
25
|
-
**Após:** o user tem lista acionável de candidates a extract method/class para reduzir change points. PR sequence canônica: extract first → modify second.
|
|
26
|
-
</objective>
|
|
27
|
-
|
|
28
|
-
<context>
|
|
29
|
-
**Argumentos:**
|
|
30
|
-
- `<root_dir>` — diretório raiz a analisar (default: `.`)
|
|
31
|
-
- `--threshold 0.85` — cosine similarity mínima para semantic cluster (default: 0.85)
|
|
32
|
-
- `--min-cluster-size 3` — Rule of 3 (default: 3)
|
|
33
|
-
- `--min-block-lines 10` — tamanho mínimo de bloco para análise (default: 10)
|
|
34
|
-
- `--mode syntactic|semantic|both` — modo (default: `both`)
|
|
35
|
-
- `--provider openai|pgvector|auto` — embedding provider (default: auto-detect)
|
|
36
|
-
- `--output PATH` — caminho do output (default: `.planning/SHOTGUN-SURGERY.md`)
|
|
37
|
-
|
|
38
|
-
**Exemplos:**
|
|
39
|
-
```
|
|
40
|
-
/detectar-duplicacao src/ # both modes, defaults
|
|
41
|
-
/detectar-duplicacao . --mode=syntactic # só Feathers original (sem custo IA)
|
|
42
|
-
/detectar-duplicacao src/ --threshold 0.90 # mais conservador
|
|
43
|
-
/detectar-duplicacao src/ --min-cluster-size 5 # só clusters grandes
|
|
44
|
-
/detectar-duplicacao src/ --provider=pgvector # forçar self-hosted
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
**Pré-requisitos:**
|
|
48
|
-
- jscpd disponível para sintática (`npm install -g jscpd` se não)
|
|
49
|
-
- OPENAI_API_KEY OR pgvector setup para semântica (auto-detect)
|
|
50
|
-
- Node.js 20+ no path para chamadas embeddings
|
|
51
|
-
|
|
52
|
-
**Quando este comando é o caminho:**
|
|
53
|
-
- Você sente "estou mudando isso em N lugares" — use detector pra confirmar/quantificar
|
|
54
|
-
- Refactor proposto inclui extract method/class — detector confirma 3+ ocorrências
|
|
55
|
-
- Code review onde reviewer suspeita de DRY violations
|
|
56
|
-
- Pré-requisito para `/legacy refactor` quando shotgun é a real causa raiz
|
|
57
|
-
</context>
|
|
58
|
-
|
|
59
|
-
<process>
|
|
60
|
-
|
|
61
|
-
## 1. Parsear argumentos
|
|
62
|
-
|
|
63
|
-
```bash
|
|
64
|
-
ROOT_DIR=$(echo "$ARGUMENTS" | awk '{print $1}')
|
|
65
|
-
THRESHOLD=$(echo "$ARGUMENTS" | grep -oE -- '--threshold [0-9.]+' | awk '{print $2}')
|
|
66
|
-
MIN_CLUSTER=$(echo "$ARGUMENTS" | grep -oE -- '--min-cluster-size [0-9]+' | awk '{print $2}')
|
|
67
|
-
MIN_BLOCK=$(echo "$ARGUMENTS" | grep -oE -- '--min-block-lines [0-9]+' | awk '{print $2}')
|
|
68
|
-
MODE=$(echo "$ARGUMENTS" | grep -oE -- '--mode[= ][^ ]+' | sed 's/--mode[= ]//')
|
|
69
|
-
PROVIDER=$(echo "$ARGUMENTS" | grep -oE -- '--provider[= ][^ ]+' | sed 's/--provider[= ]//')
|
|
70
|
-
OUTPUT_PATH=$(echo "$ARGUMENTS" | grep -oE -- '--output [^ ]+' | awk '{print $2}')
|
|
71
|
-
|
|
72
|
-
[ -z "$ROOT_DIR" ] && ROOT_DIR="."
|
|
73
|
-
[ -z "$THRESHOLD" ] && THRESHOLD="0.85"
|
|
74
|
-
[ -z "$MIN_CLUSTER" ] && MIN_CLUSTER=3
|
|
75
|
-
[ -z "$MIN_BLOCK" ] && MIN_BLOCK=10
|
|
76
|
-
[ -z "$MODE" ] && MODE="both"
|
|
77
|
-
[ -z "$PROVIDER" ] && PROVIDER="auto"
|
|
78
|
-
[ -z "$OUTPUT_PATH" ] && OUTPUT_PATH=".planning/SHOTGUN-SURGERY.md"
|
|
79
|
-
|
|
80
|
-
if [ ! -d "$ROOT_DIR" ]; then
|
|
81
|
-
echo "ERROR: root_dir não encontrado: $ROOT_DIR"
|
|
82
|
-
exit 1
|
|
83
|
-
fi
|
|
84
|
-
|
|
85
|
-
mkdir -p "$(dirname "$OUTPUT_PATH")"
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
## 2. Detectar capabilities
|
|
89
|
-
|
|
90
|
-
```bash
|
|
91
|
-
HAS_JSCPD=false
|
|
92
|
-
command -v npx >/dev/null && npx jscpd --version >/dev/null 2>&1 && HAS_JSCPD=true
|
|
93
|
-
|
|
94
|
-
HAS_OPENAI=false
|
|
95
|
-
[ -n "$OPENAI_API_KEY" ] && HAS_OPENAI=true
|
|
96
|
-
|
|
97
|
-
HAS_PGVECTOR=false
|
|
98
|
-
if command -v psql >/dev/null && psql -tc "select 1 from pg_extension where extname='vector'" 2>/dev/null | grep -q 1; then
|
|
99
|
-
HAS_PGVECTOR=true
|
|
100
|
-
fi
|
|
101
|
-
|
|
102
|
-
# adjust mode if needed
|
|
103
|
-
if [ "$MODE" = "both" ] || [ "$MODE" = "semantic" ]; then
|
|
104
|
-
if [ "$HAS_OPENAI" = false ] && [ "$HAS_PGVECTOR" = false ]; then
|
|
105
|
-
echo "WARN: nenhum embedding provider disponível. Mode forçado para 'syntactic'."
|
|
106
|
-
MODE="syntactic"
|
|
107
|
-
fi
|
|
108
|
-
fi
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
## 3. Dispatch para `shotgun-surgery-detector`
|
|
112
|
-
|
|
113
|
-
```text
|
|
114
|
-
Task(
|
|
115
|
-
subagent_type="shotgun-surgery-detector",
|
|
116
|
-
prompt="
|
|
117
|
-
root_dir: ${ROOT_DIR}
|
|
118
|
-
threshold: ${THRESHOLD}
|
|
119
|
-
min_cluster_size: ${MIN_CLUSTER}
|
|
120
|
-
min_block_lines: ${MIN_BLOCK}
|
|
121
|
-
mode: ${MODE}
|
|
122
|
-
embedding_provider: ${PROVIDER}
|
|
123
|
-
output_path: ${OUTPUT_PATH}
|
|
124
|
-
|
|
125
|
-
Aplicar skill legacy-shotgun-surgery. Etapas:
|
|
126
|
-
1. Detecção sintática (sempre roda) — jscpd com min-lines + min-tokens
|
|
127
|
-
2. Detecção semântica (se mode=semantic|both) — embeddings + cosine similarity
|
|
128
|
-
3. Merge clusters (sintático + semântico); marker [SYNTACTIC] / [SEMANTIC] / [BOTH]
|
|
129
|
-
4. Priorização canônica — score = (cluster_size × avg_block_lines × frequency_factor) / extract_feasibility
|
|
130
|
-
5. Filter: cross-cutting noise (test files etc)
|
|
131
|
-
6. Escrever .planning/SHOTGUN-SURGERY.md com:
|
|
132
|
-
- Resumo (X clusters totais)
|
|
133
|
-
- Top 10 priorizados com diff visual
|
|
134
|
-
- Sugestões de extract com nome canônico
|
|
135
|
-
- Esforço estimado por cluster
|
|
136
|
-
"
|
|
137
|
-
)
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
## 4. Pós-output
|
|
141
|
-
|
|
142
|
-
```
|
|
143
|
-
═══════════════════════════════════════════════════════════
|
|
144
|
-
framework ► DETECTAR-DUPLICACAO ▸ ${OUTPUT_PATH}
|
|
145
|
-
═══════════════════════════════════════════════════════════
|
|
146
|
-
|
|
147
|
-
[output do shotgun-surgery-detector]
|
|
148
|
-
|
|
149
|
-
## ⚠ Validação obrigatória
|
|
150
|
-
|
|
151
|
-
Cada cluster — especialmente semantic — precisa de **revisão humana**:
|
|
152
|
-
- Falsos positivos comuns: 2 funções com nomes/comments similares mas implementações diferentes
|
|
153
|
-
- Variations entre ocorrências podem ser INTENCIONAIS (rounding diferente, encoding diferente)
|
|
154
|
-
- Extract uniformiza → mudança comportamental possível
|
|
155
|
-
|
|
156
|
-
NÃO auto-extract. Cluster aprovado por humano vira PR.
|
|
157
|
-
|
|
158
|
-
## Próximos passos por cluster aprovado
|
|
159
|
-
|
|
160
|
-
1. **Caracterizar cada ocorrência** (capturar comportamento atual):
|
|
161
|
-
```bash
|
|
162
|
-
/caracterizar <file-da-ocorrencia-1>
|
|
163
|
-
/caracterizar <file-da-ocorrencia-2>
|
|
164
|
-
...
|
|
165
|
-
```
|
|
166
|
-
2. **Validar outputs idênticos** OU documentar diferenças intencionais
|
|
167
|
-
3. **Escolher nome canônico** (resonates com TODAS as N localizações)
|
|
168
|
-
4. **Extract para 1 lugar** (criar utility/módulo compartilhado)
|
|
169
|
-
5. **Substituir cada ocorrência** (1 commit por substituição, revertível)
|
|
170
|
-
6. **Re-rodar detector** após PRs para verificar redução de clusters
|
|
171
|
-
|
|
172
|
-
## Custo (modo semantic)
|
|
173
|
-
|
|
174
|
-
- ~$<cost>/run com OpenAI text-embedding-3-small
|
|
175
|
-
- $0 com pgvector self-hosted
|
|
176
|
-
- 0 com mode=syntactic only
|
|
177
|
-
|
|
178
|
-
## Cross-suite
|
|
179
|
-
|
|
180
|
-
- **/storytelling** (v1.12) — story dos módulos identifica clusters mais provável
|
|
181
|
-
- **/caracterizar** (v1.12) — characterize cada ocorrência ANTES de extract
|
|
182
|
-
- **/legacy refactor** (v1.12) — chain canônico para extract
|
|
183
|
-
- **/auditar-marco** — rerodar shotgun detector trimestral revela acumulação de débito
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
</process>
|
|
187
|
-
|
|
188
|
-
<success_criteria>
|
|
189
|
-
- [ ] $ARGUMENTS parseados (root_dir opcional, defaults sensíveis)
|
|
190
|
-
- [ ] Capabilities detectadas (jscpd, OpenAI, pgvector)
|
|
191
|
-
- [ ] Mode degraded se provider de embedding indisponível
|
|
192
|
-
- [ ] `shotgun-surgery-detector` invocado via Task
|
|
193
|
-
- [ ] Output forwarded transparentemente
|
|
194
|
-
- [ ] Warning de validação manual obrigatória
|
|
195
|
-
- [ ] Próximos passos: characterize → validate → extract → substituir → re-detect
|
|
196
|
-
- [ ] Cross-references com /storytelling, /caracterizar, /legacy refactor
|
|
197
|
-
</success_criteria>
|
|
1
|
+
---
|
|
2
|
+
name: detectar-duplicacao
|
|
3
|
+
description: Invoca shotgun-surgery-detector — detecta duplicação sintática (jscpd/regex) + semântica (embeddings) cross-codebase, prioriza por size × frequency × extract feasibility.
|
|
4
|
+
argument-hint: "<root_dir> [--threshold 0.85] [--min-cluster-size 3] [--mode syntactic|semantic|both] [--provider openai|pgvector|auto]"
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- Read
|
|
7
|
+
- Bash
|
|
8
|
+
- Grep
|
|
9
|
+
- Glob
|
|
10
|
+
- Task
|
|
11
|
+
- Write
|
|
12
|
+
- mcp__supabase__execute_sql
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
<objective>
|
|
16
|
+
Detectar **shotgun surgery** (mesma mudança/lógica espalhada em N lugares) cross-codebase via:
|
|
17
|
+
1. **Detecção sintática** — Feathers cap 21 original; jscpd/regex/AST
|
|
18
|
+
2. **Detecção semântica** — modernização 2026; embeddings + cosine similarity
|
|
19
|
+
|
|
20
|
+
Invoca o agente [`shotgun-surgery-detector`](../agents/shotgun-surgery-detector.md) que aplica a skill [`legacy-shotgun-surgery`](../skills/legacy-shotgun-surgery/SKILL.md). Output: clusters priorizados por (size × frequency × extract feasibility).
|
|
21
|
+
|
|
22
|
+
**Cria/Atualiza:**
|
|
23
|
+
- `.planning/SHOTGUN-SURGERY.md` — clusters detectados, top 10 priorizados, sugestões extract
|
|
24
|
+
|
|
25
|
+
**Após:** o user tem lista acionável de candidates a extract method/class para reduzir change points. PR sequence canônica: extract first → modify second.
|
|
26
|
+
</objective>
|
|
27
|
+
|
|
28
|
+
<context>
|
|
29
|
+
**Argumentos:**
|
|
30
|
+
- `<root_dir>` — diretório raiz a analisar (default: `.`)
|
|
31
|
+
- `--threshold 0.85` — cosine similarity mínima para semantic cluster (default: 0.85)
|
|
32
|
+
- `--min-cluster-size 3` — Rule of 3 (default: 3)
|
|
33
|
+
- `--min-block-lines 10` — tamanho mínimo de bloco para análise (default: 10)
|
|
34
|
+
- `--mode syntactic|semantic|both` — modo (default: `both`)
|
|
35
|
+
- `--provider openai|pgvector|auto` — embedding provider (default: auto-detect)
|
|
36
|
+
- `--output PATH` — caminho do output (default: `.planning/SHOTGUN-SURGERY.md`)
|
|
37
|
+
|
|
38
|
+
**Exemplos:**
|
|
39
|
+
```
|
|
40
|
+
/detectar-duplicacao src/ # both modes, defaults
|
|
41
|
+
/detectar-duplicacao . --mode=syntactic # só Feathers original (sem custo IA)
|
|
42
|
+
/detectar-duplicacao src/ --threshold 0.90 # mais conservador
|
|
43
|
+
/detectar-duplicacao src/ --min-cluster-size 5 # só clusters grandes
|
|
44
|
+
/detectar-duplicacao src/ --provider=pgvector # forçar self-hosted
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**Pré-requisitos:**
|
|
48
|
+
- jscpd disponível para sintática (`npm install -g jscpd` se não)
|
|
49
|
+
- OPENAI_API_KEY OR pgvector setup para semântica (auto-detect)
|
|
50
|
+
- Node.js 20+ no path para chamadas embeddings
|
|
51
|
+
|
|
52
|
+
**Quando este comando é o caminho:**
|
|
53
|
+
- Você sente "estou mudando isso em N lugares" — use detector pra confirmar/quantificar
|
|
54
|
+
- Refactor proposto inclui extract method/class — detector confirma 3+ ocorrências
|
|
55
|
+
- Code review onde reviewer suspeita de DRY violations
|
|
56
|
+
- Pré-requisito para `/legacy refactor` quando shotgun é a real causa raiz
|
|
57
|
+
</context>
|
|
58
|
+
|
|
59
|
+
<process>
|
|
60
|
+
|
|
61
|
+
## 1. Parsear argumentos
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
ROOT_DIR=$(echo "$ARGUMENTS" | awk '{print $1}')
|
|
65
|
+
THRESHOLD=$(echo "$ARGUMENTS" | grep -oE -- '--threshold [0-9.]+' | awk '{print $2}')
|
|
66
|
+
MIN_CLUSTER=$(echo "$ARGUMENTS" | grep -oE -- '--min-cluster-size [0-9]+' | awk '{print $2}')
|
|
67
|
+
MIN_BLOCK=$(echo "$ARGUMENTS" | grep -oE -- '--min-block-lines [0-9]+' | awk '{print $2}')
|
|
68
|
+
MODE=$(echo "$ARGUMENTS" | grep -oE -- '--mode[= ][^ ]+' | sed 's/--mode[= ]//')
|
|
69
|
+
PROVIDER=$(echo "$ARGUMENTS" | grep -oE -- '--provider[= ][^ ]+' | sed 's/--provider[= ]//')
|
|
70
|
+
OUTPUT_PATH=$(echo "$ARGUMENTS" | grep -oE -- '--output [^ ]+' | awk '{print $2}')
|
|
71
|
+
|
|
72
|
+
[ -z "$ROOT_DIR" ] && ROOT_DIR="."
|
|
73
|
+
[ -z "$THRESHOLD" ] && THRESHOLD="0.85"
|
|
74
|
+
[ -z "$MIN_CLUSTER" ] && MIN_CLUSTER=3
|
|
75
|
+
[ -z "$MIN_BLOCK" ] && MIN_BLOCK=10
|
|
76
|
+
[ -z "$MODE" ] && MODE="both"
|
|
77
|
+
[ -z "$PROVIDER" ] && PROVIDER="auto"
|
|
78
|
+
[ -z "$OUTPUT_PATH" ] && OUTPUT_PATH=".planning/SHOTGUN-SURGERY.md"
|
|
79
|
+
|
|
80
|
+
if [ ! -d "$ROOT_DIR" ]; then
|
|
81
|
+
echo "ERROR: root_dir não encontrado: $ROOT_DIR"
|
|
82
|
+
exit 1
|
|
83
|
+
fi
|
|
84
|
+
|
|
85
|
+
mkdir -p "$(dirname "$OUTPUT_PATH")"
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## 2. Detectar capabilities
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
HAS_JSCPD=false
|
|
92
|
+
command -v npx >/dev/null && npx jscpd --version >/dev/null 2>&1 && HAS_JSCPD=true
|
|
93
|
+
|
|
94
|
+
HAS_OPENAI=false
|
|
95
|
+
[ -n "$OPENAI_API_KEY" ] && HAS_OPENAI=true
|
|
96
|
+
|
|
97
|
+
HAS_PGVECTOR=false
|
|
98
|
+
if command -v psql >/dev/null && psql -tc "select 1 from pg_extension where extname='vector'" 2>/dev/null | grep -q 1; then
|
|
99
|
+
HAS_PGVECTOR=true
|
|
100
|
+
fi
|
|
101
|
+
|
|
102
|
+
# adjust mode if needed
|
|
103
|
+
if [ "$MODE" = "both" ] || [ "$MODE" = "semantic" ]; then
|
|
104
|
+
if [ "$HAS_OPENAI" = false ] && [ "$HAS_PGVECTOR" = false ]; then
|
|
105
|
+
echo "WARN: nenhum embedding provider disponível. Mode forçado para 'syntactic'."
|
|
106
|
+
MODE="syntactic"
|
|
107
|
+
fi
|
|
108
|
+
fi
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## 3. Dispatch para `shotgun-surgery-detector`
|
|
112
|
+
|
|
113
|
+
```text
|
|
114
|
+
Task(
|
|
115
|
+
subagent_type="shotgun-surgery-detector",
|
|
116
|
+
prompt="
|
|
117
|
+
root_dir: ${ROOT_DIR}
|
|
118
|
+
threshold: ${THRESHOLD}
|
|
119
|
+
min_cluster_size: ${MIN_CLUSTER}
|
|
120
|
+
min_block_lines: ${MIN_BLOCK}
|
|
121
|
+
mode: ${MODE}
|
|
122
|
+
embedding_provider: ${PROVIDER}
|
|
123
|
+
output_path: ${OUTPUT_PATH}
|
|
124
|
+
|
|
125
|
+
Aplicar skill legacy-shotgun-surgery. Etapas:
|
|
126
|
+
1. Detecção sintática (sempre roda) — jscpd com min-lines + min-tokens
|
|
127
|
+
2. Detecção semântica (se mode=semantic|both) — embeddings + cosine similarity
|
|
128
|
+
3. Merge clusters (sintático + semântico); marker [SYNTACTIC] / [SEMANTIC] / [BOTH]
|
|
129
|
+
4. Priorização canônica — score = (cluster_size × avg_block_lines × frequency_factor) / extract_feasibility
|
|
130
|
+
5. Filter: cross-cutting noise (test files etc)
|
|
131
|
+
6. Escrever .planning/SHOTGUN-SURGERY.md com:
|
|
132
|
+
- Resumo (X clusters totais)
|
|
133
|
+
- Top 10 priorizados com diff visual
|
|
134
|
+
- Sugestões de extract com nome canônico
|
|
135
|
+
- Esforço estimado por cluster
|
|
136
|
+
"
|
|
137
|
+
)
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## 4. Pós-output
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
═══════════════════════════════════════════════════════════
|
|
144
|
+
framework ► DETECTAR-DUPLICACAO ▸ ${OUTPUT_PATH}
|
|
145
|
+
═══════════════════════════════════════════════════════════
|
|
146
|
+
|
|
147
|
+
[output do shotgun-surgery-detector]
|
|
148
|
+
|
|
149
|
+
## ⚠ Validação obrigatória
|
|
150
|
+
|
|
151
|
+
Cada cluster — especialmente semantic — precisa de **revisão humana**:
|
|
152
|
+
- Falsos positivos comuns: 2 funções com nomes/comments similares mas implementações diferentes
|
|
153
|
+
- Variations entre ocorrências podem ser INTENCIONAIS (rounding diferente, encoding diferente)
|
|
154
|
+
- Extract uniformiza → mudança comportamental possível
|
|
155
|
+
|
|
156
|
+
NÃO auto-extract. Cluster aprovado por humano vira PR.
|
|
157
|
+
|
|
158
|
+
## Próximos passos por cluster aprovado
|
|
159
|
+
|
|
160
|
+
1. **Caracterizar cada ocorrência** (capturar comportamento atual):
|
|
161
|
+
```bash
|
|
162
|
+
/caracterizar <file-da-ocorrencia-1>
|
|
163
|
+
/caracterizar <file-da-ocorrencia-2>
|
|
164
|
+
...
|
|
165
|
+
```
|
|
166
|
+
2. **Validar outputs idênticos** OU documentar diferenças intencionais
|
|
167
|
+
3. **Escolher nome canônico** (resonates com TODAS as N localizações)
|
|
168
|
+
4. **Extract para 1 lugar** (criar utility/módulo compartilhado)
|
|
169
|
+
5. **Substituir cada ocorrência** (1 commit por substituição, revertível)
|
|
170
|
+
6. **Re-rodar detector** após PRs para verificar redução de clusters
|
|
171
|
+
|
|
172
|
+
## Custo (modo semantic)
|
|
173
|
+
|
|
174
|
+
- ~$<cost>/run com OpenAI text-embedding-3-small
|
|
175
|
+
- $0 com pgvector self-hosted
|
|
176
|
+
- 0 com mode=syntactic only
|
|
177
|
+
|
|
178
|
+
## Cross-suite
|
|
179
|
+
|
|
180
|
+
- **/storytelling** (v1.12) — story dos módulos identifica clusters mais provável
|
|
181
|
+
- **/caracterizar** (v1.12) — characterize cada ocorrência ANTES de extract
|
|
182
|
+
- **/legacy refactor** (v1.12) — chain canônico para extract
|
|
183
|
+
- **/auditar-marco** — rerodar shotgun detector trimestral revela acumulação de débito
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
</process>
|
|
187
|
+
|
|
188
|
+
<success_criteria>
|
|
189
|
+
- [ ] $ARGUMENTS parseados (root_dir opcional, defaults sensíveis)
|
|
190
|
+
- [ ] Capabilities detectadas (jscpd, OpenAI, pgvector)
|
|
191
|
+
- [ ] Mode degraded se provider de embedding indisponível
|
|
192
|
+
- [ ] `shotgun-surgery-detector` invocado via Task
|
|
193
|
+
- [ ] Output forwarded transparentemente
|
|
194
|
+
- [ ] Warning de validação manual obrigatória
|
|
195
|
+
- [ ] Próximos passos: characterize → validate → extract → substituir → re-detect
|
|
196
|
+
- [ ] Cross-references com /storytelling, /caracterizar, /legacy refactor
|
|
197
|
+
</success_criteria>
|