legacy-squad 1.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +401 -0
- package/dist/cli.mjs +1232 -0
- package/dist/templates/claude-commands/architecture.md +42 -0
- package/dist/templates/claude-commands/business-rules.md +35 -0
- package/dist/templates/claude-commands/generate-prs.md +33 -0
- package/dist/templates/claude-commands/legacy-code.md +34 -0
- package/dist/templates/claude-commands/modernization.md +35 -0
- package/dist/templates/claude-commands/scan.md +11 -0
- package/dist/templates/claude-commands/security.md +69 -0
- package/package.json +59 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Legacy Squad Team
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,401 @@
|
|
|
1
|
+
# Legacy Squad Framework
|
|
2
|
+
|
|
3
|
+
**AI-Powered Legacy Modernization Platform**
|
|
4
|
+
|
|
5
|
+
> **Understand. Plan. Modernize.**
|
|
6
|
+
|
|
7
|
+
Legacy Squad é um framework open-source que se instala dentro do seu projeto legado com um único comando, analisa automaticamente o código-fonte, e disponibiliza agentes de IA especializados na sua IDE para produzir um diagnóstico completo — sem alterar uma linha de código.
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npx legacy-squad install
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## O Problema
|
|
16
|
+
|
|
17
|
+
Sistemas legados sustentam processos críticos, mas frequentemente apresentam:
|
|
18
|
+
|
|
19
|
+
- Documentação inexistente ou desatualizada
|
|
20
|
+
- Credenciais hardcoded em código-fonte
|
|
21
|
+
- Regras de negócio escondidas em condicionais que ninguém documentou
|
|
22
|
+
- Acoplamento que torna qualquer mudança arriscada
|
|
23
|
+
- Medo de alterar código em produção
|
|
24
|
+
- Dependência de 1-2 desenvolvedores que "conhecem o sistema"
|
|
25
|
+
|
|
26
|
+
Abordagens tradicionais (reescrita total, refatoração sem governança) são caras, lentas e arriscadas.
|
|
27
|
+
|
|
28
|
+
## A Solução
|
|
29
|
+
|
|
30
|
+
Legacy Squad combina **análise determinística** (scanner + compliance engine com regras OWASP/CWE) com **agentes de IA especializados** que rodam na sua IDE (Claude Code, Codex, Cursor) para produzir:
|
|
31
|
+
|
|
32
|
+
| Artefato | O que faz |
|
|
33
|
+
|----------|-----------|
|
|
34
|
+
| **Repo Index** | Inventário completo: stack, módulos, dependências, integrações, hotspots |
|
|
35
|
+
| **Findings** | Achados de segurança com evidência, impacto, referência OWASP e recomendação |
|
|
36
|
+
| **Security Assessment** | Análise profunda de autenticação, secrets, LGPD, API security |
|
|
37
|
+
| **Architecture Assessment** | Mapeamento C4, acoplamento, riscos estruturais, arquitetura alvo |
|
|
38
|
+
| **Legacy Code Assessment** | Hotspots, migração JS→TS, duplicação, cobertura de testes |
|
|
39
|
+
| **Business Rules Assessment** | 60+ regras extraídas do código, preservation checklist |
|
|
40
|
+
| **Modernization Plan** | Roadmap incremental em fases com rollback e scores |
|
|
41
|
+
| **PRS** | Product Refactor Specification — documento consolidado para decision makers |
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Quick Start
|
|
46
|
+
|
|
47
|
+
### Pré-requisitos
|
|
48
|
+
|
|
49
|
+
- Node.js ≥ 18
|
|
50
|
+
- Uma IDE com IA: [Claude Code](https://docs.anthropic.com/en/docs/claude-code), [Codex CLI](https://github.com/openai/codex), ou [Cursor](https://cursor.sh)
|
|
51
|
+
|
|
52
|
+
### Instalação
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
cd seu-projeto-legado
|
|
56
|
+
npx legacy-squad install
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
O comando:
|
|
60
|
+
1. Detecta a stack (React Native, PHP, .NET, Java, Node — por manifesto)
|
|
61
|
+
2. Escaneia o repositório e gera o inventário
|
|
62
|
+
3. Roda o Compliance Engine (regras OWASP/CWE)
|
|
63
|
+
4. Gera Context Packs por módulo
|
|
64
|
+
5. Instala agentes como slash commands na IDE
|
|
65
|
+
6. Verifica a instalação (8 checks)
|
|
66
|
+
|
|
67
|
+
### Uso com Claude Code
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
claude # Abre Claude Code no projeto
|
|
71
|
+
/legacy-squad-security # Roda o Security Agent
|
|
72
|
+
/legacy-squad-architecture # Roda o Architecture Agent
|
|
73
|
+
/legacy-squad-legacy-code # Roda o Legacy Code Agent
|
|
74
|
+
/legacy-squad-business-rules # Roda o Business Rules Agent
|
|
75
|
+
/legacy-squad-modernization # Roda o Modernization Agent
|
|
76
|
+
/legacy-squad-generate-prs # Consolida tudo no PRS final
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Uso com Codex CLI
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
codex # Abre Codex no projeto
|
|
83
|
+
# O AGENTS.md na raiz define os agentes disponíveis
|
|
84
|
+
@legacy-squad-security # Ativa o Security Agent
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### Outros Comandos
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
npx legacy-squad scan # Re-escaneia sem reinstalar agentes
|
|
91
|
+
npx legacy-squad doctor # Verifica saúde da instalação
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## Como Funciona
|
|
97
|
+
|
|
98
|
+
```
|
|
99
|
+
┌─────────────────────┐
|
|
100
|
+
│ npx legacy-squad │
|
|
101
|
+
│ install │
|
|
102
|
+
└─────────┬───────────┘
|
|
103
|
+
│
|
|
104
|
+
┌───────────────┼───────────────┐
|
|
105
|
+
▼ ▼ ▼
|
|
106
|
+
┌──────────┐ ┌────────────┐ ┌────────────┐
|
|
107
|
+
│ Scanner │ │ Compliance │ │ Context │
|
|
108
|
+
│ (stack, │ │ Engine │ │ Manager │
|
|
109
|
+
│ modules) │ │ (OWASP) │ │ (packs) │
|
|
110
|
+
└────┬─────┘ └─────┬──────┘ └─────┬──────┘
|
|
111
|
+
│ │ │
|
|
112
|
+
▼ ▼ ▼
|
|
113
|
+
┌──────────────────────────────────────────┐
|
|
114
|
+
│ .legacy-squad/memory/ │
|
|
115
|
+
│ repo-index.json | findings.json | │
|
|
116
|
+
│ context-packs.json │
|
|
117
|
+
└──────────────────┬───────────────────────┘
|
|
118
|
+
│
|
|
119
|
+
┌────────────┼────────────┐
|
|
120
|
+
▼ ▼ ▼
|
|
121
|
+
┌──────────┐ ┌──────────┐ ┌──────────┐
|
|
122
|
+
│ .claude/ │ │ AGENTS.md│ │ .cursor/ │
|
|
123
|
+
│ commands/│ │ (Codex) │ │ rules/ │
|
|
124
|
+
│ (Claude) │ │ │ │ (Cursor) │
|
|
125
|
+
└────┬─────┘ └────┬─────┘ └────┬─────┘
|
|
126
|
+
│ │ │
|
|
127
|
+
└─────────────┼─────────────┘
|
|
128
|
+
│
|
|
129
|
+
┌──────▼──────┐
|
|
130
|
+
│ IDE + IA │
|
|
131
|
+
│ (Claude Code│
|
|
132
|
+
│ Codex, │
|
|
133
|
+
│ Cursor) │
|
|
134
|
+
└──────┬──────┘
|
|
135
|
+
│
|
|
136
|
+
┌──────▼──────┐
|
|
137
|
+
│ Assessments │
|
|
138
|
+
│ + PRS final │
|
|
139
|
+
└─────────────┘
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
**O framework prepara os dados e instala os agentes. A IA é executada pela IDE do dev.**
|
|
143
|
+
|
|
144
|
+
Zero API key necessária. Zero chamada a servidor externo. Tudo local.
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## Estrutura Instalada no Projeto
|
|
149
|
+
|
|
150
|
+
Após `npx legacy-squad install`:
|
|
151
|
+
|
|
152
|
+
```
|
|
153
|
+
seu-projeto/
|
|
154
|
+
├── .legacy-squad/
|
|
155
|
+
│ ├── config/
|
|
156
|
+
│ │ └── project.yaml # Configuração detectada
|
|
157
|
+
│ ├── memory/
|
|
158
|
+
│ │ ├── repo-index.json # Inventário do repositório
|
|
159
|
+
│ │ ├── findings.json # Achados do compliance engine
|
|
160
|
+
│ │ └── context-packs.json # Contexto por módulo
|
|
161
|
+
│ ├── outputs/
|
|
162
|
+
│ │ ├── assessments/ # Assessments dos agentes
|
|
163
|
+
│ │ └── reports/ # PRS consolidado
|
|
164
|
+
│ └── logs/
|
|
165
|
+
│ └── install.log
|
|
166
|
+
├── .claude/
|
|
167
|
+
│ └── commands/
|
|
168
|
+
│ └── legacy-squad/
|
|
169
|
+
│ ├── security.md # /legacy-squad-security
|
|
170
|
+
│ ├── architecture.md # /legacy-squad-architecture
|
|
171
|
+
│ ├── legacy-code.md # /legacy-squad-legacy-code
|
|
172
|
+
│ ├── business-rules.md # /legacy-squad-business-rules
|
|
173
|
+
│ ├── modernization.md # /legacy-squad-modernization
|
|
174
|
+
│ ├── generate-prs.md # /legacy-squad-generate-prs
|
|
175
|
+
│ └── scan.md # /legacy-squad-scan
|
|
176
|
+
└── AGENTS.md # Codex compatibility
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
## Agentes
|
|
182
|
+
|
|
183
|
+
### Security Agent (`/legacy-squad-security`)
|
|
184
|
+
|
|
185
|
+
Analisa autenticação, secrets, armazenamento inseguro, exposição de PII e conformidade LGPD.
|
|
186
|
+
|
|
187
|
+
**Referências:** OWASP MASVS V2, OWASP ASVS, CWE Top 25, LGPD, NIST SSDF
|
|
188
|
+
|
|
189
|
+
### Architecture Agent (`/legacy-squad-architecture`)
|
|
190
|
+
|
|
191
|
+
Mapeia arquitetura atual com diagramas C4, identifica acoplamento, riscos estruturais e propõe arquitetura alvo incremental.
|
|
192
|
+
|
|
193
|
+
**Referências:** C4 Model, Clean Architecture, arc42, ADR
|
|
194
|
+
|
|
195
|
+
### Legacy Code Agent (`/legacy-squad-legacy-code`)
|
|
196
|
+
|
|
197
|
+
Identifica hotspots, duplicação, progresso de migração JS→TS, cobertura de testes e prioridades de refatoração.
|
|
198
|
+
|
|
199
|
+
**Referências:** Clean Code, Sonar Rules, Cognitive Complexity
|
|
200
|
+
|
|
201
|
+
### Business Rules Agent (`/legacy-squad-business-rules`)
|
|
202
|
+
|
|
203
|
+
Extrai regras de negócio escondidas no código — validações, permissões, fluxos, magic numbers, regras implícitas em catch blocks.
|
|
204
|
+
|
|
205
|
+
**Referências:** DDD, Event Storming
|
|
206
|
+
|
|
207
|
+
### Modernization Agent (`/legacy-squad-modernization`)
|
|
208
|
+
|
|
209
|
+
Sintetiza todos os assessments em um plano incremental com fases, rollback, Deployability Score (1-10) e Execution Readiness Score (0-100).
|
|
210
|
+
|
|
211
|
+
**Referências:** Strangler Fig, Branch by Abstraction, Progressive Delivery
|
|
212
|
+
|
|
213
|
+
### PRS Generator (`/legacy-squad-generate-prs`)
|
|
214
|
+
|
|
215
|
+
Consolida todos os assessments no PRS (Product Refactor Specification) — o documento final para decision makers.
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
## Stacks Suportadas
|
|
220
|
+
|
|
221
|
+
### Detecção por Manifesto (Layer 1 — determinística)
|
|
222
|
+
|
|
223
|
+
| Manifesto | Stack |
|
|
224
|
+
|-----------|-------|
|
|
225
|
+
| `package.json` | Node.js, React, React Native, Expo, Next.js |
|
|
226
|
+
| `composer.json` | PHP, Laravel |
|
|
227
|
+
| `.csproj` | C#, .NET |
|
|
228
|
+
| `pom.xml` | Java, Spring Boot |
|
|
229
|
+
|
|
230
|
+
### Detecção por Extensão (Layer 2 — heurística)
|
|
231
|
+
|
|
232
|
+
TypeScript, JavaScript, PHP, C#, Java, Python, Dart
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
## Compliance Engine
|
|
237
|
+
|
|
238
|
+
O scanner roda automaticamente regras determinísticas baseadas em OWASP e CWE:
|
|
239
|
+
|
|
240
|
+
| Regra | Detecta | Referência |
|
|
241
|
+
|-------|---------|------------|
|
|
242
|
+
| SEC-CRED-001 | Credenciais hardcoded | OWASP MASVS, CWE-798 |
|
|
243
|
+
| SEC-CRED-002 | Keystores/certificados no repositório | OWASP MASVS, CWE-312 |
|
|
244
|
+
| SEC-LOG-001 | Console.log ativo em produção | CWE-532 |
|
|
245
|
+
| SEC-LOG-002 | PII (CPF) em logs/external services | CWE-532, LGPD |
|
|
246
|
+
| SEC-ERR-001 | Catch blocks vazios | CWE-390 |
|
|
247
|
+
| SEC-STORE-001 | Token em AsyncStorage | OWASP MASVS |
|
|
248
|
+
| CQ-MIX-001 | JS e TS misturados | Clean Code |
|
|
249
|
+
| CQ-DEP-001 | Dependências transitivas | Clean Code |
|
|
250
|
+
|
|
251
|
+
Todo achado inclui: evidência (arquivo, linha, snippet), impacto, referência técnica e recomendação.
|
|
252
|
+
|
|
253
|
+
---
|
|
254
|
+
|
|
255
|
+
## Princípios
|
|
256
|
+
|
|
257
|
+
| Princípio | Descrição |
|
|
258
|
+
|-----------|-----------|
|
|
259
|
+
| **Install-First** | Um comando instala tudo no projeto. Sem configuração manual. |
|
|
260
|
+
| **IDE-Native** | Agentes são slash commands da IDE. A IA vem do ambiente do dev. |
|
|
261
|
+
| **Evidence-Driven** | Todo achado tem evidência concreta (arquivo, linha, snippet). |
|
|
262
|
+
| **Context-First** | Nenhum LLM recebe o repositório inteiro — apenas context packs. |
|
|
263
|
+
| **Read-Only** | O framework não altera código. Apenas lê e gera relatórios. |
|
|
264
|
+
| **Production-First** | Toda recomendação assume que o sistema está em produção. |
|
|
265
|
+
| **Incremental** | Toda modernização é incremental, reversível e deployável. |
|
|
266
|
+
|
|
267
|
+
---
|
|
268
|
+
|
|
269
|
+
## Caso de Uso Real
|
|
270
|
+
|
|
271
|
+
O framework foi validado contra um **app mobile React Native em produção** (cooperativa de saúde, 18k+ linhas, 98 dependências, transações financeiras reais):
|
|
272
|
+
|
|
273
|
+
**Compliance Engine (determinístico):** 7 findings por pattern matching
|
|
274
|
+
|
|
275
|
+
**Agentes (IA via Claude Code):** +43 findings adicionais, incluindo:
|
|
276
|
+
- Credenciais de service account decodificadas (OAuth Base64 → client:secret)
|
|
277
|
+
- Flag no Firebase que bypassa 100% da autenticação em produção
|
|
278
|
+
- Senha de cooperado gravada em texto plano no Firebase Realtime Database
|
|
279
|
+
- CPF usado como chave primária no Firebase (enumerável)
|
|
280
|
+
- Session recording capturando dados financeiros e médicos sem consentimento
|
|
281
|
+
- 63 regras de negócio extraídas (11 implícitas)
|
|
282
|
+
- Bug potencial em cálculo de vencimento de boleto
|
|
283
|
+
- Roadmap de 36 semanas com scores: Deployability 3→9/10, Readiness 22→87/100
|
|
284
|
+
|
|
285
|
+
---
|
|
286
|
+
|
|
287
|
+
## Open Core
|
|
288
|
+
|
|
289
|
+
### Community Edition (V1) — Open Source
|
|
290
|
+
|
|
291
|
+
Foco: **Understand + Plan**
|
|
292
|
+
|
|
293
|
+
- Scanner, Compliance Engine, Context Manager
|
|
294
|
+
- 7 agentes como slash commands
|
|
295
|
+
- PRS, assessments, modernization plan
|
|
296
|
+
- Suporte a Claude Code, Codex, Cursor
|
|
297
|
+
|
|
298
|
+
### Enterprise Edition (V2) — Em desenvolvimento
|
|
299
|
+
|
|
300
|
+
Foco: **Modernize**
|
|
301
|
+
|
|
302
|
+
- Execution Engine (refatoração assistida)
|
|
303
|
+
- Pull Request Engine
|
|
304
|
+
- QA Gates
|
|
305
|
+
- CI/CD Integration
|
|
306
|
+
- Custom Rule Packs
|
|
307
|
+
- Dashboard + Team Collaboration
|
|
308
|
+
|
|
309
|
+
---
|
|
310
|
+
|
|
311
|
+
## Roadmap
|
|
312
|
+
|
|
313
|
+
- [x] Sprint 1 — Scanner + Compliance Engine
|
|
314
|
+
- [x] Sprint 2 — Install command + IDE integration
|
|
315
|
+
- [x] Sprint 3 — Context Manager (básico)
|
|
316
|
+
- [x] Sprint 4 — Validação end-to-end com projeto real
|
|
317
|
+
- [ ] Sprint 5 — Multi-IDE (Cursor, Gemini CLI)
|
|
318
|
+
- [ ] Sprint 6 — Regras para PHP, .NET, Java
|
|
319
|
+
- [ ] Sprint 7 — SDD + MMP agents
|
|
320
|
+
- [ ] Sprint 8 — Execution Specs agent + npm publish
|
|
321
|
+
|
|
322
|
+
---
|
|
323
|
+
|
|
324
|
+
## Desenvolvimento
|
|
325
|
+
|
|
326
|
+
```bash
|
|
327
|
+
git clone https://github.com/hrpimenta/legacy-squad.git
|
|
328
|
+
cd legacy-squad
|
|
329
|
+
pnpm install
|
|
330
|
+
pnpm approve-builds esbuild
|
|
331
|
+
|
|
332
|
+
# Testes
|
|
333
|
+
npx vitest run
|
|
334
|
+
|
|
335
|
+
# Dev mode (sem build)
|
|
336
|
+
npx tsx apps/cli/src/index.ts install -p /caminho/do/projeto
|
|
337
|
+
|
|
338
|
+
# Build
|
|
339
|
+
node build.mjs
|
|
340
|
+
|
|
341
|
+
# Testar versão bundled
|
|
342
|
+
node dist/cli.mjs install -p /caminho/do/projeto
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
### Estrutura do Monorepo
|
|
346
|
+
|
|
347
|
+
```
|
|
348
|
+
legacy-squad/
|
|
349
|
+
├── packages/
|
|
350
|
+
│ ├── core/ # Domain types, ports (Clean Architecture)
|
|
351
|
+
│ ├── scanner/ # Stack detection, repo index generation
|
|
352
|
+
│ ├── context/ # Context packs builder
|
|
353
|
+
│ ├── rules/ # Compliance engine, rule catalog
|
|
354
|
+
│ ├── agents/ # Agent definitions, installer, doctor
|
|
355
|
+
│ └── output/ # PRS generator
|
|
356
|
+
├── apps/
|
|
357
|
+
│ └── cli/ # CLI entry point (Commander.js)
|
|
358
|
+
├── templates/
|
|
359
|
+
│ └── claude-commands/ # Slash command templates
|
|
360
|
+
└── docs/
|
|
361
|
+
└── plans/ # Architecture decisions, plans
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
### Testes
|
|
365
|
+
|
|
366
|
+
```bash
|
|
367
|
+
npx vitest run # 28 testes (domain, scanner, compliance, agents)
|
|
368
|
+
npx vitest --watch # Watch mode
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
---
|
|
372
|
+
|
|
373
|
+
## Contribuindo
|
|
374
|
+
|
|
375
|
+
1. Fork o repositório
|
|
376
|
+
2. Crie uma branch (`git checkout -b feature/minha-feature`)
|
|
377
|
+
3. Siga os padrões: TDD (Red→Green→Refactor), SOLID, Clean Architecture
|
|
378
|
+
4. Rode os testes (`npx vitest run`)
|
|
379
|
+
5. Abra um PR
|
|
380
|
+
|
|
381
|
+
### Formas de contribuir
|
|
382
|
+
|
|
383
|
+
- Novas regras para o Compliance Engine (PHP, .NET, Java)
|
|
384
|
+
- Melhorias nos templates de agentes
|
|
385
|
+
- Suporte a novas IDEs
|
|
386
|
+
- Documentação e tradução
|
|
387
|
+
- Testes e fixtures para outras stacks
|
|
388
|
+
|
|
389
|
+
---
|
|
390
|
+
|
|
391
|
+
## Licença
|
|
392
|
+
|
|
393
|
+
MIT — veja [LICENSE](LICENSE) para detalhes.
|
|
394
|
+
|
|
395
|
+
---
|
|
396
|
+
|
|
397
|
+
<p align="center">
|
|
398
|
+
<strong>Understand. Plan. Modernize.</strong>
|
|
399
|
+
<br>
|
|
400
|
+
<em>Legacy Squad Framework</em>
|
|
401
|
+
</p>
|