jarvis-ai-framework 3.2.0 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/agents/engineering/eng.docs-consolidator.agent.md +81 -0
  2. package/agents/engineering/qa/eng.qa.test-planner.md +7 -7
  3. package/agents/product/prod.discovery-interviewer.md +1 -1
  4. package/bin/README.md +14 -14
  5. package/bin/commands/docs-publish.js +61 -93
  6. package/bin/commands/docs-sync.js +31 -63
  7. package/bin/lib/cli/program.js +23 -25
  8. package/bin/lib/docs/fetch-file.js +29 -26
  9. package/bin/lib/docs/publish-file.js +98 -159
  10. package/bin/lib/docs/storage/build-index.js +108 -0
  11. package/bin/lib/docs/storage/filesystem.js +203 -0
  12. package/bin/lib/docs/storage/index.js +75 -0
  13. package/bin/lib/docs/validate-frontmatter.js +18 -4
  14. package/bin/lib/vcs/api.js +0 -125
  15. package/package.json +2 -2
  16. package/rules/AGENTS.md +12 -9
  17. package/rules/engineering/eng.docs-scraping-rules.md +4 -4
  18. package/rules/engineering/eng.integrations-rules.md +3 -2
  19. package/rules/engineering/rpa/eng.rpa-rules.md +1 -1
  20. package/rules/product/prod-rules.md +5 -6
  21. package/rules-on-demand/engineering/eng.pr-rules.md +9 -31
  22. package/rules-on-demand/engineering/eng.pre-pr-rules.md +12 -19
  23. package/rules-on-demand/product/prod.guided-rules.md +104 -0
  24. package/skills/eng-backend-arch-c4/SKILL.md +3 -3
  25. package/skills/eng-global-docs-write/SKILL.md +1 -1
  26. package/skills/eng-qa-planner/SKILL.md +5 -5
  27. package/skills/jarvis-docs-central/README.md +51 -275
  28. package/skills/jarvis-docs-central/SKILL.md +114 -301
  29. package/skills/jarvis-init/SKILL.md +81 -8
  30. package/templates/ENV-template.md +28 -7
  31. package/templates/engineering/ARD-template.md +40 -7
  32. package/templates/engineering/architecture-template.md +1 -0
  33. package/templates/engineering/central-delivery-template.md +65 -0
  34. package/templates/engineering/central-feature-template.md +86 -0
  35. package/templates/product/prod-breakdown-template.md +20 -2
  36. package/templates/product/prod-discovery-template.md +24 -1
  37. package/templates/product/prod-epic-template.md +32 -1
  38. package/templates/product/prod-frd-template.md +29 -2
  39. package/templates/product/prod-issue-template.md +36 -1
  40. package/templates/product/prod-prd-template.md +33 -2
  41. package/workflows/engineering/eng.build-tech-spec.md +4 -4
  42. package/workflows/engineering/eng.create-ard-from-code.md +15 -41
  43. package/workflows/engineering/eng.create-ard.md +22 -44
  44. package/workflows/engineering/eng.create-rfc.md +10 -36
  45. package/workflows/engineering/eng.pr.md +35 -66
  46. package/workflows/engineering/eng.pre-pr.md +52 -89
  47. package/workflows/engineering/eng.rpa.robot.md +9 -7
  48. package/workflows/engineering/eng.spec-consolidate.md +140 -0
  49. package/workflows/engineering/eng.start.md +23 -22
  50. package/workflows/engineering/eng.work.md +1 -1
  51. package/workflows/engineering/qa/eng.qa-refinement-entry.md +1 -1
  52. package/workflows/engineering/qa/eng.qa-release-signoff.md +3 -3
  53. package/workflows/engineering/qa/eng.qa-sprint-planning.md +2 -2
  54. package/workflows/product/prod.roadmap.preview.md +4 -1
  55. package/workflows/product/prod.spec.ard.md +9 -5
  56. package/workflows/product/prod.spec.breakdown.md +8 -4
  57. package/workflows/product/prod.spec.clarify.md +5 -1
  58. package/workflows/product/prod.spec.discovery.md +7 -3
  59. package/workflows/product/prod.spec.epic.md +12 -40
  60. package/workflows/product/prod.spec.frd.md +13 -39
  61. package/workflows/product/prod.spec.issue.md +5 -1
  62. package/workflows/product/prod.spec.md +3 -1
  63. package/workflows/product/prod.spec.prd.md +13 -40
  64. package/workflows/warm-up.md +10 -12
  65. package/bin/lib/docs/redis-cache.js +0 -49
  66. package/bin/lib/vcs/fetch-raw.js +0 -42
@@ -1,13 +1,13 @@
1
1
  ---
2
2
  name: jarvis-docs-central
3
- description: Integração com repositório centralizado de documentação (GitLab, GitHub ou Bitbucket). Busca e publica PRDs, FRDs, ARDs e RFCs via API do vendor.
3
+ description: Integração com o Central docs, o registro do que foi implementado (um documento completo por funcionalidade e um registro por entrega, gerados pelo /eng.spec-consolidate), guardado por um adaptador de armazenamento (hoje uma pasta do disco, com git opcional). Busca, publica e indexa pelo CLI jarvis docs.
4
4
  argument-hint: "[contexto da tarefa]"
5
5
  allowed-tools: Bash Read Write
6
6
  disable-model-invocation: false
7
7
  license: AGPL-3.0
8
8
  metadata:
9
9
  author: jarvis-team
10
- version: "3.0"
10
+ version: "5.0"
11
11
  area: global
12
12
  ---
13
13
 
@@ -15,274 +15,154 @@ metadata:
15
15
 
16
16
  ## Objetivo
17
17
 
18
- Integrar o framework com o repositório `central-docs` (`CENTRAL_DOCS_REPO`), permitindo:
19
- - Buscar docs relevantes automaticamente durante workflows
20
- - Publicar docs aprovados via MR com git flow seguro
21
- - Sincronização automática em /warm-up
18
+ Integrar os comandos do framework com o **Central docs**: o registro do que **de fato foi implementado** em cada produto do squad, com um índice (`{SQUAD}/index.md`) que os outros comandos consultam.
22
19
 
23
- ## Fonte de Verdade
20
+ **Duas camadas de documentação:**
24
21
 
25
- > **Antes de qualquer operação**, leia `$CENTRAL_DOCS_REPO/AGENTS.md`.
26
- > Ele define o contrato completo do repositório: estrutura, naming, frontmatter e regras de índice.
27
- > Este skill implementa esse contrato — não o duplica.
22
+ | Camada | O que é | Onde fica |
23
+ |---|---|---|
24
+ | Documentos de trabalho | PRD, FRD, épicos, histórias, ARD, RFC, QA, swagger, robôs, C4: o que se pretende e se discute | `docs/jarvis/` (`$PROD_DOCS`, `$ENG_DOCS`), fora do versionamento |
25
+ | **Central docs** | O que foi implementado: um documento **completo e autossuficiente** por funcionalidade (estado atual) e um **registro por entrega** (PR, commits, autores) | Pasta do Central docs (adaptador) |
28
26
 
29
- ## Pré-condição
30
-
31
- Ler do `$IDE/ENV.md`:
32
- - `CENTRAL_DOCS_REPO` — URL do repo (GitLab, GitHub ou Bitbucket; se vazio: encerrar silenciosamente)
33
- - `CENTRAL_DOCS_REF` — branch para leitura (padrão: `main`)
34
- - `VERSION_CONTROL` — fallback se o hostname da URL não identificar o vendor
35
- - `SQUAD` — squad do usuário (formato: ALL-CAPS-COM-HIFEN)
36
- - `WORKSPACE` — nome do workspace em kebab-case
37
- - `AREA` — define quais tipos de doc buscar
27
+ Quem escreve no Central docs é o **`/eng.spec-consolidate`** (agente `eng.docs-consolidator`), logo depois do PR. Os documentos de trabalho nunca são publicados lá.
38
28
 
39
- **Token VCS** (resolvido pelo adapter `bin/lib/utils/npmrc-parser.js` → `getVcsToken`):
40
- - GitLab: `.npmrc` `:_authToken=` ou `GITLAB_TOKEN`
41
- - GitHub: `gh auth token`, `GITHUB_TOKEN` ou `.npmrc` npm.pkg.github.com
42
- - Bitbucket: `BITBUCKET_TOKEN`
29
+ **Modos deste skill:**
30
+ - buscar o que já foi implementado (Modo 1);
31
+ - publicar a consolidação (Modo 2);
32
+ - reparar o índice (Modo 3).
43
33
 
44
- ❌ **NUNCA** colar o token no chat.
34
+ ## Adaptadores de armazenamento
45
35
 
46
- Se `CENTRAL_DOCS_REPO` não estiver definido, encerrar silenciosamente sem erro.
36
+ `CENTRAL_DOCS_STORAGE` escolhe o adaptador e `CENTRAL_DOCS_LOCATION` diz onde ele guarda. Os comandos são sempre os mesmos (`jarvis docs fetch | sync | publish`).
47
37
 
48
- ---
38
+ | `CENTRAL_DOCS_STORAGE` | `CENTRAL_DOCS_LOCATION` | Situação |
39
+ |---|---|---|
40
+ | `filesystem` (**padrão**) | Pasta (relativa à pasta do workspace ou absoluta) | Disponível |
41
+ | *(vazio)* | — | Desligado: os comandos pulam em silêncio; o `/eng.spec-consolidate` orienta ligar |
42
+ | `s3`, `gdrive` | — | Ainda não suportados (#144, #145) |
49
43
 
50
- ## Convenções do central-docs (resumo operacional)
44
+ **Camada git do `filesystem`:** se a pasta tiver `.git` (clone de um repositório de documentação):
45
+ - antes de ler: `git pull --ff-only` em `CENTRAL_DOCS_REF` (se falhar, avisa e lê a cópia local);
46
+ - ao publicar: branch → cópia → índice → commit → push → PR para `CENTRAL_DOCS_TARGET_BRANCH`.
51
47
 
52
- ### Estrutura de pastas
53
-
54
- ```
55
- {SQUAD}/
56
- ├── index.md # GERADO — não editar à mão
57
- ├── product/
58
- │ └── {produto-em-kebab}/
59
- │ ├── prd-{id}-{nome}.md
60
- │ ├── frd-{id}-{nome}.md
61
- │ ├── feat-{id}-{nome}.md
62
- │ ├── epic-{id}-{nome}.md
63
- │ ├── story-{id}-{nome}.md
64
- │ └── task-{id}-{nome}.md
65
- ├── engineering/
66
- │ └── {produto-em-kebab}/
67
- │ ├── ard-{id}-{nome}.md
68
- │ └── rfc-{id}-{nome}.md
69
- └── context/ # opcional — só nasce com conteúdo
70
- ├── CLAUDE.md
71
- └── (pesquisas, dados, assets — formato livre)
72
- ```
73
-
74
- **Squads válidos** (pastas raiz ALL-CAPS): detectados dinamicamente pelo script.
75
- Fonte de verdade: `taxonomy.md` na raiz do repo.
76
-
77
- ### Naming de arquivos
78
-
79
- ```
80
- {tipo}-{id}-{nome-em-kebab}.md
81
- ```
48
+ Sem `.git`, grava direto na pasta.
82
49
 
83
- Exemplos: `prd-001-minha-feature.md`, `ard-001-minha-api.md`, `story-TASK-4-meu-exemplo.md`
50
+ **Onde fica a pasta** (o `/jarvis-init` configura no Passo 5.2): no modo workspace, `./central-docs` (no `.gitignore` do workspace); no projeto único, `docs/jarvis/central-docs` (coberto por `docs/jarvis/` no `.gitignore`). Nunca no versionamento de um repositório de código.
84
51
 
85
- - Tipo sempre **lowercase**: `prd-`, `frd-`, `feat-`, `epic-`, `story-`, `task-`, `ard-`, `rfc-` , `swagger-`
86
- - Pasta de produto: `kebab-case`, um produto = uma pasta
52
+ ## Pré-condição
87
53
 
88
- ### Frontmatter obrigatório
54
+ Ler do `$IDE/ENV.md`:
55
+ - `CENTRAL_DOCS_STORAGE` e `CENTRAL_DOCS_LOCATION` (vazio: encerrar em silêncio)
56
+ - `CENTRAL_DOCS_REF`, `CENTRAL_DOCS_TARGET_BRANCH`, `CENTRAL_DOCS_REVIEWERS` (só com `.git`)
57
+ - `SQUAD` (ALL-CAPS-COM-HIFEN) e `WORKSPACE` (vira a pasta do produto)
89
58
 
90
- | Campo | PRD | FRD/FEAT/STORY | EPIC | TASK | ARD/RFC |
91
- |-------|-----|----------------|------|------|---------|
92
- | `id` | ✓ | ✓ | ✓ | ✓ | ✓ |
93
- | `name` | ✓ | ✓ | ✓ | ✓ | ✓ |
94
- | `version` | ✓ | ✓ | ✓ | ✓ | ✓ |
95
- | `status` | ✓ | ✓ | ✓ | ✓ | ✓ |
96
- | `created` / `updated` | ✓ | ✓ | ✓ | ✓ | ✓ |
97
- | `created_by` / `last_editor` | ✓ | ✓ | ✓ | ✓ | ✓ |
98
- | `related_prd` | – | ✓ | ✓ | – | – |
99
- | `related_epic` | – | – | – | ✓ | – |
59
+ Com `.git`, o PR usa o token do vendor pelo adaptador de VCS (GitLab `.npmrc`; GitHub `gh auth`/`GITHUB_TOKEN`; Bitbucket `BITBUCKET_TOKEN`). ❌ **Nunca** colar token no chat.
100
60
 
101
- **Status válidos:** `draft`, `in_review`, `planejado`, `in_progress`, `in_production`, `icebox`, `deprecated`
61
+ ---
102
62
 
103
- **Campos `related_*`:** sempre apenas o **basename** do arquivo, sem path nem `./`.
104
- ```yaml
105
- # ✅ Certo
106
- related_prd: prd-001-minha-feature.md
63
+ ## Estrutura do Central docs
107
64
 
108
- # ❌ Errado
109
- related_prd: ./prd-001-minha-feature.md
110
- related_prd: ../minha-feature/prd-001-minha-feature.md
111
65
  ```
112
-
113
- ### Índices — regra crítica
114
-
115
- O arquivo `{SQUAD}/index.md` é **gerado pelo script** `scripts/build-index.sh`. **Nunca editar à mão.**
116
-
117
- ```bash
118
- # Sempre rodar após qualquer add/move/remove de spec
119
- bash scripts/build-index.sh
66
+ {SQUAD}/
67
+ ├── index.md # GERADO a cada publicação — não editar à mão
68
+ ├── product/
69
+ │ └── {produto}/ # WORKSPACE do ENV.md (ou --produto)
70
+ │ └── feature-{slug}.md # funcionalidade: estado atual, completo
71
+ └── engineering/
72
+ └── {produto}/
73
+ └── delivery-{AAAA-MM-DD}-{task_key}.md # registro de uma entrega (PR)
120
74
  ```
121
75
 
122
- O script detecta squads dinamicamente (pastas raiz ALL-CAPS) e gera um único `index.md` por squad lendo o frontmatter de todos os specs em `product/` e `engineering/`, e listando o conteúdo de `context/`.
76
+ - Templates: `templates/engineering/central-feature-template.md` (11 seções) e `central-delivery-template.md` (7 seções).
77
+ - `related_docs`/`feature` citam só o **basename**.
123
78
 
124
- O CI (`.gitlab-ci.yml`) **falha** se o `index.md` commitado divergir do que o script geraria.
79
+ ### Frontmatter obrigatório (validado no `publish`)
125
80
 
126
- ---
81
+ | Tipo | Campos |
82
+ |------|--------|
83
+ | `feature` | `id`, `name`, `status`, `product`, `updated_at` |
84
+ | `delivery` | `id`, `feature`, `task_key`, `pr`, `date` |
127
85
 
128
- ## Quando Usar
86
+ Status da funcionalidade: a lista de produto (`icebox`, `in_review`, `backlog`, `in_progress`, `in_production`, `cancelled`, `deprecated`).
129
87
 
130
- - `/warm-up` — carregar contexto do produto (Modo 1; aciona Modo 3 se índice ausente)
131
- - `/eng.start` — buscar PRD/ARD antes de iniciar feature (Modo 1)
132
- - `/eng.create-ard` — buscar PRD relacionado (Modo 1)
133
- - `/eng.pre-pr` — detectar docs desatualizados (Modo 1)
134
- - Publicação de doc aprovado (Modo 2)
135
- - Reparo de índices inconsistentes ou ausentes (Modo 3)
88
+ ### Índice
136
89
 
137
- ---
90
+ O `{SQUAD}/index.md` é **regenerado** a cada publicação, a partir do frontmatter:
91
+ - **`## product`:** as funcionalidades de cada produto (status, nome, data da última atualização);
92
+ - **`## engineering`:** as **10 entregas mais recentes** de cada produto.
138
93
 
139
- ## Fluxo de Trabalho
140
-
141
- ### Modo 1: Buscar Docs (usado em warm-up, eng.start)
142
-
143
- **Passo 1 — Buscar índice do squad**
144
-
145
- ```bash
146
- jarvis docs sync
147
-
148
- # Internamente chama fetchFile() de bin/lib/docs/fetch-file.js, equivalente a:
149
- jarvis docs fetch "${SQUAD}/index.md" "${CENTRAL_DOCS_REF}"
150
- ```
94
+ Arquivos que não são `feature-*`/`delivery-*` ficam **fora** do índice. Exemplo: PRD e ARD publicados inteiros na versão 4.0.0, que podem ser apagados à mão ou transformados em funcionalidades pela carga inicial (`/eng.spec-consolidate --inicial`).
151
95
 
152
- **Passo 1.b — Fallback: navegar árvore (quando index.md não existe)**
96
+ Com `.git` e um `scripts/build-index.sh` no repositório de documentação, o adaptador usa o script dele.
153
97
 
154
- Se `jarvis docs sync` retornar exit code 2 (arquivo não encontrado):
98
+ ```markdown
99
+ # CORE
155
100
 
156
- ```bash
157
- # Fallback: clonar o CENTRAL_DOCS_REPO e listar arquivos locais
158
- # (funciona igual em GitLab, GitHub e Bitbucket)
159
- git ls-tree -r --name-only "${CENTRAL_DOCS_REF}" -- "${SQUAD}/product/${WORKSPACE}" "${SQUAD}/engineering/${WORKSPACE}"
160
- ```
101
+ ## product
161
102
 
162
- **Identificar docs por caminho (naming padrão):**
163
- - `engineering/{produto}/ard-*.md` → ARD
164
- - `engineering/{produto}/rfc-*.md` → RFC
165
- - `product/{produto}/prd-*.md` → PRD
166
- - `product/{produto}/frd-*.md` → FRD
167
- - `product/{produto}/feat-*.md` → FEAT
168
- - `product/{produto}/story-*.md` → STORY
169
- - `context/` → artefatos de contexto (pesquisas, dados, assets)
103
+ > Funcionalidades (estado atual)
170
104
 
171
- **Passo 2 — Identificar docs relevantes**
105
+ ### loja
106
+ - [feature-checkout.md](product/loja/feature-checkout.md) | in_production | Checkout | 2026-10-15
172
107
 
173
- Com base no contexto da tarefa (`TASK_MANAGER_KEY`, tags, descrição):
174
- - Buscar no `index.md` por `TASK_MANAGER_KEY` matching
175
- - Se não encontrar, buscar por tags semânticas
176
- - Filtrar por AREA:
177
- - `PRODUCT` → PRDs e FRDs
178
- - `ENGINEERING` → PRD (contexto) + ARDs + RFCs
108
+ ## engineering
179
109
 
180
- **Passo 3 — Buscar arquivos identificados**
110
+ > Entregas recentes
181
111
 
182
- ```bash
183
- jarvis docs fetch "${SQUAD}/product/${WORKSPACE}/prd-feature.md" "main"
184
- jarvis docs fetch "${SQUAD}/engineering/${WORKSPACE}/ard-feature.md" "main"
112
+ ### loja
113
+ - [delivery-2026-10-15-task-123.md](engineering/loja/delivery-2026-10-15-task-123.md) | TASK-123 | 2026-10-15
185
114
  ```
186
115
 
187
- **Passo 4 — Retornar resultado**
188
-
189
- ```markdown
190
- # Contexto Carregado do Central Docs
191
-
192
- ## Squad: MEU-SQUAD / Produto: meu-produto
116
+ ---
193
117
 
194
- ### PRD-001: Minha Feature (v1.2.0)
195
- [conteúdo do PRD]
118
+ ## Quando Usar
196
119
 
197
- ### ARD-001: Arquitetura da Minha Feature (v1.5)
198
- [conteúdo do ARD]
199
- ```
120
+ - `/warm-up`, `/eng.start`, `/prod.spec.*`, `/eng.create-ard*`, `/eng.create-rfc`, `/eng.build-tech-spec`: conhecer o que **já foi implementado** (Modo 1)
121
+ - `/eng.spec-consolidate`: publicar a consolidação de uma entrega ou a carga inicial (Modo 2)
122
+ - Índice ausente ou divergente (Modo 3)
200
123
 
201
124
  ---
202
125
 
203
- ### Modo 2: Publicar Doc
126
+ ## Fluxo de Trabalho
204
127
 
205
- **Uso:**
128
+ ### Modo 1: Buscar o que foi implementado
206
129
 
207
130
  ```bash
208
- jarvis docs publish \
209
- --file ./docs/engineering/ard-001-minha-feature.md \
210
- --squad MEU-SQUAD \
211
- --produto meu-produto \
212
- --tipo ard
131
+ jarvis docs sync # resumo: funcionalidades e entregas recentes
132
+ jarvis docs fetch {SQUAD}/index.md
133
+ jarvis docs fetch {SQUAD}/product/{produto}/feature-checkout.md
213
134
  ```
214
135
 
215
- **Fluxo interno:**
216
-
217
- 1. Validar frontmatter YAML (campos obrigatórios conforme tabela acima)
218
- 2. Validar naming do arquivo (`{tipo}-{id}-{nome-em-kebab}.md`)
219
- 3. Validar que `related_*` usam apenas basename
220
- 4. Determinar destino: `{SQUAD}/engineering/{produto}/` ou `{SQUAD}/product/{produto}/`
221
- 5. Criar branch `docs/{SQUAD}/{area}/{produto}/{tipo}-{id}-{nome}`
222
- 6. Commit via API do vendor (GitLab / GitHub / Bitbucket) com o doc
223
- 7. Rodar `bash scripts/build-index.sh` localmente no clone e incluir o `{SQUAD}/index.md` atualizado no mesmo commit atômico
224
- 8. Criar MR → main
225
- 9. Retornar URL do MR
136
+ 1. Buscar o índice do squad.
137
+ 2. Identificar as funcionalidades relacionadas à tarefa (nome, produto, card citado no histórico).
138
+ 3. Buscar cada `feature-*` com `jarvis docs fetch` (e um `delivery-*`, se o detalhe de uma entrega importar).
139
+ 4. Devolver o resumo: funcionalidades, status e o que cada uma faz hoje.
226
140
 
227
- **Commit atômico (doc + index):**
141
+ Os documentos de trabalho da tarefa (PRD, FRD, ARD, RFC) **não** estão aqui: leia-os em `$PROD_DOCS`/`$ENG_DOCS`.
228
142
 
229
- ```
230
- actions:
231
- - { action: "create_or_update", file_path: "{SQUAD}/engineering/{produto}/ard-001-feature.md", content: "..." }
232
- - { action: "create_or_update", file_path: "{SQUAD}/index.md", content: "..." }
233
- ```
234
-
235
- > Usar `POST /repository/commits` com array `actions`.
236
- > O `index.md` é o output de `build-index.sh` — nunca construído manualmente.
143
+ ### Modo 2: Publicar a consolidação
237
144
 
238
- **Output:**
145
+ Feito pelo `/eng.spec-consolidate`, depois do **Sim** do usuário:
239
146
 
240
- ```
241
- ✅ MR criado: docs/MEU-SQUAD/engineering/meu-produto/ard-001-minha-feature → main
242
- URL: {url do MR/PR retornada pelo adapter}
147
+ ```bash
148
+ jarvis docs publish --file .../consolidation/delivery-2026-10-15-task-123.md --tipo delivery
149
+ jarvis docs publish --file .../consolidation/feature-checkout.md --tipo feature
243
150
  ```
244
151
 
245
- ---
246
-
247
- ### Modo 3: Reparar Índices
248
-
249
- > Detecta `{SQUAD}/index.md` ausente ou divergente e abre MR de reparo.
250
-
251
- **Quando ativar:**
252
-
253
- - Durante Modo 1, se o fallback de árvore encontrar docs que não aparecem no `index.md`
254
- - Durante warm-up, se `index.md` não existir
255
- - Quando o usuário pedir explicitamente
152
+ - Tipos aceitos: **`feature`** e **`delivery`**.
153
+ - `prd`, `frd`, `ard`, `rfc` e os outros documentos de trabalho são recusados com a explicação.
154
+ - `--produto` troca o `WORKSPACE`.
256
155
 
257
156
  **Fluxo:**
157
+ 1. Validar o frontmatter.
158
+ 2. Calcular o destino.
159
+ 3. Sem `.git`: copiar e regenerar o índice.
160
+ 4. Com `.git`: branch, cópia, índice, commit, push e PR.
258
161
 
259
- ```
260
- 1. Clonar ou usar clone local de central-docs
261
- 2. Rodar: bash scripts/build-index.sh
262
- 3. Comparar output com os index.md commitados (git diff)
263
- 4. Se há divergência:
264
- a. Criar branch: repair/index-{SQUAD}-{timestamp}
265
- b. Commitar os index.md atualizados
266
- c. Abrir MR → main
267
- 5. Reportar ao usuário
268
- ```
269
-
270
- > O `build-index.sh` detecta squads dinamicamente — não é necessário listar squads manualmente.
162
+ ### Modo 3: Reparar o índice
271
163
 
272
- **Output ao usuário:**
273
-
274
- ```
275
- 🔍 Verificando índices do central-docs (MEU-SQUAD)...
276
-
277
- ⚠️ MEU-SQUAD/index.md divergente — 3 docs ausentes no índice
278
-
279
- 📋 Abrindo MR de reparo...
280
- Branch: repair/index-MEU-SQUAD-20260510
281
- Arquivo: MEU-SQUAD/index.md
282
-
283
- ✅ MR aberto:
284
- URL: {CENTRAL_DOCS_REPO}/-/merge_requests/44
285
- ```
164
+ - **Sem `.git`:** a próxima publicação regenera o índice.
165
+ - **Com `.git`:** no clone, rodar `bash scripts/build-index.sh` (se existir) e abrir um PR `repair/index-{SQUAD}-{data}`.
286
166
 
287
167
  ### Skills invocados durante a execução do skill
288
168
 
@@ -296,97 +176,30 @@ URL: {url do MR/PR retornada pelo adapter}
296
176
 
297
177
  ### Nunca
298
178
 
299
- - Publicar doc sem validar frontmatter
300
- - Push direto para main (sempre via MR)
301
- - Buscar docs se `CENTRAL_DOCS_REPO` vazio (encerrar silenciosamente)
302
- - Inventar metadados (version, status, id)
303
- - Editar `{SQUAD}/index.md` manualmente — sempre via `build-index.sh`
304
- - Usar path em campos `related_*` — sempre basename apenas
305
- - Usar squad em minúsculas (ex: `core`) — sempre ALL-CAPS-COM-HIFEN: `MEU-SQUAD`
306
- - Criar subpastas `engineering/index.md` ou `product/index.md` (não existem neste repo)
179
+ - Publicar documento de trabalho (PRD, FRD, ARD, RFC…) no Central docs
180
+ - Publicar sem o Sim do usuário (Modo 2 é sempre pelo `/eng.spec-consolidate`)
181
+ - Editar `{SQUAD}/index.md` à mão
182
+ - Push direto para a branch base quando a pasta tem `.git` (sempre por PR)
183
+ - Inventar metadados; incluir e-mails, tokens ou valores de variáveis
184
+ - Colocar o Central docs no versionamento de um repositório de código
307
185
 
308
186
  ### Sempre
309
187
 
310
- - Ler `$CENTRAL_DOCS_REPO/AGENTS.md` antes de operar
311
- - Usar GitLab API (não `git archive` ou `git clone` desnecessário)
312
- - Invalidar cache local (`redis-cli`) ao publicar, se o comando existir
313
- - Seguir git flow (branch → MR → main)
314
- - Extrair token do `.npmrc` automaticamente
315
- - Validar naming do arquivo antes de publicar
316
- - Incluir `{SQUAD}/index.md` (gerado por `build-index.sh`) em todo commit de publicação
188
+ - Ler e publicar só pelo CLI (`jarvis docs fetch | sync | publish`)
189
+ - Se o Central docs tiver `AGENTS.md` na raiz, lê-lo antes de operar
190
+ - Usar `SQUAD` em ALL-CAPS-COM-HIFEN
317
191
 
318
192
  ---
319
193
 
320
194
  ## Troubleshooting
321
195
 
322
- ### Erro: Token VCS não encontrado
323
-
324
- GitLab: `.npmrc` `:_authToken=` ou `GITLAB_TOKEN`.
325
- GitHub: `gh auth login` ou `GITHUB_TOKEN`.
326
- Bitbucket: `BITBUCKET_TOKEN`.
327
-
328
- ### Erro: index.md não encontrado (Modo 1)
329
-
330
- ```
331
- ❌ Arquivo não encontrado: MEU-SQUAD/index.md
332
- ```
333
-
334
- **Causa:** Squad ainda sem docs publicados. Índice só existe após o primeiro `publish`.
335
-
336
- **Solução:** Publicar ao menos um doc via `jarvis docs publish`. O MR já incluirá o `index.md`.
337
-
338
- ### Erro: Frontmatter inválido
339
-
340
- ```
341
- ❌ Campos obrigatórios ausentes: name, version, created_by
342
- ```
343
-
344
- **Solução:** Adicionar campos conforme tabela de frontmatter obrigatório acima.
345
-
346
- ### Erro: Naming inválido
347
-
348
- ```
349
- ❌ Nome do arquivo não segue o padrão: {tipo}-{id}-{nome-em-kebab}.md
350
- Recebido: ARD-001-MinhaFeature.md
351
- Esperado: ard-001-minha-feature.md
352
- ```
353
-
354
- **Solução:** Renomear o arquivo seguindo o padrão lowercase com hífens.
355
-
356
- ### CI falha com "Índices stale"
357
-
358
- ```
359
- ❌ Índices stale. Rode 'bash scripts/build-index.sh' localmente,
360
- commita o resultado e empurre de novo.
361
- ```
362
-
363
- **Solução:** O `{SQUAD}/index.md` no commit diverge do que o script geraria. Sempre incluir o output de `build-index.sh` no mesmo commit do doc.
364
-
365
- ---
366
-
367
- ## Integração com Workflows
368
-
369
- ### /warm-up
370
-
371
- ```markdown
372
- Se CENTRAL_DOCS_REPO configurado:
373
- 1. jarvis docs sync
374
- 2. Exibir resumo de docs disponíveis do squad/produto
375
- ```
376
-
377
- ### /eng.start
378
-
379
- ```markdown
380
- Se CENTRAL_DOCS_REPO definido:
381
- - Buscar docs relacionados ao `TASK_MANAGER_KEY` no index.md do squad
382
- - Carregar PRD + ARDs relevantes antes de criar architecture.md
383
- ```
384
-
385
- ### /eng.pre-pr
386
-
387
- ```markdown
388
- 1. Detectar mudanças arquiteturais no diff
389
- 2. Verificar se ARD local existe e está atualizado vs central-docs
390
- 3. Se desatualizado ou novo: perguntar "Publicar no central-docs?"
391
- 4. Se sim: jarvis docs publish
392
- ```
196
+ | Mensagem | Causa | O que fazer |
197
+ |---|---|---|
198
+ | `Central docs desligado (CENTRAL_DOCS_STORAGE vazio)` | Desligado no ENV | `/jarvis-init` → Passo 5.2 |
199
+ | `… não é mais usado. Rode o /jarvis-init e escolha Upgrade (C)` | `ENV.md` da versão anterior | `/jarvis-init` → Upgrade (C) |
200
+ | `Armazenamento "s3" ainda não suportado` | Valor de `STORAGE` sem adaptador | Use `filesystem` |
201
+ | `Pasta do Central docs não encontrada` | `LOCATION` errado ou pasta não criada | Criar a pasta ou ajustar `LOCATION` |
202
+ | `Arquivo não encontrado no Central docs: {SQUAD}/index.md` | Squad sem consolidação ainda | `/eng.spec-consolidate --inicial` ou consolidar a próxima entrega |
203
+ | `O Central docs guarda só o que foi implementado` | Tentativa de publicar PRD/ARD/… | Gere a consolidação com `/eng.spec-consolidate` |
204
+ | `Campos obrigatórios ausentes` | Frontmatter incompleto | Completar conforme a tabela |
205
+ | `git pull`/`push` falhou (com `.git`) | Rede, permissão ou pasta suja | `git status` na pasta; o commit local fica para repetir |