jarvis-ai-framework 3.2.0 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/agents/engineering/eng.docs-consolidator.agent.md +81 -0
- package/agents/engineering/qa/eng.qa.test-planner.md +7 -7
- package/agents/product/prod.discovery-interviewer.md +1 -1
- package/bin/README.md +14 -14
- package/bin/commands/docs-publish.js +61 -93
- package/bin/commands/docs-sync.js +31 -63
- package/bin/lib/cli/program.js +23 -25
- package/bin/lib/docs/fetch-file.js +29 -26
- package/bin/lib/docs/publish-file.js +98 -159
- package/bin/lib/docs/storage/build-index.js +108 -0
- package/bin/lib/docs/storage/filesystem.js +203 -0
- package/bin/lib/docs/storage/index.js +75 -0
- package/bin/lib/docs/validate-frontmatter.js +18 -4
- package/bin/lib/vcs/api.js +0 -125
- package/package.json +2 -2
- package/rules/AGENTS.md +12 -9
- package/rules/engineering/eng.docs-scraping-rules.md +4 -4
- package/rules/engineering/eng.integrations-rules.md +3 -2
- package/rules/engineering/rpa/eng.rpa-rules.md +1 -1
- package/rules/product/prod-rules.md +5 -6
- package/rules-on-demand/engineering/eng.pr-rules.md +9 -31
- package/rules-on-demand/engineering/eng.pre-pr-rules.md +12 -19
- package/rules-on-demand/product/prod.guided-rules.md +104 -0
- package/skills/eng-backend-arch-c4/SKILL.md +3 -3
- package/skills/eng-global-docs-write/SKILL.md +1 -1
- package/skills/eng-qa-planner/SKILL.md +5 -5
- package/skills/jarvis-docs-central/README.md +51 -275
- package/skills/jarvis-docs-central/SKILL.md +114 -301
- package/skills/jarvis-init/SKILL.md +81 -8
- package/templates/ENV-template.md +28 -7
- package/templates/engineering/ARD-template.md +40 -7
- package/templates/engineering/architecture-template.md +1 -0
- package/templates/engineering/central-delivery-template.md +65 -0
- package/templates/engineering/central-feature-template.md +86 -0
- package/templates/product/prod-breakdown-template.md +20 -2
- package/templates/product/prod-discovery-template.md +24 -1
- package/templates/product/prod-epic-template.md +32 -1
- package/templates/product/prod-frd-template.md +29 -2
- package/templates/product/prod-issue-template.md +36 -1
- package/templates/product/prod-prd-template.md +33 -2
- package/workflows/engineering/eng.build-tech-spec.md +4 -4
- package/workflows/engineering/eng.create-ard-from-code.md +15 -41
- package/workflows/engineering/eng.create-ard.md +22 -44
- package/workflows/engineering/eng.create-rfc.md +10 -36
- package/workflows/engineering/eng.pr.md +35 -66
- package/workflows/engineering/eng.pre-pr.md +52 -89
- package/workflows/engineering/eng.rpa.robot.md +9 -7
- package/workflows/engineering/eng.spec-consolidate.md +140 -0
- package/workflows/engineering/eng.start.md +23 -22
- package/workflows/engineering/eng.work.md +1 -1
- package/workflows/engineering/qa/eng.qa-refinement-entry.md +1 -1
- package/workflows/engineering/qa/eng.qa-release-signoff.md +3 -3
- package/workflows/engineering/qa/eng.qa-sprint-planning.md +2 -2
- package/workflows/product/prod.roadmap.preview.md +4 -1
- package/workflows/product/prod.spec.ard.md +9 -5
- package/workflows/product/prod.spec.breakdown.md +8 -4
- package/workflows/product/prod.spec.clarify.md +5 -1
- package/workflows/product/prod.spec.discovery.md +7 -3
- package/workflows/product/prod.spec.epic.md +12 -40
- package/workflows/product/prod.spec.frd.md +13 -39
- package/workflows/product/prod.spec.issue.md +5 -1
- package/workflows/product/prod.spec.md +3 -1
- package/workflows/product/prod.spec.prd.md +13 -40
- package/workflows/warm-up.md +10 -12
- package/bin/lib/docs/redis-cache.js +0 -49
- package/bin/lib/vcs/fetch-raw.js +0 -42
|
@@ -3,18 +3,22 @@ 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:
|
|
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.
|
|
16
20
|
|
|
17
|
-
> ⚠️ **O ARD é um documento de engenharia.** O arquivo resultante fica em `$
|
|
21
|
+
> ⚠️ **O ARD é um documento de engenharia.** O arquivo resultante fica em `$ENG_DOCS/ARD/` (como no `eng.create-ard`), e as decisões de arquitetura pertencem à engenharia. Este comando só levanta os requisitos e abre o fluxo. Diga isso ao usuário no início.
|
|
18
22
|
|
|
19
23
|
Utilize o `$ARGUMENTS` que o usuário passar como ponto de partida e para entender o contexto do que foi pedido.
|
|
20
24
|
<requirement>
|
|
@@ -41,12 +45,12 @@ 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 `
|
|
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 conhecer as funcionalidades já implementadas relacionadas |
|
|
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
|
|
48
52
|
- Um **resumo dos requisitos arquiteturais** confirmado pelo usuário (Gate 3), entregue como insumo ao `eng.create-ard`
|
|
49
|
-
- O **ARD** gerado pelo `eng.create-ard` (numeração `ARD-###`, versão `1.0.0`, template `$IDE/templates/engineering/ARD-template.md` e caminho `$
|
|
53
|
+
- O **ARD** gerado pelo `eng.create-ard` (numeração `ARD-###`, versão `1.0.0`, template `$IDE/templates/engineering/ARD-template.md` e caminho `$ENG_DOCS/ARD/{ARD-ID}-{slug}.md`)
|
|
50
54
|
- Rascunhos WIP, se houver, em `$SESSIONS_DIR/prod/{TASK_MANAGER_KEY}/`; o documento canônico é o ARD
|
|
51
55
|
- O arquivo final no mesmo idioma da interação do usuário
|
|
52
56
|
|
|
@@ -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 `
|
|
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, consulte também no Central docs as funcionalidades já implementadas relacionadas (o PRD e o FRD ficam em `$PROD_DOCS`).
|
|
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:
|
|
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 `
|
|
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,10 +62,10 @@ 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 `
|
|
65
|
+
Se `CENTRAL_DOCS_STORAGE` estiver no `ENV.md`:
|
|
62
66
|
|
|
63
67
|
1. `jarvis docs sync --silent` (best-effort)
|
|
64
|
-
2. Localizar
|
|
68
|
+
2. Localizar no Central docs as funcionalidades já implementadas relacionadas (nome, tags, `TASK_MANAGER_KEY`); o Documento de Requisitos de Produto / funcional vem de `$PROD_DOCS`
|
|
65
69
|
3. Usar como contexto; se não achar, seguir com arquivos locais em `$PROD_DOCS`
|
|
66
70
|
|
|
67
71
|
## Sessões
|
|
@@ -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:
|
|
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:
|
|
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 `
|
|
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 `
|
|
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:
|
|
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,8 @@ 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 `
|
|
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" |
|
|
43
46
|
|
|
44
47
|
## Resultado final
|
|
45
48
|
- Por padrão, use o modelo `$PROD_TEMPLATES/prod-epic-template.md` integralmente
|
|
@@ -118,48 +121,17 @@ Após a aprovação do usuário:
|
|
|
118
121
|
|
|
119
122
|
## Busca no Central Docs (condicional)
|
|
120
123
|
|
|
121
|
-
Se `
|
|
124
|
+
Se `CENTRAL_DOCS_STORAGE` definido no ENV.md, antes de criar o épico:
|
|
122
125
|
|
|
123
|
-
-
|
|
126
|
+
- Consultar no Central docs as funcionalidades já implementadas relacionadas (o que existe hoje):
|
|
124
127
|
```bash
|
|
125
128
|
jarvis docs sync --silent
|
|
126
129
|
```
|
|
127
|
-
- Buscar PRD e épicos existentes
|
|
128
|
-
- Se
|
|
130
|
+
- Buscar PRD e épicos existentes em `$PROD_DOCS` e, no Central docs, as funcionalidades já implementadas relacionadas
|
|
131
|
+
- Se encontrar: carregar como contexto e informar o usuário
|
|
129
132
|
- Se não encontrado: continuar com fluxo normal
|
|
130
133
|
|
|
131
|
-
##
|
|
132
|
-
|
|
133
|
-
Após salvar o épico localmente e obter aprovação do usuário:
|
|
134
|
-
|
|
135
|
-
1. Se `CENTRAL_DOCS_REPO` definido no ENV.md:
|
|
136
|
-
- Perguntar ao usuário:
|
|
137
|
-
```
|
|
138
|
-
Deseja publicar este épico no repositório central de documentação?
|
|
139
|
-
- ( ) Sim, publicar agora
|
|
140
|
-
- ( ) Não, vou publicar depois manualmente
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
2. Se **Sim**:
|
|
144
|
-
- Extrair o slug do nome do arquivo (ex: `epic-123-checkout.md` → `checkout`)
|
|
145
|
-
- Executar:
|
|
146
|
-
```bash
|
|
147
|
-
jarvis docs publish \
|
|
148
|
-
--file {caminho_do_epico} \
|
|
149
|
-
--tipo epic \
|
|
150
|
-
--feature {slug}
|
|
151
|
-
```
|
|
134
|
+
## Central docs
|
|
152
135
|
|
|
153
|
-
|
|
154
|
-
- ✅ Sucesso: "Épico publicado no central-docs. MR criado: [URL]"
|
|
155
|
-
- ❌ Erro: Exibir mensagem de erro e orientar troubleshooting
|
|
136
|
+
Este documento é um **documento de trabalho**: fica em `$PROD_DOCS`/`$ENG_DOCS` (`docs/jarvis/`) e **não** é publicado no Central docs. O Central docs registra só o que foi implementado, e quem o atualiza é o `/eng.spec-consolidate`, depois do PR da entrega.
|
|
156
137
|
|
|
157
|
-
4. Se **Não**:
|
|
158
|
-
- Informar: "Para publicar depois, execute: `jarvis docs publish --file {caminho} --tipo epic --feature {slug}`"
|
|
159
|
-
|
|
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.
|
|
161
|
-
|
|
162
|
-
Utilize o que o usuário fornecer analisar em:
|
|
163
|
-
<requirement>
|
|
164
|
-
#$ARGUMENTS
|
|
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:
|
|
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,7 @@ 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 `
|
|
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 |
|
|
35
38
|
|
|
36
39
|
## Princípios Fundamentais
|
|
37
40
|
1. **Sempre use o template** `$PROD_TEMPLATES/prod-frd-template.md` para o output final
|
|
@@ -56,20 +59,20 @@ A FRD não é um épico, história ou task: ela serve como documento de detalham
|
|
|
56
59
|
|
|
57
60
|
## Busca no Central Docs (condicional)
|
|
58
61
|
|
|
59
|
-
Se `
|
|
62
|
+
Se `CENTRAL_DOCS_STORAGE` definido no ENV.md:
|
|
60
63
|
|
|
61
64
|
1. **Buscar PRD correspondente:**
|
|
62
|
-
-
|
|
65
|
+
- Consultar no Central docs as funcionalidades já implementadas relacionadas (o que existe hoje):
|
|
63
66
|
```bash
|
|
64
67
|
jarvis docs sync --silent
|
|
65
68
|
```
|
|
66
|
-
- Buscar PRD relacionado usando:
|
|
69
|
+
- Buscar o PRD relacionado em `$PROD_DOCS` (documento de trabalho; o Central docs não guarda PRD) usando:
|
|
67
70
|
- Nome/contexto fornecido pelo usuário
|
|
68
71
|
- Jira ID (se disponível)
|
|
69
72
|
- Tags semânticas
|
|
70
|
-
- Se PRD encontrado
|
|
73
|
+
- Se o PRD for encontrado em `$PROD_DOCS`:
|
|
71
74
|
- Carregar automaticamente como base para o FRD
|
|
72
|
-
- Informar ao usuário: "✅ PRD encontrado
|
|
75
|
+
- Informar ao usuário: "✅ PRD encontrado: [caminho]"
|
|
73
76
|
- Passar como contexto para o Gate 1 (Fluxo de Trabalho, abaixo)
|
|
74
77
|
- Se não encontrado:
|
|
75
78
|
- Perguntar ao usuário se tem PRD localmente
|
|
@@ -183,36 +186,7 @@ O sistema deve validar os dados do formulário.
|
|
|
183
186
|
- Se for uma spec nova:
|
|
184
187
|
- Salve na pasta `$PROD_DOCS` seguindo todos os padrões de nomenclatura e estrutura de pastas já estabelecidos em `$PROD_RULES/**/*`
|
|
185
188
|
|
|
186
|
-
##
|
|
187
|
-
|
|
188
|
-
Após salvar o FRD localmente e obter aprovação do usuário:
|
|
189
|
-
|
|
190
|
-
1. Se `CENTRAL_DOCS_REPO` definido no ENV.md:
|
|
191
|
-
- Perguntar ao usuário:
|
|
192
|
-
```
|
|
193
|
-
Deseja publicar este FRD no repositório central de documentação?
|
|
194
|
-
- ( ) Sim, publicar agora
|
|
195
|
-
- ( ) Não, vou publicar depois manualmente
|
|
196
|
-
```
|
|
197
|
-
|
|
198
|
-
2. Se **Sim**:
|
|
199
|
-
- Extrair o slug do nome do arquivo (ex: `frd-wallet-saque.md` → `wallet-saque`)
|
|
200
|
-
- Executar:
|
|
201
|
-
```bash
|
|
202
|
-
jarvis docs publish \
|
|
203
|
-
--file {caminho_do_frd} \
|
|
204
|
-
--tipo frd \
|
|
205
|
-
--feature {slug}
|
|
206
|
-
```
|
|
207
|
-
|
|
208
|
-
3. Informar resultado:
|
|
209
|
-
- ✅ Sucesso: "FRD publicado no central-docs. MR criado: [URL]"
|
|
210
|
-
- ❌ Erro: Exibir mensagem de erro e orientar troubleshooting
|
|
211
|
-
|
|
212
|
-
4. Se **Não**:
|
|
213
|
-
- Informar: "Para publicar depois, execute: `jarvis docs publish --file {caminho} --tipo frd --feature {slug}`"
|
|
189
|
+
## Central docs
|
|
214
190
|
|
|
215
|
-
|
|
216
|
-
- Informar: "Para habilitar publicação automática, configure `CENTRAL_DOCS_REPO` no ENV.md"
|
|
191
|
+
Este documento é um **documento de trabalho**: fica em `$PROD_DOCS`/`$ENG_DOCS` (`docs/jarvis/`) e **não** é publicado no Central docs. O Central docs registra só o que foi implementado, e quem o atualiza é o `/eng.spec-consolidate`, depois do PR da entrega.
|
|
217
192
|
|
|
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.
|
|
@@ -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:
|
|
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:
|
|
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:
|
|
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,7 @@ 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 `
|
|
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) |
|
|
34
37
|
|
|
35
38
|
## Princípios Fundamentais
|
|
36
39
|
1. **Sempre use o template** `$PROD_TEMPLATES/prod-prd-template.md` para o output final
|
|
@@ -41,20 +44,20 @@ Utilize o `$ARGUMENTS` que o usuário passar como ponto de partida e para entend
|
|
|
41
44
|
|
|
42
45
|
## Busca no Central Docs (condicional)
|
|
43
46
|
|
|
44
|
-
Se `
|
|
47
|
+
Se `CENTRAL_DOCS_STORAGE` definido no ENV.md:
|
|
45
48
|
|
|
46
49
|
1. **Para iteração de PRD existente:**
|
|
47
|
-
-
|
|
50
|
+
- Consultar no Central docs as funcionalidades já implementadas relacionadas (o que existe hoje):
|
|
48
51
|
```bash
|
|
49
52
|
jarvis docs sync --silent
|
|
50
53
|
```
|
|
51
|
-
- Buscar PRD relacionado usando:
|
|
54
|
+
- Buscar o PRD relacionado em `$PROD_DOCS` (documento de trabalho; o Central docs não guarda PRD) usando:
|
|
52
55
|
- Nome/contexto do PRD fornecido pelo usuário
|
|
53
56
|
- Jira ID (se disponível)
|
|
54
57
|
- Tags semânticas
|
|
55
|
-
- Se PRD encontrado
|
|
58
|
+
- Se o PRD for encontrado em `$PROD_DOCS`:
|
|
56
59
|
- Carregar automaticamente como base para iteração
|
|
57
|
-
- Informar ao usuário: "✅ PRD encontrado
|
|
60
|
+
- Informar ao usuário: "✅ PRD encontrado: [caminho]"
|
|
58
61
|
- Usar como contexto para o Gate 1 (Fluxo de Trabalho, abaixo)
|
|
59
62
|
- Se não encontrado:
|
|
60
63
|
- Perguntar ao usuário se tem PRD localmente
|
|
@@ -170,37 +173,7 @@ Quais métricas? A) Engajamento B) Receita C) Outro
|
|
|
170
173
|
- Se for uma spec nova:
|
|
171
174
|
- Salve na pasta `$PROD_DOCS` seguindo todos os padrões de nomenclatura e estrutura de pastas já estabelecidos em `$PROD_RULES/**/*`
|
|
172
175
|
|
|
173
|
-
##
|
|
174
|
-
|
|
175
|
-
Após salvar o PRD localmente e obter aprovação do usuário:
|
|
176
|
-
|
|
177
|
-
1. Se `CENTRAL_DOCS_REPO` definido no ENV.md:
|
|
178
|
-
- Perguntar ao usuário:
|
|
179
|
-
```
|
|
180
|
-
Deseja publicar este PRD no repositório central de documentação?
|
|
181
|
-
- ( ) Sim, publicar agora
|
|
182
|
-
- ( ) Não, vou publicar depois manualmente
|
|
183
|
-
```
|
|
184
|
-
|
|
185
|
-
2. Se **Sim**:
|
|
186
|
-
- Extrair o slug do nome do arquivo (ex: `prd-wallet.md` → `wallet`)
|
|
187
|
-
- Executar:
|
|
188
|
-
```bash
|
|
189
|
-
jarvis docs publish \
|
|
190
|
-
--file {caminho_do_prd} \
|
|
191
|
-
--tipo prd \
|
|
192
|
-
--feature {slug}
|
|
193
|
-
```
|
|
194
|
-
|
|
195
|
-
3. Informar resultado:
|
|
196
|
-
- ✅ Sucesso: "PRD publicado no central-docs. MR criado: [URL]"
|
|
197
|
-
- ❌ Erro: Exibir mensagem de erro e orientar troubleshooting
|
|
198
|
-
|
|
199
|
-
4. Se **Não**:
|
|
200
|
-
- Informar: "Para publicar depois, execute: `jarvis docs publish --file {caminho} --tipo prd --feature {slug}`"
|
|
201
|
-
|
|
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"
|
|
176
|
+
## Central docs
|
|
204
177
|
|
|
205
|
-
|
|
178
|
+
Este documento é um **documento de trabalho**: fica em `$PROD_DOCS`/`$ENG_DOCS` (`docs/jarvis/`) e **não** é publicado no Central docs. O Central docs registra só o que foi implementado, e quem o atualiza é o `/eng.spec-consolidate`, depois do PR da entrega.
|
|
206
179
|
|
package/workflows/warm-up.md
CHANGED
|
@@ -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 `
|
|
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,14 +129,14 @@ 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 `
|
|
132
|
+
Se `CENTRAL_DOCS_STORAGE` estiver configurado no ENV.md, invocar o skill `jarvis-docs-central` via Skill tool para carregar **o que já foi implementado** no produto (funcionalidades `feature-*` e entregas recentes `delivery-*`). Os documentos de trabalho (PRD, FRD, ARD, RFC) ficam em `docs/jarvis/` e não estão no Central docs.
|
|
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)**
|
|
136
136
|
|
|
137
137
|
O skill `jarvis-docs-central` gerencia:
|
|
138
|
-
-
|
|
139
|
-
-
|
|
138
|
+
- O adaptador de `CENTRAL_DOCS_STORAGE` (pasta, com `git pull` quando a pasta é um clone)
|
|
139
|
+
- Índice ausente (o squad ainda não tem consolidação)
|
|
140
140
|
- Tratamento de erros
|
|
141
141
|
|
|
142
142
|
**Invocação:**
|
|
@@ -150,17 +150,15 @@ Contexto: warm-up - sincronização inicial
|
|
|
150
150
|
```
|
|
151
151
|
🔄 Sincronizando docs de {SQUAD}/{WORKSPACE}...
|
|
152
152
|
✅ Docs sincronizados
|
|
153
|
-
📊
|
|
154
|
-
-
|
|
155
|
-
-
|
|
156
|
-
- 2 ARD(s)
|
|
157
|
-
- 1 RFC(s)
|
|
153
|
+
📊 7 documentos disponíveis:
|
|
154
|
+
- 4 funcionalidade(s)
|
|
155
|
+
- 3 entrega(s) recente(s)
|
|
158
156
|
```
|
|
159
157
|
|
|
160
158
|
**Comportamento:**
|
|
161
|
-
- Se `
|
|
162
|
-
- Se
|
|
163
|
-
- Se `index.md` não existe →
|
|
159
|
+
- Se `CENTRAL_DOCS_STORAGE` vazio → pula silenciosamente
|
|
160
|
+
- Se o `git pull` falhar (pasta com git) → avisa e lê a cópia local
|
|
161
|
+
- Se `index.md` não existe → avisa que o squad ainda não tem consolidação (sugere `/eng.spec-consolidate --inicial`)
|
|
164
162
|
- Se erro genérico → exibe mensagem clara e continua sem bloquear
|
|
165
163
|
|
|
166
164
|
Após sincronizar, exibir resumo dos documentos disponíveis:
|
|
@@ -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
|
-
}
|
package/bin/lib/vcs/fetch-raw.js
DELETED
|
@@ -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
|
-
}
|