jarvis-ai-framework 7.0.0 → 8.2.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.md +2 -2
- package/README.md +11 -34
- package/agents/engineering/data/eng.data-engineer.agent.md +3 -3
- package/agents/engineering/eng.agent.md +13 -11
- package/agents/engineering/eng.dev-code-reviewer.md +19 -4
- package/agents/engineering/eng.docs-consolidator.agent.md +2 -2
- package/agents/engineering/eng.docs-writer.md +17 -2
- package/agents/engineering/qa/eng.qa.quality-champion-task-agent.md +2 -2
- package/agents/engineering/qa/eng.qa.test-planner.md +20 -5
- package/agents/product/prod.pm-checker.md +16 -1
- package/bin/README.md +4 -4
- package/bin/commands/init.js +237 -29
- package/bin/lib/cli/program.js +7 -11
- package/bin/lib/core/sync-engine.js +8 -4
- package/bin/lib/utils/frontmatter.js +1 -1
- package/bin/lib/utils/paths.js +2 -1
- package/bin/lib/utils/version.js +65 -0
- package/bin/postinstall.js +7 -31
- package/package.json +2 -2
- package/rules/AGENTS.md +1 -1
- package/rules/engineering/data/data-rules.md +2 -2
- package/rules/engineering/eng-rules.md +1 -1
- package/rules/engineering/eng-security-rules.md +1 -1
- package/rules/engineering/eng.integrations-rules.md +6 -2
- package/rules/rtk-rules.md +1 -1
- package/rules-on-demand/doc-links-rules.md +2 -2
- package/rules-on-demand/engineering/eng.breakdown-subtasks-rules.md +1 -1
- package/rules-on-demand/engineering/eng.plan-rules.md +2 -0
- package/rules-on-demand/engineering/eng.pr-rules.md +8 -6
- package/rules-on-demand/engineering/eng.pre-pr-rules.md +10 -3
- package/rules-on-demand/engineering/eng.start-rules.md +7 -5
- package/rules-on-demand/engineering/eng.tech-spec-rules.md +9 -7
- package/rules-on-demand/engineering/eng.transitions-rules.md +7 -6
- package/skills/AGENTS.md +2 -2
- package/skills/SKILLS-ROADMAP.md +3 -3
- package/skills/eng-backend-arch-c4/assets/example-container.md +4 -4
- package/skills/eng-backend-arch-c4/assets/example-context.md +6 -6
- package/skills/eng-backend-microservices-trace/SKILL.md +1 -1
- package/skills/eng-global-investigation/SKILL.md +4 -0
- package/skills/eng-global-pr/SKILL.md +15 -12
- package/skills/eng-global-task-comment/SKILL.md +11 -3
- package/skills/eng-global-tech-spec/references/delivery-spec.md +28 -21
- package/skills/jarvis-docs-central/README.md +4 -4
- package/skills/jarvis-docs-central/SKILL.md +5 -3
- package/skills/jarvis-evolution-architect/references/exemplos.md +3 -3
- package/skills/jarvis-init/SKILL.md +89 -24
- package/skills/jarvis-init/assets/setup-guide.md +1 -1
- package/skills/jarvis-report-issue/SKILL.md +37 -24
- package/skills/product-roadmap-report/SKILL.md +2 -2
- package/skills/product-roadmap-report/commands/status.memory.md +1 -1
- package/skills/product-roadmap-report/commands/status.roadmap.preview.md +2 -2
- package/skills/product-specs/SKILL.md +1 -1
- package/skills/product-specs-update/SKILL.md +138 -121
- package/templates/ENV-template.md +57 -27
- package/templates/cdd-aplicado-a-prompts.md +1 -1
- package/templates/engineering/AGENTS-template.md +2 -2
- package/templates/engineering/CONTACTS-template.md +1 -1
- package/templates/engineering/advisor-template.md +2 -2
- package/templates/engineering/architecture-template.md +14 -1
- package/templates/engineering/data-contract-template.md +1 -1
- package/templates/engineering/plan-template.md +2 -0
- package/templates/engineering/tech-spec-delivery-template.md +8 -8
- package/templates/engineering/tech-spec-template.md +3 -3
- package/templates/product/prod-frd-template.md +1 -1
- package/templates/product/prod-prd-template.md +1 -1
- package/workflows/AGENTS.md +1 -1
- package/workflows/README.md +1 -1
- package/workflows/engineering/data/data.contract.md +12 -8
- package/workflows/engineering/eng.breakdown-subtasks.md +2 -2
- package/workflows/engineering/eng.build-tech-spec.md +1 -1
- package/workflows/engineering/eng.create-ard-from-code.md +3 -5
- package/workflows/engineering/eng.create-ard.md +3 -5
- package/workflows/engineering/eng.create-rfc.md +5 -5
- package/workflows/engineering/eng.light-arch.md +1 -1
- package/workflows/engineering/eng.plan.md +10 -7
- package/workflows/engineering/eng.pr.md +26 -19
- package/workflows/engineering/eng.pre-pr.md +126 -27
- package/workflows/engineering/eng.spec-consolidate.md +5 -5
- package/workflows/engineering/eng.start.md +23 -9
- package/workflows/engineering/eng.work.md +4 -4
- package/workflows/engineering/qa/eng.qa-release-signoff.md +1 -66
- package/workflows/product/prod.roadmap.preview.md +10 -14
- package/workflows/product/prod.spec.ard.md +2 -2
- package/workflows/product/prod.spec.breakdown.md +2 -2
- package/workflows/product/prod.spec.epic.md +4 -4
- package/workflows/product/prod.spec.frd.md +3 -3
- package/workflows/product/prod.spec.issue.md +3 -3
- package/workflows/product/prod.spec.prd.md +5 -5
- package/bin/commands/qa-signoff.js +0 -115
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: product-roadmap-report
|
|
3
3
|
description: Cria e atualiza relatórios estruturados de roadmap de produto a partir de reuniões, mensagens, documentos ou notas. Use quando usuários precisam extrair atualizações de roadmap em relatórios markdown com seções de resumo, problemas, riscos e ações, consolidar múltiplos relatórios de times, atualizar relatórios existentes mantendo ordem cronológica reversa, salvar/modificar relatórios no Obsidian vault, ou mencionar termos como "relatório de roadmap", "atualização de produto", "sync", "war room", "relatório do time" ou "atualização semanal".
|
|
4
|
-
allowed-tools: conversation_search, google_drive_search, google_drive_fetch
|
|
4
|
+
allowed-tools: conversation_search, google_drive_search, google_drive_fetch, Bash, WebFetch
|
|
5
5
|
metadata:
|
|
6
6
|
author: jarvis-team
|
|
7
7
|
version: "1.0.0"
|
|
@@ -25,7 +25,7 @@ Por favor, siga o `rules/status-report-rules.md` para obter orientações corret
|
|
|
25
25
|
Sempre interaja com o usuário no mesmo idioma que ele estiver usando.
|
|
26
26
|
|
|
27
27
|
### Roadmap Preview:
|
|
28
|
-
- Quando o usuário perguntar sobre roadmap, status, sprint, atualizações, etc., execute as instruções de `commands/status
|
|
28
|
+
- Quando o usuário perguntar sobre roadmap, status, sprint, atualizações, etc., execute as instruções de `commands/status.roadmap.preview.md`
|
|
29
29
|
- Use o `$ARGUMENTS` do usuário para obter a resposta correta.
|
|
30
30
|
|
|
31
31
|
|
|
@@ -84,7 +84,7 @@ I see some terms I want to make sure I understand:
|
|
|
84
84
|
|
|
85
85
|
Continue through each information, asking only about terms you haven't already decoded.
|
|
86
86
|
|
|
87
|
-
Gather data from available installed MCP sources:
|
|
87
|
+
Gather data from available installed MCP sources (chat, email, documents and calendar only; the board and git are read only through the vendor's official CLI, see `eng.integrations-rules.md`):
|
|
88
88
|
- **Chat:** Recent messages, channels, DMs
|
|
89
89
|
- **Email:** Sent messages, recipients
|
|
90
90
|
- **Documents:** Recent docs, collaborators
|
|
@@ -3,7 +3,7 @@ name: prod-roadmap-preview
|
|
|
3
3
|
description: >
|
|
4
4
|
Use esta habilidade sempre que alguém perguntar sobre roadmap de produto, status de entrega, status de sprint, atualizações de equipe ou relatórios de status.
|
|
5
5
|
Aciona quando os usuários perguntam coisas como: "qual o roadmap?", "quais são as entregas do trimestre?", "status do time X", "o que está sendo feito?", "quando vai sair feature Y?", "me mostra o roadmap", "status report do time", "próximas entregas", "roadmap do produto", "o que está planejado?", "report do time", "andamento dos projetos".
|
|
6
|
-
Essa habilidade
|
|
6
|
+
Essa habilidade lê o board pela CLI oficial do vendor (só leitura) e as páginas wiki internas pela URL que o usuário informar (`web_fetch`, ou texto colado; sem MCP) para buscar dados ao vivo sobre o roteiro do produto e relatórios de status da equipe.
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# Status Roadmap Preview
|
|
@@ -25,7 +25,7 @@ Use este fluxo sempre que alguém perguntar sobre:
|
|
|
25
25
|
## Regras
|
|
26
26
|
|
|
27
27
|
- Se não tiver informações suficientes sobre o `$TASK_MANAGER` utilizado pelo usuário, pergunte qual é o `$TASK_MANAGER` e adapte a resposta de acordo.
|
|
28
|
-
-
|
|
28
|
+
- Leia o board pela CLI oficial do `$TASK_MANAGER` (`acli` no Jira, `gh` no GitHub, `glab` no GitLab), com o login dela, sem REST nem MCP (`eng.integrations-rules.md`). Só leitura: nada é comentado nem criado no board. Sem a CLI logada (ou com `TASK_MANAGER_ACCESS=manual`), peça ao usuário para exportar ou colar os dados.
|
|
29
29
|
- Procure na pasta de trabalho para entender mais sobre o projeto.
|
|
30
30
|
- Caso não tiver informações sobre o projeto, fontes de dados ou `$TASK_MANAGER`, informe ao usuário que não tem informações suficientes e peça para ele fornecer mais detalhes.
|
|
31
31
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: product-specs
|
|
3
3
|
description: Ações e fluxos de trabalho para criar, modificar, analisar e atualizar especificações de produto como PRDs, FRDs, Storys, e tarefas de gerenciamento de produtos e projetos.
|
|
4
4
|
argument-hint: "Peça para criar, atualizar ou modificar uma especificação de PRD, FRD ou Story."
|
|
5
|
-
allowed-tools: conversation_search, google_drive_search, google_drive_fetch,
|
|
5
|
+
allowed-tools: conversation_search, google_drive_search, google_drive_fetch, figma
|
|
6
6
|
disable-model-invocation: false
|
|
7
7
|
license: AGPL-3.0
|
|
8
8
|
metadata:
|
|
@@ -1,43 +1,98 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: product-specs-update
|
|
3
3
|
description: >
|
|
4
|
-
Sincroniza especificações de produto (PRD/FRD) em cascata e mantém
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
Sincroniza especificações de produto (PRD/FRD) em cascata e mantém o
|
|
5
|
+
índice local de specs (`$PROD_DOCS/specs-index.md`) atualizado. Trigger:
|
|
6
|
+
quando um PRD ou FRD é criado ou modificado, ou quando o usuário pede para
|
|
7
|
+
sincronizar ou indexar specs.
|
|
8
|
+
argument-hint: "[path-do-arquivo-criado-ou-modificado]"
|
|
9
|
+
disable-model-invocation: false
|
|
10
|
+
allowed-tools: Read Write Edit Grep Glob Bash
|
|
11
|
+
license: AGPL-3.0
|
|
9
12
|
metadata:
|
|
10
13
|
author: jarvis-team
|
|
11
|
-
version: "
|
|
14
|
+
version: "2.0"
|
|
12
15
|
area: product
|
|
13
|
-
argument-hint: "[path-do-arquivo-criado-ou-modificado]"
|
|
14
|
-
disable-model-invocation: false
|
|
15
16
|
---
|
|
16
17
|
|
|
17
18
|
# Update Specs — Sincronização de Especificações de Produto
|
|
18
19
|
|
|
19
|
-
|
|
20
|
-
consistentes. Quando uma spec muda, você propaga em cascata e atualiza
|
|
21
|
-
dois índices: o local do projeto na pasta `docs` e o global no repositório `$CENTRAL_DOCS_REPO`.
|
|
20
|
+
## Objetivo
|
|
22
21
|
|
|
23
|
-
|
|
22
|
+
Manter PRDs, FRDs e o índice de specs sempre consistentes. Quando uma spec
|
|
23
|
+
muda, você propaga em cascata (a seção `## Solução` do PRD e o `related_prd`
|
|
24
|
+
da FRD) e atualiza o índice local do projeto (`$PROD_DOCS/specs-index.md`).
|
|
24
25
|
|
|
26
|
+
O índice é só local: PRD e FRD são documentos de trabalho e não vão para o
|
|
27
|
+
Central docs, que guarda só o que foi implementado (`feature-*` e
|
|
28
|
+
`delivery-*`, publicados pelo `/eng.spec-consolidate`). Para saber o que já
|
|
29
|
+
foi implementado, leia o índice do Central docs com
|
|
30
|
+
`jarvis docs fetch {SQUAD}/index.md` (skill `jarvis-docs-central`); este skill
|
|
31
|
+
não escreve nada lá.
|
|
25
32
|
|
|
26
33
|
## Entrada
|
|
27
34
|
|
|
28
35
|
- `$ARGUMENTS` — (Opcional) Path do arquivo criado ou modificado.
|
|
29
|
-
|
|
36
|
+
|
|
37
|
+
## Recursos
|
|
38
|
+
|
|
39
|
+
- `rules/product/prod-rules.md`: layout de `$PROD_DOCS` e status das specs
|
|
40
|
+
- `templates/product/prod-prd-template.md` e `prod-frd-template.md`: frontmatter (`id`, `name`, `status`, `related_prd`)
|
|
41
|
+
- Template do índice local: seção "Templates", abaixo
|
|
30
42
|
|
|
31
43
|
---
|
|
32
44
|
|
|
33
45
|
## Pré-requisito — Carregar ENV.md
|
|
34
46
|
|
|
35
|
-
Antes de qualquer ação, ler o
|
|
47
|
+
Antes de qualquer ação, ler o `$IDE/ENV.md`. `$IDE` é a pasta da IDE ativa
|
|
48
|
+
(`.claude/`, `.cursor/`, `.windsurf/`…), e não o valor de `IDE=` do `ENV.md`:
|
|
49
|
+
troque-a pela pasta real antes de rodar.
|
|
36
50
|
```bash
|
|
37
|
-
cat ENV.md
|
|
51
|
+
cat "$IDE/ENV.md"
|
|
38
52
|
```
|
|
39
53
|
|
|
40
|
-
|
|
54
|
+
Resolver `$PROD_DOCS` até o caminho real, expandindo as variáveis do próprio
|
|
55
|
+
`ENV.md` (ex.: `PROD_DOCS=$JARVIS_DOCS/$PROD_FOLDER_NAME` → `docs/jarvis/product`,
|
|
56
|
+
relativo à pasta do workspace). Os comandos abaixo usam esse caminho, entre
|
|
57
|
+
aspas. Se `$PROD_DOCS` ficar vazio, pare e avise: um `grep -r` sem caminho lê
|
|
58
|
+
a entrada padrão e fica parado.
|
|
59
|
+
|
|
60
|
+
Se não existir um `ENV.md`, crie executando a skill `jarvis-init` com Skill tool.
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Quando Usar
|
|
65
|
+
|
|
66
|
+
- Um PRD ou FRD foi criado ou modificado (pelos `/prod.spec.*` ou à mão)
|
|
67
|
+
- O usuário pede para sincronizar specs ou reconstruir o índice local
|
|
68
|
+
|
|
69
|
+
**Não usar** para publicar specs ou índice no Central docs: ele recebe só a
|
|
70
|
+
consolidação do `/eng.spec-consolidate`.
|
|
71
|
+
|
|
72
|
+
## Padrões Críticos
|
|
73
|
+
|
|
74
|
+
- **Frontmatter, não a linha solta.** Leia `id`, `name`, `status` e
|
|
75
|
+
`related_prd` só do bloco entre os dois primeiros `---`. O `related_prd`
|
|
76
|
+
aparece de vários jeitos e todos valem: vazio, `[]`, `PRD-001` na mesma
|
|
77
|
+
linha ou lista em várias linhas (`related_prd:` seguido de ` - PRD-001`).
|
|
78
|
+
Só trate como vazio depois de olhar as linhas de baixo.
|
|
79
|
+
- **FRD é quem tem `id: FRD-`.** Breakdowns, revisões e arquivos de `issues/`
|
|
80
|
+
também podem ter `related_prd`, mas não são FRDs.
|
|
81
|
+
- **Spec é identificada pelo caminho.** O mesmo `id` pode existir em pastas
|
|
82
|
+
diferentes (dois `PRD-001`). Liste as duas e avise o id repetido; nunca
|
|
83
|
+
junte nem descarte nenhuma.
|
|
84
|
+
- **Só local.** Nada é publicado fora da máquina; toda gravação mostra o
|
|
85
|
+
diff e aguarda confirmação.
|
|
86
|
+
|
|
87
|
+
Leitura do frontmatter (usada em todos os passos):
|
|
88
|
+
```bash
|
|
89
|
+
# Bloco do frontmatter
|
|
90
|
+
awk '/^---[[:space:]]*$/{n++; next} n==1' "{arquivo}"
|
|
91
|
+
|
|
92
|
+
# Só os PRDs do related_prd, em qualquer um dos formatos (um por linha; "[]" = vazio)
|
|
93
|
+
awk '/^---[[:space:]]*$/{n++; next} n==1' "{arquivo}" \
|
|
94
|
+
| awk '/^related_prd:/{p=1; sub(/^related_prd:[[:space:]]*/,""); if($0!="")print; next} p&&/^[[:space:]]+-/{sub(/^[[:space:]]+-[[:space:]]*/,""); print; next} {p=0}'
|
|
95
|
+
```
|
|
41
96
|
|
|
42
97
|
---
|
|
43
98
|
|
|
@@ -48,7 +103,7 @@ $ARGUMENTS fornecido?
|
|
|
48
103
|
id começa com "PRD"? → Fluxo PRD
|
|
49
104
|
id começa com "FRD"? → Fluxo FRD
|
|
50
105
|
Nem um nem outro? → Avisar e encerrar
|
|
51
|
-
→ NÃO: Ir direto para Reconstrução
|
|
106
|
+
→ NÃO: Ir direto para Reconstrução do Índice
|
|
52
107
|
```
|
|
53
108
|
|
|
54
109
|
---
|
|
@@ -57,19 +112,20 @@ $ARGUMENTS fornecido?
|
|
|
57
112
|
|
|
58
113
|
### 1. Fluxo FRD — quando uma FRD foi criada ou modificada
|
|
59
114
|
|
|
60
|
-
Extrair do frontmatter
|
|
61
|
-
|
|
62
|
-
grep -E "^(id|name|status|related_prd):" {arquivo_frd}
|
|
63
|
-
```
|
|
115
|
+
Extrair do frontmatter `id`, `name`, `status` e `related_prd` (ver "Padrões
|
|
116
|
+
Críticos").
|
|
64
117
|
|
|
65
|
-
**Se `related_prd` estiver ausente ou vazio
|
|
118
|
+
**Se `related_prd` estiver ausente ou vazio** (sem nenhum `PRD-xxx` em
|
|
119
|
+
nenhum dos formatos), perguntar:
|
|
66
120
|
```
|
|
67
121
|
A FRD "{id}: {name}" não tem PRD pai definido.
|
|
68
|
-
→ Qual é o
|
|
122
|
+
→ Qual é o id do PRD relacionado? (ex.: PRD-001)
|
|
69
123
|
```
|
|
70
|
-
Atualizar o frontmatter da FRD com o
|
|
124
|
+
Atualizar o frontmatter da FRD com o id informado antes de continuar.
|
|
71
125
|
|
|
72
|
-
**Abrir o PRD referenciado** e verificar a seção `## Solução
|
|
126
|
+
**Abrir o PRD referenciado** e verificar a seção `## Solução`. Se houver mais
|
|
127
|
+
de um PRD com esse id, use o da mesma pasta da FRD; sem PRD na mesma pasta,
|
|
128
|
+
pergunte qual é:
|
|
73
129
|
|
|
74
130
|
- FRD **não aparece na lista** → Adicionar entry:
|
|
75
131
|
`- **[{id}]({path_relativo}) ({status}):** {name}`
|
|
@@ -81,40 +137,48 @@ Mostrar diff proposto ao usuário. Aguardar confirmação antes de escrever.
|
|
|
81
137
|
|
|
82
138
|
### 2. Fluxo PRD — quando um PRD foi criado ou modificado
|
|
83
139
|
|
|
84
|
-
Extrair do frontmatter
|
|
85
|
-
```bash
|
|
86
|
-
grep -E "^(id|name|status):" {arquivo_prd}
|
|
87
|
-
```
|
|
140
|
+
Extrair do frontmatter `id`, `name` e `status`.
|
|
88
141
|
|
|
89
|
-
Buscar FRDs
|
|
142
|
+
Buscar as FRDs de todo o `$PROD_DOCS` (na pasta do PRD ou em pasta própria):
|
|
90
143
|
```bash
|
|
91
|
-
grep -
|
|
144
|
+
grep -rlE --include="*.md" --exclude-dir=issues "^id: FRD-" "$PROD_DOCS"
|
|
92
145
|
```
|
|
93
146
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
147
|
+
Ficar só com as que têm o id deste PRD no `related_prd`. Se o id do PRD se
|
|
148
|
+
repete em outra pasta, ficar só com as FRDs da mesma pasta deste PRD e
|
|
149
|
+
perguntar sobre as de pasta própria. Para cada FRD encontrada, verificar na
|
|
150
|
+
seção `## Solução` do PRD se o entry está presente e com status correto.
|
|
151
|
+
Atualizar divergências.
|
|
97
152
|
|
|
98
153
|
Mostrar diff proposto ao usuário. Aguardar confirmação antes de escrever.
|
|
99
154
|
|
|
100
155
|
---
|
|
101
156
|
|
|
102
|
-
### 3. Reconstrução
|
|
157
|
+
### 3. Reconstrução do Índice
|
|
103
158
|
|
|
104
159
|
Executado sempre após os fluxos acima, ou diretamente quando `$ARGUMENTS`
|
|
105
160
|
está vazio.
|
|
106
161
|
|
|
107
162
|
#### 3.1 Escanear specs locais
|
|
163
|
+
Layout de `$PROD_DOCS` (`prod-rules.md`): cada PRD fica em
|
|
164
|
+
`prd-{id}-{nome}/prd-{id}-{nome}.md`, com as FRDs na mesma pasta
|
|
165
|
+
(`frd-{id}-{nome}.md`); uma FRD sem PRD pai pode ter pasta própria
|
|
166
|
+
(`frd-{id}-{nome}/`). A varredura é recursiva e lê o `id` do frontmatter:
|
|
108
167
|
```bash
|
|
109
|
-
# PRDs
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
# FRDs
|
|
113
|
-
find $PROD_DOCS_FRD -name "*.md" | xargs grep -l "^id: FRD"
|
|
168
|
+
# PRDs e FRDs em qualquer pasta de $PROD_DOCS (épicos e histórias de issues/ ficam de fora)
|
|
169
|
+
grep -rlE --include="*.md" --exclude-dir=issues "^id: (PRD|FRD)-" "$PROD_DOCS"
|
|
114
170
|
```
|
|
115
171
|
|
|
116
|
-
|
|
117
|
-
|
|
172
|
+
Arquivos sem `id: PRD-`/`id: FRD-` (revisões, breakdowns) ficam de fora.
|
|
173
|
+
|
|
174
|
+
Para cada arquivo, extrair do frontmatter `id`, `name`, `status` e, nas FRDs,
|
|
175
|
+
`related_prd` (ver "Padrões Críticos").
|
|
176
|
+
|
|
177
|
+
Identificar cada spec pelo **caminho**, e não só pelo `id`. Com id repetido,
|
|
178
|
+
listar as duas no índice e avisar o usuário. Para pôr uma FRD sob o PRD certo
|
|
179
|
+
em "Relação PRD → FRDs": o PRD com o id do `related_prd` na mesma pasta da
|
|
180
|
+
FRD; se não houver um na mesma pasta e o id se repetir, perguntar ao usuário
|
|
181
|
+
em vez de escolher. FRD sem `related_prd` vai para "FRDs sem PRD pai".
|
|
118
182
|
|
|
119
183
|
#### 3.2 Obter projeto e repositório para cada PRD
|
|
120
184
|
|
|
@@ -131,24 +195,11 @@ O PRD "{id}: {name}" ainda não tem projeto ou repositório mapeado.
|
|
|
131
195
|
#### 3.3 Gerar o índice local
|
|
132
196
|
|
|
133
197
|
Escrever ou atualizar `$PROD_DOCS/specs-index.md` seguindo o template
|
|
134
|
-
de Índice Local abaixo.
|
|
198
|
+
de Índice Local abaixo. Mostrar o diff proposto e aguardar confirmação
|
|
199
|
+
antes de gravar.
|
|
135
200
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
Acessar `$CENTRAL_DOCS_REPO` via MCP e listar todos os arquivos `.md`.
|
|
139
|
-
|
|
140
|
-
Para cada arquivo encontrado, extrair os metadados YAML (`id`, `name`,
|
|
141
|
-
`status`, `related_prd`). Consolidar com os dados locais, deduplizando
|
|
142
|
-
por `id`.
|
|
143
|
-
|
|
144
|
-
#### 3.5 Gerar o índice global no Drive (se MCP disponível)
|
|
145
|
-
|
|
146
|
-
Verificar se `specs-index.md` já existe na raiz da pasta do Drive.
|
|
147
|
-
Reutilizar mapeamentos de projeto/repositório já registrados. Perguntar
|
|
148
|
-
apenas o que estiver faltando.
|
|
149
|
-
|
|
150
|
-
Escrever ou atualizar o `specs-index.md` no Drive seguindo o template
|
|
151
|
-
de Índice Global abaixo.
|
|
201
|
+
O índice fica só na máquina: não é publicado no Central docs nem em
|
|
202
|
+
outro lugar.
|
|
152
203
|
|
|
153
204
|
### Skills invocados durante a execução do skill
|
|
154
205
|
|
|
@@ -165,7 +216,7 @@ de Índice Global abaixo.
|
|
|
165
216
|
# Índice de Especificações — {WORKSPACE}
|
|
166
217
|
|
|
167
218
|
Índice das especificações do projeto atual. Atualizado automaticamente
|
|
168
|
-
pela skill `
|
|
219
|
+
pela skill `product-specs-update`.
|
|
169
220
|
|
|
170
221
|
_Última atualização: {YYYY-MM-DD}_
|
|
171
222
|
|
|
@@ -175,69 +226,23 @@ _Última atualização: {YYYY-MM-DD}_
|
|
|
175
226
|
|
|
176
227
|
| Spec | Status | Projeto | Repositório Git |
|
|
177
228
|
|------|--------|---------|-----------------|
|
|
178
|
-
| [PRD-001 — Nome](./prd-001.md) | in_progress | Projeto A | [repo-a](url) |
|
|
179
|
-
| [FRD-001 — Nome](./
|
|
229
|
+
| [PRD-001 — Nome](./prd-001-nome/prd-001-nome.md) | in_progress | Projeto A | [repo-a](url) |
|
|
230
|
+
| [FRD-001 — Nome](./prd-001-nome/frd-001-nome.md) | in_review | Projeto A | [repo-a](url) |
|
|
231
|
+
| [FRD-002 — Nome](./frd-002-nome/frd-002-nome.md) | backlog | Projeto A | [repo-a](url) |
|
|
180
232
|
|
|
181
233
|
---
|
|
182
234
|
|
|
183
235
|
## Relação PRD → FRDs
|
|
184
236
|
|
|
185
237
|
### PRD-001: Nome do PRD
|
|
186
|
-
- [FRD-001 — Nome](./
|
|
187
|
-
- [FRD-002 — Nome](./frds/frd-002.md) · `in_progress`
|
|
188
|
-
```
|
|
189
|
-
|
|
190
|
-
---
|
|
238
|
+
- [FRD-001 — Nome](./prd-001-nome/frd-001-nome.md) · `in_review`
|
|
191
239
|
|
|
192
|
-
###
|
|
193
|
-
|
|
194
|
-
# Índice Global de Especificações
|
|
195
|
-
|
|
196
|
-
Índice consolidado de todas as especificações de produto, abrangendo todos
|
|
197
|
-
os projetos. Atualizado automaticamente pela skill `prod-update-specs`.
|
|
198
|
-
|
|
199
|
-
_Última atualização: {YYYY-MM-DD}_
|
|
200
|
-
|
|
201
|
-
---
|
|
202
|
-
|
|
203
|
-
## Relação de Arquivos e Projetos
|
|
204
|
-
|
|
205
|
-
| Spec | Status | Projeto | Repositório Git |
|
|
206
|
-
|------|--------|---------|-----------------|
|
|
207
|
-
| [PRD-001 — Nome](link-drive) | in_progress | Projeto A | [repo-a](url) |
|
|
208
|
-
| [PRD-002 — Nome](link-drive) | in_review | Projeto B | [repo-b](url) |
|
|
209
|
-
| [FRD-001 — Nome](link-drive) | in_progress | Projeto A | [repo-a](url) |
|
|
210
|
-
|
|
211
|
-
---
|
|
212
|
-
|
|
213
|
-
## Projetos
|
|
214
|
-
|
|
215
|
-
| Projeto | Specs relacionadas |
|
|
216
|
-
|---------|--------------------|
|
|
217
|
-
| Projeto A | PRD-001, FRD-001, FRD-002 |
|
|
218
|
-
| Projeto B | PRD-002, FRD-003 |
|
|
219
|
-
|
|
220
|
-
---
|
|
221
|
-
|
|
222
|
-
## Repositórios
|
|
223
|
-
|
|
224
|
-
| Repositório | Specs relacionadas |
|
|
225
|
-
|-------------|-------------------|
|
|
226
|
-
| [repo-a](url) | PRD-001, FRD-001, FRD-002 |
|
|
227
|
-
| [repo-b](url) | PRD-002, FRD-003 |
|
|
228
|
-
|
|
229
|
-
---
|
|
230
|
-
|
|
231
|
-
## Relação PRD → FRDs
|
|
232
|
-
|
|
233
|
-
### PRD-001: Nome — Projeto A
|
|
234
|
-
- [FRD-001 — Nome](link-drive) · `in_progress`
|
|
235
|
-
- [FRD-002 — Nome](link-drive) · `in_review`
|
|
236
|
-
|
|
237
|
-
### PRD-002: Nome — Projeto B
|
|
238
|
-
- [FRD-003 — Nome](link-drive) · `icebox`
|
|
240
|
+
### FRDs sem PRD pai
|
|
241
|
+
- [FRD-002 — Nome](./frd-002-nome/frd-002-nome.md) · `backlog`
|
|
239
242
|
```
|
|
240
243
|
|
|
244
|
+
Os links são relativos ao `specs-index.md`, que fica na raiz de `$PROD_DOCS`.
|
|
245
|
+
|
|
241
246
|
---
|
|
242
247
|
|
|
243
248
|
## Regras
|
|
@@ -247,24 +252,25 @@ _Última atualização: {YYYY-MM-DD}_
|
|
|
247
252
|
- Sobrescrever mapeamentos de projeto/repositório já registrados sem perguntar
|
|
248
253
|
- Escrever mudanças em cascata sem mostrar o diff antes
|
|
249
254
|
- Alterar o bloco de versionamento dos docs
|
|
255
|
+
- Publicar o índice ou as specs no Central docs ou em qualquer lugar fora da máquina
|
|
256
|
+
- Escolher sozinho entre dois PRDs com o mesmo id
|
|
250
257
|
|
|
251
258
|
### Sempre
|
|
252
259
|
- Mostrar resumo das mudanças propostas e aguardar confirmação
|
|
253
260
|
- Preservar paths relativos corretos entre os arquivos
|
|
254
|
-
-
|
|
255
|
-
-
|
|
261
|
+
- Reutilizar mapeamentos de projeto/repo já existentes no índice
|
|
262
|
+
- Ler o `related_prd` em todos os formatos antes de tratá-lo como vazio
|
|
256
263
|
|
|
257
264
|
---
|
|
258
265
|
|
|
259
266
|
## Checklist de Conclusão
|
|
260
267
|
|
|
261
|
-
- [ ] ENV.md lido — `$PROD_DOCS
|
|
262
|
-
- [ ] Disponibilidade do Drive MCP verificada
|
|
268
|
+
- [ ] ENV.md lido — `$PROD_DOCS` resolvido até o caminho real
|
|
263
269
|
- [ ] Tipo do arquivo identificado (PRD / FRD / scan completo)
|
|
264
270
|
- [ ] Cascata de atualizações mapeada e confirmada pelo usuário
|
|
271
|
+
- [ ] Ids repetidos avisados e resolvidos (mesma pasta ou pergunta)
|
|
265
272
|
- [ ] Projeto e repositório obtidos para specs sem mapeamento
|
|
266
273
|
- [ ] Índice local gerado em `$PROD_DOCS/specs-index.md`
|
|
267
|
-
- [ ] Índice global gerado no Drive (se MCP disponível)
|
|
268
274
|
- [ ] Links internos validados
|
|
269
275
|
|
|
270
276
|
---
|
|
@@ -274,6 +280,17 @@ _Última atualização: {YYYY-MM-DD}_
|
|
|
274
280
|
| Artefato | Escopo | Condição |
|
|
275
281
|
|----------|--------|----------|
|
|
276
282
|
| `$PROD_DOCS/specs-index.md` | Projeto atual | Sempre |
|
|
277
|
-
| `specs-index.md` no Drive | Todos os projetos | MCP conectado ou Integração ativa |
|
|
278
283
|
| PRDs afetados | Seção "Solução" sincronizada | Quando FRD muda |
|
|
279
|
-
| FRDs afetadas | `related_prd` preenchido | Quando ausente |
|
|
284
|
+
| FRDs afetadas | `related_prd` preenchido | Quando ausente |
|
|
285
|
+
|
|
286
|
+
## Mensagem de Conclusão
|
|
287
|
+
|
|
288
|
+
```
|
|
289
|
+
✅ Specs sincronizadas
|
|
290
|
+
|
|
291
|
+
📄 Índice: $PROD_DOCS/specs-index.md ({n} PRDs, {m} FRDs)
|
|
292
|
+
🔁 Cascata: {k} arquivos atualizados (PRD "Solução" / FRD related_prd)
|
|
293
|
+
⚠️ Ids repetidos: {lista ou "nenhum"}
|
|
294
|
+
|
|
295
|
+
O índice é local: nada foi publicado.
|
|
296
|
+
```
|
|
@@ -7,7 +7,9 @@
|
|
|
7
7
|
# =============================================================================
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
#
|
|
10
|
+
# =============================================================================
|
|
11
|
+
# Workspace e identidade
|
|
12
|
+
# =============================================================================
|
|
11
13
|
# Workspace = a pasta que contém $IDE/. Não é o nome de um repo.
|
|
12
14
|
# Vazio: o CLI usa o nome dessa pasta. Preencha só se quiser outro slug.
|
|
13
15
|
#
|
|
@@ -38,14 +40,18 @@ MAX_AI_EXECUTION_PERCENTAGE=80
|
|
|
38
40
|
ENABLE_CDD=true
|
|
39
41
|
|
|
40
42
|
|
|
41
|
-
#
|
|
43
|
+
# =============================================================================
|
|
44
|
+
# Organização (obrigatório — opções vêm do taxonomy.md)
|
|
45
|
+
# =============================================================================
|
|
42
46
|
SQUAD=[CORE]
|
|
43
47
|
HUB=[AI, FRONTEND, BACKEND, QA, DATA, FULLCYCLE]
|
|
44
48
|
AREA=[ENGINEERING, PRODUCT]
|
|
45
49
|
POSITION=[JUNIOR, PLENO, SENIOR, TECH LEAD, SPECIALIST, PM, TPM, GPM, CTO, GENERALIST]
|
|
46
50
|
|
|
47
51
|
|
|
48
|
-
#
|
|
52
|
+
# =============================================================================
|
|
53
|
+
# IDE e pastas
|
|
54
|
+
# =============================================================================
|
|
49
55
|
# Qual IDE este ENV.md alimenta. FLOWS_FOLDER: workflows (maioria) ou commands (Claude).
|
|
50
56
|
IDE=[windsurf, claude, cursor, codex, opencode, gemini, antigravity]
|
|
51
57
|
DOCS_FOLDER=docs
|
|
@@ -94,7 +100,9 @@ PROD_MODE=
|
|
|
94
100
|
ARTIFACT_STYLE=ai-generated
|
|
95
101
|
|
|
96
102
|
|
|
97
|
-
#
|
|
103
|
+
# =============================================================================
|
|
104
|
+
# Especializações por área
|
|
105
|
+
# =============================================================================
|
|
98
106
|
# Skills especializados que o Jarvis carrega junto com o skill base de cada área.
|
|
99
107
|
# Lista de nomes de skill separados por vírgula. Ex: eng-backend-golang,eng-backend-nestjs
|
|
100
108
|
# Vazio = só o skill base de cada área (eng-backend, eng-frontend, eng-qa,
|
|
@@ -110,7 +118,9 @@ AUTOMATION_SPECIALIZATIONS=
|
|
|
110
118
|
PLATFORM_SPECIALIZATIONS=
|
|
111
119
|
|
|
112
120
|
|
|
113
|
-
#
|
|
121
|
+
# =============================================================================
|
|
122
|
+
# Task manager (opcional)
|
|
123
|
+
# =============================================================================
|
|
114
124
|
# Board de cards: jira (só Jira Cloud), github ou gitlab. Vazio = freelance: o workflow
|
|
115
125
|
# pergunta um número de controle próprio (TASK_MANAGER_KEY) e as ações viram .md.
|
|
116
126
|
# O Jarvis fala com o board pela CLI oficial, com o login dela (gh auth login,
|
|
@@ -127,7 +137,9 @@ TASK_MANAGER_ACCESS=[cli, manual]
|
|
|
127
137
|
TASK_MANAGER_URL_BASE=
|
|
128
138
|
|
|
129
139
|
|
|
130
|
-
#
|
|
140
|
+
# =============================================================================
|
|
141
|
+
# Controle de versão (opcional)
|
|
142
|
+
# =============================================================================
|
|
131
143
|
# Host de git do projeto: github ou gitlab. O repositório e o host vêm do
|
|
132
144
|
# git remote get-url origin. PR/MR pela CLI oficial (gh pr create, glab mr create),
|
|
133
145
|
# com o login dela. Nenhum token vai neste arquivo.
|
|
@@ -137,13 +149,17 @@ VERSION_CONTROL=[github, gitlab]
|
|
|
137
149
|
VERSION_CONTROL_ACCESS=[cli, manual]
|
|
138
150
|
|
|
139
151
|
|
|
140
|
-
#
|
|
152
|
+
# =============================================================================
|
|
153
|
+
# Mensageria (opcional)
|
|
154
|
+
# =============================================================================
|
|
141
155
|
MESSAGE_BROKER=[rabbitmq, kafka, sqs]
|
|
142
156
|
MESSAGE_BROKER_URL_API=
|
|
143
157
|
MESSAGE_BROKER_API_AUTH=
|
|
144
158
|
|
|
145
159
|
|
|
146
|
-
#
|
|
160
|
+
# =============================================================================
|
|
161
|
+
# Banco de dados (opcional)
|
|
162
|
+
# =============================================================================
|
|
147
163
|
DATABASE=[mysql, postgres, mongodb]
|
|
148
164
|
USER_DATABASE=
|
|
149
165
|
PASSWORD_DATABASE=
|
|
@@ -151,7 +167,9 @@ HOST_DATABASE=
|
|
|
151
167
|
PORT_DATABASE=
|
|
152
168
|
|
|
153
169
|
|
|
154
|
-
#
|
|
170
|
+
# =============================================================================
|
|
171
|
+
# Chat / comunicador (opcional)
|
|
172
|
+
# =============================================================================
|
|
155
173
|
# slack: BOT_TOKEN + SIGNING_SECRET + APP_TOKEN (Socket Mode)
|
|
156
174
|
# discord: BOT_TOKEN (Bot) + ALERTS_CHANNEL = ID do canal
|
|
157
175
|
# teams: BOT_TOKEN = URL do Incoming Webhook (SIGNING/APP vazios)
|
|
@@ -162,29 +180,39 @@ MESSAGE_COMUNICATOR_APP_TOKEN=
|
|
|
162
180
|
ALERTS_CHANNEL=
|
|
163
181
|
|
|
164
182
|
|
|
165
|
-
#
|
|
183
|
+
# =============================================================================
|
|
184
|
+
# Object storage (opcional)
|
|
185
|
+
# =============================================================================
|
|
166
186
|
OBJECT_STORAGE=[aws_s3, gcs, azure_blob]
|
|
167
187
|
TOKEN_OBJECT_STORAGE=
|
|
168
188
|
|
|
169
189
|
|
|
170
|
-
#
|
|
190
|
+
# =============================================================================
|
|
191
|
+
# Observabilidade (opcional)
|
|
192
|
+
# =============================================================================
|
|
171
193
|
OBSERVABILITY=[sentry, datadog, grafana]
|
|
172
194
|
TOKEN_OBSERVABILITY=
|
|
173
195
|
OBSERVABILITY_ORG=
|
|
174
196
|
|
|
175
197
|
|
|
176
|
-
#
|
|
198
|
+
# =============================================================================
|
|
199
|
+
# SMTP (opcional)
|
|
200
|
+
# =============================================================================
|
|
177
201
|
SMTP=[google, ses, sendgrid]
|
|
178
202
|
|
|
179
203
|
|
|
180
|
-
#
|
|
204
|
+
# =============================================================================
|
|
205
|
+
# RTK — Token Killer (opcional)
|
|
206
|
+
# =============================================================================
|
|
181
207
|
# Proxy CLI em Rust que comprime output de shell (economia 60–90% de tokens).
|
|
182
208
|
# Instale com: cargo install rtk (requer Rust).
|
|
183
209
|
# false = a rule RTK não é copiada para $IDE/rules/.
|
|
184
210
|
RTK_ENABLED=false
|
|
185
211
|
|
|
186
212
|
|
|
187
|
-
#
|
|
213
|
+
# =============================================================================
|
|
214
|
+
# Advisor (opcional)
|
|
215
|
+
# =============================================================================
|
|
188
216
|
# Modelos oferecidos quando o usuário escolhe usar o Advisor no início do eng.start,
|
|
189
217
|
# separados por vírgula. Até 4 viram opções da pergunta; o resto fica em "Outro".
|
|
190
218
|
# Vazio ou ausente = o Advisor usa "Sonnet 5.5" (fallback).
|
|
@@ -194,7 +222,9 @@ RTK_ENABLED=false
|
|
|
194
222
|
ADVISOR_MODELS="Sonnet 5.5,Opus 5.5,Opus 5,Fable 5.1"
|
|
195
223
|
|
|
196
224
|
|
|
197
|
-
#
|
|
225
|
+
# =============================================================================
|
|
226
|
+
# Data Engineering (só se HUB=DATA)
|
|
227
|
+
# =============================================================================
|
|
198
228
|
# Obrigatório quando HUB=DATA. Omitir o bloco inteiro se o HUB for outro.
|
|
199
229
|
DATA_ORCHESTRATOR=[airflow, prefect, dagster, glue-scheduler]
|
|
200
230
|
DATA_ETL_TOOL=[aws_glue, dbt, spark, pandas]
|
|
@@ -207,7 +237,9 @@ DATA_WAREHOUSE=[redshift, snowflake, bigquery]
|
|
|
207
237
|
DATA_REPO=[data-pipelines, etl-jobs, analytics-pipelines]
|
|
208
238
|
|
|
209
239
|
|
|
210
|
-
#
|
|
240
|
+
# =============================================================================
|
|
241
|
+
# Code quality (opcional)
|
|
242
|
+
# =============================================================================
|
|
211
243
|
# Análise estática / quality gate. Em branco = sem MCP de code quality.
|
|
212
244
|
CODE_QUALITY_TOOL=[sonarqube, codeclimate, deepsource]
|
|
213
245
|
# URL da instância (self-hosted).
|
|
@@ -215,22 +247,18 @@ CODE_QUALITY_URL=
|
|
|
215
247
|
CODE_QUALITY_TOKEN=
|
|
216
248
|
|
|
217
249
|
|
|
218
|
-
#
|
|
250
|
+
# =============================================================================
|
|
251
|
+
# QA / suíte de testes (opcional)
|
|
252
|
+
# =============================================================================
|
|
219
253
|
# Caminho relativo à raiz do projeto.
|
|
220
254
|
# Cypress E2E: cypress | e2e | tests/e2e
|
|
221
255
|
# Unit/integração: tests | test | src/__tests__
|
|
222
256
|
TEST_FOLDER=
|
|
223
257
|
|
|
224
258
|
|
|
225
|
-
#
|
|
226
|
-
#
|
|
227
|
-
#
|
|
228
|
-
QA_SIGNOFF_BRANCHES=main,release/*
|
|
229
|
-
# Validade do sign-off em horas. Mais antigo que isso o CI rejeita.
|
|
230
|
-
QA_SIGNOFF_MAX_AGE=24
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
# --- Reportar bug no próprio Jarvis (opcional) ------------------------------
|
|
259
|
+
# =============================================================================
|
|
260
|
+
# Reportar bug no próprio Jarvis (opcional)
|
|
261
|
+
# =============================================================================
|
|
234
262
|
# URL completa do repositório do Jarvis (oficial por padrão; troque só para um fork interno).
|
|
235
263
|
# Usado pelo skill /jarvis-report-issue, pela CLI do host (gh issue create; login: gh auth login).
|
|
236
264
|
# O repositório do projeto vem do .git, não daqui. Vazio: o upgrade preenche com o oficial.
|
|
@@ -238,7 +266,9 @@ QA_SIGNOFF_MAX_AGE=24
|
|
|
238
266
|
JARVIS_PROJECT=https://github.com/phelipperibeiro/jarvis-framework
|
|
239
267
|
|
|
240
268
|
|
|
241
|
-
#
|
|
269
|
+
# =============================================================================
|
|
270
|
+
# Central docs
|
|
271
|
+
# =============================================================================
|
|
242
272
|
# O registro do que FOI IMPLEMENTADO: um documento completo por funcionalidade e um registro
|
|
243
273
|
# por entrega, gerados pelo /eng.spec-consolidate depois de cada PR. Ligado por padrão.
|
|
244
274
|
# Nunca dentro do versionamento de um repositório de código.
|
|
@@ -179,4 +179,4 @@ eng.work (Fase 0) ← herda
|
|
|
179
179
|
1. ~~**Aplicar CDD nos agents de QA restantes**~~: ✅ `eng.qa.test-architect.md`, `eng.qa.test-planner.md`
|
|
180
180
|
2. ~~**Criar skill de detecção de contexto**~~: ✅ Implementado em `/jarvis-context-detect`
|
|
181
181
|
3. ~~**Adicionar escape hatches explícitos**~~: ✅ Implementado via `--override`
|
|
182
|
-
4. **Integração com
|
|
182
|
+
4. **Integração com o board**: Detectar tipo de tarefa automaticamente pela CLI oficial do board
|