@jaimevalasek/aioson 1.21.7 → 1.22.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 (105) hide show
  1. package/CHANGELOG.md +39 -2
  2. package/docs/en/1-understand/ecosystem-map.md +1 -1
  3. package/docs/en/2-start/initial-decisions.md +1 -1
  4. package/docs/en/4-agents/README.md +8 -7
  5. package/docs/en/4-agents/discovery-design-doc.md +150 -0
  6. package/docs/en/5-reference/cli-reference.md +42 -16
  7. package/docs/en/README.md +2 -2
  8. package/docs/pt/4-agentes/README.md +8 -6
  9. package/docs/pt/4-agentes/briefing-refiner.md +122 -0
  10. package/docs/pt/4-agentes/discovery-design-doc.md +133 -74
  11. package/docs/pt/4-agentes/scope-check.md +65 -0
  12. package/docs/pt/5-referencia/README.md +1 -0
  13. package/docs/pt/5-referencia/comandos-cli.md +5 -4
  14. package/docs/pt/5-referencia/feature-archive.md +1 -0
  15. package/docs/pt/5-referencia/feature-export.md +155 -0
  16. package/docs/pt/README.md +2 -2
  17. package/docs/pt/agentes.md +3 -1
  18. package/package.json +1 -1
  19. package/src/agent-manifests.js +14 -3
  20. package/src/agents.js +21 -20
  21. package/src/cli.js +72 -52
  22. package/src/commands/briefing.js +28 -150
  23. package/src/commands/commit-prepare.js +5 -2
  24. package/src/commands/feature-archive.js +48 -12
  25. package/src/commands/feature-close.js +40 -0
  26. package/src/commands/feature-export.js +242 -0
  27. package/src/commands/gate-check.js +8 -3
  28. package/src/commands/git-guard.js +58 -0
  29. package/src/commands/harness-gate.js +120 -0
  30. package/src/commands/harness-status.js +157 -0
  31. package/src/commands/harness.js +18 -1
  32. package/src/commands/live.js +120 -115
  33. package/src/commands/parallel-doctor.js +2 -1
  34. package/src/commands/pulse-update.js +2 -2
  35. package/src/commands/scan-project.js +12 -2
  36. package/src/commands/self-implement-loop.js +305 -5
  37. package/src/commands/workflow-next.js +477 -425
  38. package/src/constants.js +21 -11
  39. package/src/context-search.js +3 -0
  40. package/src/doctor.js +24 -8
  41. package/src/dossier/schema.js +4 -3
  42. package/src/harness/active-contract.js +41 -0
  43. package/src/harness/attempt-artifacts.js +95 -0
  44. package/src/harness/budget-guard.js +127 -0
  45. package/src/harness/circuit-breaker.js +7 -0
  46. package/src/harness/contract-schema.js +324 -0
  47. package/src/harness/criteria-runner.js +136 -0
  48. package/src/harness/git-baseline.js +204 -0
  49. package/src/harness/glob-match.js +126 -0
  50. package/src/harness/guard-events.js +71 -0
  51. package/src/harness/human-gate.js +182 -0
  52. package/src/harness/scope-guard.js +115 -0
  53. package/src/i18n/messages/en.js +24 -21
  54. package/src/i18n/messages/es.js +11 -9
  55. package/src/i18n/messages/fr.js +11 -9
  56. package/src/i18n/messages/pt-BR.js +24 -21
  57. package/src/lib/briefing-refiner/apply-feedback.js +134 -0
  58. package/src/lib/briefing-refiner/briefing-paths.js +41 -0
  59. package/src/lib/briefing-refiner/briefing-registry.js +204 -0
  60. package/src/lib/briefing-refiner/briefing-sections.js +110 -0
  61. package/src/lib/briefing-refiner/feedback-schema.js +122 -0
  62. package/src/lib/briefing-refiner/refinement-report.js +39 -0
  63. package/src/lib/briefing-refiner/review-html.js +230 -0
  64. package/src/lib/dev-resume.js +94 -45
  65. package/src/parser.js +8 -5
  66. package/src/preflight-engine.js +88 -84
  67. package/src/runtime-store.js +2 -0
  68. package/src/sandbox.js +17 -3
  69. package/template/.aioson/agents/analyst.md +27 -23
  70. package/template/.aioson/agents/architect.md +7 -3
  71. package/template/.aioson/agents/briefing-refiner.md +121 -0
  72. package/template/.aioson/agents/briefing.md +83 -74
  73. package/template/.aioson/agents/committer.md +8 -0
  74. package/template/.aioson/agents/copywriter.md +19 -7
  75. package/template/.aioson/agents/design-hybrid-forge.md +16 -5
  76. package/template/.aioson/agents/dev.md +68 -66
  77. package/template/.aioson/agents/deyvin.md +97 -90
  78. package/template/.aioson/agents/discover.md +2 -2
  79. package/template/.aioson/agents/discovery-design-doc.md +34 -30
  80. package/template/.aioson/agents/genome.md +82 -71
  81. package/template/.aioson/agents/neo.md +11 -3
  82. package/template/.aioson/agents/orache.md +10 -0
  83. package/template/.aioson/agents/orchestrator.md +68 -68
  84. package/template/.aioson/agents/pentester.md +15 -6
  85. package/template/.aioson/agents/pm.md +30 -25
  86. package/template/.aioson/agents/product.md +108 -108
  87. package/template/.aioson/agents/profiler-enricher.md +10 -0
  88. package/template/.aioson/agents/profiler-forge.md +10 -0
  89. package/template/.aioson/agents/profiler-researcher.md +11 -0
  90. package/template/.aioson/agents/qa.md +28 -20
  91. package/template/.aioson/agents/scope-check.md +176 -164
  92. package/template/.aioson/agents/setup.md +11 -1
  93. package/template/.aioson/agents/sheldon.md +38 -38
  94. package/template/.aioson/agents/site-forge.md +15 -6
  95. package/template/.aioson/agents/squad.md +12 -0
  96. package/template/.aioson/agents/tester.md +209 -209
  97. package/template/.aioson/agents/ux-ui.md +2 -2
  98. package/template/.aioson/agents/validator.md +10 -2
  99. package/template/.aioson/config.md +31 -28
  100. package/template/.aioson/docs/autopilot-handoff.md +46 -0
  101. package/template/.aioson/docs/dossier/agent-templates.md +191 -0
  102. package/template/.aioson/docs/dossier/schema.md +218 -0
  103. package/template/.claude/commands/aioson/agent/briefing-refiner.md +17 -0
  104. package/template/AGENTS.md +50 -47
  105. package/template/CLAUDE.md +29 -27
@@ -1,44 +1,75 @@
1
- # @discovery-design-doc — Discovery e design doc em uma sessão combinada
2
-
3
- > **Para quem é:** quem tem uma ideia ou request e quer clareza completa problema, ambiguidades, próximos passos antes de qualquer implementação.
4
- > **Tempo de leitura:** 3 min.
5
- > **O que você vai sair sabendo:**
6
- > - Quando usar este agente vs usar `@analyst` e `@architect` separados
7
- > - O que o design doc entrega e como ele guia os próximos agentes
8
-
9
- ---
10
-
11
- ## Para que serve
12
-
13
- Às vezes um request chega vago: um ticket, uma ideia de feature, uma anotação de reunião. Antes de abrir `@product` e percorrer o ciclo completo, você quer **normalizar o problema, identificar o que já está definido, e saber o que ainda está aberto** — tudo em uma sessão.
14
-
15
- O `@discovery-design-doc` faz exatamente isso: transforma um request bruto num design doc enxuto e num documento de readiness que diz ao próximo agente "aqui está o que você precisa, e aqui está o que ainda falta".
16
-
17
- É um atalho para quando o ciclo completo seria pesado demais ou para quando você quer um checkpoint antes de decidir qual agente acionar.
18
-
19
- ---
20
-
21
- ## Quando invocar
22
-
23
- - Você tem um ticket, briefing ou ideia e quer transformar em documento estruturado rapidamente
24
- - Você quer saber o que está bem definido vs o que ainda é ambíguo antes de acionar `@product` ou `@dev`
25
- - Você está em modo exploratório e quer um checkpoint de clareza sem comprometer o workflow completo
26
-
27
- ---
28
-
29
- ## Quando NÃO invocar
30
-
31
- - A feature já tem spec e PRD definidos — acione diretamente `@dev` ou `@qa`
32
- - Você precisa de discovery profundo com mapeamento de domínio — use `@analyst` dentro do workflow SMALL/MEDIUM
33
- - Você quer um briefing pré-PRD com frameworks de framing — use `@briefing`
34
-
35
- ---
36
-
37
- ## Diálogo típico
38
-
39
- ```
40
- Você > @discovery-design-doc
41
- Quero adicionar modo offline ao app mobile para que usuários possam
1
+ # @discovery-design-doc — Discovery, readiness e design doc
2
+
3
+ > **Para quem é:** quem precisa transformar uma ideia vaga em clareza inicial ou consolidar PRD, requisitos e arquitetura num contrato técnico antes do `@dev`.
4
+ > **Tempo de leitura:** 3 min.
5
+ > **O que você vai sair sabendo:**
6
+ > - Os dois modos corretos de uso: exploratório e pré-dev
7
+ > - Por que ele pode aparecer depois de `@analyst` e `@architect` no workflow
8
+ > - O que o design doc e o readiness entregam para os próximos agentes
9
+
10
+ ---
11
+
12
+ ## Para que serve
13
+
14
+ O `@discovery-design-doc` tem dois usos válidos:
15
+
16
+ - **Modo exploratório:** quando um request chega vago, como ticket, ideia de feature ou anotação de reunião. Ele normaliza o problema, identifica ambiguidades e recomenda o próximo agente.
17
+ - **Modo pré-dev no workflow:** quando o projeto SMALL/MEDIUM passou por `@analyst` e `@architect`. Nesse caso, ele consolida PRD, requisitos, spec e arquitetura num `design-doc` vivo e num `readiness` com plano técnico concreto para o `@dev`.
18
+
19
+ Ou seja: ele pode ser um atalho antes do ciclo completo **ou** uma etapa de segurança entre arquitetura e implementação. No workflow atual, esse segundo uso é esperado para SMALL/MEDIUM.
20
+
21
+ ---
22
+
23
+ ## Quando invocar
24
+
25
+ - Você tem um ticket, briefing ou ideia e quer transformar em documento estruturado rapidamente
26
+ - Você quer saber o que está bem definido vs o que ainda é ambíguo antes de acionar `@product` ou `@dev`
27
+ - Você está em modo exploratório e quer um checkpoint de clareza sem comprometer o workflow completo
28
+ - Você está no workflow SMALL/MEDIUM após `@architect` e precisa gerar o contrato técnico pré-dev
29
+ - O `@dev` precisa de caminhos, módulos, decisões de reuso e riscos de tamanho de arquivo antes de editar código
30
+
31
+ ---
32
+
33
+ ## Quando NÃO invocar
34
+
35
+ - Para refazer discovery amplo quando PRD, requirements, spec e architecture já estão claros
36
+ - Você precisa de discovery profundo com mapeamento de domínio — use `@analyst` dentro do workflow SMALL/MEDIUM
37
+ - Você quer um briefing pré-PRD com frameworks de framing — use `@briefing`
38
+ - A tarefa é MICRO e já possui um plano simples suficiente para `@dev`
39
+
40
+ > Ter PRD/spec definidos **não impede** o uso deste agente. No workflow SMALL/MEDIUM, eles são justamente entradas para o `design-doc` e o `readiness` pré-dev.
41
+
42
+ ---
43
+
44
+ ## Onde entra no workflow
45
+
46
+ Fluxo exploratório manual:
47
+
48
+ ```
49
+ @setup -> @discovery-design-doc -> próximo agente recomendado
50
+ ```
51
+
52
+ Fluxo SMALL atual:
53
+
54
+ ```
55
+ @product -> @analyst -> @scope-check(pre-dev) -> @architect -> @discovery-design-doc -> @dev -> @qa
56
+ ```
57
+
58
+ Fluxo MEDIUM atual:
59
+
60
+ ```
61
+ @product -> @analyst -> @architect -> @discovery-design-doc -> @ux-ui -> @pm -> @orchestrator -> @scope-check(pre-dev) -> @dev -> @qa
62
+ ```
63
+
64
+ O papel dele no meio da feature não é substituir `@analyst` nem `@architect`. Ele transforma esses artefatos em um pacote executável para implementação.
65
+
66
+ ---
67
+
68
+ ## Diálogo típico — modo exploratório
69
+
70
+ ```
71
+ Você > @discovery-design-doc
72
+ Quero adicionar modo offline ao app mobile para que usuários possam
42
73
  ver conteúdos sem internet.
43
74
 
44
75
  @discovery-design-doc > Normalizando request...
@@ -56,36 +87,64 @@ Você > @discovery-design-doc
56
87
 
57
88
  @discovery-design-doc > Design doc criado em: .aioson/context/design-doc.md
58
89
  Readiness: MÉDIO — 3 ambiguidades precisam de decisão.
59
- Recomendação: @product para fechar escopo antes de @dev.
60
- ```
61
-
62
- ---
63
-
64
- ## Saídas em disco
65
-
66
- ```
67
- .aioson/context/design-doc.md ← design doc enxuto (vivo, atualizado por agentes futuros)
68
- .aioson/context/readiness.md status de clareza + ambiguidades abertas
69
- ```
70
-
71
- ---
72
-
73
- ## Como ele lê seu projeto
74
-
75
- - `.aioson/context/project.context.md`
76
- - Artefatos existentes: `discovery.md`, `architecture.md`, `prd.md`, `spec.md` (quando relevantes)
77
- - Input direto: briefing, ticket, screenshots, arquivos que você fornecer
78
-
79
- ---
80
-
81
- ## Handoff típico
82
-
83
- - **Vem de:** pedido direto com um request vago ou ticket
84
- - **Vai para:** o agente recomendado no `readiness.md` — tipicamente `@product` (para fechar escopo) ou `@dev` (quando readiness é ALTO)
85
-
86
- ---
87
-
88
- ## Próximo passo
89
-
90
- - Para framing pré-PRD com discovery frameworks: ficha `briefing.md` (em construção)
91
- - Para ciclo completo: [Primeiro projeto do zero](../2-comecar/primeiro-projeto.md)
90
+ Recomendação: @product para fechar escopo antes de @dev.
91
+ ```
92
+
93
+ ---
94
+
95
+ ## Diálogo típico — modo pré-dev
96
+
97
+ ```
98
+ Você > @discovery-design-doc
99
+ Consolidar a feature checkout depois da arquitetura.
100
+
101
+ @discovery-design-doc > Lendo PRD, requirements, spec e architecture...
102
+ Escopo: checkout com pagamento único
103
+ Readiness: ready_with_warnings
104
+
105
+ Plano técnico:
106
+ - Reusar módulo de pedidos existente
107
+ - Criar service de pagamento em src/lib/payments/
108
+ - Evitar alterar fluxo de carrinho fora do checkout
109
+ - Risco: controller pode passar de 500 linhas; dividir em service + validator
110
+
111
+ @discovery-design-doc > Design doc criado em: .aioson/context/design-doc-checkout.md
112
+ Readiness criado em: .aioson/context/readiness-checkout.md
113
+ Recomendação: seguir para @dev quando Gate B estiver aprovado.
114
+ ```
115
+
116
+ ---
117
+
118
+ ## Saídas em disco
119
+
120
+ ```
121
+ .aioson/context/design-doc.md ← design doc do projeto
122
+ .aioson/context/readiness.md ← readiness do projeto
123
+ .aioson/context/design-doc-{slug}.md ← design doc da feature
124
+ .aioson/context/readiness-{slug}.md ← readiness da feature
125
+ ```
126
+
127
+ ---
128
+
129
+ ## Como ele lê seu projeto
130
+
131
+ - `.aioson/context/project.context.md`
132
+ - Artefatos existentes: `prd.md`, `prd-{slug}.md`, `requirements-{slug}.md`, `spec.md`, `spec-{slug}.md`, `discovery.md`, `architecture.md` (quando relevantes)
133
+ - Design docs existentes: `design-doc.md`, `design-doc-{slug}.md`, `readiness.md`, `readiness-{slug}.md`
134
+ - `.aioson/context/project-map.md` quando existir, para resolver caminhos canônicos
135
+ - Input direto: briefing, ticket, screenshots, arquivos que você fornecer
136
+
137
+ ---
138
+
139
+ ## Handoff típico
140
+
141
+ - **Vem de:** pedido direto com um request vago ou ticket
142
+ - **Também vem de:** `@architect` no workflow SMALL/MEDIUM, como consolidação pré-dev
143
+ - **Vai para:** o agente recomendado no `readiness.md` — tipicamente `@product` quando o escopo ainda está aberto, ou `@dev` quando o readiness está pronto
144
+
145
+ ---
146
+
147
+ ## Próximo passo
148
+
149
+ - Para framing pré-PRD com discovery frameworks: ficha `briefing.md` (em construção)
150
+ - Para ciclo completo: [Primeiro projeto do zero](../2-comecar/primeiro-projeto.md)
@@ -0,0 +1,65 @@
1
+ # @scope-check
2
+
3
+ ## Para que serve
4
+
5
+ O `@scope-check` valida se intenção, plano e artefatos estão alinhados antes de continuar para a implementação.
6
+ Ele evita drift de escopo: antes de codar, confere se tudo que foi decidido está presente no PRD/especificações e no plano aprovado; após mudanças relevantes, confirma se as correções alteraram contrato, comportamento ou escopo.
7
+
8
+ ## Quando usar
9
+
10
+ - Antes de `@dev` em fluxos **SMALL** e **MEDIUM** (pré-dev).
11
+ - Após `@dev` e/ou correções de `@qa`/`@tester`/`@pentester`, quando houve mudança material de código ou comportamento.
12
+ - Em reaberturas de feature com risco de quebra de contrato entre o que foi planejado e o que está sendo entregue.
13
+
14
+ ## Modos
15
+
16
+ - `pre-dev` (padrão): valida intenção e plano antes da primeira implementação.
17
+ - `post-dev` (opcional): valida se o diff entregue bate com o plano aprovado.
18
+ - `post-fix` (opcional): valida se correções mantiveram o escopo e contrato.
19
+ - `final` (opcional): reconcilia intenção, plano e resultado de fechamento.
20
+
21
+ ## Arquivos de entrada
22
+
23
+ - `project.context.md`
24
+ - `prd.md` ou `prd-{slug}.md`
25
+ - `requirements-{slug}.md`
26
+ - `spec-{slug}.md`
27
+ - `architecture.md`
28
+ - `design-doc.md`, `implementation-plan-{slug}.md`, `dev-state.md` (quando existirem)
29
+ - `security-findings-{slug}.json` e outros artefatos de revisão (quando aplicável)
30
+
31
+ ## Saída esperada
32
+
33
+ Cria/atualiza:
34
+
35
+ - `.aioson/context/scope-check.md` (modo projeto)
36
+ - `.aioson/context/scope-check-{slug}.md` (modo feature)
37
+
38
+ O relatório deve indicar:
39
+
40
+ - `status`: `approved | patched | needs-product | needs-analyst-redo | needs-architecture | needs-dev-fix | needs-qa-recheck | blocked`
41
+ - `next_agent`
42
+ - principais divergências encontradas e impacto
43
+ - decisão objetiva de continuação ou bloqueio
44
+
45
+ ## Regras duras
46
+
47
+ - Não aprova entrega quando o que foi implementado diverge de requisito, AC ou decisão já aprovada.
48
+ - Não inventa arquivos ou comportamentos não rastreados por artefatos.
49
+ - Não aprova por “o código funciona” se houver divergência funcional relevante.
50
+ - Em MICRO, mantém o relatório mais leve; em SMALL/MEDIUM pode ser mais detalhado.
51
+
52
+ ## Handoff padrão
53
+
54
+ - `approved` ou `patched`: segue para o próximo agente do fluxo.
55
+ - `needs-*`: interrompe o fluxo e encaminha com pedido explícito de correção no dono do estágio anterior.
56
+ - `blocked`: pede uma pergunta objetiva de decisão ao usuário/owner.
57
+
58
+ ## Comando de ativação
59
+
60
+ ```
61
+ /aioson:agent:scope-check
62
+ ```
63
+
64
+ No modo CLI, use também o contexto/artefatos corretos para fechar o contrato antes de avançar para `@dev`/`@qa`.
65
+
@@ -28,6 +28,7 @@
28
28
  |---|---|
29
29
  | [fluxo-artefatos.md](./fluxo-artefatos.md) | Mapa de quem cria o quê: @product → @sheldon → @analyst → @dev → @qa |
30
30
  | [feature-archive.md](./feature-archive.md) | Arquivamento automático de features concluídas via feature:close |
31
+ | [feature-export.md](./feature-export.md) | Exportar (copiar) todos os artefatos de uma feature para um local limpo — entregável portátil |
31
32
  | [memoria-e-contexto.md](./memoria-e-contexto.md) | Memória persistente, context cache, context search, context monitor — guia consolidado |
32
33
  | [runtime-observability.md](./runtime-observability.md) | Telemetria SQLite, dashboard, runtime:emit, agent:done |
33
34
  | [hooks-session-guard.md](./hooks-session-guard.md) | Hooks automáticos de visibilidade no dashboard para Claude Code, Antigravity e Codex |
@@ -222,6 +222,7 @@ Scripts determinísticos que movem verificações de estado, validação de arte
222
222
  | `state:save` | Salva ponto de continuação em `dev-state.md` (fase, status, spec-version, histórico) | Durante `@dev` ao fim de cada fase ou antes de encerrar |
223
223
  | `feature:close` | Fecha feature com verdict PASS/FAIL: atualiza spec, features.md, project-pulse.md e dispara archivamento automático | Após QA sign-off — chamado pelo `@qa` automaticamente |
224
224
  | `feature:archive` | Move artefatos de uma feature `done` para `.aioson/context/done/{slug}/` e atualiza o manifest | Chamado pelo `feature:close` automaticamente; também disponível para retroativo com `--dry-run` e `--restore` |
225
+ | `feature:export` | **Copia** todos os artefatos de uma feature para um `--out` limpo, sem mexer na origem; gera `INDEX.md` | Exportar specs para analisar fora, entregar a cliente, ou usar o AIOSON só como gerador de specs. Veja [feature-export.md](./feature-export.md) |
225
226
  | `gate:check` | Valida pré-requisitos e artefatos de um phase gate (A/B/C/D); retorna PASS ou BLOCKED | Antes de avançar para o próximo agente |
226
227
  | `artifact:validate` | Verifica a cadeia completa de artefatos de uma feature (PRD → spec → plano → conformance) | A qualquer momento para checar completude |
227
228
  | `workflow:execute` | Monta e executa o plano de agentes baseado na classificação; aceita `--dry-run` e `--start-from` | Para orquestrar features sem o dashboard |
@@ -521,8 +522,8 @@ Importante:
521
522
  - `scan:project` sozinho nao gera `discovery.md`
522
523
  - `scan:project` nunca gera `architecture.md`
523
524
  - se `discovery.md` e `skeleton-system.md` ja existirem e voce rodar com `--with-llm`, o scanner agora entra em modo de atualizacao por padrao: usa os arquivos atuais como memoria base, gera a nova versao consolidada e cria backup automatico em `.aioson/backups/` antes de sobrescrever
524
- - em projetos SMALL brownfield, o fluxo tipico depois do scan completo e `@analyst` -> `@scope-check` -> `@architect` -> `@dev`
525
- - sem API LLM configurada, o fluxo local tambem e valido: `scan:project --folder=...` -> `@analyst` no seu Codex/Claude -> `@scope-check` -> `@architect` -> `@dev`
525
+ - em projetos SMALL brownfield, o fluxo tipico depois do scan completo e `@analyst` -> `@scope-check` -> `@architect` -> `@dev`
526
+ - sem API LLM configurada, o fluxo local tambem e valido: `scan:project --folder=...` -> `@analyst` no seu Codex/Claude -> `@scope-check` -> `@architect` -> `@dev`
526
527
 
527
528
  O parâmetro `--folder` agora é obrigatório. Ele define quais pastas do projeto devem ganhar um mapa completo com pastas e arquivos. Você pode informar uma pasta ou várias separadas por vírgula.
528
529
 
@@ -574,8 +575,8 @@ Quando usar cada modo:
574
575
 
575
576
  Fluxos recomendados:
576
577
 
577
- - **Com API no aioson:** `scan:project --folder=src --with-llm --provider=...` -> `@analyst` -> `@scope-check` -> `@architect` -> `@dev`
578
- - **Sem API no aioson:** `scan:project --folder=src` -> abrir seu AI CLI -> `@analyst` -> `@scope-check` -> `@architect` -> `@dev`
578
+ - **Com API no aioson:** `scan:project --folder=src --with-llm --provider=...` -> `@analyst` -> `@scope-check` -> `@architect` -> `@dev`
579
+ - **Sem API no aioson:** `scan:project --folder=src` -> abrir seu AI CLI -> `@analyst` -> `@scope-check` -> `@architect` -> `@dev`
579
580
  - **Com contexto mínimo para tarefa específica:** `scan:project --folder=src` -> `context:pack --agent=dev --goal="..." --module=src`
580
581
  - Se o seu cliente nao entender `@analyst`, gere um prompt pronto com `aioson agent:prompt analyst --tool=codex` ou troque `--tool` para o cliente correto
581
582
 
@@ -194,6 +194,7 @@ aioson feature:archive . --feature=checkout --json
194
194
 
195
195
  ## Veja também
196
196
 
197
+ - [Feature Export](./feature-export.md) — **copiar** (não mover) os artefatos para um local limpo, sem mexer na origem
197
198
  - [Feature Dossier](./feature-dossier.md) — o que o dossier carrega *antes* de arquivar a feature
198
199
  - [Continuidade entre sessões](../3-receitas/continuidade-entre-sessoes.md) — retomar feature interrompida com dossier + dev-resume
199
200
  - [Fluxo de artefatos](./fluxo-artefatos.md) — mapa de quem cria o quê e quem consome
@@ -0,0 +1,155 @@
1
+ # Feature Export — Exportar artefatos para um local limpo
2
+
3
+ O `feature:export` **copia** todos os artefatos de uma feature para um diretório de saída que você escolhe, deixando a árvore original intacta.
4
+
5
+ É o irmão não-destrutivo do [`feature:archive`](./feature-archive.md): em vez de **mover** os arquivos para `.aioson/context/done/{slug}/`, ele **copia** para um `--out` arbitrário. O objetivo é transformar a saída em markdown do AIOSON num entregável portátil — para analisar as specs fora do projeto, entregar a um cliente, ou usar o AIOSON apenas como gerador de specs.
6
+
7
+ ---
8
+
9
+ ## Como funciona
10
+
11
+ O comando reutiliza exatamente a mesma enumeração de artefatos do `feature:archive` (incluindo o guard contra colisão de slugs parecidos), mas:
12
+
13
+ - **Copia** em vez de mover — a árvore de origem nunca é alterada.
14
+ - Escreve no `--out` que você indicar (ou em `<projeto>/{slug}-export` por padrão).
15
+ - Funciona tanto para features **ativas** (artefatos no root + diretórios por slug) quanto para features **já arquivadas** (`context/done/{slug}/`).
16
+ - Gera um `INDEX.md` listando tudo que foi exportado e a origem de cada arquivo.
17
+
18
+ ```bash
19
+ # Exporta a feature checkout para ./checkout-export/ (mirrored + INDEX.md)
20
+ aioson feature:export . --feature=checkout
21
+
22
+ # Destino customizado
23
+ aioson feature:export . --feature=checkout --out=../checkout-specs
24
+
25
+ # Tudo num diretório só (sem subpastas), nomes prefixados por label
26
+ aioson feature:export . --feature=checkout --flatten
27
+
28
+ # Sem o INDEX.md
29
+ aioson feature:export . --feature=checkout --no-index
30
+
31
+ # Ver o que seria copiado sem escrever nada
32
+ aioson feature:export . --feature=checkout --dry-run
33
+ ```
34
+
35
+ ---
36
+
37
+ ## O que é copiado
38
+
39
+ A mesma superfície que o `feature:archive` identifica:
40
+
41
+ - Arquivos no **root** de `.aioson/context/` no padrão `*-{slug}.{md,yaml,yml,json}` (ex.: `prd-checkout.md`, `spec-checkout.md`, `requirements-checkout.md`, `conformance-checkout.yaml`, `security-findings-checkout.json`).
42
+ - Diretórios por slug: `context/features/{slug}/` (dossier), `.aioson/plans/{slug}/`, `.aioson/briefings/{slug}/`.
43
+ - `context/done/{slug}/` quando a feature já foi arquivada (sempre incluído).
44
+
45
+ **O que nunca é copiado:** arquivos globais (`project.context.md`, `project-pulse.md`, `features.md`, etc.) e arquivos de outra feature — o guard contra colisão garante que `checkout-v2` nunca vaze numa exportação de `checkout`.
46
+
47
+ ---
48
+
49
+ ## Estrutura de saída
50
+
51
+ ### Mirrored (padrão)
52
+
53
+ ```
54
+ checkout-export/
55
+ ├── INDEX.md ← manifesto gerado
56
+ ├── prd-checkout.md ← arquivos do root
57
+ ├── spec-checkout.md
58
+ ├── requirements-checkout.md
59
+ ├── dossier/
60
+ │ └── dossier.md
61
+ ├── plans/
62
+ │ ├── manifest.md
63
+ │ └── plan-phase-1.md
64
+ ├── briefings/
65
+ │ └── briefing.md
66
+ └── done/ ← presente se a feature já foi arquivada
67
+ └── ...
68
+ ```
69
+
70
+ ### Flatten (`--flatten`)
71
+
72
+ Tudo num nível só. Arquivos do root mantêm o nome; arquivos aninhados viram `label-...-arquivo.ext` (livre de colisão por construção):
73
+
74
+ ```
75
+ checkout-export/
76
+ ├── INDEX.md
77
+ ├── prd-checkout.md
78
+ ├── spec-checkout.md
79
+ ├── dossier-dossier.md
80
+ ├── plans-manifest.md
81
+ ├── plans-plan-phase-1.md
82
+ └── briefings-briefing.md
83
+ ```
84
+
85
+ ---
86
+
87
+ ## O INDEX.md
88
+
89
+ Gerado por padrão (desabilite com `--no-index`). Lista cada arquivo exportado, o grupo de origem e o caminho fonte:
90
+
91
+ ```markdown
92
+ # Feature Export — checkout
93
+
94
+ > 7 file(s) copied from AIOSON on 2026-06-08.
95
+ > Non-destructive snapshot — the original artefacts were left untouched.
96
+
97
+ | group | file | source |
98
+ |-------|------|--------|
99
+ | context | prd-checkout.md | .aioson/context/prd-checkout.md |
100
+ | dossier | dossier/dossier.md | .aioson/context/features/checkout/dossier.md |
101
+ | plans | plans/manifest.md | .aioson/plans/checkout/manifest.md |
102
+ ```
103
+
104
+ ---
105
+
106
+ ## Opções
107
+
108
+ | Opção | Padrão | Descrição |
109
+ |-------|--------|-----------|
110
+ | `--feature=<slug>` | — | Identificador da feature (obrigatório). |
111
+ | `--out=<dir>` | `<projeto>/{slug}-export` | Diretório de destino. |
112
+ | `--flatten` | mirrored | Achata a estrutura num nível só. |
113
+ | `--no-index` | gera INDEX | Não escreve o `INDEX.md`. |
114
+ | `--dry-run` | — | Mostra o que seria copiado sem escrever nada. |
115
+ | `--json` | — | Saída JSON estruturada (`outDir`, `count`, `copied`, `index`). |
116
+
117
+ ---
118
+
119
+ ## Saída JSON
120
+
121
+ ```bash
122
+ aioson feature:export . --feature=checkout --json
123
+ ```
124
+
125
+ ```json
126
+ {
127
+ "ok": true,
128
+ "slug": "checkout",
129
+ "outDir": "checkout-export",
130
+ "flatten": false,
131
+ "count": 7,
132
+ "copied": ["prd-checkout.md", "spec-checkout.md", "dossier/dossier.md"],
133
+ "index": true
134
+ }
135
+ ```
136
+
137
+ ---
138
+
139
+ ## Diferenças em relação ao feature:archive
140
+
141
+ | | `feature:archive` | `feature:export` |
142
+ |---|---|---|
143
+ | Operação | **move** (`fs.rename`) | **copia** (não-destrutivo) |
144
+ | Destino | `.aioson/context/done/{slug}/` (dentro do projeto) | `--out` arbitrário |
145
+ | Quem aciona | agentes (via `feature:close`) | o usuário |
146
+ | Guard de status | exige `done` (ou `--force`) | nenhum — exporta feature em progresso também |
147
+ | Efeito na origem | remove do root | intacta |
148
+
149
+ ---
150
+
151
+ ## Veja também
152
+
153
+ - [Feature Archive](./feature-archive.md) — limpeza automática do contexto (move, não copia)
154
+ - [Feature Dossier](./feature-dossier.md) — o que o dossier consolida antes de exportar/arquivar
155
+ - [Fluxo de artefatos](./fluxo-artefatos.md) — mapa de quem cria o quê
package/docs/pt/README.md CHANGED
@@ -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](./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
 
@@ -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/` + 28 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
 
@@ -1,6 +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).
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.
4
6
 
5
7
  > Quando usar cada agente, o que ele entrega e como ativá-lo.
6
8
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jaimevalasek/aioson",
3
- "version": "1.21.7",
3
+ "version": "1.22.0",
4
4
  "description": "AI operating framework for hyper-personalized software.",
5
5
  "keywords": [
6
6
  "ai",
@@ -7,11 +7,16 @@ const { isCanonicalAgent } = require('./dossier/schema');
7
7
 
8
8
  const MANIFESTS_RELATIVE_DIR = '.aioson/agents/manifests';
9
9
  const ALLOWED_AUTONOMY_MODES = new Set(['guarded', 'trusted', 'headless']);
10
+ // Canonical scope-check modes. Kept in sync with SCOPE_CHECK_MODES in
11
+ // src/commands/workflow-next.js and src/commands/agents.js — this is the read
12
+ // path that validates the manifest's declared check_modes so the field cannot
13
+ // silently drift to a mode the router does not understand.
14
+ const ALLOWED_CHECK_MODES = new Set(['pre-dev', 'post-dev', 'post-fix', 'final']);
10
15
 
11
16
  // SF-project-16: every field that influences autonomy is validated on read.
12
- // Unknown fields are passed through (forward-compat), but autonomy_modes is
13
- // filtered to ALLOWED_AUTONOMY_MODES. Non-canonical agent ids are refused
14
- // before the file is even opened.
17
+ // Unknown fields are passed through (forward-compat), but autonomy_modes and
18
+ // check_modes are filtered to their allowed sets. Non-canonical agent ids are
19
+ // refused before the file is even opened.
15
20
  function sanitizeManifest(raw) {
16
21
  if (!raw || typeof raw !== 'object') return null;
17
22
  const out = { ...raw };
@@ -20,6 +25,10 @@ function sanitizeManifest(raw) {
20
25
  .filter((mode) => typeof mode === 'string' && ALLOWED_AUTONOMY_MODES.has(mode));
21
26
  out.autonomy_modes = filtered;
22
27
  }
28
+ if (Array.isArray(raw.check_modes)) {
29
+ out.check_modes = raw.check_modes
30
+ .filter((mode) => typeof mode === 'string' && ALLOWED_CHECK_MODES.has(mode));
31
+ }
23
32
  return out;
24
33
  }
25
34
 
@@ -78,6 +87,8 @@ function buildAgentCapabilitySummary(manifest, tool) {
78
87
 
79
88
  module.exports = {
80
89
  MANIFESTS_RELATIVE_DIR,
90
+ ALLOWED_AUTONOMY_MODES,
91
+ ALLOWED_CHECK_MODES,
81
92
  readAgentManifest,
82
93
  resolveAgentCapabilities,
83
94
  supportsTool,
package/src/agents.js CHANGED
@@ -29,15 +29,16 @@ function buildAgentPrompt(agent, tool, options = {}) {
29
29
  const safeTool = String(tool || 'codex').toLowerCase();
30
30
  const instructionPath = options.instructionPath || agent.path;
31
31
  const targetDir = options.targetDir ? String(options.targetDir) : '.';
32
- const interactionLanguage = String(options.interactionLanguage || 'en');
33
- const autonomyMode = String(options.autonomyMode || '').trim();
34
- const capabilitySummary = String(options.capabilitySummary || '').trim();
35
- const activationContext = String(options.activationContext || '').trim();
36
- const dependsOn = Array.isArray(options.dependsOn) ? options.dependsOn : agent.dependsOn;
37
- const dependencyText =
38
- dependsOn.length > 0
39
- ? `Check required context files first: ${dependsOn.join(', ')}.`
40
- : 'No prerequisite context files are required.';
32
+ const interactionLanguage = String(options.interactionLanguage || 'en');
33
+ const autonomyMode = String(options.autonomyMode || '').trim();
34
+ const autoHandoff = options.autoHandoff === true;
35
+ const capabilitySummary = String(options.capabilitySummary || '').trim();
36
+ const activationContext = String(options.activationContext || '').trim();
37
+ const dependsOn = Array.isArray(options.dependsOn) ? options.dependsOn : agent.dependsOn;
38
+ const dependencyText =
39
+ dependsOn.length > 0
40
+ ? `Check required context files first: ${dependsOn.join(', ')}.`
41
+ : 'No prerequisite context files are required.';
41
42
  const activationBlock = activationContext
42
43
  ? [
43
44
  '',
@@ -66,19 +67,19 @@ function buildAgentPrompt(agent, tool, options = {}) {
66
67
  '',
67
68
  `**Language boundary:** Agent instructions are canonical in English. All user-facing communication must be in ${interactionLanguage}.`,
68
69
  '',
69
- `**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.`,
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, never past the `@dev` handoff.' : ''}`,
70
71
  ].join('\n');
71
72
 
72
- if (safeTool === 'claude') {
73
- return `Read ${instructionPath} and execute ${agent.command}. ${dependencyText}${activationBlock}\n\nWrite output to ${agent.output}.${autonomyBlock}${lifecycleBlock}`;
74
- }
75
-
76
- if (safeTool === 'opencode') {
77
- return `Use agent "${agent.id}" from ${instructionPath}. ${dependencyText}${activationBlock}\n\nSave output to ${agent.output}.${autonomyBlock}${lifecycleBlock}`;
78
- }
79
-
80
- return `Read AGENTS.md and execute ${agent.command} using ${instructionPath}. ${dependencyText}${activationBlock}\n\nSave output to ${agent.output}.${autonomyBlock}${lifecycleBlock}`;
81
- }
73
+ if (safeTool === 'claude') {
74
+ return `Read ${instructionPath} and execute ${agent.command}. ${dependencyText}${activationBlock}\n\nWrite output to ${agent.output}.${autonomyBlock}${lifecycleBlock}`;
75
+ }
76
+
77
+ if (safeTool === 'opencode') {
78
+ return `Use agent "${agent.id}" from ${instructionPath}. ${dependencyText}${activationBlock}\n\nSave output to ${agent.output}.${autonomyBlock}${lifecycleBlock}`;
79
+ }
80
+
81
+ return `Read AGENTS.md and execute ${agent.command} using ${instructionPath}. ${dependencyText}${activationBlock}\n\nSave output to ${agent.output}.${autonomyBlock}${lifecycleBlock}`;
82
+ }
82
83
 
83
84
  module.exports = {
84
85
  normalizeAgentName,