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
|
@@ -195,12 +195,12 @@ Identificar qual IDE o usuário está utilizando:
|
|
|
195
195
|
3. Ler `HUB` do ENV.md existente
|
|
196
196
|
4. Se `HUB≠DATA`: excluir do diff todas as chaves `DATA_*` — não propor adicioná-las
|
|
197
197
|
5. Calcular diff: chaves no template que **não existem** no ENV.md atual (respeitando exclusão de DATA_* para não-DATA)
|
|
198
|
-
|
|
198
|
+
6. Se não houver diff:
|
|
199
199
|
```
|
|
200
200
|
✅ ENV.md já está atualizado. Nenhuma variável nova encontrada.
|
|
201
201
|
```
|
|
202
202
|
Oferecer o **passo 9 (adicionar as stacks)**, que a pessoa pode pular, e então encerrar.
|
|
203
|
-
|
|
203
|
+
7. Se houver diff, exibir prévia:
|
|
204
204
|
```
|
|
205
205
|
🔍 Variáveis novas encontradas no template:
|
|
206
206
|
+ NOVA_VAR_1=
|
|
@@ -208,18 +208,24 @@ Identificar qual IDE o usuário está utilizando:
|
|
|
208
208
|
|
|
209
209
|
Serão adicionadas ao final do ENV.md sem alterar os valores existentes.
|
|
210
210
|
```
|
|
211
|
-
|
|
211
|
+
8. **Exceção — documentos nos caminhos antigos:** procure documentos de trabalho em `$DOCS_FOLDER/product`, `$DOCS_FOLDER/engineering/{ARD,RFC,qa,swagger,openapi,robots,c4}` e `docs/engineering/{robots,swagger,openapi,c4}`.
|
|
212
|
+
- Se houver, liste o que encontrou e pergunte com `AskUserQuestion` se move para `docs/jarvis/…` (`$PROD_DOCS` e `$ENG_DOCS/…`). Use `git mv` quando o arquivo for versionado e `mv` quando não for, e garanta `docs/jarvis/` no `.gitignore`.
|
|
213
|
+
- **Sem confirmação, não mova nada:** grave `PROD_DOCS`/`ENG_DOCS` apontando para os caminhos antigos.
|
|
214
|
+
- Depois, ofereça a carga inicial do Central docs (Passo 5.3).
|
|
215
|
+
9. **Exceção — Central docs antigo:** se o `ENV.md` tiver `CENTRAL_DOCS_REPO` preenchido e não tiver `CENTRAL_DOCS_STORAGE`, propor a migração (só com confirmação): `CENTRAL_DOCS_STORAGE=filesystem`, `CENTRAL_DOCS_LOCATION` com o padrão do modo de trabalho (Passo 4, "Central docs") e `git clone {CENTRAL_DOCS_REPO} {LOCATION}`. Depois, comentar a linha antiga (`# CENTRAL_DOCS_REPO=… (migrado em YYYY-MM-DD)`) e `CENTRAL_DOCS_CACHE_TTL`. Sem confirmação, não mexe e avisa que os comandos de docs vão pedir o Upgrade.
|
|
216
|
+
10. **Exceção — `PROD_MODE`:** se `PROD_MODE` estiver entre as chaves novas, faça a mesma pergunta do Passo 3 (Pergunta 8 — modo de condução) e grave a resposta no lugar do valor vazio. As demais chaves continuam sem pergunta.
|
|
217
|
+
11. Appender as novas variáveis ao final do `ENV.md` com comentário de data:
|
|
212
218
|
```
|
|
213
219
|
# --- Upgrade YYYY-MM-DD ---
|
|
214
220
|
NOVA_VAR_1=
|
|
215
221
|
NOVA_VAR_2=valor-padrão
|
|
216
222
|
```
|
|
217
|
-
|
|
223
|
+
12. Confirmar:
|
|
218
224
|
```
|
|
219
225
|
✅ ENV.md atualizado! N variável(is) nova(s) adicionada(s).
|
|
220
226
|
⚠️ Preencha os valores em branco antes de usar os novos recursos.
|
|
221
227
|
```
|
|
222
|
-
|
|
228
|
+
13. Oferecer o **passo 9 (adicionar as stacks)**, que a pessoa pode pular, e então encerrar (não continuar para o fluxo de onboarding completo).
|
|
223
229
|
|
|
224
230
|
**⚠️ OBRIGATÓRIO - Criação do ENV.md**:
|
|
225
231
|
|
|
@@ -261,6 +267,7 @@ Fluxo correto:
|
|
|
261
267
|
- **IDE** (7 opções) → mostrar em texto numerado
|
|
262
268
|
- **SQUAD** (do taxonomy) → mostrar em texto numerado
|
|
263
269
|
- **POSITION** (do taxonomy) → mostrar em texto numerado
|
|
270
|
+
- **PROD_MODE** (2 opções: product-led, developer-guided) → AskUserQuestion, sempre perguntado e sem opção sugerida
|
|
264
271
|
|
|
265
272
|
```
|
|
266
273
|
// Exemplo 1: HUB (5 opções) - MOSTRAR EM TEXTO
|
|
@@ -401,6 +408,15 @@ Pergunta 7 (opções fixas - POSITION do taxonomy - texto se >4):
|
|
|
401
408
|
|
|
402
409
|
*[Mostrar TODAS as opções de POSITION do taxonomy.md e aguardar]*
|
|
403
410
|
|
|
411
|
+
```
|
|
412
|
+
Pergunta 8 (opções fixas - 2 opções - usar AskUserQuestion) — PROD_MODE:
|
|
413
|
+
Como você quer que os comandos de produto (prod.*) e o eng.create-ard conduzam a conversa?
|
|
414
|
+
- Product-Led: para PMs. Fluxo direto, com os termos de PM, sem explicações extras.
|
|
415
|
+
- Developer-Guided: para devs e futuros PMs. Uma pergunta por vez, explicando cada termo e etapa enquanto você faz.
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
*[Perguntar **sempre**, para qualquer `AREA` e qualquer `POSITION` (inclusive `GENERALIST` e PM). **Não** marcar nenhuma opção como recomendada nem sugerir padrão por área ou cargo. Gravar `PROD_MODE=product-led` ou `PROD_MODE=developer-guided`.]*
|
|
419
|
+
|
|
404
420
|
**Regras de Implementação:**
|
|
405
421
|
- **Opções fixas com ≤4 opções** → usar AskUserQuestion
|
|
406
422
|
- **Opções fixas com >4 opções** (HUB com DATA, IDE, SQUAD, POSITION) → mostrar em texto numerado
|
|
@@ -424,6 +440,7 @@ Pergunta 7 (opções fixas - POSITION do taxonomy - texto se >4):
|
|
|
424
440
|
| `MAX_AI_EXECUTION_PERCENTAGE` | Limite de execução da AI | Número entre 60 e 100 |
|
|
425
441
|
| `USER` | Identidade do usuário (email ou nome) | ENV.md → git `user.email` → usuário do SO. Sem login |
|
|
426
442
|
| `POSITION` | Cargo do usuário | Deve estar em `taxonomy.md` → Positions. Autonomia ponta a ponta em qualquer cargo |
|
|
443
|
+
| `PROD_MODE` | Modo de condução dos comandos de produto e do `eng.create-ard` | `product-led` ou `developer-guided`. Sempre perguntado, sem opção sugerida (Pergunta 8) |
|
|
427
444
|
|
|
428
445
|
> **💡 Nota**:
|
|
429
446
|
> - As opções para SQUAD, HUB, AREA e POSITION são definidas em `taxonomy.md` e podem ser customizadas por organização.
|
|
@@ -560,6 +577,8 @@ Token NÃO vai no ENV.md:
|
|
|
560
577
|
Nunca grave TOKEN_VERSION_CONTROL (chave removida do template).
|
|
561
578
|
```
|
|
562
579
|
|
|
580
|
+
**Central docs:** não é perguntado aqui. Ele é ligado por padrão e configurado no **Passo 5.2**, que roda sempre.
|
|
581
|
+
|
|
563
582
|
#### Variáveis Opcionais (alinhar ao `templates/ENV-template.md`)
|
|
564
583
|
|
|
565
584
|
| Variável | Valor Padrão | Descrição |
|
|
@@ -585,7 +604,9 @@ Nunca grave TOKEN_VERSION_CONTROL (chave removida do template).
|
|
|
585
604
|
| `TEST_FOLDER` | *(vazio)* | Pasta de testes |
|
|
586
605
|
| `QA_SIGNOFF_BRANCHES` / `QA_SIGNOFF_MAX_AGE` | `main,release/*` / `24` | Sign-off QA |
|
|
587
606
|
| `JARVIS_PROJECT` | `https://github.com/phelipperibeiro/jarvis-framework` | Repo do framework (`/jarvis-report-issue`) |
|
|
588
|
-
| `
|
|
607
|
+
| `CENTRAL_DOCS_STORAGE` / `_LOCATION` | `filesystem` / pasta padrão do modo de trabalho | Central docs (o que foi implementado), configurado no Passo 5.2; vazio = desligado |
|
|
608
|
+
| `JARVIS_DOCS` / `ENG_DOCS` | `$DOCS_FOLDER/jarvis` / `$JARVIS_DOCS/engineering` | Documentos de trabalho (não perguntar; `docs/jarvis/` no `.gitignore`) |
|
|
609
|
+
| `CENTRAL_DOCS_REF` / `_TARGET_BRANCH` / `_REVIEWERS` | `main` / `main` / *(vazio)* | Só quando a pasta do Central docs tem `.git` |
|
|
589
610
|
| `SESSIONS_DIR` | `.jarvis/sessions` | Não perguntar — gravar fixo |
|
|
590
611
|
| `RTK_ENABLED` | `false` (ou true se detectar `rtk`) | Token Killer |
|
|
591
612
|
| `ADVISOR_MODELS` | `"Sonnet 5.5,Opus 5.5,Opus 5,Fable 5.1"` | Advisor do `eng.start` — não perguntar, gravar o padrão |
|
|
@@ -649,8 +670,51 @@ cat templates/ENV-template.md
|
|
|
649
670
|
mkdir -p .jarvis/sessions/eng .jarvis/sessions/prod .jarvis/sessions/qa
|
|
650
671
|
# Garantir .jarvis/ no .gitignore do workspace
|
|
651
672
|
grep -qxF '.jarvis/' .gitignore 2>/dev/null || echo '.jarvis/' >> .gitignore
|
|
673
|
+
|
|
674
|
+
# 8. Documentos de trabalho em docs/jarvis/ — nos DOIS modos de trabalho:
|
|
675
|
+
# JARVIS_DOCS=$DOCS_FOLDER/jarvis, PROD_DOCS=$JARVIS_DOCS/product, ENG_DOCS=$JARVIS_DOCS/engineering
|
|
676
|
+
# (valores do template) e docs/jarvis/ fora do versionamento (uma docs/ já existente não é tocada):
|
|
677
|
+
grep -qxF 'docs/jarvis/' .gitignore 2>/dev/null || echo 'docs/jarvis/' >> .gitignore
|
|
678
|
+
```
|
|
679
|
+
|
|
680
|
+
### 5.2 Central docs (sempre)
|
|
681
|
+
|
|
682
|
+
O Central docs é **ligado por padrão**: é onde fica o registro do que **foi implementado**, gerado pelo `/eng.spec-consolidate` depois de cada PR. Explique em uma frase ao usuário:
|
|
683
|
+
|
|
684
|
+
```
|
|
685
|
+
📚 Central docs: o registro do que foi implementado (um documento completo por funcionalidade
|
|
686
|
+
e um por entrega), consultado pela IA e por outros squads. Os rascunhos (PRD, FRD, ARD, RFC)
|
|
687
|
+
ficam em docs/jarvis/ e não vão para lá.
|
|
652
688
|
```
|
|
653
689
|
|
|
690
|
+
Pergunte com `AskUserQuestion`:
|
|
691
|
+
- **"Onde fica o Central docs?"**
|
|
692
|
+
- A) Pasta local (padrão)
|
|
693
|
+
- B) Repositório de documentação (git)
|
|
694
|
+
- C) Desligar
|
|
695
|
+
|
|
696
|
+
**A ou B:**
|
|
697
|
+
- `CENTRAL_DOCS_STORAGE=filesystem`.
|
|
698
|
+
- `CENTRAL_DOCS_LOCATION` com o padrão do **modo de trabalho** (a pessoa pode digitar outro caminho):
|
|
699
|
+
- **modo workspace** (2+ subpastas com `.git`): `./central-docs`, com `central-docs/` no `.gitignore` do workspace;
|
|
700
|
+
- **projeto único** (só a raiz tem `.git`): `docs/jarvis/central-docs`, já coberto por `docs/jarvis/` no `.gitignore`.
|
|
701
|
+
- **A:** `mkdir -p {LOCATION}` e criar `{LOCATION}/AGENTS.md` mínimo, explicando:
|
|
702
|
+
- a estrutura `{SQUAD}/product/{produto}/feature-*.md` e `{SQUAD}/engineering/{produto}/delivery-*.md`;
|
|
703
|
+
- que o `{SQUAD}/index.md` é gerado pelo `jarvis docs publish`.
|
|
704
|
+
- **B:** pedir a URL e rodar `git clone {URL} {LOCATION}`. Se `{LOCATION}` já existir com `.git`, só usar. Perguntar `CENTRAL_DOCS_TARGET_BRANCH` (padrão `main`).
|
|
705
|
+
|
|
706
|
+
**C:** `CENTRAL_DOCS_STORAGE=` vazio. O `/eng.spec-consolidate` fica indisponível até ligar.
|
|
707
|
+
|
|
708
|
+
Nunca coloque o Central docs no versionamento de um repositório de código.
|
|
709
|
+
|
|
710
|
+
### 5.3 Carga inicial do Central docs (se houver documentos)
|
|
711
|
+
|
|
712
|
+
Com o Central docs ligado:
|
|
713
|
+
1. Procure PRD, FRD, ARD e RFC em `$PROD_DOCS`, `$ENG_DOCS/{ARD,RFC}` (e nos caminhos antigos, se não foram movidos).
|
|
714
|
+
2. Se encontrar algum, mostre a contagem e pergunte com `AskUserQuestion` (**Sim / Não**): **"Gerar o Central docs agora a partir desses documentos?"**
|
|
715
|
+
3. Com **Sim**, chame `/eng.spec-consolidate --inicial`. Ele agrupa os documentos por funcionalidade, gera um `feature-*.md` por grupo (sem registro de entrega, porque não há PR) e só publica depois da revisão e do seu Sim.
|
|
716
|
+
4. Com **Não**, siga. Dá para rodar o `/eng.spec-consolidate --inicial` depois.
|
|
717
|
+
|
|
654
718
|
**⚠️ REGRA CRÍTICA — Bloco DATA:**
|
|
655
719
|
|
|
656
720
|
```javascript
|
|
@@ -694,6 +758,8 @@ FLOWS_FOLDER={commands|workflows}
|
|
|
694
758
|
TEMPLATES_FOLDER=templates
|
|
695
759
|
RULES_FOLDER=.$IDE/rules
|
|
696
760
|
SESSIONS_DIR=.jarvis/sessions
|
|
761
|
+
JARVIS_DOCS=$DOCS_FOLDER/jarvis
|
|
762
|
+
ENG_DOCS=$JARVIS_DOCS/engineering
|
|
697
763
|
PROD_FOLDER_NAME=product
|
|
698
764
|
PROD_RULES=...
|
|
699
765
|
PROD_FLOWS=...
|
|
@@ -721,11 +787,13 @@ RULES_FOLDER=.$IDE/rules
|
|
|
721
787
|
SESSIONS_DIR=.jarvis/sessions
|
|
722
788
|
ENABLE_CDD=true
|
|
723
789
|
|
|
790
|
+
JARVIS_DOCS=$DOCS_FOLDER/jarvis
|
|
791
|
+
ENG_DOCS=$JARVIS_DOCS/engineering
|
|
724
792
|
PROD_FOLDER_NAME=product
|
|
725
793
|
PROD_RULES=$RULES_FOLDER/$PROD_FOLDER_NAME
|
|
726
794
|
PROD_FLOWS=.$IDE/$FLOWS_FOLDER
|
|
727
795
|
PROD_TEMPLATES=.$IDE/$TEMPLATES_FOLDER/$PROD_FOLDER_NAME
|
|
728
|
-
PROD_DOCS=$
|
|
796
|
+
PROD_DOCS=$JARVIS_DOCS/$PROD_FOLDER_NAME
|
|
729
797
|
```
|
|
730
798
|
|
|
731
799
|
**⚠️ IMPORTANTE - FLOWS_FOLDER por IDE:**
|
|
@@ -1070,6 +1138,7 @@ Apresentar checklist de onboarding por período (Dia 1, Semana 1, Mês 1).
|
|
|
1070
1138
|
|
|
1071
1139
|
| Passo | Skill | Condição |
|
|
1072
1140
|
|-------|-------|----------|
|
|
1141
|
+
| Passo 5.3 — Carga inicial do Central docs | `/eng.spec-consolidate --inicial` | Se o Central docs estiver ligado, houver PRD/FRD/ARD/RFC e o usuário responder Sim (também no Upgrade, depois da migração) |
|
|
1073
1142
|
| Passo 9 — Adicionar as stacks (opcional) | `/jarvis-create-specialization {área} {stack}` | Se a pessoa escolher criar um skill novo para uma stack que ainda não tem especialização instalada (uma stack por vez; pular o passo não chama nada) |
|
|
1074
1143
|
|
|
1075
1144
|
---
|
|
@@ -1234,7 +1303,10 @@ Pergunta 6: Qual o limite de execução da AI? (60-100)
|
|
|
1234
1303
|
Pergunta 7: Qual seu cargo?
|
|
1235
1304
|
[mostrar opções em texto numerado]
|
|
1236
1305
|
|
|
1237
|
-
Pergunta 8
|
|
1306
|
+
Pergunta 8: Modo dos comandos de produto?
|
|
1307
|
+
[AskUserQuestion: Product-Led | Developer-Guided, sem opção sugerida]
|
|
1308
|
+
|
|
1309
|
+
Pergunta 9 (opcional): Usa task manager? jira/linear/github/asana ou Nenhum (freelance)
|
|
1238
1310
|
```
|
|
1239
1311
|
|
|
1240
1312
|
**Agente**: *(cria ENV.md + `.jarvis/sessions/{eng,prod,qa}`, valida Context7, cria AGENTS.md e confirma)*
|
|
@@ -1281,6 +1353,7 @@ Bem-vindo! 🎉
|
|
|
1281
1353
|
- [ ] **Perguntou UMA variável POR VEZ** (nunca fez múltiplas perguntas juntas)
|
|
1282
1354
|
- [ ] **Usou AskUserQuestion só para ≤4 opções** (AREA se aplicável — HUB com DATA vai em texto)
|
|
1283
1355
|
- [ ] **Mostrou em texto numerado para >4 opções** (HUB, IDE, SQUAD, POSITION)
|
|
1356
|
+
- [ ] **Perguntou o `PROD_MODE`** (Product-Led ou Developer-Guided), sem opção sugerida, qualquer que seja a área ou o cargo
|
|
1284
1357
|
- [ ] **Mostrou TODAS as opções disponíveis** (HUB inclui DATA; nunca omitiu)
|
|
1285
1358
|
- [ ] **Incluiu descrição útil em cada opção** (seja AskUserQuestion ou texto)
|
|
1286
1359
|
- [ ] **Validou respostas em texto contra lista de opções válidas**
|
|
@@ -57,12 +57,25 @@ RULES_FOLDER=.$IDE/rules
|
|
|
57
57
|
# Cookie/HTTP session (auth) NÃO é esta pasta.
|
|
58
58
|
SESSIONS_DIR=.jarvis/sessions
|
|
59
59
|
|
|
60
|
+
# Documentos de trabalho gerados pelos comandos (PRD, FRD, épicos, ARD, RFC, QA, swagger,
|
|
61
|
+
# robôs, C4…): sempre em $DOCS_FOLDER/jarvis/, nos dois modos de trabalho, com docs/jarvis/
|
|
62
|
+
# no .gitignore (o /jarvis-init garante). O que foi implementado vai para o Central docs.
|
|
63
|
+
JARVIS_DOCS=$DOCS_FOLDER/jarvis
|
|
64
|
+
# Engenharia: ARD/, RFC/, qa/, swagger/, openapi/, robots/, c4/
|
|
65
|
+
ENG_DOCS=$JARVIS_DOCS/engineering
|
|
66
|
+
|
|
60
67
|
# Pastas de produto (derivadas das de cima — em geral não precisa mexer)
|
|
61
68
|
PROD_FOLDER_NAME=product
|
|
62
69
|
PROD_RULES=$RULES_FOLDER/$PROD_FOLDER_NAME
|
|
63
70
|
PROD_FLOWS=.$IDE/$FLOWS_FOLDER
|
|
64
71
|
PROD_TEMPLATES=.$IDE/$TEMPLATES_FOLDER/$PROD_FOLDER_NAME
|
|
65
|
-
PROD_DOCS=$
|
|
72
|
+
PROD_DOCS=$JARVIS_DOCS/$PROD_FOLDER_NAME
|
|
73
|
+
|
|
74
|
+
# Modo de condução dos comandos de produto (prod.*) e do eng.create-ard.
|
|
75
|
+
# product-led = para PMs: fluxo direto, sem explicações extras (padrão se vazio)
|
|
76
|
+
# developer-guided = para devs e futuros PMs: uma pergunta por vez, explica cada termo e etapa
|
|
77
|
+
# Perguntado sempre pelo /jarvis-init. Para trocar, rode o /jarvis-init ou edite aqui.
|
|
78
|
+
PROD_MODE=
|
|
66
79
|
|
|
67
80
|
|
|
68
81
|
# --- Especializações por área -------------------------------------------------
|
|
@@ -197,12 +210,20 @@ QA_SIGNOFF_MAX_AGE=24
|
|
|
197
210
|
JARVIS_PROJECT=https://github.com/phelipperibeiro/jarvis-framework
|
|
198
211
|
|
|
199
212
|
|
|
200
|
-
# --- Central docs
|
|
201
|
-
#
|
|
202
|
-
|
|
213
|
+
# --- Central docs -------------------------------------------------------------
|
|
214
|
+
# O registro do que FOI IMPLEMENTADO: um documento completo por funcionalidade e um registro
|
|
215
|
+
# por entrega, gerados pelo /eng.spec-consolidate depois de cada PR. Ligado por padrão.
|
|
216
|
+
# Nunca dentro do versionamento de um repositório de código.
|
|
217
|
+
# CENTRAL_DOCS_STORAGE: filesystem (s3 e gdrive virão nas issues #144 e #145); vazio = desligado
|
|
218
|
+
# CENTRAL_DOCS_LOCATION: pasta do Central docs, relativa à pasta do workspace ou absoluta.
|
|
219
|
+
# Padrão do /jarvis-init: ./central-docs (modo workspace, no .gitignore do workspace)
|
|
220
|
+
# ou docs/jarvis/central-docs (projeto único, coberto por docs/jarvis/ no .gitignore).
|
|
221
|
+
# Se a pasta for um clone de um repositório de documentação (tem .git): git pull antes
|
|
222
|
+
# de ler e branch + commit + push + PR ao publicar. Sem .git: grava direto na pasta.
|
|
223
|
+
CENTRAL_DOCS_STORAGE=filesystem
|
|
224
|
+
CENTRAL_DOCS_LOCATION=./central-docs
|
|
225
|
+
# Só quando a pasta tem .git: branch lida no pull e branch base dos PRs.
|
|
203
226
|
CENTRAL_DOCS_REF=main
|
|
204
227
|
CENTRAL_DOCS_TARGET_BRANCH=main
|
|
205
|
-
# Revisores padrão dos
|
|
228
|
+
# Revisores padrão dos PRs (separados por vírgula; vão na descrição).
|
|
206
229
|
CENTRAL_DOCS_REVIEWERS=
|
|
207
|
-
# TTL do cache opcional (redis-cli, se existir). 3600 = 1 hora.
|
|
208
|
-
CENTRAL_DOCS_CACHE_TTL=3600
|
|
@@ -1,17 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
# Modelo de IA recomendado para trabalhar neste documento. Se a sessão estiver em outro,
|
|
3
|
+
# o comando avisa e segue (você decide se troca). Opções: opus | sonnet | haiku
|
|
4
|
+
recommended_model: opus
|
|
5
|
+
|
|
6
|
+
# Identificador único do ARD, em sequência (ex.: ARD-001). Vai no nome do arquivo.
|
|
7
|
+
id: [ARD-xxx]
|
|
8
|
+
|
|
9
|
+
# Título da arquitetura. Vai no título e, em kebab-case, no nome do arquivo.
|
|
10
|
+
name: [Título da Arquitetura]
|
|
11
|
+
|
|
12
|
+
# Versão do documento (X.Y.Z). Atualize a cada alteração.
|
|
13
|
+
version: [1.0.0]
|
|
14
|
+
|
|
15
|
+
# Em que ponto este ARD está no ciclo de vida.
|
|
16
|
+
# Opções: proposed | in_progress | in_review | approved
|
|
17
|
+
# proposed = proposta, ainda em discussão | in_progress = arquitetura em desenvolvimento
|
|
18
|
+
# in_review = em validação com os revisores | approved = finalizada e aprovada
|
|
19
|
+
status: [um dos valores acima]
|
|
20
|
+
|
|
21
|
+
# Documentos relacionados: RFC (proposta técnica), FRD (requisitos funcionais), PRD (requisitos de produto).
|
|
22
|
+
related: [RFC-xxx, FRD-xxx, PRD-xxx]
|
|
23
|
+
|
|
24
|
+
# Data de criação (YYYY-MM-DD).
|
|
25
|
+
created_at: [YYYY-MM-DD]
|
|
26
|
+
|
|
27
|
+
# Data da última alteração (YYYY-MM-DD).
|
|
28
|
+
updated_at: [YYYY-MM-DD]
|
|
29
|
+
|
|
30
|
+
# Quem criou o documento (Tech Lead ou arquiteto responsável).
|
|
31
|
+
created_by: [nome]
|
|
32
|
+
|
|
33
|
+
# Quem editou o documento por último.
|
|
34
|
+
last_editor: [nome]
|
|
35
|
+
---
|
|
36
|
+
|
|
1
37
|
# 🧱 ARD Template — Architecture Requirement Document
|
|
2
38
|
|
|
3
|
-
**Arquivo:** /
|
|
39
|
+
**Arquivo:** $ENG_DOCS/ARD/ARD-xxx-nome-da-arquitetura.md
|
|
4
40
|
|
|
5
41
|
---
|
|
6
42
|
|
|
7
43
|
## 🏗️ ARD-[número] — [Título da Arquitetura]
|
|
8
44
|
|
|
9
|
-
**
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
**Revisores:** [Chapter Leads, Eng. de Plataforma, etc.]
|
|
13
|
-
**Relacionado a:** [RFC-xxx], [FRD-xxx], [PRD-xxx]
|
|
14
|
-
**Versão:** [1.0]
|
|
45
|
+
**Revisores:** [Chapter Leads, Eng. de Plataforma, etc.]
|
|
46
|
+
|
|
47
|
+
> Status, versão, datas, autor e documentos relacionados ficam no frontmatter (topo do arquivo).
|
|
15
48
|
|
|
16
49
|
---
|
|
17
50
|
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
> **Criado em:** {DATA}
|
|
7
7
|
> **Issue:** {JIRA_ISSUE_KEY}
|
|
8
|
+
> **Branch base:** {main | dev | outra — perguntada no eng.start; destino do PR no eng.pr}
|
|
8
9
|
> **Status:** 🔄 Em Revisão | ✅ Aprovado | ❌ Rejeitado
|
|
9
10
|
> **Advisor:** {modelo escolhido no início do eng.start} | não utilizado
|
|
10
11
|
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
---
|
|
2
|
+
# Modelo de IA recomendado para trabalhar neste documento. Se a sessão estiver em outro,
|
|
3
|
+
# o comando avisa e segue (você decide se troca). Opções: opus | sonnet | haiku
|
|
4
|
+
recommended_model: opus
|
|
5
|
+
|
|
6
|
+
# Identificador da entrega. Padrão: DEL-{AAAA-MM-DD}-{task_key}
|
|
7
|
+
id: {DEL-AAAA-MM-DD-task_key}
|
|
8
|
+
|
|
9
|
+
# Documento da funcionalidade que esta entrega atualizou (basename).
|
|
10
|
+
feature: {feature-slug.md}
|
|
11
|
+
|
|
12
|
+
# Card ou número de controle da tarefa (TASK_MANAGER do ENV.md; freelance = número de controle).
|
|
13
|
+
task_key: {TASK-123}
|
|
14
|
+
|
|
15
|
+
# URL do card no task manager (padrão da eng.integrations-rules.md). Vazio no modo freelance.
|
|
16
|
+
card_url: {URL}
|
|
17
|
+
|
|
18
|
+
# Pull/Merge Request: número e URL (VERSION_CONTROL / remote origin).
|
|
19
|
+
pr: {#n URL}
|
|
20
|
+
|
|
21
|
+
# Branch de trabalho e branch base (Branch base: do architecture.md).
|
|
22
|
+
branch: {branch}
|
|
23
|
+
base: {main | dev | outra}
|
|
24
|
+
|
|
25
|
+
# Data da consolidação (YYYY-MM-DD).
|
|
26
|
+
date: {YYYY-MM-DD}
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
# Entrega {task_key}: {título}
|
|
30
|
+
|
|
31
|
+
> Registro **autossuficiente** do que esta entrega fez. O estado atual da funcionalidade fica em [{feature-slug.md}](../../product/{produto}/{feature-slug.md}).
|
|
32
|
+
|
|
33
|
+
## 1. O que a entrega fez
|
|
34
|
+
|
|
35
|
+
{Resumo completo em linguagem de produto e de engenharia: o que passou a existir ou mudou.}
|
|
36
|
+
|
|
37
|
+
## 2. Decisões tomadas
|
|
38
|
+
|
|
39
|
+
| Questão | Decisão | Por quê |
|
|
40
|
+
|---|---|---|
|
|
41
|
+
| {das Questões em Aberto do architecture.md e das decisões do card} | {…} | {…} |
|
|
42
|
+
|
|
43
|
+
## 3. Commits
|
|
44
|
+
|
|
45
|
+
| Commit | Autor | Data | Mensagem |
|
|
46
|
+
|---|---|---|---|
|
|
47
|
+
| `{hash curto}` | {nome (sem e-mail)} | {AAAA-MM-DD} | {mensagem} |
|
|
48
|
+
|
|
49
|
+
## 4. Arquivos alterados
|
|
50
|
+
|
|
51
|
+
{Resumo do `git diff --stat {base}...HEAD`, agrupado por área (código, testes, docs, config).}
|
|
52
|
+
|
|
53
|
+
## 5. Fora do escopo e follow-ups
|
|
54
|
+
|
|
55
|
+
{O que ficou para depois, com card quando existir.}
|
|
56
|
+
|
|
57
|
+
## 6. Testes e validação
|
|
58
|
+
|
|
59
|
+
{Comandos rodados e resultados; testes manuais; o que ficou para validar.}
|
|
60
|
+
|
|
61
|
+
## 7. Referências
|
|
62
|
+
|
|
63
|
+
- Card: [{TASK_KEY}]({URL})
|
|
64
|
+
- PR/MR: [#{n}]({URL})
|
|
65
|
+
- Documentos de trabalho de origem (referência): {basenames}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
---
|
|
2
|
+
# Modelo de IA recomendado para trabalhar neste documento. Se a sessão estiver em outro,
|
|
3
|
+
# o comando avisa e segue (você decide se troca). Opções: opus | sonnet | haiku
|
|
4
|
+
recommended_model: opus
|
|
5
|
+
|
|
6
|
+
# Identificador da funcionalidade no Central docs (estável; não muda entre entregas). Ex.: FEAT-checkout
|
|
7
|
+
id: {FEAT-slug}
|
|
8
|
+
|
|
9
|
+
# Nome da funcionalidade, como as pessoas a chamam. Vai no título.
|
|
10
|
+
name: {Nome da funcionalidade}
|
|
11
|
+
|
|
12
|
+
# Em que ponto a funcionalidade está (lista em rules/product/prod-rules.md).
|
|
13
|
+
# Opções: icebox | in_review | backlog | in_progress | in_production | cancelled | deprecated
|
|
14
|
+
# in_progress = parte entregue, ainda em evolução | in_production = em produção
|
|
15
|
+
# deprecated = esteve em produção e foi descontinuada
|
|
16
|
+
status: {um dos valores acima}
|
|
17
|
+
|
|
18
|
+
# Produto (pasta do Central docs): o WORKSPACE do ENV.md, ou o informado no comando.
|
|
19
|
+
product: {produto}
|
|
20
|
+
|
|
21
|
+
# Data da última consolidação (YYYY-MM-DD).
|
|
22
|
+
updated_at: {YYYY-MM-DD}
|
|
23
|
+
|
|
24
|
+
# Registro da última entrega consolidada (nome do arquivo delivery-*.md). Vazio na carga inicial.
|
|
25
|
+
last_delivery: {delivery-AAAA-MM-DD-task_key.md}
|
|
26
|
+
|
|
27
|
+
# Documentos de trabalho de origem, só como referência (basename). O entendimento NÃO depende deles.
|
|
28
|
+
related_docs: {prd-001-nome.md, frd-001-nome.md, ARD-001-nome.md, RFC-001-nome.md}
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
# {Nome da funcionalidade}
|
|
32
|
+
|
|
33
|
+
> Documento **autossuficiente**: descreve o que está implementado hoje. Se os documentos de origem (PRD, FRD, ARD, RFC) se perderem, este documento basta. Escrito para humanos e para IAs: frases completas, termos definidos, nada implícito.
|
|
34
|
+
|
|
35
|
+
## 1. Visão geral
|
|
36
|
+
|
|
37
|
+
{O problema que a funcionalidade resolve, para quem, e o valor entregue. 3 a 6 frases.}
|
|
38
|
+
|
|
39
|
+
## 2. Comportamento atual
|
|
40
|
+
|
|
41
|
+
{O que o sistema faz hoje, regra por regra, fluxo por fluxo. Use listas "Quando X, o sistema Y". Inclua os estados de erro e os casos de borda tratados. Critérios de aceite cumpridos.}
|
|
42
|
+
|
|
43
|
+
## 3. Requisitos não funcionais atendidos
|
|
44
|
+
|
|
45
|
+
| Requisito | Como foi atendido | Evidência |
|
|
46
|
+
|---|---|---|
|
|
47
|
+
| {desempenho, segurança, acessibilidade, limites…} | {…} | {teste, medição, arquivo} |
|
|
48
|
+
|
|
49
|
+
## 4. Arquitetura e decisões
|
|
50
|
+
|
|
51
|
+
{Componentes envolvidos e como conversam. Cada decisão relevante com o porquê e as alternativas descartadas (ex.: vindas do ARD, do RFC e das questões do architecture.md).}
|
|
52
|
+
|
|
53
|
+
## 5. Onde está no código
|
|
54
|
+
|
|
55
|
+
| Parte | Caminho | O que faz |
|
|
56
|
+
|---|---|---|
|
|
57
|
+
| {módulo, endpoint, comando, job} | `{caminho/arquivo}` | {…} |
|
|
58
|
+
|
|
59
|
+
## 6. Configuração e dependências
|
|
60
|
+
|
|
61
|
+
{Variáveis de ambiente (só nomes, nunca valores), flags, serviços externos, migrações, permissões.}
|
|
62
|
+
|
|
63
|
+
## 7. O que mudou em relação ao especificado
|
|
64
|
+
|
|
65
|
+
{Diferenças entre o que os documentos de trabalho pediam e o que foi implementado, e por quê. "Nenhuma" se não houver.}
|
|
66
|
+
|
|
67
|
+
## 8. Fora do escopo e limitações conhecidas
|
|
68
|
+
|
|
69
|
+
{O que a funcionalidade não faz (de propósito ou por limitação), com o motivo. Follow-ups abertos, com card.}
|
|
70
|
+
|
|
71
|
+
## 9. Testes e evidências
|
|
72
|
+
|
|
73
|
+
{Como a funcionalidade é verificada: suítes, cenários cobertos, testes manuais. Onde ficam.}
|
|
74
|
+
|
|
75
|
+
## 10. Histórico de entregas
|
|
76
|
+
|
|
77
|
+
| Data | Card | PR/MR | Autores | Resumo | Registro |
|
|
78
|
+
|---|---|---|---|---|---|
|
|
79
|
+
| {AAAA-MM-DD} | [{TASK_KEY}]({URL do card}) | [#{n}]({URL do PR/MR}) | {nomes} | {1 frase} | [delivery-…](../../engineering/{produto}/delivery-….md) |
|
|
80
|
+
|
|
81
|
+
## 11. Glossário e referências
|
|
82
|
+
|
|
83
|
+
- **{Termo}:** {definição}
|
|
84
|
+
- Cards: {TASK_KEY com URL}
|
|
85
|
+
- PRs/MRs: {números com URL}
|
|
86
|
+
- Documentos de origem (referência): {basenames}
|
|
@@ -1,8 +1,26 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
2
|
+
# Modelo de IA recomendado para trabalhar neste documento. Se a sessão estiver em outro,
|
|
3
|
+
# o comando avisa e segue (você decide se troca). Opções: opus | sonnet | haiku
|
|
4
|
+
recommended_model: opus
|
|
5
|
+
|
|
6
|
+
# Nome do breakdown (o mesmo do PRD ou FRD que está sendo fatiado).
|
|
7
|
+
name: [Name from PRD]
|
|
8
|
+
|
|
9
|
+
# Time (squad) responsável pela entrega.
|
|
3
10
|
team: [Team Name]
|
|
11
|
+
|
|
12
|
+
# Em que ponto este documento está no ciclo de vida (lista em rules/product/prod-rules.md).
|
|
13
|
+
# Opções: icebox | in_review | backlog | in_progress | in_production | cancelled | deprecated
|
|
14
|
+
# icebox = ideia aguardando priorização | in_review = sendo estudado ou revisado | backlog = definido, aguardando implementação
|
|
15
|
+
# in_progress = em desenvolvimento | in_production = em produção
|
|
16
|
+
# cancelled = cancelado antes de ser entregue | deprecated = esteve em produção e foi descontinuado
|
|
17
|
+
status: [um dos valores acima]
|
|
18
|
+
|
|
19
|
+
# Data de criação (YYYY-MM-DD).
|
|
4
20
|
created_at: [YYYY-MM-DD]
|
|
5
|
-
|
|
21
|
+
|
|
22
|
+
# Data da última alteração (YYYY-MM-DD).
|
|
23
|
+
updated_at: [YYYY-MM-DD]
|
|
6
24
|
---
|
|
7
25
|
|
|
8
26
|
## Resumo do plano detalhado (breakdown)
|
|
@@ -1,11 +1,34 @@
|
|
|
1
1
|
---
|
|
2
|
+
# Modelo de IA recomendado para trabalhar neste documento. Se a sessão estiver em outro,
|
|
3
|
+
# o comando avisa e segue (você decide se troca). Opções: opus | sonnet | haiku
|
|
4
|
+
recommended_model: opus
|
|
5
|
+
|
|
6
|
+
# Identificador único, em sequência (ex.: discovery-001). Vai no nome do arquivo e nos campos related_* de outros documentos.
|
|
2
7
|
id: {discovery-001}
|
|
8
|
+
|
|
9
|
+
# Nome curto do documento. Vai no título e, em kebab-case, no nome do arquivo.
|
|
3
10
|
name: {nome dessa ideia}
|
|
4
|
-
|
|
11
|
+
|
|
12
|
+
# Situação do rascunho. O discovery tem ciclo próprio (rules/product/prod-rules.md).
|
|
13
|
+
# Opções: in_review | cancelled
|
|
14
|
+
# in_review = rascunho em andamento ou concluído | cancelled = o veredito foi do_not_proceed
|
|
15
|
+
status: {in_review | cancelled}
|
|
16
|
+
|
|
17
|
+
# Recomendação do discovery: vale seguir com essa ideia? Fica vazio durante a entrevista.
|
|
18
|
+
# Opções: proceed | investigate_more | do_not_proceed
|
|
19
|
+
# proceed = vale especificar | investigate_more = há lacuna crítica | do_not_proceed = não seguir (status passa a cancelled)
|
|
5
20
|
verdict: {vazio durante a entrevista | proceed | investigate_more | do_not_proceed}
|
|
21
|
+
|
|
22
|
+
# Data de criação (YYYY-MM-DD).
|
|
6
23
|
created_at: {YYYY-MM-DD}
|
|
24
|
+
|
|
25
|
+
# Data da última alteração (YYYY-MM-DD).
|
|
7
26
|
updated_at: {YYYY-MM-DD}
|
|
27
|
+
|
|
28
|
+
# Quem criou o documento.
|
|
8
29
|
created_by: {nome de quem criou esse doc}
|
|
30
|
+
|
|
31
|
+
# Quem editou o documento por último.
|
|
9
32
|
last_editor: {nome de quem editou por último}
|
|
10
33
|
---
|
|
11
34
|
|
|
@@ -1,15 +1,46 @@
|
|
|
1
1
|
---
|
|
2
|
+
# Modelo de IA recomendado para trabalhar neste documento. Se a sessão estiver em outro,
|
|
3
|
+
# o comando avisa e segue (você decide se troca). Opções: opus | sonnet | haiku
|
|
4
|
+
recommended_model: opus
|
|
5
|
+
|
|
6
|
+
# Identificador único, em sequência (ex.: EPIC-001). Vai no nome do arquivo e nos campos related_* de outros documentos.
|
|
2
7
|
id: {EPIC-001}
|
|
8
|
+
|
|
9
|
+
# Nome curto do documento. Vai no título e, em kebab-case, no nome do arquivo.
|
|
3
10
|
name: {nome desse épico}
|
|
11
|
+
|
|
12
|
+
# Versão do documento (X.Y.Z). Atualize a cada alteração.
|
|
4
13
|
version: {X.Y.Z - atualizar sempre que houver alteração}
|
|
5
|
-
|
|
14
|
+
|
|
15
|
+
# Em que ponto este documento está no ciclo de vida (lista em rules/product/prod-rules.md).
|
|
16
|
+
# Opções: icebox | in_review | backlog | in_progress | in_production | cancelled | deprecated
|
|
17
|
+
# icebox = ideia aguardando priorização | in_review = sendo estudado ou revisado | backlog = definido, aguardando implementação
|
|
18
|
+
# in_progress = em desenvolvimento | in_production = em produção
|
|
19
|
+
# cancelled = cancelado antes de ser entregue | deprecated = esteve em produção e foi descontinuado
|
|
20
|
+
status: {um dos valores acima}
|
|
21
|
+
|
|
22
|
+
# Link do card no task manager do projeto (TASK_MANAGER no ENV.md). Remova a linha se não houver.
|
|
6
23
|
task_link: {URL referêncial no $TASK_MANAGER - se existir. Se não, ignore essa linha}
|
|
24
|
+
|
|
25
|
+
# PRD relacionado (Product Requirements Document: o problema e o que vamos construir).
|
|
7
26
|
related_prd: {path PRD relacionado, exemplo /master-docs/product/prd-001.md}
|
|
27
|
+
|
|
28
|
+
# FRD relacionado (Functional Requirements Document: o comportamento detalhado de uma funcionalidade).
|
|
8
29
|
related_frd: {path FRD relacionado, exemplo /master-docs/product/frds/frd-001.md}
|
|
30
|
+
|
|
31
|
+
# Discovery de origem (o rascunho da ideia, anterior ao PRD). Remova a linha se não houver.
|
|
9
32
|
related_discovery: {path do discovery de origem, exemplo $PROD_DOCS/discoveries/discovery-001-nome.md. Se não existir, ignore essa linha}
|
|
33
|
+
|
|
34
|
+
# Data de criação (YYYY-MM-DD).
|
|
10
35
|
created_at: {YYYY-MM-DD}
|
|
36
|
+
|
|
37
|
+
# Data da última alteração (YYYY-MM-DD).
|
|
11
38
|
updated_at: {YYYY-MM-DD}
|
|
39
|
+
|
|
40
|
+
# Quem criou o documento.
|
|
12
41
|
created_by: {nome de quem criou esse doc}
|
|
42
|
+
|
|
43
|
+
# Quem editou o documento por último.
|
|
13
44
|
last_editor: {nome de quem editou por último}
|
|
14
45
|
---
|
|
15
46
|
|
|
@@ -1,13 +1,40 @@
|
|
|
1
1
|
---
|
|
2
|
+
# Modelo de IA recomendado para trabalhar neste documento. Se a sessão estiver em outro,
|
|
3
|
+
# o comando avisa e segue (você decide se troca). Opções: opus | sonnet | haiku
|
|
4
|
+
recommended_model: opus
|
|
5
|
+
|
|
6
|
+
# Identificador único, em sequência (ex.: FRD-001). Vai no nome do arquivo e nos campos related_* de outros documentos.
|
|
2
7
|
id: {FRD-001}
|
|
8
|
+
|
|
9
|
+
# Nome curto do documento. Vai no título e, em kebab-case, no nome do arquivo.
|
|
3
10
|
name: {nome desse frd}
|
|
11
|
+
|
|
12
|
+
# Versão do documento (X.Y.Z). Atualize a cada alteração.
|
|
4
13
|
version: {X.Y.Z - atualizar sempre que houver alteração}
|
|
5
|
-
|
|
14
|
+
|
|
15
|
+
# Em que ponto este documento está no ciclo de vida (lista em rules/product/prod-rules.md).
|
|
16
|
+
# Opções: icebox | in_review | backlog | in_progress | in_production | cancelled | deprecated
|
|
17
|
+
# icebox = ideia aguardando priorização | in_review = sendo estudado ou revisado | backlog = definido, aguardando implementação
|
|
18
|
+
# in_progress = em desenvolvimento | in_production = em produção
|
|
19
|
+
# cancelled = cancelado antes de ser entregue | deprecated = esteve em produção e foi descontinuado
|
|
20
|
+
status: {um dos valores acima}
|
|
21
|
+
|
|
22
|
+
# Quem editou o documento por último.
|
|
6
23
|
last_editor: {nome de quem editou por último}
|
|
24
|
+
|
|
25
|
+
# Data da última alteração (YYYY-MM-DD).
|
|
7
26
|
updated_at: {YYYY-MM-DD}
|
|
27
|
+
|
|
28
|
+
# PRD relacionado (Product Requirements Document: o problema e o que vamos construir).
|
|
8
29
|
related_prd: {Lista de PRDs que são relacionadas a esse PRD, se forem vários, utilize sintaxe compatível com YAML}
|
|
30
|
+
|
|
31
|
+
# Discovery de origem (o rascunho da ideia, anterior ao PRD). Remova a linha se não houver.
|
|
9
32
|
related_discovery: {path do discovery de origem, exemplo $PROD_DOCS/discoveries/discovery-001-nome.md. Se não existir, ignore essa linha}
|
|
33
|
+
|
|
34
|
+
# Data de criação (YYYY-MM-DD).
|
|
10
35
|
created_at: {YYYY-MM-DD}
|
|
36
|
+
|
|
37
|
+
# Quem criou o documento.
|
|
11
38
|
created_by: {nome de quem criou esse doc}
|
|
12
39
|
---
|
|
13
40
|
|
|
@@ -138,7 +165,7 @@ Ele é um sistema de gestão de dados pessoais de saúde, que agrega informaçõ
|
|
|
138
165
|
- {Exclusão adicional}
|
|
139
166
|
|
|
140
167
|
## Especificações relacionadas
|
|
141
|
-
{liste todos os PRDs, FRDs ou outros documentos relacionados a este FRD fazendo uma análise prévia do projeto e das especificações existentes no
|
|
168
|
+
{liste todos os PRDs, FRDs ou outros documentos relacionados a este FRD fazendo uma análise prévia do projeto e das especificações existentes no Central docs (`jarvis docs sync`). Pergunte para o usuário se existe outras relações que ele conheça. Antes de adicionar as sugestões, confirme com o usuário se elas estão corretas.}
|
|
142
169
|
|
|
143
170
|
**PRDs relacionadas**:
|
|
144
171
|
| ID | Título | Descrição |
|