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
@@ -279,7 +279,7 @@ O MR deve seguir o template em `$IDE/templates/engineering/PR-template.md`:
279
279
  - ✅ Verificar `git status` antes do commit
280
280
  - ✅ Usar mensagens de commit descritivas
281
281
  - ✅ Referenciar o TASK_MANAGER_KEY no commit
282
- - ✅ **Limpar sessão após criar MR**
282
+ - ✅ Gerar o `pull-request.md` na sessão e publicar só com o **Sim**
283
283
 
284
284
  ---
285
285
 
@@ -316,40 +316,18 @@ Antes de considerar o PR completo:
316
316
  - [ ] Arquivos adicionados individualmente (não `git add .`)
317
317
  - [ ] Commit com mensagem padronizada
318
318
  - [ ] Commit referencia o TASK_MANAGER_KEY
319
- - [ ] Push realizado
320
- - [ ] MR criado com template preenchido
319
+ - [ ] Push realizado (só com o Sim)
320
+ - [ ] MR criado a partir do `pull-request.md` (só com o Sim)
321
321
  - [ ] Branch de destino correta
322
322
  - [ ] Card do Jira movido para "In Review"
323
323
  - [ ] Comentários de code review processados
324
- - [ ] **Sessão limpa** (`$SESSIONS_DIR/eng/{TASK_MANAGER_KEY}/` removida)
324
+ - [ ] `pull-request.md` aprovado na sessão (e publicado, se o usuário respondeu Sim)
325
+ - [ ] Lembrete do `/eng.spec-consolidate` na mensagem final
325
326
 
326
327
  ---
327
328
 
328
- ## Limpeza da Sessão
329
+ ## Sessão e publicação
329
330
 
330
- ### Por que limpar?
331
-
332
- 1. **Evitar poluição**: Sessões antigas ocupam espaço e confundem
333
- 2. **Fonte da verdade**: A documentação oficial está no Jira e no MR
334
- 3. **Organizacão**: Manter apenas sessões ativas
335
-
336
- ### O que é removido?
337
-
338
- ```
339
- $SESSIONS_DIR/eng/{TASK_MANAGER_KEY}/
340
- ├── architecture.md → Removido
341
- ├── plan.md → Removido
342
- └── context.md → Removido (se existir)
343
- ```
344
-
345
- ### Onde a documentação permanece?
346
-
347
- - **Card do Jira**: Tech spec anexada, comentários
348
- - **Merge Request**: Descrição, histórico de commits
349
- - **Código**: Comentários inline, docstrings
350
-
351
- ### Comando de limpeza
352
-
353
- ```bash
354
- rm -rf $SESSIONS_DIR/eng/{TASK_MANAGER_KEY}/
355
- ```
331
+ - O texto do PR fica em **`$SESSIONS_DIR/eng/{TASK_MANAGER_KEY}/pull-request.md`**, aprovado pelo usuário.
332
+ - **Publicar (push + MR/PR) só com o Sim** do `AskUserQuestion` "Publicar o PR agora?". Com Não, o arquivo fica na sessão e nada é enviado.
333
+ - **A sessão nunca é apagada por este comando:** o `/eng.spec-consolidate`, que roda em seguida, precisa do `architecture.md`, do `plan.md`, do `gate-checklist.md` e do `pull-request.md`. A pessoa apaga à mão quando quiser.
@@ -63,25 +63,21 @@ Confirmar que está na branch certa? (s/n)
63
63
 
64
64
  ## Regras de Validação
65
65
 
66
+ ### Só revisar
67
+
68
+ O `eng.pre-pr` **aponta lacunas e não corrige nada**: não altera código, não escreve testes, não atualiza documentação e não publica no Central docs. Quem decide o que ajustar é o usuário.
69
+
66
70
  ### Escopo de Análise
67
71
 
68
- Avaliar **apenas** as mudanças da branch atual em relação ao branch base (`main`/`develop`):
72
+ Avaliar **apenas** as mudanças da branch atual em relação à branch base (`Branch base:` do `architecture.md`; sem ele, perguntar):
69
73
 
70
74
  ```bash
71
- git diff main...HEAD
75
+ git diff {BRANCH_BASE}...HEAD
72
76
  ```
73
77
 
74
78
  ### Evidências Obrigatórias
75
79
 
76
- Ao citar "testes passando" ou "validações OK", incluir:
77
- - Qual comando foi executado
78
- - Output do resultado (ou smoke test manual se não houver suíte)
79
-
80
- ### Revalidação após Mudanças
81
-
82
- Se qualquer gate levar a mudanças de código, reexecutar obrigatoriamente:
83
- - Revisão técnica do código alterado
84
- - Testes/validações
80
+ Cada lacuna cita onde está (`arquivo:linha`) ou o comando que a revelou e o resultado.
85
81
 
86
82
  ---
87
83
 
@@ -89,11 +85,8 @@ Se qualquer gate levar a mudanças de código, reexecutar obrigatoriamente:
89
85
 
90
86
  O workflow **deve sempre** terminar com:
91
87
 
92
- 1. **Semáforo de status**:
93
- - 🟢 Green: pronto para PR
94
- - 🟡 Yellow: pode abrir PR com ressalvas documentadas
95
- - 🔴 Red: bloqueado — listar o que impede o PR
96
-
97
- 2. **Comentário no card só se a validação reprovar** (🔴 RED, bloqueio), com o motivo (via `/eng-global-task-comment`) — pular se freelance; GREEN e YELLOW não comentam
98
-
99
- 3. **Aguardar permissão explícita** do usuário para prosseguir para `/eng.pr`
88
+ 1. **`gate-checklist.md`** em `$SESSIONS_DIR/eng/{TASK_MANAGER_KEY}/`:
89
+ - semáforo (🟢 / 🟡 / 🔴), resumo, lacunas por área (o quê, onde, por que importa, sugestão, severidade, **Decisão**), evidências e PR Brief.
90
+ 2. **Decisões do usuário** gravadas na coluna Decisão (Ajustar / Não ajustar + motivo).
91
+ 3. **Pergunta Sim / Não** (`AskUserQuestion`) para publicar o relatório como comentário na issue/card (`/eng-global-task-comment`). Nunca publicar sem a resposta. Freelance: só na sessão.
92
+ 4. **Aguardar permissão explícita** do usuário para prosseguir para `/eng.pr`.
@@ -0,0 +1,104 @@
1
+ > **Applies to:** HUB: all | POSITION: all | AREA: all | SQUAD: all
2
+
3
+ # Regras do Modo Developer-Guided
4
+
5
+ ## Objetivo
6
+
7
+ Definir como a IA conduz os comandos de produto quando o usuário escolheu o **Modo Developer-Guided** (Modo Fácil): uma conversa didática, para quem vem do código e quer aprender Product Management (PM, gestão de produto) enquanto faz.
8
+
9
+ O Modo Fácil **não é um Jarvis simplificado**. É um programa de transição de dev para PM: cada interação ensina o vocabulário e o processo, e o objetivo é que a pessoa aprenda o suficiente para conduzir o processo sozinha no Modo Padrão (Product-Led).
10
+
11
+ ## Escopo
12
+
13
+ - Vale **somente** quando `PROD_MODE=developer-guided` no `$IDE/ENV.md`. Com `PROD_MODE` vazio ou `product-led`, este arquivo não se aplica.
14
+ - Vale em todos os comandos de `workflows/product/` (`prod.spec`, `prod.spec.discovery`, `.prd`, `.frd`, `.ard`, `.epic`, `.issue`, `.breakdown`, `.clarify`, `prod.roadmap.preview`) e no `eng.create-ard`.
15
+ - Muda **a conversa**, não o documento: etapas, seções e conteúdo de cada documento seguem o workflow e o template, como no Modo Padrão.
16
+ - Complementa `rules/product/prod-rules.md`. Onde as duas falam do mesmo assunto (formato das perguntas), esta prevalece.
17
+
18
+ ## Regras
19
+
20
+ ### Obrigatório
21
+
22
+ #### Linguagem e ritmo
23
+
24
+ - **Uma pergunta por vez.** Nunca juntar várias perguntas nem despejar blocos longos de texto. Espere a resposta antes de seguir.
25
+ - **Termo real + explicação simples, sempre juntos.** Use o nome técnico de PM e explique na mesma frase. Exemplo: "PRD (Product Requirements Document), o documento que define o problema e o que vamos construir". A pessoa precisa absorver o vocabulário, não fugir dele.
26
+ - Analogias com código funcionam bem: a pessoa é dev (ex.: "o FRD está para o PRD como a implementação está para a interface").
27
+
28
+ #### Perguntas e opções
29
+
30
+ Use `AskUserQuestion` em **toda transição de artefato** (ex.: FRD → ARD) e em **toda questão ou gate em aberto**. A ferramenta aceita até 4 opções, mais um "Outro" automático de texto livre:
31
+
32
+ | Tipo de pergunta | Opções |
33
+ |---|---|
34
+ | Gate (seguir, pular, aprovar uma etapa) | `[Sim]` · `[Não]` · `[Explicar melhor]` + Outro = `[Dúvida]` |
35
+ | Pergunta de conteúdo (ex.: "qual o público-alvo?") | até 3 respostas · `[Explicar melhor]` + Outro = `[Dúvida]` |
36
+
37
+ - `[Explicar melhor]` aparece **sempre**.
38
+ - `[Dúvida]` **é** o "Outro": a pessoa escreve a dúvida no texto livre.
39
+ - Sem `AskUserQuestion` na IDE: use a tabela de `prod-rules.md`, com as mesmas opções nas linhas.
40
+
41
+ #### Comportamento de cada opção
42
+
43
+ | Opção | O que fazer |
44
+ |---|---|
45
+ | `[Sim]` | Seguir para o próximo passo. |
46
+ | `[Não]` | Dizer em **uma frase** a consequência de pular (ex.: "Sem o FRD, o ARD fica sem base para decidir a arquitetura") e confirmar. Se a pessoa insistir, registrar o artefato como **pendente** e seguir. |
47
+ | `[Explicar melhor]` | A pessoa pode digitar o que não entendeu (opcional). Com texto, explique aquele ponto; sem texto, explique o passo inteiro. Explique **na hora, sem texto pronto**: o que é, para que serve e o risco de não fazer agora, com uma analogia (de preferência com código), em **até 3 frases**. Depois, repita **a mesma** pergunta. |
48
+ | `[Dúvida]` | Responda **só aquele ponto**, sem reiniciar o fluxo. Ao terminar, volte à pergunta original. |
49
+
50
+ Nunca avance enquanto a pessoa não tiver esclarecido o que não entendeu.
51
+
52
+ #### Mentoria entre artefatos
53
+
54
+ Nunca pule de um artefato para outro sem avisar. Antes de cada transição:
55
+
56
+ 1. Apresente o próximo passo de forma leve.
57
+ 2. Explique em uma frase o que é o documento e para que serve **neste projeto**, conectando ao código quando possível.
58
+ 3. Dê o controle à pessoa com as opções de gate.
59
+
60
+ #### Fechamento de cada iteração
61
+
62
+ Ao terminar um documento, sem esperar pedido:
63
+
64
+ 1. Gere o documento completo.
65
+ 2. Diga em uma linha o que a pessoa acabou de ganhar e como isso se encaixa no trabalho de um PM (ex.: "Agora você tem o ARD: o registro de por que escolhemos essa arquitetura.").
66
+ 3. Peça a revisão: `[Aprovar]` · `[Ajustar]` · `[Explicar melhor]` + Outro = `[Dúvida]`.
67
+ 4. **Questionamento sobre um trecho:** explique o ponto antes de qualquer coisa. Uma pergunta não significa que o documento está errado, e a pessoa pode estar enganada.
68
+ - Documento correto: explique o porquê e diga claramente que não há o que mudar.
69
+ - A pessoa tem razão, ou a dúvida revelou falha ou ambiguidade no texto: explique e **sugira uma alteração**, dizendo o que mudaria e por quê.
70
+ - Opções: `[Entendi]` (mantém e volta à revisão) · `[Explicar melhor]` (outra analogia, até 3 frases, e repete a pergunta) · `[Sugerir alteração]`.
71
+ - `[Sugerir alteração]`: avalie se a mudança faz sentido (se não fizer, explique o motivo com honestidade), proponha o texto novo e **só aplique depois da confirmação**.
72
+ - Melhorias que a própria IA identificar também passam por `[Sugerir alteração]`, sempre com o que mudaria, por que ajuda e o risco de não mudar.
73
+ 5. Só avance para o próximo artefato depois da aprovação.
74
+
75
+ #### Documento final e frontmatter
76
+
77
+ - O documento gerado é **idêntico em qualidade e estrutura** ao do Modo Padrão: completo, técnico e denso. A simplicidade fica na conversa. O documento é o padrão que a pessoa terá de produzir sozinha depois.
78
+ - Mantenha os comentários `#` do frontmatter que vêm do template. Todo campo novo nasce com o comentário (o que significa) e a lista de opções.
79
+ - Ao mudar o valor de um campo durante a conversa (ex.: `status: in_review` → `backlog`), diga em uma frase o que a mudança significa.
80
+
81
+ ### Proibido
82
+
83
+ - Simplificar, encurtar ou pular seções do documento final por causa do modo.
84
+ - Alterar o documento sem confirmação, inclusive para aplicar uma melhoria proposta pela própria IA.
85
+ - Sugerir uma alteração sem dizer o que muda, por que ajuda e o risco de não mudar.
86
+ - Fazer várias perguntas de uma vez.
87
+ - Perguntar, sugerir ou lembrar a troca para o Modo Padrão. A troca é manual (`/jarvis-init` ou `PROD_MODE` no `ENV.md`), quando a pessoa quiser.
88
+
89
+ ### Recomendado
90
+
91
+ - Preferir exemplos do próprio projeto (código, telas, entidades) aos genéricos.
92
+ - Quando a pessoa usar um termo errado, corrigir com gentileza, citando o termo certo junto com a explicação.
93
+
94
+ ## Exceções
95
+
96
+ - Se a pessoa pedir explicitamente outro formato na conversa (ex.: "pode me perguntar tudo de uma vez"), siga o pedido naquele comando.
97
+ - O aviso de modelo (`recommended_model`) não é deste arquivo: vale nos dois modos e está no topo de cada workflow.
98
+
99
+ ## Referências
100
+
101
+ - `rules/product/prod-rules.md`: regras gerais de produto (ambiente, status, formato das perguntas)
102
+ - `rules/product/prod.spec-rules.md`: princípios de escrita de spec
103
+ - `templates/product/`: templates com o frontmatter comentado
104
+ - `docs/produto/`: guia humano de cada comando (para quem mantém o framework)
@@ -42,7 +42,7 @@ Criar e manter documentação de arquitetura usando os 4 níveis do C4:
42
42
 
43
43
  - **Script de detecção**: `$IDE/scripts/detect-stack.sh`
44
44
  - **Template**: `$IDE/templates/engineering/c4-model-template.md`
45
- - **Saída**: `$DOCS_FOLDER/engineering/c4/`
45
+ - **Saída**: `$ENG_DOCS/c4/`
46
46
 
47
47
  ### Exemplos de Output
48
48
 
@@ -84,7 +84,7 @@ Code -> Quais classes/interfaces críticas?
84
84
  ### 1. Verificar Documentação Existente
85
85
 
86
86
  ```bash
87
- ls -la $DOCS_FOLDER/engineering/c4/ 2>/dev/null || echo "Nenhum diagrama C4"
87
+ ls -la $ENG_DOCS/c4/ 2>/dev/null || echo "Nenhum diagrama C4"
88
88
  ls -la $DOCS_FOLDER/architecture/adr/ 2>/dev/null
89
89
  ```
90
90
 
@@ -318,7 +318,7 @@ git diff origin/main --name-only | grep -E "docker|config|src/(domain|infrastruc
318
318
  ```
319
319
  ✅ Diagrama C4 criado/atualizado!
320
320
 
321
- 📄 Arquivo: $DOCS_FOLDER/engineering/c4/{arquivo}.md
321
+ 📄 Arquivo: $ENG_DOCS/c4/{arquivo}.md
322
322
  📊 Nível: {nivel}
323
323
  🏗️ Sistema: {nome}
324
324
 
@@ -100,7 +100,7 @@ ls -la docs/ 2>/dev/null || echo "Pasta docs/ não encontrada"
100
100
  - Comentários inline no código
101
101
  - Documentação de APIs
102
102
  - Exemplos e tutoriais
103
- - `docs/engineering/c4/` - Diagramas de arquitetura
103
+ - `$ENG_DOCS/c4/` - Diagramas de arquitetura
104
104
 
105
105
  ---
106
106
 
@@ -28,7 +28,7 @@ Garantir que todo código novo ou modificado possua cobertura de testes adequada
28
28
  ## Recursos
29
29
 
30
30
  - **Base**: [eng-qa](../eng-qa/SKILL.md) — princípios de risco e priorização usados aqui vêm da base
31
- - **Saída**: `$DOCS_FOLDER/engineering/qa/{task-id}-test_coverage_branch_report.md`
31
+ - **Saída**: `$ENG_DOCS/qa/{task-id}-test_coverage_branch_report.md`
32
32
 
33
33
  ---
34
34
 
@@ -126,7 +126,7 @@ Determinar quais testes estão faltando:
126
126
 
127
127
  ### 5. Gerar o relatório
128
128
 
129
- Gerar arquivo `$DOCS_FOLDER/engineering/qa/{task-id}-test_coverage_branch_report.md`:
129
+ Gerar arquivo `$ENG_DOCS/qa/{task-id}-test_coverage_branch_report.md`:
130
130
 
131
131
  ```markdown
132
132
  # Análise de Cobertura de Testes da Branch
@@ -232,7 +232,7 @@ describe('[Funcionalidade]', () => {
232
232
  - [ ] Diff da branch analisado (`git diff origin/main...HEAD`)
233
233
  - [ ] Cada arquivo alterado mapeado para seu teste correspondente (ou marcado como ausente)
234
234
  - [ ] Lacunas priorizadas por criticidade (alta/média/baixa)
235
- - [ ] Relatório gerado em `$DOCS_FOLDER/engineering/qa/{task-id}-test_coverage_branch_report.md`
235
+ - [ ] Relatório gerado em `$ENG_DOCS/qa/{task-id}-test_coverage_branch_report.md`
236
236
 
237
237
  ---
238
238
 
@@ -240,7 +240,7 @@ describe('[Funcionalidade]', () => {
240
240
 
241
241
  | Artefato | Descrição |
242
242
  |----------|-----------|
243
- | `$DOCS_FOLDER/engineering/qa/{task-id}-test_coverage_branch_report.md` | Relatório de cobertura com plano de implementação priorizado |
243
+ | `$ENG_DOCS/qa/{task-id}-test_coverage_branch_report.md` | Relatório de cobertura com plano de implementação priorizado |
244
244
 
245
245
  > O artefato é gerado na raiz do projeto ou no diretório especificado em `$ARGUMENTS`.
246
246
 
@@ -259,6 +259,6 @@ Prioridade alta: {N} cenários
259
259
  Prioridade média: {N} cenários
260
260
  Prioridade baixa: {N} cenários
261
261
 
262
- Relatório: $DOCS_FOLDER/engineering/qa/{task-id}-test_coverage_branch_report.md
262
+ Relatório: $ENG_DOCS/qa/{task-id}-test_coverage_branch_report.md
263
263
  Próximo passo: implementar os testes do plano ou registrar uma especialização de execução em QA_SPECIALIZATIONS
264
264
  ```
@@ -1,313 +1,89 @@
1
1
  # jarvis-docs-central
2
2
 
3
- Integração com repositório centralizado de documentação canônica (PRDs, FRDs, ARDs, RFCs) — GitLab, GitHub ou Bitbucket.
3
+ Integração com o **Central docs**: o registro do que **foi implementado** em cada produto do squad (um documento completo por funcionalidade e um registro por entrega), com um índice que os outros comandos consultam. Os documentos de trabalho (PRD, FRD, ARD, RFC) ficam em `docs/jarvis/` e não vão para lá.
4
4
 
5
5
  ## Visão Geral
6
6
 
7
- Esta skill permite:
8
- - **Buscar** documentação do central-docs via API do vendor (GitLab / GitHub / Bitbucket)
9
- - **Publicar** documentos aprovados via MR/PR (git flow seguro)
10
- - **Sincronizar** automaticamente em /warm-up
7
+ - **Buscar** o que já foi implementado (`jarvis docs sync`, `jarvis docs fetch`)
8
+ - **Publicar** a consolidação de cada entrega (`jarvis docs publish`, pelo `/eng.spec-consolidate`)
9
+ - **Índice** regenerado a cada publicação (`{SQUAD}/index.md`)
11
10
 
12
- ## Pré-requisitos
11
+ O Central docs funciona por **adaptador de armazenamento**: hoje uma pasta do disco (`filesystem`). Se essa pasta for um clone de um repositório de documentação (tem `.git`), a publicação vira branch + commit + push + Pull/Merge Request. S3 e Google Drive são as issues #144 e #145.
13
12
 
14
- 1. **Token VCS** (GitLab `.npmrc`, GitHub `gh auth` / `GITHUB_TOKEN`, Bitbucket `BITBUCKET_TOKEN`)
15
- 2. **ENV.md** com variáveis do central-docs
13
+ ## Configuração
16
14
 
17
- > ℹ️ Cache local via `redis-cli` é opcional. Sem Redis, a busca vai direto na API.
18
-
19
- > ⚠️ Token **nunca** vai no chat. GitLab: `.npmrc`. GitHub: `gh auth` ou `GITHUB_TOKEN`. Bitbucket: `BITBUCKET_TOKEN`.
20
-
21
- ### Configuração Mínima
15
+ Ligado por padrão. O `/jarvis-init` (Passo 5.2) pergunta "Onde fica o Central docs?" (pasta local, repositório git ou desligar). À mão, no `ENV.md`:
22
16
 
23
17
  ```ini
24
- # .windsurf/ENV.md
25
- CENTRAL_DOCS_REPO=https://gitlab.com/org/group/central-docs.git
18
+ CENTRAL_DOCS_STORAGE=filesystem
19
+ CENTRAL_DOCS_LOCATION=./central-docs # relativo à pasta do workspace, ou absoluto
20
+ # Só se a pasta tiver .git:
26
21
  CENTRAL_DOCS_REF=main
27
- CENTRAL_DOCS_TARGET_BRANCH=dev
28
- SQUAD=core
29
- WORKSPACE=meu-workspace
30
- ```
31
-
32
- ```ini
33
- # .npmrc (projeto ou ~/.npmrc)
34
- //gitlab.com/api/v4/packages/npm/:_authToken=glpat-seu-token-aqui
22
+ CENTRAL_DOCS_TARGET_BRANCH=main
23
+ CENTRAL_DOCS_REVIEWERS=
24
+ SQUAD=CORE
25
+ WORKSPACE=loja # vira a pasta do produto
35
26
  ```
36
27
 
37
- ## Comandos Disponíveis
28
+ | Modo de trabalho | Pasta padrão | Fora do versionamento por |
29
+ |---|---|---|
30
+ | Workspace (vários repositórios) | `./central-docs` | `central-docs/` no `.gitignore` do workspace |
31
+ | Projeto único | `docs/jarvis/central-docs` | `docs/jarvis/` no `.gitignore` do projeto |
38
32
 
39
- ### Sincronizar Docs
33
+ > Com `.git`, o PR usa o token do vendor (GitLab `.npmrc`, GitHub `gh auth`/`GITHUB_TOKEN`, Bitbucket `BITBUCKET_TOKEN`). O token **nunca** vai no chat nem no `ENV.md`.
40
34
 
41
- ```bash
42
- # Sincronizar docs do squad
43
- jarvis docs sync
44
-
45
- # Modo silencioso (sem output)
46
- jarvis docs sync --silent
35
+ **Vindo da versão anterior (Central docs como repositório remoto)?** Rode `/jarvis-init` → Upgrade (C). Ele propõe `CENTRAL_DOCS_STORAGE=filesystem`, a pasta padrão e o `git clone` do repositório antigo.
47
36
 
48
- # Modo verbose (mostra conteúdo)
49
- jarvis docs sync --verbose
50
- ```
51
-
52
- ### Publicar Documento
37
+ ## Comandos
53
38
 
54
39
  ```bash
55
- # Publicar ARD
56
- jarvis docs publish \
57
- --file ./docs/engineering/ard-api-wallet.md \
58
- --tipo ard \
59
- --feature api-wallet-auth-jwt
60
-
61
- # Publicar PRD
62
- jarvis docs publish \
63
- --file ./docs/product/prd-gestao-carteiras.md \
64
- --tipo prd \
65
- --feature gestao-carteiras
66
-
67
- # Publicar Swagger/OpenAPI (YAML)
68
- jarvis docs publish \
69
- --file ./docs/engineering/swagger/api-wallet.yaml \
70
- --tipo swagger \
71
- --feature wallet
72
-
73
- # Com override de squad/workspace:
74
- jarvis docs publish \
75
- --file ./docs/engineering/ard-api-wallet.md \
76
- --tipo ard \
77
- --feature api-wallet-auth-jwt \
78
- --squad core \
79
- --workspace meu-workspace
80
- ```
81
-
82
- **Tipos válidos:** `prd`, `frd`, `ard`, `rfc`, `swagger`
83
-
84
- ## Estrutura do Repositório Central
85
-
86
- ```
87
- central-docs/
88
- └── {squad}/
89
- ├── index.md # Lista todos os docs do squad
90
- ├── product/
91
- │ └── {workspace}/
92
- │ ├── prd-{feature}.md
93
- │ └── frd-{feature}.md
94
- └── engineering/
95
- └── {workspace}/
96
- ├── ard-{feature}.md
97
- ├── rfc-{feature}.md
98
- └── swagger-{feature}.md (ou api-{service}.yaml / api-{service}.json)
99
- ```
100
-
101
- **Exemplos reais:**
102
-
40
+ jarvis docs sync # resumo: funcionalidades e entregas recentes
41
+ jarvis docs fetch CORE/index.md # conteúdo de um arquivo (exit 2 se não existir)
42
+ jarvis docs publish --file .../consolidation/feature-checkout.md --tipo feature # pelo /eng.spec-consolidate
43
+ jarvis docs publish --file .../consolidation/delivery-2026-10-15-task-123.md --tipo delivery
103
44
  ```
104
- central-docs/
105
- └── core/
106
- ├── index.md
107
- ├── product/
108
- │ └── gestao-de-carteiras/
109
- │ ├── prd-gestao-carteiras.md
110
- │ └── frd-gestao-carteiras-onboarding.md
111
- └── engineering/
112
- └── api-wallet/
113
- ├── ard-api-wallet.md
114
- └── rfc-api-wallet-idempotencia.md
115
- ```
116
-
117
- ## Formato do index.md
118
-
119
- O `index.md` fica na raiz do squad (`{squad}/index.md`) e lista todos os documentos organizados por área e produto:
120
-
121
- ```markdown
122
- # core
123
-
124
- ## product
125
45
 
126
- ### gestao-de-carteiras
127
- - [prd-gestao-carteiras.md](product/gestao-de-carteiras/prd-gestao-carteiras.md) | v1.2.0 | in_progress | jira: WAL-001 | tags: carteiras,onboarding
128
- - [frd-gestao-carteiras-onboarding.md](product/gestao-de-carteiras/frd-gestao-carteiras-onboarding.md) | v1.0.0 | in_review | jira: WAL-123 | tags: onboarding,cadastro
46
+ - **Tipos:** só `feature` (vai para `product/`) e `delivery` (vai para `engineering/`). PRD, ARD e os outros documentos de trabalho são recusados.
47
+ - Quem gera e publica é o [`/eng.spec-consolidate`](../../workflows/engineering/eng.spec-consolidate.md), depois do PR e do seu Sim.
129
48
 
130
- ## engineering
49
+ ## Estrutura e índice
131
50
 
132
- ### api-wallet
133
- - [ard-api-wallet.md](engineering/api-wallet/ard-api-wallet.md) | v2.1 | Finalizada | tags: arquitetura,rest,api
134
- - [rfc-api-wallet-idempotencia.md](engineering/api-wallet/rfc-api-wallet-idempotencia.md) | Accepted | tags: idempotencia,redis
135
51
  ```
136
-
137
- ## Frontmatter Obrigatório
138
-
139
- ### PRD/FRD
140
-
141
- ```yaml
142
- ---
143
- id: PRD-001
144
- name: Gestão de Carteiras
145
- version: 1.2.0
146
- status: in_progress
147
- task_link: https://jira.com/WAL-001
148
- related_repo: api-wallet,wallet-worker
149
- ---
52
+ {SQUAD}/
53
+ ├── index.md # gerado; não editar
54
+ ├── product/{produto}/feature-{slug}.md # funcionalidade: estado atual, completo
55
+ └── engineering/{produto}/delivery-{data}-{key}.md # registro de uma entrega
150
56
  ```
151
57
 
152
- ### ARD/RFC
153
-
154
- ```yaml
155
- ---
156
- Status: Proposta
157
- Data: 2026-03-10
158
- Autor: João Silva
159
- Versão: 1.0
160
- ---
161
- ```
58
+ O índice lista as funcionalidades e as 10 entregas mais recentes de cada produto. Com `.git` e `scripts/build-index.sh` no repositório de documentação, o índice vem do script dele.
162
59
 
163
60
  ## Integração com Workflows
164
61
 
165
- ### /warm-up
166
-
167
- Carrega contexto do produto:
168
-
169
- ```markdown
170
- ✅ Docs sincronizados do central-docs
171
- 📊 5 documentos disponíveis:
172
- - 1 PRD(s)
173
- - 1 FRD(s)
174
- - 2 ARD(s)
175
- - 1 RFC(s)
176
- ```
177
-
178
- ### /eng.start
179
-
180
- Busca docs relacionados ao Jira ID antes de iniciar feature.
181
-
182
- ### /eng.pre-pr
183
-
184
- Detecta docs desatualizados e oferece publicação.
185
-
186
- ## Troubleshooting
187
-
188
- ### Token não encontrado
189
-
190
- ```
191
- ❌ Token GitLab não encontrado no .npmrc
192
- ```
193
-
194
- **Solução:** Adicionar ao `.npmrc`:
195
- ```
196
- //gitlab.com/api/v4/packages/npm/:_authToken=glpat-seu-token
197
- ```
198
-
199
- ### Arquivo não encontrado
200
-
201
- ```
202
- ❌ Arquivo não encontrado no central-docs: core/index.md
203
- ```
204
-
205
- **Solução:** Verificar se o squad existe no central-docs ou criar o `index.md` do squad.
206
-
207
- ### Frontmatter inválido
208
-
209
- ```
210
- ❌ Campos obrigatórios ausentes no frontmatter de ARD:
211
- - Status
212
- - Data
213
- ```
214
-
215
- **Solução:** Adicionar campos obrigatórios ao YAML.
62
+ | Comando | Uso |
63
+ |---|---|
64
+ | `/eng.spec-consolidate` | Gera e publica a funcionalidade e a entrega (e a carga inicial, `--inicial`) |
65
+ | `/jarvis-init` | Liga o Central docs (Passo 5.2) e oferece a carga inicial |
66
+ | `/warm-up`, `/eng.start`, `/prod.spec.*`, `/eng.create-ard`, `/eng.create-rfc`, `/eng.build-tech-spec` | Consultam as funcionalidades já implementadas |
216
67
 
217
68
  ## Arquitetura
218
69
 
219
- ### Componentes
220
-
221
70
  ```
222
71
  bin/
223
72
  ├── commands/
224
- │ ├── docs-sync.js # CLI: jarvis docs sync
225
- │ └── docs-publish.js # CLI: jarvis docs publish
226
- └── lib/
227
- ├── utils/
228
- │ ├── npmrc-parser.js # Extrai token do .npmrc
229
- │ └── git-parser.js # Parseia URL GitLab
230
- ├── vcs/
231
- │ └── api.js # fetchRawFile/createMergeRequest/commitFiles — GitLab/GitHub/Bitbucket
232
- └── docs/
233
- ├── validate-frontmatter.js # Valida YAML
234
- ├── redis-cache.js # Cache best-effort via redis-cli (get/setex/del)
235
- ├── fetch-file.js # Busca via vcs/api.js — CLI: jarvis docs fetch
236
- └── publish-file.js # Publica via vcs/api.js + MR — CLI: jarvis docs publish
73
+ │ ├── docs-sync.js # jarvis docs sync
74
+ │ └── docs-publish.js # jarvis docs publish
75
+ └── lib/docs/
76
+ ├── fetch-file.js # openStorageFromEnv + fetchFile (jarvis docs fetch)
77
+ ├── publish-file.js # tipos (feature, delivery), destino e publicação
78
+ ├── validate-frontmatter.js
79
+ └── storage/
80
+ ├── index.js # getStorage(env): escolhe o adaptador pelo CENTRAL_DOCS_STORAGE
81
+ ├── filesystem.js # pasta + camada git (pull, branch, commit, push, PR)
82
+ └── build-index.js # gera {SQUAD}/index.md a partir do frontmatter
237
83
  ```
238
84
 
239
- ### Fluxo de Publicação
240
-
241
- ```
242
- 1. Validar frontmatter YAML
243
- 2. Extrair metadados (version, status, jira)
244
- 3. Criar branch: docs/{squad}/{area}/{produto}/{tipo}-{feature}
245
- 4. Commit via GitLab API:
246
- - Adicionar arquivo em {squad}/{area}/{produto}/{tipo}-{feature}.md
247
- - Atualizar {squad}/index.md
248
- 5. Criar MR → dev
249
- 6. Retornar URL do MR
250
- ```
85
+ Um adaptador novo (S3, Drive) implementa o mesmo contrato do `filesystem.js` (`fetch`, `list`, `publish`, `buildIndex`) e entra no `storage/index.js`.
251
86
 
252
- ## Variáveis de Ambiente
253
-
254
- | Variável | Obrigatória | Padrão | Descrição |
255
- |----------|-------------|--------|-----------|
256
- | `CENTRAL_DOCS_REPO` | Sim | - | URL do repo GitLab |
257
- | `CENTRAL_DOCS_REF` | Não | `main` | Branch para leitura |
258
- | `CENTRAL_DOCS_TARGET_BRANCH` | Não | `dev` | Branch para MRs |
259
- | `CENTRAL_DOCS_CACHE_TTL` | Não | `3600` | TTL do cache (segundos) |
260
- | `SQUAD` | Sim | - | Squad do usuário |
261
- | `WORKSPACE` | Sim | - | Nome do workspace |
262
-
263
- ## Exemplos Completos
264
-
265
- ### Exemplo 1: Setup Inicial
266
-
267
- ```bash
268
- # 1. Configurar token
269
- echo '//gitlab.com/api/v4/packages/npm/:_authToken=glpat-xxx' >> .npmrc
270
-
271
- # 2. Configurar ENV.md
272
- cat >> .windsurf/ENV.md << EOF
273
- CENTRAL_DOCS_REPO=https://gitlab.com/org/group/central-docs.git
274
- CENTRAL_DOCS_REF=main
275
- CENTRAL_DOCS_TARGET_BRANCH=dev
276
- EOF
277
-
278
- # 3. Sincronizar
279
- jarvis docs sync
280
- ```
281
-
282
- ### Exemplo 2: Publicar ARD
283
-
284
- ```bash
285
- # 1. Criar ARD localmente
286
- cat > docs/engineering/ard-api-wallet-auth.md << EOF
287
- ---
288
- Status: Proposta
289
- Data: 2026-03-10
290
- Autor: João Silva
291
- Versão: 1.0
292
- ---
293
-
294
- # ARD-CORE-API-AUTH — Autenticação JWT
295
-
296
- ...
297
- EOF
298
-
299
- # 2. Publicar
300
- jarvis docs publish \
301
- --file docs/engineering/ard-api-wallet-auth.md \
302
- --tipo ard \
303
- --feature api-wallet-auth
304
-
305
- # 3. Resultado
306
- # ✅ MR criado: docs/core/engineering/api-wallet/ard-api-wallet-auth → dev
307
- # URL: https://gitlab.com/.../merge_requests/42
308
- ```
309
-
310
- ## Referências
87
+ ## Troubleshooting
311
88
 
312
- - [SKILL.md](SKILL.md) - Documentação completa da skill
313
- - [GitLab API Docs](https://docs.gitlab.com/ee/api/) - API do GitLab
89
+ Ver a tabela "Troubleshooting" do `SKILL.md`.