@luanpdd/kit-mcp 1.10.0 → 1.12.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.
Files changed (63) hide show
  1. package/gates/ai-prompt-stability.md +120 -0
  2. package/gates/legacy-refactor-safety.md +178 -0
  3. package/gates/observability-coverage.md +151 -0
  4. package/gates/release-pipeline-policy.md +132 -0
  5. package/kit/COMANDOS.md +15 -0
  6. package/kit/agents/ai-mutation-tester.md +298 -0
  7. package/kit/agents/cascading-failures-auditor.md +306 -0
  8. package/kit/agents/executor.md +13 -0
  9. package/kit/agents/legacy-characterizer.md +378 -0
  10. package/kit/agents/load-shedding-instrumenter.md +297 -0
  11. package/kit/agents/observability-coverage-auditor.md +325 -0
  12. package/kit/agents/omm-auditor.md +47 -0
  13. package/kit/agents/payload-capture-instrumenter.md +283 -0
  14. package/kit/agents/planner.md +29 -0
  15. package/kit/agents/prr-conductor.md +8 -0
  16. package/kit/agents/refactor-safety-auditor.md +414 -0
  17. package/kit/agents/release-pipeline-auditor.md +360 -0
  18. package/kit/agents/seam-finder.md +367 -0
  19. package/kit/agents/shotgun-surgery-detector.md +359 -0
  20. package/kit/agents/storytelling-analyst.md +309 -0
  21. package/kit/agents/supabase-edge-fn-writer.md +12 -0
  22. package/kit/agents/verifier.md +30 -0
  23. package/kit/commands/auditar-cascading.md +111 -0
  24. package/kit/commands/auditar-marco.md +44 -1
  25. package/kit/commands/auditar-observabilidade-cobertura.md +183 -0
  26. package/kit/commands/auditar-refactor.md +219 -0
  27. package/kit/commands/auditar-release.md +109 -0
  28. package/kit/commands/capturar-payloads.md +193 -0
  29. package/kit/commands/caracterizar-prompt.md +195 -0
  30. package/kit/commands/caracterizar.md +212 -0
  31. package/kit/commands/concluir-marco.md +41 -1
  32. package/kit/commands/detectar-duplicacao.md +197 -0
  33. package/kit/commands/discutir-fase.md +41 -0
  34. package/kit/commands/encontrar-seams.md +136 -0
  35. package/kit/commands/forense.md +40 -1
  36. package/kit/commands/legacy.md +263 -0
  37. package/kit/commands/load-shedding.md +117 -0
  38. package/kit/commands/observabilidade.md +2 -0
  39. package/kit/commands/refactor-seguro.md +321 -0
  40. package/kit/commands/sre.md +3 -0
  41. package/kit/commands/storytelling.md +179 -0
  42. package/kit/skills/_shared-legacy/glossary.md +389 -0
  43. package/kit/skills/_shared-sre/glossary.md +139 -0
  44. package/kit/skills/ai-prompt-characterization/SKILL.md +335 -0
  45. package/kit/skills/cascading-failures/SKILL.md +307 -0
  46. package/kit/skills/four-golden-signals/SKILL.md +17 -0
  47. package/kit/skills/hermetic-builds/SKILL.md +323 -0
  48. package/kit/skills/legacy-api-only-applications/SKILL.md +358 -0
  49. package/kit/skills/legacy-characterization-tests/SKILL.md +330 -0
  50. package/kit/skills/legacy-effect-analysis/SKILL.md +331 -0
  51. package/kit/skills/legacy-extract-class/SKILL.md +203 -0
  52. package/kit/skills/legacy-monster-methods/SKILL.md +444 -0
  53. package/kit/skills/legacy-programming-by-difference/SKILL.md +252 -0
  54. package/kit/skills/legacy-seams-and-test-harness/SKILL.md +460 -0
  55. package/kit/skills/legacy-shotgun-surgery/SKILL.md +286 -0
  56. package/kit/skills/legacy-sprout-wrap-techniques/SKILL.md +434 -0
  57. package/kit/skills/legacy-storytelling-naked-crc/SKILL.md +270 -0
  58. package/kit/skills/llm-as-dependency/SKILL.md +436 -0
  59. package/kit/skills/load-shedding-graceful-degradation/SKILL.md +396 -0
  60. package/kit/skills/pre-refactor-characterization/SKILL.md +421 -0
  61. package/kit/skills/release-engineering/SKILL.md +367 -0
  62. package/kit/skills/retry-strategies/SKILL.md +372 -0
  63. package/package.json +2 -2
@@ -0,0 +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. Substitui edit-and-pray por cover-and-modify.
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>
@@ -51,6 +51,9 @@ Agents disponíveis (Phase 37):
51
51
  | `postmortem` | `pm`, `post-mortem` | `postmortem-writer` | 15 |
52
52
  | `prr` | `production-readiness`, `readiness-review` | `prr-conductor` | 32 |
53
53
  | `risk-budget` | `budget`, `risk`, `continuum` | (comando direto — `/risk-budget`) | 3 |
54
+ | `cascading` | `cascade`, `cascading-failures`, `auditar-cascading` | `cascading-failures-auditor` | 22 (v1.11) |
55
+ | `load-shedding` | `shed`, `load-shed`, `loadshedding` | `load-shedding-instrumenter` | 22 (v1.11) |
56
+ | `release` | `auditar-release`, `release-audit`, `pipeline` | `release-pipeline-auditor` | 8 (v1.11) |
54
57
  | `help` | `ajuda`, `?` | exibe esta tabela inline | — |
55
58
 
56
59
  **Roteamento de flags por subcomando:**
@@ -0,0 +1,179 @@
1
+ ---
2
+ name: storytelling
3
+ description: Invoca storytelling-analyst — IA gera mental model de codebase desconhecido (story 5 frases + inventário + naked CRC + responsibility hot spots + extract candidates). Modernização cap 16-17 Feathers para era IA.
4
+ argument-hint: "<target_dir_or_file> [--depth deep|shallow] [--include-tests] [--output PATH]"
5
+ allowed-tools:
6
+ - Read
7
+ - Bash
8
+ - Grep
9
+ - Glob
10
+ - Task
11
+ - Write
12
+ ---
13
+
14
+ <objective>
15
+ Gerar **mental model de codebase desconhecido** via IA — story em 5 frases + inventário de classes/funções + naked CRC sketch + responsibility hot spots + extract candidates priorizados. Invoca o agente [`storytelling-analyst`](../agents/storytelling-analyst.md) que aplica a skill [`legacy-storytelling-naked-crc`](../skills/legacy-storytelling-naked-crc/SKILL.md) — caps 16-17 do livro Feathers + modernização IA primeiro draft.
16
+
17
+ **Cria/Atualiza:**
18
+ - `.planning/storytelling/<module-slug>.md` — relatório com story + inventário + CRC + hot spots
19
+
20
+ **Após:** o user reduz tempo de comprehension de codebase desconhecido de 4-8h (leitura cega manual) para 30 min (revisão informada de IA primeiro draft). Pré-requisito recomendado para `/encontrar-seams` ou `/refactor-seguro` em código novo.
21
+ </objective>
22
+
23
+ <context>
24
+ **Argumentos:**
25
+ - `<target_dir_or_file>` — diretório ou arquivo a analisar — OBRIGATÓRIO
26
+ - `--depth deep|shallow` — `shallow` = só story + inventário; `deep` = + CRC + hot spots + extract candidates (default: deep)
27
+ - `--include-tests` — incluir tests no scope (default: false; distinção comportamento prod vs harness)
28
+ - `--max-lines N` — limite de leitura (default: 1500; agent quebra em chunks se maior)
29
+ - `--output PATH` — caminho do output (default: `.planning/storytelling/<slug>.md`)
30
+
31
+ **Exemplos:**
32
+ ```
33
+ /storytelling src/orders/ # diretório completo
34
+ /storytelling src/orders/OrderService.ts # arquivo específico
35
+ /storytelling src/orders/ --depth=shallow # rápido — só story + inventário
36
+ /storytelling src/orders/ --include-tests # incluir tests no scope
37
+ /storytelling supabase/functions/process-payments/ # Edge Function module
38
+ ```
39
+
40
+ **Quando este comando é o caminho:**
41
+ - Você herdou módulo desconhecido (onboarding, transferência, post-acquisition)
42
+ - Vai modificar código que não conhece
43
+ - Pré-requisito de `/encontrar-seams` ou `/refactor-seguro`
44
+ - Precisa identificar candidates de extract class antes de planejar refactor
45
+ - Code review onde reviewer não conhece o módulo
46
+
47
+ **Quando NÃO é o caminho:**
48
+ - Codebase < 200 linhas — leitura direta é mais rápida
49
+ - Você já trabalhou no módulo nas últimas 2 semanas — mental model fresco
50
+ - Mudança trivial (typo, comment) — overhead > valor
51
+ </context>
52
+
53
+ <process>
54
+
55
+ ## 1. Parsear argumentos
56
+
57
+ ```bash
58
+ TARGET=$(echo "$ARGUMENTS" | awk '{print $1}')
59
+ DEPTH=$(echo "$ARGUMENTS" | grep -oE -- '--depth[= ][^ ]+' | sed 's/--depth[= ]//')
60
+ MAX_LINES=$(echo "$ARGUMENTS" | grep -oE -- '--max-lines [0-9]+' | awk '{print $2}')
61
+ OUTPUT_PATH=$(echo "$ARGUMENTS" | grep -oE -- '--output [^ ]+' | awk '{print $2}')
62
+ INCLUDE_TESTS=false
63
+ echo "$ARGUMENTS" | grep -qE -- '--include-tests' && INCLUDE_TESTS=true
64
+
65
+ [ -z "$DEPTH" ] && DEPTH="deep"
66
+ [ -z "$MAX_LINES" ] && MAX_LINES=1500
67
+
68
+ if [ -z "$TARGET" ]; then
69
+ echo "ERROR: target obrigatório (arquivo ou diretório)"
70
+ exit 1
71
+ fi
72
+
73
+ if [ ! -e "$TARGET" ]; then
74
+ echo "ERROR: target não encontrado: $TARGET"
75
+ exit 1
76
+ fi
77
+
78
+ # auto-output path
79
+ if [ -z "$OUTPUT_PATH" ]; then
80
+ SLUG=$(basename "$(realpath "$TARGET")" | sed 's/[^a-zA-Z0-9]/-/g')
81
+ OUTPUT_PATH=".planning/storytelling/${SLUG}.md"
82
+ fi
83
+
84
+ mkdir -p "$(dirname "$OUTPUT_PATH")"
85
+ ```
86
+
87
+ ## 2. Detectar tamanho
88
+
89
+ ```bash
90
+ if [ -f "$TARGET" ]; then
91
+ TOTAL_LINES=$(wc -l < "$TARGET")
92
+ elif [ -d "$TARGET" ]; then
93
+ TOTAL_LINES=$(find "$TARGET" -type f \( -name "*.ts" -o -name "*.tsx" -o -name "*.js" -o -name "*.py" -o -name "*.java" -o -name "*.go" \) ! -path "*node_modules*" -exec cat {} + 2>/dev/null | wc -l)
94
+ fi
95
+
96
+ if [ "$TOTAL_LINES" -gt "$MAX_LINES" ]; then
97
+ echo "ℹ Target tem $TOTAL_LINES linhas (> $MAX_LINES). Agent vai chunkar análise."
98
+ fi
99
+ ```
100
+
101
+ ## 3. Dispatch para `storytelling-analyst`
102
+
103
+ ```text
104
+ Task(
105
+ subagent_type="storytelling-analyst",
106
+ prompt="
107
+ target: ${TARGET}
108
+ depth: ${DEPTH}
109
+ output_path: ${OUTPUT_PATH}
110
+ max_lines: ${MAX_LINES}
111
+ include_tests: ${INCLUDE_TESTS}
112
+
113
+ Aplicar skill legacy-storytelling-naked-crc. Etapas:
114
+ 1. Inventário inicial (listar files + classes/funções top-level)
115
+ 2. Leitura + síntese — produzir story em ≤ 5 frases
116
+ 3. Inventário canônico (tabela com responsabilidade primária + cluster)
117
+ 4. (depth=deep) Naked CRC sketch ASCII
118
+ 5. (depth=deep) Responsibility hot spots — classes fazendo > 3 coisas distintas
119
+ 6. (depth=deep) Abstrações ausentes (sugestões)
120
+ 7. (depth=deep) Extract class candidates priorizados
121
+ 8. Gotchas / surpresas
122
+ 9. Próximas ações sugeridas (effect sketch, /caracterizar, /refactor-seguro)
123
+ 10. Output: .planning/storytelling/<slug>.md
124
+
125
+ PRINCÍPIO: você É a IA primeiro draft. Não busque perfeição — busque utilidade. Seja honesto sobre incertezas.
126
+ "
127
+ )
128
+ ```
129
+
130
+ ## 4. Pós-output
131
+
132
+ ```
133
+ ═══════════════════════════════════════════════════════════
134
+ framework ► STORYTELLING ▸ ${OUTPUT_PATH}
135
+ ═══════════════════════════════════════════════════════════
136
+
137
+ [output do storytelling-analyst]
138
+
139
+ ## ⚠ Validação obrigatória
140
+
141
+ Esta análise é PRIMEIRA PASSADA por IA. Erros possíveis:
142
+ - Relações alucinadas (LLM "viu" colaborador que não existe)
143
+ - Hot spots inflated (cluster coeso marcado como hot spot)
144
+ - Sugestões fora de escopo (extract candidate com 2-week effort marcado como 3h)
145
+
146
+ Cross-check OBRIGATÓRIO antes de basear decisões:
147
+ 1. **Spot-check 3-5 funções aleatórias** contra inventário (existem? responsabilidade descrita está correta?)
148
+ 2. **Confirmar colaboradores** existem (grep no codebase pelos nomes mencionados)
149
+ 3. **Validar hot spots** contra leitura humana (são realmente "fazendo demais"?)
150
+ 4. **Refinar story** se necessário; versão final em ${OUTPUT_PATH} é HUMANA, IA é primeiro draft
151
+
152
+ ## Próximos passos
153
+
154
+ 1. Validar story (5-15 min)
155
+ 2. Se vai modificar: `/encontrar-seams ${TARGET}` (se arquivo) ou `/storytelling <sub-target>` (refinar para sub-módulo)
156
+ 3. Se vai refactorar: `/refactor-seguro ${TARGET}` (chain canônico)
157
+ 4. Se vai extrair: revisar extract candidates — `/legacy refactor` por candidate
158
+ 5. Se há shotgun surgery em outros módulos relacionados: `/detectar-duplicacao src/`
159
+
160
+ ## Cross-suite
161
+
162
+ - **/encontrar-seams** (v1.12) — story informa onde existem deps externas
163
+ - **/caracterizar** (v1.12) — story prioriza qual hot spot caracterizar primeiro
164
+ - **/refactor-seguro** (v1.12) — chain canônico após storytelling
165
+ - **/detectar-duplicacao** (v1.12) — shotgun across módulos relacionados
166
+ - **/mapear-codebase** (framework v1.7+) — comando análogo mais geral; storytelling complementa com narrativa
167
+ ```
168
+
169
+ </process>
170
+
171
+ <success_criteria>
172
+ - [ ] $ARGUMENTS parseados (target obrigatório)
173
+ - [ ] Tamanho detectado e chunking ativado se necessário
174
+ - [ ] `storytelling-analyst` invocado via Task com depth resolvido
175
+ - [ ] Output forwarded transparentemente
176
+ - [ ] Warning de validação manual obrigatória emitido
177
+ - [ ] Próximos passos sugerem encontrar-seams, caracterizar, refactor-seguro
178
+ - [ ] Cross-references com /detectar-duplicacao, /mapear-codebase, /caracterizar
179
+ </success_criteria>