@jaimevalasek/aioson 1.33.1 → 1.37.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/CHANGELOG.md +76 -0
- package/docs/en/1-understand/ecosystem-map.md +45 -29
- package/docs/en/1-understand/glossary.md +6 -6
- package/docs/en/1-understand/what-is-aioson.md +5 -5
- package/docs/en/2-start/existing-project.md +7 -7
- package/docs/en/2-start/first-project.md +33 -39
- package/docs/en/2-start/initial-decisions.md +22 -19
- package/docs/en/3-recipes/README.md +2 -2
- package/docs/en/3-recipes/continuity-between-sessions.md +2 -2
- package/docs/en/3-recipes/from-idea-to-prd-via-briefing.md +13 -3
- package/docs/en/3-recipes/full-feature-with-sheldon.md +329 -338
- package/docs/en/4-agents/README.md +33 -16
- package/docs/en/4-agents/briefing-refiner.md +146 -0
- package/docs/en/4-agents/discovery-design-doc.md +20 -8
- package/docs/en/4-agents/forge-run.md +3 -2
- package/docs/en/5-reference/README.md +1 -0
- package/docs/en/5-reference/autopilot-handoff.md +286 -0
- package/docs/en/5-reference/cli-reference.md +57 -48
- package/docs/en/5-reference/executable-verification.md +10 -7
- package/docs/en/5-reference/parallel.md +2 -0
- package/docs/en/5-reference/qa-browser.md +2 -2
- package/docs/en/README.md +3 -3
- package/docs/pt/1-entender/glossario.md +5 -5
- package/docs/pt/1-entender/mapa-do-ecossistema.md +33 -22
- package/docs/pt/2-comecar/decisoes-iniciais.md +20 -18
- package/docs/pt/2-comecar/primeiro-projeto.md +2 -2
- package/docs/pt/3-receitas/README.md +1 -1
- package/docs/pt/3-receitas/app-saas-do-zero.md +35 -122
- package/docs/pt/3-receitas/da-ideia-ao-prd-via-briefing.md +8 -1
- package/docs/pt/3-receitas/feature-completa-com-sheldon.md +291 -338
- package/docs/pt/4-agentes/README.md +13 -11
- package/docs/pt/4-agentes/analyst.md +9 -5
- package/docs/pt/4-agentes/architect.md +9 -5
- package/docs/pt/4-agentes/briefing-refiner.md +64 -40
- package/docs/pt/4-agentes/briefing.md +6 -1
- package/docs/pt/4-agentes/dev.md +38 -8
- package/docs/pt/4-agentes/deyvin.md +4 -0
- package/docs/pt/4-agentes/discover.md +4 -0
- package/docs/pt/4-agentes/discovery-design-doc.md +25 -23
- package/docs/pt/4-agentes/neo.md +4 -0
- package/docs/pt/4-agentes/orache.md +6 -0
- package/docs/pt/4-agentes/orchestrator.md +176 -118
- package/docs/pt/4-agentes/pentester.md +11 -5
- package/docs/pt/4-agentes/pm.md +15 -7
- package/docs/pt/4-agentes/product.md +19 -1
- package/docs/pt/4-agentes/qa.md +10 -2
- package/docs/pt/4-agentes/setup.md +3 -1
- package/docs/pt/4-agentes/sheldon.md +178 -99
- package/docs/pt/4-agentes/tester.md +6 -0
- package/docs/pt/4-agentes/ux-ui.md +9 -5
- package/docs/pt/5-referencia/README.md +1 -1
- package/docs/pt/5-referencia/agent-chain-continuity.md +14 -5
- package/docs/pt/5-referencia/autopilot-handoff.md +191 -74
- package/docs/pt/5-referencia/comandos-cli.md +16 -7
- package/docs/pt/5-referencia/sdd-automation-scripts.md +6 -6
- package/docs/pt/5-referencia/sdd-framework.md +53 -16
- package/docs/pt/5-referencia/sdd-planos-e-estrutura.md +27 -15
- package/docs/pt/5-referencia/skills.md +2 -0
- package/docs/pt/README.md +4 -4
- package/docs/pt/agentes.md +50 -50
- package/package.json +2 -2
- package/src/agents.js +1 -1
- package/src/artifact-kinds.js +111 -0
- package/src/autopilot-signal.js +71 -0
- package/src/cli.js +112 -81
- package/src/commands/agent-epilogue.js +251 -186
- package/src/commands/agents.js +122 -50
- package/src/commands/audit-code.js +344 -0
- package/src/commands/briefing.js +337 -1
- package/src/commands/classify.js +389 -389
- package/src/commands/feature-close.js +122 -4
- package/src/commands/harness-check.js +259 -175
- package/src/commands/live.js +71 -11
- package/src/commands/review-feature.js +189 -0
- package/src/commands/runtime.js +81 -66
- package/src/commands/sync-agents-copy.js +115 -0
- package/src/commands/update.js +5 -1
- package/src/commands/verification-plan.js +143 -0
- package/src/commands/verify-artifact.js +593 -0
- package/src/commands/workflow-execute.js +434 -316
- package/src/commands/workflow-next.js +193 -20
- package/src/commands/workflow-plan.js +5 -5
- package/src/constants.js +2 -0
- package/src/doctor.js +4 -2
- package/src/gateway-pointer-merge.js +7 -1
- package/src/handoff-contract.js +267 -172
- package/src/harness/contract-integrity-gate.js +172 -0
- package/src/harness/contract-integrity.js +111 -0
- package/src/harness/contract-schema.js +377 -332
- package/src/harness/detect-runtime-feature.js +90 -0
- package/src/harness/static-criteria.js +192 -0
- package/src/i18n/messages/en.js +10 -5
- package/src/i18n/messages/es.js +10 -5
- package/src/i18n/messages/fr.js +10 -5
- package/src/i18n/messages/pt-BR.js +10 -5
- package/src/install-wizard.js +8 -8
- package/src/installer.js +13 -6
- package/src/lib/briefing-refiner/apply-feedback.js +18 -4
- package/src/lib/briefing-refiner/feedback-schema.js +73 -4
- package/src/lib/briefing-refiner/refinement-report.js +11 -0
- package/src/lib/briefing-refiner/review-html.js +388 -68
- package/src/parser.js +12 -0
- package/src/preflight-engine.js +12 -12
- package/src/verification/policy-engine.js +95 -95
- package/src/verification-policy.js +398 -0
- package/src/version.js +52 -1
- package/template/.aioson/agents/architect.md +34 -5
- package/template/.aioson/agents/briefing-refiner.md +91 -48
- package/template/.aioson/agents/briefing.md +4 -0
- package/template/.aioson/agents/committer.md +2 -1
- package/template/.aioson/agents/copywriter.md +30 -21
- package/template/.aioson/agents/design-hybrid-forge.md +10 -1
- package/template/.aioson/agents/dev.md +35 -23
- package/template/.aioson/agents/deyvin.md +4 -0
- package/template/.aioson/agents/discover.md +16 -3
- package/template/.aioson/agents/discovery-design-doc.md +7 -2
- package/template/.aioson/agents/genome.md +19 -10
- package/template/.aioson/agents/neo.md +34 -30
- package/template/.aioson/agents/orache.md +24 -11
- package/template/.aioson/agents/orchestrator.md +100 -7
- package/template/.aioson/agents/pentester.md +4 -0
- package/template/.aioson/agents/pm.md +8 -8
- package/template/.aioson/agents/product.md +25 -1
- package/template/.aioson/agents/profiler-enricher.md +20 -11
- package/template/.aioson/agents/profiler-forge.md +20 -11
- package/template/.aioson/agents/profiler-researcher.md +20 -11
- package/template/.aioson/agents/qa.md +96 -31
- package/template/.aioson/agents/setup.md +12 -1
- package/template/.aioson/agents/sheldon.md +103 -13
- package/template/.aioson/agents/site-forge.md +11 -2
- package/template/.aioson/agents/squad.md +20 -5
- package/template/.aioson/agents/tester.md +4 -0
- package/template/.aioson/agents/ux-ui.md +2 -1
- package/template/.aioson/agents/validator.md +33 -1
- package/template/.aioson/config/verification.json +61 -0
- package/template/.aioson/config.md +13 -9
- package/template/.aioson/docs/LAYERS.md +2 -2
- package/template/.aioson/docs/agent-help.md +126 -0
- package/template/.aioson/docs/autopilot-handoff.md +30 -20
- package/template/.aioson/docs/dev/execution-discipline.md +41 -0
- package/template/.aioson/docs/dev/phase-loop.md +50 -0
- package/template/.aioson/docs/play/llm-data-and-bindings.md +70 -7
- package/template/.aioson/docs/presets/workflow.config.full-merged.json +15 -0
- package/template/.aioson/docs/presets/workflow.config.lean.json +15 -0
- package/template/.aioson/docs/product/prd-contract.md +12 -12
- package/template/.aioson/docs/prototype-contract.md +21 -4
- package/template/.aioson/docs/reference-identity.md +94 -0
- package/template/.aioson/docs/sheldon/harness-contract.md +155 -28
- package/template/.aioson/docs/verification-config.md +82 -0
- package/template/.aioson/docs/verify-artifact-gates.md +91 -0
- package/template/.aioson/docs/workflow-lean-lane.md +129 -0
- package/template/.aioson/skills/design/interface-design/SKILL.md +17 -0
- package/template/.aioson/skills/design/interface-design/references/intent-and-domain.md +2 -0
- package/template/.aioson/skills/process/aioson-spec-driven/SKILL.md +16 -14
- package/template/.aioson/skills/process/aioson-spec-driven/references/approval-gates.md +2 -2
- package/template/.aioson/skills/process/aioson-spec-driven/references/classification-map.md +4 -4
- package/template/.aioson/skills/process/aioson-spec-driven/references/dev.md +15 -15
- package/template/.aioson/skills/process/prototype-forge/SKILL.md +6 -0
- package/template/.aioson/skills/process/reference-identity-extract/SKILL.md +164 -0
- package/template/.aioson/skills/static/multi-agent-patterns.md +5 -5
- package/template/AGENTS.md +36 -36
- package/template/CLAUDE.md +15 -11
package/docs/pt/README.md
CHANGED
|
@@ -22,7 +22,7 @@ Esta é a porta de entrada da documentação em português. Não é um índice a
|
|
|
22
22
|
### Quero uma receita pronta para o meu caso
|
|
23
23
|
|
|
24
24
|
**Trilhas canônicas — como features chegam ao dev:**
|
|
25
|
-
1. **[Feature completa com @sheldon](./3-receitas/feature-completa-com-sheldon.md)** —
|
|
25
|
+
1. **[Feature completa com @sheldon](./3-receitas/feature-completa-com-sheldon.md)** — as duas trilhas: **SMALL lean** `@product → @sheldon → @dev → @qa` e **MEDIUM maestro** `@product → @orchestrator → @dev → @pentester → @qa` (com detours opt-in de `@tester`, `@validator`)
|
|
26
26
|
2. [Da ideia ao PRD via @briefing](./3-receitas/da-ideia-ao-prd-via-briefing.md) — quando a ideia ainda é vaga
|
|
27
27
|
3. [Plans externos para @product](./3-receitas/plans-externos-para-product.md) — quando você planejou em ChatGPT/Claude.io e quer trazer
|
|
28
28
|
|
|
@@ -37,7 +37,7 @@ Esta é a porta de entrada da documentação em português. Não é um índice a
|
|
|
37
37
|
11. [Continuidade entre sessões](./3-receitas/continuidade-entre-sessoes.md) — feature dossier, dev-resume, drift detection
|
|
38
38
|
|
|
39
39
|
### Quero a referência técnica de um agente ou comando
|
|
40
|
-
- **[Fichas dos 29 agentes (30 entradas com 1 alias)](./4-agentes/README.md)** — uma ficha por agente, com diálogo típico, saídas em disco e handoff
|
|
40
|
+
- **[Fichas dos 29 agentes (30 entradas com 1 alias)](./4-agentes/README.md)** — uma ficha por agente, com diálogo típico, saídas em disco e handoff
|
|
41
41
|
- **[Referência técnica completa](./5-referencia/README.md)** — 32 docs organizados em 5 categorias (novos 2026, artefatos, CLI/config, agentes/squads, skills/design)
|
|
42
42
|
- [Guia de agentes (legado)](./agentes.md) — visão tabular alternativa
|
|
43
43
|
|
|
@@ -83,7 +83,7 @@ npx @jaimevalasek/aioson init meu-projeto
|
|
|
83
83
|
cd meu-projeto
|
|
84
84
|
|
|
85
85
|
# 3. Abra seu cliente AI (Claude Code, Codex e OpenCode) e digite:
|
|
86
|
-
/aioson:agent:setup
|
|
86
|
+
/aioson:agent:setup
|
|
87
87
|
```
|
|
88
88
|
|
|
89
89
|
A partir daí, os agentes guiam você. Detalhes em [Primeiro projeto do zero](./2-comecar/primeiro-projeto.md).
|
|
@@ -99,7 +99,7 @@ Atualmente só PT está em reforma. EN/ES/FR continuam usando os arquivos legado
|
|
|
99
99
|
## Status desta documentação
|
|
100
100
|
|
|
101
101
|
**Fase A (entender + começar)** — concluída · 8 docs em `1-entender/` e `2-comecar/`.
|
|
102
|
-
**Fase B (receitas práticas + ficha por agente)** — concluída · 11 receitas em `3-receitas/` + 29 fichas em `4-agentes/`.
|
|
102
|
+
**Fase B (receitas práticas + ficha por agente)** — concluída · 11 receitas em `3-receitas/` + 29 fichas em `4-agentes/`.
|
|
103
103
|
**Fase C (referência técnica completa)** — concluída · 32 docs em `5-referencia/`, com 6 totalmente novos cobrindo features 2026 antes não documentadas em PT.
|
|
104
104
|
**Fase D (trilhas de workflow)** — concluída · 3 trilhas canônicas de feature: briefing→PRD, plans externos, e trilha completa com @sheldon.
|
|
105
105
|
|
package/docs/pt/agentes.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Guia de Agentes
|
|
2
2
|
|
|
3
|
-
> **Versão tabular alternativa (legado).** Para fichas individuais detalhadas com diálogos, saídas em disco e handoff, veja [`4-agentes/README.md`](./4-agentes/README.md).
|
|
4
|
-
|
|
5
|
-
> `@pair` é alias de `@deyvin` e não possui ficha separada.
|
|
3
|
+
> **Versão tabular alternativa (legado).** Para fichas individuais detalhadas com diálogos, saídas em disco e handoff, veja [`4-agentes/README.md`](./4-agentes/README.md).
|
|
4
|
+
|
|
5
|
+
> `@pair` é alias de `@deyvin` e não possui ficha separada.
|
|
6
6
|
|
|
7
7
|
> Quando usar cada agente, o que ele entrega e como ativá-lo.
|
|
8
8
|
|
|
@@ -15,11 +15,11 @@ O AIOSON tem agentes oficiais de projeto e também pode criar agentes de squad.
|
|
|
15
15
|
```
|
|
16
16
|
@setup ← sempre o primeiro
|
|
17
17
|
@product ← gera o PRD base vivo e roteia o fluxo
|
|
18
|
-
@deyvin ← companheiro tecnico para continuidade e pequenas implementacoes
|
|
19
|
-
@discovery-design-doc ← quando precisa clarear escopo e gerar design doc vivo
|
|
20
|
-
@analyst ← projetos SMALL e MEDIUM
|
|
21
|
-
@scope-check ← valida alinhamento antes de codar ou depois de fix relevante
|
|
22
|
-
@architect ← projetos SMALL e MEDIUM
|
|
18
|
+
@deyvin ← companheiro tecnico para continuidade e pequenas implementacoes
|
|
19
|
+
@discovery-design-doc ← quando precisa clarear escopo e gerar design doc vivo
|
|
20
|
+
@analyst ← projetos SMALL e MEDIUM
|
|
21
|
+
@scope-check ← valida alinhamento antes de codar ou depois de fix relevante
|
|
22
|
+
@architect ← projetos SMALL e MEDIUM
|
|
23
23
|
@ux-ui ← UI/UX quando há interfaces (SMALL e MEDIUM)
|
|
24
24
|
@pm ← apenas MEDIUM
|
|
25
25
|
@orchestrator ← apenas MEDIUM
|
|
@@ -55,9 +55,11 @@ O AIOSON tem agentes oficiais de projeto e também pode criar agentes de squad.
|
|
|
55
55
|
|
|
56
56
|
Quando o projeto ja existe e voce roda `scan:project`, o handoff correto agora e:
|
|
57
57
|
|
|
58
|
-
```text
|
|
59
|
-
scan:project -> @analyst -> @scope-check -> @architect
|
|
60
|
-
```
|
|
58
|
+
```text
|
|
59
|
+
scan:project -> @analyst -> @scope-check -> @dev (ou @architect quando o full-merged opt-in do SMALL estiver ativo)
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
> Desde a lane lean (v1.35.0), `@analyst`/`@architect` nao sao mais hops obrigatorios do fluxo padrao apos o scan. A classificacao decide a lane: SMALL segue `@sheldon` como autoridade unica de spec (`@product -> @sheldon -> @dev`), MEDIUM segue o maestro `@orchestrator` (que dispara `@analyst`/`@architect`/`@pm` como sub-agentes do fan-out). Um `@analyst` isolado logo apos o scan continua valido como detour opt-in para mapear o dominio existente antes de abrir a primeira feature.
|
|
61
63
|
|
|
62
64
|
Regras do fluxo:
|
|
63
65
|
- os artefatos locais do scan (`scan-index.md`, `scan-folders.md`, `scan-<pasta>.md`, `scan-aioson.md`) servem como mapas brutos do codigo
|
|
@@ -81,7 +83,7 @@ Regras do fluxo:
|
|
|
81
83
|
|
|
82
84
|
**Como ativar:**
|
|
83
85
|
```
|
|
84
|
-
/aioson:agent:setup
|
|
86
|
+
/aioson:agent:setup
|
|
85
87
|
```
|
|
86
88
|
|
|
87
89
|
**O que ele pergunta:**
|
|
@@ -138,7 +140,7 @@ O `@product` detecta esses arquivos automaticamente e pergunta se deve usá-los
|
|
|
138
140
|
|
|
139
141
|
**Como ativar:**
|
|
140
142
|
```
|
|
141
|
-
/aioson:agent:product
|
|
143
|
+
/aioson:agent:product
|
|
142
144
|
```
|
|
143
145
|
|
|
144
146
|
**Entrega:** Arquivo `.aioson/context/prd.md` ou `.aioson/context/prd-{slug}.md` com:
|
|
@@ -182,12 +184,12 @@ O `@product` detecta esses arquivos automaticamente e pergunta se deve usá-los
|
|
|
182
184
|
|
|
183
185
|
**Como ativar:**
|
|
184
186
|
```
|
|
185
|
-
/aioson:agent:deyvin
|
|
187
|
+
/aioson:agent:deyvin
|
|
186
188
|
```
|
|
187
189
|
|
|
188
190
|
Alias compativel:
|
|
189
191
|
```text
|
|
190
|
-
/aioson:agent:pair
|
|
192
|
+
/aioson:agent:pair
|
|
191
193
|
```
|
|
192
194
|
|
|
193
195
|
**Exemplos bons de uso:**
|
|
@@ -227,7 +229,7 @@ Alias compativel:
|
|
|
227
229
|
|
|
228
230
|
**Como ativar:**
|
|
229
231
|
```
|
|
230
|
-
/aioson:agent:analyst
|
|
232
|
+
/aioson:agent:analyst
|
|
231
233
|
```
|
|
232
234
|
|
|
233
235
|
**Exemplo de perguntas que ele faz:**
|
|
@@ -268,7 +270,7 @@ Em **modo feature**, entrega adicionalmente:
|
|
|
268
270
|
|
|
269
271
|
**Como ativar:**
|
|
270
272
|
```
|
|
271
|
-
/aioson:agent:discovery-design-doc
|
|
273
|
+
/aioson:agent:discovery-design-doc
|
|
272
274
|
```
|
|
273
275
|
|
|
274
276
|
**Entrega:**
|
|
@@ -300,7 +302,7 @@ Em **modo feature**, entrega adicionalmente:
|
|
|
300
302
|
|
|
301
303
|
**Como ativar:**
|
|
302
304
|
```
|
|
303
|
-
/aioson:agent:architect
|
|
305
|
+
/aioson:agent:architect
|
|
304
306
|
```
|
|
305
307
|
|
|
306
308
|
**Estruturas que ele propõe (exemplo Laravel SMALL):**
|
|
@@ -341,7 +343,7 @@ tests/
|
|
|
341
343
|
|
|
342
344
|
**Como ativar o agente UI/UX:**
|
|
343
345
|
```
|
|
344
|
-
/aioson:agent:ux-ui
|
|
346
|
+
/aioson:agent:ux-ui
|
|
345
347
|
```
|
|
346
348
|
|
|
347
349
|
**Submodos disponíveis:**
|
|
@@ -384,7 +386,7 @@ tests/
|
|
|
384
386
|
|
|
385
387
|
**Como ativar:**
|
|
386
388
|
```
|
|
387
|
-
/aioson:agent:pm
|
|
389
|
+
/aioson:agent:pm
|
|
388
390
|
```
|
|
389
391
|
|
|
390
392
|
**Regra de ouro do @pm:** O documento deve ter no máximo 2 páginas. Se passar disso, corte funcionalidades do MVP.
|
|
@@ -410,7 +412,7 @@ tests/
|
|
|
410
412
|
|
|
411
413
|
**Como ativar:**
|
|
412
414
|
```
|
|
413
|
-
/aioson:agent:orchestrator
|
|
415
|
+
/aioson:agent:orchestrator
|
|
414
416
|
```
|
|
415
417
|
|
|
416
418
|
**Ou via CLI para preparar os arquivos:**
|
|
@@ -455,7 +457,7 @@ npx @jaimevalasek/aioson parallel:status
|
|
|
455
457
|
|
|
456
458
|
**Como ativar:**
|
|
457
459
|
```
|
|
458
|
-
/aioson:agent:squad
|
|
460
|
+
/aioson:agent:squad
|
|
459
461
|
```
|
|
460
462
|
|
|
461
463
|
**Entrega:**
|
|
@@ -481,7 +483,7 @@ npx @jaimevalasek/aioson parallel:status
|
|
|
481
483
|
|
|
482
484
|
**Como ativar:**
|
|
483
485
|
```
|
|
484
|
-
/aioson:agent:genome
|
|
486
|
+
/aioson:agent:genome
|
|
485
487
|
```
|
|
486
488
|
|
|
487
489
|
**Entrega:**
|
|
@@ -517,7 +519,7 @@ Depois disso, ela passa a ser parte real do pacote local da squad e deve ser con
|
|
|
517
519
|
|
|
518
520
|
**Como ativar:**
|
|
519
521
|
```
|
|
520
|
-
/aioson:agent:dev
|
|
522
|
+
/aioson:agent:dev
|
|
521
523
|
```
|
|
522
524
|
|
|
523
525
|
**Princípios que ele aplica em qualquer stack:**
|
|
@@ -570,7 +572,7 @@ Se o usuário pedir para pular o teste, o `@dev` resiste, explica, e só cede ap
|
|
|
570
572
|
|
|
571
573
|
**Como ativar:**
|
|
572
574
|
```
|
|
573
|
-
/aioson:agent:qa
|
|
575
|
+
/aioson:agent:qa
|
|
574
576
|
```
|
|
575
577
|
|
|
576
578
|
**Entrega:**
|
|
@@ -634,7 +636,7 @@ O root de `.aioson/context/` fica limpo automaticamente. O desenvolvedor não pr
|
|
|
634
636
|
|
|
635
637
|
**Como ativar:**
|
|
636
638
|
```
|
|
637
|
-
/aioson:agent:tester
|
|
639
|
+
/aioson:agent:tester
|
|
638
640
|
```
|
|
639
641
|
|
|
640
642
|
**Entrega:**
|
|
@@ -669,7 +671,7 @@ O root de `.aioson/context/` fica limpo automaticamente. O desenvolvedor não pr
|
|
|
669
671
|
|
|
670
672
|
**Como ativar:**
|
|
671
673
|
```
|
|
672
|
-
/aioson:agent:sheldon
|
|
674
|
+
/aioson:agent:sheldon
|
|
673
675
|
```
|
|
674
676
|
|
|
675
677
|
**Entrega:**
|
|
@@ -698,7 +700,7 @@ Agentes que nao fazem parte do fluxo principal de entrega, mas entram sob demand
|
|
|
698
700
|
|
|
699
701
|
**Como ativar:**
|
|
700
702
|
```
|
|
701
|
-
/aioson:agent:committer
|
|
703
|
+
/aioson:agent:committer
|
|
702
704
|
```
|
|
703
705
|
|
|
704
706
|
**Entrega:**
|
|
@@ -719,7 +721,7 @@ Agentes que nao fazem parte do fluxo principal de entrega, mas entram sob demand
|
|
|
719
721
|
|
|
720
722
|
**Como ativar:**
|
|
721
723
|
```
|
|
722
|
-
/aioson:agent:copywriter
|
|
724
|
+
/aioson:agent:copywriter
|
|
723
725
|
```
|
|
724
726
|
|
|
725
727
|
**Entrega:**
|
|
@@ -741,7 +743,7 @@ Agentes que nao fazem parte do fluxo principal de entrega, mas entram sob demand
|
|
|
741
743
|
|
|
742
744
|
**Como ativar:**
|
|
743
745
|
```
|
|
744
|
-
/aioson:agent:briefing
|
|
746
|
+
/aioson:agent:briefing
|
|
745
747
|
```
|
|
746
748
|
|
|
747
749
|
**Entrega:**
|
|
@@ -762,7 +764,7 @@ Agentes que nao fazem parte do fluxo principal de entrega, mas entram sob demand
|
|
|
762
764
|
|
|
763
765
|
**Como ativar:**
|
|
764
766
|
```
|
|
765
|
-
/aioson:agent:design-hybrid-forge
|
|
767
|
+
/aioson:agent:design-hybrid-forge
|
|
766
768
|
```
|
|
767
769
|
|
|
768
770
|
**Entrega:**
|
|
@@ -782,7 +784,7 @@ Agentes que nao fazem parte do fluxo principal de entrega, mas entram sob demand
|
|
|
782
784
|
|
|
783
785
|
**Como ativar:**
|
|
784
786
|
```
|
|
785
|
-
/aioson:agent:discover
|
|
787
|
+
/aioson:agent:discover
|
|
786
788
|
```
|
|
787
789
|
|
|
788
790
|
**Ou via CLI:**
|
|
@@ -809,7 +811,7 @@ npx @jaimevalasek/aioson scan:project . --folder=src
|
|
|
809
811
|
|
|
810
812
|
**Como ativar:**
|
|
811
813
|
```
|
|
812
|
-
/aioson:agent:neo
|
|
814
|
+
/aioson:agent:neo
|
|
813
815
|
```
|
|
814
816
|
|
|
815
817
|
**Entrega:**
|
|
@@ -830,7 +832,7 @@ npx @jaimevalasek/aioson scan:project . --folder=src
|
|
|
830
832
|
|
|
831
833
|
**Como ativar:**
|
|
832
834
|
```
|
|
833
|
-
/aioson:agent:orache
|
|
835
|
+
/aioson:agent:orache
|
|
834
836
|
```
|
|
835
837
|
|
|
836
838
|
**Entrega:**
|
|
@@ -852,7 +854,7 @@ npx @jaimevalasek/aioson scan:project . --folder=src
|
|
|
852
854
|
|
|
853
855
|
**Como ativar:**
|
|
854
856
|
```
|
|
855
|
-
/aioson:agent:pentester
|
|
857
|
+
/aioson:agent:pentester
|
|
856
858
|
```
|
|
857
859
|
|
|
858
860
|
**Entrega:**
|
|
@@ -873,7 +875,7 @@ npx @jaimevalasek/aioson scan:project . --folder=src
|
|
|
873
875
|
|
|
874
876
|
**Como ativar:**
|
|
875
877
|
```
|
|
876
|
-
/aioson:agent:profiler-researcher
|
|
878
|
+
/aioson:agent:profiler-researcher
|
|
877
879
|
```
|
|
878
880
|
|
|
879
881
|
**Entrega:**
|
|
@@ -892,7 +894,7 @@ npx @jaimevalasek/aioson scan:project . --folder=src
|
|
|
892
894
|
|
|
893
895
|
**Como ativar:**
|
|
894
896
|
```
|
|
895
|
-
/aioson:agent:profiler-enricher
|
|
897
|
+
/aioson:agent:profiler-enricher
|
|
896
898
|
```
|
|
897
899
|
|
|
898
900
|
**Entrega:**
|
|
@@ -911,7 +913,7 @@ npx @jaimevalasek/aioson scan:project . --folder=src
|
|
|
911
913
|
|
|
912
914
|
**Como ativar:**
|
|
913
915
|
```
|
|
914
|
-
/aioson:agent:profiler-forge
|
|
916
|
+
/aioson:agent:profiler-forge
|
|
915
917
|
```
|
|
916
918
|
|
|
917
919
|
**Entrega:**
|
|
@@ -930,7 +932,7 @@ npx @jaimevalasek/aioson scan:project . --folder=src
|
|
|
930
932
|
|
|
931
933
|
**Como ativar:**
|
|
932
934
|
```
|
|
933
|
-
/aioson:agent:site-forge
|
|
935
|
+
/aioson:agent:site-forge
|
|
934
936
|
```
|
|
935
937
|
|
|
936
938
|
**Exemplos de uso:**
|
|
@@ -956,7 +958,7 @@ Extraia o design de https://exemplo.com como uma skill
|
|
|
956
958
|
|
|
957
959
|
**Como ativar:**
|
|
958
960
|
```
|
|
959
|
-
/aioson:agent:validator
|
|
961
|
+
/aioson:agent:validator
|
|
960
962
|
```
|
|
961
963
|
|
|
962
964
|
**Entrega:**
|
|
@@ -972,22 +974,20 @@ Extraia o design de https://exemplo.com como uma skill
|
|
|
972
974
|
```
|
|
973
975
|
Duração típica: minutos a horas. Sem análise, sem arquitetura formal.
|
|
974
976
|
|
|
975
|
-
### SMALL
|
|
977
|
+
### SMALL — lean lane (padrão v1.35.0)
|
|
976
978
|
```
|
|
977
|
-
@setup → @product →
|
|
979
|
+
@setup → @product → @sheldon → @dev → @qa → [@tester]
|
|
978
980
|
```
|
|
979
|
-
Duração típica: horas a dias.
|
|
981
|
+
Duração típica: horas a dias. `@sheldon` é a autoridade única de spec: produz requirements + decisões técnicas + plano faseado + harness-contract (Gates A/B/C) em uma passada. `@analyst`, `@architect`, `@scope-check` são detours opt-in.
|
|
980
982
|
|
|
981
|
-
### MEDIUM
|
|
983
|
+
### MEDIUM — maestro lane (v1.35.0)
|
|
982
984
|
```
|
|
983
|
-
@setup → @product → [@sheldon] → @
|
|
985
|
+
@setup → @product → [@sheldon] → @orchestrator → @dev → @pentester → @qa → [@tester]
|
|
984
986
|
```
|
|
985
|
-
Duração típica: dias a semanas.
|
|
986
|
-
|
|
987
|
-
> O `@pentester` entra obrigatoriamente em projetos MEDIUM entre `@dev` e `@qa`. Em projetos sensiveis ou com requisitos de seguranca, ative-o tambem em SMALL.
|
|
987
|
+
Duração típica: dias a semanas. `@orchestrator` é o maestro de spec: faz fan-out para `@analyst` + `@architect` + `@pm` (+ `@ux-ui` quando UI-heavy) como sub-agentes, consolida e verifica os artefatos. `@pentester` é inline (entre `@dev` e `@qa`).
|
|
988
988
|
|
|
989
|
-
`[@sheldon]` — opcional
|
|
990
|
-
`[@tester]` — opcional, recomendado quando a cobertura de testes for insuficiente após `@dev`.
|
|
989
|
+
> `[@sheldon]` — opcional no MEDIUM como pré-etapa antes do `@orchestrator` para endurecer o PRD.
|
|
990
|
+
> `[@tester]` — opcional, recomendado quando a cobertura de testes for insuficiente após `@dev`.
|
|
991
991
|
|
|
992
992
|
---
|
|
993
993
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jaimevalasek/aioson",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.37.0",
|
|
4
4
|
"description": "AI operating framework for hyper-personalized software.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"test:genome-2.0:block-a": "node scripts/smoke/genome-2.0-smoke.js && npm run test:genome && npm test && npm run lint",
|
|
43
43
|
"test:genome-2.0:rollout": "node scripts/testing/genome-2.0-rollout.js",
|
|
44
44
|
"lint": "node scripts/check-js.js",
|
|
45
|
-
"sync:agents": "node src/commands/sync-agents-preflight.js &&
|
|
45
|
+
"sync:agents": "node src/commands/sync-agents-preflight.js && node src/commands/sync-agents-copy.js",
|
|
46
46
|
"ci": "npm run lint && npm test"
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
package/src/agents.js
CHANGED
|
@@ -67,7 +67,7 @@ function buildAgentPrompt(agent, tool, options = {}) {
|
|
|
67
67
|
'',
|
|
68
68
|
`**Language boundary:** Agent instructions are canonical in English. All user-facing communication must be in ${interactionLanguage}.`,
|
|
69
69
|
'',
|
|
70
|
-
`**Scope boundary:** You operate exclusively as ${agent.command}. Do not perform work that belongs to another agent. When your work is complete, output only the handoff — which agent is next and why. Do not continue into that agent\'s territory.${autoHandoff ? ' Exception: autopilot handoff is active for this stage — follow `.aioson/docs/autopilot-handoff.md` and auto-invoke the next agent\'s skill when no stop condition applies. The chain
|
|
70
|
+
`**Scope boundary:** You operate exclusively as ${agent.command}. Do not perform work that belongs to another agent. When your work is complete, output only the handoff — which agent is next and why. Do not continue into that agent\'s territory.${autoHandoff ? ' Exception: autopilot handoff is active for this stage — follow `.aioson/docs/autopilot-handoff.md` and auto-invoke the next agent\'s skill when no stop condition applies. The chain runs the whole feature: the spec authority (`@sheldon`/`@orchestrator`) seeds the agentic scheme and crosses into `@dev` via the `dev-state.md` cold-start packet once its own gates/decisions are settled, and the post-dev review cycle (`@dev` → `@qa` → `@tester`/`@pentester` when their triggers fire → `@validator`) continues automatically. It stops only for a genuine human decision or a stop condition, and NEVER auto-runs `feature:close`/publish — those require explicit human approval.' : ''}`,
|
|
71
71
|
].join('\n');
|
|
72
72
|
|
|
73
73
|
if (safeTool === 'claude') {
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Canonical map: which agents produce a `verify:artifact`-checkable artifact at
|
|
5
|
+
* session end, the kind, and how that artifact's path is resolved.
|
|
6
|
+
*
|
|
7
|
+
* needs: 'none' — self-resolving (fixed path); the engine can prove it at
|
|
8
|
+
* `agent:done` with no extra input.
|
|
9
|
+
* needs: 'slug' — path keyed by --slug; the agent threads it into agent:done.
|
|
10
|
+
* needs: 'file' — date-stamped / caller-known path, threaded via --file.
|
|
11
|
+
* needs: 'dir' — a generated-site root, via --dir (advisory static floor only
|
|
12
|
+
* at agent:done; the full `npm run build` stays in the agent's
|
|
13
|
+
* explicit Done gate).
|
|
14
|
+
*
|
|
15
|
+
* This is the bridge that makes the periphery's done-gates AUTO-FIRE: instead of
|
|
16
|
+
* relying on each agent to remember its `## Done gate` line, `agent:done` runs the
|
|
17
|
+
* check itself (advisory, best-effort). Keep in sync with the RULESETS/ADAPTERS
|
|
18
|
+
* registry in commands/verify-artifact.js and the per-agent Done gates — it is one
|
|
19
|
+
* of the workflow agent-enumeration sites.
|
|
20
|
+
*/
|
|
21
|
+
const AGENT_ARTIFACT_KIND = {
|
|
22
|
+
setup: { kind: 'project-context', needs: 'none' },
|
|
23
|
+
discover: { kind: 'bootstrap', needs: 'none' },
|
|
24
|
+
committer: { kind: 'commit-message', needs: 'none' },
|
|
25
|
+
genome: { kind: 'genome', needs: 'slug' },
|
|
26
|
+
'profiler-forge': { kind: 'genome', needs: 'slug' },
|
|
27
|
+
'profiler-researcher': { kind: 'research-report', needs: 'slug' },
|
|
28
|
+
'profiler-enricher': { kind: 'enriched-profile', needs: 'slug' },
|
|
29
|
+
'design-hybrid-forge': { kind: 'hybrid-skill', needs: 'slug' },
|
|
30
|
+
copywriter: { kind: 'copy', needs: 'slug' },
|
|
31
|
+
orache: { kind: 'orache-report', needs: 'file' },
|
|
32
|
+
'site-forge': { kind: 'site', needs: 'dir', opts: { noBuild: true } },
|
|
33
|
+
'briefing-refiner': { kind: 'review', needs: 'slug' }
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
const NEEDS_FLAG = { slug: '--slug=<slug>', file: '--file=<path>', dir: '--dir=<dir>' };
|
|
37
|
+
|
|
38
|
+
/** Resolve an agent name (with or without a leading @) to its artifact mapping, or null. */
|
|
39
|
+
function resolveAgentArtifact(agent) {
|
|
40
|
+
const name = String(agent || '').trim().replace(/^@/, '');
|
|
41
|
+
return AGENT_ARTIFACT_KIND[name] || null;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Best-effort advisory `verify:artifact` for the calling agent at `agent:done`.
|
|
46
|
+
*
|
|
47
|
+
* Returns `null` when the agent produces no checkable artifact (the common case —
|
|
48
|
+
* product, dev, qa, …). Otherwise a uniform advisory descriptor:
|
|
49
|
+
* { kind, ok, skipped, issues?, reason }
|
|
50
|
+
* - self-resolving kinds, or locator-keyed kinds whose locator was threaded into
|
|
51
|
+
* agent:done, run the real check (advisory — never blocks).
|
|
52
|
+
* - a locator-keyed kind with no locator yields `skipped:true` plus a one-line
|
|
53
|
+
* hint naming the exact command, so it is surfaced instead of silently missing.
|
|
54
|
+
*
|
|
55
|
+
* Never throws — a failure here must never break the session-end registration.
|
|
56
|
+
*/
|
|
57
|
+
async function verifyAgentArtifact({ targetDir, agent, options = {} }) {
|
|
58
|
+
const mapping = resolveAgentArtifact(agent);
|
|
59
|
+
if (!mapping) return null;
|
|
60
|
+
const { kind, needs } = mapping;
|
|
61
|
+
const slug = options.slug ? String(options.slug).trim() : null;
|
|
62
|
+
const file = options.file ? String(options.file).trim() : null;
|
|
63
|
+
const dir = options.dir ? String(options.dir).trim() : null;
|
|
64
|
+
|
|
65
|
+
const missingLocator =
|
|
66
|
+
(needs === 'slug' && !slug) || (needs === 'file' && !file) || (needs === 'dir' && !dir);
|
|
67
|
+
if (missingLocator) {
|
|
68
|
+
const flag = NEEDS_FLAG[needs];
|
|
69
|
+
return {
|
|
70
|
+
kind,
|
|
71
|
+
ok: true,
|
|
72
|
+
skipped: true,
|
|
73
|
+
reason: `needs ${flag} — run: aioson verify:artifact . --kind=${kind} ${flag} --advisory`
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
try {
|
|
78
|
+
const { runVerifyArtifact } = require('./commands/verify-artifact');
|
|
79
|
+
const report = await runVerifyArtifact({
|
|
80
|
+
args: [targetDir],
|
|
81
|
+
options: {
|
|
82
|
+
kind,
|
|
83
|
+
slug,
|
|
84
|
+
file,
|
|
85
|
+
dir,
|
|
86
|
+
advisory: true,
|
|
87
|
+
suppressExitCode: true,
|
|
88
|
+
json: true,
|
|
89
|
+
...(mapping.opts && mapping.opts.noBuild ? { 'no-build': true } : {})
|
|
90
|
+
},
|
|
91
|
+
logger: { log() {}, error() {}, warn() {} }
|
|
92
|
+
});
|
|
93
|
+
if (!report) return null;
|
|
94
|
+
const issues = report.issues || [];
|
|
95
|
+
const head = issues.slice(0, 3).join('; ');
|
|
96
|
+
const more = issues.length > 3 ? ` (+${issues.length - 3} more)` : '';
|
|
97
|
+
return {
|
|
98
|
+
kind,
|
|
99
|
+
ok: Boolean(report.ok),
|
|
100
|
+
skipped: false,
|
|
101
|
+
issues,
|
|
102
|
+
reason: report.ok
|
|
103
|
+
? null
|
|
104
|
+
: `${head}${more} — advisory; see .aioson/context/verify-artifact-${kind}.json`
|
|
105
|
+
};
|
|
106
|
+
} catch {
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
module.exports = { AGENT_ARTIFACT_KIND, resolveAgentArtifact, verifyAgentArtifact };
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Autopilot activation signal — the single source of truth for "is autopilot
|
|
5
|
+
* on?" outside the agent markdown files.
|
|
6
|
+
*
|
|
7
|
+
* Contract (docs/autopilot-handoff.md "Activation"), highest precedence first:
|
|
8
|
+
* - A scheme for the CURRENT feature with `agentic_policy.enabled: false`
|
|
9
|
+
* (the `--step` disarm) → OFF, even over `auto_handoff: true` — an explicit
|
|
10
|
+
* per-feature choice always wins over the project default.
|
|
11
|
+
* - `auto_handoff: true` in project.context.md frontmatter → ON (project default).
|
|
12
|
+
* - `auto_handoff: false` → OFF, even if a seeded scheme is lying around
|
|
13
|
+
* (step-by-step is the standing choice; a leftover scheme must not override it).
|
|
14
|
+
* - flag absent → ON only when `.aioson/context/workflow-execute.json` exists
|
|
15
|
+
* with `agentic_policy.enabled: true` (the per-feature "Autopilot" choice,
|
|
16
|
+
* which deliberately does NOT persist the frontmatter flag). When a slug is
|
|
17
|
+
* provided, the scheme counts only if it was seeded for THAT feature — a
|
|
18
|
+
* scheme left by a different/closed feature does not.
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
const fs = require('node:fs/promises');
|
|
22
|
+
const path = require('node:path');
|
|
23
|
+
const { validateProjectContextFile } = require('./context');
|
|
24
|
+
|
|
25
|
+
const EXECUTION_STATE_RELATIVE_PATH = '.aioson/context/workflow-execute.json';
|
|
26
|
+
|
|
27
|
+
async function readSeededScheme(targetDir) {
|
|
28
|
+
try {
|
|
29
|
+
const raw = await fs.readFile(path.join(targetDir, EXECUTION_STATE_RELATIVE_PATH), 'utf8');
|
|
30
|
+
return JSON.parse(raw);
|
|
31
|
+
} catch {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
async function resolveAutopilotSignal(targetDir, { slug = null, projectContext = null } = {}) {
|
|
37
|
+
let flag;
|
|
38
|
+
try {
|
|
39
|
+
const context = projectContext || await validateProjectContextFile(targetDir);
|
|
40
|
+
flag = context && context.data && Object.prototype.hasOwnProperty.call(context.data, 'auto_handoff')
|
|
41
|
+
? context.data.auto_handoff === true
|
|
42
|
+
: null;
|
|
43
|
+
} catch {
|
|
44
|
+
flag = null;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const scheme = await readSeededScheme(targetDir);
|
|
48
|
+
const slugMatches = Boolean(
|
|
49
|
+
scheme && (!slug || !scheme.feature || String(scheme.feature) === String(slug))
|
|
50
|
+
);
|
|
51
|
+
|
|
52
|
+
// Explicit per-feature disarm (--step) beats the project-wide flag.
|
|
53
|
+
if (
|
|
54
|
+
scheme && scheme.agentic_policy && scheme.agentic_policy.enabled === false &&
|
|
55
|
+
slugMatches
|
|
56
|
+
) {
|
|
57
|
+
return { enabled: false, source: 'scheme_disarmed' };
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
if (flag === true) return { enabled: true, source: 'frontmatter' };
|
|
61
|
+
if (flag === false) return { enabled: false, source: 'frontmatter_off' };
|
|
62
|
+
|
|
63
|
+
const schemeEnabled = Boolean(scheme && scheme.agentic_policy && scheme.agentic_policy.enabled === true);
|
|
64
|
+
if (!schemeEnabled) return { enabled: false, source: null };
|
|
65
|
+
if (!slugMatches) return { enabled: false, source: 'scheme_other_feature' };
|
|
66
|
+
return { enabled: true, source: 'seeded_scheme' };
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
module.exports = {
|
|
70
|
+
resolveAutopilotSignal
|
|
71
|
+
};
|