jarvis-ai-framework 3.2.0 → 5.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 (66) hide show
  1. package/agents/engineering/eng.docs-consolidator.agent.md +81 -0
  2. package/agents/engineering/qa/eng.qa.test-planner.md +7 -7
  3. package/agents/product/prod.discovery-interviewer.md +1 -1
  4. package/bin/README.md +14 -14
  5. package/bin/commands/docs-publish.js +61 -93
  6. package/bin/commands/docs-sync.js +31 -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 +98 -159
  10. package/bin/lib/docs/storage/build-index.js +108 -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 +18 -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.docs-scraping-rules.md +4 -4
  18. package/rules/engineering/eng.integrations-rules.md +3 -2
  19. package/rules/engineering/rpa/eng.rpa-rules.md +1 -1
  20. package/rules/product/prod-rules.md +5 -6
  21. package/rules-on-demand/engineering/eng.pr-rules.md +9 -31
  22. package/rules-on-demand/engineering/eng.pre-pr-rules.md +12 -19
  23. package/rules-on-demand/product/prod.guided-rules.md +104 -0
  24. package/skills/eng-backend-arch-c4/SKILL.md +3 -3
  25. package/skills/eng-global-docs-write/SKILL.md +1 -1
  26. package/skills/eng-qa-planner/SKILL.md +5 -5
  27. package/skills/jarvis-docs-central/README.md +51 -275
  28. package/skills/jarvis-docs-central/SKILL.md +114 -301
  29. package/skills/jarvis-init/SKILL.md +81 -8
  30. package/templates/ENV-template.md +28 -7
  31. package/templates/engineering/ARD-template.md +40 -7
  32. package/templates/engineering/architecture-template.md +1 -0
  33. package/templates/engineering/central-delivery-template.md +65 -0
  34. package/templates/engineering/central-feature-template.md +86 -0
  35. package/templates/product/prod-breakdown-template.md +20 -2
  36. package/templates/product/prod-discovery-template.md +24 -1
  37. package/templates/product/prod-epic-template.md +32 -1
  38. package/templates/product/prod-frd-template.md +29 -2
  39. package/templates/product/prod-issue-template.md +36 -1
  40. package/templates/product/prod-prd-template.md +33 -2
  41. package/workflows/engineering/eng.build-tech-spec.md +4 -4
  42. package/workflows/engineering/eng.create-ard-from-code.md +15 -41
  43. package/workflows/engineering/eng.create-ard.md +22 -44
  44. package/workflows/engineering/eng.create-rfc.md +10 -36
  45. package/workflows/engineering/eng.pr.md +35 -66
  46. package/workflows/engineering/eng.pre-pr.md +52 -89
  47. package/workflows/engineering/eng.rpa.robot.md +9 -7
  48. package/workflows/engineering/eng.spec-consolidate.md +140 -0
  49. package/workflows/engineering/eng.start.md +23 -22
  50. package/workflows/engineering/eng.work.md +1 -1
  51. package/workflows/engineering/qa/eng.qa-refinement-entry.md +1 -1
  52. package/workflows/engineering/qa/eng.qa-release-signoff.md +3 -3
  53. package/workflows/engineering/qa/eng.qa-sprint-planning.md +2 -2
  54. package/workflows/product/prod.roadmap.preview.md +4 -1
  55. package/workflows/product/prod.spec.ard.md +9 -5
  56. package/workflows/product/prod.spec.breakdown.md +8 -4
  57. package/workflows/product/prod.spec.clarify.md +5 -1
  58. package/workflows/product/prod.spec.discovery.md +7 -3
  59. package/workflows/product/prod.spec.epic.md +12 -40
  60. package/workflows/product/prod.spec.frd.md +13 -39
  61. package/workflows/product/prod.spec.issue.md +5 -1
  62. package/workflows/product/prod.spec.md +3 -1
  63. package/workflows/product/prod.spec.prd.md +13 -40
  64. package/workflows/warm-up.md +10 -12
  65. package/bin/lib/docs/redis-cache.js +0 -49
  66. package/bin/lib/vcs/fetch-raw.js +0 -42
@@ -1,16 +1,51 @@
1
1
  ---
2
+ # Modelo de IA recomendado para trabalhar neste documento. Se a sessão estiver em outro,
3
+ # o comando avisa e segue (você decide se troca). Opções: opus | sonnet | haiku
4
+ recommended_model: opus
5
+
6
+ # Identificador único, em sequência (ex.: STORY-001, TASK-001, BUG-001). Vai no nome do arquivo e nos campos related_* de outros documentos.
2
7
  id: {issue_type-001}
8
+
9
+ # Nome curto do documento. Vai no título e, em kebab-case, no nome do arquivo.
3
10
  name: {nome dessa issue}
11
+
12
+ # Tipo da issue.
13
+ # Opções: Story | Task | Bug
14
+ # Story = história de usuário (valor para quem usa) | Task = tarefa técnica | Bug = defeito a corrigir
4
15
  type: {Story, Task, Bug}
16
+
17
+ # PRD relacionado (Product Requirements Document: o problema e o que vamos construir).
5
18
  related_prd: {path PRD relacionado, exemplo /master-docs/product/prd-001.md}
19
+
20
+ # Épico ao qual esta issue pertence (o agrupador de histórias e tarefas). Remova a linha se não houver.
6
21
  related_epic: {nome do Epico relacionado, exemplo /master-docs/product/epics/epic-001.md. Se não existir, ignore essa linha}
22
+
23
+ # FRD relacionado (Functional Requirements Document: o comportamento detalhado de uma funcionalidade).
7
24
  related_frd: {path FRD relacionado, exemplo /master-docs/product/frds/frd-001.md}
25
+
26
+ # Discovery de origem (o rascunho da ideia, anterior ao PRD). Remova a linha se não houver.
8
27
  related_discovery: {path do discovery de origem, exemplo $PROD_DOCS/discoveries/discovery-001-nome.md. Se não existir, ignore essa linha}
28
+
29
+ # Data de criação (YYYY-MM-DD).
9
30
  created_at: {YYYY-MM-DD}
31
+
32
+ # Data da última alteração (YYYY-MM-DD).
10
33
  updated_at: {YYYY-MM-DD}
34
+
35
+ # Link do card no task manager do projeto (TASK_MANAGER no ENV.md). Remova a linha se não houver.
11
36
  task_link: {URL referêncial no $TASK_MANAGER - se existir. Se não, ignore essa linha}
12
- status: {icebox|in_review|in_progress|in_production|deprecated}
37
+
38
+ # Em que ponto este documento está no ciclo de vida (lista em rules/product/prod-rules.md).
39
+ # Opções: icebox | in_review | backlog | in_progress | in_production | cancelled | deprecated
40
+ # icebox = ideia aguardando priorização | in_review = sendo estudado ou revisado | backlog = definido, aguardando implementação
41
+ # in_progress = em desenvolvimento | in_production = em produção
42
+ # cancelled = cancelado antes de ser entregue | deprecated = esteve em produção e foi descontinuado
43
+ status: {um dos valores acima}
44
+
45
+ # Quem criou o documento.
13
46
  created_by: {nome de quem criou esse doc}
47
+
48
+ # Quem editou o documento por último.
14
49
  last_editor: {nome de quem editou por último}
15
50
  ---
16
51
 
@@ -1,15 +1,46 @@
1
1
  ---
2
+ # Modelo de IA recomendado para trabalhar neste documento. Se a sessão estiver em outro,
3
+ # o comando avisa e segue (você decide se troca). Opções: opus | sonnet | haiku
4
+ recommended_model: opus
5
+
6
+ # Identificador único, em sequência (ex.: PRD-001). Vai no nome do arquivo e nos campos related_* de outros documentos.
2
7
  id: {PRD-001}
8
+
9
+ # Nome curto do documento. Vai no título e, em kebab-case, no nome do arquivo.
3
10
  name: {nome desse prd}
11
+
12
+ # Versão do documento (X.Y.Z). Atualize a cada alteração.
4
13
  version: {X.Y.Z - atualizar sempre que houver alteração}
5
- status: {$ITEM_STATUS}
14
+
15
+ # Em que ponto este documento está no ciclo de vida (lista em rules/product/prod-rules.md).
16
+ # Opções: icebox | in_review | backlog | in_progress | in_production | cancelled | deprecated
17
+ # icebox = ideia aguardando priorização | in_review = sendo estudado ou revisado | backlog = definido, aguardando implementação
18
+ # in_progress = em desenvolvimento | in_production = em produção
19
+ # cancelled = cancelado antes de ser entregue | deprecated = esteve em produção e foi descontinuado
20
+ status: {um dos valores acima}
21
+
22
+ # Quem editou o documento por último.
6
23
  last_editor: {nome de quem editou por último}
24
+
25
+ # Data da última alteração (YYYY-MM-DD).
7
26
  updated_at: {YYYY-MM-DD}
27
+
28
+ # Repositórios de código onde este produto é implementado.
8
29
  related_repo: {URLs de repositórios relacionados, se forem vários, utilize sintaxe compatível com YAML}
30
+
31
+ # PRD relacionado (Product Requirements Document: o problema e o que vamos construir).
9
32
  related_prd: {Lista de PRDs que são relacionadas a esse PRD, se forem vários, utilize sintaxe compatível com YAML}
33
+
34
+ # FRD relacionado (Functional Requirements Document: o comportamento detalhado de uma funcionalidade).
10
35
  related_frd: {Lista de FRDs que são relacionadas a esse PRD, se forem vários, utilize sintaxe compatível com YAML}
36
+
37
+ # Discovery de origem (o rascunho da ideia, anterior ao PRD). Remova a linha se não houver.
11
38
  related_discovery: {path do discovery de origem, exemplo $PROD_DOCS/discoveries/discovery-001-nome.md. Se não existir, ignore essa linha}
39
+
40
+ # Data de criação (YYYY-MM-DD).
12
41
  created_at: {YYYY-MM-DD}
42
+
43
+ # Quem criou o documento.
13
44
  created_by: {nome de quem criou esse doc}
14
45
  ---
15
46
 
@@ -148,7 +179,7 @@ Estes são indicadores que podem ser usados para medir o sucesso dessa solução
148
179
 
149
180
 
150
181
  ## Especificações relacionadas
151
- {liste todos os PRDs, FRDs ou outros documentos relacionados a este FRD fazendo uma análise prévia do projeto e das especificações existentes no `$CENTRAL_DOCS_REPO`. Pergunte para o usuário se existe outras relações que ele conheça. Antes de adicionar as sugestões, confirme com o usuário se elas estão corretas.}
182
+ {liste todos os PRDs, FRDs ou outros documentos relacionados a este FRD fazendo uma análise prévia do projeto e das especificações existentes no Central docs (`jarvis docs sync`). Pergunte para o usuário se existe outras relações que ele conheça. Antes de adicionar as sugestões, confirme com o usuário se elas estão corretas.}
152
183
 
153
184
  **PRDs relacionadas**:
154
185
  | ID | Título | Descrição |
@@ -54,7 +54,7 @@ Transformar uma história de usuário (user story) do Jira em uma **Tech Spec co
54
54
  | Passo | Skill | Condição |
55
55
  |-------|-------|----------|
56
56
  | Processo de Criação › verificação de necessidade de RFC | `/eng.create-rfc` | Se a Tech Spec atender aos critérios que exigem RFC e o usuário escolher "A: Criar uma RFC agora" |
57
- | Caminho A › 2A.2 Análise de Documentação de Produto | `/jarvis-docs-central` | Se `CENTRAL_DOCS_REPO` estiver configurado (buscar PRD/FRD relacionados do épico) |
57
+ | Caminho A › 2A.2 Análise de Documentação de Produto | `/jarvis-docs-central` | Se `CENTRAL_DOCS_STORAGE` estiver configurado (funcionalidades já implementadas relacionadas ao épico; PRD/FRD vêm de `$PROD_DOCS`) |
58
58
  | FASE 7 › 7.3 Criação no Jira | `ferramenta MCP/API do Jira` (referência a confirmar) | Se o projeto usar Jira e houver ferramenta MCP ou API disponível; senão fornecer template para criação manual (o texto não nomeia a ferramenta) |
59
59
 
60
60
  ---
@@ -264,7 +264,7 @@ Foco em entender o sistema como um todo — não arquivos específicos, mas fron
264
264
  #### 2A.2 Análise de Documentação de Produto
265
265
 
266
266
  - Verifique se há PRD ou FRD relacionado ao épico em `$DOCS_FOLDER` ou no $TASK_MANAGER
267
- - Se `CENTRAL_DOCS_REPO` configurado: buscar docs via skill `jarvis-docs-central`
267
+ - Se `CENTRAL_DOCS_STORAGE` configurado: buscar docs via skill `jarvis-docs-central`
268
268
 
269
269
  #### 2A.3 Identificação de Restrições
270
270
 
@@ -418,8 +418,8 @@ Identifique:
418
418
  >
419
419
  > **1. Buscar contrato no repositório primeiro:**
420
420
  > Procure por specs existentes nos seguintes locais:
421
- > - `docs/engineering/swagger/`
422
- > - `docs/engineering/openapi/`
421
+ > - `$ENG_DOCS/swagger/`
422
+ > - `$ENG_DOCS/openapi/`
423
423
  > - `**/*swagger*.{yaml,yml,json}`
424
424
  > - `**/*openapi*.{yaml,yml,json}`
425
425
  > - `**/*api-spec*.{yaml,yml,json}`
@@ -22,8 +22,7 @@ priorizando a **arquitetura observada no código do repositório**, usando o tem
22
22
  | Passo | Skill | Condição |
23
23
  |-------|-------|----------|
24
24
  | Objetivo | `eng.agent` (agente) | Sempre — identidade do workflow (alinhamento com `eng.agent.md`) |
25
- | Passo 1 – Verificar PRD | `/jarvis-docs-central` (via `jarvis docs sync --silent`) | Se `CENTRAL_DOCS_REPO` estiver definido no ENV.md |
26
- | Passo 7 – 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 |
25
+ | Passo 1 – Verificar PRD | `/jarvis-docs-central` (via `jarvis docs sync --silent`) | Se `CENTRAL_DOCS_STORAGE` estiver definido no ENV.md |
27
26
 
28
27
  ---
29
28
 
@@ -43,7 +42,7 @@ priorizando a **arquitetura observada no código do repositório**, usando o tem
43
42
 
44
43
  - Se o usuário tiver passado `edit <nome-ou-caminho>`, use isso como entrada inicial.
45
44
  - Peça o **caminho do arquivo** do ARD existente (preferencial) ou o **nome** do ARD, se ainda não tiver.
46
- - Se o usuário passar só o nome, confirme onde ele está (ex.: `$DOCS_FOLDER/engineering/ARD/...`).
45
+ - Se o usuário passar só o nome, confirme onde ele está (ex.: `$ENG_DOCS/ARD/...`).
47
46
  - Leia o ARD atual e pergunte quais seções mudam (ou qual é o objetivo da iteração).
48
47
 
49
48
  3. Se for **novo ARD**:
@@ -58,10 +57,10 @@ priorizando a **arquitetura observada no código do repositório**, usando o tem
58
57
  - `Título`
59
58
  - `Slug` para o nome do arquivo (kebab-case)
60
59
  - Defina o `ARD-ID` automaticamente assim:
61
- - Se a pasta `$DOCS_FOLDER/engineering/ARD/` existir e houver arquivos no padrão `ARD-###-*.md`, use o maior `###` + 1.
60
+ - Se a pasta `$ENG_DOCS/ARD/` existir e houver arquivos no padrão `ARD-###-*.md`, use o maior `###` + 1.
62
61
  - Defina:
63
- - `Status`
64
- - `Caminho do arquivo` (`$DOCS_FOLDER/engineering/ARD/{ARD-ID}-{slug}.md` ou caminho fornecido para iteração)
62
+ - `Status` (campo `status` no frontmatter: `proposed | in_progress | in_review | approved`)
63
+ - `Caminho do arquivo` (`$ENG_DOCS/ARD/{ARD-ID}-{slug}.md` ou caminho fornecido para iteração)
65
64
 
66
65
  ---
67
66
 
@@ -69,22 +68,22 @@ priorizando a **arquitetura observada no código do repositório**, usando o tem
69
68
 
70
69
  ### 1.1 – Buscar PRD no Central Docs (condicional)
71
70
 
72
- Se `CENTRAL_DOCS_REPO` definido no ENV.md:
71
+ Se `CENTRAL_DOCS_STORAGE` definido no ENV.md:
73
72
 
74
- 1. Executar busca automática no central-docs:
73
+ 1. Consultar no Central docs as funcionalidades já implementadas relacionadas (o que existe hoje):
75
74
  ```bash
76
75
  jarvis docs sync --silent
77
76
  ```
78
77
 
79
- 2. Buscar PRD relacionado usando:
78
+ 2. Buscar o PRD relacionado em `$PROD_DOCS` (documento de trabalho; o Central docs não guarda PRD) usando:
80
79
  - Título/objetivo do ARD
81
80
  - Jira ID (se disponível)
82
81
  - Tags semânticas
83
82
 
84
- 3. Se PRD encontrado no central-docs:
83
+ 3. Se o PRD for encontrado em `$PROD_DOCS`:
85
84
  - Carregar automaticamente como contexto
86
85
  - Pular para item 2 (extração de requisitos)
87
- - Informar ao usuário: "✅ PRD encontrado no central-docs: [nome]"
86
+ - Informar ao usuário: "✅ PRD encontrado: [caminho]"
88
87
 
89
88
  4. Se PRD não encontrado:
90
89
  - Continuar com pergunta manual (item 1.2)
@@ -122,7 +121,7 @@ Objetivo: montar um retrato fiel do que o código revela hoje.
122
121
 
123
122
  - `README.md`
124
123
  - `ENV.md`
125
- - `$DOCS_FOLDER/**` (especialmente `$DOCS_FOLDER/engineering/ARD/**` e docs de arquitetura existentes)
124
+ - `$DOCS_FOLDER/**` (especialmente `$ENG_DOCS/ARD/**` e docs de arquitetura existentes)
126
125
 
127
126
  2. Identificar a stack e artefatos de build:
128
127
 
@@ -150,8 +149,8 @@ Objetivo: montar um retrato fiel do que o código revela hoje.
150
149
  >
151
150
  > **1. Buscar contrato no repositório primeiro:**
152
151
  > Procure por specs existentes nos seguintes locais:
153
- > - `docs/engineering/swagger/`
154
- > - `docs/engineering/openapi/`
152
+ > - `$ENG_DOCS/swagger/`
153
+ > - `$ENG_DOCS/openapi/`
155
154
  > - `**/*swagger*.{yaml,yml,json}`
156
155
  > - `**/*openapi*.{yaml,yml,json}`
157
156
  > - `**/*api-spec*.{yaml,yml,json}`
@@ -236,32 +235,7 @@ Entregar:
236
235
 
237
236
  ---
238
237
 
239
- ## Passo 7 – Publicar no Central Docs (condicional)
238
+ ## Central docs
240
239
 
241
- Se `CENTRAL_DOCS_REPO` definido no ENV.md **E** o usuário aprovar o ARD:
240
+ Este documento é um **documento de trabalho**: fica em `$PROD_DOCS`/`$ENG_DOCS` (`docs/jarvis/`) e **não** é publicado no Central docs. O Central docs registra só o que foi implementado, e quem o atualiza é o `/eng.spec-consolidate`, depois do PR da entrega.
242
241
 
243
- 1. Perguntar ao usuário:
244
- ```
245
- Deseja publicar este ARD no repositório central de documentação?
246
- - ( ) Sim, publicar agora
247
- - ( ) Não, vou publicar depois manualmente
248
- ```
249
-
250
- 2. Se **Sim**:
251
- - Extrair o slug do nome do arquivo (ex: `ARD-001-api-wallet-auth.md` → `api-wallet-auth`)
252
- - Executar:
253
- ```bash
254
- jarvis docs publish \
255
- --file {caminho_do_ard} \
256
- --tipo ard \
257
- --feature {slug}
258
- ```
259
-
260
- 3. Informar resultado:
261
- - ✅ Sucesso: "ARD publicado no central-docs. MR criado: [URL]"
262
- - ❌ Erro: Exibir mensagem de erro e orientar troubleshooting
263
-
264
- 4. Se **Não**:
265
- - Informar: "Para publicar depois, execute: `jarvis docs publish --file {caminho} --tipo ard --feature {slug}`"
266
-
267
- > **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.
@@ -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,7 @@ 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 – Consultar funcionalidades no Central Docs | `/jarvis-docs-central` (via `jarvis docs sync --silent`) | Se `CENTRAL_DOCS_STORAGE` estiver definido no ENV.md |
30
33
 
31
34
  ---
32
35
 
@@ -46,7 +49,7 @@ usando o template `$IDE/templates/engineering/ARD-template.md`, sempre alinhado
46
49
 
47
50
  - Se o usuário tiver passado `edit <nome-ou-caminho>`, use isso como entrada inicial.
48
51
  - Peça o **caminho do arquivo** do ARD existente (preferencial) ou o **nome** do ARD, se ainda não tiver.
49
- - Se o usuário passar só o nome, confirme onde ele está (ex.: `$DOCS_FOLDER/engineering/ARD/...`).
52
+ - Se o usuário passar só o nome, confirme onde ele está (ex.: `$ENG_DOCS/ARD/...`).
50
53
  - Leia o ARD atual e pergunte quais seções mudam (ou qual é o objetivo da iteração).
51
54
 
52
55
  3. Se for **novo ARD**:
@@ -61,11 +64,11 @@ usando o template `$IDE/templates/engineering/ARD-template.md`, sempre alinhado
61
64
  - `Título`
62
65
  - `Slug` para o nome do arquivo (kebab-case)
63
66
  - Defina o `ARD-ID` automaticamente assim:
64
- - Se a pasta `$DOCS_FOLDER/engineering/ARD/` existir e houver arquivos no padrão `ARD-###-*.md`, use o maior `###` + 1.
67
+ - Se a pasta `$ENG_DOCS/ARD/` existir e houver arquivos no padrão `ARD-###-*.md`, use o maior `###` + 1.
65
68
  - Defina o `ARD-ID` automaticamente assim:
66
- - Se a pasta `$DOCS_FOLDER/engineering/ARD/` existir e houver arquivos no padrão `ARD-###-*.md`, use o maior `###` + 1.
67
- - `Status`
68
- - `Caminho do arquivo` (`$DOCS_FOLDER/engineering/ARD/{ARD-ID}-{slug}.md` ou caminho fornecido para iteração)
69
+ - Se a pasta `$ENG_DOCS/ARD/` existir e houver arquivos no padrão `ARD-###-*.md`, use o maior `###` + 1.
70
+ - `Status` (campo `status` no frontmatter: `proposed | in_progress | in_review | approved`)
71
+ - `Caminho do arquivo` (`$ENG_DOCS/ARD/{ARD-ID}-{slug}.md` ou caminho fornecido para iteração)
69
72
 
70
73
  ---
71
74
 
@@ -109,8 +112,8 @@ Regras:
109
112
  3. Confirme os metadados definidos no Passo 0:
110
113
  - `ARD-ID`
111
114
  - `Título`
112
- - `Status`
113
- - `Caminho do arquivo` (`$DOCS_FOLDER/engineering/ARD/{ARD-ID}-{slug}.md` ou caminho fornecido para iteração)
115
+ - `Status` (campo `status` no frontmatter)
116
+ - `Caminho do arquivo` (`$ENG_DOCS/ARD/{ARD-ID}-{slug}.md` ou caminho fornecido para iteração)
114
117
 
115
118
  ---
116
119
 
@@ -118,22 +121,22 @@ Regras:
118
121
 
119
122
  ### 1.1.1 – Buscar PRD no Central Docs (condicional)
120
123
 
121
- Se `CENTRAL_DOCS_REPO` definido no ENV.md:
124
+ Se `CENTRAL_DOCS_STORAGE` definido no ENV.md:
122
125
 
123
- 1. Executar busca automática no central-docs:
126
+ 1. Consultar no Central docs as funcionalidades já implementadas relacionadas (o que existe hoje):
124
127
  ```bash
125
128
  jarvis docs sync --silent
126
129
  ```
127
130
 
128
- 2. Buscar PRD relacionado usando:
131
+ 2. Buscar o PRD relacionado em `$PROD_DOCS` (documento de trabalho; o Central docs não guarda PRD) usando:
129
132
  - Título/objetivo do ARD
130
133
  - Jira ID (se disponível)
131
134
  - Tags semânticas
132
135
 
133
- 3. Se PRD encontrado no central-docs:
136
+ 3. Se o PRD for encontrado em `$PROD_DOCS`:
134
137
  - Carregar automaticamente como contexto
135
138
  - Pular para item 2 (extração de requisitos)
136
- - Informar ao usuário: "✅ PRD encontrado no central-docs: [nome]"
139
+ - Informar ao usuário: "✅ PRD encontrado: [caminho]"
137
140
 
138
141
  4. Se PRD não encontrado:
139
142
  - Continuar com pergunta manual (item 1.1.2)
@@ -260,8 +263,8 @@ Sempre que possível, destaque:
260
263
  >
261
264
  > **1. Buscar contrato no repositório primeiro:**
262
265
  > Procure por specs existentes nos seguintes locais:
263
- > - `docs/engineering/swagger/`
264
- > - `docs/engineering/openapi/`
266
+ > - `$ENG_DOCS/swagger/`
267
+ > - `$ENG_DOCS/openapi/`
265
268
  > - `**/*swagger*.{yaml,yml,json}`
266
269
  > - `**/*openapi*.{yaml,yml,json}`
267
270
  > - `**/*api-spec*.{yaml,yml,json}`
@@ -359,32 +362,7 @@ Peça explicitamente para o usuário:
359
362
 
360
363
  ---
361
364
 
362
- ## Passo 8 – Publicar no Central Docs (condicional)
363
-
364
- Se `CENTRAL_DOCS_REPO` definido no ENV.md **E** o usuário aprovar o ARD:
365
+ ## Central docs
365
366
 
366
- 1. Perguntar ao usuário:
367
- ```
368
- Deseja publicar este ARD no repositório central de documentação?
369
- - ( ) Sim, publicar agora
370
- - ( ) Não, vou publicar depois manualmente
371
- ```
367
+ Este documento é um **documento de trabalho**: fica em `$PROD_DOCS`/`$ENG_DOCS` (`docs/jarvis/`) e **não** é publicado no Central docs. O Central docs registra só o que foi implementado, e quem o atualiza é o `/eng.spec-consolidate`, depois do PR da entrega.
372
368
 
373
- 2. Se **Sim**:
374
- - Extrair o slug do nome do arquivo (ex: `ARD-001-api-wallet-auth.md` → `api-wallet-auth`)
375
- - Executar:
376
- ```bash
377
- jarvis docs publish \
378
- --file {caminho_do_ard} \
379
- --tipo ard \
380
- --feature {slug}
381
- ```
382
-
383
- 3. Informar resultado:
384
- - ✅ Sucesso: "ARD publicado no central-docs. MR criado: [URL]"
385
- - ❌ Erro: Exibir mensagem de erro e orientar troubleshooting
386
-
387
- 4. Se **Não**:
388
- - Informar: "Para publicar depois, execute: `jarvis docs publish --file {caminho} --tipo ard --feature {slug}`"
389
-
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.
@@ -27,8 +27,7 @@ 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 |
32
31
 
33
32
  ---
34
33
 
@@ -59,11 +58,11 @@ Além disso, quando houver campo `Versão` no RFC, aplicar obrigatoriamente:
59
58
  - `Owner`
60
59
  - `Reviewers`
61
60
  - Defina o `RFC-ID` automaticamente assim:
62
- - Se a pasta `$DOCS_FOLDER/engineering/RFC/` existir e houver arquivos no padrão `RFC-###-*.md`, use o maior `###` + 1.
61
+ - Se a pasta `$ENG_DOCS/RFC/` existir e houver arquivos no padrão `RFC-###-*.md`, use o maior `###` + 1.
63
62
  - Caso não exista ou não haja arquivos, iniciar em `RFC-001`.
64
63
  - Defina:
65
64
  - `Status` inicial = `Draft`
66
- - `Caminho do arquivo` = `$DOCS_FOLDER/engineering/RFC/{RFC-ID}-{slug}.md`
65
+ - `Caminho do arquivo` = `$ENG_DOCS/RFC/{RFC-ID}-{slug}.md`
67
66
 
68
67
  ---
69
68
 
@@ -92,9 +91,9 @@ Regras:
92
91
 
93
92
  ## Passo 0.6 – Buscar Documentação Relacionada no Central Docs (condicional)
94
93
 
95
- Se `CENTRAL_DOCS_REPO` definido no ENV.md:
94
+ Se `CENTRAL_DOCS_STORAGE` definido no ENV.md:
96
95
 
97
- 1. Executar busca automática no central-docs:
96
+ 1. Consultar no Central docs as funcionalidades já implementadas relacionadas (o que existe hoje):
98
97
  ```bash
99
98
  jarvis docs sync --silent
100
99
  ```
@@ -105,9 +104,9 @@ Se `CENTRAL_DOCS_REPO` definido no ENV.md:
105
104
  - Tags semânticas
106
105
 
107
106
  3. Documentos a buscar:
108
- - **PRD relacionado** (para rastreabilidade e contexto de negócio)
109
- - **ARD existente** (para consistência arquitetural)
110
- - **RFCs anteriores** relacionados ao tema
107
+ - **Funcionalidades já implementadas** relacionadas (Central docs: `feature-*`)
108
+ - **PRD relacionado** (em `$PROD_DOCS`, para rastreabilidade e contexto de negócio)
109
+ - **ARD existente** e **RFCs anteriores** relacionados ao tema (em `$ENG_DOCS/ARD` e `$ENG_DOCS/RFC`)
111
110
 
112
111
  4. Se documentos encontrados:
113
112
  - Carregar automaticamente como contexto
@@ -221,32 +220,7 @@ Entregar:
221
220
 
222
221
  ---
223
222
 
224
- ## Passo 7 – Publicar no Central Docs (condicional)
223
+ ## Central docs
225
224
 
226
- Se `CENTRAL_DOCS_REPO` definido no ENV.md **E** o usuário aprovar o RFC:
225
+ Este documento é um **documento de trabalho**: fica em `$PROD_DOCS`/`$ENG_DOCS` (`docs/jarvis/`) e **não** é publicado no Central docs. O Central docs registra só o que foi implementado, e quem o atualiza é o `/eng.spec-consolidate`, depois do PR da entrega.
227
226
 
228
- 1. Perguntar ao usuário:
229
- ```
230
- Deseja publicar este RFC no repositório central de documentação?
231
- - ( ) Sim, publicar agora
232
- - ( ) Não, vou publicar depois manualmente
233
- ```
234
-
235
- 2. Se **Sim**:
236
- - Extrair o slug do nome do arquivo (ex: `RFC-001-wallet-idempotencia.md` → `wallet-idempotencia`)
237
- - Executar:
238
- ```bash
239
- jarvis docs publish \
240
- --file {caminho_do_rfc} \
241
- --tipo rfc \
242
- --feature {slug}
243
- ```
244
-
245
- 3. Informar resultado:
246
- - ✅ Sucesso: "RFC publicado no central-docs. MR criado: [URL]"
247
- - ❌ Erro: Exibir mensagem de erro e orientar troubleshooting
248
-
249
- 4. Se **Não**:
250
- - Informar: "Para publicar depois, execute: `jarvis docs publish --file {caminho} --tipo rfc --feature {slug}`"
251
-
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.
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: Criação de branch, commit e merge request (MR)
2
+ description: Gera o pull-request.md na sessão e, com o Sim do usuário, faz o push e abre o merge request (MR)
3
3
  auto_execution_mode: 3
4
4
  agent: "$IDE/agents/engineering/eng.agent.md"
5
5
  rules_file: "$IDE/rules-on-demand/engineering/eng.pr-rules.md"
@@ -43,8 +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 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` |
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) |
46
+ | Fase 4 › 4.4 Criar MR/PR via adapter | `jarvis vcs create-merge` (CLI do Jarvis) | Só se o usuário responder **Sim** na Fase 4.3: abre o MR/PR conforme `VERSION_CONTROL` ou o host do `origin` |
47
+ | Fase 6 › 6.2 Link do MR | `/eng-global-task-comment` | Depois de o MR ser criado (só com o Sim da 4.3): um único comentário no card com o link do MR, seguindo o Passo 6 do skill `eng-global-pr` (freelance pula) |
48
48
 
49
49
  ---
50
50
 
@@ -61,7 +61,7 @@ Ler `TASK_MANAGER` do `$IDE/ENV.md`. Seguir `$IDE/rules/engineering/eng.integrat
61
61
  - `TASK_MANAGER` vazio → *Qual o seu número de controle para esta tarefa? (ex: F-042)*
62
62
  - `TASK_MANAGER` preenchido → *Qual o id do card no {TASK_MANAGER}?*
63
63
 
64
- > 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.
65
65
  > 💡 A branch de feature já foi criada no `eng.start`. Este workflow apenas faz push e abre o MR.
66
66
 
67
67
  ---
@@ -122,7 +122,7 @@ A branch deve seguir o padrão `{TASK_MANAGER_KEY}-{titulo-em-kebab-case}`.
122
122
 
123
123
  ### 2.2 Confirmar Branch de Destino
124
124
 
125
- 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.
126
126
 
127
127
  > ⚠️ **Nunca fazer push direto para `main` ou `master`** sem confirmação explícita do usuário.
128
128
 
@@ -137,7 +137,7 @@ git checkout {TASK_MANAGER_KEY}-{titulo-em-kebab-case}
137
137
  ### 2.2 Verificar Commits da Branch
138
138
 
139
139
  ```bash
140
- git log dev..HEAD --oneline
140
+ git log {BRANCH_BASE}..HEAD --oneline
141
141
  ```
142
142
 
143
143
  Deve listar os commits das fases implementadas no `eng.work`.
@@ -156,6 +156,8 @@ Refs: {TASK_MANAGER_KEY}"
156
156
 
157
157
  ## Fase 3: Push
158
158
 
159
+ > ⚠️ O push só acontece **depois do Sim** da Fase 4.3. Esta fase descreve o comando; ele roda dentro da publicação.
160
+
159
161
  ### 3.1 Enviar para Remote
160
162
 
161
163
  ```bash
@@ -175,7 +177,9 @@ git log --oneline -3
175
177
  Ler `VERSION_CONTROL` do `$IDE/ENV.md` (`gitlab` | `github` | `bitbucket`).
176
178
  Use **MR** se GitLab, **PR** se GitHub/Bitbucket.
177
179
 
178
- ### 4.1 Preparar descrição
180
+ ### 4.1 Gerar `pull-request.md` na sessão
181
+
182
+ Escreva o título e a descrição do PR em **`$SESSIONS_DIR/eng/{TASK_MANAGER_KEY}/pull-request.md`** (primeira linha `# {título}`, depois o corpo). Se a sessão tiver o `gate-checklist.md` do `eng.pre-pr`, use o PR Brief e as decisões dele.
179
183
 
180
184
  Template, nesta ordem (o primeiro que existir):
181
185
 
@@ -199,21 +203,32 @@ Preencher com a tarefa. Link do card:
199
203
 
200
204
  > ⚠️ Não mencione AI, Claude ou assistentes no MR/PR.
201
205
 
202
- ### 4.2 Criar MR/PR via adapter
206
+ ### 4.2 Revisão do texto
207
+
208
+ Mostre o `pull-request.md` (título e resumo das seções) e pergunte com `AskUserQuestion`: `[Aprovar]` / `[Ajustar]`. Ajuste até a aprovação.
209
+
210
+ ### 4.3 Publicar? (Sim / Não)
211
+
212
+ Pergunte com `AskUserQuestion` (**Sim / Não**): **"Publicar o PR agora?"**
213
+
214
+ - **Não:** nada é enviado. O `pull-request.md` fica na sessão para você publicar quando quiser (à mão ou rodando o `/eng.pr` de novo). Pule para a Fase 7, com a mensagem "PR não publicado".
215
+ - **Sim:** faça o push (Fase 3) e crie o MR/PR (4.4).
216
+
217
+ ### 4.4 Criar MR/PR via adapter
203
218
 
204
219
  - **Título**: `{TASK_MANAGER_KEY}: {Título da tarefa}`
205
220
  - **Branch origem**: `{NOME_DA_BRANCH}`
206
- - **Branch destino**: a informada pelo usuário (`dev` / `main` / hotfix)
207
- - **Descrição**: template preenchido, gravado em arquivo temporário
221
+ - **Branch destino**: `{BRANCH_BASE}` (a `Branch base:` do `architecture.md`)
222
+ - **Descrição**: o corpo do `pull-request.md` aprovado (sem a linha do título)
208
223
 
209
224
  ```bash
210
225
  BODY_FILE=$(mktemp)
211
- # gravar a descrição preenchida em $BODY_FILE
226
+ tail -n +2 $SESSIONS_DIR/eng/{TASK_MANAGER_KEY}/pull-request.md > "$BODY_FILE"
212
227
 
213
228
  jarvis vcs create-merge \
214
229
  --source "${NOME_DA_BRANCH}" \
215
- --target "${TARGET_BRANCH}" \
216
- --title "${TASK_MANAGER_KEY}: ${TITULO_DA_TAREFA}" \
230
+ --target "${BRANCH_BASE}" \
231
+ --title "${TITULO_DO_PULL_REQUEST_MD}" \
217
232
  --body-file "$BODY_FILE"
218
233
 
219
234
  rm -f "$BODY_FILE"
@@ -326,65 +341,18 @@ fi
326
341
  {LEAD_TIME_MSG}
327
342
 
328
343
  📌 Próximos passos:
329
- 1. Aguardar revisão do time
330
- 2. Processar comentários do code review
344
+ 1. /eng.spec-consolidate {TASK_MANAGER_KEY} → registrar no Central docs o que esta entrega implementou
345
+ 2. Aguardar revisão do time e processar os comentários do code review
331
346
  3. Merge após aprovação
332
347
 
348
+ 🗂️ A sessão $SESSIONS_DIR/eng/{TASK_MANAGER_KEY}/ não é apagada (o /eng.spec-consolidate precisa dela).
349
+ Remova à mão quando quiser.
350
+
333
351
  🔗 Links:
334
352
  - MR: {LINK_DO_MR}
335
353
  - Jira: {TASK_MANAGER_URL_BASE}/browse/{TASK_MANAGER_KEY}
336
354
  ```
337
355
 
338
- ## Fase 8: Limpeza da Sessão
339
-
340
- ### 9.1 Solicitar Confirmação
341
-
342
- Após o MR ser criado com sucesso, **solicitar confirmação do usuário**:
343
-
344
- ```
345
- 🧹 Deseja limpar a sessão?
346
-
347
- A pasta $SESSIONS_DIR/eng/{TASK_MANAGER_KEY}/ será removida.
348
- A documentação permanece no Jira e no MR.
349
-
350
- Confirmar? (s/n)
351
- ```
352
-
353
- > ⚠️ **IMPORTANTE**: Sempre pedir confirmação antes de executar comandos destrutivos.
354
-
355
- ### 9.2 Remover Pasta da Sessão
356
-
357
- Se confirmado:
358
-
359
- ```bash
360
- rm -rf $SESSIONS_DIR/eng/{TASK_MANAGER_KEY}/
361
- ```
362
-
363
- **Exemplo:**
364
-
365
- ```bash
366
- rm -rf $SESSIONS_DIR/eng/task-123/
367
- ```
368
-
369
- ### 9.3 Confirmar Limpeza
370
-
371
- ```
372
- 🧹 SESSÃO LIMPA!
373
-
374
- 📁 Removido: $SESSIONS_DIR/eng/{TASK_MANAGER_KEY}/
375
- - architecture.md ✅
376
- - plan.md ✅
377
- - context.md ✅ (se existia)
378
-
379
- ℹ️ A documentação permanece no:
380
- - Card do Jira: {TASK_MANAGER_KEY}
381
- - Merge Request: {LINK_DO_MR}
382
- ```
383
-
384
- > ⚠️ **NOTA**: A documentação não é perdida! Ela está anexada no Jira e registrada no MR.
385
-
386
- ---
387
-
388
356
  ## Regras Importantes
389
357
 
390
358
  ### ⛔ NÃO FAÇA
@@ -403,7 +371,8 @@ rm -rf $SESSIONS_DIR/eng/task-123/
403
371
  - ✅ Criar branch no padrão `{TASK_MANAGER_KEY}-{titulo}`
404
372
  - ✅ Preencher template do MR completamente
405
373
  - ✅ Mover card para "In Review"
406
- - ✅ **Limpar sessão após criar MR** (`rm -rf $SESSIONS_DIR/eng/{TASK_MANAGER_KEY}/`)
374
+ - ✅ Gerar o `pull-request.md` na sessão e só publicar com o **Sim** (Fase 4.3)
375
+ - ✅ **Nunca apagar a sessão:** o `/eng.spec-consolidate` precisa dela
407
376
 
408
377
  ---
409
378