jarvis-ai-framework 3.2.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 (50) hide show
  1. package/agents/product/prod.discovery-interviewer.md +1 -1
  2. package/bin/README.md +14 -14
  3. package/bin/commands/docs-publish.js +50 -92
  4. package/bin/commands/docs-sync.js +30 -63
  5. package/bin/lib/cli/program.js +23 -25
  6. package/bin/lib/docs/fetch-file.js +29 -26
  7. package/bin/lib/docs/publish-file.js +89 -161
  8. package/bin/lib/docs/storage/build-index.js +87 -0
  9. package/bin/lib/docs/storage/filesystem.js +203 -0
  10. package/bin/lib/docs/storage/index.js +75 -0
  11. package/bin/lib/docs/validate-frontmatter.js +14 -4
  12. package/bin/lib/vcs/api.js +0 -125
  13. package/package.json +2 -2
  14. package/rules/AGENTS.md +12 -9
  15. package/rules/engineering/eng.integrations-rules.md +2 -1
  16. package/rules/product/prod-rules.md +4 -5
  17. package/rules-on-demand/product/prod.guided-rules.md +104 -0
  18. package/skills/jarvis-docs-central/README.md +57 -269
  19. package/skills/jarvis-docs-central/SKILL.md +126 -296
  20. package/skills/jarvis-init/SKILL.md +46 -7
  21. package/templates/ENV-template.md +20 -5
  22. package/templates/engineering/ARD-template.md +39 -6
  23. package/templates/engineering/architecture-template.md +1 -0
  24. package/templates/product/prod-breakdown-template.md +20 -2
  25. package/templates/product/prod-discovery-template.md +24 -1
  26. package/templates/product/prod-epic-template.md +32 -1
  27. package/templates/product/prod-frd-template.md +29 -2
  28. package/templates/product/prod-issue-template.md +36 -1
  29. package/templates/product/prod-prd-template.md +33 -2
  30. package/workflows/engineering/eng.build-tech-spec.md +2 -2
  31. package/workflows/engineering/eng.create-ard-from-code.md +9 -11
  32. package/workflows/engineering/eng.create-ard.md +15 -13
  33. package/workflows/engineering/eng.create-rfc.md +8 -10
  34. package/workflows/engineering/eng.pr.md +4 -4
  35. package/workflows/engineering/eng.pre-pr.md +4 -4
  36. package/workflows/engineering/eng.rpa.robot.md +4 -2
  37. package/workflows/engineering/eng.start.md +17 -16
  38. package/workflows/product/prod.roadmap.preview.md +4 -1
  39. package/workflows/product/prod.spec.ard.md +7 -3
  40. package/workflows/product/prod.spec.breakdown.md +7 -3
  41. package/workflows/product/prod.spec.clarify.md +5 -1
  42. package/workflows/product/prod.spec.discovery.md +7 -3
  43. package/workflows/product/prod.spec.epic.md +13 -11
  44. package/workflows/product/prod.spec.frd.md +15 -13
  45. package/workflows/product/prod.spec.issue.md +5 -1
  46. package/workflows/product/prod.spec.md +3 -1
  47. package/workflows/product/prod.spec.prd.md +15 -13
  48. package/workflows/warm-up.md +3 -3
  49. package/bin/lib/docs/redis-cache.js +0 -49
  50. package/bin/lib/vcs/fetch-raw.js +0 -42
@@ -58,12 +58,20 @@ RULES_FOLDER=.$IDE/rules
58
58
  SESSIONS_DIR=.jarvis/sessions
59
59
 
60
60
  # Pastas de produto (derivadas das de cima — em geral não precisa mexer)
61
+ # PROD_DOCS: no projeto único (sem workspace), o /jarvis-init grava docs/jarvis/product
62
+ # (com docs/jarvis/* no .gitignore); no modo workspace, $DOCS_FOLDER/$PROD_FOLDER_NAME.
61
63
  PROD_FOLDER_NAME=product
62
64
  PROD_RULES=$RULES_FOLDER/$PROD_FOLDER_NAME
63
65
  PROD_FLOWS=.$IDE/$FLOWS_FOLDER
64
66
  PROD_TEMPLATES=.$IDE/$TEMPLATES_FOLDER/$PROD_FOLDER_NAME
65
67
  PROD_DOCS=$DOCS_FOLDER/$PROD_FOLDER_NAME
66
68
 
69
+ # Modo de condução dos comandos de produto (prod.*) e do eng.create-ard.
70
+ # product-led = para PMs: fluxo direto, sem explicações extras (padrão se vazio)
71
+ # developer-guided = para devs e futuros PMs: uma pergunta por vez, explica cada termo e etapa
72
+ # Perguntado sempre pelo /jarvis-init. Para trocar, rode o /jarvis-init ou edite aqui.
73
+ PROD_MODE=
74
+
67
75
 
68
76
  # --- Especializações por área -------------------------------------------------
69
77
  # Skills especializados que o Jarvis carrega junto com o skill base de cada área.
@@ -198,11 +206,18 @@ JARVIS_PROJECT=https://github.com/phelipperibeiro/jarvis-framework
198
206
 
199
207
 
200
208
  # --- Central docs (opcional) -------------------------------------------------
201
- # Repo de documentação canônica (PRD, FRD, ARD, RFC). Em branco = desligado.
202
- CENTRAL_DOCS_REPO=
209
+ # Onde fica a documentação canônica (PRD, FRD, épicos, ARD, RFC). Em branco = desligado.
210
+ # Nunca dentro do versionamento de um repositório de código.
211
+ # CENTRAL_DOCS_STORAGE: filesystem (s3 e gdrive virão nas issues #144 e #145)
212
+ # CENTRAL_DOCS_LOCATION: pasta do Central docs, relativa à pasta do workspace ou absoluta.
213
+ # Padrão do /jarvis-init: ./central-docs (modo workspace, no .gitignore do workspace)
214
+ # ou docs/jarvis/central-docs (projeto único, com docs/jarvis/* no .gitignore).
215
+ # Se a pasta for um clone de um repositório de documentação (tem .git): git pull antes
216
+ # de ler e branch + commit + push + PR ao publicar. Sem .git: grava direto na pasta.
217
+ CENTRAL_DOCS_STORAGE=
218
+ CENTRAL_DOCS_LOCATION=
219
+ # Só quando a pasta tem .git: branch lida no pull e branch base dos PRs.
203
220
  CENTRAL_DOCS_REF=main
204
221
  CENTRAL_DOCS_TARGET_BRANCH=main
205
- # Revisores padrão dos MRs (separados por vírgula).
222
+ # Revisores padrão dos PRs (separados por vírgula; vão na descrição).
206
223
  CENTRAL_DOCS_REVIEWERS=
207
- # TTL do cache opcional (redis-cli, se existir). 3600 = 1 hora.
208
- CENTRAL_DOCS_CACHE_TTL=3600
@@ -1,3 +1,39 @@
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 do ARD, em sequência (ex.: ARD-001). Vai no nome do arquivo.
7
+ id: [ARD-xxx]
8
+
9
+ # Título da arquitetura. Vai no título e, em kebab-case, no nome do arquivo.
10
+ name: [Título da Arquitetura]
11
+
12
+ # Versão do documento (X.Y.Z). Atualize a cada alteração.
13
+ version: [1.0.0]
14
+
15
+ # Em que ponto este ARD está no ciclo de vida.
16
+ # Opções: proposed | in_progress | in_review | approved
17
+ # proposed = proposta, ainda em discussão | in_progress = arquitetura em desenvolvimento
18
+ # in_review = em validação com os revisores | approved = finalizada e aprovada
19
+ status: [um dos valores acima]
20
+
21
+ # Documentos relacionados: RFC (proposta técnica), FRD (requisitos funcionais), PRD (requisitos de produto).
22
+ related: [RFC-xxx, FRD-xxx, PRD-xxx]
23
+
24
+ # Data de criação (YYYY-MM-DD).
25
+ created_at: [YYYY-MM-DD]
26
+
27
+ # Data da última alteração (YYYY-MM-DD).
28
+ updated_at: [YYYY-MM-DD]
29
+
30
+ # Quem criou o documento (Tech Lead ou arquiteto responsável).
31
+ created_by: [nome]
32
+
33
+ # Quem editou o documento por último.
34
+ last_editor: [nome]
35
+ ---
36
+
1
37
  # 🧱 ARD Template — Architecture Requirement Document
2
38
 
3
39
  **Arquivo:** /docs/engineering/ARD/ARD-xxx-nome-da-arquitetura.md
@@ -6,12 +42,9 @@
6
42
 
7
43
  ## 🏗️ ARD-[número] — [Título da Arquitetura]
8
44
 
9
- **Status:** Proposta / Em desenvolvimento / Em validação / Finalizada
10
- **Data:** [dd/mm/yyyy]
11
- **Autor:** [Tech Lead / Arquiteto responsável]
12
- **Revisores:** [Chapter Leads, Eng. de Plataforma, etc.]
13
- **Relacionado a:** [RFC-xxx], [FRD-xxx], [PRD-xxx]
14
- **Versão:** [1.0]
45
+ **Revisores:** [Chapter Leads, Eng. de Plataforma, etc.]
46
+
47
+ > Status, versão, datas, autor e documentos relacionados ficam no frontmatter (topo do arquivo).
15
48
 
16
49
  ---
17
50
 
@@ -5,6 +5,7 @@
5
5
 
6
6
  > **Criado em:** {DATA}
7
7
  > **Issue:** {JIRA_ISSUE_KEY}
8
+ > **Branch base:** {main | dev | outra — perguntada no eng.start; destino do PR no eng.pr}
8
9
  > **Status:** 🔄 Em Revisão | ✅ Aprovado | ❌ Rejeitado
9
10
  > **Advisor:** {modelo escolhido no início do eng.start} | não utilizado
10
11
 
@@ -1,8 +1,26 @@
1
1
  ---
2
- name: [Name from PRD]
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
+ # Nome do breakdown (o mesmo do PRD ou FRD que está sendo fatiado).
7
+ name: [Name from PRD]
8
+
9
+ # Time (squad) responsável pela entrega.
3
10
  team: [Team Name]
11
+
12
+ # Em que ponto este documento está no ciclo de vida (lista em rules/product/prod-rules.md).
13
+ # Opções: icebox | in_review | backlog | in_progress | in_production | cancelled | deprecated
14
+ # icebox = ideia aguardando priorização | in_review = sendo estudado ou revisado | backlog = definido, aguardando implementação
15
+ # in_progress = em desenvolvimento | in_production = em produção
16
+ # cancelled = cancelado antes de ser entregue | deprecated = esteve em produção e foi descontinuado
17
+ status: [um dos valores acima]
18
+
19
+ # Data de criação (YYYY-MM-DD).
4
20
  created_at: [YYYY-MM-DD]
5
- last_updated: [YYYY-MM-DD]
21
+
22
+ # Data da última alteração (YYYY-MM-DD).
23
+ updated_at: [YYYY-MM-DD]
6
24
  ---
7
25
 
8
26
  ## Resumo do plano detalhado (breakdown)
@@ -1,11 +1,34 @@
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.: discovery-001). Vai no nome do arquivo e nos campos related_* de outros documentos.
2
7
  id: {discovery-001}
8
+
9
+ # Nome curto do documento. Vai no título e, em kebab-case, no nome do arquivo.
3
10
  name: {nome dessa ideia}
4
- status: {in_review enquanto o rascunho existe | cancelled se o veredito for do_not_proceed}
11
+
12
+ # Situação do rascunho. O discovery tem ciclo próprio (rules/product/prod-rules.md).
13
+ # Opções: in_review | cancelled
14
+ # in_review = rascunho em andamento ou concluído | cancelled = o veredito foi do_not_proceed
15
+ status: {in_review | cancelled}
16
+
17
+ # Recomendação do discovery: vale seguir com essa ideia? Fica vazio durante a entrevista.
18
+ # Opções: proceed | investigate_more | do_not_proceed
19
+ # proceed = vale especificar | investigate_more = há lacuna crítica | do_not_proceed = não seguir (status passa a cancelled)
5
20
  verdict: {vazio durante a entrevista | proceed | investigate_more | do_not_proceed}
21
+
22
+ # Data de criação (YYYY-MM-DD).
6
23
  created_at: {YYYY-MM-DD}
24
+
25
+ # Data da última alteração (YYYY-MM-DD).
7
26
  updated_at: {YYYY-MM-DD}
27
+
28
+ # Quem criou o documento.
8
29
  created_by: {nome de quem criou esse doc}
30
+
31
+ # Quem editou o documento por último.
9
32
  last_editor: {nome de quem editou por último}
10
33
  ---
11
34
 
@@ -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.: EPIC-001). Vai no nome do arquivo e nos campos related_* de outros documentos.
2
7
  id: {EPIC-001}
8
+
9
+ # Nome curto do documento. Vai no título e, em kebab-case, no nome do arquivo.
3
10
  name: {nome desse épico}
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: {icebox|in_review|in_progress|in_production|deprecated}
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
+ # Link do card no task manager do projeto (TASK_MANAGER no ENV.md). Remova a linha se não houver.
6
23
  task_link: {URL referêncial no $TASK_MANAGER - se existir. Se não, ignore essa linha}
24
+
25
+ # PRD relacionado (Product Requirements Document: o problema e o que vamos construir).
7
26
  related_prd: {path PRD relacionado, exemplo /master-docs/product/prd-001.md}
27
+
28
+ # FRD relacionado (Functional Requirements Document: o comportamento detalhado de uma funcionalidade).
8
29
  related_frd: {path FRD relacionado, exemplo /master-docs/product/frds/frd-001.md}
30
+
31
+ # Discovery de origem (o rascunho da ideia, anterior ao PRD). Remova a linha se não houver.
9
32
  related_discovery: {path do discovery de origem, exemplo $PROD_DOCS/discoveries/discovery-001-nome.md. Se não existir, ignore essa linha}
33
+
34
+ # Data de criação (YYYY-MM-DD).
10
35
  created_at: {YYYY-MM-DD}
36
+
37
+ # Data da última alteração (YYYY-MM-DD).
11
38
  updated_at: {YYYY-MM-DD}
39
+
40
+ # Quem criou o documento.
12
41
  created_by: {nome de quem criou esse doc}
42
+
43
+ # Quem editou o documento por último.
13
44
  last_editor: {nome de quem editou por último}
14
45
  ---
15
46
 
@@ -1,13 +1,40 @@
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.: FRD-001). Vai no nome do arquivo e nos campos related_* de outros documentos.
2
7
  id: {FRD-001}
8
+
9
+ # Nome curto do documento. Vai no título e, em kebab-case, no nome do arquivo.
3
10
  name: {nome desse frd}
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
+ # PRD relacionado (Product Requirements Document: o problema e o que vamos construir).
8
29
  related_prd: {Lista de PRDs que são relacionadas a esse PRD, se forem vários, utilize sintaxe compatível com YAML}
30
+
31
+ # Discovery de origem (o rascunho da ideia, anterior ao PRD). Remova a linha se não houver.
9
32
  related_discovery: {path do discovery de origem, exemplo $PROD_DOCS/discoveries/discovery-001-nome.md. Se não existir, ignore essa linha}
33
+
34
+ # Data de criação (YYYY-MM-DD).
10
35
  created_at: {YYYY-MM-DD}
36
+
37
+ # Quem criou o documento.
11
38
  created_by: {nome de quem criou esse doc}
12
39
  ---
13
40
 
@@ -138,7 +165,7 @@ Ele é um sistema de gestão de dados pessoais de saúde, que agrega informaçõ
138
165
  - {Exclusão adicional}
139
166
 
140
167
  ## Especificações relacionadas
141
- {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.}
168
+ {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.}
142
169
 
143
170
  **PRDs relacionadas**:
144
171
  | ID | Título | Descrição |
@@ -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 (buscar PRD/FRD relacionados do épico) |
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
 
@@ -22,8 +22,8 @@ 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 |
26
+ | Passo 7 – 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 |
27
27
 
28
28
  ---
29
29
 
@@ -60,7 +60,7 @@ priorizando a **arquitetura observada no código do repositório**, usando o tem
60
60
  - Defina o `ARD-ID` automaticamente assim:
61
61
  - Se a pasta `$DOCS_FOLDER/engineering/ARD/` existir e houver arquivos no padrão `ARD-###-*.md`, use o maior `###` + 1.
62
62
  - Defina:
63
- - `Status`
63
+ - `Status` (campo `status` no frontmatter: `proposed | in_progress | in_review | approved`)
64
64
  - `Caminho do arquivo` (`$DOCS_FOLDER/engineering/ARD/{ARD-ID}-{slug}.md` ou caminho fornecido para iteração)
65
65
 
66
66
  ---
@@ -69,7 +69,7 @@ priorizando a **arquitetura observada no código do repositório**, usando o tem
69
69
 
70
70
  ### 1.1 – Buscar PRD no Central Docs (condicional)
71
71
 
72
- Se `CENTRAL_DOCS_REPO` definido no ENV.md:
72
+ Se `CENTRAL_DOCS_STORAGE` definido no ENV.md:
73
73
 
74
74
  1. Executar busca automática no central-docs:
75
75
  ```bash
@@ -238,7 +238,7 @@ Entregar:
238
238
 
239
239
  ## Passo 7 – Publicar no Central Docs (condicional)
240
240
 
241
- Se `CENTRAL_DOCS_REPO` definido no ENV.md **E** o usuário aprovar o ARD:
241
+ Se `CENTRAL_DOCS_STORAGE` definido no ENV.md **E** o usuário aprovar o ARD:
242
242
 
243
243
  1. Perguntar ao usuário:
244
244
  ```
@@ -248,20 +248,18 @@ Se `CENTRAL_DOCS_REPO` definido no ENV.md **E** o usuário aprovar o ARD:
248
248
  ```
249
249
 
250
250
  2. Se **Sim**:
251
- - Extrair o slug do nome do arquivo (ex: `ARD-001-api-wallet-auth.md` → `api-wallet-auth`)
252
251
  - Executar:
253
252
  ```bash
254
253
  jarvis docs publish \
255
254
  --file {caminho_do_ard} \
256
- --tipo ard \
257
- --feature {slug}
255
+ --tipo ard
258
256
  ```
259
257
 
260
258
  3. Informar resultado:
261
- - ✅ Sucesso: "ARD publicado no central-docs. MR criado: [URL]"
259
+ - ✅ Sucesso: "ARD publicado no Central docs." (com git: "PR aberto: [URL]")
262
260
  - ❌ Erro: Exibir mensagem de erro e orientar troubleshooting
263
261
 
264
262
  4. Se **Não**:
265
- - Informar: "Para publicar depois, execute: `jarvis docs publish --file {caminho} --tipo ard --feature {slug}`"
263
+ - Informar: "Para publicar depois, execute: `jarvis docs publish --file {caminho} --tipo ard`"
266
264
 
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.
265
+ > **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.
@@ -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.
@@ -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`.
@@ -203,7 +203,7 @@ Preencher com a tarefa. Link do card:
203
203
 
204
204
  - **Título**: `{TASK_MANAGER_KEY}: {Título da tarefa}`
205
205
  - **Branch origem**: `{NOME_DA_BRANCH}`
206
- - **Branch destino**: a informada pelo usuário (`dev` / `main` / hotfix)
206
+ - **Branch destino**: `{BRANCH_BASE}` (a `Branch base:` do `architecture.md`)
207
207
  - **Descrição**: template preenchido, gravado em arquivo temporário
208
208
 
209
209
  ```bash