jarvis-ai-framework 5.2.0 → 5.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +1 -0
- package/README.md +14 -1
- package/bin/commands/init.js +189 -2
- package/bin/commands/tokens.js +9 -3
- package/bin/lib/cli/program.js +18 -2
- package/bin/lib/config/constants.js +5 -0
- package/bin/lib/core/docs-migrate.js +259 -0
- package/bin/lib/core/env-upgrade.js +97 -0
- package/bin/lib/core/profile-filter.js +15 -3
- package/bin/lib/core/stale-skills.js +63 -0
- package/bin/lib/core/sync-engine.js +5 -3
- package/bin/lib/core/token-report.js +1 -0
- package/bin/lib/core/workspace-mode.js +57 -0
- package/bin/lib/docs/storage/build-index.js +2 -1
- package/bin/lib/vcs/api.js +13 -1
- package/bin/lib/vcs/create-issue.js +17 -3
- package/package.json +2 -2
- package/rules/AGENTS.md +4 -1
- package/rules/artifact-style-rules.md +55 -0
- package/rules/engineering/eng-rules.md +12 -1
- package/rules/engineering/eng.integrations-rules.md +1 -1
- package/rules/product/prod-rules.md +6 -3
- package/rules/product/prod.spec-rules.md +2 -2
- package/rules-on-demand/engineering/eng.plan-rules.md +1 -1
- package/rules-on-demand/engineering/eng.pr-rules.md +6 -5
- package/rules-on-demand/engineering/eng.pre-pr-rules.md +2 -2
- package/rules-on-demand/engineering/eng.start-rules.md +2 -2
- package/rules-on-demand/engineering/eng.transitions-rules.md +67 -0
- package/rules-on-demand/engineering/eng.work-rules.md +9 -3
- package/skills/eng-global-pr/SKILL.md +3 -1
- package/skills/eng-global-task-comment/SKILL.md +2 -0
- package/skills/jarvis-create-specialization/SKILL.md +1 -1
- package/skills/jarvis-docs-central/SKILL.md +1 -1
- package/skills/jarvis-init/SKILL.md +64 -23
- package/skills/jarvis-init/assets/passo-adicionar-stacks.md +1 -1
- package/skills/jarvis-init/assets/setup-guide.md +3 -3
- package/skills/jarvis-report-issue/SKILL.md +64 -9
- package/templates/ENV-template.md +17 -3
- package/templates/engineering/architecture-template.md +2 -1
- package/templates/engineering/daily-template.md +1 -1
- package/templates/engineering/plan-template.md +2 -0
- package/templates/product/prod-epic-template.md +1 -1
- package/templates/product/prod-frd-template.md +1 -1
- package/templates/product/prod-issue-template.md +1 -1
- package/templates/product/prod-prd-template.md +1 -1
- package/workflows/engineering/eng.plan.md +3 -2
- package/workflows/engineering/eng.pr.md +60 -16
- package/workflows/engineering/eng.pre-pr.md +21 -8
- package/workflows/engineering/eng.spec-consolidate.md +7 -1
- package/workflows/engineering/eng.start.md +11 -3
- package/workflows/engineering/eng.work.md +23 -6
- package/workflows/product/prod.spec.discovery.md +2 -2
- package/workflows/warm-up.md +2 -2
|
@@ -87,6 +87,6 @@ O workflow **deve sempre** terminar com:
|
|
|
87
87
|
|
|
88
88
|
1. **`gate-checklist.md`** em `$SESSIONS_DIR/eng/{TASK_MANAGER_KEY}/`:
|
|
89
89
|
- semáforo (🟢 / 🟡 / 🔴), resumo, lacunas por área (o quê, onde, por que importa, sugestão, severidade, **Decisão**), evidências e PR Brief.
|
|
90
|
-
2. **Decisões do usuário** gravadas na coluna Decisão (
|
|
91
|
-
3. **Pergunta
|
|
90
|
+
2. **Decisões do usuário** gravadas na coluna Decisão (Corrigir / Aceitar + motivo; vazia se o usuário escolheu "Só gerar o relatório").
|
|
91
|
+
3. **Pergunta** (`AskUserQuestion`) sobre registrar o resultado como comentário no card (`/eng-global-task-comment`): Não, manter só na sessão (como hoje) / Sim, só o resumo / Sim, o relatório completo. Nunca publicar sem a resposta. Freelance: não pergunta, só na sessão.
|
|
92
92
|
4. **Aguardar permissão explícita** do usuário para prosseguir para `/eng.pr`.
|
|
@@ -42,7 +42,7 @@ O workflow **só é considerado completo** após:
|
|
|
42
42
|
|
|
43
43
|
1. O `architecture.md` estar preenchido
|
|
44
44
|
2. O usuário revisar o documento
|
|
45
|
-
3. O usuário **aprovar explicitamente** para prosseguir
|
|
45
|
+
3. O usuário **aprovar explicitamente** para prosseguir — sem Advisor, pela pergunta de transição "Aprovar o architecture.md?" (`eng.transitions-rules.md`)
|
|
46
46
|
|
|
47
47
|
**Exceção (Advisor):** se o usuário escolheu usar o Advisor no início do `eng.start`, as questões em aberto são decididas pela sugestão dele e o gate segue a autonomia do `context.md`: com `autonomia: alta` o `start` apresenta o resumo e segue para o `eng.plan` sem aguardar; com `média` ou `baixa`, a aprovação explícita continua obrigatória.
|
|
48
48
|
|
|
@@ -92,7 +92,7 @@ O workflow **só é considerado completo** após:
|
|
|
92
92
|
7. **Aguardar aprovação**
|
|
93
93
|
- Se aprovado → Informar próximos passos
|
|
94
94
|
- Se rejeitado → Iterar no documento
|
|
95
|
-
- NUNCA prosseguir
|
|
95
|
+
- NUNCA prosseguir sem a resposta: "Aprovar e seguir para o `/eng.plan`" (pergunta de transição, `eng.transitions-rules.md`) é a aprovação para seguir; a exceção do Advisor continua valendo
|
|
96
96
|
|
|
97
97
|
---
|
|
98
98
|
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
> **Applies to:** HUB: all | POSITION: all | AREA: ENGINEERING | SQUAD: all
|
|
2
|
+
|
|
3
|
+
# Regras das transições do ciclo de engenharia
|
|
4
|
+
|
|
5
|
+
## Objetivo
|
|
6
|
+
|
|
7
|
+
Dar fluidez ao ciclo `eng.start → eng.plan → eng.work → eng.pre-pr → eng.pr → eng.spec-consolidate` com perguntas nos pontos de início e de transição, sem mudar nada para quem prefere o fluxo de sempre.
|
|
8
|
+
|
|
9
|
+
## Escopo
|
|
10
|
+
|
|
11
|
+
Lida pelos workflows `eng.start`, `eng.plan`, `eng.work`, `eng.pre-pr` e `eng.pr` (cada um manda ler este arquivo). Vale para as perguntas da tabela "Transições" abaixo. A regra 5 (consolidado de links) vale também para a mensagem final do `eng.spec-consolidate`, que fecha o ciclo.
|
|
12
|
+
|
|
13
|
+
## Regras
|
|
14
|
+
|
|
15
|
+
### Obrigatório
|
|
16
|
+
|
|
17
|
+
1. **A opção padrão mantém o fluxo atual.** É a primeira (ou a marcada como padrão) e diz o que acontece, com "(como hoje)" ou o nome do fluxo. **Nunca** se chama "Ignorar": quem a escolhe não pula nada, segue o fluxo de sempre e interage com o documento como sempre fez.
|
|
18
|
+
2. **Formato:** `AskUserQuestion`, uma pergunta por decisão, no máximo 4 opções. **Não liste "Outros"**: o `AskUserQuestion` já o acrescenta sozinho para o texto livre, e listá-lo gasta uma das 4 vagas. Sem `AskUserQuestion`, use a tabela de opções de `prod-rules.md`.
|
|
19
|
+
3. **A resposta é a aprovação.** "Aprovar e seguir" ou "Aprovar e parar aqui" valem como a aprovação explícita que as rules de cada comando exigem. Sem uma dessas respostas, nada avança.
|
|
20
|
+
4. **Seguir para o próximo comando:** se a IDE permite chamar outro comando (no Claude Code, pelo Skill tool), chame-o com o mesmo `{TASK_MANAGER_KEY}`; senão, mostre o comando pronto para colar.
|
|
21
|
+
5. **Consolidado de links, acumulado a cada etapa.** Ao terminar e antes de cada pergunta que depende de um arquivo, cada comando mostra o bloco "📄 Arquivos da sessão" com **todos** os arquivos que já existem na sessão, e não só os da etapa, para que a lista fique sempre visível até o `eng.spec-consolidate`:
|
|
22
|
+
- Ordem do ciclo: `context.md`, `architecture.md`, `plan.md`, `gate-checklist.md`, `pull-request.md`, `daily.md`, as versões `{nome}.public.md` (se houver) e os arquivos de `consolidation/` (do `eng.spec-consolidate`). Só entra o que existe.
|
|
23
|
+
- Cada item é um link markdown com caminho relativo ao workspace (ex.: `[architecture.md](.jarvis/sessions/eng/TASK-123/architecture.md)`), seguido de uma **nota curta de estado** entre parênteses: `novo` ou `atualizado` quando foi gerado ou alterado nesta etapa, mais o que mudou ou o que o arquivo contém (ex.: `plan.md (atualizado, com comentários por fase)`, `architecture.md (aprovado; 5 questões decididas)`, `daily.md (novo; aprovado, com timesheet)`). Os arquivos que não mudaram na etapa aparecem sem nota ou com o estado em que ficaram.
|
|
24
|
+
- A lista é **reimpressa inteira** a cada etapa, sem esconder os arquivos anteriores.
|
|
25
|
+
- Logo abaixo, "🔗 Links" com o card/issue e, quando existir, o PR/MR.
|
|
26
|
+
- **Antes de cada pergunta que depende de um arquivo** (`architecture.md`, `plan.md`, `gate-checklist.md`, `pull-request.md`, `daily.md`), escreva primeiro essa mensagem em markdown, com o resumo, e só então abra o `AskUserQuestion`. A pergunta fica curta, só com a decisão e o nome do arquivo em texto simples; ela espera a resposta enquanto a pessoa abre e lê com calma. Não dependa do link dentro do `AskUserQuestion`.
|
|
27
|
+
6. **Limites que nenhuma escolha dispensa:** `MAX_AI_EXECUTION_PERCENTAGE`, testes e lint passando, e a parada em questão nova em aberto.
|
|
28
|
+
|
|
29
|
+
### Proibido
|
|
30
|
+
|
|
31
|
+
- Pergunta nova sem a opção que mantém o fluxo atual.
|
|
32
|
+
- Avançar para o próximo comando sem a resposta do usuário.
|
|
33
|
+
- Usar a escolha de um comando para contornar o `MAX_AI_EXECUTION_PERCENTAGE`.
|
|
34
|
+
|
|
35
|
+
### Transições
|
|
36
|
+
|
|
37
|
+
| Comando | Quando | Pergunta | Opções (padrão primeiro) |
|
|
38
|
+
|---|---|---|---|
|
|
39
|
+
| `eng.start` | Início, só **sem Advisor** | "Como tratar as questões em aberto que surgirem?" | Tratar no architecture.md (como hoje) · Uma a uma, assim que surgirem |
|
|
40
|
+
| `eng.start` | Fim, só **sem Advisor** | "Aprovar o architecture.md?" | Aprovar e parar aqui (como hoje) · Aprovar e seguir para o `/eng.plan` · Ajustar o documento |
|
|
41
|
+
| `eng.plan` | Fim | "O que fazer com o plano?" | Aprovar e implementar agora · Aprovar e seguir manualmente (como hoje) · Ajustar o plano |
|
|
42
|
+
| `eng.work` | Início | Execução | Fase a fase, com aprovação (como hoje) · Todas de uma vez ("N de M tarefas", pelo limite) |
|
|
43
|
+
| `eng.work` | Início | Commits | Um por fase (como hoje) · Um commit só ao final |
|
|
44
|
+
| `eng.work` | Início | Depois do work | Rodar o `/eng.pre-pr` · Rodar o `/eng.pr` · Fluxo normal (como hoje: o usuário segue os próximos comandos manualmente) |
|
|
45
|
+
| `eng.pre-pr` | Fim | Com lacunas: "Como seguir?" (depois da mensagem com o link do relatório) | Corrigir as lacunas agora · Parar aqui para corrigir à mão (como hoje) · Abrir o PR assim mesmo |
|
|
46
|
+
| `eng.pre-pr` | Fim | Sem lacunas: "Como seguir?" | Abrir o PR agora · Parar aqui (como hoje) |
|
|
47
|
+
| `eng.pr` | Início | "O que fazer com o PR?" | Revisar o texto e publicar (como hoje) · Publicar sem revisar o texto · Só gerar os arquivos (o usuário abre o PR à mão) |
|
|
48
|
+
| `eng.pr` | Fim | "O PR já foi aprovado e mergeado?" | Ainda não (como hoje) · Sim, rodar o `/eng.spec-consolidate` |
|
|
49
|
+
|
|
50
|
+
Nas perguntas "Depois do work" e "O que fazer com o plano?", a opção "como hoje" não é a primeira (em "Depois do work" fica por último), por escolha de produto: as primeiras opções são as ações que o usuário mais quer. Mesmo assim, é o fluxo que vale quando o usuário não escolhe.
|
|
51
|
+
|
|
52
|
+
**Com Advisor**, o `eng.start` não ganha pergunta nova: o Advisor decide as questões em aberto e o gate do fim segue a autonomia do `context.md`, como já estava.
|
|
53
|
+
|
|
54
|
+
### Recomendado
|
|
55
|
+
|
|
56
|
+
- Mostre, na própria opção, o que muda na prática (ex.: "Todas de uma vez (6 de 6 tarefas)").
|
|
57
|
+
- No `eng.work`, grave as escolhas no cabeçalho do `plan.md`; numa retomada, pergunte uma vez se mantém.
|
|
58
|
+
|
|
59
|
+
## Exceções
|
|
60
|
+
|
|
61
|
+
- O usuário pode dar as escolhas em texto livre ("faça todas as fases, um commit, direto ao PR"); valem como as respostas das perguntas correspondentes. É o "Escape Hatch" de `eng-rules.md` ("o usuário pode sempre fazer override de qualquer regra contextual com instrução explícita").
|
|
62
|
+
|
|
63
|
+
## Referências
|
|
64
|
+
|
|
65
|
+
- `workflows/engineering/eng.{start,plan,work,pre-pr,pr}.md`
|
|
66
|
+
- `rules/engineering/eng-rules.md` (`MAX_AI_EXECUTION_PERCENTAGE`)
|
|
67
|
+
- `rules/product/prod-rules.md` (formato sem `AskUserQuestion`)
|
|
@@ -73,7 +73,7 @@ O `work` é **estritamente proibido** de:
|
|
|
73
73
|
| Fazer `git push` | Escrever código |
|
|
74
74
|
| Criar Pull Requests | Criar/modificar arquivos de código |
|
|
75
75
|
| Usar `git add .` | `git add` de arquivos específicos da fase |
|
|
76
|
-
| Commitar sem aprovação do usuário na fase | Commitar ao final da fase validada, com testes passando
|
|
76
|
+
| Commitar sem aprovação do usuário na fase | Commitar ao final da fase validada (ou ao final, com "Um commit só"), com testes passando |
|
|
77
77
|
| Commitar com testes falhando | Executar testes locais |
|
|
78
78
|
| Mover cards no Jira | Ler arquivos da sessão |
|
|
79
79
|
| Fazer merge de branches | Atualizar `plan.md` com progresso |
|
|
@@ -81,6 +81,8 @@ O `work` é **estritamente proibido** de:
|
|
|
81
81
|
|
|
82
82
|
O commit segue o formato do workflow (`{TASK_MANAGER_KEY} {tipo}({escopo}): {descrição}`, com `Refs:`). Push e PR são responsabilidade do `eng.pr`.
|
|
83
83
|
|
|
84
|
+
**Escolhas do início** (`eng.transitions-rules.md`, Fase 1.3 do workflow): execução, commits e o que vem depois. Com "Todas de uma vez", a escolha é a aprovação das fases; com "Um commit só ao final", o commit é um só, depois da última fase; com "Rodar o `/eng.pr`", o work termina chamando o `/eng.pr` (que faz o push e o PR, não o work).
|
|
85
|
+
|
|
84
86
|
### 2. Escopo de Atuação
|
|
85
87
|
|
|
86
88
|
O `work` atua **exclusivamente** em:
|
|
@@ -222,12 +224,14 @@ Ao concluir uma fase, adicione na seção `### Comentários:`:
|
|
|
222
224
|
|
|
223
225
|
### Pontos de Pausa Obrigatórios
|
|
224
226
|
|
|
225
|
-
|
|
227
|
+
Com **"Fase a fase, com aprovação (como hoje)"**, o workflow **DEVE pausar e aguardar confirmação**:
|
|
226
228
|
|
|
227
229
|
1. ✋ **Antes de iniciar qualquer fase**
|
|
228
230
|
2. ✋ **Após completar implementação** (antes de atualizar plan.md)
|
|
229
231
|
3. ✋ **Antes de iniciar próxima fase**
|
|
230
232
|
|
|
233
|
+
Com **"Todas de uma vez"**, essas pausas não acontecem. **Em qualquer escolha**, o workflow para no limite do `MAX_AI_EXECUTION_PERCENTAGE`, com um teste falhando e diante de uma questão nova em aberto.
|
|
234
|
+
|
|
231
235
|
### Comunicação
|
|
232
236
|
|
|
233
237
|
- Seja claro sobre o que foi feito
|
|
@@ -291,10 +295,12 @@ Ao finalizar **TODAS as fases** do `plan.md`, informe:
|
|
|
291
295
|
2. Execute os testes completos
|
|
292
296
|
3. Quando estiver pronto, use `eng.pr` para criar o Pull Request
|
|
293
297
|
|
|
294
|
-
⚠️ Este workflow commita por fase, mas NÃO faz push nem PR.
|
|
298
|
+
⚠️ Este workflow commita (por fase ou ao final), mas NÃO faz push nem PR.
|
|
295
299
|
Use `eng.pr` quando estiver pronto para submeter.
|
|
296
300
|
```
|
|
297
301
|
|
|
302
|
+
Depois, siga a escolha **Depois do work** da Fase 1.3 (sugerir o `/eng.pre-pr`, chamá-lo, chamar o `/eng.pr` ou parar).
|
|
303
|
+
|
|
298
304
|
---
|
|
299
305
|
|
|
300
306
|
## Checklist de Conclusão de Fase
|
|
@@ -152,6 +152,8 @@ git add {arquivo1} {arquivo2} ...
|
|
|
152
152
|
Refs: {TASK_MANAGER_KEY}
|
|
153
153
|
```
|
|
154
154
|
|
|
155
|
+
Com `ARTIFACT_STYLE=human-generated`: sem `Co-Authored-By` de ferramenta nem "Generated with …", mesmo que a IDE peça (`rules/artifact-style-rules.md`).
|
|
156
|
+
|
|
155
157
|
**Tipos permitidos:**
|
|
156
158
|
|
|
157
159
|
| Tipo | Uso |
|
|
@@ -207,7 +209,7 @@ Usar template oficial em `$IDE/templates/engineering/PR-template.md`.
|
|
|
207
209
|
- **Branch origem**: `{NOME_DA_BRANCH}`
|
|
208
210
|
- **Branch destino**: Conforme solicitado (ex: `develop`)
|
|
209
211
|
|
|
210
|
-
> ⚠️ **IMPORTANTE**: Não mencione AI, Claude ou assistentes no MR.
|
|
212
|
+
> ⚠️ **IMPORTANTE**: Não mencione AI, Claude ou assistentes no MR. Com `ARTIFACT_STYLE=human-generated`, também sem "Generated with …" nem link da ferramenta.
|
|
211
213
|
|
|
212
214
|
### 6. Atualizar o card (`TASK_MANAGER`)
|
|
213
215
|
|
|
@@ -28,6 +28,8 @@ Ler `TASK_MANAGER`, `TASK_MANAGER_URL_BASE`, `TOKEN_TASK_MANAGER` e `USER` do `$
|
|
|
28
28
|
|
|
29
29
|
Se `TASK_MANAGER` estiver vazio, ausente ou ainda for a lista `[jira, linear, github, asana]` → **encerrar em silêncio** (freelance, sem board). Não pedir token. Não falhar o workflow.
|
|
30
30
|
|
|
31
|
+
Com `ARTIFACT_STYLE=human-generated`, o comentário sai sem marcas de IA (`rules/artifact-style-rules.md`).
|
|
32
|
+
|
|
31
33
|
### 1. MCP (só Jira)
|
|
32
34
|
|
|
33
35
|
Se `TASK_MANAGER=jira` e o MCP Atlassian estiver disponível:
|
|
@@ -92,7 +92,7 @@ Se a variável **não existir** (ausente; vazia é válida), **interrompa antes
|
|
|
92
92
|
Procure, na pasta do projeto, arquivos-fonte e arquivos de dependência (`package.json`, `go.mod`, `composer.json`, `pom.xml`, `build.gradle`, `pyproject.toml`, `requirements.txt`, `Gemfile`, `Cargo.toml`, `*.csproj` e afins), **ignorando** `node_modules`, `vendor`, `.git` e pastas de build.
|
|
93
93
|
|
|
94
94
|
- **Nenhum encontrado:** `ℹ️ Não encontrei código no projeto. Não criei nenhum skill; a skill base de {área} continua valendo.` e **fim**.
|
|
95
|
-
- **Mais de uma pasta candidata** (workspace com vários projetos, ou `WORKSPACE_REPOS`): pergunte qual ler.
|
|
95
|
+
- **Mais de uma pasta candidata** (workspace com vários projetos, ou `WORKSPACE_REPOS`): pergunte qual ler. Com `WORKSPACE_MODE=workspace`, leia só dentro dos repositórios (subpastas com `.git/`), nunca a raiz.
|
|
96
96
|
|
|
97
97
|
### Passo 4: Ler o projeto
|
|
98
98
|
|
|
@@ -24,7 +24,7 @@ Integrar os comandos do framework com o **Central docs**: o registro do que **de
|
|
|
24
24
|
| Documentos de trabalho | PRD, FRD, épicos, histórias, ARD, RFC, QA, swagger, robôs, C4: o que se pretende e se discute | `docs/jarvis/` (`$PROD_DOCS`, `$ENG_DOCS`), fora do versionamento |
|
|
25
25
|
| **Central docs** | O que foi implementado: um documento **completo e autossuficiente** por funcionalidade (estado atual) e um **registro por entrega** (PR, commits, autores) | Pasta do Central docs (adaptador) |
|
|
26
26
|
|
|
27
|
-
Quem escreve no Central docs é o **`/eng.spec-consolidate`** (agente `eng.docs-consolidator`),
|
|
27
|
+
Quem escreve no Central docs é o **`/eng.spec-consolidate`** (agente `eng.docs-consolidator`), depois do merge do PR. Os documentos de trabalho nunca são publicados lá.
|
|
28
28
|
|
|
29
29
|
**Modos deste skill:**
|
|
30
30
|
- buscar o que já foi implementado (Modo 1);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: jarvis-init
|
|
3
3
|
description: Inicializa o framework JARVIS e guia novos membros no processo de onboarding. Use quando precisar configurar o ambiente, criar ENV.md, validar MCPs ou orientar um novo desenvolvedor.
|
|
4
|
-
argument-hint: "[nome-do-membro-opcional]"
|
|
4
|
+
argument-hint: "[upgrade | nome-do-membro-opcional]"
|
|
5
5
|
disable-model-invocation: false
|
|
6
6
|
allowed-tools: Read Write Edit Grep Glob Bash MCP
|
|
7
7
|
license: AGPL-3.0
|
|
@@ -39,7 +39,7 @@ Regras que **substituem** qualquer trecho legado deste skill ou dos assets:
|
|
|
39
39
|
|
|
40
40
|
## Entrada
|
|
41
41
|
|
|
42
|
-
- `$ARGUMENTS` - (Opcional)
|
|
42
|
+
- `$ARGUMENTS` - (Opcional) `upgrade` (sem diferenciar maiúsculas): com `$IDE/ENV.md` existente, vai direto ao **Upgrade (C)** do passo "2. Verificar Existência do ENV.md", sem o menu A/B/C/D; sem `ENV.md`, avisa e segue a criação normal. Qualquer outro valor é o nome do novo membro, para personalizar o onboarding.
|
|
43
43
|
|
|
44
44
|
## Recursos
|
|
45
45
|
|
|
@@ -179,7 +179,7 @@ Identificar qual IDE o usuário está utilizando:
|
|
|
179
179
|
**CRÍTICO**: O `ENV.md` é a fonte de verdade do projeto.
|
|
180
180
|
|
|
181
181
|
1. Verificar se `$IDE/ENV.md` já existe
|
|
182
|
-
2. Se existir, perguntar ao usuário:
|
|
182
|
+
2. Se existir e `$ARGUMENTS` for `upgrade`, siga direto para a opção C, sem perguntar. Se existir e não vier `upgrade`, perguntar ao usuário:
|
|
183
183
|
```
|
|
184
184
|
⚠️ O arquivo ENV.md já existe. O que deseja fazer?
|
|
185
185
|
A: Sobrescrever completamente
|
|
@@ -190,10 +190,14 @@ Identificar qual IDE o usuário está utilizando:
|
|
|
190
190
|
|
|
191
191
|
**Se opção C (Upgrade):**
|
|
192
192
|
|
|
193
|
+
> No terminal, rode antes `jarvis init --upgrade --ide {ide}`: ele atualiza os arquivos do framework, acrescenta as variáveis novas e move os documentos para as pastas novas (itens 1–8, 10 a 12). Aqui ficam o Central docs antigo (item 9), as pendências que ele listar e o passo das stacks.
|
|
194
|
+
> **O upgrade só acrescenta chaves novas:** nenhuma chave já existente, preenchida ou não, é alterada.
|
|
195
|
+
> Trocou o `ARTIFACT_STYLE` (ou HUB, POSITION, AREA, SQUAD) à mão? O Passo 8 copia ou remove as rules desse perfil.
|
|
196
|
+
|
|
193
197
|
1. Ler todas as chaves do `templates/ENV-template.md`
|
|
194
198
|
2. Ler todas as chaves do `$IDE/ENV.md` existente
|
|
195
199
|
3. Ler `HUB` do ENV.md existente
|
|
196
|
-
4. Se `HUB≠DATA`: excluir do diff todas as chaves `DATA_*` — não propor adicioná-las
|
|
200
|
+
4. Se `HUB≠DATA`: excluir do diff todas as chaves `DATA_*` (exceto `DATA_SPECIALIZATIONS`, que é obrigatória em qualquer HUB) — não propor adicioná-las
|
|
197
201
|
5. Calcular diff: chaves no template que **não existem** no ENV.md atual (respeitando exclusão de DATA_* para não-DATA)
|
|
198
202
|
6. Se não houver diff:
|
|
199
203
|
```
|
|
@@ -208,12 +212,15 @@ Identificar qual IDE o usuário está utilizando:
|
|
|
208
212
|
|
|
209
213
|
Serão adicionadas ao final do ENV.md sem alterar os valores existentes.
|
|
210
214
|
```
|
|
211
|
-
8. **Exceção — documentos nos caminhos antigos:** procure documentos de trabalho em `$DOCS_FOLDER/product`, `$DOCS_FOLDER/engineering/{ARD,RFC,qa,swagger,openapi,robots,c4}
|
|
212
|
-
- Se houver, liste o que encontrou e pergunte com `AskUserQuestion` se move para `docs/jarvis/…` (`$PROD_DOCS
|
|
213
|
-
- **
|
|
215
|
+
8. **Exceção — documentos nos caminhos antigos:** procure documentos de trabalho em `$DOCS_FOLDER/product`, `$DOCS_FOLDER/engineering/{ARD,RFC,qa,swagger,openapi,robots,c4}`, `docs/engineering/{robots,swagger,openapi,c4}` e os discoveries em `$PROD_DOCS/discoveries/`.
|
|
216
|
+
- Se houver, liste o que encontrou e pergunte com `AskUserQuestion` (uma pergunta para todos) se move para `docs/jarvis/…` (`$PROD_DOCS`, `$ENG_DOCS/…` e, para os discoveries, `$DISCOVERIES_DOCS`). Use `git mv` quando o arquivo for versionado e `mv` quando não for, e garanta `docs/jarvis/` no `.gitignore`.
|
|
217
|
+
- **Conflito** (arquivo com o mesmo nome no destino): não sobrescreva; liste e pule esse arquivo. A pasta antiga só é removida se ficar vazia.
|
|
218
|
+
- **`related_discovery`:** depois de mover discoveries, nos `.md` de `$PROD_DOCS`, troque todo `related_discovery:` cujo **nome de arquivo** seja o de um discovery movido pelo caminho novo (relativo ao workspace). Isso também conserta valores que já estavam quebrados.
|
|
219
|
+
- **Sem confirmação, não mova nada:** as chaves **novas** recebem o caminho antigo (`DISCOVERIES_DOCS=$PROD_DOCS/discoveries`; `PROD_DOCS`/`ENG_DOCS` só se também forem novas). Chave que já existe não muda: avise que os documentos ficaram no caminho antigo.
|
|
214
220
|
- Depois, ofereça a carga inicial do Central docs (Passo 5.3).
|
|
215
221
|
9. **Exceção — Central docs antigo:** se o `ENV.md` tiver `CENTRAL_DOCS_REPO` preenchido e não tiver `CENTRAL_DOCS_STORAGE`, propor a migração (só com confirmação): `CENTRAL_DOCS_STORAGE=filesystem`, `CENTRAL_DOCS_LOCATION` com o padrão do modo de trabalho (Passo 4, "Central docs") e `git clone {CENTRAL_DOCS_REPO} {LOCATION}`. Depois, comentar a linha antiga (`# CENTRAL_DOCS_REPO=… (migrado em YYYY-MM-DD)`) e `CENTRAL_DOCS_CACHE_TTL`. Sem confirmação, não mexe e avisa que os comandos de docs vão pedir o Upgrade.
|
|
216
|
-
10. **Exceção — `PROD_MODE`:** se `PROD_MODE` estiver entre as chaves novas, faça a mesma pergunta do Passo 3 (Pergunta 8 — modo de condução) e grave a resposta
|
|
222
|
+
10. **Exceção — `PROD_MODE`:** se `PROD_MODE` estiver entre as chaves novas, grave pelo `AREA`: `ENGINEERING` → `developer-guided`, `PRODUCT` → `product-led`. Com outra `AREA` (ou vazia), faça a mesma pergunta do Passo 3 (Pergunta 8 — modo de condução) e grave a resposta. `PROD_MODE` que já existe, mesmo vazia, não muda. As demais chaves continuam sem pergunta.
|
|
223
|
+
- **`WORKSPACE_MODE`:** o `jarvis init --upgrade` já grava o modo detectado (raiz sem `.git` e 1+ subpastas com `.git/` = `workspace`; raiz com `.git` = `project`). Se a chave existir vazia, detecte do mesmo jeito e grave; se existir preenchida, não muda. Em `workspace`, o caminho do Central docs padrão é `./central-docs` (Passo 5.2).
|
|
217
224
|
11. Appender as novas variáveis ao final do `ENV.md` com comentário de data:
|
|
218
225
|
```
|
|
219
226
|
# --- Upgrade YYYY-MM-DD ---
|
|
@@ -268,6 +275,7 @@ Fluxo correto:
|
|
|
268
275
|
- **SQUAD** (do taxonomy) → mostrar em texto numerado
|
|
269
276
|
- **POSITION** (do taxonomy) → mostrar em texto numerado
|
|
270
277
|
- **PROD_MODE** (2 opções: product-led, developer-guided) → AskUserQuestion, sempre perguntado e sem opção sugerida
|
|
278
|
+
- **ARTIFACT_STYLE** (2 opções: ai-generated, human-generated) → AskUserQuestion, `ai-generated` primeiro
|
|
271
279
|
|
|
272
280
|
```
|
|
273
281
|
// Exemplo 1: HUB (5 opções) - MOSTRAR EM TEXTO
|
|
@@ -343,9 +351,10 @@ Digite o número (1-9) ou nome do cargo:
|
|
|
343
351
|
Pergunta 1: Workspace detectado: `{basename da pasta que contém $IDE/}`. Usar esse nome?
|
|
344
352
|
[Enter = sim. Só perguntar outro slug se o usuário recusar.]
|
|
345
353
|
Não perguntar single vs multi.
|
|
346
|
-
Escanear `.git/` na raiz e nas subpastas
|
|
347
|
-
-
|
|
348
|
-
-
|
|
354
|
+
Escanear `.git/` na raiz e nas subpastas e gravar `WORKSPACE_MODE` (o que define o modo é a RAIZ ser ou não um repositório, não o número de repositórios):
|
|
355
|
+
- Raiz com `.git` → `WORKSPACE_MODE=project`, `WORKSPACE_REPOS` vazio (se também houver subpastas com `.git`, como submódulos, grave `project` e avise)
|
|
356
|
+
- Raiz sem `.git` e 1 ou mais subpastas com `.git` → `WORKSPACE_MODE=workspace`; com 2 ou mais, listar e perguntar se filtra (`WORKSPACE_REPOS`); senão vazio (todas)
|
|
357
|
+
- Raiz sem `.git` e nenhuma subpasta com `.git` → `WORKSPACE_MODE=project`
|
|
349
358
|
|
|
350
359
|
Pergunta 6: Qual o limite de execução da AI? (número entre 60 e 100)
|
|
351
360
|
[aguardar resposta e validar range 60-100]
|
|
@@ -417,6 +426,15 @@ Como você quer que os comandos de produto (prod.*) e o eng.create-ard conduzam
|
|
|
417
426
|
|
|
418
427
|
*[Perguntar **sempre**, para qualquer `AREA` e qualquer `POSITION` (inclusive `GENERALIST` e PM). **Não** marcar nenhuma opção como recomendada nem sugerir padrão por área ou cargo. Gravar `PROD_MODE=product-led` ou `PROD_MODE=developer-guided`.]*
|
|
419
428
|
|
|
429
|
+
```
|
|
430
|
+
Pergunta 9 (opções fixas - 2 opções - usar AskUserQuestion) — ARTIFACT_STYLE:
|
|
431
|
+
Qual o estilo dos artefatos que o Jarvis gera (commits, PRs, comentários e documentos)?
|
|
432
|
+
- AI-Generated (padrão): como hoje, com metadados, links de rastreabilidade e padrões da ferramenta.
|
|
433
|
+
- Human-Generated: nada do que é publicado (commit, PR, comentário no card, issue) leva marca de IA; e todo documento gerado oferece, no fim, uma versão humanizada ({nome}.public.md) para repassar a clientes ou stakeholders.
|
|
434
|
+
```
|
|
435
|
+
|
|
436
|
+
*[`ai-generated` como primeira opção. Gravar `ARTIFACT_STYLE=ai-generated` ou `ARTIFACT_STYLE=human-generated`. A escolha muda as rules copiadas no Passo 8: com `human-generated`, entra `rules/artifact-style-rules.md`.]*
|
|
437
|
+
|
|
420
438
|
**Regras de Implementação:**
|
|
421
439
|
- **Opções fixas com ≤4 opções** → usar AskUserQuestion
|
|
422
440
|
- **Opções fixas com >4 opções** (HUB com DATA, IDE, SQUAD, POSITION) → mostrar em texto numerado
|
|
@@ -433,6 +451,7 @@ Como você quer que os comandos de produto (prod.*) e o eng.create-ard conduzam
|
|
|
433
451
|
|----------|-----------|-----------|
|
|
434
452
|
| `WORKSPACE` | Slug da pasta do `$IDE/` | Vazio = nome da pasta (detectar) |
|
|
435
453
|
| `WORKSPACE_REPOS` | Allowlist de subpastas-repo | Vazio = todas com `.git/` |
|
|
454
|
+
| `WORKSPACE_MODE` | Modo de trabalho | `workspace` (raiz sem `.git` e 1+ subpastas com `.git/`) ou `project` (raiz com `.git`). Detectado, não perguntado |
|
|
436
455
|
| `IDE` | IDE utilizada | `windsurf`, `claude`, `cursor`, `codex`, `opencode`, `gemini`, `kiro` (antigravity → gemini) |
|
|
437
456
|
| `SQUAD` | Nome do squad | Deve estar em `taxonomy.md` → Squads |
|
|
438
457
|
| `HUB` | Hub do workspace | Deve estar em `taxonomy.md` → Hubs (**inclui DATA**) |
|
|
@@ -441,6 +460,7 @@ Como você quer que os comandos de produto (prod.*) e o eng.create-ard conduzam
|
|
|
441
460
|
| `USER` | Identidade do usuário (email ou nome) | ENV.md → git `user.email` → usuário do SO. Sem login |
|
|
442
461
|
| `POSITION` | Cargo do usuário | Deve estar em `taxonomy.md` → Positions. Autonomia ponta a ponta em qualquer cargo |
|
|
443
462
|
| `PROD_MODE` | Modo de condução dos comandos de produto e do `eng.create-ard` | `product-led` ou `developer-guided`. Sempre perguntado, sem opção sugerida (Pergunta 8) |
|
|
463
|
+
| `ARTIFACT_STYLE` | Estilo dos artefatos gerados | `ai-generated` (padrão) ou `human-generated` (Pergunta 9). No Upgrade (C), entra com `ai-generated` |
|
|
444
464
|
|
|
445
465
|
> **💡 Nota**:
|
|
446
466
|
> - As opções para SQUAD, HUB, AREA e POSITION são definidas em `taxonomy.md` e podem ser customizadas por organização.
|
|
@@ -606,6 +626,7 @@ Nunca grave TOKEN_VERSION_CONTROL (chave removida do template).
|
|
|
606
626
|
| `JARVIS_PROJECT` | `https://github.com/phelipperibeiro/jarvis-framework` | Repo do framework (`/jarvis-report-issue`) |
|
|
607
627
|
| `CENTRAL_DOCS_STORAGE` / `_LOCATION` | `filesystem` / pasta padrão do modo de trabalho | Central docs (o que foi implementado), configurado no Passo 5.2; vazio = desligado |
|
|
608
628
|
| `JARVIS_DOCS` / `ENG_DOCS` | `$DOCS_FOLDER/jarvis` / `$JARVIS_DOCS/engineering` | Documentos de trabalho (não perguntar; `docs/jarvis/` no `.gitignore`) |
|
|
629
|
+
| `DISCOVERIES_FOLDER_NAME` / `DISCOVERIES_DOCS` | `discoveries` / `$JARVIS_DOCS/$DISCOVERIES_FOLDER_NAME` | Discoveries, fora de `product/` (não perguntar) |
|
|
609
630
|
| `CENTRAL_DOCS_REF` / `_TARGET_BRANCH` / `_REVIEWERS` | `main` / `main` / *(vazio)* | Só quando a pasta do Central docs tem `.git` |
|
|
610
631
|
| `SESSIONS_DIR` | `.jarvis/sessions` | Não perguntar — gravar fixo |
|
|
611
632
|
| `RTK_ENABLED` | `false` (ou true se detectar `rtk`) | Token Killer |
|
|
@@ -699,8 +720,8 @@ Pergunte com `AskUserQuestion`:
|
|
|
699
720
|
**A ou B:**
|
|
700
721
|
- `CENTRAL_DOCS_STORAGE=filesystem`.
|
|
701
722
|
- `CENTRAL_DOCS_LOCATION` com o padrão do **modo de trabalho** (a pessoa pode digitar outro caminho):
|
|
702
|
-
-
|
|
703
|
-
-
|
|
723
|
+
- **`WORKSPACE_MODE=workspace`** (a raiz não é repositório e há 1+ subpastas com `.git`): `./central-docs`, com `central-docs/` no `.gitignore` do workspace;
|
|
724
|
+
- **`WORKSPACE_MODE=project`** (a raiz tem `.git`): `docs/jarvis/central-docs`, já coberto por `docs/jarvis/` no `.gitignore`.
|
|
704
725
|
- **A:** `mkdir -p {LOCATION}` e criar `{LOCATION}/AGENTS.md` mínimo, explicando:
|
|
705
726
|
- a estrutura `{SQUAD}/product/{produto}/feature-*.md` e `{SQUAD}/engineering/{produto}/delivery-*.md`;
|
|
706
727
|
- que o `{SQUAD}/index.md` é gerado pelo `jarvis docs publish`.
|
|
@@ -744,6 +765,7 @@ O arquivo `$IDE/ENV.md` deve seguir a **estrutura e ordem** de `templates/ENV-te
|
|
|
744
765
|
# --- Workspace e identidade ---
|
|
745
766
|
WORKSPACE=
|
|
746
767
|
WORKSPACE_REPOS=
|
|
768
|
+
WORKSPACE_MODE={workspace|project}
|
|
747
769
|
USER={resolvido}
|
|
748
770
|
MAX_AI_EXECUTION_PERCENTAGE={60-100}
|
|
749
771
|
ENABLE_CDD=true
|
|
@@ -754,6 +776,10 @@ HUB={valor}
|
|
|
754
776
|
AREA={valor}
|
|
755
777
|
POSITION={valor}
|
|
756
778
|
|
|
779
|
+
# --- Condução e estilo ---
|
|
780
|
+
PROD_MODE={product-led|developer-guided}
|
|
781
|
+
ARTIFACT_STYLE={ai-generated|human-generated}
|
|
782
|
+
|
|
757
783
|
# --- IDE e pastas ---
|
|
758
784
|
IDE={valor}
|
|
759
785
|
DOCS_FOLDER=docs
|
|
@@ -768,6 +794,8 @@ PROD_RULES=...
|
|
|
768
794
|
PROD_FLOWS=...
|
|
769
795
|
PROD_TEMPLATES=...
|
|
770
796
|
PROD_DOCS=...
|
|
797
|
+
DISCOVERIES_FOLDER_NAME=discoveries
|
|
798
|
+
DISCOVERIES_DOCS=...
|
|
771
799
|
|
|
772
800
|
# --- Task manager (opcional; vazio = freelance) ---
|
|
773
801
|
TASK_MANAGER=
|
|
@@ -797,6 +825,8 @@ PROD_RULES=$RULES_FOLDER/$PROD_FOLDER_NAME
|
|
|
797
825
|
PROD_FLOWS=.$IDE/$FLOWS_FOLDER
|
|
798
826
|
PROD_TEMPLATES=.$IDE/$TEMPLATES_FOLDER/$PROD_FOLDER_NAME
|
|
799
827
|
PROD_DOCS=$JARVIS_DOCS/$PROD_FOLDER_NAME
|
|
828
|
+
DISCOVERIES_FOLDER_NAME=discoveries
|
|
829
|
+
DISCOVERIES_DOCS=$JARVIS_DOCS/$DISCOVERIES_FOLDER_NAME
|
|
800
830
|
```
|
|
801
831
|
|
|
802
832
|
**⚠️ IMPORTANTE - FLOWS_FOLDER por IDE:**
|
|
@@ -987,7 +1017,7 @@ Objetivo: garantir que `$IDE/rules/` e `$IDE/rules-on-demand/` contenham apenas
|
|
|
987
1017
|
**Passos:**
|
|
988
1018
|
|
|
989
1019
|
```
|
|
990
|
-
1. Ler HUB, POSITION, AREA, SQUAD do ENV.md recém-gravado
|
|
1020
|
+
1. Ler HUB, POSITION, AREA, SQUAD e ARTIFACT_STYLE (vazio = `ai-generated`) do ENV.md recém-gravado
|
|
991
1021
|
2. Para cada uma das duas pastas (rules/ e rules-on-demand/), listar todos os arquivos .md (recursivo, exceto AGENTS.md)
|
|
992
1022
|
3. Para cada arquivo:
|
|
993
1023
|
a. Ler o bloco `> **Applies to:**` (primeira ocorrência no arquivo)
|
|
@@ -1018,11 +1048,16 @@ function matchesProfile(appliesTo, profile) {
|
|
|
1018
1048
|
const positionMatches = profile.POSITION === 'GENERALIST' || matches(appliesTo.POSITION, profile.POSITION)
|
|
1019
1049
|
const areaMatches = profile.POSITION === 'GENERALIST' || matches(appliesTo.AREA, profile.AREA)
|
|
1020
1050
|
|
|
1051
|
+
// ARTIFACT_STYLE (5º campo opcional): ausente no bloco = 'all'; perfil vazio = 'ai-generated'.
|
|
1052
|
+
// Sem coringa: FULLCYCLE e GENERALIST não o satisfazem (é escolha da pessoa, não papel).
|
|
1053
|
+
const styleMatches = matches(appliesTo.ARTIFACT_STYLE || 'all', profile.ARTIFACT_STYLE || 'ai-generated')
|
|
1054
|
+
|
|
1021
1055
|
return (
|
|
1022
1056
|
hubMatches &&
|
|
1023
1057
|
positionMatches &&
|
|
1024
1058
|
areaMatches &&
|
|
1025
|
-
matches(appliesTo.SQUAD, profile.SQUAD)
|
|
1059
|
+
matches(appliesTo.SQUAD, profile.SQUAD) &&
|
|
1060
|
+
styleMatches
|
|
1026
1061
|
)
|
|
1027
1062
|
}
|
|
1028
1063
|
```
|
|
@@ -1031,16 +1066,18 @@ function matchesProfile(appliesTo, profile) {
|
|
|
1031
1066
|
|
|
1032
1067
|
```javascript
|
|
1033
1068
|
// Exemplo de bloco: > **Applies to:** HUB: all | POSITION: all | AREA: all | SQUAD: all
|
|
1069
|
+
// 5º campo opcional: ... | SQUAD: all | ARTIFACT_STYLE: human-generated
|
|
1034
1070
|
function parseAppliesTo(fileContent) {
|
|
1035
1071
|
const match = fileContent.match(
|
|
1036
|
-
/> \*\*Applies to:\*\* HUB: ([^|]+)\| POSITION: ([^|]+)\| AREA: ([^|]+)\| SQUAD: (
|
|
1072
|
+
/> \*\*Applies to:\*\* HUB: ([^|]+)\| POSITION: ([^|]+)\| AREA: ([^|]+)\| SQUAD: ([^|\n]+)(?:\| ARTIFACT_STYLE: ([^|\n]+))?/
|
|
1037
1073
|
)
|
|
1038
1074
|
if (!match) return null // sem bloco = universal
|
|
1039
1075
|
return {
|
|
1040
|
-
HUB:
|
|
1041
|
-
POSITION:
|
|
1042
|
-
AREA:
|
|
1043
|
-
SQUAD:
|
|
1076
|
+
HUB: match[1].trim(),
|
|
1077
|
+
POSITION: match[2].trim(),
|
|
1078
|
+
AREA: match[3].trim(),
|
|
1079
|
+
SQUAD: match[4].trim(),
|
|
1080
|
+
ARTIFACT_STYLE: (match[5] || 'all').trim(),
|
|
1044
1081
|
}
|
|
1045
1082
|
}
|
|
1046
1083
|
```
|
|
@@ -1058,7 +1095,7 @@ cp "$pasta/$relPath" "$IDE/$pasta/$relPath" # $pasta = rules ou rules-on-deman
|
|
|
1058
1095
|
**Saída para o usuário:**
|
|
1059
1096
|
|
|
1060
1097
|
```
|
|
1061
|
-
🔍 Sincronizando rules para o perfil: HUB={HUB} | POSITION={POSITION} | AREA={AREA} | SQUAD={SQUAD}
|
|
1098
|
+
🔍 Sincronizando rules para o perfil: HUB={HUB} | POSITION={POSITION} | AREA={AREA} | SQUAD={SQUAD} | ARTIFACT_STYLE={ARTIFACT_STYLE}
|
|
1062
1099
|
|
|
1063
1100
|
✅ Rules sincronizadas:
|
|
1064
1101
|
Copiadas : N arquivos (rules/: N | rules-on-demand/: N)
|
|
@@ -1312,7 +1349,10 @@ Pergunta 7: Qual seu cargo?
|
|
|
1312
1349
|
Pergunta 8: Modo dos comandos de produto?
|
|
1313
1350
|
[AskUserQuestion: Product-Led | Developer-Guided, sem opção sugerida]
|
|
1314
1351
|
|
|
1315
|
-
Pergunta 9
|
|
1352
|
+
Pergunta 9: Estilo dos artefatos?
|
|
1353
|
+
[AskUserQuestion: AI-Generated (padrão) | Human-Generated]
|
|
1354
|
+
|
|
1355
|
+
Pergunta 10 (opcional): Usa task manager? jira/linear/github/asana ou Nenhum (freelance)
|
|
1316
1356
|
```
|
|
1317
1357
|
|
|
1318
1358
|
**Agente**: *(cria ENV.md + `.jarvis/sessions/{eng,prod,qa}`, valida Context7, cria AGENTS.md e confirma)*
|
|
@@ -1360,6 +1400,7 @@ Bem-vindo! 🎉
|
|
|
1360
1400
|
- [ ] **Usou AskUserQuestion só para ≤4 opções** (AREA se aplicável — HUB com DATA vai em texto)
|
|
1361
1401
|
- [ ] **Mostrou em texto numerado para >4 opções** (HUB, IDE, SQUAD, POSITION)
|
|
1362
1402
|
- [ ] **Perguntou o `PROD_MODE`** (Product-Led ou Developer-Guided), sem opção sugerida, qualquer que seja a área ou o cargo
|
|
1403
|
+
- [ ] **Perguntou o `ARTIFACT_STYLE`** (AI-Generated primeiro ou Human-Generated)
|
|
1363
1404
|
- [ ] **Mostrou TODAS as opções disponíveis** (HUB inclui DATA; nunca omitiu)
|
|
1364
1405
|
- [ ] **Incluiu descrição útil em cada opção** (seja AskUserQuestion ou texto)
|
|
1365
1406
|
- [ ] **Validou respostas em texto contra lista de opções válidas**
|
|
@@ -1400,7 +1441,7 @@ Bem-vindo! 🎉
|
|
|
1400
1441
|
### Regras Aplicáveis
|
|
1401
1442
|
|
|
1402
1443
|
- **Idioma**: Todos os arquivos `.md` gerados devem ser em português do Brasil (pt-BR)
|
|
1403
|
-
- **Detecção de IDE**: A variável `$IDE` é detectada automaticamente (`.windsurf/`, `.claude/`, `.cursor/`, `.codex/`, `.opencode/`, `.
|
|
1444
|
+
- **Detecção de IDE**: A variável `$IDE` é detectada automaticamente (`.windsurf/`, `.claude/`, `.cursor/`, `.codex/`, `.opencode/`, `.agents/`)
|
|
1404
1445
|
- **Nunca inventar dados**: Se informação não estiver disponível, perguntar ao usuário
|
|
1405
1446
|
- **Nunca expor credenciais**: Tokens e senhas nunca devem ser expostos no chat
|
|
1406
1447
|
- **MAX_AI_EXECUTION_PERCENTAGE**:
|
|
@@ -96,7 +96,7 @@ Pergunte: **"Quer registrar alguma delas agora?"** Se sim, registre pelo 9.6 e s
|
|
|
96
96
|
**Quais projetos analisar:**
|
|
97
97
|
|
|
98
98
|
1. `WORKSPACE_REPOS` do `ENV.md`, quando preenchido
|
|
99
|
-
2. Vazio:
|
|
99
|
+
2. Vazio: com `WORKSPACE_MODE=workspace`, só as **subpastas com `.git/`** (a raiz não é repositório e guarda `$IDE/`, `.jarvis/` e outros itens fora do git); com `project`, a raiz
|
|
100
100
|
3. Monorepos sem `.git` por pacote: procure manifestos **até 2 níveis** de profundidade
|
|
101
101
|
|
|
102
102
|
**Ignore sempre** `node_modules`, `vendor`, `.git` e pastas de build.
|
|
@@ -146,9 +146,9 @@ elif [ -d ".codex" ]; then
|
|
|
146
146
|
elif [ -d ".opencode" ]; then
|
|
147
147
|
echo "IDE: OpenCode"
|
|
148
148
|
echo "Pasta: .opencode/"
|
|
149
|
-
elif [ -d ".
|
|
149
|
+
elif [ -d ".agents" ]; then
|
|
150
150
|
echo "IDE: Gemini CLI / Antigravity"
|
|
151
|
-
echo "Pasta: .
|
|
151
|
+
echo "Pasta: .agents/"
|
|
152
152
|
fi
|
|
153
153
|
```
|
|
154
154
|
|
|
@@ -161,7 +161,7 @@ fi
|
|
|
161
161
|
| Cursor | `.cursor/` | `~/.cursor/mcp.json` |
|
|
162
162
|
| Codex (OpenAI) | `.codex/` | - |
|
|
163
163
|
| OpenCode | `.opencode/` | - |
|
|
164
|
-
| Gemini CLI / Antigravity | `.
|
|
164
|
+
| Gemini CLI / Antigravity | `.agents/` | - |
|
|
165
165
|
|
|
166
166
|
Windsurf / Claude Code / Cursor / Codex / OpenCode / Gemini
|
|
167
167
|
|
|
@@ -1,25 +1,38 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: jarvis-report-issue
|
|
3
|
-
description: Reporta um bug no próprio framework Jarvis.
|
|
4
|
-
argument-hint: "[descrição opcional do problema]"
|
|
3
|
+
description: Reporta um bug ou propõe uma melhoria no próprio framework Jarvis. Classifica o report (bug ou melhoria), monta o issue no formato do tipo e o abre no repo do Jarvis (GitLab, GitHub ou Bitbucket, conforme VERSION_CONTROL), com a label certa.
|
|
4
|
+
argument-hint: "[descrição opcional do problema ou da melhoria]"
|
|
5
5
|
disable-model-invocation: false
|
|
6
6
|
allowed-tools: Read Bash Grep Glob
|
|
7
7
|
license: AGPL-3.0
|
|
8
8
|
metadata:
|
|
9
9
|
author: jarvis-team
|
|
10
|
-
version: "1.
|
|
10
|
+
version: "1.1"
|
|
11
11
|
area: global
|
|
12
12
|
---
|
|
13
13
|
|
|
14
|
-
# jarvis-report-issue —
|
|
14
|
+
# jarvis-report-issue — Bug ou melhoria no Framework Jarvis
|
|
15
15
|
|
|
16
|
-
Você
|
|
17
|
-
Sua tarefa é: **refletir sobre o que falhou no framework, montar o report e abrir o issue no repositório do Jarvis**.
|
|
16
|
+
Você abre um issue no repositório do Jarvis: um **bug** (uma instrução do Jarvis induziu um erro) ou uma **melhoria** (funcionalidade nova ou mudança de comportamento pedida pelo usuário).
|
|
18
17
|
|
|
19
18
|
O usuário não precisa preencher nada — você é o autor do report.
|
|
20
19
|
|
|
21
20
|
---
|
|
22
21
|
|
|
22
|
+
## Fase 0 — Classificar (obrigatória)
|
|
23
|
+
|
|
24
|
+
| Tipo | Quando | Título | Label |
|
|
25
|
+
|---|---|---|---|
|
|
26
|
+
| **Bug** | Um skill, workflow ou rule do Jarvis induziu um erro (algo saiu diferente do que o framework promete) | `[BUG] {artefato}: {descrição curta}` | `bug` |
|
|
27
|
+
| **Melhoria** | Funcionalidade nova, mudança de comportamento ou proposta de evolução | `[MELHORIA] {artefato}: {descrição curta}` | `enhancement` |
|
|
28
|
+
|
|
29
|
+
Na dúvida, pergunte com `AskUserQuestion`: **"É um bug (algo do Jarvis induziu um erro) ou uma melhoria?"**, com a sua sugestão primeiro, marcada "(Recomendada)".
|
|
30
|
+
|
|
31
|
+
- **Bug:** siga as Fases 1 e 2 como estão.
|
|
32
|
+
- **Melhoria:** pule a Fase 1 (reflexão sobre o erro) e use o formato da Fase 2-M.
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
23
36
|
## Fase 1 — Reflexão (obrigatória antes de qualquer ação)
|
|
24
37
|
|
|
25
38
|
Responda internamente às perguntas abaixo. Use o contexto da conversa atual:
|
|
@@ -82,6 +95,47 @@ Com as respostas da Fase 1, monte o issue no formato abaixo.
|
|
|
82
95
|
- **Reportado por:** IA (auto-report)
|
|
83
96
|
```
|
|
84
97
|
|
|
98
|
+
Com `ARTIFACT_STYLE=human-generated`, troque a linha por `- **Reportado por:** {USER do ENV, só o nome antes do @}` e não cite IA no corpo (`rules/artifact-style-rules.md`).
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## Fase 2-M — Montar a melhoria
|
|
103
|
+
|
|
104
|
+
**Título:** `[MELHORIA] {artefato}: {descrição curta em até 80 chars}`
|
|
105
|
+
|
|
106
|
+
**Corpo** (issue autossuficiente, executável sem reconstruir a conversa):
|
|
107
|
+
|
|
108
|
+
```markdown
|
|
109
|
+
## Contexto
|
|
110
|
+
{por que a mudança importa; situação atual, com arquivos e linhas medidos}
|
|
111
|
+
|
|
112
|
+
## Problema
|
|
113
|
+
{o que falta ou atrapalha hoje}
|
|
114
|
+
|
|
115
|
+
## Objetivo
|
|
116
|
+
{o resultado esperado, em itens verificáveis}
|
|
117
|
+
|
|
118
|
+
## Escopo
|
|
119
|
+
**Alterar:** {arquivos e o que muda em cada um}
|
|
120
|
+
**Não alterar:** {o que fica de fora}
|
|
121
|
+
|
|
122
|
+
## Decisões
|
|
123
|
+
{as escolhas já feitas com o usuário; o que ficou em aberto vai para "Questões em aberto", com a sugestão}
|
|
124
|
+
|
|
125
|
+
## Critérios de aceite
|
|
126
|
+
{comandos ou buscas verificáveis}
|
|
127
|
+
|
|
128
|
+
## Entrega
|
|
129
|
+
{branch base, destino do PR, `Closes #N`, idioma}
|
|
130
|
+
|
|
131
|
+
## Contexto de execução
|
|
132
|
+
- **Artefatos:** {caminhos}
|
|
133
|
+
- **Versão do Jarvis:** {package.json → version}
|
|
134
|
+
- **Reportado por:** IA, a partir do pedido do usuário
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
Antes de abrir, se o pedido tiver pontos em conflito com as regras atuais ou ambíguos, pergunte ao usuário (uma pergunta por ponto) e registre as respostas em "Decisões".
|
|
138
|
+
|
|
85
139
|
---
|
|
86
140
|
|
|
87
141
|
## Fase 3 — Credenciais e repo
|
|
@@ -117,7 +171,8 @@ REPO=$(grep -E '^(JARVIS_PROJECT|JARVIS_GITLAB_PROJECT)=' $IDE/ENV.md | tail -1
|
|
|
117
171
|
jarvis vcs create-issue \
|
|
118
172
|
--repo "$REPO" \
|
|
119
173
|
--title "$ISSUE_TITLE" \
|
|
120
|
-
--body-file "$BODY_FILE"
|
|
174
|
+
--body-file "$BODY_FILE" \
|
|
175
|
+
--label "$LABEL" # bug (Bug) ou enhancement (Melhoria), pela Fase 0
|
|
121
176
|
|
|
122
177
|
rm -f "$BODY_FILE"
|
|
123
178
|
```
|
|
@@ -157,7 +212,7 @@ Verifique token (GitLab .npmrc / gh auth / BITBUCKET_TOKEN) e JARVIS_PROJECT.
|
|
|
157
212
|
## Regras
|
|
158
213
|
|
|
159
214
|
- **Nunca** pedir ao usuário que preencha o report — a IA preenche tudo
|
|
160
|
-
- **Nunca** abrir issue sem
|
|
215
|
+
- **Nunca** abrir issue sem a Fase 0 (classificação); num bug, sem a Fase 1 (reflexão)
|
|
161
216
|
- **Nunca** hardcodar o repo ou token — sempre ler `JARVIS_PROJECT` do ENV.md; o adapter resolve o vendor
|
|
162
|
-
- **Sempre** usar label `bug`
|
|
217
|
+
- **Sempre** usar a label do tipo: `bug` para bug, `enhancement` para melhoria (no Bitbucket, o adapter grava como `kind`)
|
|
163
218
|
- **Sempre** limpar arquivos temporários após o curl
|