jarvis-ai-framework 8.1.0 → 8.3.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 (34) hide show
  1. package/AGENTS.md +2 -0
  2. package/README.md +14 -1
  3. package/agents/engineering/eng.agent.md +13 -11
  4. package/agents/engineering/eng.dev-code-reviewer.md +19 -4
  5. package/agents/engineering/eng.docs-writer.md +17 -2
  6. package/agents/engineering/qa/eng.qa.test-planner.md +20 -5
  7. package/agents/product/prod.pm-checker.md +16 -1
  8. package/bin/README.md +4 -4
  9. package/bin/commands/fork.js +562 -0
  10. package/bin/commands/init.js +228 -32
  11. package/bin/lib/cli/program.js +31 -4
  12. package/bin/lib/core/company-profile.js +92 -0
  13. package/bin/lib/core/sync-engine.js +171 -4
  14. package/package.json +2 -2
  15. package/rules/AGENTS.md +1 -0
  16. package/rules/company-overlay-rules.md +15 -0
  17. package/rules-on-demand/engineering/eng.plan-rules.md +2 -0
  18. package/rules-on-demand/engineering/eng.pre-pr-rules.md +8 -3
  19. package/rules-on-demand/engineering/eng.start-rules.md +7 -5
  20. package/rules-on-demand/engineering/eng.transitions-rules.md +4 -3
  21. package/skills/AGENTS.md +3 -0
  22. package/skills/SKILLS-ROADMAP.md +7 -2
  23. package/skills/jarvis-docs-central/SKILL.md +1 -1
  24. package/skills/jarvis-evolution-architect/references/exemplos.md +3 -3
  25. package/skills/jarvis-fork/SKILL.md +184 -0
  26. package/skills/jarvis-init/SKILL.md +82 -25
  27. package/skills/product-specs-update/SKILL.md +138 -121
  28. package/templates/ENV-template.md +68 -19
  29. package/templates/engineering/architecture-template.md +14 -1
  30. package/templates/engineering/plan-template.md +2 -0
  31. package/workflows/engineering/eng.plan.md +8 -5
  32. package/workflows/engineering/eng.pre-pr.md +84 -18
  33. package/workflows/engineering/eng.spec-consolidate.md +1 -1
  34. package/workflows/engineering/eng.start.md +13 -1
package/AGENTS.md CHANGED
@@ -63,6 +63,7 @@ prompts/
63
63
  │ │ ├── eng-qa/ # Base neutra de QA (+ especializações em QA_SPECIALIZATIONS)
64
64
  │ │ ├── eng-qa-planner/ # Planejamento de testes e análise de gaps de cobertura
65
65
  │ │ ├── jarvis-report-issue/ # Auto-report de bugs no repo do Jarvis (CLI do host: gh)
66
+ │ │ ├── jarvis-fork/ # Fork guiado de um artefato do core para o overlay da empresa (COMPANY_PROFILE; CLI jarvis fork)
66
67
  │ │ ├── eng-global-task-comment/ # Comentário no card (Jira/GitHub/GitLab, pela CLI do vendor)
67
68
  │ │ ├── jarvis-list-specializations/ # Lista especializações de stack instaladas e registradas
68
69
  │ │ ├── jarvis-create-specialization/ # Cria uma especialização de stack a partir do código do projeto e a registra
@@ -199,6 +200,7 @@ jarvis list # Listar agents, skills e wo
199
200
  jarvis install-rtk # Instalar RTK (token killer — economia 60-90% em tokens de shell)
200
201
  jarvis tokens [--hub X --position Y --area Z --squad W] [--rtk] [--json] # Estimar o que carrega no início da sessão (perfil do ENV.md se sem flags)
201
202
  jarvis map <nome> [--depth N] [--reverse] # Mapa de chamadas de um workflow, skill ou agente (lê só as tabelas padronizadas)
203
+ jarvis fork [nome] [--list] [--update [--diff]] [--delete] [--candidate] # Overlay de empresa (#199): copia um artefato do core para $IDE/overlays/{COMPANY_PROFILE}/ com carimbo; lista; recarimba; remove
202
204
  jarvis daily-report [--days N] [--json] # Junta os daily.md das sessões por dia (usado pelo /eng.daily-report)
203
205
  ```
204
206
 
package/README.md CHANGED
@@ -100,7 +100,9 @@ npm install -g jarvis-ai-framework@latest
100
100
  jarvis init --upgrade --ide {ide} # assets + variáveis novas do ENV.md + documentos para as pastas novas
101
101
  ```
102
102
 
103
- Depois, na IDE, rode `/jarvis-init upgrade`: ele vai direto ao Upgrade (C) e cuida do que precisa de conversa (Central docs antigo e o passo das stacks). O `--upgrade` só **acrescenta** chaves ao `ENV.md`: nenhuma chave existente muda. Ele mostra os documentos que estão em caminhos antigos e pergunta antes de movê-los (`--yes` move sem perguntar; sem terminal interativo, não move). Também lista os skills instalados que saíram do framework e pergunta antes de removê-los (`--remove-stale` remove sem perguntar só os listados; skills registrados em `*_SPECIALIZATIONS` nunca são listados).
103
+ `jarvis init --ide {ide}` numa pasta já instalada mostra o menu **Atualizar** (Enter, o mesmo que o `--upgrade`) / **Reinstalar** (o mesmo que o `--force`) / **Cancelar**, com a versão instalada e a do pacote. No fim, ele só manda rodar o `/jarvis-init upgrade` quando há pendência.
104
+
105
+ Na IDE, o `/jarvis-init upgrade` vai direto ao Upgrade (C), cuida do que precisa de conversa (Central docs antigo e o passo das stacks) e, no fim, valida o `ENV.md` inteiro: pergunta cada problema e regrava o arquivo separado por assunto, na ordem do template. O `--upgrade` só **acrescenta** chaves ao `ENV.md`, no fim do arquivo: nenhuma chave existente muda. Ele mostra os documentos que estão em caminhos antigos e pergunta antes de movê-los (`--yes` move sem perguntar; sem terminal interativo, não move). Também lista os skills instalados que saíram do framework e pergunta antes de removê-los (`--remove-stale` remove sem perguntar só os listados; skills registrados em `*_SPECIALIZATIONS` nunca são listados).
104
106
 
105
107
  **Instalou via clone local** (fluxo de [Desenvolvendo o Jarvis localmente](#desenvolvendo-o-jarvis-localmente)) — quando o repo no GitHub ganhar commits novos, sincronize assim:
106
108
 
@@ -203,6 +205,17 @@ Guia completo: [`docs/especializacoes-de-stack.md`](docs/especializacoes-de-stac
203
205
 
204
206
  ---
205
207
 
208
+ ## Funciona com qualquer empresa
209
+
210
+ A stack vem do código; o **processo** vem da empresa, e muda de cliente para cliente: de onde nasce a branch, como se entrega, quais gates valem, campos do MR. `COMPANY_PROFILE` no `ENV.md` (nasce como `stark-industries`, o overlay padrão) aponta para `.{ide}/overlays/{perfil}/`, uma pasta que espelha o core e guarda só o que a empresa substituiu. O `jarvis init --upgrade` atualiza o core e nunca grava arquivo no overlay.
211
+
212
+ - **`/jarvis-fork {artefato}`**: uma conversa até achar a seção do core que não serve, o menor ajuste, a simulação e o fork no overlay, só com o Sim; `--list`, `--update`, `--delete`
213
+ - **Dois resolvers**: uma rule universal confere o overlay na chamada (workflows, skills, agentes, templates); o `jarvis init` e o `/jarvis-init` copiam por cima as `rules/` do overlay na instalação
214
+
215
+ Guia completo: [`docs/overlay-de-empresa.md`](docs/overlay-de-empresa.md).
216
+
217
+ ---
218
+
206
219
  ## Camadas
207
220
 
208
221
  O Jarvis e organizado em 5 camadas.
@@ -175,20 +175,26 @@ Para detecção automática de contexto de tarefas:
175
175
  - Uso: `/jarvis-context-detect [jira-key]` ou `/jarvis-context-detect --override tipo=hotfix`
176
176
  - Chamado automaticamente pelo workflow `eng.start`
177
177
 
178
- ### eng-platform (performance)
179
- Quando a tarefa envolver análise ou otimização de performance, observabilidade, gargalos, latência, load testing, chaos engineering ou cache multi-camada — temas 7, 14, 15 e 16 da base de platform:
178
+ ### eng-platform
179
+ Quando a tarefa envolver infraestrutura, performance ou segurança de infraestrutura — base de platform, complementada pela especialização registrada em `PLATFORM_SPECIALIZATIONS`:
180
180
  - Arquivo: `$IDE/skills/eng-platform/SKILL.md`
181
+ - Performance: análise ou otimização de performance, observabilidade, gargalos, latência, load testing, chaos engineering ou cache multi-camada (temas 7, 14, 15 e 16)
182
+ - Segurança: segurança de infraestrutura, fundamentos de segurança da informação (risco, ameaças, identidade, resposta a incidente, GRC, privacidade) ou auditoria de dependências/supply chain (temas 9 e 13)
183
+ - Segurança de código de aplicação (OWASP, inputs, auth) já é padrão embutido em `eng-backend`/`eng-frontend`
181
184
 
182
185
  ### eng-ai
183
186
  Quando a tarefa envolver features com LLM, sistemas RAG, agentes de IA, chatbots, embeddings, busca vetorial ou integrações com modelos de IA:
184
187
  - Arquivo: `$IDE/skills/eng-ai/SKILL.md`
185
188
 
186
- ### Backend e frontend (skill base + especializações)
187
- Quando a tarefa envolver **backend** (APIs, autenticação, workers e jobs assíncronos, filas e mensageria, integrações externas, cache, banco de dados) ou **frontend** (componentes, estado, estilos, performance de UI, acessibilidade, testes de interface), não escolha o skill por nome: aplique a regra `$IDE/rules/engineering/eng.specializations-rules.md` para a área envolvida. Ela carrega o skill base e as especializações que o projeto registrou no `ENV.md`:
188
- - Backend: `$IDE/skills/eng-backend/SKILL.md` + itens de `BACKEND_SPECIALIZATIONS`
189
- - Frontend: `$IDE/skills/eng-frontend/SKILL.md` + itens de `FRONTEND_SPECIALIZATIONS`
189
+ ### eng-backend
190
+ Quando a tarefa envolver backend (APIs, autenticação, workers e jobs assíncronos, filas e mensageria, integrações externas, cache, banco de dados). Não escolha o skill por nome: aplique a regra `$IDE/rules/engineering/eng.specializations-rules.md` para a área backend, que carrega o skill base e as especializações de `BACKEND_SPECIALIZATIONS` do `ENV.md`:
191
+ - Arquivo: `$IDE/skills/eng-backend/SKILL.md`
190
192
  - Workflows relacionados: `eng.start` (arquitetura), `eng.work` (implementação), `eng.debug` (troubleshooting)
191
- - Para ver o que está instalado e registrado: `/jarvis-list-specializations`
193
+
194
+ ### eng-frontend
195
+ Quando a tarefa envolver frontend (componentes, estado, estilos, performance de UI, acessibilidade, testes de interface). Não escolha o skill por nome: aplique a regra `$IDE/rules/engineering/eng.specializations-rules.md` para a área frontend, que carrega o skill base e as especializações de `FRONTEND_SPECIALIZATIONS` do `ENV.md`:
196
+ - Arquivo: `$IDE/skills/eng-frontend/SKILL.md`
197
+ - Para ver o que está instalado e registrado (backend e frontend): `/jarvis-list-specializations`
192
198
 
193
199
  ### eng-automation
194
200
  Quando a tarefa envolver web scraping, extração de dados de páginas web, automação de browser com Puppeteer, parsing de HTML/XML/PDF, pipelines ETL leves ou monitoramento de mudanças em sites:
@@ -200,10 +206,6 @@ Quando precisar planejar estratégia de testes, validar fluxos completos de usu
200
206
  - Arquivo: `$IDE/skills/eng-qa/SKILL.md`
201
207
  - Workflows relacionados: `eng.pr` (validação pré-PR), `eng.pre-pr` (cobertura de testes E2E)
202
208
 
203
- ### eng-platform
204
- Quando a tarefa envolver segurança de infraestrutura, fundamentos de segurança da informação (risco, ameaças, identidade, resposta a incidente, GRC, privacidade) ou auditoria de dependências/supply chain — base de platform, complementada pela especialização registrada em `PLATFORM_SPECIALIZATIONS`:
205
- - Arquivo: `$IDE/skills/eng-platform/SKILL.md` (temas 9 e 13)
206
- - Segurança de código de aplicação (OWASP, inputs, auth) já é padrão embutido em `eng-backend`/`eng-frontend`
207
209
 
208
210
  ---
209
211
 
@@ -6,18 +6,18 @@ model: opus
6
6
  color: green
7
7
  ---
8
8
 
9
- # code-reviewe
9
+ # code-reviewer
10
10
  Você é um especialista em revisão de código responsável por analisar mudanças de código em preparação para a abertura de um Pull Request.
11
11
  Seu objetivo é fornecer feedback abrangente e acionável, ajudando a garantir qualidade de código e prontidão para PR.
12
12
 
13
13
  Processo de Revisão
14
14
  1. Coleta de Informações sobre as Mudanças
15
- Primeiro, entenda exatamente o que foi alterado:
15
+ Primeiro, entenda exatamente o que foi alterado (`{BRANCH_BASE}` é a branch base recebida de quem chama (o `/eng.pre-pr` passa a `Branch base:` do `architecture.md`); sem ela, `origin/main`.):
16
16
  - Execute git status para verificar mudanças não commitadas
17
17
  - Execute git diff para visualizar mudanças não staged
18
18
  - Execute git diff --staged para visualizar mudanças staged
19
- - Execute git log origin/main..HEAD --oneline para ver os commits da branch atual
20
- - Execute git diff origin/main...HEAD para ver todas as mudanças comparadas com a branch principal
19
+ - Execute git log {BRANCH_BASE}..HEAD --oneline para ver os commits da branch atual
20
+ - Execute git diff {BRANCH_BASE}...HEAD para ver todas as mudanças comparadas com a branch base
21
21
 
22
22
  2. Análise das Mudanças de Código
23
23
  Para cada arquivo alterado, avalie:
@@ -71,6 +71,21 @@ Avalie os testes:
71
71
 
72
72
  Nenhuma — agente autocontido, não depende de skill
73
73
 
74
+ ## Quando chamado pelo `/eng.pre-pr`
75
+
76
+ O `/eng.pre-pr` passa a branch base (a `Branch base:` do `architecture.md`) e, da rodada 2 em diante, o diff incremental desde a rodada anterior. Use essa base no lugar de `origin/main` nos comandos de diff e log. Só aponte: não edite nem grave arquivos.
77
+
78
+ Devolva uma lista de lacunas, uma por item, com os campos da tabela de lacunas do `gate-checklist.md`:
79
+
80
+ - **Lacuna**: o que falta ou está errado, terminando com "(item 2)", o número deste gate na lista do `/eng.pre-pr`.
81
+ - **Onde**: `arquivo:linha` com o trecho, ou o comando que a revelou e o resultado.
82
+ - **Por que importa**: o impacto, em linguagem simples.
83
+ - **Refutação**: o que derrubaria esta lacuna, com o lugar a conferir.
84
+ - **Sugestão**: como resolver.
85
+ - **Severidade**: 🔴 Bloqueador, 🟡 Importante ou ⚪ Menor (redação é ⚪).
86
+
87
+ Lista vazia é uma resposta válida. Fora do `/eng.pre-pr`, vale o formato de resposta deste arquivo.
88
+
74
89
  ## Formato da Resposta
75
90
  Forneça uma revisão estruturada no seguinte formato:
76
91
 
@@ -17,6 +17,21 @@ Fonte de verdade do processo e do formato de entrega da documentação:
17
17
 
18
18
  ---
19
19
 
20
+ ## Quando chamado pelo `/eng.pre-pr`
21
+
22
+ O `/eng.pre-pr` passa a branch base (a `Branch base:` do `architecture.md`) e, da rodada 2 em diante, o diff incremental desde a rodada anterior. Use essa base no lugar de `origin/main` nos comandos de diff e log. Só aponte: não edite nem grave arquivos. Não proponha aplicar as atualizações nem pergunte se deve aplicá-las: cada documentação desatualizada vira uma lacuna.
23
+
24
+ Devolva uma lista de lacunas, uma por item, com os campos da tabela de lacunas do `gate-checklist.md`:
25
+
26
+ - **Lacuna**: o que falta ou está errado, terminando com "(item 9)", o número deste gate na lista do `/eng.pre-pr`.
27
+ - **Onde**: `arquivo:linha` com o trecho, ou o comando que a revelou e o resultado.
28
+ - **Por que importa**: o impacto, em linguagem simples.
29
+ - **Refutação**: o que derrubaria esta lacuna, com o lugar a conferir.
30
+ - **Sugestão**: como resolver.
31
+ - **Severidade**: 🔴 Bloqueador, 🟡 Importante ou ⚪ Menor (redação é ⚪).
32
+
33
+ Lista vazia é uma resposta válida. Fora do `/eng.pre-pr`, vale o formato de resposta deste arquivo.
34
+
20
35
  ## Fluxo de Trabalho
21
36
 
22
37
  ### 1. Analisar Mudanças de Código
@@ -26,8 +41,8 @@ Comece entendendo exatamente o que mudou:
26
41
  - Execute `git status` para verificar mudanças não commitadas
27
42
  - Execute `git diff` para visualizar mudanças não staged
28
43
  - Execute `git diff --staged` para visualizar mudanças staged
29
- - Execute `git log origin/main..HEAD --oneline` para ver os commits da branch
30
- - Execute `git diff origin/main...HEAD` para ver todas as mudanças da branch
44
+ - Execute `git log {BRANCH_BASE}..HEAD --oneline` para ver os commits da branch
45
+ - Execute `git diff {BRANCH_BASE}...HEAD` para ver todas as mudanças da branch (`{BRANCH_BASE}` é a branch base recebida de quem chama (o `/eng.pre-pr` passa a `Branch base:` do `architecture.md`); sem ela, `origin/main`.)
31
46
 
32
47
  Foque especialmente em:
33
48
  - Novas funcionalidades
@@ -21,10 +21,25 @@ Aplicar quando invocado via `eng.qa-refinement-entry` ou quando o argumento rece
21
21
 
22
22
  **Modo B — Análise de Cobertura (pós-código)**
23
23
  Aplicar quando invocado via `eng-qa`, `eng-qa-planner` ou quando houver código implementado na branch (git diff retorna resultados).
24
- - Fonte de dados: `git diff origin/main...HEAD`
24
+ - Fonte de dados: `git diff {BRANCH_BASE}...HEAD` (`{BRANCH_BASE}` é a branch base recebida de quem chama (o `/eng.pre-pr` passa a `Branch base:` do `architecture.md`); sem ela, `origin/main`.)
25
25
  - Saída: `$ENG_DOCS/qa/{task-id}-test_coverage_branch_report.md`
26
26
 
27
- Regra de decisão: se `git diff origin/main...HEAD` retornar vazio, operar em Modo A. Se retornar código, operar em Modo B.
27
+ Regra de decisão: se `git diff {BRANCH_BASE}...HEAD` retornar vazio, operar em Modo A. Se retornar código, operar em Modo B.
28
+
29
+ ## Quando chamado pelo `/eng.pre-pr`
30
+
31
+ O `/eng.pre-pr` passa a branch base (a `Branch base:` do `architecture.md`) e, da rodada 2 em diante, o diff incremental desde a rodada anterior. Use essa base no lugar de `origin/main` nos comandos de diff e log. Só aponte: não edite nem grave arquivos. É o Modo B, mas sem gravar o relatório em `$ENG_DOCS/qa/`: as lacunas voltam só na resposta.
32
+
33
+ Devolva uma lista de lacunas, uma por item, com os campos da tabela de lacunas do `gate-checklist.md`:
34
+
35
+ - **Lacuna**: o que falta ou está errado, terminando com "(item 3)", o número deste gate na lista do `/eng.pre-pr`.
36
+ - **Onde**: `arquivo:linha` com o trecho, ou o comando que a revelou e o resultado.
37
+ - **Por que importa**: o impacto, em linguagem simples.
38
+ - **Refutação**: o que derrubaria esta lacuna, com o lugar a conferir.
39
+ - **Sugestão**: como resolver.
40
+ - **Severidade**: 🔴 Bloqueador, 🟡 Importante ou ⚪ Menor (redação é ⚪).
41
+
42
+ Lista vazia é uma resposta válida. Fora do `/eng.pre-pr`, vale o formato de resposta deste arquivo.
28
43
 
29
44
  ## Skills Disponíveis
30
45
 
@@ -290,9 +305,9 @@ Usar quando: invocado via `eng-qa` ou `eng-qa-planner`, ou quando git diff retor
290
305
 
291
306
  Comece entendendo o que mudou na branch atual:
292
307
 
293
- - Execute `git diff origin/main...HEAD --name-only` para listar todos os arquivos alterados
294
- - Execute `git diff origin/main...HEAD` para ver as mudanças em detalhe
295
- - Execute `git log origin/main..HEAD --oneline` para entender o histórico de commits
308
+ - Execute `git diff {BRANCH_BASE}...HEAD --name-only` para listar todos os arquivos alterados
309
+ - Execute `git diff {BRANCH_BASE}...HEAD` para ver as mudanças em detalhe
310
+ - Execute `git log {BRANCH_BASE}..HEAD --oneline` para entender o histórico de commits
296
311
  - Foque especialmente em:
297
312
  - Novas funções/métodos/classes
298
313
  - Lógica modificada em código existente
@@ -28,7 +28,7 @@ Em seguida, você deve:
28
28
  - quais mudanças não estão alinhadas.
29
29
 
30
30
  Formato da Resposta
31
- Você deve fornecer sua resposta exatamente no seguinte formato:
31
+ Você deve fornecer sua resposta exatamente no seguinte formato (quando chamado pelo `/eng.pre-pr`, use o formato da seção "Quando chamado pelo `/eng.pre-pr`"):
32
32
 
33
33
  ```
34
34
  [nome da branch]
@@ -51,6 +51,21 @@ Você deve fornecer sua resposta exatamente no seguinte formato:
51
51
  Regras Importantes
52
52
  Não faça nenhuma alteração no código ou nos requisitos, a menos que o usuário solicite explicitamente. Seu papel é avaliar e reportar, não corrigir.
53
53
 
54
+ ## Quando chamado pelo `/eng.pre-pr`
55
+
56
+ O `/eng.pre-pr` passa a branch base (a `Branch base:` do `architecture.md`) e, da rodada 2 em diante, o diff incremental desde a rodada anterior. Use essa base no lugar de `origin/main` nos comandos de diff e log. Só aponte: não edite nem grave arquivos. Compare as mudanças com os documentos do projeto (os "Master Docs") como descrito acima.
57
+
58
+ Devolva uma lista de lacunas, uma por item, com os campos da tabela de lacunas do `gate-checklist.md`:
59
+
60
+ - **Lacuna**: o que falta ou está errado, terminando com "(item 1)", o número deste gate na lista do `/eng.pre-pr`.
61
+ - **Onde**: `arquivo:linha` com o trecho, ou o comando que a revelou e o resultado.
62
+ - **Por que importa**: o impacto, em linguagem simples.
63
+ - **Refutação**: o que derrubaria esta lacuna, com o lugar a conferir.
64
+ - **Sugestão**: como resolver.
65
+ - **Severidade**: 🔴 Bloqueador, 🟡 Importante ou ⚪ Menor (redação é ⚪).
66
+
67
+ Lista vazia é uma resposta válida. Fora do `/eng.pre-pr`, vale o formato de resposta deste arquivo.
68
+
54
69
  ## Skills Disponíveis
55
70
 
56
71
  Nenhuma — agente autocontido, não depende de skill
package/bin/README.md CHANGED
@@ -11,7 +11,7 @@ bin/
11
11
  ├── commands/ # Um arquivo por comando. Lógica pura, zero commander.
12
12
  │ ├── init.js, list.js, info.js, whoami.js, ...
13
13
  │ ├── docs-sync.js, docs-publish.js
14
- │ └── install-rtk.js, tokens.js, map.js
14
+ │ └── install-rtk.js, tokens.js, map.js, fork.js
15
15
  └── lib/
16
16
  ├── cli/
17
17
  │ ├── program.js # Único lugar que monta o commander — ver "Arquitetura"
@@ -25,7 +25,7 @@ bin/
25
25
  ├── tasks/
26
26
  │ └── comment.js # Comentário no card (jira/github/gitlab) pelo cli-runner — mesmo padrão
27
27
  ├── config/ # ide-config.js (fonte de verdade de IDEs), constants.js
28
- ├── core/ # scanner.js, sync-engine.js, profile-filter.js, token-report.js
28
+ ├── core/ # scanner.js, sync-engine.js (inclui o RuleResolver do overlay), profile-filter.js, token-report.js, company-profile.js (COMPANY_PROFILE e o default stark-industries)
29
29
  ├── docs/ # Central docs: fetch/publish pelo adaptador + validação de frontmatter
30
30
  │ ├── validate-frontmatter.js # Valida/extrai frontmatter (feature, delivery e documentos de trabalho: PRD, FRD, épico, história, tarefa, ARD, RFC, QA)
31
31
  │ ├── fetch-file.js # openStorageFromEnv() + fetchFile() — `docs sync`/`docs fetch`/`docs publish`
@@ -49,7 +49,7 @@ bin/commands/*.js → lógica de negócio pura: async (flags) => {...}
49
49
 
50
50
  **Por que separar assim?** `bin/commands/*.js` nunca importa `commander` nem sabe o que é um `Command`. Cada arquivo só recebe um objeto `flags` e faz o que precisa. Isso significa:
51
51
  - Testar a lógica de um comando não exige simular argv/commander — chama a função direto com um objeto.
52
- - Trocar de biblioteca de CLI um dia (se um dia fizer sentido) significa reescrever só `program.js`, não os 10 arquivos de comando.
52
+ - Trocar de biblioteca de CLI um dia (se um dia fizer sentido) significa reescrever só `program.js`, não os arquivos de `bin/commands/`.
53
53
  - `program.js` é o **mapa completo** do CLI: para saber todo comando que existe, todas as flags que cada um aceita, é o único arquivo que precisa abrir.
54
54
 
55
55
  ## O adapter: commander → formato antigo de `flags`
@@ -124,7 +124,7 @@ if (fileURLToPath(import.meta.url) === process.argv[1]) {
124
124
  ## Testes
125
125
 
126
126
  - `npm run test:comandos` — valida que toda referência a comando/skill nos workflows e skills existe de fato (não testa o CLI em runtime).
127
- - `npm run test:filtro` — testes unitários de `profile-filter.js`, `token-report.js`, `flow-map`, `env-loader.js`, `sync-engine.js`, `vcs/api.js`, `tasks/comment.js`, `integrations/` (catálogo e runner) e do upgrade.
127
+ - `npm run test:filtro` — testes unitários de `profile-filter.js`, `token-report.js`, `flow-map`, `env-loader.js`, `sync-engine.js`, `vcs/api.js`, `tasks/comment.js`, `integrations/` (catálogo e runner) e do upgrade, além dos testes que guardam o texto de workflows e rules (por exemplo, `gate-checklist-rodadas`, `publish-comments-rules` e `pre-pr-criterio`). A lista completa é o script `test:filtro` do `package.json`.
128
128
  - Não há teste automatizado de ponta a ponta do CLI (`jarvis <comando>` real) — a camada de dispatch (`program.js`, `bin/commands/*.js`) não é cobrida pelos testes unitários. Qualquer mudança ali precisa de validação manual dos comandos afetados.
129
129
 
130
130
  ### Como testar código que lê `fs`/rede sem mockar módulo