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.
Files changed (89) hide show
  1. package/AGENTS.md +2 -2
  2. package/README.md +11 -34
  3. package/agents/engineering/data/eng.data-engineer.agent.md +3 -3
  4. package/agents/engineering/eng.agent.md +13 -11
  5. package/agents/engineering/eng.dev-code-reviewer.md +19 -4
  6. package/agents/engineering/eng.docs-consolidator.agent.md +2 -2
  7. package/agents/engineering/eng.docs-writer.md +17 -2
  8. package/agents/engineering/qa/eng.qa.quality-champion-task-agent.md +2 -2
  9. package/agents/engineering/qa/eng.qa.test-planner.md +20 -5
  10. package/agents/product/prod.pm-checker.md +16 -1
  11. package/bin/README.md +4 -4
  12. package/bin/commands/init.js +237 -29
  13. package/bin/lib/cli/program.js +7 -11
  14. package/bin/lib/core/sync-engine.js +8 -4
  15. package/bin/lib/utils/frontmatter.js +1 -1
  16. package/bin/lib/utils/paths.js +2 -1
  17. package/bin/lib/utils/version.js +65 -0
  18. package/bin/postinstall.js +7 -31
  19. package/package.json +2 -2
  20. package/rules/AGENTS.md +1 -1
  21. package/rules/engineering/data/data-rules.md +2 -2
  22. package/rules/engineering/eng-rules.md +1 -1
  23. package/rules/engineering/eng-security-rules.md +1 -1
  24. package/rules/engineering/eng.integrations-rules.md +6 -2
  25. package/rules/rtk-rules.md +1 -1
  26. package/rules-on-demand/doc-links-rules.md +2 -2
  27. package/rules-on-demand/engineering/eng.breakdown-subtasks-rules.md +1 -1
  28. package/rules-on-demand/engineering/eng.plan-rules.md +2 -0
  29. package/rules-on-demand/engineering/eng.pr-rules.md +8 -6
  30. package/rules-on-demand/engineering/eng.pre-pr-rules.md +10 -3
  31. package/rules-on-demand/engineering/eng.start-rules.md +7 -5
  32. package/rules-on-demand/engineering/eng.tech-spec-rules.md +9 -7
  33. package/rules-on-demand/engineering/eng.transitions-rules.md +7 -6
  34. package/skills/AGENTS.md +2 -2
  35. package/skills/SKILLS-ROADMAP.md +3 -3
  36. package/skills/eng-backend-arch-c4/assets/example-container.md +4 -4
  37. package/skills/eng-backend-arch-c4/assets/example-context.md +6 -6
  38. package/skills/eng-backend-microservices-trace/SKILL.md +1 -1
  39. package/skills/eng-global-investigation/SKILL.md +4 -0
  40. package/skills/eng-global-pr/SKILL.md +15 -12
  41. package/skills/eng-global-task-comment/SKILL.md +11 -3
  42. package/skills/eng-global-tech-spec/references/delivery-spec.md +28 -21
  43. package/skills/jarvis-docs-central/README.md +4 -4
  44. package/skills/jarvis-docs-central/SKILL.md +5 -3
  45. package/skills/jarvis-evolution-architect/references/exemplos.md +3 -3
  46. package/skills/jarvis-init/SKILL.md +89 -24
  47. package/skills/jarvis-init/assets/setup-guide.md +1 -1
  48. package/skills/jarvis-report-issue/SKILL.md +37 -24
  49. package/skills/product-roadmap-report/SKILL.md +2 -2
  50. package/skills/product-roadmap-report/commands/status.memory.md +1 -1
  51. package/skills/product-roadmap-report/commands/status.roadmap.preview.md +2 -2
  52. package/skills/product-specs/SKILL.md +1 -1
  53. package/skills/product-specs-update/SKILL.md +138 -121
  54. package/templates/ENV-template.md +57 -27
  55. package/templates/cdd-aplicado-a-prompts.md +1 -1
  56. package/templates/engineering/AGENTS-template.md +2 -2
  57. package/templates/engineering/CONTACTS-template.md +1 -1
  58. package/templates/engineering/advisor-template.md +2 -2
  59. package/templates/engineering/architecture-template.md +14 -1
  60. package/templates/engineering/data-contract-template.md +1 -1
  61. package/templates/engineering/plan-template.md +2 -0
  62. package/templates/engineering/tech-spec-delivery-template.md +8 -8
  63. package/templates/engineering/tech-spec-template.md +3 -3
  64. package/templates/product/prod-frd-template.md +1 -1
  65. package/templates/product/prod-prd-template.md +1 -1
  66. package/workflows/AGENTS.md +1 -1
  67. package/workflows/README.md +1 -1
  68. package/workflows/engineering/data/data.contract.md +12 -8
  69. package/workflows/engineering/eng.breakdown-subtasks.md +2 -2
  70. package/workflows/engineering/eng.build-tech-spec.md +1 -1
  71. package/workflows/engineering/eng.create-ard-from-code.md +3 -5
  72. package/workflows/engineering/eng.create-ard.md +3 -5
  73. package/workflows/engineering/eng.create-rfc.md +5 -5
  74. package/workflows/engineering/eng.light-arch.md +1 -1
  75. package/workflows/engineering/eng.plan.md +10 -7
  76. package/workflows/engineering/eng.pr.md +26 -19
  77. package/workflows/engineering/eng.pre-pr.md +126 -27
  78. package/workflows/engineering/eng.spec-consolidate.md +5 -5
  79. package/workflows/engineering/eng.start.md +23 -9
  80. package/workflows/engineering/eng.work.md +4 -4
  81. package/workflows/engineering/qa/eng.qa-release-signoff.md +1 -66
  82. package/workflows/product/prod.roadmap.preview.md +10 -14
  83. package/workflows/product/prod.spec.ard.md +2 -2
  84. package/workflows/product/prod.spec.breakdown.md +2 -2
  85. package/workflows/product/prod.spec.epic.md +4 -4
  86. package/workflows/product/prod.spec.frd.md +3 -3
  87. package/workflows/product/prod.spec.issue.md +3 -3
  88. package/workflows/product/prod.spec.prd.md +5 -5
  89. 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-roadmap-preview`
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 se conecta ao Jira (Atlassian) e às páginas wiki internas para buscar dados ao vivo sobre o roteiro do produto e relatórios de status da equipe.
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
- - Sempre utilize MCPs configurados especificos do `$TASK_MANAGER` utilizado para buscar informações atualizadas (pré-requisito manual: o `/jarvis-init` não configura MCP de board)
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, slack, figma
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 dois
5
- índices atualizados: um local (projeto atual) e um global no Google Drive
6
- (todos os projetos). Trigger: quando um PRD ou FRD é criado ou modificado,
7
- ou quando o usuário pede para sincronizar ou indexar specs.
8
- allowed-tools: Read Write Edit Grep Glob Bash MCP
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: "1.0"
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
- Você é responsável por manter PRDs, FRDs e os índices de specs sempre
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
- O Central Docs é a pasta que centralizamos todas as especificações de produto. Ele serve como referência para todos os projetos e deve ser atualizada sempre que houver mudanças em qualquer spec.
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
- - Pergunte para o usuário qual o path do Centarl Docs, que é onde devemos adicionar e atualizar as especificações de produto.
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 `ENV.md` e extrair as variáveis necessárias:
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
- Se não existir um `ENV.md`, crie executando a skill `jarvis-init` com Skill tool.
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 Completa dos Índices
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
- ```bash
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**, perguntar:
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 path do PRD relacionado?
122
+ → Qual é o id do PRD relacionado? (ex.: PRD-001)
69
123
  ```
70
- Atualizar o frontmatter da FRD com o valor informado antes de continuar.
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 filhas nos dois diretórios:
142
+ Buscar as FRDs de todo o `$PROD_DOCS` (na pasta do PRD ou em pasta própria):
90
143
  ```bash
91
- grep -rl "related_prd:" $PROD_DOCS --include="*.md"
144
+ grep -rlE --include="*.md" --exclude-dir=issues "^id: FRD-" "$PROD_DOCS"
92
145
  ```
93
146
 
94
- Filtrar apenas as que apontam para este PRD. Para cada FRD encontrada,
95
- verificar na seção `## Solução` do PRD se o entry está presente e com
96
- status correto. Atualizar divergências.
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 dos Índices
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
- find $PROD_DOCS -maxdepth 1 -name "*.md" | xargs grep -l "^id: PRD"
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
- Para cada arquivo, extrair via grep: `id`, `name`, `status`
117
- (e `related_prd` nas FRDs).
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
- #### 3.4 Escanear specs no Drive (se MCP disponível)
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 `prod-update-specs`.
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](./frds/frd-001.md) | in_review | Projeto A | [repo-a](url) |
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](./frds/frd-001.md) · `in_review`
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
- ### Índice Global (`specs-index.md` no Drive)
193
- ```markdown
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
- - Tratar Drive como indisponível graciosamente — nunca bloquear o fluxo local
255
- - Reutilizar mapeamentos de projeto/repo já existentes nos índices
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`, `$PROD_DOCS_FRD` e `$CENTRAL_DOCS_REPO` extraídos
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
- # --- Workspace e identidade --------------------------------------------------
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
- # --- Organização (obrigatório — opções vêm do taxonomy.md) -------------------
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
- # --- IDE e pastas ------------------------------------------------------------
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
- # --- Especializações por área -------------------------------------------------
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
- # --- Task manager (opcional) -------------------------------------------------
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
- # --- Controle de versão (opcional) -------------------------------------------
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
- # --- Mensageria (opcional) ---------------------------------------------------
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
- # --- Banco de dados (opcional) -----------------------------------------------
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
- # --- Chat / comunicador (opcional) -------------------------------------------
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
- # --- Object storage (opcional) -----------------------------------------------
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
- # --- Observabilidade (opcional) ----------------------------------------------
190
+ # =============================================================================
191
+ # Observabilidade (opcional)
192
+ # =============================================================================
171
193
  OBSERVABILITY=[sentry, datadog, grafana]
172
194
  TOKEN_OBSERVABILITY=
173
195
  OBSERVABILITY_ORG=
174
196
 
175
197
 
176
- # --- SMTP (opcional) ---------------------------------------------------------
198
+ # =============================================================================
199
+ # SMTP (opcional)
200
+ # =============================================================================
177
201
  SMTP=[google, ses, sendgrid]
178
202
 
179
203
 
180
- # --- RTK — Token Killer (opcional) -------------------------------------------
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
- # --- Advisor (opcional) ------------------------------------------------------
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
- # --- Data Engineering (só se HUB=DATA) ---------------------------------------
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
- # --- Code quality (opcional) -------------------------------------------------
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
- # --- QA / suíte de testes (opcional) -----------------------------------------
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
- # --- QA / release sign-off (opcional) ----------------------------------------
226
- # Branches que exigem sign-off QA antes do deploy (vírgula, aceita glob).
227
- # Em branco = validação no CI desligada.
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
- # --- Central docs -------------------------------------------------------------
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 Jira**: Detectar tipo de tarefa automaticamente via API do Jira
182
+ 4. **Integração com o board**: Detectar tipo de tarefa automaticamente pela CLI oficial do board