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.
Files changed (53) hide show
  1. package/AGENTS.md +1 -0
  2. package/README.md +14 -1
  3. package/bin/commands/init.js +189 -2
  4. package/bin/commands/tokens.js +9 -3
  5. package/bin/lib/cli/program.js +18 -2
  6. package/bin/lib/config/constants.js +5 -0
  7. package/bin/lib/core/docs-migrate.js +259 -0
  8. package/bin/lib/core/env-upgrade.js +97 -0
  9. package/bin/lib/core/profile-filter.js +15 -3
  10. package/bin/lib/core/stale-skills.js +63 -0
  11. package/bin/lib/core/sync-engine.js +5 -3
  12. package/bin/lib/core/token-report.js +1 -0
  13. package/bin/lib/core/workspace-mode.js +57 -0
  14. package/bin/lib/docs/storage/build-index.js +2 -1
  15. package/bin/lib/vcs/api.js +13 -1
  16. package/bin/lib/vcs/create-issue.js +17 -3
  17. package/package.json +2 -2
  18. package/rules/AGENTS.md +4 -1
  19. package/rules/artifact-style-rules.md +55 -0
  20. package/rules/engineering/eng-rules.md +12 -1
  21. package/rules/engineering/eng.integrations-rules.md +1 -1
  22. package/rules/product/prod-rules.md +6 -3
  23. package/rules/product/prod.spec-rules.md +2 -2
  24. package/rules-on-demand/engineering/eng.plan-rules.md +1 -1
  25. package/rules-on-demand/engineering/eng.pr-rules.md +6 -5
  26. package/rules-on-demand/engineering/eng.pre-pr-rules.md +2 -2
  27. package/rules-on-demand/engineering/eng.start-rules.md +2 -2
  28. package/rules-on-demand/engineering/eng.transitions-rules.md +67 -0
  29. package/rules-on-demand/engineering/eng.work-rules.md +9 -3
  30. package/skills/eng-global-pr/SKILL.md +3 -1
  31. package/skills/eng-global-task-comment/SKILL.md +2 -0
  32. package/skills/jarvis-create-specialization/SKILL.md +1 -1
  33. package/skills/jarvis-docs-central/SKILL.md +1 -1
  34. package/skills/jarvis-init/SKILL.md +64 -23
  35. package/skills/jarvis-init/assets/passo-adicionar-stacks.md +1 -1
  36. package/skills/jarvis-init/assets/setup-guide.md +3 -3
  37. package/skills/jarvis-report-issue/SKILL.md +64 -9
  38. package/templates/ENV-template.md +17 -3
  39. package/templates/engineering/architecture-template.md +2 -1
  40. package/templates/engineering/daily-template.md +1 -1
  41. package/templates/engineering/plan-template.md +2 -0
  42. package/templates/product/prod-epic-template.md +1 -1
  43. package/templates/product/prod-frd-template.md +1 -1
  44. package/templates/product/prod-issue-template.md +1 -1
  45. package/templates/product/prod-prd-template.md +1 -1
  46. package/workflows/engineering/eng.plan.md +3 -2
  47. package/workflows/engineering/eng.pr.md +60 -16
  48. package/workflows/engineering/eng.pre-pr.md +21 -8
  49. package/workflows/engineering/eng.spec-consolidate.md +7 -1
  50. package/workflows/engineering/eng.start.md +11 -3
  51. package/workflows/engineering/eng.work.md +23 -6
  52. package/workflows/product/prod.spec.discovery.md +2 -2
  53. 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 (Ajustar / Não ajustar + motivo).
91
- 3. **Pergunta Sim / Não** (`AskUserQuestion`) para publicar o relatório como comentário na issue/card (`/eng-global-task-comment`). Nunca publicar sem a resposta. Freelance: só na sessão.
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 automaticamente
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
- O workflow **DEVE pausar e aguardar confirmação**:
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`), logo depois do PR. Os documentos de trabalho nunca são publicados lá.
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) Nome do novo membro para personalizar o onboarding
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}` e `docs/engineering/{robots,swagger,openapi,c4}`.
212
- - Se houver, liste o que encontrou e pergunte com `AskUserQuestion` se move para `docs/jarvis/…` (`$PROD_DOCS` e `$ENG_DOCS/…`). Use `git mv` quando o arquivo for versionado e `mv` quando não for, e garanta `docs/jarvis/` no `.gitignore`.
213
- - **Sem confirmação, não mova nada:** grave `PROD_DOCS`/`ENG_DOCS` apontando para os caminhos antigos.
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 no lugar do valor vazio. As demais chaves continuam sem pergunta.
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
- - Só a raiz tem git → `WORKSPACE_REPOS` vazio
348
- - 2+ subpastas com git → listar e perguntar se filtra; senão vazio (todas)
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
- - **modo workspace** (2+ subpastas com `.git`): `./central-docs`, com `central-docs/` no `.gitignore` do workspace;
703
- - **projeto único** (só a raiz tem `.git`): `docs/jarvis/central-docs`, já coberto por `docs/jarvis/` no `.gitignore`.
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: match[1].trim(),
1041
- POSITION: match[2].trim(),
1042
- AREA: match[3].trim(),
1043
- SQUAD: match[4].trim(),
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 (opcional): Usa task manager? jira/linear/github/asana ou Nenhum (freelance)
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/`, `.gemini/`)
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: a raiz do workspace e as **subpastas com `.git/`**
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 ".gemini" ]; then
149
+ elif [ -d ".agents" ]; then
150
150
  echo "IDE: Gemini CLI / Antigravity"
151
- echo "Pasta: .gemini/"
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 | `.gemini/` | - |
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. A IA reflete sobre qual artefato (skill/workflow/rule) causou o erro, monta o report e abre um issue no repo do Jarvis (GitLab, GitHub ou Bitbucket, conforme VERSION_CONTROL).
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.0"
10
+ version: "1.1"
11
11
  area: global
12
12
  ---
13
13
 
14
- # jarvis-report-issue — Auto-report de bug no Framework Jarvis
14
+ # jarvis-report-issue — Bug ou melhoria no Framework Jarvis
15
15
 
16
- Você é a IA que acabou de cometer ou identificar um erro causado por uma instrução do Jarvis.
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 completar a Fase 1 (reflexão obrigatória)
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` — sem exceções
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