legacy-squad 1.0.0-beta.6 → 1.0.0-beta.8
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/dist/cli.mjs +19 -6
- package/dist/templates/claude-commands/architecture.md +31 -20
- package/dist/templates/claude-commands/business-rules.md +27 -10
- package/dist/templates/claude-commands/generate-mmp.md +115 -0
- package/dist/templates/claude-commands/generate-prs.md +2 -0
- package/dist/templates/claude-commands/generate-sdd.md +89 -0
- package/dist/templates/claude-commands/generate-specs.md +129 -0
- package/dist/templates/claude-commands/legacy-code.md +28 -15
- package/dist/templates/claude-commands/modernization.md +22 -10
- package/dist/templates/claude-commands/security.md +32 -21
- package/package.json +1 -1
package/dist/cli.mjs
CHANGED
|
@@ -1279,12 +1279,18 @@ var Installer = class {
|
|
|
1279
1279
|
}
|
|
1280
1280
|
async copySlashCommands(templateDir, targetDir) {
|
|
1281
1281
|
const commandFiles = [
|
|
1282
|
+
// Análise (rodam primeiro e produzem assessments)
|
|
1282
1283
|
"security.md",
|
|
1283
1284
|
"architecture.md",
|
|
1284
1285
|
"legacy-code.md",
|
|
1285
1286
|
"business-rules.md",
|
|
1286
1287
|
"modernization.md",
|
|
1288
|
+
// Geradores de artefatos consolidados (rodam depois dos análise)
|
|
1287
1289
|
"generate-prs.md",
|
|
1290
|
+
"generate-sdd.md",
|
|
1291
|
+
"generate-mmp.md",
|
|
1292
|
+
"generate-specs.md",
|
|
1293
|
+
// Utilitário
|
|
1288
1294
|
"scan.md"
|
|
1289
1295
|
];
|
|
1290
1296
|
for (const file of commandFiles) {
|
|
@@ -1432,12 +1438,19 @@ program.command("install").description("Install Legacy Squad Framework inside th
|
|
|
1432
1438
|
console.log("");
|
|
1433
1439
|
console.log(" Next steps:");
|
|
1434
1440
|
console.log(" 1. Open Claude Code: claude");
|
|
1435
|
-
console.log("
|
|
1436
|
-
console.log("
|
|
1437
|
-
console.log("
|
|
1438
|
-
console.log("
|
|
1439
|
-
console.log("
|
|
1440
|
-
console.log("
|
|
1441
|
+
console.log("");
|
|
1442
|
+
console.log(" Analysis (run in order):");
|
|
1443
|
+
console.log(" /legacy-squad-security");
|
|
1444
|
+
console.log(" /legacy-squad-architecture");
|
|
1445
|
+
console.log(" /legacy-squad-legacy-code");
|
|
1446
|
+
console.log(" /legacy-squad-business-rules");
|
|
1447
|
+
console.log(" /legacy-squad-modernization");
|
|
1448
|
+
console.log("");
|
|
1449
|
+
console.log(" Consolidated artifacts (run after analysis):");
|
|
1450
|
+
console.log(" /legacy-squad-generate-prs (Product Refactor Specification)");
|
|
1451
|
+
console.log(" /legacy-squad-generate-sdd (Software Design Document)");
|
|
1452
|
+
console.log(" /legacy-squad-generate-mmp (Modernization Master Plan)");
|
|
1453
|
+
console.log(" /legacy-squad-generate-specs (Execution Specs for V2)");
|
|
1441
1454
|
console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n");
|
|
1442
1455
|
});
|
|
1443
1456
|
program.command("scan").description("Re-scan the project and update .legacy-squad/memory/").option("-p, --path <dir>", "Project root directory", ".").action(async (opts) => {
|
|
@@ -9,34 +9,45 @@ Leia estes arquivos para entender o projeto:
|
|
|
9
9
|
## Sua Missão
|
|
10
10
|
Mapear a arquitetura atual do sistema e identificar riscos estruturais. Analise:
|
|
11
11
|
|
|
12
|
-
1. **Separação de camadas** — existe separação clara entre
|
|
12
|
+
1. **Separação de camadas** — existe separação clara entre apresentação, lógica de negócio e dados?
|
|
13
13
|
2. **Acoplamento** — quais módulos dependem fortemente uns dos outros?
|
|
14
|
-
3. **
|
|
15
|
-
4. **Integrações** — como o sistema se comunica com serviços externos?
|
|
16
|
-
5. **
|
|
14
|
+
3. **Gestão de estado / sessão** — como o estado é gerenciado? Há single source of truth?
|
|
15
|
+
4. **Integrações** — como o sistema se comunica com serviços externos, bancos, filas?
|
|
16
|
+
5. **Roteamento / entrypoints** — como o roteamento HTTP/navegação é estruturado?
|
|
17
17
|
6. **Padrões conflitantes** — há mais de um padrão para a mesma coisa?
|
|
18
18
|
|
|
19
|
+
## Stack-aware analysis
|
|
20
|
+
|
|
21
|
+
Antes de analisar, leia `repo-index.json` e identifique a stack. Adapte vocabulário e patterns à stack detectada:
|
|
22
|
+
|
|
23
|
+
- **PHP / Laravel / Symfony**: identifique Controllers, Models (Eloquent/Doctrine), Services, Repositories, Middlewares, Service Providers; avalie se a separação MVC está respeitada ou se há lógica espalhada em views/blade; veja como Routes e Form Requests organizam validação.
|
|
24
|
+
- **.NET / ASP.NET Core**: identifique Controllers, Services, Repositories, DTOs, Middleware pipeline, Dependency Injection container; avalie uso de Minimal APIs vs Controllers; veja como `Program.cs/Startup.cs` configura o pipeline.
|
|
25
|
+
- **Java / Spring Boot / Spring MVC**: identifique `@RestController/@Controller`, `@Service`, `@Repository`, `@Configuration`, `@Component`; avalie uso de DTOs vs entidades expostas; veja como Spring Profiles e `application.yml/properties` separam ambientes.
|
|
26
|
+
- **React Native / Expo / mobile**: identifique screens, navigators (React Navigation), state stores (MobX/Redux/Zustand/Context), API clients; avalie separação de UI vs lógica de negócio em hooks/services.
|
|
27
|
+
- **Node backend / Express / NestJS**: identifique routes, controllers, middlewares, services; em NestJS observe modules e DI; em Express puro avalie se há separação de camadas ou tudo está em handlers.
|
|
28
|
+
|
|
19
29
|
## Arquivos para Analisar
|
|
20
|
-
Com base no repo-index
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
-
|
|
24
|
-
- Componentes compartilhados
|
|
25
|
-
-
|
|
30
|
+
Com base no `repo-index.json`, priorize:
|
|
31
|
+
- Entrypoints da aplicação (`index.php`, `Program.cs`, `Application.java`, `App.tsx`, `server.js`)
|
|
32
|
+
- Configurações de roteamento e middleware
|
|
33
|
+
- Camada de persistência (repositories, DAOs, ORMs)
|
|
34
|
+
- Componentes/módulos compartilhados (utils, shared, common)
|
|
35
|
+
- Configurações de infraestrutura (Dockerfile, docker-compose, application.yml)
|
|
26
36
|
|
|
27
37
|
## Output
|
|
28
38
|
Salve em: `.legacy-squad/outputs/assessments/architecture-assessment.md`
|
|
29
39
|
|
|
30
40
|
Estrutura:
|
|
31
|
-
1. Current Architecture Overview (com diagrama em mermaid se possível)
|
|
32
|
-
2. Layer Separation Analysis
|
|
33
|
-
3. Coupling & Cohesion Assessment
|
|
34
|
-
4. Integration Points Map
|
|
35
|
-
5. Architecture Risks
|
|
36
|
-
6. Target Architecture Recommendations
|
|
41
|
+
1. **Current Architecture Overview** (com diagrama em mermaid se possível)
|
|
42
|
+
2. **Layer Separation Analysis** (camadas detectadas e quanto a separação é respeitada)
|
|
43
|
+
3. **Coupling & Cohesion Assessment** (módulos com alto fan-out, dependências circulares)
|
|
44
|
+
4. **Integration Points Map** (bancos, APIs externas, filas, caches)
|
|
45
|
+
5. **Architecture Risks** (dívidas estruturais, padrões conflitantes, god classes)
|
|
46
|
+
6. **Target Architecture Recommendations** (alvo incremental — sem big-bang)
|
|
37
47
|
|
|
38
48
|
## Regras
|
|
39
|
-
- Base toda análise em evidência dos arquivos reais
|
|
40
|
-
- Use terminologia C4 (Context, Container, Component)
|
|
41
|
-
- Propostas de arquitetura alvo devem ser incrementais
|
|
42
|
-
- Considere que o sistema está em produção
|
|
49
|
+
- Base toda análise em evidência dos arquivos reais (arquivo, linha, snippet)
|
|
50
|
+
- Use terminologia C4 (Context, Container, Component) quando aplicável
|
|
51
|
+
- Propostas de arquitetura alvo devem ser incrementais (Strangler Fig, Branch by Abstraction)
|
|
52
|
+
- Considere que o sistema está em produção — toda recomendação deve ser deployável isoladamente
|
|
53
|
+
- Recomendações específicas devem citar APIs/bibliotecas da stack (e.g., "introduza um Service Provider em Laravel", "extraia para um `@Service` Spring", "use DI nativo do ASP.NET Core")
|
|
@@ -11,25 +11,42 @@ Extrair regras de negócio escondidas no código. Sistemas legados frequentement
|
|
|
11
11
|
1. **Regras explícitas** — validações, permissões, fluxos visíveis
|
|
12
12
|
2. **Regras implícitas** — condicionais obscuros, magic numbers, comportamentos em catch blocks
|
|
13
13
|
3. **Modelo de domínio** — entidades principais e seus relacionamentos
|
|
14
|
-
4. **Fluxos de negócio** — jornadas do usuário codificadas
|
|
14
|
+
4. **Fluxos de negócio** — jornadas do usuário codificadas no sistema
|
|
15
15
|
5. **Regras que devem ser preservadas** — lógica que não pode mudar na modernização
|
|
16
16
|
|
|
17
|
-
##
|
|
18
|
-
|
|
17
|
+
## Stack-aware analysis
|
|
18
|
+
|
|
19
|
+
Antes de analisar, leia `repo-index.json` e identifique a stack. Adapte onde procurar:
|
|
20
|
+
|
|
21
|
+
- **PHP / Laravel / Symfony**: olhe FormRequests/Validators (regras explícitas de input), Controllers (lógica de fluxo), Models/Eloquent (relacionamentos, scopes, accessors), Service classes, Middleware (regras de autorização), Policies/Gates.
|
|
22
|
+
- **.NET / ASP.NET Core**: olhe DataAnnotations e FluentValidation (validações), Controllers/Minimal APIs, Services, EF Core entities (constraints, relationships), Authorization Policies, Filters (regras transversais).
|
|
23
|
+
- **Java / Spring Boot**: olhe Bean Validation (`@NotNull`, `@Pattern`, `@Valid`), `@RestController` methods, `@Service` classes, JPA entities (`@Entity`, `@OneToMany`, lifecycle callbacks), `@PreAuthorize/@Secured`, Aspects.
|
|
24
|
+
- **React Native / mobile**: olhe screens com lógica de submissão, hooks/services com validações, state stores (regras de transição de estado), middleware de API (autorização do cliente), formulários e suas validações inline.
|
|
25
|
+
- **Node backend**: olhe middlewares de validação (Joi, Zod, class-validator), controllers/handlers, services, schemas de banco (Mongoose, Sequelize, Prisma — constraints e hooks).
|
|
26
|
+
|
|
27
|
+
## Padrões a procurar (independente da stack)
|
|
28
|
+
|
|
29
|
+
- `switch/case` ou `if/else if/else` em cadeia com nomes de operações ou status — fluxos de máquina de estado escondidos
|
|
30
|
+
- `ifs` aninhados com condições compostas — regras de negócio camufladas
|
|
31
|
+
- Magic numbers e magic strings (e.g., `if (status == 3)`, `if (tipo == "PJ")`) — devem virar enums/constantes nomeadas
|
|
32
|
+
- Lookups em arrays/maps hardcoded — tabelas de domínio que poderiam ser configuráveis
|
|
33
|
+
- Try/catch que silencia erro mas faz uma ação alternativa — fluxo de negócio em fallback
|
|
34
|
+
- Cálculos com fórmulas literais — regras tarifárias/de cálculo que ninguém entende mais
|
|
19
35
|
|
|
20
36
|
## Output
|
|
21
37
|
Salve em: `.legacy-squad/outputs/assessments/business-rules-assessment.md`
|
|
22
38
|
|
|
23
39
|
Estrutura:
|
|
24
|
-
1. Business Domain Overview
|
|
25
|
-
2. Extracted Business Rules (
|
|
26
|
-
3. Validation Rules Catalog
|
|
27
|
-
4. Permission Model
|
|
28
|
-
5. Implicit Rules (
|
|
29
|
-
6. Rules Preservation Checklist for Modernization
|
|
40
|
+
1. **Business Domain Overview** (entidades principais, glossário de domínio extraído do código)
|
|
41
|
+
2. **Extracted Business Rules** (tabela: ID, regra, arquivo, linha, tipo explícito/implícito)
|
|
42
|
+
3. **Validation Rules Catalog** (consolidado por campo/entidade)
|
|
43
|
+
4. **Permission Model** (quem pode fazer o quê — extraído de middlewares, policies, guards)
|
|
44
|
+
5. **Implicit Rules** (regras escondidas em código — magic numbers, condicionais sem documentação)
|
|
45
|
+
6. **Rules Preservation Checklist for Modernization** (lista do que NÃO pode mudar)
|
|
30
46
|
|
|
31
47
|
## Regras
|
|
32
48
|
- Toda regra extraída deve citar arquivo e linha
|
|
33
49
|
- Distinga regras de negócio de detalhes técnicos de implementação
|
|
34
50
|
- Sinalize regras que parecem acidentais vs intencionais
|
|
35
|
-
- Use linguagem de domínio, não jargão técnico
|
|
51
|
+
- Use linguagem de domínio (a do negócio do projeto), não jargão técnico
|
|
52
|
+
- Quando achar magic numbers/strings, sugira o nome da constante apropriado (e.g., `STATUS_APROVADO` em vez de `3`)
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
Você é o **MMP Generator** do Legacy Squad Framework.
|
|
2
|
+
|
|
3
|
+
## Contexto
|
|
4
|
+
Leia estes arquivos:
|
|
5
|
+
- `.legacy-squad/memory/repo-index.json` — inventário do repositório
|
|
6
|
+
- `.legacy-squad/memory/findings.json` — achados determinísticos
|
|
7
|
+
- `.legacy-squad/outputs/assessments/modernization-assessment.md` — estratégia de modernização (obrigatório)
|
|
8
|
+
- `.legacy-squad/outputs/assessments/legacy-code-assessment.md` — qualidade do código (se existir)
|
|
9
|
+
- `.legacy-squad/outputs/sdd/SDD.md` — desenho técnico (se já gerado)
|
|
10
|
+
|
|
11
|
+
## Sua Missão
|
|
12
|
+
Consolidar o plano em um **Modernization Master Plan (MMP)** — o documento que transforma a estratégia de modernização em um **roadmap executável**, fase a fase, com riscos, rollbacks e métricas. O MMP é o documento que vai para o decision maker e que orienta a sequência de execução.
|
|
13
|
+
|
|
14
|
+
Antes de planejar, leia `repo-index.json` e adapte os planos de upgrade à stack detectada.
|
|
15
|
+
|
|
16
|
+
## Stack-aware analysis
|
|
17
|
+
|
|
18
|
+
- **PHP / Laravel / Symfony**: caminhos típicos — PHP 5.x → 7.4 → 8.x (cada versão tem breaking changes consideráveis); Laravel 6/7 → 8 → 9 → 10 → 11; Symfony 4 → 5 → 6 → 7. Considere também substituição de `mysql_*` por PDO/Eloquent, troca de Carbon legado, atualização de Composer.
|
|
19
|
+
- **.NET / ASP.NET**: caminhos típicos — .NET Framework 4.x → .NET Standard 2.0 (ponte) → .NET 8 (LTS) ou .NET 9; ASP.NET 4.x (System.Web) → ASP.NET Core (sem System.Web); EF6 → EF Core; Web Forms → Razor Pages ou Blazor. Pacotes legados (System.Web.Http, etc.) precisam substituição.
|
|
20
|
+
- **Java / Spring**: caminhos típicos — Java 8/11 → 17 (LTS) → 21 (LTS); Spring Boot 2.x → 3.x (exige Java 17+ e migração `javax.*` → `jakarta.*`); migração entre Spring Cloud generations; substituição de `Vector/Hashtable` por concorrent collections.
|
|
21
|
+
- **React Native / Expo**: caminhos típicos — Expo SDK lateral upgrades (48 → 50 → 52 → 53), cada um quebrando módulos nativos; ativação de New Architecture (Fabric/TurboModules); RN 0.6x → 0.7x → 0.79.
|
|
22
|
+
- **Node backend**: caminhos típicos — Node 14/16 → 18/20 (LTS); Express 4 → 5; NestJS 8 → 10 → 11; CommonJS → ESM (quando aplicável).
|
|
23
|
+
|
|
24
|
+
## Output
|
|
25
|
+
Salve em: `.legacy-squad/outputs/mmp/MMP.md`
|
|
26
|
+
Gere também `.legacy-squad/outputs/mmp/MMP.json` com os dados estruturados (para consumo do generate-specs).
|
|
27
|
+
|
|
28
|
+
Estrutura obrigatória do MMP.md:
|
|
29
|
+
|
|
30
|
+
```markdown
|
|
31
|
+
# Modernization Master Plan — [nome do projeto]
|
|
32
|
+
|
|
33
|
+
## 1. Executive Summary
|
|
34
|
+
[Resumo em 1 parágrafo: estado atual, alvo, número de fases, prazo estimado, principais riscos]
|
|
35
|
+
|
|
36
|
+
## 2. Modernization Strategy
|
|
37
|
+
[Padrão escolhido (Strangler Fig, Branch by Abstraction, Parallel Run) com justificativa]
|
|
38
|
+
|
|
39
|
+
## 3. Phase Roadmap
|
|
40
|
+
|
|
41
|
+
### Phase 1 — Foundation
|
|
42
|
+
- **Goal**: estabelecer base segura e observável
|
|
43
|
+
- **Scope**: [escopo concreto — listar módulos/componentes]
|
|
44
|
+
- **Deliverables**: [o que sai dessa fase]
|
|
45
|
+
- **Dependencies**: nenhuma
|
|
46
|
+
- **Estimated effort**: S/M/L/XL
|
|
47
|
+
- **Deployability Score**: 1-10
|
|
48
|
+
|
|
49
|
+
### Phase 2 — Core
|
|
50
|
+
- **Goal**: modernizar núcleo do sistema
|
|
51
|
+
- **Scope**: [...]
|
|
52
|
+
- **Deliverables**: [...]
|
|
53
|
+
- **Dependencies**: Phase 1 completa
|
|
54
|
+
- **Estimated effort**: ...
|
|
55
|
+
- **Deployability Score**: 1-10
|
|
56
|
+
|
|
57
|
+
### Phase 3 — Evolution
|
|
58
|
+
- **Goal**: features e otimizações que dependem da base modernizada
|
|
59
|
+
- **Scope**: [...]
|
|
60
|
+
- **Deliverables**: [...]
|
|
61
|
+
- **Dependencies**: Phase 2 completa
|
|
62
|
+
- **Estimated effort**: ...
|
|
63
|
+
- **Deployability Score**: 1-10
|
|
64
|
+
|
|
65
|
+
## 4. Stack Upgrade Plan
|
|
66
|
+
|
|
67
|
+
| Componente | Versão atual | Versão alvo | Fase | Bloqueio |
|
|
68
|
+
|---|---|---|---|---|
|
|
69
|
+
| Runtime (PHP/Node/Java/.NET) | ... | ... | 1 | ... |
|
|
70
|
+
| Framework | ... | ... | ... | ... |
|
|
71
|
+
| Banco de dados | ... | ... | ... | ... |
|
|
72
|
+
| Bibliotecas críticas | ... | ... | ... | ... |
|
|
73
|
+
|
|
74
|
+
## 5. Risk Matrix
|
|
75
|
+
|
|
76
|
+
| Risco | Probabilidade (B/M/A) | Impacto (B/M/A) | Fase | Mitigação |
|
|
77
|
+
|---|---|---|---|---|
|
|
78
|
+
| ... | ... | ... | ... | ... |
|
|
79
|
+
|
|
80
|
+
## 6. Rollback Strategy
|
|
81
|
+
|
|
82
|
+
Para cada fase, defina:
|
|
83
|
+
- **Mecanismo**: feature flag / blue-green / canary / parallel run / revert via git
|
|
84
|
+
- **Critério de gatilho**: o que dispara o rollback
|
|
85
|
+
- **Janela de validação**: por quanto tempo o rollback fica armado
|
|
86
|
+
- **Owner**: quem decide
|
|
87
|
+
|
|
88
|
+
## 7. Scores Globais
|
|
89
|
+
|
|
90
|
+
### 7.1 Execution Readiness Score (0-100)
|
|
91
|
+
Calcule a partir dos critérios:
|
|
92
|
+
- **Architecture (20)**: ___
|
|
93
|
+
- **Security (20)**: ___
|
|
94
|
+
- **Coupling (20)**: ___
|
|
95
|
+
- **Testability (20)**: ___
|
|
96
|
+
- **Deployability (20)**: ___
|
|
97
|
+
- **Total**: ___
|
|
98
|
+
|
|
99
|
+
### 7.2 Deployability Score por Fase
|
|
100
|
+
[Tabela: Phase | Score 1-10 | Justificativa]
|
|
101
|
+
|
|
102
|
+
## 8. Success Metrics
|
|
103
|
+
- Métricas de processo (lead time, change failure rate, etc.)
|
|
104
|
+
- Métricas de produto (latência, error rate, etc.)
|
|
105
|
+
- Métricas de segurança (findings críticos resolvidos, etc.)
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## Regras
|
|
109
|
+
- Nenhuma fase pode exigir big-bang — cada fase deve ser deployável independentemente
|
|
110
|
+
- Rollback é **obrigatório** para cada fase, com mecanismo concreto
|
|
111
|
+
- Stack upgrade não pode pular versões com breaking changes severas — sempre listar versão intermediária quando necessário
|
|
112
|
+
- Risk Matrix deve ter pelo menos 1 risco por fase
|
|
113
|
+
- Os scores devem ser justificados — não jogar números soltos
|
|
114
|
+
- Recomendações específicas devem citar a stack detectada (ferramentas, comandos, padrões)
|
|
115
|
+
- Considere que o sistema está em produção — todo plano deve preservar uptime
|
|
@@ -9,6 +9,8 @@ Leia estes arquivos:
|
|
|
9
9
|
## Sua Missão
|
|
10
10
|
Consolidar todos os assessments em um único **PRS (Product Refactor Specification)** — o documento final de diagnóstico do legado.
|
|
11
11
|
|
|
12
|
+
Leia primeiro o `repo-index.json` para conhecer a stack do projeto. O PRS deve usar vocabulário da stack detectada (PHP/Laravel, .NET, Java/Spring, React Native, Node, etc.) ao consolidar findings e recomendações — nada de termos mobile-only se o projeto é PHP, nem termos backend se é mobile.
|
|
13
|
+
|
|
12
14
|
## Output
|
|
13
15
|
Salve em: `.legacy-squad/outputs/reports/PRS.md`
|
|
14
16
|
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
Você é o **SDD Generator** do Legacy Squad Framework.
|
|
2
|
+
|
|
3
|
+
## Contexto
|
|
4
|
+
Leia estes arquivos:
|
|
5
|
+
- `.legacy-squad/memory/repo-index.json` — inventário do repositório (stack, módulos, integrações)
|
|
6
|
+
- `.legacy-squad/memory/findings.json` — achados determinísticos do compliance engine
|
|
7
|
+
- `.legacy-squad/outputs/assessments/architecture-assessment.md` — análise arquitetural (obrigatório)
|
|
8
|
+
- `.legacy-squad/outputs/assessments/security-assessment.md` — postura de segurança (se existir)
|
|
9
|
+
- `.legacy-squad/outputs/assessments/legacy-code-assessment.md` — saúde do código (se existir)
|
|
10
|
+
|
|
11
|
+
## Sua Missão
|
|
12
|
+
Consolidar os assessments em um **Software Design Document (SDD)** — o documento técnico que descreve a **arquitetura atual** do sistema e propõe a **arquitetura alvo** com decisões justificadas. O SDD é o blueprint técnico que o time de engenharia usa para guiar a modernização.
|
|
13
|
+
|
|
14
|
+
Antes de começar, leia `repo-index.json` e identifique a stack. Todas as descrições, diagramas e decisões devem usar vocabulário e bibliotecas pertinentes à stack detectada.
|
|
15
|
+
|
|
16
|
+
## Stack-aware analysis
|
|
17
|
+
|
|
18
|
+
- **PHP / Laravel / Symfony**: componentes típicos — Controllers, Service Providers, Repositories (Eloquent/Doctrine), Middlewares, Jobs/Queues, Events/Listeners. Integrações via HTTP Client, Guzzle, Redis/Cache, Database (MySQL/PostgreSQL). Arquitetura alvo costuma envolver Domain layer, Action classes, FormRequests para validação centralizada.
|
|
19
|
+
- **.NET / ASP.NET Core**: componentes típicos — Controllers (ou Minimal APIs), Services, Repositories, Middleware pipeline, MediatR handlers, EF Core DbContext, Background Services. Integrações via HttpClient, IConfiguration, Distributed Cache. Arquitetura alvo costuma envolver CQRS, Vertical Slice Architecture, ou Clean Architecture.
|
|
20
|
+
- **Java / Spring Boot**: componentes típicos — `@RestController`, `@Service`, `@Repository`, `@Component`, `@Configuration`, JPA entities. Integrações via RestTemplate/WebClient, Spring Data, Spring Cloud. Arquitetura alvo costuma envolver Hexagonal, módulos por bounded context, Spring Modulith.
|
|
21
|
+
- **React Native / Expo / mobile**: componentes típicos — Screens, Navigators, Stores (MobX/Redux/Zustand), Hooks customizados, API Clients, Native Modules. Arquitetura alvo costuma envolver feature-based folders, separação de UI/Domain/Data, MVVM ou clean-mobile.
|
|
22
|
+
- **Node backend / Express / NestJS**: componentes típicos — Routes/Controllers, Middlewares, Services, Repositories, DTOs. Em NestJS — Modules + Providers + DI. Arquitetura alvo costuma envolver Hexagonal, Clean, ou modular monolith.
|
|
23
|
+
|
|
24
|
+
## Output
|
|
25
|
+
Salve em: `.legacy-squad/outputs/sdd/SDD.md`
|
|
26
|
+
Gere também `.legacy-squad/outputs/sdd/SDD.json` com os dados estruturados.
|
|
27
|
+
|
|
28
|
+
Estrutura obrigatória do SDD.md:
|
|
29
|
+
|
|
30
|
+
```markdown
|
|
31
|
+
# Software Design Document — [nome do projeto]
|
|
32
|
+
|
|
33
|
+
## 1. Overview
|
|
34
|
+
[Stack detectada, propósito do sistema, contexto de negócio em 1 parágrafo]
|
|
35
|
+
|
|
36
|
+
## 2. Current Architecture
|
|
37
|
+
### 2.1 Logical View
|
|
38
|
+
[Diagrama mermaid C4 — Container level]
|
|
39
|
+
### 2.2 Component Inventory
|
|
40
|
+
[Tabela: Componente | Responsabilidade | Localização no código | Tecnologia]
|
|
41
|
+
### 2.3 Integrations
|
|
42
|
+
[Tabela: Sistema externo | Tipo (DB/API/Queue/Cache) | Protocolo | Evidência]
|
|
43
|
+
### 2.4 Current Pain Points
|
|
44
|
+
[Lista das dores estruturais — referência ao architecture-assessment]
|
|
45
|
+
|
|
46
|
+
## 3. Target Architecture
|
|
47
|
+
### 3.1 Logical View
|
|
48
|
+
[Diagrama mermaid C4 — alvo proposto]
|
|
49
|
+
### 3.2 Component Changes
|
|
50
|
+
[Tabela: Mudança | De | Para | Justificativa | Risco]
|
|
51
|
+
### 3.3 Migration Strategy
|
|
52
|
+
[Strangler Fig, Branch by Abstraction, Parallel Run — qual aplica e onde]
|
|
53
|
+
|
|
54
|
+
## 4. Cross-cutting Concerns
|
|
55
|
+
### 4.1 Security Architecture
|
|
56
|
+
[Como segurança atravessa o sistema — auth, authz, secrets, criptografia]
|
|
57
|
+
### 4.2 Observability
|
|
58
|
+
[Logs, métricas, tracing — atual + alvo]
|
|
59
|
+
### 4.3 Error Handling
|
|
60
|
+
[Padrão de tratamento de erros + propagação]
|
|
61
|
+
### 4.4 Configuration & Secrets
|
|
62
|
+
[Onde vivem env vars, vaults, feature flags]
|
|
63
|
+
|
|
64
|
+
## 5. Constraints
|
|
65
|
+
- **Production**: sistema está em produção; nenhuma fase pode ser big-bang
|
|
66
|
+
- **Reversibility**: cada mudança deve ser revertível
|
|
67
|
+
- **Compatibility**: APIs públicas/contratos não mudam sem versionamento
|
|
68
|
+
- [adicione restrições específicas da stack ou do negócio]
|
|
69
|
+
|
|
70
|
+
## 6. Architecture Decision Records (ADRs)
|
|
71
|
+
[Para cada decisão arquitetural importante, gere um ADR resumido]
|
|
72
|
+
|
|
73
|
+
### ADR-001: [Título da decisão]
|
|
74
|
+
- **Status**: Proposed | Accepted | Superseded
|
|
75
|
+
- **Context**: [problema/contexto]
|
|
76
|
+
- **Decision**: [decisão tomada]
|
|
77
|
+
- **Consequences**: [implicações positivas e negativas]
|
|
78
|
+
- **Alternatives considered**: [outras opções e por que foram rejeitadas]
|
|
79
|
+
|
|
80
|
+
### ADR-002: ...
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Regras
|
|
84
|
+
- Toda decisão arquitetural deve gerar um ADR — não enterre decisões em prosa
|
|
85
|
+
- Os diagramas devem usar Mermaid (renderizam no GitHub e VS Code)
|
|
86
|
+
- Cada componente do inventário deve citar arquivo/módulo de evidência
|
|
87
|
+
- Arquitetura alvo precisa ser **incremental**: nenhum ADR pode exigir "reescrita do zero"
|
|
88
|
+
- Vocabulário e exemplos devem refletir a stack detectada (Controllers em Laravel, `@RestController` em Spring, etc.)
|
|
89
|
+
- Se um assessment necessário não existir, gere o SDD parcial e indique no Overview qual pilar não foi avaliado
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
Você é o **Execution Specs Generator** do Legacy Squad Framework.
|
|
2
|
+
|
|
3
|
+
## Contexto
|
|
4
|
+
Leia estes arquivos:
|
|
5
|
+
- `.legacy-squad/memory/repo-index.json` — inventário do repositório
|
|
6
|
+
- `.legacy-squad/memory/findings.json` — achados determinísticos
|
|
7
|
+
- `.legacy-squad/outputs/mmp/MMP.md` (e MMP.json) — plano mestre de modernização (obrigatório)
|
|
8
|
+
- `.legacy-squad/outputs/sdd/SDD.md` — desenho técnico (se existir)
|
|
9
|
+
- `.legacy-squad/outputs/assessments/business-rules-assessment.md` — regras a preservar (se existir)
|
|
10
|
+
|
|
11
|
+
## Sua Missão
|
|
12
|
+
Decompor o MMP em **Execution Specs** — especificações pequenas, rastreáveis e individualmente deployáveis. Cada spec é uma unidade de trabalho que um time (ou um agente na V2 do framework) pode executar com clareza sobre objetivo, escopo, critérios de aceite e rollback.
|
|
13
|
+
|
|
14
|
+
Antes de gerar specs, leia `repo-index.json`. Os specs devem usar vocabulário e referências da stack detectada — paths reais do projeto, nomes de classes/módulos existentes, bibliotecas pertinentes.
|
|
15
|
+
|
|
16
|
+
## Stack-aware analysis
|
|
17
|
+
|
|
18
|
+
Ao escrever specs, ancore as descrições na stack detectada:
|
|
19
|
+
|
|
20
|
+
- **PHP / Laravel / Symfony**: referencie Controllers/Services/Repositories existentes, FormRequests, Middleware, Routes (`routes/web.php`, `routes/api.php`), comandos artisan, migrations.
|
|
21
|
+
- **.NET / ASP.NET Core**: referencie Controllers/Services/Repositories, DI registrations no `Program.cs`, Middleware pipeline, EF Core migrations, appsettings.
|
|
22
|
+
- **Java / Spring Boot**: referencie `@RestController`/`@Service`/`@Repository`, classes de configuração, Flyway/Liquibase migrations, `application.yml` profiles.
|
|
23
|
+
- **React Native / Expo**: referencie screens, navigators, stores, hooks, services, módulos nativos.
|
|
24
|
+
- **Node backend**: referencie controllers/middlewares/services, schemas (Joi/Zod/class-validator), migrations.
|
|
25
|
+
|
|
26
|
+
## Output
|
|
27
|
+
Salve cada spec individualmente em: `.legacy-squad/outputs/specs/SPEC-[PILLAR]-[NNN].yaml`
|
|
28
|
+
|
|
29
|
+
Exemplos de IDs:
|
|
30
|
+
- `SPEC-SEC-001.yaml`, `SPEC-SEC-002.yaml` (security)
|
|
31
|
+
- `SPEC-ARC-001.yaml` (architecture)
|
|
32
|
+
- `SPEC-LEG-001.yaml` (legacy code)
|
|
33
|
+
- `SPEC-MOD-001.yaml` (modernization)
|
|
34
|
+
|
|
35
|
+
Gere também `.legacy-squad/outputs/specs/INDEX.md` listando todas as specs com seus metadados.
|
|
36
|
+
|
|
37
|
+
## Estrutura obrigatória de cada SPEC-*.yaml
|
|
38
|
+
|
|
39
|
+
```yaml
|
|
40
|
+
id: SPEC-SEC-001
|
|
41
|
+
title: "Centralize authentication session handling"
|
|
42
|
+
pillar: security # security | architecture | legacy_code | business_rules | modernization
|
|
43
|
+
phase: foundation # foundation | core | evolution
|
|
44
|
+
risk: high # low | medium | high | critical
|
|
45
|
+
deployability_score: 7 # 1-10
|
|
46
|
+
human_approval_required: true # bool
|
|
47
|
+
estimated_effort: M # S | M | L | XL
|
|
48
|
+
|
|
49
|
+
affected_files:
|
|
50
|
+
- src/auth/AuthService.php
|
|
51
|
+
- src/auth/middleware/CheckSession.php
|
|
52
|
+
|
|
53
|
+
objective: >
|
|
54
|
+
Descrição em 1-3 linhas do que essa spec entrega — sem detalhes de implementação.
|
|
55
|
+
|
|
56
|
+
current_behavior: >
|
|
57
|
+
Como o sistema se comporta hoje — referência ao código atual (arquivo, linhas, padrão usado).
|
|
58
|
+
|
|
59
|
+
expected_behavior: >
|
|
60
|
+
Como o sistema deve se comportar após a spec — sem ambiguidade.
|
|
61
|
+
|
|
62
|
+
acceptance_criteria:
|
|
63
|
+
- Critério verificável 1 (binário: passa ou falha)
|
|
64
|
+
- Critério verificável 2
|
|
65
|
+
- Critério verificável 3
|
|
66
|
+
|
|
67
|
+
dependencies:
|
|
68
|
+
- SPEC-SEC-000 # outras specs que devem ser concluídas antes
|
|
69
|
+
- external: "PHP >= 8.1" # pré-requisitos externos
|
|
70
|
+
|
|
71
|
+
rollback:
|
|
72
|
+
strategy: revert # revert | feature-flag | parallel-run | blue-green
|
|
73
|
+
trigger: "Latência p95 > 500ms por 5 min consecutivos"
|
|
74
|
+
validation_window: "24h após deploy"
|
|
75
|
+
owner: "tech-lead"
|
|
76
|
+
|
|
77
|
+
evidence:
|
|
78
|
+
findings:
|
|
79
|
+
- SEC-CRED-001 # IDs do compliance engine relacionados
|
|
80
|
+
assessments:
|
|
81
|
+
- security-assessment.md#section-1
|
|
82
|
+
|
|
83
|
+
business_rules_to_preserve:
|
|
84
|
+
- "Usuário ativo é definido por status IN ('A', 'V') e last_login > 90 dias"
|
|
85
|
+
- "Sessão expira em 30 minutos de inatividade"
|
|
86
|
+
|
|
87
|
+
notes: >
|
|
88
|
+
Notas adicionais — alertas, decisões pendentes, perguntas em aberto.
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## Estrutura do INDEX.md
|
|
92
|
+
|
|
93
|
+
```markdown
|
|
94
|
+
# Execution Specs Index — [nome do projeto]
|
|
95
|
+
|
|
96
|
+
Geração: [data]
|
|
97
|
+
Total de specs: N
|
|
98
|
+
Pilares cobertos: security, architecture, legacy_code, business_rules, modernization
|
|
99
|
+
|
|
100
|
+
## Foundation Phase
|
|
101
|
+
| ID | Title | Pillar | Risk | Effort | Deployability |
|
|
102
|
+
|----|-------|--------|------|--------|---------------|
|
|
103
|
+
| SPEC-SEC-001 | Centralize session... | security | high | M | 7 |
|
|
104
|
+
| ... |
|
|
105
|
+
|
|
106
|
+
## Core Phase
|
|
107
|
+
| ID | Title | Pillar | Risk | Effort | Deployability |
|
|
108
|
+
|----|-------|--------|------|--------|---------------|
|
|
109
|
+
| ... |
|
|
110
|
+
|
|
111
|
+
## Evolution Phase
|
|
112
|
+
| ID | Title | Pillar | Risk | Effort | Deployability |
|
|
113
|
+
|----|-------|--------|------|--------|---------------|
|
|
114
|
+
| ... |
|
|
115
|
+
|
|
116
|
+
## Dependency Graph
|
|
117
|
+
[Diagrama mermaid mostrando ordem de execução considerando `dependencies` de cada spec]
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## Regras
|
|
121
|
+
- **Toda spec é independentemente deployável** — não deve depender de outra spec não-concluída no mesmo deploy
|
|
122
|
+
- **Rollback é obrigatório** em cada spec — sem exceção
|
|
123
|
+
- **Acceptance criteria devem ser binários** — passa ou falha, sem subjetividade
|
|
124
|
+
- **Affected files devem existir** — referencie sempre paths reais do projeto detectado
|
|
125
|
+
- **Specs de alto risco** (`risk: high` ou `critical`) sempre têm `human_approval_required: true`
|
|
126
|
+
- **Limite de tamanho**: se uma spec virar XL ou se tiver mais de 8 acceptance criteria, decomponha em specs menores
|
|
127
|
+
- **Preserve business rules**: cada spec que toca lógica de negócio deve listar quais regras NÃO podem mudar
|
|
128
|
+
- Evidência (findings, assessments) é obrigatória — specs sem evidência são suspeitas
|
|
129
|
+
- Vocabulário e nomes de arquivos refletem a stack detectada
|
|
@@ -3,32 +3,45 @@ Você é o **Legacy Code Agent** do Legacy Squad Framework.
|
|
|
3
3
|
## Contexto
|
|
4
4
|
Leia estes arquivos para entender o projeto:
|
|
5
5
|
- `.legacy-squad/memory/repo-index.json` — inventário do repositório
|
|
6
|
-
- `.legacy-squad/memory/findings.json` — achados do compliance engine
|
|
6
|
+
- `.legacy-squad/memory/findings.json` — achados do compliance engine (atenção especial a CQ-DEPRECATED-001 e CQ-MIX-001)
|
|
7
7
|
- `.legacy-squad/memory/context-packs.json` — resumo dos módulos
|
|
8
8
|
|
|
9
9
|
## Sua Missão
|
|
10
10
|
Avaliar a qualidade do código, identificar hotspots e propor prioridades de refatoração:
|
|
11
11
|
|
|
12
12
|
1. **Hotspots** — arquivos maiores, mais complexos ou mais acoplados
|
|
13
|
-
2. **
|
|
14
|
-
3. **
|
|
15
|
-
4. **
|
|
16
|
-
5. **
|
|
17
|
-
6. **
|
|
13
|
+
2. **APIs depreciadas / removidas** — uso de bibliotecas/funções obsoletas
|
|
14
|
+
3. **Migração de versão de linguagem** — código que ainda usa padrões antigos da linguagem
|
|
15
|
+
4. **Duplicação** — padrões repetidos que poderiam ser extraídos
|
|
16
|
+
5. **Cobertura de testes** — quais áreas críticas não têm testes?
|
|
17
|
+
6. **Código morto** — imports/dependências não usados, funções/classes órfãs
|
|
18
|
+
7. **Error handling** — padrões de tratamento de erros (incluindo catches vazios)
|
|
19
|
+
|
|
20
|
+
## Stack-aware analysis
|
|
21
|
+
|
|
22
|
+
Antes de analisar, leia `repo-index.json` e identifique a stack. Adapte vocabulário e patterns à stack detectada:
|
|
23
|
+
|
|
24
|
+
- **PHP / Laravel / Symfony**: procure por `mysql_*` (removido no PHP 7), `ereg/eregi/split` (removidos), uso de superglobais sem filtro, classes God com 500+ linhas, controllers fat sem service layer; verifique se `composer.json` aponta para versões PHP/framework EOL; uso de `array()` em vez de `[]`, `var` em vez de `private/protected`.
|
|
25
|
+
- **.NET / ASP.NET / C#**: procure por `WebClient` (obsoleto, use `HttpClient`), `ConfigurationManager.AppSettings` (legado, use `IConfiguration`), `BinaryFormatter` (banido a partir de .NET 5), `HashAlgorithm.Create()` sem argumento; verifique `.csproj` com `net4xx` (Framework legado) vs `net8.0+` (moderno); regions excessivas, classes parciais sem necessidade.
|
|
26
|
+
- **Java / Spring**: procure por `Vector/Hashtable/Stack` (use `ArrayList/HashMap/Deque`), `Date` legado (use `java.time`), `synchronized` excessivo, `Object[]` em vez de generics, `instanceof` em cadeia (deveria ser polimorfismo); verifique se `pom.xml/build.gradle` aponta para Java/Spring EOL; uso de `@Autowired` em fields vs constructor injection.
|
|
27
|
+
- **React Native / TypeScript / mobile**: procure por arquivos `.js` que poderiam ser `.ts/.tsx`, class components que poderiam ser functional, lifecycle methods deprecated (`componentWillMount`), uso de `any` em larga escala, `require()` em vez de `import`; verifique versão do RN/Expo SDK em uso vs LTS atual.
|
|
28
|
+
- **Node backend**: procure por uso de `require` em vez de `import`, callbacks sem promises/async-await, `var` em vez de `const/let`, `Buffer()` (deprecated, use `Buffer.from`), `process.on('uncaughtException')` sem handler decente, `domain` (deprecated).
|
|
18
29
|
|
|
19
30
|
## Output
|
|
20
31
|
Salve em: `.legacy-squad/outputs/assessments/legacy-code-assessment.md`
|
|
21
32
|
|
|
22
33
|
Estrutura:
|
|
23
|
-
1. Code Quality Overview
|
|
24
|
-
2. Complexity Hotspots (top 10
|
|
25
|
-
3.
|
|
26
|
-
4.
|
|
27
|
-
5.
|
|
28
|
-
6.
|
|
34
|
+
1. **Code Quality Overview** (LOC total, distribuição por linguagem, idade média estimada)
|
|
35
|
+
2. **Complexity Hotspots** (top 10 arquivos por tamanho/complexidade)
|
|
36
|
+
3. **Deprecated/Removed APIs** (consolida CQ-DEPRECATED-001 + descobertas adicionais)
|
|
37
|
+
4. **Language Version Migration** (status atual da versão de linguagem/framework vs LTS/atual)
|
|
38
|
+
5. **Duplication Analysis** (padrões repetidos candidatos a extração)
|
|
39
|
+
6. **Test Coverage Assessment** (áreas críticas sem testes)
|
|
40
|
+
7. **Refactoring Priorities** (ranqueadas S/M/L de esforço)
|
|
29
41
|
|
|
30
42
|
## Regras
|
|
31
|
-
- Antes de propor refatoração, entenda o que o código faz
|
|
32
|
-
- Priorize refatoração que reduz risco, não só melhora estética
|
|
43
|
+
- Antes de propor refatoração, entenda o que o código faz (negócio, não apenas estética)
|
|
44
|
+
- Priorize refatoração que reduz risco operacional, não só melhora estética
|
|
33
45
|
- Estimativas relativas (S/M/L), não horas absolutas
|
|
34
|
-
- Considere cobertura de testes antes de recomendar mudanças
|
|
46
|
+
- Considere cobertura de testes antes de recomendar mudanças disruptivas
|
|
47
|
+
- Recomendações de modernização devem indicar a versão alvo (e.g., "migrar PHP 7.4 → 8.3", "Spring Boot 2.7 → 3.2", "RN 0.68 → 0.79")
|
|
@@ -9,27 +9,39 @@ Leia estes arquivos:
|
|
|
9
9
|
## Sua Missão
|
|
10
10
|
Sintetizar os achados de todos os pilares em um plano concreto de modernização incremental.
|
|
11
11
|
|
|
12
|
-
1. **Estratégia** — qual padrão de modernização aplicar? (Strangler Fig, Branch by Abstraction,
|
|
12
|
+
1. **Estratégia** — qual padrão de modernização aplicar? (Strangler Fig, Branch by Abstraction, Parallel Run)
|
|
13
13
|
2. **Fases** — dividir em Foundation → Core → Evolution
|
|
14
|
-
3. **Stack upgrade** — o que atualizar e em que ordem
|
|
14
|
+
3. **Stack upgrade** — o que atualizar e em que ordem (linguagem, framework, dependências)
|
|
15
15
|
4. **Riscos** — matriz de risco por fase
|
|
16
16
|
5. **Rollback** — estratégia de rollback por fase
|
|
17
17
|
6. **Scores** — Deployability Score (1-10) e Execution Readiness Score (0-100)
|
|
18
18
|
|
|
19
|
+
## Stack-aware analysis
|
|
20
|
+
|
|
21
|
+
Antes de planejar, leia `repo-index.json` e identifique a stack. Adapte o stack-upgrade plan à stack detectada:
|
|
22
|
+
|
|
23
|
+
- **PHP / Laravel / Symfony**: avalie a versão atual do PHP vs versões com suporte (consulte https://www.php.net/supported-versions.php). Plano típico: PHP 5.x → 7.4 → 8.x; Laravel 6/7/8 → 11; Symfony 4/5 → 7. Use `composer outdated` mental para mapear gaps. Cada upgrade do framework costuma exigir upgrade do PHP primeiro.
|
|
24
|
+
- **.NET / ASP.NET**: avalie TargetFramework atual. Plano típico: .NET Framework 4.x → .NET 8 (LTS) ou .NET 9 via .NET Standard 2.0 como ponte; ASP.NET 4.x → ASP.NET Core; pacotes NuGet com major bumps. Use `Microsoft.DotNet.UpgradeAssistant` como referência mental.
|
|
25
|
+
- **Java / Spring**: avalie versão Java + Spring Boot. Plano típico: Java 8/11 → 17 (LTS) → 21 (LTS); Spring Boot 2.x → 3.x (que exige Java 17+ e troca de `javax.*` → `jakarta.*`); pom.xml/build.gradle precisam revisar todas dependências para versões Jakarta-compatible.
|
|
26
|
+
- **React Native / Expo**: avalie versão atual do RN/Expo SDK. Plano típico: Expo SDK 48 → 50 → 52 → 53; RN 0.6x → 0.7x → 0.79; revisão de New Architecture (Fabric/TurboModules) quando aplicável. Cada upgrade do Expo SDK costuma revisar todos os módulos nativos.
|
|
27
|
+
- **Node backend**: avalie versão do Node + framework. Plano típico: Node 14/16 → 18/20 (LTS); Express 4 → 5 (quando estável); NestJS 8 → 10; revisão de pacotes com vulnerabilidades (`npm audit`).
|
|
28
|
+
|
|
19
29
|
## Output
|
|
20
30
|
Salve em: `.legacy-squad/outputs/assessments/modernization-assessment.md`
|
|
21
31
|
|
|
22
32
|
Estrutura:
|
|
23
|
-
1. Modernization Strategy
|
|
24
|
-
2. Phase Roadmap (Foundation → Core → Evolution)
|
|
25
|
-
3. Stack Upgrade Plan
|
|
26
|
-
4. Risk Matrix
|
|
27
|
-
5. Rollback Strategy
|
|
28
|
-
6. Deployability Score per Phase
|
|
29
|
-
7. Execution Readiness Score
|
|
33
|
+
1. **Modernization Strategy** (padrão escolhido + justificativa)
|
|
34
|
+
2. **Phase Roadmap** (Foundation → Core → Evolution, com escopo por fase)
|
|
35
|
+
3. **Stack Upgrade Plan** (versão atual → alvo, com gates intermediários)
|
|
36
|
+
4. **Risk Matrix** (risco por fase, com mitigação)
|
|
37
|
+
5. **Rollback Strategy** (por fase — feature flags, blue-green, canary, parallel run)
|
|
38
|
+
6. **Deployability Score per Phase** (1-10)
|
|
39
|
+
7. **Execution Readiness Score** (0-100, considerando testes, observabilidade, CI/CD)
|
|
30
40
|
|
|
31
41
|
## Regras
|
|
32
|
-
- Nenhuma fase pode exigir big-bang — cada fase
|
|
42
|
+
- Nenhuma fase pode exigir big-bang — cada fase deve ser deployável independentemente
|
|
33
43
|
- Rollback obrigatório para cada fase
|
|
34
44
|
- Human approval required para mudanças de alto risco
|
|
35
45
|
- Considere o sistema como estando em produção
|
|
46
|
+
- Stack-upgrade plan deve sempre referenciar a versão LTS mais recente da stack como alvo, e mencionar versões intermediárias seguras quando o salto é grande
|
|
47
|
+
- Para frameworks ainda em EOL ou EOL próximo, sinalize prazo de upgrade como crítico
|
|
@@ -7,26 +7,36 @@ Leia estes arquivos para entender o projeto:
|
|
|
7
7
|
- `.legacy-squad/memory/context-packs.json` — resumo dos módulos com arquivos-chave
|
|
8
8
|
|
|
9
9
|
## Sua Missão
|
|
10
|
-
Realizar um assessment profundo de segurança que vai além do pattern matching. O Compliance Engine já detectou achados por regex — sua análise deve:
|
|
10
|
+
Realizar um assessment profundo de segurança que vai além do pattern matching. O Compliance Engine já detectou achados por regex (SEC-SQL-001, SEC-CRYPTO-001, SEC-DESER-001, SEC-CMD-001, SEC-PATH-001, SEC-XSS-001, etc.) — sua análise deve:
|
|
11
11
|
|
|
12
|
-
1. **Validar findings existentes** — confirme ou refine os achados do
|
|
12
|
+
1. **Validar findings existentes** — confirme ou refine os achados do Compliance Engine
|
|
13
13
|
2. **Detectar novos achados** que regex não alcança:
|
|
14
|
-
- Fluxos de autenticação inseguros
|
|
15
|
-
- Autorização ausente ou inconsistente
|
|
14
|
+
- Fluxos de autenticação inseguros (login, refresh token, MFA)
|
|
15
|
+
- Autorização ausente ou inconsistente entre endpoints/rotas
|
|
16
16
|
- Dados sensíveis transitando sem criptografia
|
|
17
17
|
- Tokens sem expiração ou rotação
|
|
18
|
-
- Secrets em configurações de CI/CD
|
|
18
|
+
- Secrets em configurações de CI/CD ou arquivos `.env*` versionados
|
|
19
19
|
- Dependências com vulnerabilidades conhecidas
|
|
20
|
-
3. **Analisar integrações** — cada API externa é um vetor de ataque
|
|
21
|
-
4. **Avaliar
|
|
20
|
+
3. **Analisar integrações** — cada API externa, banco, fila ou serviço é um vetor de ataque
|
|
21
|
+
4. **Avaliar privacidade de dados** — todo uso de PII (CPF, RG, e-mail, dados de saúde) deve ser auditado quanto a LGPD/GDPR
|
|
22
|
+
|
|
23
|
+
## Stack-aware analysis
|
|
24
|
+
|
|
25
|
+
Antes de analisar, leia `repo-index.json` e identifique a stack. Adapte vocabulário e patterns à stack detectada:
|
|
26
|
+
|
|
27
|
+
- **PHP / Laravel / Symfony / CodeIgniter**: foque em `$_GET/$_POST/$_REQUEST` mal sanitizados, sessões (`$_SESSION`), `unserialize()` de input, `include` com input do usuário, hashing fraco (`md5/sha1` no lugar de `password_hash`), uso de PDO sem prepared statements, `composer.json` com pacotes abandonados.
|
|
28
|
+
- **.NET / ASP.NET Core / .NET Framework**: foque em `SqlCommand` com concatenação, `BinaryFormatter/SoapFormatter` em deserialização, `Request.Form/QueryString` sem validação, `Process.Start` com input, NuGet com CVEs conhecidos, cookies sem `HttpOnly/Secure/SameSite`, ausência de antiforgery tokens.
|
|
29
|
+
- **Java / Spring Boot / Spring MVC**: foque em `Statement.execute` com concatenação, `ObjectInputStream.readObject` em deserialização, `Runtime.getRuntime().exec` com input, `request.getParameter` sem validação, `MessageDigest.getInstance("MD5"/"SHA-1")`, dependências Maven/Gradle com CVEs, `@CrossOrigin` permissivo.
|
|
30
|
+
- **React Native / Expo / mobile**: foque em armazenamento inseguro (AsyncStorage sem criptografia para tokens), uso de `expo-secure-store/Keychain/Keystore`, logs em produção (`console.log` com dados sensíveis), deep links sem validação, certificados embarcados, permissões excessivas em `AndroidManifest.xml/Info.plist`.
|
|
31
|
+
- **Node backend / Express / NestJS**: foque em SQL/NoSQL injection, deserialização (`JSON.parse` confiando em input), command injection (`child_process.exec`), uso de `eval`, prototype pollution, middlewares de auth ausentes.
|
|
22
32
|
|
|
23
33
|
## Arquivos para Analisar
|
|
24
|
-
Com base no repo-index
|
|
25
|
-
-
|
|
26
|
-
- Configurações de API
|
|
27
|
-
-
|
|
28
|
-
-
|
|
29
|
-
- Qualquer arquivo referenciado nos findings
|
|
34
|
+
Com base no `repo-index.json`, priorize:
|
|
35
|
+
- Módulos de autenticação e sessão (independente da stack — controllers de auth em Laravel/Spring, AuthContext/stores em mobile, middlewares em Express)
|
|
36
|
+
- Configurações de API, endpoints, integrações externas
|
|
37
|
+
- Repositórios e camadas de acesso a dados (DAOs, repositories, ORMs)
|
|
38
|
+
- Utilitários que manipulam dados sensíveis (criptografia, mascaramento)
|
|
39
|
+
- Qualquer arquivo referenciado nos findings determinísticos
|
|
30
40
|
|
|
31
41
|
## Output
|
|
32
42
|
Salve o resultado em: `.legacy-squad/outputs/assessments/security-assessment.md`
|
|
@@ -37,19 +47,19 @@ Use esta estrutura:
|
|
|
37
47
|
# Security Assessment — [nome do projeto]
|
|
38
48
|
|
|
39
49
|
## 1. Authentication & Session Analysis
|
|
40
|
-
[análise de fluxos de autenticação]
|
|
50
|
+
[análise de fluxos de autenticação, login, MFA, sessão, JWT/cookies]
|
|
41
51
|
|
|
42
52
|
## 2. Secrets & Credential Management
|
|
43
|
-
[análise de gestão de credenciais]
|
|
53
|
+
[análise de gestão de credenciais — env vars, vaults, .env versionado, hardcoded secrets]
|
|
44
54
|
|
|
45
|
-
## 3. Data Protection & Privacy
|
|
46
|
-
[análise de proteção de dados pessoais]
|
|
55
|
+
## 3. Data Protection & Privacy
|
|
56
|
+
[análise de proteção de dados pessoais — LGPD/GDPR, mascaramento, criptografia at-rest/in-transit]
|
|
47
57
|
|
|
48
58
|
## 4. API Security Posture
|
|
49
|
-
[análise de segurança das integrações]
|
|
59
|
+
[análise de segurança das integrações — auth de API, rate limiting, CORS, validação de input]
|
|
50
60
|
|
|
51
61
|
## 5. Dependency Vulnerabilities
|
|
52
|
-
[análise de dependências com CVEs conhecidos]
|
|
62
|
+
[análise de dependências com CVEs conhecidos — composer.json/csproj/pom.xml/package.json]
|
|
53
63
|
|
|
54
64
|
## 6. Findings Summary
|
|
55
65
|
|
|
@@ -58,7 +68,7 @@ Use esta estrutura:
|
|
|
58
68
|
| SEC-AI-001 | ... | critical | ... | ... |
|
|
59
69
|
|
|
60
70
|
## 7. Recommendations (prioritized)
|
|
61
|
-
[recomendações ordenadas por severidade]
|
|
71
|
+
[recomendações ordenadas por severidade, com remediação específica para a stack do projeto]
|
|
62
72
|
```
|
|
63
73
|
|
|
64
74
|
## Regras
|
|
@@ -66,4 +76,5 @@ Use esta estrutura:
|
|
|
66
76
|
- Severidade: critical > high > medium > low > info
|
|
67
77
|
- Recomendações devem ser incrementais (o sistema está em produção)
|
|
68
78
|
- IDs dos novos achados: SEC-AI-001, SEC-AI-002, etc. (prefixo AI para distinguir dos determinísticos)
|
|
69
|
-
-
|
|
79
|
+
- Recomendações devem citar a API/biblioteca correta para a stack do projeto (e.g., `PDO::prepare` para PHP, `SqlParameter` para .NET, `PreparedStatement` para Java, `expo-secure-store` para RN)
|
|
80
|
+
- Referências: OWASP Top 10, OWASP ASVS, OWASP MASVS (mobile), CWE, LGPD/GDPR
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "legacy-squad",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.8",
|
|
4
4
|
"description": "AI-Powered Legacy Modernization Platform — Install-first, IDE-native, evidence-driven framework that transforms legacy systems into modernization-ready assets.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"legacy",
|