jarvis-ai-framework 3.0.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/agents/README.md +2 -0
  2. package/agents/engineering/eng.advisor.agent.md +56 -0
  3. package/agents/product/prod.discovery-interviewer.md +1 -1
  4. package/bin/README.md +14 -14
  5. package/bin/commands/docs-publish.js +50 -92
  6. package/bin/commands/docs-sync.js +30 -63
  7. package/bin/lib/cli/program.js +23 -25
  8. package/bin/lib/docs/fetch-file.js +29 -26
  9. package/bin/lib/docs/publish-file.js +89 -161
  10. package/bin/lib/docs/storage/build-index.js +87 -0
  11. package/bin/lib/docs/storage/filesystem.js +203 -0
  12. package/bin/lib/docs/storage/index.js +75 -0
  13. package/bin/lib/docs/validate-frontmatter.js +14 -4
  14. package/bin/lib/vcs/api.js +0 -125
  15. package/package.json +2 -2
  16. package/rules/AGENTS.md +12 -9
  17. package/rules/engineering/eng.integrations-rules.md +5 -2
  18. package/rules/product/prod-rules.md +4 -5
  19. package/rules-on-demand/engineering/eng.pre-pr-rules.md +1 -1
  20. package/rules-on-demand/engineering/eng.start-rules.md +2 -0
  21. package/rules-on-demand/product/prod.guided-rules.md +104 -0
  22. package/skills/eng-global-task-comment/SKILL.md +1 -1
  23. package/skills/jarvis-docs-central/README.md +57 -269
  24. package/skills/jarvis-docs-central/SKILL.md +126 -296
  25. package/skills/jarvis-init/SKILL.md +47 -7
  26. package/templates/AGENTS.md +2 -0
  27. package/templates/ENV-template.md +30 -5
  28. package/templates/engineering/ARD-template.md +39 -6
  29. package/templates/engineering/advisor-template.md +65 -0
  30. package/templates/engineering/architecture-template.md +53 -4
  31. package/templates/product/prod-breakdown-template.md +20 -2
  32. package/templates/product/prod-discovery-template.md +24 -1
  33. package/templates/product/prod-epic-template.md +32 -1
  34. package/templates/product/prod-frd-template.md +29 -2
  35. package/templates/product/prod-issue-template.md +36 -1
  36. package/templates/product/prod-prd-template.md +33 -2
  37. package/workflows/engineering/eng.build-tech-spec.md +2 -2
  38. package/workflows/engineering/eng.create-ard-from-code.md +9 -11
  39. package/workflows/engineering/eng.create-ard.md +15 -13
  40. package/workflows/engineering/eng.create-rfc.md +8 -10
  41. package/workflows/engineering/eng.plan.md +4 -26
  42. package/workflows/engineering/eng.pr.md +7 -39
  43. package/workflows/engineering/eng.pre-pr.md +7 -36
  44. package/workflows/engineering/eng.rpa.robot.md +4 -2
  45. package/workflows/engineering/eng.start.md +38 -37
  46. package/workflows/engineering/eng.work.md +7 -22
  47. package/workflows/product/prod.roadmap.preview.md +4 -1
  48. package/workflows/product/prod.spec.ard.md +7 -3
  49. package/workflows/product/prod.spec.breakdown.md +7 -3
  50. package/workflows/product/prod.spec.clarify.md +5 -1
  51. package/workflows/product/prod.spec.discovery.md +7 -3
  52. package/workflows/product/prod.spec.epic.md +13 -11
  53. package/workflows/product/prod.spec.frd.md +15 -13
  54. package/workflows/product/prod.spec.issue.md +5 -1
  55. package/workflows/product/prod.spec.md +3 -1
  56. package/workflows/product/prod.spec.prd.md +15 -13
  57. package/workflows/warm-up.md +3 -3
  58. package/bin/lib/docs/redis-cache.js +0 -49
  59. package/bin/lib/vcs/fetch-raw.js +0 -42
@@ -25,7 +25,6 @@ Este comando executa a **implementação de código** seguindo o plano de execu
25
25
  |-------|-------|----------|
26
26
  | Cabeçalho (agente) | `eng.agent` (agente) | Sempre — identidade do workflow |
27
27
  | Fase 0 › 0.1 Verificar ou Gerar Contexto da Sessão | `/jarvis-context-detect` | Se `ENABLE_CDD=true` e o `context.md` não existir (obrigatório antes da Fase 1) |
28
- | Fase 0.5: Comentário no card — Início | `/eng-global-task-comment` | Se `TASK_MANAGER` estiver preenchido (freelance pula) |
29
28
  | Fase 3 › 3.1 Implementar Código (skill de domínio) | `/eng-frontend` (via `eng.specializations-rules.md`) | Se o domínio da feature for frontend (componentes, UI, estado, estilos, bundle, a11y); a regra também carrega `FRONTEND_SPECIALIZATIONS` |
30
29
  | Fase 3 › 3.1 Implementar Código (skill de domínio) | `/eng-backend` (via `eng.specializations-rules.md`) | Se o domínio da feature for backend (endpoints, auth, workers, filas, cache, banco, integrações); a regra também carrega `BACKEND_SPECIALIZATIONS` |
31
30
  | Fase 3 › 3.1 Implementar Código (skill de domínio) | `/eng-automation` (via `eng.specializations-rules.md`) | Se o domínio da feature for RPA, scraping, extração de dados, ETL ou parsing; a regra também carrega `AUTOMATION_SPECIALIZATIONS` |
@@ -33,7 +32,8 @@ Este comando executa a **implementação de código** seguindo o plano de execu
33
32
  | Fase 3 › 3.3.1 Identificar Gaps de Teste | `eng.qa.test-planner` (agente) | Sempre, depois de implementar o código da fase |
34
33
  | Fase 3 › 3.3.2 Implementar Testes Faltantes (Opção A) | `eng.qa.testing-engineer` (agente) | Se o test-planner identificar gaps e a estratégia do `architecture.md` seção 6.5 indicar testes manuais (unitário/integração) |
35
34
  | Fase 3 › 3.3.2 Implementar Testes Faltantes (Opção B) | `/eng-qa` | Se a estratégia do `architecture.md` seção 6.5 indicar uma especialização registrada em `QA_SPECIALIZATIONS` |
36
- | Fase 6 › 6.2 Se Todas as Fases Foram Concluídas | `/eng-global-task-comment` | Se `TASK_MANAGER` estiver preenchido e todas as fases estiverem concluídas (freelance pula) |
35
+ | Fase 3 › 3.1 Implementar Código (exceção) | `eng.advisor.agent` (agente) | Só por exceção: questão nova em aberto, com o Advisor habilitado no `eng.start` (cabeçalho do `architecture.md`) |
36
+ | Fase 5 › 5.4 e "Se houver bloqueio técnico" | `/eng-global-task-comment` | Se houver desvio do plano: mudança de direção, fase bloqueada ou questão nova consultada ao Advisor (freelance pula) |
37
37
 
38
38
  ---
39
39
 
@@ -152,20 +152,6 @@ Use as características do projeto detectadas:
152
152
 
153
153
  ---
154
154
 
155
- ## Fase 0.5: Comentário no card — Início
156
-
157
- Pular se `TASK_MANAGER` estiver vazio (freelance).
158
-
159
- Antes de iniciar a implementação, registrar início:
160
-
161
- ```
162
- /eng-global-task-comment {TASK_MANAGER_KEY} ⚙️ [Jarvis] Iniciando implementação - Fase {N} do plano
163
- ```
164
-
165
- > Usa o skill `/eng-global-task-comment`. Não bloquear se falhar.
166
-
167
- ---
168
-
169
155
  ## Fase 1: Leitura da Sessão
170
156
 
171
157
  ### 1.1 Carregar Arquivos
@@ -250,6 +236,8 @@ Para cada tarefa da fase:
250
236
  - Testes unitários para cada função/método
251
237
  - Cobrir casos de sucesso e erro
252
238
 
239
+ **Questão nova em aberto (exceção).** O ideal é que todas as questões tenham sido levantadas no `eng.start`. Se surgir uma nova e o cabeçalho do `architecture.md` indicar um Advisor, consulte `eng.advisor.agent` com o Prompt 2 de `$IDE/templates/engineering/advisor-template.md` (refaça o Prompt 1 se o subagente não existir mais), acrescente a questão à seção 8 marcada "levantada no `eng.work`", adote a sugestão do Advisor e poste o comentário de auditoria com `/eng-global-task-comment` (é desvio do plano; cite-o no PR como lacuna do `eng.start`). Sem Advisor, pergunte ao usuário.
240
+
253
241
  ### 3.2 Executar Validações Locais
254
242
 
255
243
  Após implementar:
@@ -429,6 +417,8 @@ Atualize o `plan.md`:
429
417
  - **Atenção**: {ponto importante para próximas fases}
430
418
  ```
431
419
 
420
+ Se o comentário registrar uma **mudança de direção** (desvio do plano), comente também no card com `/eng-global-task-comment`, dizendo o que mudou e por quê (freelance pula).
421
+
432
422
  ### 5.3 Commit da Fase (GitFlow)
433
423
 
434
424
  Após validação do usuário e atualização do `plan.md`, commitar a fase na branch atual:
@@ -494,12 +484,6 @@ Refs: TASK-123"
494
484
 
495
485
  ### 6.2 Se Todas as Fases Foram Concluídas
496
486
 
497
- **Comentário no card — Conclusão** (pular se freelance):
498
-
499
- ```
500
- /eng-global-task-comment {TASK_MANAGER_KEY} ✅ [Jarvis] Implementação concluída - todas as {N} fases completadas. Commits realizados por fase.
501
- ```
502
-
503
487
  ```
504
488
  🎉 TODAS AS FASES CONCLUÍDAS!
505
489
 
@@ -559,5 +543,6 @@ Refs: TASK-123"
559
543
  ### Se houver bloqueio técnico:
560
544
 
561
545
  → Documente no plan.md como `[Bloqueada 🚫]`
546
+ → Comente o bloqueio no card com `/eng-global-task-comment` (desvio do plano; freelance pula)
562
547
  → Explique o bloqueio ao usuário
563
548
  → Sugira alternativas se possível
@@ -3,12 +3,15 @@ name: prod.roadmap.preview
3
3
  description: Conhecer e ter visibilidade do roadmap de entregas planejadas do produto, como períodos de entrega, nome dos projetos e responsáveis.
4
4
  auto_execution_mode: 3
5
5
  env_file: "@/ENV.md"
6
+ recommended_model: opus
6
7
  model_tier: high
7
8
  model_justification: Gestores e time precisam entender quais as próximas prioridades de entrega que serão feitas pelos times baseados nas informações disponíveis no projeto e também no task manager utilizado pela empresa.
8
9
  ---
9
10
 
10
11
  # Roadmap Preview
11
12
 
13
+ > 🎓 **Modo de condução**: leia `PROD_MODE` no `$IDE/ENV.md`. Se for `developer-guided`, **antes de começar leia `$IDE/rules-on-demand/product/prod.guided-rules.md` e siga-o** em toda a conversa. Vazio ou `product-led`: siga este fluxo como está.
14
+
12
15
  Este comando tem como objetivo de buscar e trazer informações sobre o roadmap de entregas planejadas do produto, como períodos de entrega, nome dos projetos e responsáveis.
13
16
 
14
17
  Antes de iniciar, revise o arquivo de regras invioláveis em `$PROD_RULES/**/*`. Se você não estiver familiarizado com essa variável, leia as regras diretamente na pasta `.$IDE/rules/product/**/*.*`.
@@ -23,7 +26,7 @@ Utilize o `$ARGUMENTS` que o usuário passar como ponto de partida e para entend
23
26
  - Sempre identifique o quadrimestre atual e o próximo com base na data de hoje.
24
27
  - Utilize o MCP disponível relacionado ao $TASK_MANAGER utilizado pelo usuário.
25
28
  - Antes de qualquer coisa, procure por informações sobre o projeto ou produto que o usuário está solicitando dentro da pasta de trabalho utilizado. Confirme com o usuário o que foi encontrado. Utilize também informações que o usuário já compartilhou.
26
- - As documentações de projeto podem ser encontradas na pasta do projeto (`$PROD_DOCS`). Rascunhos WIP: `$SESSIONS_DIR/prod/`. Caso não estejam disponíveis localmente, utilize via Skill tool a `jarvis-docs-central` para buscar as informações do repositório `$CENTRAL_DOCS_REPO`.
29
+ - As documentações de projeto podem ser encontradas na pasta do projeto (`$PROD_DOCS`). Rascunhos WIP: `$SESSIONS_DIR/prod/`. Caso não estejam disponíveis localmente, utilize via Skill tool a `jarvis-docs-central` para buscar as informações no Central docs (se `CENTRAL_DOCS_STORAGE` estiver configurado).
27
30
  - Para trazer as informações, utilize via Skill tool a skill `product-roadmap-report`
28
31
 
29
32
  ### Status Reports por Squad
@@ -3,13 +3,17 @@ name: prod.spec.ard
3
3
  description: Ponto de entrada de produto para o ARD (Architecture Requirements Document): levanta com o PM os requisitos arquiteturais em termos de produto e conduz o ARD pelo fluxo de engenharia.
4
4
  auto_execution_mode: 3
5
5
  env_file: "@/ENV.md"
6
- recommended_model: gpt-4o
6
+ recommended_model: opus
7
7
  model_tier: medium
8
8
  model_justification: Levantamento estruturado de requisitos arquiteturais a partir de PRD e FRD, seguido da condução do fluxo de engenharia existente
9
9
  ---
10
10
 
11
11
  # ARD a partir do produto (Architecture Requirements Document)
12
12
 
13
+ > 🎓 **Modo de condução**: leia `PROD_MODE` no `$IDE/ENV.md`. Se for `developer-guided`, **antes de começar leia `$IDE/rules-on-demand/product/prod.guided-rules.md` e siga-o** em toda a conversa. Vazio ou `product-led`: siga este fluxo como está.
14
+ >
15
+ > 🤖 **Modelo**: se a IDE informar o modelo desta sessão e ele for de outra família que o `recommended_model` do documento (ou do template, se o documento for novo), avise em uma linha e siga, sem bloquear e sem repetir. Sem essa informação, não avise.
16
+
13
17
  Antes de iniciar, revise o arquivo de regras invioláveis em `$PROD_RULES/**/*`. Se você não estiver familiarizado com essa variável, leia as regras diretamente na pasta `.$IDE/rules/product/**/*.*`.
14
18
 
15
19
  Este fluxo é a **porta de entrada de produto** para o ARD. Ele levanta com o PM, em linguagem de produto, o que a arquitetura precisa atender (restrições, requisitos não funcionais, integrações, volumes e riscos) e, com isso, **conduz o ARD pelo fluxo de engenharia** (`eng.create-ard`), sem duplicá-lo.
@@ -41,7 +45,7 @@ Utilize o `$ARGUMENTS` que o usuário passar como ponto de partida e para entend
41
45
 
42
46
  | Passo | Skill | Condição |
43
47
  |-------|-------|----------|
44
- | Gate 1: Reconhecer o contexto | `/jarvis-docs-central` (via `jarvis docs sync --silent`) | Se `CENTRAL_DOCS_REPO` estiver definido no ENV.md e for preciso buscar o PRD ou FRD relacionado |
48
+ | Gate 1: Reconhecer o contexto | `/jarvis-docs-central` (via `jarvis docs sync --silent`) | Se `CENTRAL_DOCS_STORAGE` estiver definido no ENV.md e for preciso buscar o PRD ou FRD relacionado |
45
49
  | Gate 4: Conduzir o ARD | `/eng.create-ard` | Sempre, depois de os requisitos serem confirmados: modo `new`, com `--prd` quando houver PRD (workflow de engenharia; o aviso de transição de domínio é dado antes) |
46
50
 
47
51
  ## Resultado final
@@ -60,7 +64,7 @@ Utilize o `$ARGUMENTS` que o usuário passar como ponto de partida e para entend
60
64
 
61
65
  ### Gate 1: Reconhecer o contexto
62
66
  1. Valide o `ENV.md` (regra geral de produto) e avise que o ARD é um documento de engenharia.
63
- 2. Identifique o PRD ou FRD de origem em `$PROD_DOCS` (ou o caminho que o usuário informar) e leia-o. Se `CENTRAL_DOCS_REPO` estiver definido, busque no central docs o PRD ou FRD relacionado.
67
+ 2. Identifique o PRD ou FRD de origem em `$PROD_DOCS` (ou o caminho que o usuário informar) e leia-o. Se `CENTRAL_DOCS_STORAGE` estiver definido, busque no central docs o PRD ou FRD relacionado.
64
68
  3. Resuma em poucas linhas o que a especificação pede e confirme com o usuário que é essa a origem. Se `AREA` do usuário não for `ENGINEERING`, avise que o ARD seguirá o fluxo de engenharia e deve ser revisado por alguém da engenharia.
65
69
 
66
70
  ### Gate 2: Levantar os requisitos arquiteturais em termos de produto
@@ -3,13 +3,17 @@ name: prod.spec.breakdown
3
3
  description: Quebra uma especificação de produto grande (Documento de Requisitos de Produto ou Documento de Requisitos Funcionais) em fatias gerenciáveis — versões, épicos e histórias — sem perder o objetivo de valor.
4
4
  auto_execution_mode: 3
5
5
  env_file: "@/ENV.md"
6
- recommended_model: claude-sonnet-4-20250514
6
+ recommended_model: opus
7
7
  model_tier: high
8
8
  model_justification: Breakdown de produto exige julgamento de valor, sequenciamento e decomposição em entregas incrementais
9
9
  ---
10
10
 
11
11
  # Quebra de especificação (breakdown)
12
12
 
13
+ > 🎓 **Modo de condução**: leia `PROD_MODE` no `$IDE/ENV.md`. Se for `developer-guided`, **antes de começar leia `$IDE/rules-on-demand/product/prod.guided-rules.md` e siga-o** em toda a conversa. Vazio ou `product-led`: siga este fluxo como está.
14
+ >
15
+ > 🤖 **Modelo**: se a IDE informar o modelo desta sessão e ele for de outra família que o `recommended_model` do documento (ou do template, se o documento for novo), avise em uma linha e siga, sem bloquear e sem repetir. Sem essa informação, não avise.
16
+
13
17
  Este comando transforma uma especificação **grande demais para executar de uma vez** em um **plano detalhado (breakdown)**: versões / releases, épicos e esboço de histórias ou tarefas — com foco em **valor perceptível ao usuário**, não só em camadas técnicas.
14
18
 
15
19
  Antes de iniciar, revise as regras invioláveis em `$PROD_RULES/**/*`. Se a variável for desconhecida, leia `.$IDE/rules/product/**/*.*`.
@@ -48,7 +52,7 @@ Utilize o `$ARGUMENTS` como ponto de partida (caminho da spec, nome da feature o
48
52
  |-------|-------|----------|
49
53
  | Pré-requisitos (item 2) | `/prod.spec.prd` | Se não houver spec pai e o usuário aceitar criar o PRD |
50
54
  | Pré-requisitos (item 2) | `/prod.spec.frd` | Se não houver spec pai e o usuário aceitar criar o FRD |
51
- | Busca no Central Docs (condicional) | `/jarvis-docs-central` (via `jarvis docs sync --silent`) | Se `CENTRAL_DOCS_REPO` estiver no ENV.md (best-effort) |
55
+ | Busca no Central Docs (condicional) | `/jarvis-docs-central` (via `jarvis docs sync --silent`) | Se `CENTRAL_DOCS_STORAGE` estiver no ENV.md (best-effort) |
52
56
  | Resultado esperado (materialização) | `/prod.spec.epic` | Se o usuário aprovar criar os arquivos de épico a partir do breakdown (nunca automaticamente) |
53
57
  | Resultado esperado (materialização) | `/prod.spec.issue` | Se o usuário aprovar criar os arquivos de história ou tarefa a partir do breakdown (nunca automaticamente) |
54
58
 
@@ -58,7 +62,7 @@ O artefato de breakdown segue o template `$PROD_TEMPLATES/prod-breakdown-templat
58
62
 
59
63
  ## Busca no Central Docs (condicional)
60
64
 
61
- Se `CENTRAL_DOCS_REPO` estiver no `ENV.md`:
65
+ Se `CENTRAL_DOCS_STORAGE` estiver no `ENV.md`:
62
66
 
63
67
  1. `jarvis docs sync --silent` (best-effort)
64
68
  2. Localizar Documento de Requisitos de Produto / funcional relacionado (nome, tags, `TASK_MANAGER_KEY`)
@@ -3,13 +3,17 @@ name: prod.spec.clarify
3
3
  description: Identificar áreas subespecificadas na especificação da feature atual fazendo até 5 perguntas de esclarecimento altamente direcionadas e incorporando as respostas de volta na spec.
4
4
  auto_execution_mode: 3
5
5
  env_file: "@/ENV.md"
6
- recommended_model: gpt-4o
6
+ recommended_model: opus
7
7
  model_tier: medium
8
8
  model_justification: Esclarecimento de specs requer análise estruturada e formulação de perguntas, mas segue processo bem definido
9
9
  ---
10
10
 
11
11
  ## Clarify workflow
12
12
 
13
+ > 🎓 **Modo de condução**: leia `PROD_MODE` no `$IDE/ENV.md`. Se for `developer-guided`, **antes de começar leia `$IDE/rules-on-demand/product/prod.guided-rules.md` e siga-o** em toda a conversa. Vazio ou `product-led`: siga este fluxo como está.
14
+ >
15
+ > 🤖 **Modelo**: se a IDE informar o modelo desta sessão e ele for de outra família que o `recommended_model` do documento (ou do template, se o documento for novo), avise em uma linha e siga, sem bloquear e sem repetir. Sem essa informação, não avise.
16
+
13
17
  Detectar e reduzir ambiguidades ou pontos de decisão ausentes na especificação da feature ativa e registrar os esclarecimentos diretamente no arquivo da spec.
14
18
 
15
19
  Rascunhos WIP (se houver) em `$SESSIONS_DIR/prod/{TASK_MANAGER_KEY}/`. O heading `### Session YYYY-MM-DD` é um log **dentro da spec canônica** — não é a pasta `$SESSIONS_DIR`.
@@ -3,13 +3,17 @@ name: prod.spec.discovery
3
3
  description: Investigação inicial de uma ideia: entrevista o usuário sobre a ideia, o problema, os requisitos iniciais e a viabilidade, sem chutar, e registra um rascunho estruturado com veredito e próximo passo sugerido.
4
4
  auto_execution_mode: 3
5
5
  env_file: "@/ENV.md"
6
- recommended_model: claude-sonnet-4-20250514
6
+ recommended_model: opus
7
7
  model_tier: high
8
8
  model_justification: Discovery exige conduzir uma entrevista adaptativa, julgar evidências e registrar hipóteses sem presumir dados
9
9
  ---
10
10
 
11
11
  # Discovery (investigação inicial de uma ideia)
12
12
 
13
+ > 🎓 **Modo de condução**: leia `PROD_MODE` no `$IDE/ENV.md`. Se for `developer-guided`, **antes de começar leia `$IDE/rules-on-demand/product/prod.guided-rules.md` e siga-o** em toda a conversa. Vazio ou `product-led`: siga este fluxo como está.
14
+ >
15
+ > 🤖 **Modelo**: se a IDE informar o modelo desta sessão e ele for de outra família que o `recommended_model` do documento (ou do template, se o documento for novo), avise em uma linha e siga, sem bloquear e sem repetir. Sem essa informação, não avise.
16
+
13
17
  Este comando conduz uma **entrevista** para investigar uma ideia ainda crua e registrar o resultado em um **rascunho estruturado**: o problema, o que precisaria ser verdade e se parece viável.
14
18
 
15
19
  Antes de iniciar, revise as regras invioláveis em `$PROD_RULES/**/*`.
@@ -44,7 +48,7 @@ O comando e o agente seguem obrigatoriamente `$PROD_RULES` (`prod-rules.md`):
44
48
  | Passo | Skill | Condição |
45
49
  |-------|-------|----------|
46
50
  | Regras do framework / Passo 4 — A entrevista | `prod.discovery-interviewer` (agente) | Sempre — conduz a entrevista, e o comando segue a postura dele |
47
- | Passo 2 — Reconhecer o projeto | `/jarvis-docs-central` | Se `CENTRAL_DOCS_REPO` estiver configurado |
51
+ | Passo 2 — Reconhecer o projeto | `/jarvis-docs-central` | Se `CENTRAL_DOCS_STORAGE` estiver configurado |
48
52
  | Passo 2 — Reconhecer o projeto | `/jarvis-context-detect` | Para calibrar a profundidade da entrevista |
49
53
  | Passo 2 — Reconhecer o projeto | `/eng-backend-arch-c4` | Só com a confirmação do usuário; o retorno é tratado como suposição a validar |
50
54
  | Passo 2 — Reconhecer o projeto | `/eng-platform` + `PLATFORM_SPECIALIZATIONS` | Só com a confirmação do usuário; o retorno é tratado como suposição a validar |
@@ -70,7 +74,7 @@ Antes de perguntar, consulte o que já existe:
70
74
 
71
75
  - Documentos em `$PROD_DOCS` (PRDs, FRDs e discoveries), para não duplicar o que já está especificado
72
76
  - O código e os últimos commits, quando ajudarem a embasar a viabilidade
73
- - `jarvis-docs-central`, se `CENTRAL_DOCS_REPO` estiver configurado
77
+ - `jarvis-docs-central`, se `CENTRAL_DOCS_STORAGE` estiver configurado
74
78
  - `jarvis-context-detect`, para calibrar a profundidade da entrevista
75
79
  - `eng-backend-arch-c4` e `eng-platform` (+ `PLATFORM_SPECIALIZATIONS`) são skills de engenharia: só consulte **com a confirmação do usuário**, e trate o retorno como **suposição a validar**, não como fato
76
80
 
@@ -3,13 +3,17 @@ name: prod.spec.epic
3
3
  description: Fluxo de trabalho para criação de épicos que agrupam histórias de usuários e tarefas relacionadas seguindo as diretrizes do Product Spec Kit.
4
4
  auto_execution_mode: 3
5
5
  env_file: "@/ENV.md"
6
- recommended_model: gpt-4o
6
+ recommended_model: opus
7
7
  model_tier: medium
8
8
  model_justification: Criação de épicos segue templates estruturados e requer compreensão de contexto de produto
9
9
  ---
10
10
 
11
11
  # Crie um fluxo de trabalho épico
12
12
 
13
+ > 🎓 **Modo de condução**: leia `PROD_MODE` no `$IDE/ENV.md`. Se for `developer-guided`, **antes de começar leia `$IDE/rules-on-demand/product/prod.guided-rules.md` e siga-o** em toda a conversa. Vazio ou `product-led`: siga este fluxo como está.
14
+ >
15
+ > 🤖 **Modelo**: se a IDE informar o modelo desta sessão e ele for de outra família que o `recommended_model` do documento (ou do template, se o documento for novo), avise em uma linha e siga, sem bloquear e sem repetir. Sem essa informação, não avise.
16
+
13
17
  Antes de iniciar, revise o arquivo de regras invioláveis em `$PROD_RULES/**/*`. Se você não estiver familiarizado com essa variável, leia as regras diretamente na pasta `.$IDE/rules/product/**/*.*`.
14
18
 
15
19
  Este fluxo de trabalho orienta você na criação de um épico usando `$PROD_TEMPLATES/prod-epic-template.md`. épicos agrupam histórias de usuários relacionadas que oferecem uma funcionalidade significativa.
@@ -37,9 +41,9 @@ Utilize o `$ARGUMENTS` que o usuário passar como ponto de partida e para entend
37
41
 
38
42
  | Passo | Skill | Condição |
39
43
  |-------|-------|----------|
40
- | Busca no Central Docs (condicional) | `/jarvis-docs-central` (via `jarvis docs sync --silent`) | Se `CENTRAL_DOCS_REPO` estiver definido no ENV.md, antes de criar o épico |
44
+ | Busca no Central Docs (condicional) | `/jarvis-docs-central` (via `jarvis docs sync --silent`) | Se `CENTRAL_DOCS_STORAGE` estiver definido no ENV.md, antes de criar o épico |
41
45
  | Próximas etapas | `/prod.spec.issue` | Depois de criar o épico, se o usuário quiser escrever as histórias ou tarefas relacionadas |
42
- | Publicação no Central Docs (condicional) | `/jarvis-docs-central` (via `jarvis docs publish --tipo epic`) | Se `CENTRAL_DOCS_REPO` estiver definido, o épico estiver salvo e aprovado e o usuário responder "Sim, publicar agora" |
46
+ | Publicação no Central Docs (condicional) | `/jarvis-docs-central` (via `jarvis docs publish --tipo epic`) | Se `CENTRAL_DOCS_STORAGE` estiver definido, o épico estiver salvo e aprovado e o usuário responder "Sim, publicar agora" |
43
47
 
44
48
  ## Resultado final
45
49
  - Por padrão, use o modelo `$PROD_TEMPLATES/prod-epic-template.md` integralmente
@@ -118,7 +122,7 @@ Após a aprovação do usuário:
118
122
 
119
123
  ## Busca no Central Docs (condicional)
120
124
 
121
- Se `CENTRAL_DOCS_REPO` definido no ENV.md, antes de criar o épico:
125
+ Se `CENTRAL_DOCS_STORAGE` definido no ENV.md, antes de criar o épico:
122
126
 
123
127
  - Executar busca automática no central-docs:
124
128
  ```bash
@@ -132,7 +136,7 @@ Se `CENTRAL_DOCS_REPO` definido no ENV.md, antes de criar o épico:
132
136
 
133
137
  Após salvar o épico localmente e obter aprovação do usuário:
134
138
 
135
- 1. Se `CENTRAL_DOCS_REPO` definido no ENV.md:
139
+ 1. Se `CENTRAL_DOCS_STORAGE` definido no ENV.md:
136
140
  - Perguntar ao usuário:
137
141
  ```
138
142
  Deseja publicar este épico no repositório central de documentação?
@@ -141,23 +145,21 @@ Após salvar o épico localmente e obter aprovação do usuário:
141
145
  ```
142
146
 
143
147
  2. Se **Sim**:
144
- - Extrair o slug do nome do arquivo (ex: `epic-123-checkout.md` → `checkout`)
145
148
  - Executar:
146
149
  ```bash
147
150
  jarvis docs publish \
148
151
  --file {caminho_do_epico} \
149
- --tipo epic \
150
- --feature {slug}
152
+ --tipo epic
151
153
  ```
152
154
 
153
155
  3. Informar resultado:
154
- - ✅ Sucesso: "Épico publicado no central-docs. MR criado: [URL]"
156
+ - ✅ Sucesso: "Épico publicado no Central docs." (com git: "PR aberto: [URL]")
155
157
  - ❌ Erro: Exibir mensagem de erro e orientar troubleshooting
156
158
 
157
159
  4. Se **Não**:
158
- - Informar: "Para publicar depois, execute: `jarvis docs publish --file {caminho} --tipo epic --feature {slug}`"
160
+ - Informar: "Para publicar depois, execute: `jarvis docs publish --file {caminho} --tipo epic`"
159
161
 
160
- > **Nota**: A publicação cria um Merge Request no GitLab. O épico só será visível no central-docs após aprovação e merge do MR.
162
+ > **Nota**: se a pasta do Central docs for um repositório git, a publicação abre um Pull/Merge Request e o épico só entra na branch base depois do merge. Sem git, o documento é gravado direto e o índice é regenerado.
161
163
 
162
164
  Utilize o que o usuário fornecer analisar em:
163
165
  <requirement>
@@ -3,13 +3,17 @@ name: prod.spec.frd
3
3
  description: Fluxo para criação de FRD (Functional Requirements Document), que auxilia na definição detalhada dos requisitos funcionais de uma feature
4
4
  auto_execution_mode: 3
5
5
  env_file: "@/ENV.md"
6
- recommended_model: claude-sonnet-4-20250514
6
+ recommended_model: opus
7
7
  model_tier: high
8
8
  model_justification: FRDs requerem análise detalhada de requisitos funcionais, comportamento de usuário e especificações técnicas
9
9
  ---
10
10
 
11
11
  # FRD - Functional Requirements Document
12
12
 
13
+ > 🎓 **Modo de condução**: leia `PROD_MODE` no `$IDE/ENV.md`. Se for `developer-guided`, **antes de começar leia `$IDE/rules-on-demand/product/prod.guided-rules.md` e siga-o** em toda a conversa. Vazio ou `product-led`: siga este fluxo como está.
14
+ >
15
+ > 🤖 **Modelo**: se a IDE informar o modelo desta sessão e ele for de outra família que o `recommended_model` do documento (ou do template, se o documento for novo), avise em uma linha e siga, sem bloquear e sem repetir. Sem essa informação, não avise.
16
+
13
17
  Este comando tem como objetivo criar, atualizar ou editar uma FRD seguindo o template especificado e as instruções.
14
18
 
15
19
  Antes de iniciar, revise o arquivo de regras invioláveis em `$PROD_RULES/**/*`. Se você não estiver familiarizado com essa variável, leia as regras diretamente na pasta `.$IDE/rules/product/**/*.*`.
@@ -30,8 +34,8 @@ Utilize o `$ARGUMENTS` que o usuário passar como ponto de partida e para entend
30
34
 
31
35
  | Passo | Skill | Condição |
32
36
  |-------|-------|----------|
33
- | Busca no Central Docs (condicional) | `/jarvis-docs-central` (via `jarvis docs sync --silent`) | Se `CENTRAL_DOCS_REPO` estiver definido no ENV.md |
34
- | Publicação no Central Docs (condicional) | `/jarvis-docs-central` (via `jarvis docs publish --tipo frd`) | Se `CENTRAL_DOCS_REPO` estiver definido, o FRD estiver salvo e aprovado e o usuário responder "Sim, publicar agora" |
37
+ | Busca no Central Docs (condicional) | `/jarvis-docs-central` (via `jarvis docs sync --silent`) | Se `CENTRAL_DOCS_STORAGE` estiver definido no ENV.md |
38
+ | Publicação no Central Docs (condicional) | `/jarvis-docs-central` (via `jarvis docs publish --tipo frd`) | Se `CENTRAL_DOCS_STORAGE` estiver definido, o FRD estiver salvo e aprovado e o usuário responder "Sim, publicar agora" |
35
39
 
36
40
  ## Princípios Fundamentais
37
41
  1. **Sempre use o template** `$PROD_TEMPLATES/prod-frd-template.md` para o output final
@@ -56,7 +60,7 @@ A FRD não é um épico, história ou task: ela serve como documento de detalham
56
60
 
57
61
  ## Busca no Central Docs (condicional)
58
62
 
59
- Se `CENTRAL_DOCS_REPO` definido no ENV.md:
63
+ Se `CENTRAL_DOCS_STORAGE` definido no ENV.md:
60
64
 
61
65
  1. **Buscar PRD correspondente:**
62
66
  - Executar busca automática no central-docs:
@@ -187,7 +191,7 @@ O sistema deve validar os dados do formulário.
187
191
 
188
192
  Após salvar o FRD localmente e obter aprovação do usuário:
189
193
 
190
- 1. Se `CENTRAL_DOCS_REPO` definido no ENV.md:
194
+ 1. Se `CENTRAL_DOCS_STORAGE` definido no ENV.md:
191
195
  - Perguntar ao usuário:
192
196
  ```
193
197
  Deseja publicar este FRD no repositório central de documentação?
@@ -196,23 +200,21 @@ Após salvar o FRD localmente e obter aprovação do usuário:
196
200
  ```
197
201
 
198
202
  2. Se **Sim**:
199
- - Extrair o slug do nome do arquivo (ex: `frd-wallet-saque.md` → `wallet-saque`)
200
203
  - Executar:
201
204
  ```bash
202
205
  jarvis docs publish \
203
206
  --file {caminho_do_frd} \
204
- --tipo frd \
205
- --feature {slug}
207
+ --tipo frd
206
208
  ```
207
209
 
208
210
  3. Informar resultado:
209
- - ✅ Sucesso: "FRD publicado no central-docs. MR criado: [URL]"
211
+ - ✅ Sucesso: "FRD publicado no Central docs." (com git: "PR aberto: [URL]")
210
212
  - ❌ Erro: Exibir mensagem de erro e orientar troubleshooting
211
213
 
212
214
  4. Se **Não**:
213
- - Informar: "Para publicar depois, execute: `jarvis docs publish --file {caminho} --tipo frd --feature {slug}`"
215
+ - Informar: "Para publicar depois, execute: `jarvis docs publish --file {caminho} --tipo frd`"
214
216
 
215
- 5. Se `CENTRAL_DOCS_REPO` não estiver definido:
216
- - Informar: "Para habilitar publicação automática, configure `CENTRAL_DOCS_REPO` no ENV.md"
217
+ 5. Se `CENTRAL_DOCS_STORAGE` não estiver definido:
218
+ - Informar: "Para habilitar publicação automática, configure o Central docs no `/jarvis-init` (`CENTRAL_DOCS_STORAGE`)"
217
219
 
218
- > **Nota**: A publicação cria um Merge Request no GitLab. O FRD só será visível no central-docs após aprovação e merge do MR.
220
+ > **Nota**: se a pasta do Central docs for um repositório git, a publicação abre um Pull/Merge Request e o FRD só entra na branch base depois do merge. Sem git, o documento é gravado direto e o índice é regenerado.
@@ -3,13 +3,17 @@ name: prod.spec.issue
3
3
  description: Criar um especificação de issues como Histórias de Usuário, Tarefas técnicas e bugs, seguindo as melhores práticas de gestão de produto e projeto.
4
4
  auto_execution_mode: 3
5
5
  env_file: "@/ENV.md"
6
- recommended_model: gpt-4o
6
+ recommended_model: opus
7
7
  model_tier: medium
8
8
  model_justification: Criação de issues é estruturada e segue templates, requer boa compreensão mas não raciocínio extremamente complexo
9
9
  ---
10
10
 
11
11
  # Fluxo de Criação de Issues
12
12
 
13
+ > 🎓 **Modo de condução**: leia `PROD_MODE` no `$IDE/ENV.md`. Se for `developer-guided`, **antes de começar leia `$IDE/rules-on-demand/product/prod.guided-rules.md` e siga-o** em toda a conversa. Vazio ou `product-led`: siga este fluxo como está.
14
+ >
15
+ > 🤖 **Modelo**: se a IDE informar o modelo desta sessão e ele for de outra família que o `recommended_model` do documento (ou do template, se o documento for novo), avise em uma linha e siga, sem bloquear e sem repetir. Sem essa informação, não avise.
16
+
13
17
  Antes de iniciar, revise o arquivo de regras invioláveis em `$PROD_RULES/**/*.*`.
14
18
 
15
19
  Este fluxo orienta você na criação de issues (histórias de usuários, tarefas, bugs etc) bem definidas usando o template `$PROD_TEMPLATES/prod-issue-template.md`. Cada issue deve ser uma unidade de trabalho autocontida que pode ser completada dentro de uma única sprint.
@@ -3,13 +3,15 @@ name: prod.spec
3
3
  description: Guia o usuário para construir especificações macro ou micro de produto, como PRDs, histórias, tarefas, RFDs e outros.
4
4
  auto_execution_mode: 3
5
5
  env_file: "@/ENV.md"
6
- recommended_model: claude-sonnet-4-20250514
6
+ recommended_model: opus
7
7
  model_tier: medium
8
8
  model_justification: Especificações de produto requerem compreensão de requisitos e estruturação de documentos
9
9
  ---
10
10
 
11
11
  # Iniciar uma especificação
12
12
 
13
+ > 🎓 **Modo de condução**: leia `PROD_MODE` no `$IDE/ENV.md`. Se for `developer-guided`, **antes de começar leia `$IDE/rules-on-demand/product/prod.guided-rules.md` e siga-o** em toda a conversa. Vazio ou `product-led`: siga este fluxo como está.
14
+
13
15
  Estas instruções ajudam a orientar o usuário que deseja começar a construir uma especificação. Esta especificação pode variar desde um PRD, história de usuário até tarefas. Devemos orientá-lo nessa construção de forma que a especificação, seja ela macro ou micro seja criada de acordo com as instruções e padrões do projeto.
14
16
 
15
17
  ## Quando usar
@@ -3,13 +3,17 @@ name: prod.spec.prd
3
3
  description: Alterar ou criar um especificação de produto PRD - Product Requirement Document seguindo o template especificado, regras invioláveis, possibilitando a utilização por agentes de IA e humanos.
4
4
  auto_execution_mode: 3
5
5
  env_file: "@/ENV.md"
6
- recommended_model: claude-sonnet-4-20250514
6
+ recommended_model: opus
7
7
  model_tier: high
8
8
  model_justification: PRDs requerem análise profunda de requisitos, estruturação de documentos complexos e compreensão de contexto de negócio
9
9
  ---
10
10
 
11
11
  # PRD - Product Requirement Document
12
12
 
13
+ > 🎓 **Modo de condução**: leia `PROD_MODE` no `$IDE/ENV.md`. Se for `developer-guided`, **antes de começar leia `$IDE/rules-on-demand/product/prod.guided-rules.md` e siga-o** em toda a conversa. Vazio ou `product-led`: siga este fluxo como está.
14
+ >
15
+ > 🤖 **Modelo**: se a IDE informar o modelo desta sessão e ele for de outra família que o `recommended_model` do documento (ou do template, se o documento for novo), avise em uma linha e siga, sem bloquear e sem repetir. Sem essa informação, não avise.
16
+
13
17
  Este comando tem como objetivo criar, atualizar ou editar uma PRD seguindo o template especificado e as instruções.
14
18
 
15
19
  Antes de iniciar, revise o arquivo de regras invioláveis em `$PROD_RULES/**/*`. Se você não estiver familiarizado com essa variável, leia as regras diretamente na pasta `.$IDE/rules/product/**/*.*`.
@@ -29,8 +33,8 @@ Utilize o `$ARGUMENTS` que o usuário passar como ponto de partida e para entend
29
33
 
30
34
  | Passo | Skill | Condição |
31
35
  |-------|-------|----------|
32
- | Busca no Central Docs (condicional) | `/jarvis-docs-central` (via `jarvis docs sync --silent`) | Se `CENTRAL_DOCS_REPO` estiver definido no ENV.md (iteração de PRD existente) |
33
- | Publicação no Central Docs (condicional) | `/jarvis-docs-central` (via `jarvis docs publish --tipo prd`) | Se `CENTRAL_DOCS_REPO` estiver definido, o PRD estiver salvo e aprovado e o usuário responder "Sim, publicar agora" |
36
+ | Busca no Central Docs (condicional) | `/jarvis-docs-central` (via `jarvis docs sync --silent`) | Se `CENTRAL_DOCS_STORAGE` estiver definido no ENV.md (iteração de PRD existente) |
37
+ | Publicação no Central Docs (condicional) | `/jarvis-docs-central` (via `jarvis docs publish --tipo prd`) | Se `CENTRAL_DOCS_STORAGE` estiver definido, o PRD estiver salvo e aprovado e o usuário responder "Sim, publicar agora" |
34
38
 
35
39
  ## Princípios Fundamentais
36
40
  1. **Sempre use o template** `$PROD_TEMPLATES/prod-prd-template.md` para o output final
@@ -41,7 +45,7 @@ Utilize o `$ARGUMENTS` que o usuário passar como ponto de partida e para entend
41
45
 
42
46
  ## Busca no Central Docs (condicional)
43
47
 
44
- Se `CENTRAL_DOCS_REPO` definido no ENV.md:
48
+ Se `CENTRAL_DOCS_STORAGE` definido no ENV.md:
45
49
 
46
50
  1. **Para iteração de PRD existente:**
47
51
  - Executar busca automática no central-docs:
@@ -174,7 +178,7 @@ Quais métricas? A) Engajamento B) Receita C) Outro
174
178
 
175
179
  Após salvar o PRD localmente e obter aprovação do usuário:
176
180
 
177
- 1. Se `CENTRAL_DOCS_REPO` definido no ENV.md:
181
+ 1. Se `CENTRAL_DOCS_STORAGE` definido no ENV.md:
178
182
  - Perguntar ao usuário:
179
183
  ```
180
184
  Deseja publicar este PRD no repositório central de documentação?
@@ -183,24 +187,22 @@ Após salvar o PRD localmente e obter aprovação do usuário:
183
187
  ```
184
188
 
185
189
  2. Se **Sim**:
186
- - Extrair o slug do nome do arquivo (ex: `prd-wallet.md` → `wallet`)
187
190
  - Executar:
188
191
  ```bash
189
192
  jarvis docs publish \
190
193
  --file {caminho_do_prd} \
191
- --tipo prd \
192
- --feature {slug}
194
+ --tipo prd
193
195
  ```
194
196
 
195
197
  3. Informar resultado:
196
- - ✅ Sucesso: "PRD publicado no central-docs. MR criado: [URL]"
198
+ - ✅ Sucesso: "PRD publicado no Central docs." (com git: "PR aberto: [URL]")
197
199
  - ❌ Erro: Exibir mensagem de erro e orientar troubleshooting
198
200
 
199
201
  4. Se **Não**:
200
- - Informar: "Para publicar depois, execute: `jarvis docs publish --file {caminho} --tipo prd --feature {slug}`"
202
+ - Informar: "Para publicar depois, execute: `jarvis docs publish --file {caminho} --tipo prd`"
201
203
 
202
- 5. Se `CENTRAL_DOCS_REPO` não estiver definido:
203
- - Informar: "Para habilitar publicação automática, configure `CENTRAL_DOCS_REPO` no ENV.md"
204
+ 5. Se `CENTRAL_DOCS_STORAGE` não estiver definido:
205
+ - Informar: "Para habilitar publicação automática, configure o Central docs no `/jarvis-init` (`CENTRAL_DOCS_STORAGE`)"
204
206
 
205
- > **Nota**: A publicação cria um Merge Request no GitLab. O PRD só será visível no central-docs após aprovação e merge do MR.
207
+ > **Nota**: se a pasta do Central docs for um repositório git, a publicação abre um Pull/Merge Request e o PRD só entra na branch base depois do merge. Sem git, o documento é gravado direto e o índice é regenerado.
206
208
 
@@ -19,7 +19,7 @@ evitando leitura desnecessária de arquivos e economizando tokens.
19
19
  | Passo | Skill | Condição |
20
20
  |-------|-------|----------|
21
21
  | Passo 0.5 › 2. Para cada tecnologia identificada | `context7` (MCP: `resolve-library-id`, `query-docs`) | Se houver variável de stack com valor no ENV.md (uma consulta por tecnologia identificada); sem variável de stack, pula silenciosamente |
22
- | Passo 2 — Sincronizar Documentação Central | `/jarvis-docs-central` | Se `CENTRAL_DOCS_REPO` estiver configurado no ENV.md (Modo 1: Buscar Docs, via Skill tool) |
22
+ | Passo 2 — Sincronizar Documentação Central | `/jarvis-docs-central` | Se `CENTRAL_DOCS_STORAGE` estiver configurado no ENV.md (Modo 1: Buscar Docs, via Skill tool) |
23
23
  | Passo 4 › Menu TECH LEAD › opções A a H | `/eng.start`, `/eng.debug`, `/eng.create-ard`, `/eng.create-ard-from-code`, `/eng.create-rfc`, `/eng.build-tech-spec`, `/eng.review`, `/eng.docs` | Se `POSITION=TECH LEAD` e `AREA=ENGINEERING` (menu dedicado) e o usuário escolher uma das opções (cada opção chama o workflow correspondente, na ordem do menu e do roteamento do Passo 4; `Outro` não chama workflow) |
24
24
  | Passo 4 › Menu CTO › opções A a D | `/eng.review`, `/eng.create-ard`, `/eng.create-rfc`, `/eng.build-tech-spec` | Se `POSITION` for CTO ou equivalente (menu dedicado, para qualquer `AREA`) e o usuário escolher uma das opções (cada opção chama o workflow correspondente, na ordem do menu e do roteamento do Passo 4; `Outro` não chama workflow) |
25
25
  | Passo 4 › Menu ENGINEERING + DATA › opções A a C | `/data.new-pipeline`, `/eng-data`, `/data.contract` | Se `AREA=ENGINEERING` e `HUB=DATA` e o usuário escolher uma das opções (cada opção chama o workflow correspondente, na ordem do menu e do roteamento do Passo 4; `Outro` não chama workflow) |
@@ -129,7 +129,7 @@ O perfil de comunicação é derivado de `POSITION` (conforme definido no `$IDE/
129
129
 
130
130
  ## Passo 2 — Sincronizar Documentação Central (condicional)
131
131
 
132
- Se `CENTRAL_DOCS_REPO` estiver configurado no ENV.md, invocar o skill `jarvis-docs-central` via Skill tool para carregar docs do produto.
132
+ Se `CENTRAL_DOCS_STORAGE` estiver configurado no ENV.md, invocar o skill `jarvis-docs-central` via Skill tool para carregar docs do produto.
133
133
 
134
134
  > ⚠️ **IMPORTANTE**: NÃO executar `jarvis docs sync` diretamente via Bash.
135
135
  > Usar sempre: **Skill tool → jarvis-docs-central (Modo 1: Buscar Docs)**
@@ -158,7 +158,7 @@ Contexto: warm-up - sincronização inicial
158
158
  ```
159
159
 
160
160
  **Comportamento:**
161
- - Se `CENTRAL_DOCS_REPO` vazio → pula silenciosamente
161
+ - Se `CENTRAL_DOCS_STORAGE` vazio → pula silenciosamente
162
162
  - Se erro de token → exibe aviso mas continua
163
163
  - Se `index.md` não existe → navega estrutura do repo e lista docs disponíveis
164
164
  - Se erro genérico → exibe mensagem clara e continua sem bloquear
@@ -1,49 +0,0 @@
1
- /**
2
- * @fileoverview Cache best-effort via `redis-cli` para fetch-file.js/publish-file.js.
3
- * Nunca lança — falha de leitura/escrita no cache nunca quebra o fluxo principal
4
- * (mesmo contrato do `fetch-file.sh`/`publish-file.sh` originais, que faziam
5
- * `redis-cli ... 2>/dev/null || true`).
6
- * @module docs/redis-cache
7
- */
8
-
9
- import { execFileSync } from "node:child_process";
10
-
11
- /**
12
- * @param {string} key
13
- * @returns {string} valor em cache, ou "" se não houver (ou `redis-cli` falhar)
14
- */
15
- export function redisGet(key) {
16
- try {
17
- return execFileSync("redis-cli", ["GET", key], {
18
- encoding: "utf-8",
19
- stdio: ["ignore", "pipe", "ignore"],
20
- }).trim();
21
- } catch {
22
- return "";
23
- }
24
- }
25
-
26
- /**
27
- * @param {string} key
28
- * @param {string|number} ttlSeconds
29
- * @param {string} value
30
- */
31
- export function redisSetex(key, ttlSeconds, value) {
32
- try {
33
- execFileSync("redis-cli", ["-x", "SETEX", key, String(ttlSeconds)], {
34
- input: value,
35
- stdio: ["pipe", "ignore", "ignore"],
36
- });
37
- } catch {
38
- // best-effort
39
- }
40
- }
41
-
42
- /** @param {string} key */
43
- export function redisDel(key) {
44
- try {
45
- execFileSync("redis-cli", ["DEL", key], { stdio: "ignore" });
46
- } catch {
47
- // best-effort
48
- }
49
- }
@@ -1,42 +0,0 @@
1
- import { fileURLToPath } from "node:url";
2
- import { fetchRawFile } from "./api.js";
3
-
4
- /**
5
- * Busca o conteúdo bruto de um arquivo no central-docs via adapter.
6
- * Usada por `jarvis vcs fetch-raw`.
7
- * @param {string} filePath - Path do arquivo dentro do repo central-docs
8
- * @param {string} [ref] - Branch/ref (padrão: "main")
9
- */
10
- export async function runFetchRaw(filePath, ref = "main") {
11
- const repo = process.env.CENTRAL_DOCS_REPO;
12
-
13
- if (!filePath) {
14
- console.error("Uso: jarvis vcs fetch-raw <file-path> [ref]");
15
- process.exit(1);
16
- }
17
- if (!repo) {
18
- console.error("CENTRAL_DOCS_REPO não definido");
19
- process.exit(1);
20
- }
21
-
22
- try {
23
- const content = await fetchRawFile(repo, filePath, ref);
24
- process.stdout.write(content);
25
- } catch (err) {
26
- if (err.code === 404) {
27
- console.error(`⚠️ Arquivo não encontrado no central-docs: ${filePath}`);
28
- process.exit(2);
29
- }
30
- if (err.code === 401 || err.code === 403) {
31
- console.error("❌ Token sem permissão para acessar o repositório");
32
- process.exit(1);
33
- }
34
- console.error(err.message);
35
- process.exit(1);
36
- }
37
- }
38
-
39
- // Compatibilidade: continua funcionando como `node bin/lib/vcs/fetch-raw.js <file-path> [ref]`
40
- if (fileURLToPath(import.meta.url) === process.argv[1]) {
41
- await runFetchRaw(process.argv[2], process.argv[3] || "main");
42
- }