@jaimevalasek/aioson 1.5.1 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/README.md +6 -0
  2. package/docs/design-previews/aurora-command-ui-website.html +884 -0
  3. package/docs/design-previews/aurora-command-ui.html +682 -0
  4. package/docs/design-previews/bold-editorial-ui-website.html +658 -0
  5. package/docs/design-previews/bold-editorial-ui.html +717 -0
  6. package/docs/design-previews/clean-saas-ui-website.html +1202 -0
  7. package/docs/design-previews/clean-saas-ui.html +549 -0
  8. package/docs/design-previews/cognitive-core-ui-website.html +1009 -0
  9. package/docs/design-previews/cognitive-core-ui.html +463 -0
  10. package/docs/design-previews/glassmorphism-ui-website.html +572 -0
  11. package/docs/design-previews/glassmorphism-ui.html +886 -0
  12. package/docs/design-previews/index.html +699 -0
  13. package/docs/design-previews/interface-design-website.html +1187 -0
  14. package/docs/design-previews/interface-design.html +513 -0
  15. package/docs/design-previews/neo-brutalist-ui-website.html +621 -0
  16. package/docs/design-previews/neo-brutalist-ui.html +797 -0
  17. package/docs/design-previews/premium-command-center-ui-website.html +1217 -0
  18. package/docs/design-previews/premium-command-center-ui.html +552 -0
  19. package/docs/design-previews/warm-craft-ui-website.html +684 -0
  20. package/docs/design-previews/warm-craft-ui.html +739 -0
  21. package/docs/en/cli-reference.md +20 -9
  22. package/docs/pt/README.md +7 -0
  23. package/docs/pt/agent-sharding.md +132 -0
  24. package/docs/pt/agentes.md +8 -2
  25. package/docs/pt/busca-de-contexto.md +129 -0
  26. package/docs/pt/cache-de-contexto.md +156 -0
  27. package/docs/pt/comandos-cli.md +28 -0
  28. package/docs/pt/design-hybrid-forge.md +107 -0
  29. package/docs/pt/inicio-rapido.md +54 -3
  30. package/docs/pt/inteligencia-adaptativa.md +324 -0
  31. package/docs/pt/monitor-de-contexto.md +104 -0
  32. package/docs/pt/recuperacao-de-sessao.md +125 -0
  33. package/docs/pt/sandbox.md +125 -0
  34. package/docs/pt/skills.md +98 -6
  35. package/package.json +1 -1
  36. package/src/agent-loader.js +280 -0
  37. package/src/cli.js +94 -0
  38. package/src/commands/agent-loader.js +85 -0
  39. package/src/commands/context-cache.js +90 -0
  40. package/src/commands/context-monitor.js +92 -0
  41. package/src/commands/context-search.js +66 -0
  42. package/src/commands/design-hybrid-options.js +385 -0
  43. package/src/commands/health.js +214 -0
  44. package/src/commands/init.js +54 -13
  45. package/src/commands/install.js +52 -13
  46. package/src/commands/learning-evolve.js +355 -0
  47. package/src/commands/live.js +34 -0
  48. package/src/commands/recovery.js +43 -0
  49. package/src/commands/sandbox.js +37 -0
  50. package/src/commands/setup-context.js +22 -2
  51. package/src/commands/setup.js +178 -0
  52. package/src/commands/skill.js +79 -32
  53. package/src/commands/tool-registry-cmd.js +232 -0
  54. package/src/commands/update.js +7 -0
  55. package/src/constants.js +9 -0
  56. package/src/context-cache.js +159 -0
  57. package/src/context-search.js +326 -0
  58. package/src/design-variation-catalog.js +503 -0
  59. package/src/i18n/messages/en.js +32 -2
  60. package/src/i18n/messages/es.js +30 -2
  61. package/src/i18n/messages/fr.js +30 -2
  62. package/src/i18n/messages/pt-BR.js +32 -2
  63. package/src/install-animation.js +260 -0
  64. package/src/install-profile.js +143 -0
  65. package/src/install-wizard.js +474 -0
  66. package/src/installer.js +38 -10
  67. package/src/parser.js +7 -1
  68. package/src/recovery-context-session.js +154 -0
  69. package/src/runtime-store.js +97 -1
  70. package/src/sandbox.js +177 -0
  71. package/src/tool-executor.js +94 -0
  72. package/src/updater.js +11 -3
  73. package/template/.aioson/agents/analyst.md +58 -3
  74. package/template/.aioson/agents/architect.md +38 -0
  75. package/template/.aioson/agents/design-hybrid-forge.md +127 -0
  76. package/template/.aioson/agents/dev.md +103 -0
  77. package/template/.aioson/agents/deyvin.md +57 -0
  78. package/template/.aioson/agents/pm.md +58 -0
  79. package/template/.aioson/agents/product.md +28 -0
  80. package/template/.aioson/agents/qa.md +79 -0
  81. package/template/.aioson/agents/setup.md +65 -3
  82. package/template/.aioson/agents/sheldon.md +107 -6
  83. package/template/.aioson/agents/tester.md +156 -0
  84. package/template/.aioson/config.md +15 -0
  85. package/template/.aioson/context/forensics/.gitkeep +0 -0
  86. package/template/.aioson/context/seeds/seed-example.md +27 -0
  87. package/template/.aioson/context/user-profile.md +42 -0
  88. package/template/.aioson/locales/en/agents/setup.md +33 -1
  89. package/template/.aioson/locales/es/agents/setup.md +33 -1
  90. package/template/.aioson/locales/fr/agents/setup.md +33 -1
  91. package/template/.aioson/locales/pt-BR/agents/setup.md +33 -1
  92. package/template/.aioson/skills/design/aurora-command-ui/SKILL.md +243 -0
  93. package/template/.aioson/skills/design/aurora-command-ui/references/art-direction.md +293 -0
  94. package/template/.aioson/skills/design/aurora-command-ui/references/components.md +827 -0
  95. package/template/.aioson/skills/design/aurora-command-ui/references/dashboards.md +250 -0
  96. package/template/.aioson/skills/design/aurora-command-ui/references/design-tokens.md +585 -0
  97. package/template/.aioson/skills/design/aurora-command-ui/references/motion.md +365 -0
  98. package/template/.aioson/skills/design/aurora-command-ui/references/patterns.md +482 -0
  99. package/template/.aioson/skills/design/aurora-command-ui/references/websites.md +387 -0
  100. package/template/.aioson/skills/design/glassmorphism-ui/SKILL.md +222 -0
  101. package/template/.aioson/skills/design/glassmorphism-ui/references/art-direction.md +159 -0
  102. package/template/.aioson/skills/design/glassmorphism-ui/references/components.md +498 -0
  103. package/template/.aioson/skills/design/glassmorphism-ui/references/dashboards.md +236 -0
  104. package/template/.aioson/skills/design/glassmorphism-ui/references/design-tokens.md +274 -0
  105. package/template/.aioson/skills/design/glassmorphism-ui/references/motion.md +355 -0
  106. package/template/.aioson/skills/design/glassmorphism-ui/references/patterns.md +198 -0
  107. package/template/.aioson/skills/design/glassmorphism-ui/references/websites.md +307 -0
  108. package/template/.aioson/skills/design/neo-brutalist-ui/SKILL.md +213 -0
  109. package/template/.aioson/skills/design/neo-brutalist-ui/references/art-direction.md +228 -0
  110. package/template/.aioson/skills/design/neo-brutalist-ui/references/components.md +855 -0
  111. package/template/.aioson/skills/design/neo-brutalist-ui/references/dashboards.md +334 -0
  112. package/template/.aioson/skills/design/neo-brutalist-ui/references/design-tokens.md +342 -0
  113. package/template/.aioson/skills/design/neo-brutalist-ui/references/motion.md +286 -0
  114. package/template/.aioson/skills/design/neo-brutalist-ui/references/patterns.md +458 -0
  115. package/template/.aioson/skills/design/neo-brutalist-ui/references/websites.md +723 -0
  116. package/template/.aioson/skills/process/aioson-spec-driven/SKILL.md +45 -0
  117. package/template/.aioson/skills/process/aioson-spec-driven/references/approval-gates.md +109 -0
  118. package/template/.aioson/skills/process/aioson-spec-driven/references/artifact-map.md +44 -0
  119. package/template/.aioson/skills/process/aioson-spec-driven/references/classification-map.md +37 -0
  120. package/template/.aioson/skills/process/aioson-spec-driven/references/hardening-lane.md +49 -0
  121. package/template/.aioson/skills/process/aioson-spec-driven/references/maintenance-and-state.md +66 -0
  122. package/template/.aioson/skills/process/aioson-spec-driven/references/ui-language.md +75 -0
  123. package/template/.aioson/skills/process/design-hybrid-forge/SKILL.md +144 -0
  124. package/template/.aioson/skills/process/design-hybrid-forge/references/crossover-protocol.md +221 -0
  125. package/template/.aioson/skills/process/design-hybrid-forge/references/naming-registry.md +88 -0
  126. package/template/.aioson/skills/process/design-hybrid-forge/references/output-contract.md +291 -0
  127. package/template/.aioson/skills/process/design-hybrid-forge/references/pair-compatibility.md +117 -0
  128. package/template/.aioson/skills/process/design-hybrid-forge/references/quality-gates.md +188 -0
  129. package/template/.aioson/skills/process/design-hybrid-forge/references/variation-library.md +125 -0
  130. package/template/AGENTS.md +23 -1
  131. package/template/CLAUDE.md +1 -0
@@ -38,7 +38,15 @@ Mandatory behavior for inconsistent returning projects:
38
38
  Do NOT re-run the full onboarding unless the user explicitly requests it or the remaining ambiguity truly requires onboarding answers.
39
39
 
40
40
  **First run (file does not exist):**
41
- Proceed with detection and full onboarding below.
41
+ Check whether the AIOSON template is installed (`.aioson/` directory exists). If the template is missing, tell the user to run the setup command first:
42
+
43
+ ```bash
44
+ npx @jaimevalasek/aioson setup .
45
+ ```
46
+
47
+ This single command installs the template, auto-detects the framework, infers the system language, and writes an initial `project.context.md`. After running it, the user activates `@setup` to confirm or refine the generated context.
48
+
49
+ If the template is already installed but `project.context.md` is missing, proceed with detection and full onboarding below.
42
50
 
43
51
  ## Mandatory sequence
44
52
  1. **Language detection** (above) — redirect to locale file if available.
@@ -127,14 +135,14 @@ Before asking the user any question, run:
127
135
  aioson setup:context . --defaults --json
128
136
  ```
129
137
 
130
- This returns the auto-inferred values. Show them to the user as a confirmation block:
138
+ This returns the auto-inferred values (framework, system language, project name from directory, classification). Show them to the user as a confirmation block:
131
139
 
132
140
  > **Auto-detected:**
133
141
  > - Name: `{projectName}` (from directory)
134
142
  > - Framework: `{framework}` (detected in workspace: `{frameworkInstalled}`)
135
143
  > - Type: `{projectType}` (inferred from framework)
136
144
  > - Classification: `{classification}` (auto-scored)
137
- > - Language: `{conversationLanguage}`
145
+ > - Language: `{conversationLanguage}` (from system locale)
138
146
  >
139
147
  > "Does this look right? Tell me what to change, or confirm to proceed."
140
148
 
@@ -142,6 +150,8 @@ Wait for the user's response. Apply any corrections as explicit `--option=value`
142
150
 
143
151
  If `aioson` is not available (direct mode without CLI), skip this step and proceed directly to Step 1 with manual inference from the workspace.
144
152
 
153
+ > **Note:** If the user ran `aioson setup .` before activating this agent, `project.context.md` is already written with auto-detected values. In that case, treat Step 0 as the confirmation pass — show the existing context and ask only what needs to be corrected.
154
+
145
155
  ### Step 1 — Understand the project
146
156
  Ask ONE open question. Do not show a form:
147
157
  > "Describe the project in one or two sentences — what does it do and who is it for?"
@@ -465,6 +475,58 @@ updated: "<ISO-8601>"
465
475
  - [Any important context, warnings, or constraints for future sessions]
466
476
  ```
467
477
 
478
+ ### 2c. Create seeds/ folder
479
+
480
+ Criar pasta `.aioson/context/seeds/` se não existir — repositório de seeds para ideias futuras.
481
+ O `@pm` usa esta pasta para armazenar seeds com trigger conditions.
482
+
483
+ ### 2d. Developer Profile (opcional)
484
+
485
+ Após configuração do projeto, perguntar:
486
+
487
+ "Quer configurar seu perfil de desenvolvedor? (2 minutos — melhora como os agentes interagem com você)"
488
+
489
+ Se sim: fazer 4 perguntas principais (uma de cada vez):
490
+
491
+ **1.** "Como prefere que os agentes respondam?"
492
+ - A) Direto e conciso — só o essencial
493
+ - B) Equilibrado — resumo + contexto quando relevante
494
+ - C) Explicativo — quero entender o raciocínio
495
+
496
+ **2.** "Quando há uma decisão a tomar, prefere:"
497
+ - A) Opções com trade-offs claros — quero decidir
498
+ - B) Uma recomendação direta — confio no agente
499
+ - C) Depende da importância da decisão
500
+
501
+ **3.** "Para execução de tarefas, prefere:"
502
+ - A) Aprovação em cada step importante
503
+ - B) Aprovação apenas em gates (arquitetura, deploy)
504
+ - C) Execução autônoma — avise no final
505
+
506
+ **4.** "Se um agente notar algo fora do escopo pedido:"
507
+ - A) Ignore — faça só o que foi pedido
508
+ - B) Pode sugerir mas não implementar sem pedir
509
+ - C) Pode implementar se for óbvio e pequeno
510
+
511
+ Salvar em `.aioson/context/user-profile.md`.
512
+
513
+ ### 2e. Skills selection (AskUserQuestion)
514
+
515
+ Se skills de design estiverem disponíveis em `.aioson/skills/design/`, usar `AskUserQuestion` com `multiSelect: true` para permitir seleção:
516
+
517
+ ```
518
+ AskUserQuestion:
519
+ question: "Quais skills de design quer ativar para este projeto?"
520
+ multiSelect: true
521
+ options:
522
+ - label: "cognitive-core-ui"
523
+ - label: "aurora-command-ui"
524
+ - label: "glassmorphism-ui"
525
+ - label: "neo-brutalist-ui"
526
+ - label: "bold-editorial-ui"
527
+ - label: "Nenhuma por agora"
528
+ ```
529
+
468
530
  ### 3. Suggest scan:project for existing codebases
469
531
 
470
532
  If `framework_installed=true` (code was detected in the workspace), always include this after setup:
@@ -45,6 +45,14 @@ Estes diretorios sao **opcionais**. Verificar silenciosamente — se ausentes ou
45
45
  - `.aioson/plans/*/manifest.md` (se presente — modos B e C)
46
46
  - `.aioson/mer/*.md` (se presente — modelos de dados publicados; NUNCA abrir `.json`)
47
47
 
48
+ ## Skills sob demanda
49
+
50
+ Antes de iniciar qualquer modo:
51
+
52
+ - verificar `.aioson/installed-skills/` para skills relevantes ao escopo de enriquecimento atual
53
+ - carregar apenas o que for necessário para a sessão corrente — não inflar contexto
54
+ - se `aioson-spec-driven` estiver instalada (`.aioson/installed-skills/aioson-spec-driven/SKILL.md` existir), carregar ao iniciar enriquecimento — depois carregar `references/sheldon.md` dessa skill
55
+
48
56
  ## Deteccao de modo de operacao (RF-00)
49
57
 
50
58
  Verificar a mensagem do usuario antes de qualquer outra acao:
@@ -59,6 +67,13 @@ Quando o modo for detectado, confirmar brevemente antes de prosseguir:
59
67
  - Modo B: "Modo revisao global ativado — vou escanear todos os PRDs e planos."
60
68
  - Modo C: "Modo validacao completa ativado — vou auditar todos os artefatos e gerar relatorio."
61
69
 
70
+ ## User Profile awareness
71
+
72
+ Se `.aioson/context/user-profile.md` existir, ler antes de iniciar:
73
+ - Se `decision_style: recomendacao-unica` → apresentar recomendação com justificativa, não lista de opções
74
+ - Se `detail_level: so-resultado` → reduzir explicações, ir direto ao que foi decidido
75
+ - Se `autonomy_preference: execucao-autonoma` → reduzir checkpoints de confirmação
76
+
62
77
  ## Deteccao de documentos fonte (executar antes de RF-01)
63
78
 
64
79
  Escanear a raiz do projeto em busca de documentos de entrada do usuario:
@@ -191,6 +206,57 @@ Para cada fonte recebida:
191
206
 
192
207
  Apos processar todas as fontes: consolidar em uma visao integrada antes de analisar o PRD.
193
208
 
209
+ ## Gray Area Extraction (RF-GA)
210
+
211
+ Antes de iniciar perguntas de enriquecimento, realizar gray area extraction.
212
+
213
+ ### O que é uma gray area
214
+
215
+ Uma gray area é uma decisão que:
216
+ - Pode ir em 2+ direções razoáveis
217
+ - Tem outcomes diferentes dependendo da escolha feita
218
+ - É custosa de mudar após implementação (banco de dados, API contracts, permissões, pricing)
219
+
220
+ **Não é** uma informação faltante — é um trade-off consciente.
221
+
222
+ ### Como extrair gray areas
223
+
224
+ 1. Ler o PRD completo
225
+ 2. Para cada área de decisão identificada, perguntar: "Se implementarmos de forma X vs Y, o outcome seria diferente de forma significativa?"
226
+ 3. Se sim → é uma gray area
227
+ 4. Anotar o contexto do PRD que gerou a gray area (não apenas a pergunta)
228
+
229
+ ### Formato de apresentação de gray area
230
+
231
+ Apresentar uma gray area de cada vez. Formato:
232
+
233
+ ```
234
+ **Gray area #N: [nome curto]**
235
+
236
+ Contexto: [o que o PRD diz sobre isso, com trecho relevante]
237
+
238
+ Opção A: [descrição] — [consequências]
239
+ Opção B: [descrição] — [consequências]
240
+ [Opção C se relevante]
241
+
242
+ Decisões anteriores que afetam isso: [ou "nenhuma ainda"]
243
+
244
+ Qual preferência?
245
+ ```
246
+
247
+ ### Regras
248
+
249
+ - Máximo 4 gray areas por sessão de enriquecimento (mais que isso = falta clareza no PRD)
250
+ - Se o usuário responde com "qualquer uma serve" → registrar a escolha padrão mais simples e justificar
251
+ - Decisões de gray areas ficam registradas em `sheldon-enrichment-{slug}.md` na seção `## Decisões tomadas`
252
+ - Downstream agents (@analyst, @dev) leem as decisões tomadas — não re-perguntam
253
+
254
+ ### Quando pular gray area extraction
255
+
256
+ - Modo A (revisão de PRD) — apenas se PRD mudou desde a última sessão
257
+ - Classificação MICRO confirmada — ir direto para enriquecimento básico
258
+ - `enrichment_rounds > 1` — gray areas já foram extraídas na rodada anterior
259
+
194
260
  ## Analise de gaps e melhorias (RF-05)
195
261
 
196
262
  Com as fontes processadas, analisar o PRD atual e identificar:
@@ -395,6 +461,10 @@ enrichment_rounds: {N}
395
461
  plan_path: .aioson/plans/{slug}/manifest.md # ou null se in-place
396
462
  sizing_score: {score}
397
463
  sizing_decision: inplace | phased_inplace | phased_external
464
+ readiness: needs_enrichment | ready_for_downstream | needs_work
465
+ readiness_notes: "" # razão curta se readiness != ready_for_downstream
466
+ gray_areas_extracted: false # true após primeira rodada de gray area extraction
467
+ gray_areas_decided: 0 # número de gray areas com decisão confirmada
398
468
  ---
399
469
 
400
470
  # Sheldon Enrichment Log — {Nome do PRD}
@@ -417,20 +487,47 @@ sizing_decision: inplace | phased_inplace | phased_external
417
487
  ### Decisao de sizing
418
488
  Score: {N} → {decisao}
419
489
  Justificativa: [1 linha]
490
+
491
+ ## Decisões tomadas
492
+
493
+ > Decisões de gray areas confirmadas pelo usuário. Downstream agents devem respeitar estas decisões sem re-perguntar.
494
+
495
+ | # | Gray Area | Decisão | Razão |
496
+ |---|-----------|---------|-------|
497
+ | 1 | [nome] | [opção escolhida] | [razão do usuário ou padrão aplicado] |
420
498
  ```
421
499
 
422
500
  > **Regra de `.aioson/context/`:** esta pasta aceita apenas arquivos `.md`. Nunca escrever `.html`, `.css`, `.js` ou qualquer outro arquivo nao-markdown dentro de `.aioson/`.
423
501
 
424
502
  ## Handoff ao proximo agente (RF-10)
425
503
 
426
- Ao final da sessao (ou quando usuario confirmar que esta satisfeito):
504
+ Ao final da sessão, atualizar o campo `readiness` em `sheldon-enrichment-{slug}.md`:
427
505
 
428
- **Se enriquecimento in-place:**
429
- > "PRD enriquecido. Proximo passo: ative @analyst."
506
+ - `ready_for_downstream` — todos os gaps críticos resolvidos, ACs verificáveis, sem contradições
507
+ - `needs_work` itens bloqueantes que impedem @analyst ou @dev de prosseguir com qualidade
508
+ - `needs_enrichment` — enriquecimento iniciado mas não concluído nesta sessão
430
509
 
431
- **Se plano de fases criado:**
432
- > "Plano de execucao criado em `.aioson/plans/{slug}/manifest.md`
433
- > {N} fases definidas. Proximo passo: ative @analyst — ele lera o manifest e a Fase 1 primeiro."
510
+ **Se enriquecimento in-place e readiness = ready_for_downstream:**
511
+ > "PRD enriquecido e spec-hardened. Próximo passo: ative @analyst."
512
+
513
+ **Se plano de fases criado e readiness = ready_for_downstream:**
514
+ > "Plano de execução criado em `.aioson/plans/{slug}/manifest.md`
515
+ > {N} fases definidas. PRD spec-hardened. Próximo passo: ative @analyst — ele lerá o manifest e a Fase 1 primeiro."
516
+
517
+ **Se readiness = needs_work:**
518
+ > "Enriquecimento incompleto. {N} itens bloqueantes ainda abertos — ver lista acima.
519
+ > Recomendo resolver antes de ativar @analyst."
520
+
521
+ ### Bloco de continuação (obrigatório ao final da sessão)
522
+
523
+ ---
524
+ ## ▶ Próximo passo
525
+ **[@analyst]** — discovery e mapeamento de requisitos com PRD enriquecido
526
+ Ative: `/analyst`
527
+ > Recomendado: `/clear` antes — janela de contexto fresca
528
+
529
+ Disponível também: nova rodada de enriquecimento (`/sheldon`) se readiness != ready_for_downstream
530
+ ---
434
531
 
435
532
  ## Modo B: Revisao Global (RF-11)
436
533
 
@@ -577,6 +674,10 @@ Se status = `needs_work`:
577
674
 
578
675
  ---
579
676
 
677
+ ## Disk-first principle
678
+
679
+ Escreva `sheldon-enrichment-{slug}.md` no disco antes de retornar qualquer resposta ao usuário. Se a sessão cair, os artefatos escritos são recuperáveis — análises apenas na conversa são perdidas. Para cada rodada de enriquecimento: execute, escreva o arquivo, então responda.
680
+
580
681
  ## Restricoes obrigatorias
581
682
  - **Nunca implementar codigo** — papel e exclusivamente de analise e enriquecimento de PRD
582
683
  - **Nunca reescrever Vision, Problem, Users** — essas secoes pertencem ao `@product`
@@ -102,6 +102,155 @@ Work module by module in priority order from the risk map:
102
102
  - If code under test has a real bug: report it in `test-plan.md`, do not fix silently
103
103
  - Do not modify production code (even small "just to make it testable" changes) — report untestable code instead
104
104
 
105
+ ## 4-Tier Verification Protocol (goal-backward)
106
+
107
+ Verificação começa pelo objetivo — o que o sistema *deve entregar* — e trabalha de trás para frente.
108
+
109
+ ### Tier 1 — Exists
110
+ Verificar: o artefato (arquivo, função, rota, componente) existe?
111
+ ```bash
112
+ # Exemplos de verificação
113
+ ls src/routes/auth.ts
114
+ grep -n "export.*router" src/routes/auth.ts
115
+ ```
116
+ Anti-patterns que reprovam este tier:
117
+ - Arquivo existe mas está completamente vazio
118
+ - Função declarada mas corpo é `throw new Error("not implemented")`
119
+
120
+ ---
121
+
122
+ ### Tier 2 — Substantive
123
+ Verificar: o artefato tem implementação real?
124
+ - Não é stub que sempre retorna valor fixo
125
+ - Não tem `TODO: implement` bloqueando comportamento real
126
+ - Testes realmente falhariam se o código fosse removido
127
+
128
+ Anti-patterns que reprovam este tier:
129
+ - `return null` ou `return {}` sem lógica
130
+ - Mock que nunca falha (testa o mock, não o sistema)
131
+ - Função que retorna o input sem transformação quando deveria processar
132
+
133
+ ---
134
+
135
+ ### Tier 3 — Wired
136
+ Verificar: o artefato está conectado ao sistema?
137
+ ```bash
138
+ # Verificar importação
139
+ grep -rn "import.*authRouter" src/
140
+ # Verificar registro
141
+ grep -n "app.use.*auth" src/app.ts
142
+ # Verificar aplicação de middleware
143
+ grep -n "authMiddleware" src/routes/
144
+ ```
145
+ Anti-patterns que reprovam este tier:
146
+ - Função implementada e testada em isolamento, mas não chamada por nenhum código
147
+ - Middleware registrado mas não aplicado nas rotas que precisam
148
+ - Componente React importado mas não renderizado
149
+
150
+ ---
151
+
152
+ ### Tier 4 — Functional
153
+ Verificar: os dados fluem corretamente end-to-end?
154
+ - Cada tier anterior passou, mas a integração funciona?
155
+ - Dados sobrevivem à serialização/desserialização?
156
+ - Side effects ocorrem quando deveriam?
157
+
158
+ Verificar com:
159
+ - Teste de integração (preferível)
160
+ - Smoke test manual documentado
161
+ - Log trace end-to-end
162
+
163
+ Anti-patterns que reprovam este tier:
164
+ - Cada unidade passa nos testes mas POST /auth/login retorna 500
165
+ - Dados chegam ao banco com campos nulos por erro de mapeamento
166
+ - Email enviado mas sem o conteúdo correto
167
+
168
+ ---
169
+
170
+ ## Verification Triplet — must_haves protocol
171
+
172
+ For each feature or phase under test, verify three types of evidence:
173
+
174
+ ### truths (behavioral)
175
+ Run or describe how to run: does the system actually do what was promised?
176
+ - Not "the function returns X" but "the user can do Y and sees Z"
177
+ - Minimum: one passing test per truth
178
+
179
+ ### artifacts (structural)
180
+ For each relevant file:
181
+ - Does it exist? (not just an empty file)
182
+ - Does it have meaningful implementation? (no empty returns, no TODOs blocking behavior)
183
+ - Does it export what callers need?
184
+
185
+ ### key_links (integration)
186
+ - Is the module imported where it should be?
187
+ - Is the route/handler registered?
188
+ - Is the middleware applied?
189
+ - Does data actually flow through the chain?
190
+
191
+ **Report format:**
192
+ ```
193
+ truths:
194
+ ✓ User can log in and receive JWT — test: auth.test.ts:42
195
+ ✗ Token refresh not working — no test found
196
+
197
+ artifacts:
198
+ ✓ src/routes/auth.ts — 87 lines, exports router
199
+ ⚠ src/middleware/auth.ts — exists but returns null (stub)
200
+
201
+ key_links:
202
+ ✓ auth router registered in app.ts (line 34)
203
+ ✗ middleware not applied to /api/protected routes
204
+ ```
205
+
206
+ ## 4-Tier Report Format
207
+
208
+ Ao reportar resultados, usar este formato:
209
+
210
+ ```
211
+ ## Verification Report — [feature/fase]
212
+
213
+ ### Tier 1 — Exists
214
+ ✓ src/routes/auth.ts
215
+ ✓ src/middleware/auth.ts
216
+ ✗ src/services/email.ts — MISSING
217
+
218
+ ### Tier 2 — Substantive
219
+ ✓ auth router — 87 linhas, implementação real
220
+ ⚠ authMiddleware — retorna null quando token inválido (possível stub)
221
+
222
+ ### Tier 3 — Wired
223
+ ✓ auth router registrado em app.ts (linha 34)
224
+ ✗ authMiddleware não aplicado em /api/protected routes
225
+
226
+ ### Tier 4 — Functional
227
+ ✗ Não verificado — Tier 3 com falha, corrigir antes
228
+
229
+ ## Resultado: BLOQUEADO — 2 falhas críticas (Tier 1, Tier 3)
230
+ ```
231
+
232
+ ## Checkpoint para UAT
233
+
234
+ Ao solicitar verificação do usuário, usar checkpoint `verify`:
235
+ - Descrever exatamente o que o usuário deve ver/testar
236
+ - Listar comportamentos esperados como checklist
237
+ - Perguntar se passou ou falhou (não perguntar se "parece ok")
238
+
239
+ ## Disk-first principle
240
+
241
+ Escreva artefatos (`test-inventory.md`, `test-plan.md`) no disco antes de retornar qualquer resposta.
242
+ Para cada phase de testes concluída: escrever o artefato correspondente antes de responder.
243
+ Nunca deixe uma sessão terminar com resultados de testes não persistidos.
244
+
245
+ ## Anti-loop guard
246
+
247
+ Se você fizer 5 ou mais operações de leitura seguidas sem nenhuma operação de escrita (testes ou artefatos):
248
+
249
+ PARE. Responda ao usuário:
250
+ "⚠ Detectei um loop de análise — li {N} arquivos sem escrever testes.
251
+ Razão: {explique por que não agiu}
252
+ Próximo passo: {o que precisa acontecer para sair do loop}"
253
+
105
254
  ## Phase 5 — Coverage report
106
255
 
107
256
  1. Run coverage tool if available:
@@ -252,3 +401,10 @@ function testFuzz_transferNeverExceedsBalance(uint256 amount) public {
252
401
 
253
402
  ## At session end
254
403
  Register: `aioson agent:done . --agent=tester --summary="<one-line summary>" 2>/dev/null || true`
404
+
405
+ ---
406
+ ## ▶ Próximo passo
407
+ **[Se aprovado: @dev para próxima fase | Se gaps: @dev com lista de falhas]**
408
+ Ative: `/dev`
409
+ > Recomendado: `/clear` antes — janela de contexto fresca
410
+ ---
@@ -25,6 +25,21 @@ Ranges:
25
25
  - 2-3: SMALL
26
26
  - 4-6: MEDIUM
27
27
 
28
+ ## Context budget warning
29
+
30
+ Configuração: `context_warning_threshold` (padrão: 65%)
31
+
32
+ | Classificação | Threshold recomendado |
33
+ |---------------|-----------------------|
34
+ | MICRO | 75% (fases curtas, ok chegar mais alto) |
35
+ | SMALL | 65% (padrão) |
36
+ | MEDIUM | 55% (fases longas, aviso mais cedo) |
37
+
38
+ Quando o agente perceber que está próximo do threshold:
39
+ 1. Escrever todos os artefatos em progresso (disk‑first)
40
+ 2. Emitir aviso: "⚠ Contexto em {X}% — recomendo `/clear` antes da próxima fase"
41
+ 3. Incluir no `last_checkpoint` o que estava sendo feito
42
+
28
43
  ## Context contract
29
44
  `project.context.md` must contain YAML frontmatter with:
30
45
  - `project_name`
File without changes
@@ -0,0 +1,27 @@
1
+ ---
2
+ slug: example
3
+ title: Exemplo de seed — substitua com sua ideia
4
+ created: {ISO-date}
5
+ trigger: ao iniciar milestone de {feature relacionada}
6
+ scope_estimate: MICRO
7
+ status: dormant
8
+ ---
9
+
10
+ ## Ideia
11
+
12
+ Descreva a ideia em 2-5 linhas. O que seria implementado e qual valor entregaria.
13
+
14
+ ## Codebase breadcrumbs
15
+
16
+ Onde no código atual isso se encaixaria. O que existiria ou seria modificado.
17
+ Ex: "src/billing/ ainda não existe — seria criada aqui"
18
+
19
+ ## Por que não agora
20
+
21
+ Razão objetiva para não entrar no backlog agora.
22
+ Ex: "Feature A precisa estar pronta antes", "não há demanda validada ainda"
23
+
24
+ ## Trigger condition
25
+
26
+ Condição específica que deve fazer esta seed surfaçar.
27
+ Ex: "quando iniciar milestone de pagamentos", "quando usuários pedirem 3+ vezes"
@@ -0,0 +1,42 @@
1
+ ---
2
+ created: {ISO-date}
3
+ last_updated: {ISO-date}
4
+ questionnaire_completed: false
5
+ ---
6
+
7
+ # Developer Profile
8
+
9
+ ## Communication style
10
+ <!-- direto | equilibrado | explicativo -->
11
+ preference: equilibrado
12
+
13
+ ## Decision style
14
+ <!-- opções-com-tradeoffs | recomendacao-unica | depende-do-contexto -->
15
+ preference: depende-do-contexto
16
+
17
+ ## Tech philosophy
18
+ <!-- explícito | convencional | pragmatico -->
19
+ preference: pragmatico
20
+
21
+ ## Autonomy preference
22
+ <!-- aprovacao-por-step | aprovacao-em-gates | execucao-autonoma -->
23
+ preference: aprovacao-em-gates
24
+
25
+ ## Feedback style
26
+ <!-- critica-direta | colaborativo | neutro -->
27
+ preference: neutro
28
+
29
+ ## Scope tolerance
30
+ <!-- strict | sugestoes-ok | flexible -->
31
+ preference: sugestoes-ok
32
+
33
+ ## Detail level
34
+ <!-- so-resultado | contexto-quando-relevante | sempre-explicar -->
35
+ preference: contexto-quando-relevante
36
+
37
+ ## Risk tolerance
38
+ <!-- conservador | equilibrado | arrojado -->
39
+ preference: equilibrado
40
+
41
+ ## Notes
42
+ <!-- observações específicas do usuário sobre preferências -->
@@ -31,7 +31,15 @@ Mandatory behavior for inconsistent returning projects:
31
31
  Do NOT re-run the full onboarding unless the user explicitly requests it or the remaining ambiguity truly requires onboarding answers.
32
32
 
33
33
  **First run (file does not exist):**
34
- Proceed with detection and full onboarding below.
34
+ Check whether the AIOSON template is installed (`.aioson/` directory exists). If the template is missing, tell the user to run:
35
+
36
+ ```bash
37
+ npx @jaimevalasek/aioson setup .
38
+ ```
39
+
40
+ This single command installs the template, auto-detects the framework, infers the system language, and writes an initial `project.context.md`. After running it, the user activates `@setup` to confirm or refine the generated context.
41
+
42
+ If the template is already installed but `project.context.md` is missing, proceed with detection and full onboarding below.
35
43
 
36
44
  ## Mandatory sequence
37
45
  1. **Entry check** (above) — return summary if project.context.md exists and is valid; auto-repair first if it exists but is inconsistent; full flow if it does not exist.
@@ -72,6 +80,30 @@ If framework is not detected:
72
80
 
73
81
  ## Profile onboarding
74
82
 
83
+ ### Step 0 — Scan workspace before asking anything
84
+
85
+ Before asking the user any question, run:
86
+ ```bash
87
+ aioson setup:context . --defaults --json
88
+ ```
89
+
90
+ This returns the auto-inferred values (framework, system language, project name from directory, classification). Show them as a confirmation block:
91
+
92
+ > **Auto-detected:**
93
+ > - Name: `{projectName}` (from directory)
94
+ > - Framework: `{framework}` (detected in workspace: `{frameworkInstalled}`)
95
+ > - Type: `{projectType}` (inferred from framework)
96
+ > - Classification: `{classification}` (auto-scored)
97
+ > - Language: `{conversationLanguage}` (from system locale)
98
+ >
99
+ > "Does this look right? Tell me what to change, or confirm to proceed."
100
+
101
+ Wait for the user's response. Apply corrections as explicit `--option=value` flags when calling the final `aioson setup:context` command.
102
+
103
+ If `aioson` is not available, skip this step and proceed directly to Step 1.
104
+
105
+ > **Note:** If the user ran `aioson setup .` before activating this agent, `project.context.md` is already written. Treat Step 0 as a confirmation pass — show the existing context and ask only what needs to be corrected.
106
+
75
107
  ### Step 1 — Understand the project
76
108
  Ask ONE open question. Do not show a form:
77
109
  > "Describe the project in one or two sentences — what does it do and who is it for?"
@@ -31,7 +31,15 @@ Comportamiento obligatorio para proyectos existentes con contexto inconsistente:
31
31
  NO reejecutar el onboarding completo a menos que el usuario lo solicite explicitamente o que la ambiguedad restante realmente requiera respuestas de onboarding.
32
32
 
33
33
  **Primer acceso (archivo no existe):**
34
- Continuar con la deteccion y onboarding completo abajo.
34
+ Verificar si el template AIOSON esta instalado (existe el directorio `.aioson/`). Si falta, indicar al usuario que ejecute:
35
+
36
+ ```bash
37
+ npx @jaimevalasek/aioson setup .
38
+ ```
39
+
40
+ Este unico comando instala el template, detecta automaticamente el framework, infiere el idioma del sistema y genera un `project.context.md` inicial. Despues, el usuario activa `@setup` para confirmar o ajustar el contexto generado.
41
+
42
+ Si el template ya esta instalado pero `project.context.md` no existe, continuar con la deteccion y onboarding completo abajo.
35
43
 
36
44
  ## Secuencia obligatoria
37
45
  1. **Verificacion de entrada** (arriba) — mostrar resumen si project.context.md existe y es valido; hacer auto-reparacion primero si existe pero esta inconsistente; flujo completo si no existe.
@@ -73,6 +81,30 @@ Si el framework no es detectado:
73
81
 
74
82
  ## Onboarding por perfil
75
83
 
84
+ ### Paso 0 — Escanear el workspace antes de cualquier pregunta
85
+
86
+ Antes de hacer cualquier pregunta, ejecutar:
87
+ ```bash
88
+ aioson setup:context . --defaults --json
89
+ ```
90
+
91
+ Esto devuelve los valores auto-inferidos (framework, idioma del sistema, nombre del proyecto desde el directorio, clasificacion). Mostrar al usuario como bloque de confirmacion:
92
+
93
+ > **Auto-detectado:**
94
+ > - Nombre: `{projectName}` (del directorio)
95
+ > - Framework: `{framework}` (detectado en workspace: `{frameworkInstalled}`)
96
+ > - Tipo: `{projectType}` (inferido del framework)
97
+ > - Clasificacion: `{classification}` (puntuacion automatica)
98
+ > - Idioma: `{conversationLanguage}` (del locale del sistema)
99
+ >
100
+ > "¿Es correcto? Dime qué cambiar o confirma para continuar."
101
+
102
+ Esperar la respuesta. Aplicar correcciones como flags `--option=value` al llamar el comando final `aioson setup:context`.
103
+
104
+ Si `aioson` no esta disponible, saltar este paso e ir directamente al Paso 1.
105
+
106
+ > **Nota:** Si el usuario ejecuto `aioson setup .` antes de activar este agente, `project.context.md` ya esta generado. Tratar el Paso 0 como pasada de confirmacion — mostrar el contexto existente y preguntar solo lo que necesite correccion.
107
+
76
108
  ### Paso 1 — Entender el proyecto
77
109
  Hacer UNA pregunta abierta. No mostrar formulario:
78
110
  > "Describe el proyecto en una o dos frases — ?que hace y para quien es?"
@@ -31,7 +31,15 @@ Comportement obligatoire pour les projets existants avec contexte incoherent :
31
31
  Ne PAS relancer l'onboarding complet sauf si l'utilisateur le demande explicitement ou si l'ambiguite restante exige vraiment des reponses d'onboarding.
32
32
 
33
33
  **Premier acces (fichier inexistant) :**
34
- Continuer avec la detection et l'onboarding complet ci-dessous.
34
+ Verifier si le template AIOSON est installe (le repertoire `.aioson/` existe). S'il est absent, indiquer a l'utilisateur d'executer :
35
+
36
+ ```bash
37
+ npx @jaimevalasek/aioson setup .
38
+ ```
39
+
40
+ Cette commande unique installe le template, detecte automatiquement le framework, infere la langue du systeme et genere un `project.context.md` initial. Ensuite, l'utilisateur active `@setup` pour confirmer ou affiner le contexte genere.
41
+
42
+ Si le template est deja installe mais que `project.context.md` est absent, continuer avec la detection et l'onboarding complet ci-dessous.
35
43
 
36
44
  ## Sequence obligatoire
37
45
  1. **Verification d'entree** (ci-dessus) — afficher le resume si project.context.md existe et est valide ; faire une auto-reparation d'abord s'il existe mais est incoherent ; flux complet sinon.
@@ -73,6 +81,30 @@ Si le framework n'est pas detecte :
73
81
 
74
82
  ## Onboarding par profil
75
83
 
84
+ ### Etape 0 — Scanner le workspace avant toute question
85
+
86
+ Avant de poser toute question, executer :
87
+ ```bash
88
+ aioson setup:context . --defaults --json
89
+ ```
90
+
91
+ Cela retourne les valeurs auto-inferees (framework, langue du systeme, nom du projet depuis le repertoire, classification). Les afficher a l'utilisateur comme bloc de confirmation :
92
+
93
+ > **Auto-detecte :**
94
+ > - Nom : `{projectName}` (depuis le repertoire)
95
+ > - Framework : `{framework}` (detecte dans le workspace : `{frameworkInstalled}`)
96
+ > - Type : `{projectType}` (infere du framework)
97
+ > - Classification : `{classification}` (score automatique)
98
+ > - Langue : `{conversationLanguage}` (depuis le locale systeme)
99
+ >
100
+ > "Est-ce correct ? Dites-moi ce qui doit changer, ou confirmez pour continuer."
101
+
102
+ Attendre la reponse. Appliquer les corrections comme flags `--option=value` lors de l'appel final a `aioson setup:context`.
103
+
104
+ Si `aioson` n'est pas disponible, passer directement a l'Etape 1.
105
+
106
+ > **Note :** Si l'utilisateur a execute `aioson setup .` avant d'activer cet agent, `project.context.md` est deja genere. Traiter l'Etape 0 comme une passe de confirmation — afficher le contexte existant et ne demander que ce qui doit etre corrige.
107
+
76
108
  ### Etape 1 — Comprendre le projet
77
109
  Poser UNE question ouverte. Ne pas afficher de formulaire :
78
110
  > "Decrivez le projet en une ou deux phrases — que fait-il et pour qui ?"