legacy-squad 1.0.0 → 1.2.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 +519 -431
- package/README.pt-br.md +524 -431
- package/dist/cli.mjs +194 -73
- package/dist/templates/claude-commands/architecture.md +2 -1
- package/dist/templates/claude-commands/business-rules.md +52 -52
- package/dist/templates/claude-commands/generate-mmp.md +3 -1
- package/dist/templates/claude-commands/generate-prs.md +2 -1
- package/dist/templates/claude-commands/generate-sdd.md +3 -1
- package/dist/templates/claude-commands/generate-specs.md +1 -1
- package/dist/templates/claude-commands/legacy-code.md +2 -1
- package/dist/templates/claude-commands/modernization.md +2 -1
- package/dist/templates/claude-commands/scan.md +1 -1
- package/dist/templates/claude-commands/security.md +2 -1
- package/package.json +4 -3
package/README.pt-br.md
CHANGED
|
@@ -1,431 +1,524 @@
|
|
|
1
|
-
<p align="center">
|
|
2
|
-
<h1 align="center">Legacy Squad Framework</h1>
|
|
3
|
-
<p align="center"><strong>Plataforma de Modernização de Legados com IA</strong></p>
|
|
4
|
-
<p align="center"><em>Understand. Plan. Modernize.</em></p>
|
|
5
|
-
<p align="center">
|
|
6
|
-
<strong>🇧🇷 Português</strong> · <a href="README.md">🇺🇸 English</a>
|
|
7
|
-
</p>
|
|
8
|
-
</p>
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
|
45
|
-
|
|
46
|
-
| **
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
1.
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
###
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
###
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<h1 align="center">Legacy Squad Framework</h1>
|
|
3
|
+
<p align="center"><strong>Plataforma de Modernização de Legados com IA</strong></p>
|
|
4
|
+
<p align="center"><em>Understand. Plan. Modernize.</em></p>
|
|
5
|
+
<p align="center">
|
|
6
|
+
<strong>🇧🇷 Português</strong> · <a href="README.md">🇺🇸 English</a>
|
|
7
|
+
</p>
|
|
8
|
+
</p>
|
|
9
|
+
|
|
10
|
+
<p align="center">
|
|
11
|
+
<a href="https://www.npmjs.com/package/legacy-squad"><img src="https://img.shields.io/npm/v/legacy-squad?color=cb3837&label=npm" alt="npm version"></a>
|
|
12
|
+
<a href="https://www.npmjs.com/package/legacy-squad"><img src="https://img.shields.io/npm/dm/legacy-squad?color=blue" alt="downloads"></a>
|
|
13
|
+
<a href="https://github.com/hrpimenta/legacy-squad/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-green.svg" alt="license"></a>
|
|
14
|
+
<a href="https://github.com/hrpimenta/legacy-squad/stargazers"><img src="https://img.shields.io/github/stars/hrpimenta/legacy-squad?style=social" alt="stars"></a>
|
|
15
|
+
<img src="https://img.shields.io/badge/status-beta-orange" alt="beta">
|
|
16
|
+
<img src="https://img.shields.io/badge/node-%E2%89%A518-brightgreen" alt="node">
|
|
17
|
+
</p>
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
> **Um comando. Cinco agentes de IA na sua IDE.**
|
|
22
|
+
> **50 achados, 4 documentos de engenharia e 37 execution specs** — sem alterar uma única linha do seu código.
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
npx legacy-squad install
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
<p align="center">
|
|
29
|
+
<img src="docs/assets/demo.svg" alt="Saída do install do Legacy Squad" width="780">
|
|
30
|
+
</p>
|
|
31
|
+
|
|
32
|
+
<p align="center">
|
|
33
|
+
🔑 <strong>Zero API keys</strong> ·
|
|
34
|
+
☁️ <strong>Zero servidores externos</strong> ·
|
|
35
|
+
💻 <strong>Roda na sua própria IDE</strong> (Claude Code, Codex, Cursor)
|
|
36
|
+
</p>
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## 📊 Validado em Produção
|
|
41
|
+
|
|
42
|
+
Aplicativo mobile real em produção — **~18.000 LoC**, **98 dependências**, transações financeiras reais:
|
|
43
|
+
|
|
44
|
+
| | |
|
|
45
|
+
|---|---|
|
|
46
|
+
| 🔍 **50 achados** (7 determinísticos + 43 dos agentes de IA) | 📐 **63 regras de negócio** extraídas do código (11 implícitas) |
|
|
47
|
+
| 📄 **4 documentos oficiais** (PRS · SDD · MMP · Specs) | 🎯 **37 execution specs**, atômicas e deployáveis |
|
|
48
|
+
| 📈 **Execution Readiness:** 38 → 88 / 100 | 🚀 **Deployability:** pontuado por fase |
|
|
49
|
+
|
|
50
|
+
A partir de um único `npx legacy-squad install` seguido por 9 slash commands na IDE.
|
|
51
|
+
|
|
52
|
+
[**→ Leia o case study completo**](docs/CASE_STUDY.md)
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## 🚀 Início Rápido
|
|
57
|
+
|
|
58
|
+
> Do zero ao seu primeiro achado gerado por IA em minutos.
|
|
59
|
+
|
|
60
|
+
### Pré-requisitos
|
|
61
|
+
|
|
62
|
+
- **Node.js ≥ 18**
|
|
63
|
+
- **Uma IDE com IA habilitada:** [Claude Code](https://docs.anthropic.com/en/docs/claude-code), [Codex CLI](https://github.com/openai/codex) ou [Cursor](https://cursor.sh)
|
|
64
|
+
|
|
65
|
+
### 1. Instale no seu projeto legado
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
cd seu-projeto-legado
|
|
69
|
+
npx legacy-squad install
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Logo em seguida, você verá os artefatos do framework em `.legacy-squad/memory/`:
|
|
73
|
+
|
|
74
|
+
- `repo-index.json` — inventário completo (stack, módulos, dependências, integrações)
|
|
75
|
+
- `findings.json` — achados de segurança determinísticos (OWASP / CWE)
|
|
76
|
+
- `context-packs.json` — contexto por módulo, preparado para os agentes de IA
|
|
77
|
+
|
|
78
|
+
<details>
|
|
79
|
+
<summary><strong>O que o comando install faz internamente</strong></summary>
|
|
80
|
+
|
|
81
|
+
1. Detecta a stack pelo manifesto (`package.json`, `composer.json`, `.csproj`, `pom.xml`)
|
|
82
|
+
2. Faz o scan do repositório e monta o inventário
|
|
83
|
+
3. Executa o Compliance Engine com regras OWASP / CWE
|
|
84
|
+
4. Gera Context Packs por módulo (eficientes em tokens)
|
|
85
|
+
5. Instala os 9 agentes como slash commands na sua IDE
|
|
86
|
+
6. Verifica a instalação (8 health checks)
|
|
87
|
+
|
|
88
|
+
</details>
|
|
89
|
+
|
|
90
|
+
### 2. Rode seu primeiro agente de IA
|
|
91
|
+
|
|
92
|
+
Abra sua IDE no projeto e acione o Security Agent.
|
|
93
|
+
|
|
94
|
+
**Claude Code**
|
|
95
|
+
```bash
|
|
96
|
+
claude
|
|
97
|
+
/legacy-squad-security
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
**Codex CLI**
|
|
101
|
+
```bash
|
|
102
|
+
codex
|
|
103
|
+
@legacy-squad-security
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
O assessment é escrito em:
|
|
107
|
+
|
|
108
|
+
```
|
|
109
|
+
.legacy-squad/outputs/assessments/security.md
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
Orientado por evidência: todo achado inclui referência arquivo:linha, mapeamento OWASP / CWE, impacto e recomendação — gerado pela IA rodando inteiramente dentro da sua IDE.
|
|
113
|
+
|
|
114
|
+
### 3. Rode o diagnóstico completo
|
|
115
|
+
|
|
116
|
+
Depois de validar o primeiro agente, execute os quatro restantes e os quatro geradores de artefatos.
|
|
117
|
+
|
|
118
|
+
<details>
|
|
119
|
+
<summary><strong>Workflow completo — 5 agentes + 4 geradores</strong></summary>
|
|
120
|
+
|
|
121
|
+
**Etapa 1 — Análise (rode em ordem)**
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
/legacy-squad-security # Security Agent
|
|
125
|
+
/legacy-squad-architecture # Architecture Agent
|
|
126
|
+
/legacy-squad-legacy-code # Legacy Code Agent
|
|
127
|
+
/legacy-squad-business-rules # Business Rules Agent
|
|
128
|
+
/legacy-squad-modernization # Modernization Agent
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
**Etapa 2 — Artefatos consolidados (rode após a análise)**
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
/legacy-squad-generate-prs # Product Refactor Specification
|
|
135
|
+
/legacy-squad-generate-sdd # Software Design Document
|
|
136
|
+
/legacy-squad-generate-mmp # Modernization Master Plan
|
|
137
|
+
/legacy-squad-generate-specs # Execution Specs (um YAML por unidade de trabalho)
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
</details>
|
|
141
|
+
|
|
142
|
+
### Outros comandos
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
npx legacy-squad scan # Re-escaneia sem reinstalar agentes
|
|
146
|
+
npx legacy-squad doctor # Verifica a saúde da instalação
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## Por que Legacy Squad
|
|
152
|
+
|
|
153
|
+
A maioria das ferramentas existentes cobre uma única dimensão da modernização de legados. O Legacy Squad cobre o ciclo completo — do inventário ao plano executável — e trata agentes de IA como **contribuidores submetidos a uma metodologia**, não como chat livre.
|
|
154
|
+
|
|
155
|
+
| Capacidade | Static Analyzers<br>(SonarQube) | SAST / SCA<br>(Snyk, Checkmarx) | AI Coding Assistants<br>(Copilot, Cursor) | **Legacy Squad** |
|
|
156
|
+
|---|:---:|:---:|:---:|:---:|
|
|
157
|
+
| Regras de segurança determinísticas (OWASP / CWE) | ✅ | ✅ | — | ✅ |
|
|
158
|
+
| Vulnerabilidades de CVE / dependências | — | ✅ | — | — |
|
|
159
|
+
| Code smells e complexidade cognitiva | ✅ | parcial | — | ✅ |
|
|
160
|
+
| Mapeamento de arquitetura (C4, acoplamento) | — | — | — | ✅ |
|
|
161
|
+
| Extração de regras de negócio do código | — | — | — | ✅ |
|
|
162
|
+
| Plano de modernização em fases (MMP) | — | — | — | ✅ |
|
|
163
|
+
| Execution specs atômicas e deployáveis | — | — | — | ✅ |
|
|
164
|
+
| Agentes de IA com saída orientada por evidência | — | — | livre | ✅ |
|
|
165
|
+
| Roda na sua própria IDE (sem servidor, sem API key) | — | — | ✅ | ✅ |
|
|
166
|
+
| Repositório nunca é enviado por completo para a LLM | n/a | n/a | — | ✅ |
|
|
167
|
+
|
|
168
|
+
Em uma frase: o Legacy Squad combina **escaneamento determinístico** com **agentes de IA submetidos a metodologia** que produzem **artefatos de engenharia estruturados** (PRS, SDD, MMP, Execution Specs) — não histórico de chat.
|
|
169
|
+
|
|
170
|
+
### Quando o Legacy Squad faz sentido
|
|
171
|
+
|
|
172
|
+
- Você tem um sistema legado em produção e precisa de um **diagnóstico estruturado** antes de decidir o que modernizar.
|
|
173
|
+
- Você quer que todo achado carregue **evidência, referência ao framework, impacto e recomendação** — não sugestões sem justificativa.
|
|
174
|
+
- Você precisa de um **plano de modernização em fases**, reversível, deployável e passível de aprovação humana antes da execução.
|
|
175
|
+
- Você quer assistência de IA **sem enviar seu código-fonte para um servidor externo** nem pagar por mais uma seat.
|
|
176
|
+
|
|
177
|
+
### Quando não faz
|
|
178
|
+
|
|
179
|
+
- Para escaneamento puro de CVE / vulnerabilidades de dependência, use [Snyk](https://snyk.io), [Dependabot](https://github.com/dependabot) ou equivalentes — eles são especializados nisso e o Legacy Squad não os substitui.
|
|
180
|
+
- Para gates de qualidade contínuos em CI/CD, use [SonarQube](https://www.sonarsource.com/products/sonarqube/) — o Legacy Squad é um framework de **diagnóstico e planejamento**, não um monitor contínuo de qualidade.
|
|
181
|
+
- Para autocomplete no editor ou chat genérico de código, [GitHub Copilot](https://github.com/features/copilot) e [Cursor](https://cursor.sh) já cumprem esse papel — o Legacy Squad começa onde essas ferramentas param.
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
## Como Funciona
|
|
186
|
+
|
|
187
|
+
```
|
|
188
|
+
┌─────────────────────┐
|
|
189
|
+
│ npx legacy-squad │
|
|
190
|
+
│ install │
|
|
191
|
+
└─────────┬───────────┘
|
|
192
|
+
│
|
|
193
|
+
┌───────────────┼───────────────┐
|
|
194
|
+
▼ ▼ ▼
|
|
195
|
+
┌──────────┐ ┌────────────┐ ┌────────────┐
|
|
196
|
+
│ Scanner │ │ Compliance │ │ Context │
|
|
197
|
+
│ (stack, │ │ Engine │ │ Manager │
|
|
198
|
+
│ módulos) │ │ (OWASP) │ │ (packs) │
|
|
199
|
+
└────┬─────┘ └─────┬──────┘ └─────┬──────┘
|
|
200
|
+
│ │ │
|
|
201
|
+
▼ ▼ ▼
|
|
202
|
+
┌──────────────────────────────────────────┐
|
|
203
|
+
│ .legacy-squad/memory/ │
|
|
204
|
+
│ repo-index.json | findings.json | │
|
|
205
|
+
│ context-packs.json │
|
|
206
|
+
└──────────────────┬───────────────────────┘
|
|
207
|
+
│
|
|
208
|
+
┌────────────┼────────────┐
|
|
209
|
+
▼ ▼ ▼
|
|
210
|
+
┌──────────┐ ┌──────────┐ ┌──────────┐
|
|
211
|
+
│ .claude/ │ │ AGENTS.md│ │ .cursor/ │
|
|
212
|
+
│ commands/│ │ (Codex) │ │ rules/ │
|
|
213
|
+
│ (Claude) │ │ │ │ (Cursor) │
|
|
214
|
+
└────┬─────┘ └────┬─────┘ └────┬─────┘
|
|
215
|
+
│ │ │
|
|
216
|
+
└─────────────┼─────────────┘
|
|
217
|
+
│
|
|
218
|
+
┌──────▼──────┐
|
|
219
|
+
│ IDE + IA │
|
|
220
|
+
│ (Claude Code│
|
|
221
|
+
│ Codex, │
|
|
222
|
+
│ Cursor) │
|
|
223
|
+
└──────┬──────┘
|
|
224
|
+
│
|
|
225
|
+
┌──────▼──────┐
|
|
226
|
+
│ Assessments │
|
|
227
|
+
│ + PRS final │
|
|
228
|
+
└─────────────┘
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
**O framework prepara os dados e instala os agentes. A IA roda na IDE do dev.**
|
|
232
|
+
|
|
233
|
+
Zero API keys necessárias. Zero chamadas a servidores externos. Tudo roda localmente.
|
|
234
|
+
|
|
235
|
+
---
|
|
236
|
+
|
|
237
|
+
## Estrutura Instalada
|
|
238
|
+
|
|
239
|
+
Após `npx legacy-squad install`:
|
|
240
|
+
|
|
241
|
+
```
|
|
242
|
+
seu-projeto/
|
|
243
|
+
├── .legacy-squad/
|
|
244
|
+
│ ├── config/
|
|
245
|
+
│ │ └── project.yaml # Configuração detectada
|
|
246
|
+
│ ├── memory/
|
|
247
|
+
│ │ ├── repo-index.json # Inventário do repositório
|
|
248
|
+
│ │ ├── findings.json # Achados do compliance engine
|
|
249
|
+
│ │ └── context-packs.json # Contexto por módulo
|
|
250
|
+
│ ├── outputs/
|
|
251
|
+
│ │ ├── assessments/ # Assessments dos agentes (5 arquivos .md)
|
|
252
|
+
│ │ ├── reports/ # PRS.md + PRS.json
|
|
253
|
+
│ │ ├── sdd/ # SDD.md + SDD.json
|
|
254
|
+
│ │ ├── mmp/ # MMP.md + MMP.json
|
|
255
|
+
│ │ └── specs/ # SPEC-*.yaml + INDEX.md
|
|
256
|
+
│ └── logs/
|
|
257
|
+
│ └── install.log
|
|
258
|
+
├── .claude/
|
|
259
|
+
│ └── commands/
|
|
260
|
+
│ └── legacy-squad/
|
|
261
|
+
│ ├── security.md # /legacy-squad-security
|
|
262
|
+
│ ├── architecture.md # /legacy-squad-architecture
|
|
263
|
+
│ ├── legacy-code.md # /legacy-squad-legacy-code
|
|
264
|
+
│ ├── business-rules.md # /legacy-squad-business-rules
|
|
265
|
+
│ ├── modernization.md # /legacy-squad-modernization
|
|
266
|
+
│ ├── generate-prs.md # /legacy-squad-generate-prs
|
|
267
|
+
│ ├── generate-sdd.md # /legacy-squad-generate-sdd
|
|
268
|
+
│ ├── generate-mmp.md # /legacy-squad-generate-mmp
|
|
269
|
+
│ ├── generate-specs.md # /legacy-squad-generate-specs
|
|
270
|
+
│ └── scan.md # /legacy-squad-scan
|
|
271
|
+
└── AGENTS.md # Compatibilidade Codex
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
---
|
|
275
|
+
|
|
276
|
+
## Agentes
|
|
277
|
+
|
|
278
|
+
### Security Agent (`/legacy-squad-security`)
|
|
279
|
+
|
|
280
|
+
Analisa autenticação, secrets, armazenamento inseguro, exposição de PII e conformidade de privacidade (LGPD, GDPR).
|
|
281
|
+
|
|
282
|
+
**Referências:** OWASP MASVS V2, OWASP ASVS, CWE Top 25, LGPD, GDPR, NIST SSDF
|
|
283
|
+
|
|
284
|
+
### Architecture Agent (`/legacy-squad-architecture`)
|
|
285
|
+
|
|
286
|
+
Mapeia a arquitetura atual com diagramas C4, identifica acoplamento, riscos estruturais e propõe uma arquitetura alvo incremental.
|
|
287
|
+
|
|
288
|
+
**Referências:** C4 Model, Clean Architecture, arc42, ADR
|
|
289
|
+
|
|
290
|
+
### Legacy Code Agent (`/legacy-squad-legacy-code`)
|
|
291
|
+
|
|
292
|
+
Identifica hotspots, duplicação, progresso da migração JS→TS, cobertura de testes e prioridades de refatoração.
|
|
293
|
+
|
|
294
|
+
**Referências:** Clean Code, Sonar Rules, Cognitive Complexity
|
|
295
|
+
|
|
296
|
+
### Business Rules Agent (`/legacy-squad-business-rules`)
|
|
297
|
+
|
|
298
|
+
Extrai regras de negócio escondidas no código — validações, permissões, fluxos, números mágicos, regras implícitas em catch blocks.
|
|
299
|
+
|
|
300
|
+
**Referências:** DDD, Event Storming
|
|
301
|
+
|
|
302
|
+
### Modernization Agent (`/legacy-squad-modernization`)
|
|
303
|
+
|
|
304
|
+
Sintetiza todos os assessments em um plano incremental com fases, rollback, Deployability Score (1-10) e Execution Readiness Score (0-100).
|
|
305
|
+
|
|
306
|
+
**Referências:** Strangler Fig, Branch by Abstraction, Progressive Delivery
|
|
307
|
+
|
|
308
|
+
### PRS Generator (`/legacy-squad-generate-prs`)
|
|
309
|
+
|
|
310
|
+
Consolida todos os assessments no PRS (Product Refactor Specification) — o relatório de diagnóstico para tomadores de decisão.
|
|
311
|
+
|
|
312
|
+
### SDD Generator (`/legacy-squad-generate-sdd`)
|
|
313
|
+
|
|
314
|
+
Produz o Software Design Document com arquitetura atual e alvo (diagramas Mermaid C4), inventário de componentes, integrações, preocupações transversais (segurança, observabilidade, tratamento de erros, configuração), restrições e Architecture Decision Records (ADRs) com alternativas consideradas.
|
|
315
|
+
|
|
316
|
+
**Referências:** C4 Model, arc42, ADR, Clean Architecture
|
|
317
|
+
|
|
318
|
+
### MMP Generator (`/legacy-squad-generate-mmp`)
|
|
319
|
+
|
|
320
|
+
Produz o Modernization Master Plan com roadmap em fases (Foundation → Core → Evolution, com fase Emergency opcional quando há achados críticos), plano de upgrade de stack, matriz de risco, estratégia de rollback por fase, Execution Readiness Score (0-100) justificado dimensão por dimensão, Deployability Score por fase e métricas de sucesso cobrindo segurança, qualidade de código, cobertura de testes e arquitetura.
|
|
321
|
+
|
|
322
|
+
**Referências:** Strangler Fig, Branch by Abstraction, Progressive Delivery
|
|
323
|
+
|
|
324
|
+
### Execution Specs Generator (`/legacy-squad-generate-specs`)
|
|
325
|
+
|
|
326
|
+
Decompõe o MMP em Execution Specs atômicas — um arquivo YAML por unidade de trabalho, individualmente deployável, com critérios de aceite binários, estratégia de rollback obrigatória, rastreabilidade de evidência (IDs de findings de compliance + referências de assessment), grafo de dependência entre specs e flag explícita `human_approval_required` para mudanças de alto risco.
|
|
327
|
+
|
|
328
|
+
**Referências:** FRAMEWORK_SPECIFICATION Seção 8 (schema de Execution Spec)
|
|
329
|
+
|
|
330
|
+
---
|
|
331
|
+
|
|
332
|
+
## Stacks Suportadas
|
|
333
|
+
|
|
334
|
+
### Detecção por Manifesto (Camada 1 — determinística)
|
|
335
|
+
|
|
336
|
+
| Manifesto | Stack |
|
|
337
|
+
|----------|-------|
|
|
338
|
+
| `package.json` | Node.js, React, React Native, Expo, Next.js |
|
|
339
|
+
| `composer.json` | PHP, Laravel |
|
|
340
|
+
| `.csproj` | C#, .NET |
|
|
341
|
+
| `pom.xml` | Java, Spring Boot |
|
|
342
|
+
|
|
343
|
+
### Detecção por Extensão (Camada 2 — heurística)
|
|
344
|
+
|
|
345
|
+
TypeScript, JavaScript, PHP, C#, Java, Python, Dart
|
|
346
|
+
|
|
347
|
+
---
|
|
348
|
+
|
|
349
|
+
## Compliance Engine
|
|
350
|
+
|
|
351
|
+
O scanner roda automaticamente regras determinísticas baseadas em OWASP e CWE:
|
|
352
|
+
|
|
353
|
+
| Regra | Detecta | Stacks | Referência |
|
|
354
|
+
|------|---------|--------|-----------|
|
|
355
|
+
| SEC-CRED-001 | Credenciais hardcoded (senhas, API keys, tokens) | todas | OWASP MASVS, CWE-798 |
|
|
356
|
+
| SEC-CRED-002 | Keystores/certificados commitados no repositório | mobile, todas | OWASP MASVS, CWE-312 |
|
|
357
|
+
| SEC-SQL-001 | SQL injection (concatenação de string em queries) | PHP, .NET, Java, Node | OWASP A03, CWE-89 |
|
|
358
|
+
| SEC-CRYPTO-001 | Criptografia fraca (MD5, SHA1) | PHP, .NET, Java, Node | OWASP A02, CWE-327 |
|
|
359
|
+
| SEC-DESER-001 | Desserialização insegura (BinaryFormatter, `unserialize`, `readObject`) | .NET, PHP, Java | OWASP A08, CWE-502 |
|
|
360
|
+
| SEC-CMD-001 | Command injection (`exec`, `Runtime.exec`, `shell_exec` com input do usuário) | PHP, .NET, Java, Node | OWASP A03, CWE-78 |
|
|
361
|
+
| SEC-PATH-001 | Path traversal (caminhos de arquivo não validados) | PHP, .NET, Java, Node | OWASP A01, CWE-22 |
|
|
362
|
+
| SEC-XSS-001 | XSS por saída sem escape (`echo $_GET`, `Html.Raw`) | PHP, .NET | OWASP A03, CWE-79 |
|
|
363
|
+
| SEC-LOG-001 | `console.log` ativo em produção | JS/TS, mobile | CWE-532 |
|
|
364
|
+
| SEC-LOG-002 | PII (CPF, SSN, IDs) em logs/serviços externos | todas | CWE-532, LGPD/GDPR |
|
|
365
|
+
| SEC-ERR-001 | Catch blocks vazios | todas | CWE-390 |
|
|
366
|
+
| SEC-STORE-001 | Token em AsyncStorage (armazenamento inseguro) | mobile | OWASP MASVS |
|
|
367
|
+
| CQ-MIX-001 | Arquivos JS e TS misturados (migração TS incompleta) | JS/TS | Clean Code |
|
|
368
|
+
| CQ-DEPRECATED-001 | APIs depreciadas (`mysql_*`, `ereg`, `Vector`) | PHP, Java | classificadas por CVE |
|
|
369
|
+
|
|
370
|
+
Todo achado inclui: evidência (arquivo, linha, snippet), impacto, referência técnica e recomendação.
|
|
371
|
+
|
|
372
|
+
---
|
|
373
|
+
|
|
374
|
+
## Princípios
|
|
375
|
+
|
|
376
|
+
| Princípio | Descrição |
|
|
377
|
+
|-----------|-------------|
|
|
378
|
+
| **Install-First** | Um comando instala tudo. Sem setup manual. |
|
|
379
|
+
| **IDE-Native** | Agentes são slash commands da IDE. A IA vem do ambiente do dev. |
|
|
380
|
+
| **Evidence-Driven** | Todo achado tem evidência concreta (arquivo, linha, snippet). |
|
|
381
|
+
| **Context-First** | Nenhuma LLM recebe o repositório inteiro — apenas context packs. |
|
|
382
|
+
| **Read-Only** | O framework não modifica código. Apenas lê e gera relatórios. |
|
|
383
|
+
| **Production-First** | Toda recomendação assume que o sistema está em produção. |
|
|
384
|
+
| **Incremental** | Todo passo de modernização é incremental, reversível e deployável. |
|
|
385
|
+
|
|
386
|
+
---
|
|
387
|
+
|
|
388
|
+
## Validado em Produção
|
|
389
|
+
|
|
390
|
+
O framework foi validado contra um **app mobile em produção** (~18k linhas de código, 98 dependências, transações financeiras reais):
|
|
391
|
+
|
|
392
|
+
**Compliance Engine (determinístico):** 7 achados via pattern matching
|
|
393
|
+
|
|
394
|
+
**Agentes de IA (via Claude Code):** +43 achados adicionais, incluindo:
|
|
395
|
+
- Credenciais de service account decodificadas a partir de Base64 no código-fonte
|
|
396
|
+
- Flag de remote config capaz de bypassar toda a autenticação em produção
|
|
397
|
+
- Senhas de usuário logadas em texto claro em um banco de dados na nuvem
|
|
398
|
+
- PII usado como chave primária em banco de dados na nuvem (enumerável)
|
|
399
|
+
- Gravação de sessão capturando dados sensíveis sem consentimento do usuário
|
|
400
|
+
- 63 regras de negócio extraídas do código (11 implícitas, nunca documentadas)
|
|
401
|
+
- Possível bug em cálculo de data afetando lógica de negócio central
|
|
402
|
+
|
|
403
|
+
**Artefatos gerados (4 entregáveis oficiais da V1):**
|
|
404
|
+
- **PRS** — Product Refactor Specification consolidando o diagnóstico
|
|
405
|
+
- **SDD** — Software Design Document com arquitetura atual/alvo e 8 ADRs
|
|
406
|
+
- **MMP** — Modernization Master Plan com roadmap em 4 fases (Emergency → Foundation → Core → Evolution), Execution Readiness Score 38→88/100, Deployability scores por fase e estratégias concretas de rollback
|
|
407
|
+
- **37 Execution Specs** — unidades de trabalho atômicas e individualmente deployáveis, com critérios de aceite binários, rollback obrigatório, rastreabilidade de evidência e grafo de dependência
|
|
408
|
+
|
|
409
|
+
**Total:** 50 achados + 4 artefatos consolidados + 37 specs executáveis a partir de um único `npx legacy-squad install` seguido por 9 ativações de slash command.
|
|
410
|
+
|
|
411
|
+
---
|
|
412
|
+
|
|
413
|
+
## Open Core
|
|
414
|
+
|
|
415
|
+
### Community Edition (V1) — Open Source
|
|
416
|
+
|
|
417
|
+
Foco: **Understand + Plan**
|
|
418
|
+
|
|
419
|
+
- Scanner com detecção multi-stack (PHP/Laravel/Symfony, .NET/ASP.NET, Java/Spring, Node, React Native/Expo)
|
|
420
|
+
- Compliance Engine com 14 regras determinísticas (OWASP MASVS, ASVS, CWE Top 25)
|
|
421
|
+
- Context Manager (básico)
|
|
422
|
+
- **5 agentes de análise** como slash commands: security, architecture, legacy-code, business-rules, modernization
|
|
423
|
+
- **4 geradores de artefatos** como slash commands: PRS, SDD, MMP, Execution Specs
|
|
424
|
+
- Suporte a Claude Code, Codex CLI (Cursor / Gemini CLI no roadmap)
|
|
425
|
+
|
|
426
|
+
### Enterprise Edition (V2) — Em desenvolvimento
|
|
427
|
+
|
|
428
|
+
Foco: **Modernize**
|
|
429
|
+
|
|
430
|
+
- Execution Engine (refatoração assistida por IA)
|
|
431
|
+
- Pull Request Engine
|
|
432
|
+
- QA Gates
|
|
433
|
+
- Integração CI/CD
|
|
434
|
+
- Custom Rule Packs
|
|
435
|
+
- Dashboard + Team Collaboration
|
|
436
|
+
|
|
437
|
+
---
|
|
438
|
+
|
|
439
|
+
## Roadmap
|
|
440
|
+
|
|
441
|
+
| Horizonte | Fase | Status |
|
|
442
|
+
|---|---|---|
|
|
443
|
+
| **Now** | V1 Community — melhorias contínuas | 🔵 Ativo |
|
|
444
|
+
| **Next** | V2 Enterprise — execução, refatoração, PRs | 🟡 Em desenho |
|
|
445
|
+
| **Later** | V3 Autonomous — modernização contínua | ⚪ Visão |
|
|
446
|
+
|
|
447
|
+
[**→ Roadmap completo**](ROADMAP.md) · [**→ Influencie a direção**](https://github.com/hrpimenta/legacy-squad/discussions)
|
|
448
|
+
|
|
449
|
+
---
|
|
450
|
+
|
|
451
|
+
## Desenvolvimento
|
|
452
|
+
|
|
453
|
+
```bash
|
|
454
|
+
git clone https://github.com/hrpimenta/legacy-squad.git
|
|
455
|
+
cd legacy-squad
|
|
456
|
+
pnpm install
|
|
457
|
+
pnpm approve-builds esbuild
|
|
458
|
+
|
|
459
|
+
# Testes
|
|
460
|
+
npx vitest run
|
|
461
|
+
|
|
462
|
+
# Modo dev (sem build)
|
|
463
|
+
npx tsx apps/cli/src/index.ts install -p /caminho/do/projeto
|
|
464
|
+
|
|
465
|
+
# Build
|
|
466
|
+
node build.mjs
|
|
467
|
+
|
|
468
|
+
# Testar versão bundled
|
|
469
|
+
node dist/cli.mjs install -p /caminho/do/projeto
|
|
470
|
+
```
|
|
471
|
+
|
|
472
|
+
### Estrutura do Monorepo
|
|
473
|
+
|
|
474
|
+
```
|
|
475
|
+
legacy-squad/
|
|
476
|
+
├── packages/
|
|
477
|
+
│ ├── core/ # Tipos de domínio, ports (Clean Architecture)
|
|
478
|
+
│ ├── scanner/ # Detecção de stack, geração de repo index
|
|
479
|
+
│ ├── context/ # Builder de context packs
|
|
480
|
+
│ ├── rules/ # Compliance engine, catálogo de regras
|
|
481
|
+
│ ├── agents/ # Definições de agentes, instalador, doctor
|
|
482
|
+
│ └── output/ # Gerador do PRS
|
|
483
|
+
├── apps/
|
|
484
|
+
│ └── cli/ # Entry point da CLI (Commander.js)
|
|
485
|
+
├── templates/
|
|
486
|
+
│ └── claude-commands/ # Templates de slash commands
|
|
487
|
+
└── docs/
|
|
488
|
+
└── plans/ # Decisões de arquitetura, planos
|
|
489
|
+
```
|
|
490
|
+
|
|
491
|
+
### Testes
|
|
492
|
+
|
|
493
|
+
```bash
|
|
494
|
+
npx vitest run # 93 testes (domain, scanner, compliance, agents, installer)
|
|
495
|
+
npx vitest --watch # Modo watch
|
|
496
|
+
```
|
|
497
|
+
|
|
498
|
+
---
|
|
499
|
+
|
|
500
|
+
## Como Contribuir
|
|
501
|
+
|
|
502
|
+
Agradecemos contribuições. Consulte o arquivo [CONTRIBUTING.md](CONTRIBUTING.md) para obter informações sobre:
|
|
503
|
+
|
|
504
|
+
- Como adicionar uma regra ao Compliance Engine
|
|
505
|
+
- Como aprimorar os modelos de agentes
|
|
506
|
+
- Como adicionar suporte a IDEs
|
|
507
|
+
- Padrões de engenharia (TDD, SOLID, segurança)
|
|
508
|
+
- Convenções de commit e processo de pull request
|
|
509
|
+
|
|
510
|
+
Para perguntas e propostas, [abra uma discussão](https://github.com/hrpimenta/legacy-squad/discussions).
|
|
511
|
+
|
|
512
|
+
---
|
|
513
|
+
|
|
514
|
+
## Licença
|
|
515
|
+
|
|
516
|
+
MIT — veja [LICENSE](LICENSE) para detalhes.
|
|
517
|
+
|
|
518
|
+
---
|
|
519
|
+
|
|
520
|
+
<p align="center">
|
|
521
|
+
<strong>Understand. Plan. Modernize.</strong>
|
|
522
|
+
<br>
|
|
523
|
+
<em>Legacy Squad Framework</em>
|
|
524
|
+
</p>
|