jarvis-ai-framework 3.0.0 → 4.0.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/agents/README.md +2 -0
- package/agents/engineering/eng.advisor.agent.md +56 -0
- package/agents/product/prod.discovery-interviewer.md +1 -1
- package/bin/README.md +14 -14
- package/bin/commands/docs-publish.js +50 -92
- package/bin/commands/docs-sync.js +30 -63
- package/bin/lib/cli/program.js +23 -25
- package/bin/lib/docs/fetch-file.js +29 -26
- package/bin/lib/docs/publish-file.js +89 -161
- package/bin/lib/docs/storage/build-index.js +87 -0
- package/bin/lib/docs/storage/filesystem.js +203 -0
- package/bin/lib/docs/storage/index.js +75 -0
- package/bin/lib/docs/validate-frontmatter.js +14 -4
- package/bin/lib/vcs/api.js +0 -125
- package/package.json +2 -2
- package/rules/AGENTS.md +12 -9
- package/rules/engineering/eng.integrations-rules.md +5 -2
- package/rules/product/prod-rules.md +4 -5
- package/rules-on-demand/engineering/eng.pre-pr-rules.md +1 -1
- package/rules-on-demand/engineering/eng.start-rules.md +2 -0
- package/rules-on-demand/product/prod.guided-rules.md +104 -0
- package/skills/eng-global-task-comment/SKILL.md +1 -1
- package/skills/jarvis-docs-central/README.md +57 -269
- package/skills/jarvis-docs-central/SKILL.md +126 -296
- package/skills/jarvis-init/SKILL.md +47 -7
- package/templates/AGENTS.md +2 -0
- package/templates/ENV-template.md +30 -5
- package/templates/engineering/ARD-template.md +39 -6
- package/templates/engineering/advisor-template.md +65 -0
- package/templates/engineering/architecture-template.md +53 -4
- package/templates/product/prod-breakdown-template.md +20 -2
- package/templates/product/prod-discovery-template.md +24 -1
- package/templates/product/prod-epic-template.md +32 -1
- package/templates/product/prod-frd-template.md +29 -2
- package/templates/product/prod-issue-template.md +36 -1
- package/templates/product/prod-prd-template.md +33 -2
- package/workflows/engineering/eng.build-tech-spec.md +2 -2
- package/workflows/engineering/eng.create-ard-from-code.md +9 -11
- package/workflows/engineering/eng.create-ard.md +15 -13
- package/workflows/engineering/eng.create-rfc.md +8 -10
- package/workflows/engineering/eng.plan.md +4 -26
- package/workflows/engineering/eng.pr.md +7 -39
- package/workflows/engineering/eng.pre-pr.md +7 -36
- package/workflows/engineering/eng.rpa.robot.md +4 -2
- package/workflows/engineering/eng.start.md +38 -37
- package/workflows/engineering/eng.work.md +7 -22
- package/workflows/product/prod.roadmap.preview.md +4 -1
- package/workflows/product/prod.spec.ard.md +7 -3
- package/workflows/product/prod.spec.breakdown.md +7 -3
- package/workflows/product/prod.spec.clarify.md +5 -1
- package/workflows/product/prod.spec.discovery.md +7 -3
- package/workflows/product/prod.spec.epic.md +13 -11
- package/workflows/product/prod.spec.frd.md +15 -13
- package/workflows/product/prod.spec.issue.md +5 -1
- package/workflows/product/prod.spec.md +3 -1
- package/workflows/product/prod.spec.prd.md +15 -13
- package/workflows/warm-up.md +3 -3
- package/bin/lib/docs/redis-cache.js +0 -49
- package/bin/lib/vcs/fetch-raw.js +0 -42
|
@@ -3,13 +3,17 @@ description: Fluxo de trabalho de Engenharia para criação/iteração de ARD
|
|
|
3
3
|
globs:
|
|
4
4
|
alwaysApply: false
|
|
5
5
|
env_file: "@/ENV.md"
|
|
6
|
-
recommended_model:
|
|
6
|
+
recommended_model: opus
|
|
7
7
|
model_tier: high
|
|
8
8
|
model_justification: Documentação arquitetural requer análise de requisitos, trade-offs técnicos e decisões bem fundamentadas
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
# Workflow de Engenharia – ARD (Architecture Requirements Document)
|
|
12
12
|
|
|
13
|
+
> 🎓 **Modo de condução**: leia `PROD_MODE` no `$IDE/ENV.md`. Se for `developer-guided`, **antes de começar leia `$IDE/rules-on-demand/product/prod.guided-rules.md` e siga-o** em toda a conversa. Vazio ou `product-led`: siga este fluxo como está.
|
|
14
|
+
>
|
|
15
|
+
> 🤖 **Modelo**: se a IDE informar o modelo desta sessão e ele for de outra família que o `recommended_model` do documento (ou do template, se o documento for novo), avise em uma linha e siga, sem bloquear e sem repetir. Sem essa informação, não avise.
|
|
16
|
+
|
|
13
17
|
## Objetivo
|
|
14
18
|
|
|
15
19
|
Guiar o assistente de Engenharia (ENG) na criação, revisão ou iteração de um ARD,
|
|
@@ -25,8 +29,8 @@ usando o template `$IDE/templates/engineering/ARD-template.md`, sempre alinhado
|
|
|
25
29
|
| Passo | Skill | Condição |
|
|
26
30
|
|-------|-------|----------|
|
|
27
31
|
| Objetivo | `eng.agent` (agente) | Sempre — identidade do workflow (alinhamento com `eng.agent.md`) |
|
|
28
|
-
| Passo 1.1.1 – Buscar PRD no Central Docs | `/jarvis-docs-central` (via `jarvis docs sync --silent`) | Se `
|
|
29
|
-
| Passo 8 – Publicar no Central Docs | `/jarvis-docs-central` (via `jarvis docs publish --tipo ard`) | Se `
|
|
32
|
+
| Passo 1.1.1 – Buscar PRD no Central Docs | `/jarvis-docs-central` (via `jarvis docs sync --silent`) | Se `CENTRAL_DOCS_STORAGE` estiver definido no ENV.md |
|
|
33
|
+
| Passo 8 – Publicar no Central Docs | `/jarvis-docs-central` (via `jarvis docs publish --tipo ard`) | Se `CENTRAL_DOCS_STORAGE` estiver definido, o ARD estiver aprovado e o usuário aceitar publicar |
|
|
30
34
|
|
|
31
35
|
---
|
|
32
36
|
|
|
@@ -64,7 +68,7 @@ usando o template `$IDE/templates/engineering/ARD-template.md`, sempre alinhado
|
|
|
64
68
|
- Se a pasta `$DOCS_FOLDER/engineering/ARD/` existir e houver arquivos no padrão `ARD-###-*.md`, use o maior `###` + 1.
|
|
65
69
|
- Defina o `ARD-ID` automaticamente assim:
|
|
66
70
|
- Se a pasta `$DOCS_FOLDER/engineering/ARD/` existir e houver arquivos no padrão `ARD-###-*.md`, use o maior `###` + 1.
|
|
67
|
-
- `Status`
|
|
71
|
+
- `Status` (campo `status` no frontmatter: `proposed | in_progress | in_review | approved`)
|
|
68
72
|
- `Caminho do arquivo` (`$DOCS_FOLDER/engineering/ARD/{ARD-ID}-{slug}.md` ou caminho fornecido para iteração)
|
|
69
73
|
|
|
70
74
|
---
|
|
@@ -109,7 +113,7 @@ Regras:
|
|
|
109
113
|
3. Confirme os metadados definidos no Passo 0:
|
|
110
114
|
- `ARD-ID`
|
|
111
115
|
- `Título`
|
|
112
|
-
- `Status`
|
|
116
|
+
- `Status` (campo `status` no frontmatter)
|
|
113
117
|
- `Caminho do arquivo` (`$DOCS_FOLDER/engineering/ARD/{ARD-ID}-{slug}.md` ou caminho fornecido para iteração)
|
|
114
118
|
|
|
115
119
|
---
|
|
@@ -118,7 +122,7 @@ Regras:
|
|
|
118
122
|
|
|
119
123
|
### 1.1.1 – Buscar PRD no Central Docs (condicional)
|
|
120
124
|
|
|
121
|
-
Se `
|
|
125
|
+
Se `CENTRAL_DOCS_STORAGE` definido no ENV.md:
|
|
122
126
|
|
|
123
127
|
1. Executar busca automática no central-docs:
|
|
124
128
|
```bash
|
|
@@ -361,7 +365,7 @@ Peça explicitamente para o usuário:
|
|
|
361
365
|
|
|
362
366
|
## Passo 8 – Publicar no Central Docs (condicional)
|
|
363
367
|
|
|
364
|
-
Se `
|
|
368
|
+
Se `CENTRAL_DOCS_STORAGE` definido no ENV.md **E** o usuário aprovar o ARD:
|
|
365
369
|
|
|
366
370
|
1. Perguntar ao usuário:
|
|
367
371
|
```
|
|
@@ -371,20 +375,18 @@ Se `CENTRAL_DOCS_REPO` definido no ENV.md **E** o usuário aprovar o ARD:
|
|
|
371
375
|
```
|
|
372
376
|
|
|
373
377
|
2. Se **Sim**:
|
|
374
|
-
- Extrair o slug do nome do arquivo (ex: `ARD-001-api-wallet-auth.md` → `api-wallet-auth`)
|
|
375
378
|
- Executar:
|
|
376
379
|
```bash
|
|
377
380
|
jarvis docs publish \
|
|
378
381
|
--file {caminho_do_ard} \
|
|
379
|
-
--tipo ard
|
|
380
|
-
--feature {slug}
|
|
382
|
+
--tipo ard
|
|
381
383
|
```
|
|
382
384
|
|
|
383
385
|
3. Informar resultado:
|
|
384
|
-
- ✅ Sucesso: "ARD publicado no
|
|
386
|
+
- ✅ Sucesso: "ARD publicado no Central docs." (com git: "PR aberto: [URL]")
|
|
385
387
|
- ❌ Erro: Exibir mensagem de erro e orientar troubleshooting
|
|
386
388
|
|
|
387
389
|
4. Se **Não**:
|
|
388
|
-
- Informar: "Para publicar depois, execute: `jarvis docs publish --file {caminho} --tipo ard
|
|
390
|
+
- Informar: "Para publicar depois, execute: `jarvis docs publish --file {caminho} --tipo ard`"
|
|
389
391
|
|
|
390
|
-
> **Nota**:
|
|
392
|
+
> **Nota**: se a pasta do Central docs for um repositório git, a publicação abre um Pull/Merge Request e o ARD só entra na branch base depois do merge. Sem git, o documento é gravado direto e o índice é regenerado.
|
|
@@ -27,8 +27,8 @@ Além disso, quando houver campo `Versão` no RFC, aplicar obrigatoriamente:
|
|
|
27
27
|
|
|
28
28
|
| Passo | Skill | Condição |
|
|
29
29
|
|-------|-------|----------|
|
|
30
|
-
| Passo 0.6 – Buscar Documentação Relacionada no Central Docs | `/jarvis-docs-central` (via `jarvis docs sync --silent`) | Se `
|
|
31
|
-
| Passo 7 – Publicar no Central Docs | `/jarvis-docs-central` (via `jarvis docs publish --tipo rfc`) | Se `
|
|
30
|
+
| Passo 0.6 – Buscar Documentação Relacionada no Central Docs | `/jarvis-docs-central` (via `jarvis docs sync --silent`) | Se `CENTRAL_DOCS_STORAGE` estiver definido no ENV.md |
|
|
31
|
+
| Passo 7 – Publicar no Central Docs | `/jarvis-docs-central` (via `jarvis docs publish --tipo rfc`) | Se `CENTRAL_DOCS_STORAGE` estiver definido **e** o usuário aprovar o RFC e responder "Sim, publicar agora" |
|
|
32
32
|
|
|
33
33
|
---
|
|
34
34
|
|
|
@@ -92,7 +92,7 @@ Regras:
|
|
|
92
92
|
|
|
93
93
|
## Passo 0.6 – Buscar Documentação Relacionada no Central Docs (condicional)
|
|
94
94
|
|
|
95
|
-
Se `
|
|
95
|
+
Se `CENTRAL_DOCS_STORAGE` definido no ENV.md:
|
|
96
96
|
|
|
97
97
|
1. Executar busca automática no central-docs:
|
|
98
98
|
```bash
|
|
@@ -223,7 +223,7 @@ Entregar:
|
|
|
223
223
|
|
|
224
224
|
## Passo 7 – Publicar no Central Docs (condicional)
|
|
225
225
|
|
|
226
|
-
Se `
|
|
226
|
+
Se `CENTRAL_DOCS_STORAGE` definido no ENV.md **E** o usuário aprovar o RFC:
|
|
227
227
|
|
|
228
228
|
1. Perguntar ao usuário:
|
|
229
229
|
```
|
|
@@ -233,20 +233,18 @@ Se `CENTRAL_DOCS_REPO` definido no ENV.md **E** o usuário aprovar o RFC:
|
|
|
233
233
|
```
|
|
234
234
|
|
|
235
235
|
2. Se **Sim**:
|
|
236
|
-
- Extrair o slug do nome do arquivo (ex: `RFC-001-wallet-idempotencia.md` → `wallet-idempotencia`)
|
|
237
236
|
- Executar:
|
|
238
237
|
```bash
|
|
239
238
|
jarvis docs publish \
|
|
240
239
|
--file {caminho_do_rfc} \
|
|
241
|
-
--tipo rfc
|
|
242
|
-
--feature {slug}
|
|
240
|
+
--tipo rfc
|
|
243
241
|
```
|
|
244
242
|
|
|
245
243
|
3. Informar resultado:
|
|
246
|
-
- ✅ Sucesso: "RFC publicado no
|
|
244
|
+
- ✅ Sucesso: "RFC publicado no Central docs." (com git: "PR aberto: [URL]")
|
|
247
245
|
- ❌ Erro: Exibir mensagem de erro e orientar troubleshooting
|
|
248
246
|
|
|
249
247
|
4. Se **Não**:
|
|
250
|
-
- Informar: "Para publicar depois, execute: `jarvis docs publish --file {caminho} --tipo rfc
|
|
248
|
+
- Informar: "Para publicar depois, execute: `jarvis docs publish --file {caminho} --tipo rfc`"
|
|
251
249
|
|
|
252
|
-
> **Nota**:
|
|
250
|
+
> **Nota**: se a pasta do Central docs for um repositório git, a publicação abre um Pull/Merge Request e o RFC só entra na branch base depois do merge. Sem git, o documento é gravado direto e o índice é regenerado.
|
|
@@ -41,25 +41,11 @@ Antes de executar este workflow:
|
|
|
41
41
|
| Passo | Skill | Condição |
|
|
42
42
|
|-------|-------|----------|
|
|
43
43
|
| Cabeçalho (agente) | `eng.agent` (agente) | Sempre — identidade do workflow |
|
|
44
|
-
| Fase 0.5: Comentário no card — Início | `/eng-global-task-comment` | Se `TASK_MANAGER` estiver preenchido (freelance pula) |
|
|
45
44
|
| Fase 0 › 0.1 Herdar Contexto da Sessão | `/jarvis-context-detect` | Se `ENABLE_CDD=true` e o `context.md` não existir |
|
|
46
45
|
| Fase 2: Pesquisa no Codebase | `repoprompt` (MCP: `search`, `read_selected_files`) | Para buscar e ler arquivos relevantes do codebase |
|
|
47
46
|
| Fase 2: Pesquisa no Codebase (se necessário) | `context7` (MCP) | Se for preciso consultar a documentação de bibliotecas |
|
|
48
|
-
|
|
|
49
|
-
|
|
50
|
-
---
|
|
51
|
-
|
|
52
|
-
## Fase 0.5: Comentário no card — Início
|
|
53
|
-
|
|
54
|
-
Pular se `TASK_MANAGER` estiver vazio (freelance).
|
|
55
|
-
|
|
56
|
-
Após confirmar que o `architecture.md` existe, registrar início do planejamento:
|
|
57
|
-
|
|
58
|
-
```
|
|
59
|
-
/eng-global-task-comment {TASK_MANAGER_KEY} 📋 [Jarvis] Iniciando criação do plano de execução
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
> Usa o skill `/eng-global-task-comment`. Não bloquear se falhar.
|
|
47
|
+
| Fase 3: Criação do Plano (exceção) | `eng.advisor.agent` (agente) | Só por exceção: questão nova em aberto, com o Advisor habilitado no `eng.start` (cabeçalho do `architecture.md`) |
|
|
48
|
+
| Fase 3: Criação do Plano (exceção) | `/eng-global-task-comment` | Só por exceção: comentário de auditoria da questão nova consultada ao Advisor (freelance pula) |
|
|
63
49
|
|
|
64
50
|
---
|
|
65
51
|
|
|
@@ -174,6 +160,8 @@ CONTEXT_PROFILE:
|
|
|
174
160
|
|
|
175
161
|
4. **Usar** o template em `$IDE/templates/engineering/plan-template.md`
|
|
176
162
|
|
|
163
|
+
**Questão nova em aberto (exceção).** O ideal é que todas as questões tenham sido levantadas no `eng.start`. Se surgir uma nova e o cabeçalho do `architecture.md` indicar um Advisor, consulte `eng.advisor.agent` com o Prompt 2 de `$IDE/templates/engineering/advisor-template.md` (refaça o Prompt 1 se o subagente não existir mais), acrescente a questão à seção 8 marcada "levantada no `eng.plan`", adote a sugestão do Advisor e poste o comentário de auditoria com `/eng-global-task-comment` (é desvio do plano; cite-o no PR como lacuna do `eng.start`). Sem Advisor, pergunte ao usuário.
|
|
164
|
+
|
|
177
165
|
### Fase 4: Validação
|
|
178
166
|
|
|
179
167
|
1. **Apresentar** o plano ao humano
|
|
@@ -200,16 +188,6 @@ Com:
|
|
|
200
188
|
|
|
201
189
|
---
|
|
202
190
|
|
|
203
|
-
## Comentário no card — Conclusão
|
|
204
|
-
|
|
205
|
-
Pular se `TASK_MANAGER` estiver vazio (freelance).
|
|
206
|
-
|
|
207
|
-
Após validação do plano com o usuário, registrar conclusão:
|
|
208
|
-
|
|
209
|
-
```
|
|
210
|
-
/eng-global-task-comment {TASK_MANAGER_KEY} ✅ [Jarvis] Plano de execução criado e validado - {N} fases definidas. Pronto para implementação.
|
|
211
|
-
```
|
|
212
|
-
|
|
213
191
|
## Próximo Passo
|
|
214
192
|
|
|
215
193
|
Após a validação do plano com o humano, informar:
|
|
@@ -43,9 +43,8 @@ Este comando cria a **branch, commita as alterações e abre um Merge Request**.
|
|
|
43
43
|
| Fase 1 › 1.4 Executar Testes Automatizados (Opcional) | `/eng-qa` + `QA_SPECIALIZATIONS` | Passo opcional, recomendado em mudanças significativas |
|
|
44
44
|
| Skills recomendados | `/eng-global-docs-write` | Se houver necessidade de atualizar documentação junto do PR |
|
|
45
45
|
| Agentes recomendados (opcional) | `eng.qa.test-planner` (agente) | Se houver dúvidas sobre cobertura de testes ou mudanças significativas |
|
|
46
|
-
| Fase 0.5: Comentário no card — Início | `/eng-global-task-comment` | Se `TASK_MANAGER` estiver preenchido (freelance pula) |
|
|
47
46
|
| Fase 4 › 4.2 Criar MR/PR via adapter | `jarvis vcs create-merge` (CLI do Jarvis) | Sempre — abre o MR/PR conforme `VERSION_CONTROL` ou o host do `origin` |
|
|
48
|
-
| Fase
|
|
47
|
+
| Fase 6 › 6.2 Link do MR | `/eng-global-task-comment` | Depois de o MR ser criado: um único comentário no card com o link do MR, seguindo o Passo 6 do skill `eng-global-pr` (freelance pula) |
|
|
49
48
|
|
|
50
49
|
---
|
|
51
50
|
|
|
@@ -62,25 +61,11 @@ Ler `TASK_MANAGER` do `$IDE/ENV.md`. Seguir `$IDE/rules/engineering/eng.integrat
|
|
|
62
61
|
- `TASK_MANAGER` vazio → *Qual o seu número de controle para esta tarefa? (ex: F-042)*
|
|
63
62
|
- `TASK_MANAGER` preenchido → *Qual o id do card no {TASK_MANAGER}?*
|
|
64
63
|
|
|
65
|
-
> A branch de destino
|
|
64
|
+
> A branch de destino é a **`Branch base:`** gravada no cabeçalho do `$SESSIONS_DIR/eng/{TASK_MANAGER_KEY}/architecture.md` pelo `eng.start`. Só perguntar (`main`, `dev` ou Outro) se o campo não existir.
|
|
66
65
|
> 💡 A branch de feature já foi criada no `eng.start`. Este workflow apenas faz push e abre o MR.
|
|
67
66
|
|
|
68
67
|
---
|
|
69
68
|
|
|
70
|
-
## Fase 0.5: Comentário no card — Início
|
|
71
|
-
|
|
72
|
-
Pular se `TASK_MANAGER` estiver vazio (freelance).
|
|
73
|
-
|
|
74
|
-
Registrar início da criação do MR:
|
|
75
|
-
|
|
76
|
-
```
|
|
77
|
-
/eng-global-task-comment {TASK_MANAGER_KEY} 🔀 [Jarvis] Iniciando criação do Merge Request para {TARGET_BRANCH}
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
> Usa o skill `/eng-global-task-comment`. Não bloquear se falhar.
|
|
81
|
-
|
|
82
|
-
---
|
|
83
|
-
|
|
84
69
|
## Fase 1: Validação Pré-PR
|
|
85
70
|
|
|
86
71
|
### 1.1 Executar Testes Unitários
|
|
@@ -137,7 +122,7 @@ A branch deve seguir o padrão `{TASK_MANAGER_KEY}-{titulo-em-kebab-case}`.
|
|
|
137
122
|
|
|
138
123
|
### 2.2 Confirmar Branch de Destino
|
|
139
124
|
|
|
140
|
-
Branch de destino
|
|
125
|
+
Branch de destino: a **`Branch base:`** do `architecture.md` (`{BRANCH_BASE}`). Sem o campo, pergunte com `AskUserQuestion` (`main`, `dev` ou Outro); não presuma.
|
|
141
126
|
|
|
142
127
|
> ⚠️ **Nunca fazer push direto para `main` ou `master`** sem confirmação explícita do usuário.
|
|
143
128
|
|
|
@@ -152,7 +137,7 @@ git checkout {TASK_MANAGER_KEY}-{titulo-em-kebab-case}
|
|
|
152
137
|
### 2.2 Verificar Commits da Branch
|
|
153
138
|
|
|
154
139
|
```bash
|
|
155
|
-
git log
|
|
140
|
+
git log {BRANCH_BASE}..HEAD --oneline
|
|
156
141
|
```
|
|
157
142
|
|
|
158
143
|
Deve listar os commits das fases implementadas no `eng.work`.
|
|
@@ -218,7 +203,7 @@ Preencher com a tarefa. Link do card:
|
|
|
218
203
|
|
|
219
204
|
- **Título**: `{TASK_MANAGER_KEY}: {Título da tarefa}`
|
|
220
205
|
- **Branch origem**: `{NOME_DA_BRANCH}`
|
|
221
|
-
- **Branch destino**: a
|
|
206
|
+
- **Branch destino**: `{BRANCH_BASE}` (a `Branch base:` do `architecture.md`)
|
|
222
207
|
- **Descrição**: template preenchido, gravado em arquivo temporário
|
|
223
208
|
|
|
224
209
|
```bash
|
|
@@ -248,18 +233,6 @@ Se o CLI `jarvis` não estiver instalado no repo alvo, usar `node {caminho-do-cl
|
|
|
248
233
|
|
|
249
234
|
---
|
|
250
235
|
|
|
251
|
-
## Fase 5: Comentário no card — Conclusão
|
|
252
|
-
|
|
253
|
-
Pular se `TASK_MANAGER` estiver vazio (freelance).
|
|
254
|
-
|
|
255
|
-
Após MR criado com sucesso, registrar:
|
|
256
|
-
|
|
257
|
-
```
|
|
258
|
-
/eng-global-task-comment {TASK_MANAGER_KEY} ✅ [Jarvis] MR criado: {TITULO_DO_MR} → {TARGET_BRANCH} | Link: {LINK_DO_MR}
|
|
259
|
-
```
|
|
260
|
-
|
|
261
|
-
---
|
|
262
|
-
|
|
263
236
|
## Fase 6: Atualizar Board
|
|
264
237
|
|
|
265
238
|
Pular se `TASK_MANAGER` estiver vazio (freelance).
|
|
@@ -268,14 +241,9 @@ Pular se `TASK_MANAGER` estiver vazio (freelance).
|
|
|
268
241
|
|
|
269
242
|
Mova o card para a etapa equivalente a "em revisão" no seu board. Quem assumiu o card o move; não é preciso esperar o TECH LEAD ou o PM.
|
|
270
243
|
|
|
271
|
-
### 6.2
|
|
272
|
-
|
|
273
|
-
Adicione um comentário no card com o link do MR:
|
|
244
|
+
### 6.2 Link do MR no card
|
|
274
245
|
|
|
275
|
-
|
|
276
|
-
MR aberto: {LINK_DO_MR}
|
|
277
|
-
Branch: {NOME_DA_BRANCH}
|
|
278
|
-
```
|
|
246
|
+
Siga o Passo 6 do skill `eng-global-pr`: um único comentário no card, com o link e a branch. É o único comentário do `eng.pr` no card.
|
|
279
247
|
|
|
280
248
|
---
|
|
281
249
|
|
|
@@ -40,8 +40,7 @@ Estamos nos aproximando de finalizar o trabalho nesta branch e nos preparar para
|
|
|
40
40
|
| Skills recomendados | `/jarvis-docs-index` | Se for necessário atualizar o índice de documentação |
|
|
41
41
|
| Skills recomendados | `/eng-platform` + `PLATFORM_SPECIALIZATIONS` | Se a feature tiver requisitos não-funcionais de latência, throughput ou escalabilidade |
|
|
42
42
|
| Skills recomendados | `/eng-backend` e `/eng-frontend` (via `eng.specializations-rules.md`) | Para validar código de backend (endpoints, autenticação, workers) ou de frontend (componentes, performance de UI, WCAG 2.1 AA); a regra também carrega as especializações registradas no ENV.md |
|
|
43
|
-
|
|
|
44
|
-
| Gate 0: Verificar Documentação Central | `/jarvis-docs-central` (via `jarvis docs publish --tipo ard`) | Se `CENTRAL_DOCS_REPO` estiver configurado, houver mudança arquitetural, o ARD estiver desatualizado ou novo e o usuário aceitar publicar |
|
|
43
|
+
| Gate 0: Verificar Documentação Central | `/jarvis-docs-central` (via `jarvis docs publish --tipo ard`) | Se `CENTRAL_DOCS_STORAGE` estiver configurado, houver mudança arquitetural, o ARD estiver desatualizado ou novo e o usuário aceitar publicar |
|
|
45
44
|
| Gates › item 1 | `prod.pm-checker` (agente) | Sempre — verificar alinhamento da branch com os docs de produto e engenharia |
|
|
46
45
|
| Gates › item 2 | `eng.dev-code-reviewer` (agente) | Sempre — revisar o código antes de lançar |
|
|
47
46
|
| Gates › item 3 | `eng.qa.test-planner` (agente) | Sempre — identificar gaps de cobertura de testes na branch |
|
|
@@ -52,21 +51,7 @@ Estamos nos aproximando de finalizar o trabalho nesta branch e nos preparar para
|
|
|
52
51
|
| Gates › item 8 | `eng.ux-designer.agent` (agente) | Se a branch introduzir nova feature de UI ou alterar fluxo de usuário |
|
|
53
52
|
| Gates › item 9 | `eng.docs-writer` (agente) | Sempre — atualizar a documentação do projeto |
|
|
54
53
|
| Gates › item 10 | Nenhuma — checklist inline | Se a branch tocar em auth, sessions, inputs de usuário, CORS, CSP, permissões ou adicionar endpoints públicos |
|
|
55
|
-
|
|
|
56
|
-
|
|
57
|
-
## Fase 0.5: Comentário no card — Início
|
|
58
|
-
|
|
59
|
-
Pular se `TASK_MANAGER` estiver vazio (freelance).
|
|
60
|
-
|
|
61
|
-
Ao iniciar o pre-PR, registrar:
|
|
62
|
-
|
|
63
|
-
```
|
|
64
|
-
/eng-global-task-comment {TASK_MANAGER_KEY} 🔍 [Jarvis] Iniciando validação pre-PR - bateria de testes e revisão de código
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
> Usa o skill `/eng-global-task-comment`. Não bloquear se falhar.
|
|
68
|
-
|
|
69
|
-
---
|
|
54
|
+
| Saída final › 2) Bloqueadores e pendências | `/eng-global-task-comment` | Só se a validação reprovar (status RED): um comentário com o motivo (freelance pula) |
|
|
70
55
|
|
|
71
56
|
## Regras de Execução
|
|
72
57
|
|
|
@@ -80,7 +65,7 @@ Ao iniciar o pre-PR, registrar:
|
|
|
80
65
|
|
|
81
66
|
### Gate 0: Verificar Documentação Central (condicional)
|
|
82
67
|
|
|
83
|
-
Se `
|
|
68
|
+
Se `CENTRAL_DOCS_STORAGE` estiver configurado no ENV.md:
|
|
84
69
|
|
|
85
70
|
**Passo 1:** Detectar mudanças arquiteturais no diff da branch
|
|
86
71
|
```bash
|
|
@@ -92,14 +77,14 @@ git diff main...HEAD | grep -E "(class|interface|schema|migration|config)" || tr
|
|
|
92
77
|
- Comparar com ARD do central-docs (se existir)
|
|
93
78
|
- Se desatualizado ou novo:
|
|
94
79
|
- Perguntar: "Publicar ARD atualizado no central-docs?"
|
|
95
|
-
- Se sim: executar `jarvis docs publish --file <path> --tipo ard
|
|
80
|
+
- Se sim: executar `jarvis docs publish --file <path> --tipo ard`
|
|
96
81
|
|
|
97
82
|
**Passo 3:** Se novos contratos/APIs criados:
|
|
98
83
|
- Verificar se há RFC relacionado
|
|
99
84
|
- Se não: sugerir criar RFC para decisões arquiteturais
|
|
100
85
|
|
|
101
86
|
**Comportamento:**
|
|
102
|
-
- Se `
|
|
87
|
+
- Se `CENTRAL_DOCS_STORAGE` vazio → pular silenciosamente
|
|
103
88
|
- Não bloquear PR por docs desatualizados (apenas avisar)
|
|
104
89
|
|
|
105
90
|
---
|
|
@@ -150,6 +135,8 @@ Você também precisará lidar com todo o feedback que esses agentes fornecerem
|
|
|
150
135
|
|
|
151
136
|
### 2) Bloqueadores e pendências
|
|
152
137
|
|
|
138
|
+
Se o status for **RED** (bloqueado), comente o bloqueio e o motivo no card com `/eng-global-task-comment` (freelance pula). GREEN e YELLOW não geram comentário.
|
|
139
|
+
|
|
153
140
|
- Bloqueadores:
|
|
154
141
|
- Pendências aceitas (com justificativa):
|
|
155
142
|
- Follow-ups (links/IDs):
|
|
@@ -162,20 +149,4 @@ Você também precisará lidar com todo o feedback que esses agentes fornecerem
|
|
|
162
149
|
- Docs atualizadas:
|
|
163
150
|
- Riscos / trade-offs:
|
|
164
151
|
|
|
165
|
-
## Comentário no card — Conclusão
|
|
166
|
-
|
|
167
|
-
Pular se `TASK_MANAGER` estiver vazio (freelance).
|
|
168
|
-
|
|
169
|
-
Após apresentar o resultado final, registrar:
|
|
170
|
-
|
|
171
|
-
- Se **Green**: `✅ [Jarvis] Pre-PR concluído com status GREEN - pronto para abrir MR`
|
|
172
|
-
- Se **Yellow**: `⚠️ [Jarvis] Pre-PR concluído com status YELLOW - pode abrir MR com ressalvas`
|
|
173
|
-
- Se **Red**: `🚫 [Jarvis] Pre-PR concluído com status RED - bloqueadores encontrados, não abrir MR`
|
|
174
|
-
|
|
175
|
-
```
|
|
176
|
-
/eng-global-task-comment {TASK_MANAGER_KEY} {mensagem_status}
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
---
|
|
180
|
-
|
|
181
152
|
Uma vez terminado, me avise e peça minha permissão para abrir o Pull Request.
|
|
@@ -75,14 +75,16 @@ grep "^ENABLE_CDD=" $IDE/ENV.md
|
|
|
75
75
|
|
|
76
76
|
### 0.3 Criar Branch e Sessão
|
|
77
77
|
|
|
78
|
+
Pergunte a branch base com `AskUserQuestion` (**"De qual branch partir?"**: `main`, `dev`, `{branch atual}` se for outra, ou Outro) e grave `Branch base:` no `architecture.md` da sessão; o `eng.pr` abre o PR para ela.
|
|
79
|
+
|
|
78
80
|
```bash
|
|
79
|
-
git checkout
|
|
81
|
+
git checkout {BRANCH_BASE} && git pull --ff-only origin {BRANCH_BASE}
|
|
80
82
|
git checkout -b {TASK_MANAGER_KEY}-{robot-tag}
|
|
81
83
|
mkdir -p $SESSIONS_DIR/eng/{TASK_MANAGER_KEY}/
|
|
82
84
|
echo "$(date -u +"%Y-%m-%dT%H:%M:%SZ")" > $SESSIONS_DIR/eng/{TASK_MANAGER_KEY}/.timestamp_start
|
|
83
85
|
```
|
|
84
86
|
|
|
85
|
-
>
|
|
87
|
+
> A base é sempre perguntada: não presuma `dev` nem `main`. A branch de trabalho nunca é a própria base.
|
|
86
88
|
|
|
87
89
|
---
|
|
88
90
|
|
|
@@ -26,8 +26,8 @@ Este comando inicia o **planejamento** de uma nova feature.
|
|
|
26
26
|
|-------|-------|----------|
|
|
27
27
|
| Cabeçalho (agente) | `eng.agent` (agente) | Sempre — identidade do workflow |
|
|
28
28
|
| Fase 0.1: Análise de Contexto (CDD) | `/jarvis-context-detect` | Se `ENABLE_CDD=true` no ENV.md (execução obrigatória antes da Fase 1); `ENABLE_CDD=false` pula |
|
|
29
|
-
| Fase 0.5:
|
|
30
|
-
| Fase 2.2: Buscar Documentação Central | `/jarvis-docs-central` | Se `
|
|
29
|
+
| Fase 0.5: Advisor (opcional) | `eng.advisor.agent` (agente) | Se o usuário escolher usar o Advisor no alerta e o `architecture.md` tiver questões em aberto (aberto só na primeira questão) |
|
|
30
|
+
| Fase 2.2: Buscar Documentação Central | `/jarvis-docs-central` | Se `CENTRAL_DOCS_STORAGE` estiver configurado no ENV.md (buscar PRD, ARD e RFCs relacionados) |
|
|
31
31
|
| Fase 3.4: Estratégia de Testes | `eng.qa.test-architect` (agente) | Se a feature tiver requisitos de performance ou segurança (APIs públicas, dados sensíveis, alta carga ou requisitos não-funcionais explícitos) |
|
|
32
32
|
| Fase 3.4: Estratégia de Testes | `/eng-platform` | Se a feature tiver requisitos de performance (latência, throughput, escalabilidade) |
|
|
33
33
|
| Fase 3.4: Estratégia de Testes | `/eng-ai` | Se a feature envolver IA (LLM, RAG, agentes, chatbots, embeddings) |
|
|
@@ -36,7 +36,7 @@ Este comando inicia o **planejamento** de uma nova feature.
|
|
|
36
36
|
| Fase 3.4: Estratégia de Testes | `/eng-data` (via `eng.specializations-rules.md`) | Se a feature envolver engenharia de dados (pipelines ETL/ELT, Glue, Airflow, contratos de dados, camadas bronze/silver/gold); a regra também carrega as especializações de `DATA_SPECIALIZATIONS` |
|
|
37
37
|
| Fase 3.4: Estratégia de Testes | `/eng-automation` (via `eng.specializations-rules.md`) | Se a feature envolver RPA ou extração de dados/scraping; a regra também carrega as especializações de `AUTOMATION_SPECIALIZATIONS` |
|
|
38
38
|
| Fase 3.4: Estratégia de Testes | `/eng-platform` (via `eng.specializations-rules.md`) | Se a feature envolver infraestrutura (IaC, contêineres, CI/CD, observabilidade, SRE, custo); a regra também carrega as especializações de `PLATFORM_SPECIALIZATIONS` |
|
|
39
|
-
| Fase
|
|
39
|
+
| Fase 4.3: Questões em Aberto | `/eng-global-task-comment` | Se o Advisor foi usado e houve questões em aberto: **um** comentário de auditoria (freelance pula; o registro fica só no `architecture.md`) |
|
|
40
40
|
|
|
41
41
|
---
|
|
42
42
|
|
|
@@ -123,30 +123,28 @@ Se o usuário solicitar ajustes, re-execute com `--override`.
|
|
|
123
123
|
|
|
124
124
|
---
|
|
125
125
|
|
|
126
|
-
## Fase 0.5:
|
|
126
|
+
## Fase 0.5: Advisor (opcional)
|
|
127
127
|
|
|
128
|
-
|
|
128
|
+
Logo depois de obter o `TASK_MANAGER_KEY`, pergunte com `AskUserQuestion` (sem a ferramenta, use a tabela de `prod-rules.md`): **"Usar o Advisor nas questões em aberto desta tarefa?"** (**Não**, padrão / **Sim**). Com **Não**, siga como sempre e não mencione mais o Advisor.
|
|
129
129
|
|
|
130
|
-
|
|
130
|
+
Com **Sim**, pergunte **"Qual modelo para o Advisor?"** com os itens de `ADVISOR_MODELS` do `ENV.md` (até 4 opções; o resto em "Outro"). Lista vazia ou ausente: use `Sonnet 5.5` sem perguntar; lista de um item: use-o sem perguntar. Traduza o nome pela família (primeira palavra em minúsculas: `sonnet`, `opus`, `fable`, `haiku`); se o modelo não for aceito pela IDE, use `sonnet` e avise em uma linha. Se a IDE não permitir escolher o modelo do subagente, avise e não faça a segunda pergunta.
|
|
131
131
|
|
|
132
|
-
|
|
133
|
-
/eng-global-task-comment {TASK_MANAGER_KEY} 🚀 [Jarvis] Iniciando planejamento - architecture.md sendo criado
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
> Usa o skill `/eng-global-task-comment` (MCP Atlassian → fallback curl). Não bloquear se falhar.
|
|
132
|
+
Registre a escolha no cabeçalho do `architecture.md` (`Advisor:`). O agente `eng.advisor.agent` só é aberto na primeira questão em aberto (Fase 4.3).
|
|
137
133
|
|
|
138
134
|
---
|
|
139
135
|
|
|
140
136
|
## Fase 1: Preparação do Ambiente
|
|
141
137
|
|
|
142
|
-
### 1.1 Criar Branch de Feature
|
|
138
|
+
### 1.1 Criar Branch de Feature
|
|
139
|
+
|
|
140
|
+
**Pergunte sempre a branch base** com `AskUserQuestion` (sem a ferramenta, use a tabela de `prod-rules.md`): **"De qual branch partir?"** com as opções `main`, `dev` e `{branch atual}` (só se a branch atual for outra), mais "Outro" para digitar. Não presuma `dev` nem `main`: cada projeto tem o seu fluxo.
|
|
143
141
|
|
|
144
|
-
|
|
142
|
+
Grave a escolha no cabeçalho do `architecture.md` (`Branch base:`). O `eng.pr` abre o PR para essa mesma branch.
|
|
145
143
|
|
|
146
144
|
```bash
|
|
147
|
-
# Garantir que
|
|
148
|
-
git checkout
|
|
149
|
-
git pull origin
|
|
145
|
+
# Garantir que a base está atualizada
|
|
146
|
+
git checkout {BRANCH_BASE}
|
|
147
|
+
git pull --ff-only origin {BRANCH_BASE}
|
|
150
148
|
|
|
151
149
|
# Criar branch no padrão {TASK_MANAGER_KEY}-{titulo-em-kebab-case}
|
|
152
150
|
git checkout -b {TASK_MANAGER_KEY}-{titulo-em-kebab-case}
|
|
@@ -179,9 +177,9 @@ git branch --show-current
|
|
|
179
177
|
| `TASK-123` | "Implementar autenticação JWT" | `TASK-123-implementar-autenticacao-jwt` |
|
|
180
178
|
| `BUG-789` | "Fix null pointer em login" | `BUG-789-fix-null-pointer-em-login` |
|
|
181
179
|
|
|
182
|
-
> ⚠️ Se o usuário já estiver em uma branch com o padrão correto do TASK_MANAGER_KEY, use-a sem criar nova.
|
|
183
|
-
> ⚠️
|
|
184
|
-
> ✅ A branch criada aqui será usada em todos os workflows subsequentes (work, pre-pr, pr).
|
|
180
|
+
> ⚠️ Se o usuário já estiver em uma branch com o padrão correto do TASK_MANAGER_KEY, use-a sem criar nova (e ainda assim pergunte a base, para o `eng.pr`).
|
|
181
|
+
> ⚠️ Se o projeto tiver convenção própria de nome de branch (ex.: `CONTRIBUTING.md`), siga a do projeto.
|
|
182
|
+
> ✅ A branch criada aqui será usada em todos os workflows subsequentes (work, pre-pr, pr). Ela é sempre uma branch de trabalho: nunca implemente direto na base.
|
|
185
183
|
|
|
186
184
|
### 1.2 Criar Diretório de Sessão
|
|
187
185
|
|
|
@@ -219,7 +217,7 @@ Solicite ao usuário os dados de entrada:
|
|
|
219
217
|
|
|
220
218
|
### 2.2 Buscar Documentação Central (condicional)
|
|
221
219
|
|
|
222
|
-
Se `
|
|
220
|
+
Se `CENTRAL_DOCS_STORAGE` estiver configurado no ENV.md, buscar docs relacionados:
|
|
223
221
|
|
|
224
222
|
**Passo 1:** Identificar docs relevantes com base no Jira ID e tags do card
|
|
225
223
|
|
|
@@ -234,7 +232,7 @@ Se `CENTRAL_DOCS_REPO` estiver configurado no ENV.md, buscar docs relacionados:
|
|
|
234
232
|
**Comportamento:**
|
|
235
233
|
- Se docs encontrados → carregar e exibir resumo
|
|
236
234
|
- Se não encontrados → perguntar se tem docs localmente
|
|
237
|
-
- Se `
|
|
235
|
+
- Se `CENTRAL_DOCS_STORAGE` vazio → pular silenciosamente
|
|
238
236
|
|
|
239
237
|
### 2.3 Análise do Requisito
|
|
240
238
|
|
|
@@ -382,6 +380,18 @@ Preencha **TODAS** as seções com as informações coletadas nas fases anterior
|
|
|
382
380
|
- Use nomes de classes/funções existentes
|
|
383
381
|
- Referencie código encontrado na investigação
|
|
384
382
|
|
|
383
|
+
### 4.3 Questões em Aberto
|
|
384
|
+
|
|
385
|
+
Levante na seção 8 **tudo** que for diferente do código ou ambíguo no card, no formato do template (é aqui que as questões devem aparecer; levantá-las depois é exceção).
|
|
386
|
+
|
|
387
|
+
**Com Advisor** (Fase 0.5), use os textos de `$IDE/templates/engineering/advisor-template.md`:
|
|
388
|
+
1. Na primeira questão, abra `eng.advisor.agent` em segundo plano com o modelo escolhido e envie o **Prompt 1** (carga inicial). Se ele responder que precisa de ajuda para localizar o contexto, pergunte ao usuário com `AskUserQuestion` (opção "Não há documento: siga só com o card e o código") e reenvie.
|
|
389
|
+
2. Envie cada questão com o **Prompt 2**, uma por mensagem, para a mesma instância.
|
|
390
|
+
3. Preencha "Sugestão do Sub-Agent (Advisor)", **"Decisão adotada" (a sugestão do Advisor, que prevalece; não a substitua nem a conteste)**, "Divergência" e "Impacto da decisão". Confira no código os fatos em que a sugestão se apoia antes de registrar.
|
|
391
|
+
4. Poste **um** comentário de auditoria na issue com `/eng-global-task-comment`, no modelo do template (freelance pula).
|
|
392
|
+
|
|
393
|
+
**Sem Advisor:** apresente as questões ao usuário, como sempre.
|
|
394
|
+
|
|
385
395
|
---
|
|
386
396
|
|
|
387
397
|
## Fase 5: Revisão e Aprovação
|
|
@@ -403,39 +413,30 @@ Se o usuário tiver feedback:
|
|
|
403
413
|
- Apresente novamente
|
|
404
414
|
- Continue até aprovação explícita
|
|
405
415
|
|
|
416
|
+
**Com Advisor**, o gate segue a autonomia do `context.md` (CDD): `alta` → apresente o resumo e siga para o `eng.plan` sem aguardar; `média` ou `baixa` → aguarde a aprovação explícita. Sem `context.md`, use a tabela "Autonomia por POSITION" de `eng-rules.md`. Sem Advisor, nada muda.
|
|
417
|
+
|
|
406
418
|
### 5.3 Atualizar Board
|
|
407
419
|
|
|
408
420
|
Pular se `TASK_MANAGER` estiver vazio (freelance).
|
|
409
421
|
|
|
410
422
|
Se estiver preenchido, mova o card para a etapa equivalente a "em andamento" no seu board. Quem assumiu o card conduz a entrega; ninguém precisa liberar a transição.
|
|
411
423
|
|
|
412
|
-
### 5.4
|
|
413
|
-
|
|
414
|
-
Pular se `TASK_MANAGER` estiver vazio (freelance).
|
|
415
|
-
|
|
416
|
-
Registrar conclusão do planejamento:
|
|
417
|
-
|
|
418
|
-
```
|
|
419
|
-
/eng-global-task-comment {TASK_MANAGER_KEY} ✅ [Jarvis] Planejamento concluído - architecture.md criado. Branch: {NOME_DA_BRANCH}
|
|
420
|
-
```
|
|
421
|
-
|
|
422
|
-
### 5.5 Finalização
|
|
424
|
+
### 5.4 Finalização
|
|
423
425
|
|
|
424
426
|
Quando o usuário aprovar, informe:
|
|
425
427
|
|
|
426
428
|
```
|
|
427
429
|
✅ Architecture.md criado com sucesso!
|
|
428
430
|
|
|
429
|
-
🌿 Branch: {
|
|
431
|
+
🌿 Branch: {NOME_DA_BRANCH} (criada a partir de {BRANCH_BASE})
|
|
430
432
|
📄 Arquivo: $SESSIONS_DIR/eng/{TASK_MANAGER_KEY}/architecture.md
|
|
431
|
-
🌿 Branch: {NOME_DA_BRANCH}
|
|
432
433
|
|
|
433
434
|
🔄 Board: mova o card para "Em progresso" no seu board de tarefas.
|
|
434
435
|
|
|
435
436
|
📌 Próximos passos:
|
|
436
437
|
1. Execute `eng.plan` para criar o plano detalhado de execução
|
|
437
438
|
2. Execute `eng.work` para implementar (commita automaticamente ao final de cada fase)
|
|
438
|
-
3. Execute `eng.pr` para abrir o MR para
|
|
439
|
+
3. Execute `eng.pr` para abrir o MR para {BRANCH_BASE}
|
|
439
440
|
|
|
440
441
|
🚫 Lembre-se: Este workflow NÃO executa código.
|
|
441
442
|
Para implementar, use os comandos de execução.
|
|
@@ -452,11 +453,11 @@ Quando o usuário aprovar, informe:
|
|
|
452
453
|
- ❌ NÃO faça commits
|
|
453
454
|
- ❌ NÃO instale dependências
|
|
454
455
|
- ❌ NÃO modifique arquivos de código existentes
|
|
455
|
-
- ❌ NÃO crie branch
|
|
456
|
+
- ❌ NÃO crie a branch sem perguntar a base
|
|
456
457
|
|
|
457
458
|
### ✅ FAÇA APENAS
|
|
458
459
|
|
|
459
|
-
- ✅ Criar branch a partir
|
|
460
|
+
- ✅ Criar branch a partir da base escolhida pelo usuário, no padrão `{TASK_MANAGER_KEY}-{titulo}`
|
|
460
461
|
- ✅ Criar o diretório `$SESSIONS_DIR/eng/{TASK_MANAGER_KEY}/`
|
|
461
462
|
- ✅ Criar o arquivo `architecture.md`
|
|
462
463
|
- ✅ Investigar e analisar o codebase (leitura apenas)
|