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
@@ -195,12 +195,12 @@ Identificar qual IDE o usuário está utilizando:
195
195
  3. Ler `HUB` do ENV.md existente
196
196
  4. Se `HUB≠DATA`: excluir do diff todas as chaves `DATA_*` — não propor adicioná-las
197
197
  5. Calcular diff: chaves no template que **não existem** no ENV.md atual (respeitando exclusão de DATA_* para não-DATA)
198
- 4. Se não houver diff:
198
+ 6. Se não houver diff:
199
199
  ```
200
200
  ✅ ENV.md já está atualizado. Nenhuma variável nova encontrada.
201
201
  ```
202
202
  Oferecer o **passo 9 (adicionar as stacks)**, que a pessoa pode pular, e então encerrar.
203
- 5. Se houver diff, exibir prévia:
203
+ 7. Se houver diff, exibir prévia:
204
204
  ```
205
205
  🔍 Variáveis novas encontradas no template:
206
206
  + NOVA_VAR_1=
@@ -208,18 +208,24 @@ Identificar qual IDE o usuário está utilizando:
208
208
 
209
209
  Serão adicionadas ao final do ENV.md sem alterar os valores existentes.
210
210
  ```
211
- 6. Appender as novas variáveis ao final do `ENV.md` com comentário de data:
211
+ 8. **Exceção — documentos nos caminhos antigos:** procure documentos de trabalho em `$DOCS_FOLDER/product`, `$DOCS_FOLDER/engineering/{ARD,RFC,qa,swagger,openapi,robots,c4}` e `docs/engineering/{robots,swagger,openapi,c4}`.
212
+ - Se houver, liste o que encontrou e pergunte com `AskUserQuestion` se move para `docs/jarvis/…` (`$PROD_DOCS` e `$ENG_DOCS/…`). Use `git mv` quando o arquivo for versionado e `mv` quando não for, e garanta `docs/jarvis/` no `.gitignore`.
213
+ - **Sem confirmação, não mova nada:** grave `PROD_DOCS`/`ENG_DOCS` apontando para os caminhos antigos.
214
+ - Depois, ofereça a carga inicial do Central docs (Passo 5.3).
215
+ 9. **Exceção — Central docs antigo:** se o `ENV.md` tiver `CENTRAL_DOCS_REPO` preenchido e não tiver `CENTRAL_DOCS_STORAGE`, propor a migração (só com confirmação): `CENTRAL_DOCS_STORAGE=filesystem`, `CENTRAL_DOCS_LOCATION` com o padrão do modo de trabalho (Passo 4, "Central docs") e `git clone {CENTRAL_DOCS_REPO} {LOCATION}`. Depois, comentar a linha antiga (`# CENTRAL_DOCS_REPO=… (migrado em YYYY-MM-DD)`) e `CENTRAL_DOCS_CACHE_TTL`. Sem confirmação, não mexe e avisa que os comandos de docs vão pedir o Upgrade.
216
+ 10. **Exceção — `PROD_MODE`:** se `PROD_MODE` estiver entre as chaves novas, faça a mesma pergunta do Passo 3 (Pergunta 8 — modo de condução) e grave a resposta no lugar do valor vazio. As demais chaves continuam sem pergunta.
217
+ 11. Appender as novas variáveis ao final do `ENV.md` com comentário de data:
212
218
  ```
213
219
  # --- Upgrade YYYY-MM-DD ---
214
220
  NOVA_VAR_1=
215
221
  NOVA_VAR_2=valor-padrão
216
222
  ```
217
- 7. Confirmar:
223
+ 12. Confirmar:
218
224
  ```
219
225
  ✅ ENV.md atualizado! N variável(is) nova(s) adicionada(s).
220
226
  ⚠️ Preencha os valores em branco antes de usar os novos recursos.
221
227
  ```
222
- 8. Oferecer o **passo 9 (adicionar as stacks)**, que a pessoa pode pular, e então encerrar (não continuar para o fluxo de onboarding completo).
228
+ 13. Oferecer o **passo 9 (adicionar as stacks)**, que a pessoa pode pular, e então encerrar (não continuar para o fluxo de onboarding completo).
223
229
 
224
230
  **⚠️ OBRIGATÓRIO - Criação do ENV.md**:
225
231
 
@@ -261,6 +267,7 @@ Fluxo correto:
261
267
  - **IDE** (7 opções) → mostrar em texto numerado
262
268
  - **SQUAD** (do taxonomy) → mostrar em texto numerado
263
269
  - **POSITION** (do taxonomy) → mostrar em texto numerado
270
+ - **PROD_MODE** (2 opções: product-led, developer-guided) → AskUserQuestion, sempre perguntado e sem opção sugerida
264
271
 
265
272
  ```
266
273
  // Exemplo 1: HUB (5 opções) - MOSTRAR EM TEXTO
@@ -401,6 +408,15 @@ Pergunta 7 (opções fixas - POSITION do taxonomy - texto se >4):
401
408
 
402
409
  *[Mostrar TODAS as opções de POSITION do taxonomy.md e aguardar]*
403
410
 
411
+ ```
412
+ Pergunta 8 (opções fixas - 2 opções - usar AskUserQuestion) — PROD_MODE:
413
+ Como você quer que os comandos de produto (prod.*) e o eng.create-ard conduzam a conversa?
414
+ - Product-Led: para PMs. Fluxo direto, com os termos de PM, sem explicações extras.
415
+ - Developer-Guided: para devs e futuros PMs. Uma pergunta por vez, explicando cada termo e etapa enquanto você faz.
416
+ ```
417
+
418
+ *[Perguntar **sempre**, para qualquer `AREA` e qualquer `POSITION` (inclusive `GENERALIST` e PM). **Não** marcar nenhuma opção como recomendada nem sugerir padrão por área ou cargo. Gravar `PROD_MODE=product-led` ou `PROD_MODE=developer-guided`.]*
419
+
404
420
  **Regras de Implementação:**
405
421
  - **Opções fixas com ≤4 opções** → usar AskUserQuestion
406
422
  - **Opções fixas com >4 opções** (HUB com DATA, IDE, SQUAD, POSITION) → mostrar em texto numerado
@@ -424,6 +440,7 @@ Pergunta 7 (opções fixas - POSITION do taxonomy - texto se >4):
424
440
  | `MAX_AI_EXECUTION_PERCENTAGE` | Limite de execução da AI | Número entre 60 e 100 |
425
441
  | `USER` | Identidade do usuário (email ou nome) | ENV.md → git `user.email` → usuário do SO. Sem login |
426
442
  | `POSITION` | Cargo do usuário | Deve estar em `taxonomy.md` → Positions. Autonomia ponta a ponta em qualquer cargo |
443
+ | `PROD_MODE` | Modo de condução dos comandos de produto e do `eng.create-ard` | `product-led` ou `developer-guided`. Sempre perguntado, sem opção sugerida (Pergunta 8) |
427
444
 
428
445
  > **💡 Nota**:
429
446
  > - As opções para SQUAD, HUB, AREA e POSITION são definidas em `taxonomy.md` e podem ser customizadas por organização.
@@ -560,6 +577,8 @@ Token NÃO vai no ENV.md:
560
577
  Nunca grave TOKEN_VERSION_CONTROL (chave removida do template).
561
578
  ```
562
579
 
580
+ **Central docs:** não é perguntado aqui. Ele é ligado por padrão e configurado no **Passo 5.2**, que roda sempre.
581
+
563
582
  #### Variáveis Opcionais (alinhar ao `templates/ENV-template.md`)
564
583
 
565
584
  | Variável | Valor Padrão | Descrição |
@@ -585,7 +604,9 @@ Nunca grave TOKEN_VERSION_CONTROL (chave removida do template).
585
604
  | `TEST_FOLDER` | *(vazio)* | Pasta de testes |
586
605
  | `QA_SIGNOFF_BRANCHES` / `QA_SIGNOFF_MAX_AGE` | `main,release/*` / `24` | Sign-off QA |
587
606
  | `JARVIS_PROJECT` | `https://github.com/phelipperibeiro/jarvis-framework` | Repo do framework (`/jarvis-report-issue`) |
588
- | `CENTRAL_DOCS_REPO` / `_REF` / `_TARGET_BRANCH` / `_REVIEWERS` / `_CACHE_TTL` | *(opcional)* | Docs centrais |
607
+ | `CENTRAL_DOCS_STORAGE` / `_LOCATION` | `filesystem` / pasta padrão do modo de trabalho | Central docs (o que foi implementado), configurado no Passo 5.2; vazio = desligado |
608
+ | `JARVIS_DOCS` / `ENG_DOCS` | `$DOCS_FOLDER/jarvis` / `$JARVIS_DOCS/engineering` | Documentos de trabalho (não perguntar; `docs/jarvis/` no `.gitignore`) |
609
+ | `CENTRAL_DOCS_REF` / `_TARGET_BRANCH` / `_REVIEWERS` | `main` / `main` / *(vazio)* | Só quando a pasta do Central docs tem `.git` |
589
610
  | `SESSIONS_DIR` | `.jarvis/sessions` | Não perguntar — gravar fixo |
590
611
  | `RTK_ENABLED` | `false` (ou true se detectar `rtk`) | Token Killer |
591
612
  | `ADVISOR_MODELS` | `"Sonnet 5.5,Opus 5.5,Opus 5,Fable 5.1"` | Advisor do `eng.start` — não perguntar, gravar o padrão |
@@ -649,8 +670,51 @@ cat templates/ENV-template.md
649
670
  mkdir -p .jarvis/sessions/eng .jarvis/sessions/prod .jarvis/sessions/qa
650
671
  # Garantir .jarvis/ no .gitignore do workspace
651
672
  grep -qxF '.jarvis/' .gitignore 2>/dev/null || echo '.jarvis/' >> .gitignore
673
+
674
+ # 8. Documentos de trabalho em docs/jarvis/ — nos DOIS modos de trabalho:
675
+ # JARVIS_DOCS=$DOCS_FOLDER/jarvis, PROD_DOCS=$JARVIS_DOCS/product, ENG_DOCS=$JARVIS_DOCS/engineering
676
+ # (valores do template) e docs/jarvis/ fora do versionamento (uma docs/ já existente não é tocada):
677
+ grep -qxF 'docs/jarvis/' .gitignore 2>/dev/null || echo 'docs/jarvis/' >> .gitignore
678
+ ```
679
+
680
+ ### 5.2 Central docs (sempre)
681
+
682
+ O Central docs é **ligado por padrão**: é onde fica o registro do que **foi implementado**, gerado pelo `/eng.spec-consolidate` depois de cada PR. Explique em uma frase ao usuário:
683
+
684
+ ```
685
+ 📚 Central docs: o registro do que foi implementado (um documento completo por funcionalidade
686
+ e um por entrega), consultado pela IA e por outros squads. Os rascunhos (PRD, FRD, ARD, RFC)
687
+ ficam em docs/jarvis/ e não vão para lá.
652
688
  ```
653
689
 
690
+ Pergunte com `AskUserQuestion`:
691
+ - **"Onde fica o Central docs?"**
692
+ - A) Pasta local (padrão)
693
+ - B) Repositório de documentação (git)
694
+ - C) Desligar
695
+
696
+ **A ou B:**
697
+ - `CENTRAL_DOCS_STORAGE=filesystem`.
698
+ - `CENTRAL_DOCS_LOCATION` com o padrão do **modo de trabalho** (a pessoa pode digitar outro caminho):
699
+ - **modo workspace** (2+ subpastas com `.git`): `./central-docs`, com `central-docs/` no `.gitignore` do workspace;
700
+ - **projeto único** (só a raiz tem `.git`): `docs/jarvis/central-docs`, já coberto por `docs/jarvis/` no `.gitignore`.
701
+ - **A:** `mkdir -p {LOCATION}` e criar `{LOCATION}/AGENTS.md` mínimo, explicando:
702
+ - a estrutura `{SQUAD}/product/{produto}/feature-*.md` e `{SQUAD}/engineering/{produto}/delivery-*.md`;
703
+ - que o `{SQUAD}/index.md` é gerado pelo `jarvis docs publish`.
704
+ - **B:** pedir a URL e rodar `git clone {URL} {LOCATION}`. Se `{LOCATION}` já existir com `.git`, só usar. Perguntar `CENTRAL_DOCS_TARGET_BRANCH` (padrão `main`).
705
+
706
+ **C:** `CENTRAL_DOCS_STORAGE=` vazio. O `/eng.spec-consolidate` fica indisponível até ligar.
707
+
708
+ Nunca coloque o Central docs no versionamento de um repositório de código.
709
+
710
+ ### 5.3 Carga inicial do Central docs (se houver documentos)
711
+
712
+ Com o Central docs ligado:
713
+ 1. Procure PRD, FRD, ARD e RFC em `$PROD_DOCS`, `$ENG_DOCS/{ARD,RFC}` (e nos caminhos antigos, se não foram movidos).
714
+ 2. Se encontrar algum, mostre a contagem e pergunte com `AskUserQuestion` (**Sim / Não**): **"Gerar o Central docs agora a partir desses documentos?"**
715
+ 3. Com **Sim**, chame `/eng.spec-consolidate --inicial`. Ele agrupa os documentos por funcionalidade, gera um `feature-*.md` por grupo (sem registro de entrega, porque não há PR) e só publica depois da revisão e do seu Sim.
716
+ 4. Com **Não**, siga. Dá para rodar o `/eng.spec-consolidate --inicial` depois.
717
+
654
718
  **⚠️ REGRA CRÍTICA — Bloco DATA:**
655
719
 
656
720
  ```javascript
@@ -694,6 +758,8 @@ FLOWS_FOLDER={commands|workflows}
694
758
  TEMPLATES_FOLDER=templates
695
759
  RULES_FOLDER=.$IDE/rules
696
760
  SESSIONS_DIR=.jarvis/sessions
761
+ JARVIS_DOCS=$DOCS_FOLDER/jarvis
762
+ ENG_DOCS=$JARVIS_DOCS/engineering
697
763
  PROD_FOLDER_NAME=product
698
764
  PROD_RULES=...
699
765
  PROD_FLOWS=...
@@ -721,11 +787,13 @@ RULES_FOLDER=.$IDE/rules
721
787
  SESSIONS_DIR=.jarvis/sessions
722
788
  ENABLE_CDD=true
723
789
 
790
+ JARVIS_DOCS=$DOCS_FOLDER/jarvis
791
+ ENG_DOCS=$JARVIS_DOCS/engineering
724
792
  PROD_FOLDER_NAME=product
725
793
  PROD_RULES=$RULES_FOLDER/$PROD_FOLDER_NAME
726
794
  PROD_FLOWS=.$IDE/$FLOWS_FOLDER
727
795
  PROD_TEMPLATES=.$IDE/$TEMPLATES_FOLDER/$PROD_FOLDER_NAME
728
- PROD_DOCS=$DOCS_FOLDER/$PROD_FOLDER_NAME
796
+ PROD_DOCS=$JARVIS_DOCS/$PROD_FOLDER_NAME
729
797
  ```
730
798
 
731
799
  **⚠️ IMPORTANTE - FLOWS_FOLDER por IDE:**
@@ -1070,6 +1138,7 @@ Apresentar checklist de onboarding por período (Dia 1, Semana 1, Mês 1).
1070
1138
 
1071
1139
  | Passo | Skill | Condição |
1072
1140
  |-------|-------|----------|
1141
+ | Passo 5.3 — Carga inicial do Central docs | `/eng.spec-consolidate --inicial` | Se o Central docs estiver ligado, houver PRD/FRD/ARD/RFC e o usuário responder Sim (também no Upgrade, depois da migração) |
1073
1142
  | Passo 9 — Adicionar as stacks (opcional) | `/jarvis-create-specialization {área} {stack}` | Se a pessoa escolher criar um skill novo para uma stack que ainda não tem especialização instalada (uma stack por vez; pular o passo não chama nada) |
1074
1143
 
1075
1144
  ---
@@ -1234,7 +1303,10 @@ Pergunta 6: Qual o limite de execução da AI? (60-100)
1234
1303
  Pergunta 7: Qual seu cargo?
1235
1304
  [mostrar opções em texto numerado]
1236
1305
 
1237
- Pergunta 8 (opcional): Usa task manager? jira/linear/github/asana ou Nenhum (freelance)
1306
+ Pergunta 8: Modo dos comandos de produto?
1307
+ [AskUserQuestion: Product-Led | Developer-Guided, sem opção sugerida]
1308
+
1309
+ Pergunta 9 (opcional): Usa task manager? jira/linear/github/asana ou Nenhum (freelance)
1238
1310
  ```
1239
1311
 
1240
1312
  **Agente**: *(cria ENV.md + `.jarvis/sessions/{eng,prod,qa}`, valida Context7, cria AGENTS.md e confirma)*
@@ -1281,6 +1353,7 @@ Bem-vindo! 🎉
1281
1353
  - [ ] **Perguntou UMA variável POR VEZ** (nunca fez múltiplas perguntas juntas)
1282
1354
  - [ ] **Usou AskUserQuestion só para ≤4 opções** (AREA se aplicável — HUB com DATA vai em texto)
1283
1355
  - [ ] **Mostrou em texto numerado para >4 opções** (HUB, IDE, SQUAD, POSITION)
1356
+ - [ ] **Perguntou o `PROD_MODE`** (Product-Led ou Developer-Guided), sem opção sugerida, qualquer que seja a área ou o cargo
1284
1357
  - [ ] **Mostrou TODAS as opções disponíveis** (HUB inclui DATA; nunca omitiu)
1285
1358
  - [ ] **Incluiu descrição útil em cada opção** (seja AskUserQuestion ou texto)
1286
1359
  - [ ] **Validou respostas em texto contra lista de opções válidas**
@@ -57,12 +57,25 @@ RULES_FOLDER=.$IDE/rules
57
57
  # Cookie/HTTP session (auth) NÃO é esta pasta.
58
58
  SESSIONS_DIR=.jarvis/sessions
59
59
 
60
+ # Documentos de trabalho gerados pelos comandos (PRD, FRD, épicos, ARD, RFC, QA, swagger,
61
+ # robôs, C4…): sempre em $DOCS_FOLDER/jarvis/, nos dois modos de trabalho, com docs/jarvis/
62
+ # no .gitignore (o /jarvis-init garante). O que foi implementado vai para o Central docs.
63
+ JARVIS_DOCS=$DOCS_FOLDER/jarvis
64
+ # Engenharia: ARD/, RFC/, qa/, swagger/, openapi/, robots/, c4/
65
+ ENG_DOCS=$JARVIS_DOCS/engineering
66
+
60
67
  # Pastas de produto (derivadas das de cima — em geral não precisa mexer)
61
68
  PROD_FOLDER_NAME=product
62
69
  PROD_RULES=$RULES_FOLDER/$PROD_FOLDER_NAME
63
70
  PROD_FLOWS=.$IDE/$FLOWS_FOLDER
64
71
  PROD_TEMPLATES=.$IDE/$TEMPLATES_FOLDER/$PROD_FOLDER_NAME
65
- PROD_DOCS=$DOCS_FOLDER/$PROD_FOLDER_NAME
72
+ PROD_DOCS=$JARVIS_DOCS/$PROD_FOLDER_NAME
73
+
74
+ # Modo de condução dos comandos de produto (prod.*) e do eng.create-ard.
75
+ # product-led = para PMs: fluxo direto, sem explicações extras (padrão se vazio)
76
+ # developer-guided = para devs e futuros PMs: uma pergunta por vez, explica cada termo e etapa
77
+ # Perguntado sempre pelo /jarvis-init. Para trocar, rode o /jarvis-init ou edite aqui.
78
+ PROD_MODE=
66
79
 
67
80
 
68
81
  # --- Especializações por área -------------------------------------------------
@@ -197,12 +210,20 @@ QA_SIGNOFF_MAX_AGE=24
197
210
  JARVIS_PROJECT=https://github.com/phelipperibeiro/jarvis-framework
198
211
 
199
212
 
200
- # --- Central docs (opcional) -------------------------------------------------
201
- # Repo de documentação canônica (PRD, FRD, ARD, RFC). Em branco = desligado.
202
- CENTRAL_DOCS_REPO=
213
+ # --- Central docs -------------------------------------------------------------
214
+ # O registro do que FOI IMPLEMENTADO: um documento completo por funcionalidade e um registro
215
+ # por entrega, gerados pelo /eng.spec-consolidate depois de cada PR. Ligado por padrão.
216
+ # Nunca dentro do versionamento de um repositório de código.
217
+ # CENTRAL_DOCS_STORAGE: filesystem (s3 e gdrive virão nas issues #144 e #145); vazio = desligado
218
+ # CENTRAL_DOCS_LOCATION: pasta do Central docs, relativa à pasta do workspace ou absoluta.
219
+ # Padrão do /jarvis-init: ./central-docs (modo workspace, no .gitignore do workspace)
220
+ # ou docs/jarvis/central-docs (projeto único, coberto por docs/jarvis/ no .gitignore).
221
+ # Se a pasta for um clone de um repositório de documentação (tem .git): git pull antes
222
+ # de ler e branch + commit + push + PR ao publicar. Sem .git: grava direto na pasta.
223
+ CENTRAL_DOCS_STORAGE=filesystem
224
+ CENTRAL_DOCS_LOCATION=./central-docs
225
+ # Só quando a pasta tem .git: branch lida no pull e branch base dos PRs.
203
226
  CENTRAL_DOCS_REF=main
204
227
  CENTRAL_DOCS_TARGET_BRANCH=main
205
- # Revisores padrão dos MRs (separados por vírgula).
228
+ # Revisores padrão dos PRs (separados por vírgula; vão na descrição).
206
229
  CENTRAL_DOCS_REVIEWERS=
207
- # TTL do cache opcional (redis-cli, se existir). 3600 = 1 hora.
208
- CENTRAL_DOCS_CACHE_TTL=3600
@@ -1,17 +1,50 @@
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
- **Arquivo:** /docs/engineering/ARD/ARD-xxx-nome-da-arquitetura.md
39
+ **Arquivo:** $ENG_DOCS/ARD/ARD-xxx-nome-da-arquitetura.md
4
40
 
5
41
  ---
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
 
@@ -0,0 +1,65 @@
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 da entrega. Padrão: DEL-{AAAA-MM-DD}-{task_key}
7
+ id: {DEL-AAAA-MM-DD-task_key}
8
+
9
+ # Documento da funcionalidade que esta entrega atualizou (basename).
10
+ feature: {feature-slug.md}
11
+
12
+ # Card ou número de controle da tarefa (TASK_MANAGER do ENV.md; freelance = número de controle).
13
+ task_key: {TASK-123}
14
+
15
+ # URL do card no task manager (padrão da eng.integrations-rules.md). Vazio no modo freelance.
16
+ card_url: {URL}
17
+
18
+ # Pull/Merge Request: número e URL (VERSION_CONTROL / remote origin).
19
+ pr: {#n URL}
20
+
21
+ # Branch de trabalho e branch base (Branch base: do architecture.md).
22
+ branch: {branch}
23
+ base: {main | dev | outra}
24
+
25
+ # Data da consolidação (YYYY-MM-DD).
26
+ date: {YYYY-MM-DD}
27
+ ---
28
+
29
+ # Entrega {task_key}: {título}
30
+
31
+ > Registro **autossuficiente** do que esta entrega fez. O estado atual da funcionalidade fica em [{feature-slug.md}](../../product/{produto}/{feature-slug.md}).
32
+
33
+ ## 1. O que a entrega fez
34
+
35
+ {Resumo completo em linguagem de produto e de engenharia: o que passou a existir ou mudou.}
36
+
37
+ ## 2. Decisões tomadas
38
+
39
+ | Questão | Decisão | Por quê |
40
+ |---|---|---|
41
+ | {das Questões em Aberto do architecture.md e das decisões do card} | {…} | {…} |
42
+
43
+ ## 3. Commits
44
+
45
+ | Commit | Autor | Data | Mensagem |
46
+ |---|---|---|---|
47
+ | `{hash curto}` | {nome (sem e-mail)} | {AAAA-MM-DD} | {mensagem} |
48
+
49
+ ## 4. Arquivos alterados
50
+
51
+ {Resumo do `git diff --stat {base}...HEAD`, agrupado por área (código, testes, docs, config).}
52
+
53
+ ## 5. Fora do escopo e follow-ups
54
+
55
+ {O que ficou para depois, com card quando existir.}
56
+
57
+ ## 6. Testes e validação
58
+
59
+ {Comandos rodados e resultados; testes manuais; o que ficou para validar.}
60
+
61
+ ## 7. Referências
62
+
63
+ - Card: [{TASK_KEY}]({URL})
64
+ - PR/MR: [#{n}]({URL})
65
+ - Documentos de trabalho de origem (referência): {basenames}
@@ -0,0 +1,86 @@
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 da funcionalidade no Central docs (estável; não muda entre entregas). Ex.: FEAT-checkout
7
+ id: {FEAT-slug}
8
+
9
+ # Nome da funcionalidade, como as pessoas a chamam. Vai no título.
10
+ name: {Nome da funcionalidade}
11
+
12
+ # Em que ponto a funcionalidade está (lista em rules/product/prod-rules.md).
13
+ # Opções: icebox | in_review | backlog | in_progress | in_production | cancelled | deprecated
14
+ # in_progress = parte entregue, ainda em evolução | in_production = em produção
15
+ # deprecated = esteve em produção e foi descontinuada
16
+ status: {um dos valores acima}
17
+
18
+ # Produto (pasta do Central docs): o WORKSPACE do ENV.md, ou o informado no comando.
19
+ product: {produto}
20
+
21
+ # Data da última consolidação (YYYY-MM-DD).
22
+ updated_at: {YYYY-MM-DD}
23
+
24
+ # Registro da última entrega consolidada (nome do arquivo delivery-*.md). Vazio na carga inicial.
25
+ last_delivery: {delivery-AAAA-MM-DD-task_key.md}
26
+
27
+ # Documentos de trabalho de origem, só como referência (basename). O entendimento NÃO depende deles.
28
+ related_docs: {prd-001-nome.md, frd-001-nome.md, ARD-001-nome.md, RFC-001-nome.md}
29
+ ---
30
+
31
+ # {Nome da funcionalidade}
32
+
33
+ > Documento **autossuficiente**: descreve o que está implementado hoje. Se os documentos de origem (PRD, FRD, ARD, RFC) se perderem, este documento basta. Escrito para humanos e para IAs: frases completas, termos definidos, nada implícito.
34
+
35
+ ## 1. Visão geral
36
+
37
+ {O problema que a funcionalidade resolve, para quem, e o valor entregue. 3 a 6 frases.}
38
+
39
+ ## 2. Comportamento atual
40
+
41
+ {O que o sistema faz hoje, regra por regra, fluxo por fluxo. Use listas "Quando X, o sistema Y". Inclua os estados de erro e os casos de borda tratados. Critérios de aceite cumpridos.}
42
+
43
+ ## 3. Requisitos não funcionais atendidos
44
+
45
+ | Requisito | Como foi atendido | Evidência |
46
+ |---|---|---|
47
+ | {desempenho, segurança, acessibilidade, limites…} | {…} | {teste, medição, arquivo} |
48
+
49
+ ## 4. Arquitetura e decisões
50
+
51
+ {Componentes envolvidos e como conversam. Cada decisão relevante com o porquê e as alternativas descartadas (ex.: vindas do ARD, do RFC e das questões do architecture.md).}
52
+
53
+ ## 5. Onde está no código
54
+
55
+ | Parte | Caminho | O que faz |
56
+ |---|---|---|
57
+ | {módulo, endpoint, comando, job} | `{caminho/arquivo}` | {…} |
58
+
59
+ ## 6. Configuração e dependências
60
+
61
+ {Variáveis de ambiente (só nomes, nunca valores), flags, serviços externos, migrações, permissões.}
62
+
63
+ ## 7. O que mudou em relação ao especificado
64
+
65
+ {Diferenças entre o que os documentos de trabalho pediam e o que foi implementado, e por quê. "Nenhuma" se não houver.}
66
+
67
+ ## 8. Fora do escopo e limitações conhecidas
68
+
69
+ {O que a funcionalidade não faz (de propósito ou por limitação), com o motivo. Follow-ups abertos, com card.}
70
+
71
+ ## 9. Testes e evidências
72
+
73
+ {Como a funcionalidade é verificada: suítes, cenários cobertos, testes manuais. Onde ficam.}
74
+
75
+ ## 10. Histórico de entregas
76
+
77
+ | Data | Card | PR/MR | Autores | Resumo | Registro |
78
+ |---|---|---|---|---|---|
79
+ | {AAAA-MM-DD} | [{TASK_KEY}]({URL do card}) | [#{n}]({URL do PR/MR}) | {nomes} | {1 frase} | [delivery-…](../../engineering/{produto}/delivery-….md) |
80
+
81
+ ## 11. Glossário e referências
82
+
83
+ - **{Termo}:** {definição}
84
+ - Cards: {TASK_KEY com URL}
85
+ - PRs/MRs: {números com URL}
86
+ - Documentos de origem (referência): {basenames}
@@ -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 |