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.
- package/agents/product/prod.discovery-interviewer.md +1 -1
- package/bin/README.md +14 -14
- package/bin/commands/docs-publish.js +50 -92
- package/bin/commands/docs-sync.js +30 -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 +89 -161
- package/bin/lib/docs/storage/build-index.js +87 -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 +14 -4
- package/bin/lib/vcs/api.js +0 -125
- package/package.json +2 -2
- package/rules/AGENTS.md +12 -9
- package/rules/engineering/eng.integrations-rules.md +2 -1
- package/rules/product/prod-rules.md +4 -5
- package/rules-on-demand/product/prod.guided-rules.md +104 -0
- package/skills/jarvis-docs-central/README.md +57 -269
- package/skills/jarvis-docs-central/SKILL.md +126 -296
- package/skills/jarvis-init/SKILL.md +46 -7
- package/templates/ENV-template.md +20 -5
- package/templates/engineering/ARD-template.md +39 -6
- package/templates/engineering/architecture-template.md +1 -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 +2 -2
- package/workflows/engineering/eng.create-ard-from-code.md +9 -11
- package/workflows/engineering/eng.create-ard.md +15 -13
- package/workflows/engineering/eng.create-rfc.md +8 -10
- package/workflows/engineering/eng.pr.md +4 -4
- package/workflows/engineering/eng.pre-pr.md +4 -4
- package/workflows/engineering/eng.rpa.robot.md +4 -2
- package/workflows/engineering/eng.start.md +17 -16
- package/workflows/product/prod.roadmap.preview.md +4 -1
- package/workflows/product/prod.spec.ard.md +7 -3
- package/workflows/product/prod.spec.breakdown.md +7 -3
- 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 +13 -11
- package/workflows/product/prod.spec.frd.md +15 -13
- package/workflows/product/prod.spec.issue.md +5 -1
- package/workflows/product/prod.spec.md +3 -1
- package/workflows/product/prod.spec.prd.md +15 -13
- package/workflows/warm-up.md +3 -3
- package/bin/lib/docs/redis-cache.js +0 -49
- package/bin/lib/vcs/fetch-raw.js +0 -42
|
@@ -1,313 +1,101 @@
|
|
|
1
1
|
# jarvis-docs-central
|
|
2
2
|
|
|
3
|
-
Integração com
|
|
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
|
-
|
|
8
|
-
- **
|
|
9
|
-
- **
|
|
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
|
-
|
|
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
|
+
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
50
|
+
## Estrutura e índice
|
|
85
51
|
|
|
86
52
|
```
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
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
|
-
#
|
|
61
|
+
# CORE
|
|
123
62
|
|
|
124
63
|
## product
|
|
125
64
|
|
|
126
|
-
###
|
|
127
|
-
- [prd-
|
|
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
|
-
|
|
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
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
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 #
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
313
|
-
- [GitLab API Docs](https://docs.gitlab.com/ee/api/) - API do GitLab
|
|
101
|
+
Ver a tabela "Troubleshooting" do `SKILL.md`.
|