jarvis-ai-framework 5.2.0 → 5.5.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 (42) hide show
  1. package/AGENTS.md +1 -0
  2. package/README.md +14 -1
  3. package/bin/commands/init.js +149 -2
  4. package/bin/commands/tokens.js +9 -3
  5. package/bin/lib/cli/program.js +14 -2
  6. package/bin/lib/core/docs-migrate.js +259 -0
  7. package/bin/lib/core/env-upgrade.js +84 -0
  8. package/bin/lib/core/profile-filter.js +15 -3
  9. package/bin/lib/core/sync-engine.js +5 -3
  10. package/bin/lib/core/token-report.js +1 -0
  11. package/bin/lib/docs/storage/build-index.js +2 -1
  12. package/bin/lib/vcs/api.js +13 -1
  13. package/bin/lib/vcs/create-issue.js +17 -3
  14. package/package.json +2 -2
  15. package/rules/AGENTS.md +4 -1
  16. package/rules/artifact-style-rules.md +53 -0
  17. package/rules/product/prod-rules.md +4 -2
  18. package/rules/product/prod.spec-rules.md +2 -2
  19. package/rules-on-demand/engineering/eng.plan-rules.md +1 -1
  20. package/rules-on-demand/engineering/eng.pr-rules.md +4 -3
  21. package/rules-on-demand/engineering/eng.start-rules.md +2 -2
  22. package/rules-on-demand/engineering/eng.transitions-rules.md +58 -0
  23. package/rules-on-demand/engineering/eng.work-rules.md +9 -3
  24. package/skills/eng-global-pr/SKILL.md +3 -1
  25. package/skills/eng-global-task-comment/SKILL.md +2 -0
  26. package/skills/jarvis-docs-central/SKILL.md +1 -1
  27. package/skills/jarvis-init/SKILL.md +54 -17
  28. package/skills/jarvis-report-issue/SKILL.md +64 -9
  29. package/templates/ENV-template.md +10 -0
  30. package/templates/engineering/architecture-template.md +2 -1
  31. package/templates/engineering/plan-template.md +2 -0
  32. package/templates/product/prod-epic-template.md +1 -1
  33. package/templates/product/prod-frd-template.md +1 -1
  34. package/templates/product/prod-issue-template.md +1 -1
  35. package/templates/product/prod-prd-template.md +1 -1
  36. package/workflows/engineering/eng.plan.md +2 -1
  37. package/workflows/engineering/eng.pr.md +39 -6
  38. package/workflows/engineering/eng.pre-pr.md +2 -1
  39. package/workflows/engineering/eng.spec-consolidate.md +3 -1
  40. package/workflows/engineering/eng.start.md +8 -2
  41. package/workflows/engineering/eng.work.md +22 -5
  42. package/workflows/product/prod.spec.discovery.md +2 -2
@@ -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,14 @@ 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.
217
223
  11. Appender as novas variáveis ao final do `ENV.md` com comentário de data:
218
224
  ```
219
225
  # --- Upgrade YYYY-MM-DD ---
@@ -268,6 +274,7 @@ Fluxo correto:
268
274
  - **SQUAD** (do taxonomy) → mostrar em texto numerado
269
275
  - **POSITION** (do taxonomy) → mostrar em texto numerado
270
276
  - **PROD_MODE** (2 opções: product-led, developer-guided) → AskUserQuestion, sempre perguntado e sem opção sugerida
277
+ - **ARTIFACT_STYLE** (2 opções: ai-generated, human-generated) → AskUserQuestion, `ai-generated` primeiro
271
278
 
272
279
  ```
273
280
  // Exemplo 1: HUB (5 opções) - MOSTRAR EM TEXTO
@@ -417,6 +424,15 @@ Como você quer que os comandos de produto (prod.*) e o eng.create-ard conduzam
417
424
 
418
425
  *[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
426
 
427
+ ```
428
+ Pergunta 9 (opções fixas - 2 opções - usar AskUserQuestion) — ARTIFACT_STYLE:
429
+ Qual o estilo dos artefatos que o Jarvis gera (commits, PRs, comentários e documentos)?
430
+ - AI-Generated (padrão): como hoje, com metadados, links de rastreabilidade e padrões da ferramenta.
431
+ - 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.
432
+ ```
433
+
434
+ *[`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`.]*
435
+
420
436
  **Regras de Implementação:**
421
437
  - **Opções fixas com ≤4 opções** → usar AskUserQuestion
422
438
  - **Opções fixas com >4 opções** (HUB com DATA, IDE, SQUAD, POSITION) → mostrar em texto numerado
@@ -441,6 +457,7 @@ Como você quer que os comandos de produto (prod.*) e o eng.create-ard conduzam
441
457
  | `USER` | Identidade do usuário (email ou nome) | ENV.md → git `user.email` → usuário do SO. Sem login |
442
458
  | `POSITION` | Cargo do usuário | Deve estar em `taxonomy.md` → Positions. Autonomia ponta a ponta em qualquer cargo |
443
459
  | `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) |
460
+ | `ARTIFACT_STYLE` | Estilo dos artefatos gerados | `ai-generated` (padrão) ou `human-generated` (Pergunta 9). No Upgrade (C), entra com `ai-generated` |
444
461
 
445
462
  > **💡 Nota**:
446
463
  > - As opções para SQUAD, HUB, AREA e POSITION são definidas em `taxonomy.md` e podem ser customizadas por organização.
@@ -606,6 +623,7 @@ Nunca grave TOKEN_VERSION_CONTROL (chave removida do template).
606
623
  | `JARVIS_PROJECT` | `https://github.com/phelipperibeiro/jarvis-framework` | Repo do framework (`/jarvis-report-issue`) |
607
624
  | `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
625
  | `JARVIS_DOCS` / `ENG_DOCS` | `$DOCS_FOLDER/jarvis` / `$JARVIS_DOCS/engineering` | Documentos de trabalho (não perguntar; `docs/jarvis/` no `.gitignore`) |
626
+ | `DISCOVERIES_FOLDER_NAME` / `DISCOVERIES_DOCS` | `discoveries` / `$JARVIS_DOCS/$DISCOVERIES_FOLDER_NAME` | Discoveries, fora de `product/` (não perguntar) |
609
627
  | `CENTRAL_DOCS_REF` / `_TARGET_BRANCH` / `_REVIEWERS` | `main` / `main` / *(vazio)* | Só quando a pasta do Central docs tem `.git` |
610
628
  | `SESSIONS_DIR` | `.jarvis/sessions` | Não perguntar — gravar fixo |
611
629
  | `RTK_ENABLED` | `false` (ou true se detectar `rtk`) | Token Killer |
@@ -754,6 +772,10 @@ HUB={valor}
754
772
  AREA={valor}
755
773
  POSITION={valor}
756
774
 
775
+ # --- Condução e estilo ---
776
+ PROD_MODE={product-led|developer-guided}
777
+ ARTIFACT_STYLE={ai-generated|human-generated}
778
+
757
779
  # --- IDE e pastas ---
758
780
  IDE={valor}
759
781
  DOCS_FOLDER=docs
@@ -768,6 +790,8 @@ PROD_RULES=...
768
790
  PROD_FLOWS=...
769
791
  PROD_TEMPLATES=...
770
792
  PROD_DOCS=...
793
+ DISCOVERIES_FOLDER_NAME=discoveries
794
+ DISCOVERIES_DOCS=...
771
795
 
772
796
  # --- Task manager (opcional; vazio = freelance) ---
773
797
  TASK_MANAGER=
@@ -797,6 +821,8 @@ PROD_RULES=$RULES_FOLDER/$PROD_FOLDER_NAME
797
821
  PROD_FLOWS=.$IDE/$FLOWS_FOLDER
798
822
  PROD_TEMPLATES=.$IDE/$TEMPLATES_FOLDER/$PROD_FOLDER_NAME
799
823
  PROD_DOCS=$JARVIS_DOCS/$PROD_FOLDER_NAME
824
+ DISCOVERIES_FOLDER_NAME=discoveries
825
+ DISCOVERIES_DOCS=$JARVIS_DOCS/$DISCOVERIES_FOLDER_NAME
800
826
  ```
801
827
 
802
828
  **⚠️ IMPORTANTE - FLOWS_FOLDER por IDE:**
@@ -987,7 +1013,7 @@ Objetivo: garantir que `$IDE/rules/` e `$IDE/rules-on-demand/` contenham apenas
987
1013
  **Passos:**
988
1014
 
989
1015
  ```
990
- 1. Ler HUB, POSITION, AREA, SQUAD do ENV.md recém-gravado
1016
+ 1. Ler HUB, POSITION, AREA, SQUAD e ARTIFACT_STYLE (vazio = `ai-generated`) do ENV.md recém-gravado
991
1017
  2. Para cada uma das duas pastas (rules/ e rules-on-demand/), listar todos os arquivos .md (recursivo, exceto AGENTS.md)
992
1018
  3. Para cada arquivo:
993
1019
  a. Ler o bloco `> **Applies to:**` (primeira ocorrência no arquivo)
@@ -1018,11 +1044,16 @@ function matchesProfile(appliesTo, profile) {
1018
1044
  const positionMatches = profile.POSITION === 'GENERALIST' || matches(appliesTo.POSITION, profile.POSITION)
1019
1045
  const areaMatches = profile.POSITION === 'GENERALIST' || matches(appliesTo.AREA, profile.AREA)
1020
1046
 
1047
+ // ARTIFACT_STYLE (5º campo opcional): ausente no bloco = 'all'; perfil vazio = 'ai-generated'.
1048
+ // Sem coringa: FULLCYCLE e GENERALIST não o satisfazem (é escolha da pessoa, não papel).
1049
+ const styleMatches = matches(appliesTo.ARTIFACT_STYLE || 'all', profile.ARTIFACT_STYLE || 'ai-generated')
1050
+
1021
1051
  return (
1022
1052
  hubMatches &&
1023
1053
  positionMatches &&
1024
1054
  areaMatches &&
1025
- matches(appliesTo.SQUAD, profile.SQUAD)
1055
+ matches(appliesTo.SQUAD, profile.SQUAD) &&
1056
+ styleMatches
1026
1057
  )
1027
1058
  }
1028
1059
  ```
@@ -1031,16 +1062,18 @@ function matchesProfile(appliesTo, profile) {
1031
1062
 
1032
1063
  ```javascript
1033
1064
  // Exemplo de bloco: > **Applies to:** HUB: all | POSITION: all | AREA: all | SQUAD: all
1065
+ // 5º campo opcional: ... | SQUAD: all | ARTIFACT_STYLE: human-generated
1034
1066
  function parseAppliesTo(fileContent) {
1035
1067
  const match = fileContent.match(
1036
- /> \*\*Applies to:\*\* HUB: ([^|]+)\| POSITION: ([^|]+)\| AREA: ([^|]+)\| SQUAD: (.+)/
1068
+ /> \*\*Applies to:\*\* HUB: ([^|]+)\| POSITION: ([^|]+)\| AREA: ([^|]+)\| SQUAD: ([^|\n]+)(?:\| ARTIFACT_STYLE: ([^|\n]+))?/
1037
1069
  )
1038
1070
  if (!match) return null // sem bloco = universal
1039
1071
  return {
1040
- HUB: match[1].trim(),
1041
- POSITION: match[2].trim(),
1042
- AREA: match[3].trim(),
1043
- SQUAD: match[4].trim(),
1072
+ HUB: match[1].trim(),
1073
+ POSITION: match[2].trim(),
1074
+ AREA: match[3].trim(),
1075
+ SQUAD: match[4].trim(),
1076
+ ARTIFACT_STYLE: (match[5] || 'all').trim(),
1044
1077
  }
1045
1078
  }
1046
1079
  ```
@@ -1058,7 +1091,7 @@ cp "$pasta/$relPath" "$IDE/$pasta/$relPath" # $pasta = rules ou rules-on-deman
1058
1091
  **Saída para o usuário:**
1059
1092
 
1060
1093
  ```
1061
- 🔍 Sincronizando rules para o perfil: HUB={HUB} | POSITION={POSITION} | AREA={AREA} | SQUAD={SQUAD}
1094
+ 🔍 Sincronizando rules para o perfil: HUB={HUB} | POSITION={POSITION} | AREA={AREA} | SQUAD={SQUAD} | ARTIFACT_STYLE={ARTIFACT_STYLE}
1062
1095
 
1063
1096
  ✅ Rules sincronizadas:
1064
1097
  Copiadas : N arquivos (rules/: N | rules-on-demand/: N)
@@ -1312,7 +1345,10 @@ Pergunta 7: Qual seu cargo?
1312
1345
  Pergunta 8: Modo dos comandos de produto?
1313
1346
  [AskUserQuestion: Product-Led | Developer-Guided, sem opção sugerida]
1314
1347
 
1315
- Pergunta 9 (opcional): Usa task manager? jira/linear/github/asana ou Nenhum (freelance)
1348
+ Pergunta 9: Estilo dos artefatos?
1349
+ [AskUserQuestion: AI-Generated (padrão) | Human-Generated]
1350
+
1351
+ Pergunta 10 (opcional): Usa task manager? jira/linear/github/asana ou Nenhum (freelance)
1316
1352
  ```
1317
1353
 
1318
1354
  **Agente**: *(cria ENV.md + `.jarvis/sessions/{eng,prod,qa}`, valida Context7, cria AGENTS.md e confirma)*
@@ -1360,6 +1396,7 @@ Bem-vindo! 🎉
1360
1396
  - [ ] **Usou AskUserQuestion só para ≤4 opções** (AREA se aplicável — HUB com DATA vai em texto)
1361
1397
  - [ ] **Mostrou em texto numerado para >4 opções** (HUB, IDE, SQUAD, POSITION)
1362
1398
  - [ ] **Perguntou o `PROD_MODE`** (Product-Led ou Developer-Guided), sem opção sugerida, qualquer que seja a área ou o cargo
1399
+ - [ ] **Perguntou o `ARTIFACT_STYLE`** (AI-Generated primeiro ou Human-Generated)
1363
1400
  - [ ] **Mostrou TODAS as opções disponíveis** (HUB inclui DATA; nunca omitiu)
1364
1401
  - [ ] **Incluiu descrição útil em cada opção** (seja AskUserQuestion ou texto)
1365
1402
  - [ ] **Validou respostas em texto contra lista de opções válidas**
@@ -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
@@ -71,12 +71,22 @@ PROD_FLOWS=.$IDE/$FLOWS_FOLDER
71
71
  PROD_TEMPLATES=.$IDE/$TEMPLATES_FOLDER/$PROD_FOLDER_NAME
72
72
  PROD_DOCS=$JARVIS_DOCS/$PROD_FOLDER_NAME
73
73
 
74
+ # Discoveries (rascunhos de ideia, anteriores ao PRD) — fora de product/ (em geral não precisa mexer)
75
+ DISCOVERIES_FOLDER_NAME=discoveries
76
+ DISCOVERIES_DOCS=$JARVIS_DOCS/$DISCOVERIES_FOLDER_NAME
77
+
74
78
  # Modo de condução dos comandos de produto (prod.*) e do eng.create-ard.
75
79
  # product-led = para PMs: fluxo direto, sem explicações extras (padrão se vazio)
76
80
  # developer-guided = para devs e futuros PMs: uma pergunta por vez, explica cada termo e etapa
77
81
  # Perguntado sempre pelo /jarvis-init. Para trocar, rode o /jarvis-init ou edite aqui.
78
82
  PROD_MODE=
79
83
 
84
+ # Estilo dos artefatos gerados (commits, PRs, comentários e documentos).
85
+ # ai-generated = como hoje: metadados, links de rastreabilidade e padrões da ferramenta (padrão)
86
+ # human-generated = nada publicado leva marca de IA; todo documento gerado oferece a versão {nome}.public.md
87
+ # Perguntado pelo /jarvis-init. Trocou à mão? Rode /jarvis-init upgrade (copia ou remove a rule do estilo).
88
+ ARTIFACT_STYLE=ai-generated
89
+
80
90
 
81
91
  # --- Especializações por área -------------------------------------------------
82
92
  # Skills especializados que o Jarvis carrega junto com o skill base de cada área.
@@ -7,7 +7,8 @@
7
7
  > **Issue:** {JIRA_ISSUE_KEY}
8
8
  > **Branch base:** {main | dev | outra — perguntada no eng.start; destino do PR no eng.pr}
9
9
  > **Status:** 🔄 Em Revisão | ✅ Aprovado | ❌ Rejeitado
10
- > **Advisor:** {modelo escolhido no início do eng.start} | não utilizado
10
+ > **Advisor:** {modelo escolhido no início do eng.start} | não utilizado
11
+ > **Questões em aberto:** tratar no architecture.md (como hoje) | uma a uma, assim que surgirem (só sem Advisor)
11
12
 
12
13
  ---
13
14
 
@@ -3,6 +3,8 @@
3
3
  > 📋 **Plano de Execução** | Jira: [{TASK_MANAGER_KEY}]({TASK_MANAGER_URL_BASE}/browse/{TASK_MANAGER_KEY})
4
4
  >
5
5
  > Se você está trabalhando nesta feature, **atualize este arquivo** conforme progride.
6
+ >
7
+ > **Execução:** {fase a fase | todas de uma vez} · **Commits:** {um por fase | um só ao final} · **Depois do work:** {sugerir /eng.pre-pr | rodar /eng.pre-pr | direto para /eng.pr | parar} _(preenchido pelo `eng.work`, Fase 1.3)_
6
8
 
7
9
  ---
8
10
 
@@ -29,7 +29,7 @@ related_prd: {path PRD relacionado, exemplo /master-docs/product/prd-001.md}
29
29
  related_frd: {path FRD relacionado, exemplo /master-docs/product/frds/frd-001.md}
30
30
 
31
31
  # Discovery de origem (o rascunho da ideia, anterior ao PRD). Remova a linha se não houver.
32
- related_discovery: {path do discovery de origem, exemplo $PROD_DOCS/discoveries/discovery-001-nome.md. Se não existir, ignore essa linha}
32
+ related_discovery: {path do discovery de origem, exemplo $DISCOVERIES_DOCS/discovery-001-nome.md. Se não existir, ignore essa linha}
33
33
 
34
34
  # Data de criação (YYYY-MM-DD).
35
35
  created_at: {YYYY-MM-DD}
@@ -29,7 +29,7 @@ updated_at: {YYYY-MM-DD}
29
29
  related_prd: {Lista de PRDs que são relacionadas a esse PRD, se forem vários, utilize sintaxe compatível com YAML}
30
30
 
31
31
  # Discovery de origem (o rascunho da ideia, anterior ao PRD). Remova a linha se não houver.
32
- related_discovery: {path do discovery de origem, exemplo $PROD_DOCS/discoveries/discovery-001-nome.md. Se não existir, ignore essa linha}
32
+ related_discovery: {path do discovery de origem, exemplo $DISCOVERIES_DOCS/discovery-001-nome.md. Se não existir, ignore essa linha}
33
33
 
34
34
  # Data de criação (YYYY-MM-DD).
35
35
  created_at: {YYYY-MM-DD}
@@ -24,7 +24,7 @@ related_epic: {nome do Epico relacionado, exemplo /master-docs/product/epics/epi
24
24
  related_frd: {path FRD relacionado, exemplo /master-docs/product/frds/frd-001.md}
25
25
 
26
26
  # Discovery de origem (o rascunho da ideia, anterior ao PRD). Remova a linha se não houver.
27
- related_discovery: {path do discovery de origem, exemplo $PROD_DOCS/discoveries/discovery-001-nome.md. Se não existir, ignore essa linha}
27
+ related_discovery: {path do discovery de origem, exemplo $DISCOVERIES_DOCS/discovery-001-nome.md. Se não existir, ignore essa linha}
28
28
 
29
29
  # Data de criação (YYYY-MM-DD).
30
30
  created_at: {YYYY-MM-DD}
@@ -35,7 +35,7 @@ related_prd: {Lista de PRDs que são relacionadas a esse PRD, se forem vários,
35
35
  related_frd: {Lista de FRDs que são relacionadas a esse PRD, se forem vários, utilize sintaxe compatível com YAML}
36
36
 
37
37
  # Discovery de origem (o rascunho da ideia, anterior ao PRD). Remova a linha se não houver.
38
- related_discovery: {path do discovery de origem, exemplo $PROD_DOCS/discoveries/discovery-001-nome.md. Se não existir, ignore essa linha}
38
+ related_discovery: {path do discovery de origem, exemplo $DISCOVERIES_DOCS/discovery-001-nome.md. Se não existir, ignore essa linha}
39
39
 
40
40
  # Data de criação (YYYY-MM-DD).
41
41
  created_at: {YYYY-MM-DD}
@@ -14,6 +14,7 @@ model_justification: Planejamento detalhado requer decomposição de tarefas com
14
14
  Este workflow cria um **plano de execução detalhado e faseado** para implementar a feature de forma incremental.
15
15
 
16
16
  > 📋 **Rules**: `$IDE/rules-on-demand/engineering/eng.plan-rules.md` — **antes de começar, leia esse arquivo e siga-o**: ele não é carregado automaticamente no início da sessão.
17
+ > 🔀 **Transições**: `$IDE/rules-on-demand/engineering/eng.transitions-rules.md` — perguntas de início e de fim deste comando (a opção padrão mantém o fluxo de sempre).
17
18
 
18
19
  ---
19
20
 
@@ -167,7 +168,7 @@ CONTEXT_PROFILE:
167
168
  1. **Apresentar** o plano ao humano
168
169
  2. **Discutir** ajustes necessários
169
170
  3. **Atualizar** `architecture.md` se houver mudanças arquiteturais
170
- 4. **Confirmar** antes de prosseguir
171
+ 4. **Confirmar** antes de prosseguir, com a pergunta de transição (`eng.transitions-rules.md`): **"Aprovar o plan.md?"** → **Aprovar e parar aqui (como hoje)** / **Aprovar e seguir para o `/eng.work`** / **Ajustar o plano**. Com "seguir", chame o `/eng.work {TASK_MANAGER_KEY}` (ou mostre o comando)
171
172
 
172
173
  ---
173
174
 
@@ -15,6 +15,7 @@ Este comando cria a **branch, commita as alterações e abre um Merge Request**.
15
15
 
16
16
  > 📋 **Rules**: `$IDE/rules-on-demand/engineering/eng.pr-rules.md` — **antes de começar, leia esse arquivo e siga-o**: ele não é carregado automaticamente no início da sessão.
17
17
  > 📤 **Template**: `$IDE/templates/engineering/PR-template.md`
18
+ > 🔀 **Transições**: `$IDE/rules-on-demand/engineering/eng.transitions-rules.md` — perguntas de início e de fim deste comando (a opção padrão mantém o fluxo de sempre).
18
19
 
19
20
  ## Skills recomendados
20
21
 
@@ -66,6 +67,12 @@ Ler `TASK_MANAGER` do `$IDE/ENV.md`. Seguir `$IDE/rules/engineering/eng.integrat
66
67
 
67
68
  ---
68
69
 
70
+ ## Fase 0: Como validar o PR (`eng.transitions-rules.md`)
71
+
72
+ Pergunte com `AskUserQuestion`: **"Como validar o PR?"**
73
+ - **Revisar o texto e confirmar a publicação aqui (como hoje):** segue as Fases 4.2 e 4.3.
74
+ - **Publicar direto e validar no PR:** gera o `pull-request.md` na sessão (4.1) e publica sem a revisão do texto (4.2) e sem a pergunta "Publicar o PR agora?" (4.3); você valida no próprio PR.
75
+
69
76
  ## Fase 1: Validação Pré-PR
70
77
 
71
78
  ### 1.1 Executar Testes Unitários
@@ -158,6 +165,26 @@ Refs: {TASK_MANAGER_KEY}"
158
165
 
159
166
  > ⚠️ O push só acontece **depois do Sim** da Fase 4.3. Esta fase descreve o comando; ele roda dentro da publicação.
160
167
 
168
+ ### 3.0 Conferir marcas de IA (só com `ARTIFACT_STYLE=human-generated`)
169
+
170
+ Antes do push, siga `$IDE/rules/artifact-style-rules.md`: nada publicado leva marca de IA ou da IDE.
171
+
172
+ ```bash
173
+ TERMOS='co-authored-by|generated with|claude|anthropic|chatgpt|openai|copilot|\bIA\b|\bAI\b|sub-?agent|advisor'
174
+ RANGE=$(git rev-parse --abbrev-ref @{u} >/dev/null 2>&1 && echo '@{u}..HEAD' || echo '{BRANCH_BASE}..HEAD')
175
+ git log --format='%h %B' $RANGE | grep -inE "$TERMOS"
176
+ grep -inE "$TERMOS" $SESSIONS_DIR/eng/{TASK_MANAGER_KEY}/pull-request.md
177
+ ```
178
+
179
+ Revise cada ocorrência antes de remover: a busca é larga e pode achar texto legítimo (ex.: `ai-generated`, um link para o PR).
180
+
181
+ - **Nada encontrado (ou só falsos positivos):** siga para o push.
182
+ - **No `pull-request.md`:** remova os trechos (o texto aprovado na 4.2 muda só nisso).
183
+ - **Nas mensagens de commit:** reescreva **só os commits de `$RANGE`** (ainda não enviados), sem modo interativo, por exemplo, com `{ref}` = o início de `$RANGE` (`@{u}` ou `{BRANCH_BASE}`), `git rebase {ref} --exec 'M=$(git rev-parse --git-dir)/MSG_LIMPA; git log -1 --format=%B | sed -E "/^Co-Authored-By:/Id" > "$M" && git commit -q --amend -F "$M"'`, ajustando o `sed` aos termos achados. Depois, rode a busca de novo.
184
+ - **Commit já enviado com marca:** não reescreva; avise o usuário e pare.
185
+
186
+ Informe no resumo o que foi removido. Com `ai-generated` (ou vazio), pule este passo.
187
+
161
188
  ### 3.1 Enviar para Remote
162
189
 
163
190
  ```bash
@@ -201,15 +228,15 @@ Preencher com a tarefa. Link do card:
201
228
 
202
229
  `{TASK_MANAGER_KEY}` = `{TASK_MANAGER_KEY}`.
203
230
 
204
- > ⚠️ Não mencione AI, Claude ou assistentes no MR/PR.
231
+ > ⚠️ Não mencione AI, Claude ou assistentes no MR/PR. Com `ARTIFACT_STYLE=human-generated`, também sem "Generated with …" nem link da ferramenta (`rules/artifact-style-rules.md`).
205
232
 
206
233
  ### 4.2 Revisão do texto
207
234
 
208
- Mostre o `pull-request.md` (título e resumo das seções) e pergunte com `AskUserQuestion`: `[Aprovar]` / `[Ajustar]`. Ajuste até a aprovação.
235
+ Mostre o `pull-request.md` (título e resumo das seções) e pergunte com `AskUserQuestion`: `[Aprovar]` / `[Ajustar]`. Ajuste até a aprovação. (Pule com "Publicar direto e validar no PR" na Fase 0.)
209
236
 
210
237
  ### 4.3 Publicar? (Sim / Não)
211
238
 
212
- Pergunte com `AskUserQuestion` (**Sim / Não**): **"Publicar o PR agora?"**
239
+ Pergunte com `AskUserQuestion` (**Sim / Não**): **"Publicar o PR agora?"** (Com "Publicar direto e validar no PR" na Fase 0, vale como Sim.)
213
240
 
214
241
  - **Não:** nada é enviado. O `pull-request.md` fica na sessão para você publicar quando quiser (à mão ou rodando o `/eng.pr` de novo). Pule para a Fase 7 (sem `daily.md`, que só existe com PR aberto), com a mensagem "PR não publicado".
215
242
  - **Sim:** faça o push (Fase 3) e crie o MR/PR (4.4).
@@ -371,9 +398,9 @@ Regras em `$IDE/rules-on-demand/engineering/eng.pr-rules.md` (seção "daily.md"
371
398
  🕒 Timesheet: {LINHA_DE_TIMESHEET_APROVADA}
372
399
 
373
400
  📌 Próximos passos:
374
- 1. /eng.spec-consolidate {TASK_MANAGER_KEY} → registrar no Central docs o que esta entrega implementou
375
- 2. Aguardar revisão do time e processar os comentários do code review
376
- 3. Merge após aprovação
401
+ 1. Aguardar revisão do time e processar os comentários do code review
402
+ 2. Merge após aprovação
403
+ 3. /eng.spec-consolidate {TASK_MANAGER_KEY} depois do merge → registrar no Central docs o que esta entrega implementou
377
404
 
378
405
  🗂️ A sessão $SESSIONS_DIR/eng/{TASK_MANAGER_KEY}/ não é apagada (o /eng.spec-consolidate precisa dela).
379
406
  Remova à mão quando quiser.
@@ -383,6 +410,12 @@ Regras em `$IDE/rules-on-demand/engineering/eng.pr-rules.md` (seção "daily.md"
383
410
  - Jira: {TASK_MANAGER_URL_BASE}/browse/{TASK_MANAGER_KEY}
384
411
  ```
385
412
 
413
+ ### 7.4 PR mergeado? (`eng.transitions-rules.md`)
414
+
415
+ Pergunte com `AskUserQuestion`: **"O PR já foi aprovado e mergeado?"**
416
+ - **Ainda não (como hoje):** encerre com a mensagem acima.
417
+ - **Sim, rodar o `/eng.spec-consolidate`:** chame o `/eng.spec-consolidate {TASK_MANAGER_KEY}` (ou mostre o comando).
418
+
386
419
  ## Regras Importantes
387
420
 
388
421
  ### ⛔ NÃO FAÇA
@@ -15,6 +15,7 @@ Antes de abrir o PR/MR, este comando **revê a branch atrás de possíveis lacun
15
15
  > ⚠️ **Só revisa.** O `eng.pre-pr` não corrige código, não escreve testes, não atualiza documentação e não publica nada no Central docs. Ele aponta; quem decide e ajusta é você (ou o `eng.work`, se pedir).
16
16
 
17
17
  > 📋 **Rules**: `$IDE/rules-on-demand/engineering/eng.pre-pr-rules.md` — **antes de começar, leia esse arquivo e siga-o**: ele não é carregado automaticamente no início da sessão.
18
+ > 🔀 **Transições**: `$IDE/rules-on-demand/engineering/eng.transitions-rules.md` — perguntas de início e de fim deste comando (a opção padrão mantém o fluxo de sempre).
18
19
 
19
20
  ## Skills recomendados
20
21
 
@@ -112,4 +113,4 @@ A coluna **Decisão** nasce vazia: quem preenche é o usuário.
112
113
  3. Pergunte com `AskUserQuestion` (**Sim / Não**, sempre, nunca publicar sem a resposta): **"Publicar o gate-checklist.md (com as decisões) como comentário na issue/card?"**
113
114
  - **Sim** (e `TASK_MANAGER` preenchido): `/eng-global-task-comment {TASK_MANAGER_KEY}` com o conteúdo do arquivo.
114
115
  - **Não**, ou modo freelance: fica só na sessão.
115
- 4. Próximo passo: ajustar o que foi marcado "Ajustar" (à mão ou com o `/eng.work`) e rodar o `/eng.pr`, que usa o PR Brief deste relatório.
116
+ 4. Próximo passo: ajustar o que foi marcado "Ajustar" (à mão ou com o `/eng.work`) e rodar o `/eng.pr`, que usa o PR Brief deste relatório. Pergunte com `AskUserQuestion` (`eng.transitions-rules.md`): **"Seguir para o `/eng.pr`?"** → **Parar aqui para ajustar (como hoje)** / **Seguir para o `/eng.pr`**. Com lacuna marcada "Ajustar", deixe isso claro na opção de seguir ("Seguir mesmo com {n} lacunas a ajustar"). Com "Seguir", chame o `/eng.pr {TASK_MANAGER_KEY}` (ou mostre o comando).
@@ -10,7 +10,7 @@ model_justification: Consolidar exige ler e cruzar muitas fontes (documentos, de
10
10
 
11
11
  # Consolidar no Central docs
12
12
 
13
- Este comando registra no **Central docs** o que a entrega **de fato implementou**. Ele roda **logo depois do PR aberto** (`/eng.pr`) e gera dois documentos completos e autossuficientes:
13
+ Este comando registra no **Central docs** o que a entrega **de fato implementou**. Ele roda **depois do merge do PR** (o `/eng.pr` pergunta no fim se o PR já foi mergeado e oferece chamá-lo) e gera dois documentos completos e autossuficientes:
14
14
  - o **documento da funcionalidade** (`feature-{slug}.md`), com o estado atual, novo ou atualizado;
15
15
  - o **registro da entrega** (`delivery-{AAAA-MM-DD}-{task_key}.md`), com o PR, os commits e os autores.
16
16
 
@@ -110,6 +110,8 @@ Pergunte com `AskUserQuestion` (**Sim / Não**): **"Publicar no Central docs?"**
110
110
  (no `--inicial`, só os `feature-*`). Com o Central docs num repositório git, cada publicação abre um PR no repositório de documentação: informe as URLs.
111
111
  - **Não:** os arquivos ficam na sessão. Para publicar depois, use os mesmos comandos.
112
112
 
113
+ Com `ARTIFACT_STYLE=human-generated`, a versão humanizada (`{nome}.public.md`) fica ao lado da consolidação, na sessão, e **não** é publicada.
114
+
113
115
  ## Passo 7: Mensagem final
114
116
 
115
117
  ```
@@ -15,6 +15,7 @@ Este comando inicia o **planejamento** de uma nova feature.
15
15
 
16
16
  > 📋 **Rules**: `$IDE/rules-on-demand/engineering/eng.start-rules.md` — **antes de começar, leia esse arquivo e siga-o**: ele não é carregado automaticamente no início da sessão.
17
17
  > 📤 **Template**: `$IDE/templates/engineering/architecture-template.md`
18
+ > 🔀 **Transições**: `$IDE/rules-on-demand/engineering/eng.transitions-rules.md` — perguntas de início e de fim deste comando (a opção padrão mantém o fluxo de sempre).
18
19
 
19
20
  > ⚠️ **IMPORTANTE**: Este workflow é APENAS para planejamento e documentação.
20
21
  > **NÃO execute código, NÃO crie arquivos de código, NÃO faça commits.**
@@ -129,7 +130,11 @@ Se `$SESSIONS_DIR/warm-ups/` tiver aquecimentos, leia `$IDE/rules-on-demand/warm
129
130
 
130
131
  ## Fase 0.5: Advisor (opcional)
131
132
 
132
- Logo depois de obter o `TASK_MANAGER_KEY`, pergunte com `AskUserQuestion` (sem a ferramenta, use a tabela de `prod-rules.md`): **"Usar o Advisor nas questões em aberto desta tarefa?"** (**Não**, padrão / **Sim**). Com **Não**, siga como sempre e não mencione mais o Advisor.
133
+ Logo depois de obter o `TASK_MANAGER_KEY`, pergunte com `AskUserQuestion` (sem a ferramenta, use a tabela de `prod-rules.md`): **"Usar o Advisor nas questões em aberto desta tarefa?"** (**Não**, padrão / **Sim**). Com **Não**, siga como sempre e não mencione mais o Advisor. Em seguida (só sem Advisor), pergunte **"Como tratar as questões em aberto que surgirem?"**:
134
+ - **Tratar no architecture.md (como hoje):** as questões vão para a seção 8 e você as responde ao revisar o documento.
135
+ - **Uma a uma, assim que surgirem:** cada questão encontrada nas Fases 2 e 3 é perguntada na hora com `AskUserQuestion` (contexto em uma frase, opções e a sugestão marcada "(Recomendada)"), e entra na seção 8 já respondida.
136
+
137
+ Registre a escolha no cabeçalho do `architecture.md` (`Questões em aberto:`).
133
138
 
134
139
  Com **Sim**, pergunte **"Qual modelo para o Advisor?"** com os itens de `ADVISOR_MODELS` do `ENV.md` (até 4 opções; o resto em "Outro"). Lista vazia ou ausente: use `Sonnet 5.5` sem perguntar; lista de um item: use-o sem perguntar. Traduza o nome pela família (primeira palavra em minúsculas: `sonnet`, `opus`, `fable`, `haiku`); se o modelo não for aceito pela IDE, use `sonnet` e avise em uma linha. Se a IDE não permitir escolher o modelo do subagente, avise e não faça a segunda pergunta.
135
140
 
@@ -394,7 +399,7 @@ Levante na seção 8 **tudo** que for diferente do código ou ambíguo no card,
394
399
  3. Preencha "Sugestão do Sub-Agent (Advisor)", **"Decisão adotada" (a sugestão do Advisor, que prevalece; não a substitua nem a conteste)**, "Divergência" e "Impacto da decisão". Confira no código os fatos em que a sugestão se apoia antes de registrar.
395
400
  4. Poste **um** comentário de auditoria na issue com `/eng-global-task-comment`, no modelo do template (freelance pula).
396
401
 
397
- **Sem Advisor:** apresente as questões ao usuário, como sempre.
402
+ **Sem Advisor:** com "Tratar no architecture.md (como hoje)", apresente as questões ao usuário, como sempre; com "Uma a uma", elas já foram respondidas ao surgir (registre as respostas e escreva só as que surgirem na escrita do documento).
398
403
 
399
404
  ---
400
405
 
@@ -417,6 +422,7 @@ Se o usuário tiver feedback:
417
422
  - Apresente novamente
418
423
  - Continue até aprovação explícita
419
424
 
425
+ **Sem Advisor**, a aprovação é a pergunta de transição (`eng.transitions-rules.md`): **"Aprovar o architecture.md?"** → **Aprovar e parar aqui (como hoje)** / **Aprovar e seguir para o `/eng.plan`** / **Ajustar o documento**. Com "seguir", chame o `/eng.plan {TASK_MANAGER_KEY}` (ou mostre o comando).
420
426
  **Com Advisor**, o gate segue a autonomia do `context.md` (CDD): `alta` → apresente o resumo e siga para o `eng.plan` sem aguardar; `média` ou `baixa` → aguarde a aprovação explícita. Sem `context.md`, use a tabela "Autonomia por POSITION" de `eng-rules.md`. Sem Advisor, nada muda.
421
427
 
422
428
  ### 5.3 Atualizar Board