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.
Files changed (59) hide show
  1. package/agents/README.md +2 -0
  2. package/agents/engineering/eng.advisor.agent.md +56 -0
  3. package/agents/product/prod.discovery-interviewer.md +1 -1
  4. package/bin/README.md +14 -14
  5. package/bin/commands/docs-publish.js +50 -92
  6. package/bin/commands/docs-sync.js +30 -63
  7. package/bin/lib/cli/program.js +23 -25
  8. package/bin/lib/docs/fetch-file.js +29 -26
  9. package/bin/lib/docs/publish-file.js +89 -161
  10. package/bin/lib/docs/storage/build-index.js +87 -0
  11. package/bin/lib/docs/storage/filesystem.js +203 -0
  12. package/bin/lib/docs/storage/index.js +75 -0
  13. package/bin/lib/docs/validate-frontmatter.js +14 -4
  14. package/bin/lib/vcs/api.js +0 -125
  15. package/package.json +2 -2
  16. package/rules/AGENTS.md +12 -9
  17. package/rules/engineering/eng.integrations-rules.md +5 -2
  18. package/rules/product/prod-rules.md +4 -5
  19. package/rules-on-demand/engineering/eng.pre-pr-rules.md +1 -1
  20. package/rules-on-demand/engineering/eng.start-rules.md +2 -0
  21. package/rules-on-demand/product/prod.guided-rules.md +104 -0
  22. package/skills/eng-global-task-comment/SKILL.md +1 -1
  23. package/skills/jarvis-docs-central/README.md +57 -269
  24. package/skills/jarvis-docs-central/SKILL.md +126 -296
  25. package/skills/jarvis-init/SKILL.md +47 -7
  26. package/templates/AGENTS.md +2 -0
  27. package/templates/ENV-template.md +30 -5
  28. package/templates/engineering/ARD-template.md +39 -6
  29. package/templates/engineering/advisor-template.md +65 -0
  30. package/templates/engineering/architecture-template.md +53 -4
  31. package/templates/product/prod-breakdown-template.md +20 -2
  32. package/templates/product/prod-discovery-template.md +24 -1
  33. package/templates/product/prod-epic-template.md +32 -1
  34. package/templates/product/prod-frd-template.md +29 -2
  35. package/templates/product/prod-issue-template.md +36 -1
  36. package/templates/product/prod-prd-template.md +33 -2
  37. package/workflows/engineering/eng.build-tech-spec.md +2 -2
  38. package/workflows/engineering/eng.create-ard-from-code.md +9 -11
  39. package/workflows/engineering/eng.create-ard.md +15 -13
  40. package/workflows/engineering/eng.create-rfc.md +8 -10
  41. package/workflows/engineering/eng.plan.md +4 -26
  42. package/workflows/engineering/eng.pr.md +7 -39
  43. package/workflows/engineering/eng.pre-pr.md +7 -36
  44. package/workflows/engineering/eng.rpa.robot.md +4 -2
  45. package/workflows/engineering/eng.start.md +38 -37
  46. package/workflows/engineering/eng.work.md +7 -22
  47. package/workflows/product/prod.roadmap.preview.md +4 -1
  48. package/workflows/product/prod.spec.ard.md +7 -3
  49. package/workflows/product/prod.spec.breakdown.md +7 -3
  50. package/workflows/product/prod.spec.clarify.md +5 -1
  51. package/workflows/product/prod.spec.discovery.md +7 -3
  52. package/workflows/product/prod.spec.epic.md +13 -11
  53. package/workflows/product/prod.spec.frd.md +15 -13
  54. package/workflows/product/prod.spec.issue.md +5 -1
  55. package/workflows/product/prod.spec.md +3 -1
  56. package/workflows/product/prod.spec.prd.md +15 -13
  57. package/workflows/warm-up.md +3 -3
  58. package/bin/lib/docs/redis-cache.js +0 -49
  59. 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: claude-sonnet-4-20250514
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 `CENTRAL_DOCS_REPO` estiver definido no ENV.md |
29
- | Passo 8 – Publicar no Central Docs | `/jarvis-docs-central` (via `jarvis docs publish --tipo ard`) | Se `CENTRAL_DOCS_REPO` estiver definido, o ARD estiver aprovado e o usuário aceitar publicar |
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 `CENTRAL_DOCS_REPO` definido no ENV.md:
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 `CENTRAL_DOCS_REPO` definido no ENV.md **E** o usuário aprovar o ARD:
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 central-docs. MR criado: [URL]"
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 --feature {slug}`"
390
+ - Informar: "Para publicar depois, execute: `jarvis docs publish --file {caminho} --tipo ard`"
389
391
 
390
- > **Nota**: A publicação cria um Merge Request no GitLab. O ARD só será visível no central-docs após aprovação e merge do MR.
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 `CENTRAL_DOCS_REPO` estiver definido no ENV.md |
31
- | Passo 7 – Publicar no Central Docs | `/jarvis-docs-central` (via `jarvis docs publish --tipo rfc`) | Se `CENTRAL_DOCS_REPO` estiver definido **e** o usuário aprovar o RFC e responder "Sim, publicar agora" |
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 `CENTRAL_DOCS_REPO` definido no ENV.md:
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 `CENTRAL_DOCS_REPO` definido no ENV.md **E** o usuário aprovar o RFC:
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 central-docs. MR criado: [URL]"
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 --feature {slug}`"
248
+ - Informar: "Para publicar depois, execute: `jarvis docs publish --file {caminho} --tipo rfc`"
251
249
 
252
- > **Nota**: A publicação cria um Merge Request no GitLab. O RFC só será visível no central-docs após aprovação e merge do MR.
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
- | Comentário no card — Conclusão | `/eng-global-task-comment` | Se `TASK_MANAGER` estiver preenchido, após validar o plano com o usuário (freelance pula) |
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 5: Comentário no card — Conclusão | `/eng-global-task-comment` | Se `TASK_MANAGER` estiver preenchido, depois de o MR ser criado (freelance pula) |
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 **padrão é `dev`** (GitFlow). Só perguntar se o usuário indicar outra branch (ex: hotfix direto para `main`).
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 padrão: **`dev`** (GitFlow).
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 dev..HEAD --oneline
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 informada pelo usuário (`dev` / `main` / hotfix)
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 Adicionar Comentário
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
- | Fase 0.5: Comentário no card — Início | `/eng-global-task-comment` | Se `TASK_MANAGER` estiver preenchido (freelance pula) |
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
- | Comentário no card — Conclusão | `/eng-global-task-comment` | Se `TASK_MANAGER` estiver preenchido, com o status final (freelance pula) |
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 `CENTRAL_DOCS_REPO` estiver configurado no ENV.md:
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 --feature <slug>`
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 `CENTRAL_DOCS_REPO` vazio → pular silenciosamente
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 dev && git pull origin dev
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
- > Branch sempre criada a partir de `dev`. Nunca de `main`/`master`.
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: Comentário no card — Início | `/eng-global-task-comment` | Se `TASK_MANAGER` estiver preenchido (freelance pula) |
30
- | Fase 2.2: Buscar Documentação Central | `/jarvis-docs-central` | Se `CENTRAL_DOCS_REPO` estiver configurado no ENV.md (buscar PRD, ARD e RFCs relacionados) |
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 5.4: Comentário no card — Conclusão | `/eng-global-task-comment` | Se `TASK_MANAGER` estiver preenchido, após o usuário aprovar o `architecture.md` (freelance pula) |
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: Comentário no card — Início
126
+ ## Fase 0.5: Advisor (opcional)
127
127
 
128
- Pular se `TASK_MANAGER` estiver vazio (freelance).
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
- Após obter o `TASK_MANAGER_KEY`, registrar o início do planejamento:
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 (GitFlow)
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
- Crie a branch de trabalho a partir de `dev` seguindo o padrão GitFlow:
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 está em dev e atualizado
148
- git checkout dev
149
- git pull origin dev
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
- > ⚠️ **NUNCA** criar branch a partir de `main`/`master`. Sempre a partir de `dev`.
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 `CENTRAL_DOCS_REPO` estiver configurado no ENV.md, buscar docs relacionados:
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 `CENTRAL_DOCS_REPO` vazio → pular silenciosamente
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 Comentário no card — Conclusão
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: {TASK_MANAGER_KEY}-{titulo-em-kebab-case} (criada a partir de dev)
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 dev
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 a partir de `main`/`master`
456
+ - ❌ NÃO crie a branch sem perguntar a base
456
457
 
457
458
  ### ✅ FAÇA APENAS
458
459
 
459
- - ✅ Criar branch a partir de `dev` no padrão `{TASK_MANAGER_KEY}-{titulo}`
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)