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.
- package/AGENTS.md +1 -0
- package/README.md +14 -1
- package/bin/commands/init.js +149 -2
- package/bin/commands/tokens.js +9 -3
- package/bin/lib/cli/program.js +14 -2
- package/bin/lib/core/docs-migrate.js +259 -0
- package/bin/lib/core/env-upgrade.js +84 -0
- package/bin/lib/core/profile-filter.js +15 -3
- package/bin/lib/core/sync-engine.js +5 -3
- package/bin/lib/core/token-report.js +1 -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 +53 -0
- package/rules/product/prod-rules.md +4 -2
- 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 +4 -3
- package/rules-on-demand/engineering/eng.start-rules.md +2 -2
- package/rules-on-demand/engineering/eng.transitions-rules.md +58 -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-docs-central/SKILL.md +1 -1
- package/skills/jarvis-init/SKILL.md +54 -17
- package/skills/jarvis-report-issue/SKILL.md +64 -9
- package/templates/ENV-template.md +10 -0
- package/templates/engineering/architecture-template.md +2 -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 +2 -1
- package/workflows/engineering/eng.pr.md +39 -6
- package/workflows/engineering/eng.pre-pr.md +2 -1
- package/workflows/engineering/eng.spec-consolidate.md +3 -1
- package/workflows/engineering/eng.start.md +8 -2
- package/workflows/engineering/eng.work.md +22 -5
- 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)
|
|
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}
|
|
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.
|
|
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:
|
|
1041
|
-
POSITION:
|
|
1042
|
-
AREA:
|
|
1043
|
-
SQUAD:
|
|
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
|
|
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.
|
|
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
|
|
@@ -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 $
|
|
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 $
|
|
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 $
|
|
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 $
|
|
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.
|
|
375
|
-
2.
|
|
376
|
-
3.
|
|
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 **
|
|
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
|