jarvis-ai-framework 3.2.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/agents/product/prod.discovery-interviewer.md +1 -1
  2. package/bin/README.md +14 -14
  3. package/bin/commands/docs-publish.js +50 -92
  4. package/bin/commands/docs-sync.js +30 -63
  5. package/bin/lib/cli/program.js +23 -25
  6. package/bin/lib/docs/fetch-file.js +29 -26
  7. package/bin/lib/docs/publish-file.js +89 -161
  8. package/bin/lib/docs/storage/build-index.js +87 -0
  9. package/bin/lib/docs/storage/filesystem.js +203 -0
  10. package/bin/lib/docs/storage/index.js +75 -0
  11. package/bin/lib/docs/validate-frontmatter.js +14 -4
  12. package/bin/lib/vcs/api.js +0 -125
  13. package/package.json +2 -2
  14. package/rules/AGENTS.md +12 -9
  15. package/rules/engineering/eng.integrations-rules.md +2 -1
  16. package/rules/product/prod-rules.md +4 -5
  17. package/rules-on-demand/product/prod.guided-rules.md +104 -0
  18. package/skills/jarvis-docs-central/README.md +57 -269
  19. package/skills/jarvis-docs-central/SKILL.md +126 -296
  20. package/skills/jarvis-init/SKILL.md +46 -7
  21. package/templates/ENV-template.md +20 -5
  22. package/templates/engineering/ARD-template.md +39 -6
  23. package/templates/engineering/architecture-template.md +1 -0
  24. package/templates/product/prod-breakdown-template.md +20 -2
  25. package/templates/product/prod-discovery-template.md +24 -1
  26. package/templates/product/prod-epic-template.md +32 -1
  27. package/templates/product/prod-frd-template.md +29 -2
  28. package/templates/product/prod-issue-template.md +36 -1
  29. package/templates/product/prod-prd-template.md +33 -2
  30. package/workflows/engineering/eng.build-tech-spec.md +2 -2
  31. package/workflows/engineering/eng.create-ard-from-code.md +9 -11
  32. package/workflows/engineering/eng.create-ard.md +15 -13
  33. package/workflows/engineering/eng.create-rfc.md +8 -10
  34. package/workflows/engineering/eng.pr.md +4 -4
  35. package/workflows/engineering/eng.pre-pr.md +4 -4
  36. package/workflows/engineering/eng.rpa.robot.md +4 -2
  37. package/workflows/engineering/eng.start.md +17 -16
  38. package/workflows/product/prod.roadmap.preview.md +4 -1
  39. package/workflows/product/prod.spec.ard.md +7 -3
  40. package/workflows/product/prod.spec.breakdown.md +7 -3
  41. package/workflows/product/prod.spec.clarify.md +5 -1
  42. package/workflows/product/prod.spec.discovery.md +7 -3
  43. package/workflows/product/prod.spec.epic.md +13 -11
  44. package/workflows/product/prod.spec.frd.md +15 -13
  45. package/workflows/product/prod.spec.issue.md +5 -1
  46. package/workflows/product/prod.spec.md +3 -1
  47. package/workflows/product/prod.spec.prd.md +15 -13
  48. package/workflows/warm-up.md +3 -3
  49. package/bin/lib/docs/redis-cache.js +0 -49
  50. package/bin/lib/vcs/fetch-raw.js +0 -42
@@ -1,313 +1,101 @@
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**: a documentação aprovada (PRD, FRD, épicos, histórias, ARD, RFC) de todos os produtos do squad, com um índice que os outros comandos consultam.
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** documentos (`jarvis docs sync`, `jarvis docs fetch`)
8
+ - **Publicar** documentos aprovados (`jarvis docs publish`)
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
+ Pelo `/jarvis-init` (pergunta "Onde fica a documentação central?": pasta local, repositório git ou não usar), ou à 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
40
+ jarvis docs sync # resumo do índice do squad
41
+ jarvis docs fetch CORE/index.md # conteúdo de um arquivo (exit 2 se não existir)
42
+ jarvis docs publish --file ./docs/product/prd-001-checkout.md --tipo prd
43
+ jarvis docs publish --file ./ard-001-x.md --tipo ard --produto outro-produto
44
+ jarvis docs publish --file ./openapi.yaml --tipo swagger --feature api-wallet
80
45
  ```
81
46
 
82
- **Tipos válidos:** `prd`, `frd`, `ard`, `rfc`, `swagger`
47
+ - **Tipos:** `prd, frd, feat, epic, story, task` (vão para `product/`) e `ard, rfc, swagger, qa-report` (vão para `engineering/`).
48
+ - **Nome no Central docs:** o do arquivo local, quando ele segue `{tipo}-{id}-{nome}`. Se não seguir, use `--feature {slug}`.
83
49
 
84
- ## Estrutura do Repositório Central
50
+ ## Estrutura e índice
85
51
 
86
52
  ```
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)
53
+ {SQUAD}/
54
+ ├── index.md # gerado; não editar
55
+ ├── product/{produto}/ # prd-, frd-, feat-, epic-, story-, task-
56
+ ├── engineering/{produto}/ # ard-, rfc-, swagger-, qa-report-
57
+ └── context/ # opcional
99
58
  ```
100
59
 
101
- **Exemplos reais:**
102
-
103
- ```
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
60
  ```markdown
122
- # core
61
+ # CORE
123
62
 
124
63
  ## product
125
64
 
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
129
-
130
- ## engineering
131
-
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
- ```
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
- ---
65
+ ### loja
66
+ - [prd-001-checkout.md](product/loja/prd-001-checkout.md) | v1.0.0 | backlog | Checkout
150
67
  ```
151
68
 
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
- ```
69
+ Com `.git` e `scripts/build-index.sh` no repositório de documentação, o índice vem do script dele.
162
70
 
163
71
  ## Integração com Workflows
164
72
 
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.
73
+ | Comando | Uso |
74
+ |---|---|
75
+ | `/warm-up` | `jarvis docs sync` (se `CENTRAL_DOCS_STORAGE` estiver configurado) |
76
+ | `/eng.start`, `/eng.create-ard`, `/eng.create-rfc`, `/eng.build-tech-spec` | Buscar PRD, ARD e RFC relacionados |
77
+ | `/prod.spec.*` | Buscar specs existentes e publicar a aprovada |
78
+ | `/eng.pre-pr` | Oferecer a publicação de um ARD novo ou atualizado |
216
79
 
217
80
  ## Arquitetura
218
81
 
219
- ### Componentes
220
-
221
82
  ```
222
83
  bin/
223
84
  ├── 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
237
- ```
238
-
239
- ### Fluxo de Publicação
240
-
85
+ │ ├── docs-sync.js # jarvis docs sync
86
+ │ └── docs-publish.js # jarvis docs publish
87
+ └── lib/docs/
88
+ ├── fetch-file.js # openStorageFromEnv + fetchFile (jarvis docs fetch)
89
+ ├── publish-file.js # tipos, destino e publicação
90
+ ├── validate-frontmatter.js
91
+ └── storage/
92
+ ├── index.js # getStorage(env): escolhe o adaptador pelo CENTRAL_DOCS_STORAGE
93
+ ├── filesystem.js # pasta + camada git (pull, branch, commit, push, PR)
94
+ └── build-index.js # gera {SQUAD}/index.md a partir do frontmatter
241
95
  ```
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
- ```
251
-
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
96
 
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
- ```
97
+ Um adaptador novo (S3, Drive) implementa o mesmo contrato do `filesystem.js` (`fetch`, `list`, `publish`, `buildIndex`) e entra no `storage/index.js`.
281
98
 
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
99
+ ## Troubleshooting
311
100
 
312
- - [SKILL.md](SKILL.md) - Documentação completa da skill
313
- - [GitLab API Docs](https://docs.gitlab.com/ee/api/) - API do GitLab
101
+ Ver a tabela "Troubleshooting" do `SKILL.md`.