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.
- package/agents/engineering/eng.docs-consolidator.agent.md +81 -0
- package/agents/engineering/qa/eng.qa.test-planner.md +7 -7
- package/agents/product/prod.discovery-interviewer.md +1 -1
- package/bin/README.md +14 -14
- package/bin/commands/docs-publish.js +61 -93
- package/bin/commands/docs-sync.js +31 -63
- package/bin/lib/cli/program.js +23 -25
- package/bin/lib/docs/fetch-file.js +29 -26
- package/bin/lib/docs/publish-file.js +98 -159
- package/bin/lib/docs/storage/build-index.js +108 -0
- package/bin/lib/docs/storage/filesystem.js +203 -0
- package/bin/lib/docs/storage/index.js +75 -0
- package/bin/lib/docs/validate-frontmatter.js +18 -4
- package/bin/lib/vcs/api.js +0 -125
- package/package.json +2 -2
- package/rules/AGENTS.md +12 -9
- package/rules/engineering/eng.docs-scraping-rules.md +4 -4
- package/rules/engineering/eng.integrations-rules.md +3 -2
- package/rules/engineering/rpa/eng.rpa-rules.md +1 -1
- package/rules/product/prod-rules.md +5 -6
- package/rules-on-demand/engineering/eng.pr-rules.md +9 -31
- package/rules-on-demand/engineering/eng.pre-pr-rules.md +12 -19
- package/rules-on-demand/product/prod.guided-rules.md +104 -0
- package/skills/eng-backend-arch-c4/SKILL.md +3 -3
- package/skills/eng-global-docs-write/SKILL.md +1 -1
- package/skills/eng-qa-planner/SKILL.md +5 -5
- package/skills/jarvis-docs-central/README.md +51 -275
- package/skills/jarvis-docs-central/SKILL.md +114 -301
- package/skills/jarvis-init/SKILL.md +81 -8
- package/templates/ENV-template.md +28 -7
- package/templates/engineering/ARD-template.md +40 -7
- package/templates/engineering/architecture-template.md +1 -0
- package/templates/engineering/central-delivery-template.md +65 -0
- package/templates/engineering/central-feature-template.md +86 -0
- package/templates/product/prod-breakdown-template.md +20 -2
- package/templates/product/prod-discovery-template.md +24 -1
- package/templates/product/prod-epic-template.md +32 -1
- package/templates/product/prod-frd-template.md +29 -2
- package/templates/product/prod-issue-template.md +36 -1
- package/templates/product/prod-prd-template.md +33 -2
- package/workflows/engineering/eng.build-tech-spec.md +4 -4
- package/workflows/engineering/eng.create-ard-from-code.md +15 -41
- package/workflows/engineering/eng.create-ard.md +22 -44
- package/workflows/engineering/eng.create-rfc.md +10 -36
- package/workflows/engineering/eng.pr.md +35 -66
- package/workflows/engineering/eng.pre-pr.md +52 -89
- package/workflows/engineering/eng.rpa.robot.md +9 -7
- package/workflows/engineering/eng.spec-consolidate.md +140 -0
- package/workflows/engineering/eng.start.md +23 -22
- package/workflows/engineering/eng.work.md +1 -1
- package/workflows/engineering/qa/eng.qa-refinement-entry.md +1 -1
- package/workflows/engineering/qa/eng.qa-release-signoff.md +3 -3
- package/workflows/engineering/qa/eng.qa-sprint-planning.md +2 -2
- package/workflows/product/prod.roadmap.preview.md +4 -1
- package/workflows/product/prod.spec.ard.md +9 -5
- package/workflows/product/prod.spec.breakdown.md +8 -4
- package/workflows/product/prod.spec.clarify.md +5 -1
- package/workflows/product/prod.spec.discovery.md +7 -3
- package/workflows/product/prod.spec.epic.md +12 -40
- package/workflows/product/prod.spec.frd.md +13 -39
- package/workflows/product/prod.spec.issue.md +5 -1
- package/workflows/product/prod.spec.md +3 -1
- package/workflows/product/prod.spec.prd.md +13 -40
- package/workflows/warm-up.md +10 -12
- package/bin/lib/docs/redis-cache.js +0 -49
- 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
|
-
- ✅
|
|
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
|
|
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
|
-
- [ ]
|
|
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
|
-
##
|
|
329
|
+
## Sessão e publicação
|
|
329
330
|
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
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
|
|
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
|
|
75
|
+
git diff {BRANCH_BASE}...HEAD
|
|
72
76
|
```
|
|
73
77
|
|
|
74
78
|
### Evidências Obrigatórias
|
|
75
79
|
|
|
76
|
-
|
|
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.
|
|
93
|
-
- 🟢
|
|
94
|
-
|
|
95
|
-
|
|
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**: `$
|
|
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 $
|
|
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: $
|
|
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
|
-
-
|
|
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**: `$
|
|
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 `$
|
|
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 `$
|
|
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
|
-
| `$
|
|
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: $
|
|
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
|
|
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
|
-
|
|
8
|
-
- **
|
|
9
|
-
- **
|
|
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
|
-
|
|
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
|
-
|
|
15
|
-
2. **ENV.md** com variáveis do central-docs
|
|
13
|
+
## Configuração
|
|
16
14
|
|
|
17
|
-
|
|
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
|
-
|
|
25
|
-
|
|
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=
|
|
28
|
-
|
|
29
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
49
|
-
jarvis docs sync --verbose
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
### Publicar Documento
|
|
37
|
+
## Comandos
|
|
53
38
|
|
|
54
39
|
```bash
|
|
55
|
-
#
|
|
56
|
-
jarvis docs
|
|
57
|
-
|
|
58
|
-
|
|
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
|
-
|
|
127
|
-
- [
|
|
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
|
-
##
|
|
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
|
-
|
|
138
|
-
|
|
139
|
-
|
|
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
|
-
|
|
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
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
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 #
|
|
225
|
-
│ └── docs-publish.js #
|
|
226
|
-
└── lib/
|
|
227
|
-
├──
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
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
|
-
|
|
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
|
-
##
|
|
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
|
-
|
|
313
|
-
- [GitLab API Docs](https://docs.gitlab.com/ee/api/) - API do GitLab
|
|
89
|
+
Ver a tabela "Troubleshooting" do `SKILL.md`.
|