oxe-cc 0.3.9 → 0.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 (77) hide show
  1. package/.cursor/commands/oxe-execute.md +2 -2
  2. package/.cursor/commands/oxe-loop.md +11 -0
  3. package/.cursor/commands/oxe-milestone.md +11 -0
  4. package/.cursor/commands/oxe-obs.md +11 -0
  5. package/.cursor/commands/oxe-project.md +11 -0
  6. package/.cursor/commands/oxe-quick.md +2 -2
  7. package/.cursor/commands/oxe-security.md +11 -0
  8. package/.cursor/commands/oxe-spec.md +2 -2
  9. package/.cursor/commands/oxe-workstream.md +11 -0
  10. package/.cursor/commands/oxe.md +9 -0
  11. package/.github/prompts/oxe-execute.prompt.md +12 -12
  12. package/.github/prompts/oxe-loop.prompt.md +12 -0
  13. package/.github/prompts/oxe-milestone.prompt.md +12 -0
  14. package/.github/prompts/oxe-obs.prompt.md +12 -0
  15. package/.github/prompts/oxe-project.prompt.md +12 -0
  16. package/.github/prompts/oxe-quick.prompt.md +12 -12
  17. package/.github/prompts/oxe-security.prompt.md +12 -0
  18. package/.github/prompts/oxe-spec.prompt.md +2 -2
  19. package/.github/prompts/oxe-workstream.prompt.md +12 -0
  20. package/.github/prompts/oxe.prompt.md +12 -0
  21. package/README.md +287 -544
  22. package/bin/banner.txt +1 -1
  23. package/bin/lib/oxe-plugins.cjs +226 -0
  24. package/bin/lib/oxe-project-health.cjs +97 -1
  25. package/bin/lib/oxe-security.cjs +225 -0
  26. package/bin/oxe-cc.js +30 -1
  27. package/commands/oxe/execute.md +16 -16
  28. package/commands/oxe/loop.md +17 -0
  29. package/commands/oxe/milestone.md +16 -0
  30. package/commands/oxe/obs.md +16 -0
  31. package/commands/oxe/oxe.md +16 -0
  32. package/commands/oxe/project.md +16 -0
  33. package/commands/oxe/quick.md +16 -16
  34. package/commands/oxe/security.md +16 -0
  35. package/commands/oxe/spec.md +2 -2
  36. package/commands/oxe/workstream.md +16 -0
  37. package/lib/sdk/index.cjs +284 -0
  38. package/lib/sdk/index.d.ts +148 -1
  39. package/oxe/personas/README.md +39 -0
  40. package/oxe/personas/architect.md +37 -0
  41. package/oxe/personas/db-specialist.md +36 -0
  42. package/oxe/personas/debugger.md +38 -0
  43. package/oxe/personas/executor.md +38 -0
  44. package/oxe/personas/planner.md +36 -0
  45. package/oxe/personas/researcher.md +35 -0
  46. package/oxe/personas/ui-specialist.md +36 -0
  47. package/oxe/personas/verifier.md +39 -0
  48. package/oxe/templates/CONFIG.md +54 -4
  49. package/oxe/templates/DISCUSS.template.md +44 -0
  50. package/oxe/templates/MEMORY.template.md +49 -0
  51. package/oxe/templates/MILESTONES.template.md +17 -0
  52. package/oxe/templates/OBSERVATIONS.template.md +18 -0
  53. package/oxe/templates/PLUGINS.md +101 -0
  54. package/oxe/templates/ROADMAP.template.md +44 -0
  55. package/oxe/templates/SECURITY.template.md +72 -0
  56. package/oxe/templates/STATE.md +29 -2
  57. package/oxe/templates/config.template.json +5 -0
  58. package/oxe/templates/plan-agents.template.json +3 -2
  59. package/oxe/templates/quick-agents.template.json +24 -0
  60. package/oxe/workflows/discuss.md +48 -5
  61. package/oxe/workflows/execute.md +133 -28
  62. package/oxe/workflows/help.md +105 -24
  63. package/oxe/workflows/loop.md +57 -0
  64. package/oxe/workflows/milestone.md +96 -0
  65. package/oxe/workflows/obs.md +95 -0
  66. package/oxe/workflows/oxe.md +115 -0
  67. package/oxe/workflows/plan-agent.md +50 -3
  68. package/oxe/workflows/plan.md +7 -2
  69. package/oxe/workflows/project.md +50 -0
  70. package/oxe/workflows/quick.md +120 -10
  71. package/oxe/workflows/research.md +16 -0
  72. package/oxe/workflows/scan.md +23 -1
  73. package/oxe/workflows/security.md +61 -0
  74. package/oxe/workflows/spec.md +172 -23
  75. package/oxe/workflows/verify.md +80 -18
  76. package/oxe/workflows/workstream.md +96 -0
  77. package/package.json +3 -2
@@ -0,0 +1,95 @@
1
+ # OXE — Workflow: obs
2
+
3
+ <objective>
4
+ Registrar uma **observação contextual** em **`.oxe/OBSERVATIONS.md`** durante ou fora de uma execução. A observação é incorporada automaticamente nos próximos `/oxe-spec`, `/oxe-plan`, `/oxe-discuss` ou `/oxe-execute` sem necessidade de re-explicar.
5
+
6
+ **Princípio:** *observation-without-re-explaining* — registre em 1 request, receba o benefício em todos os workflows seguintes sem custo extra de requisição.
7
+
8
+ Entrada: texto livre com a observação (restrição, descoberta técnica, preferência, risco, decisão).
9
+ </objective>
10
+
11
+ <context>
12
+ - Pode ser chamado **a qualquer momento**: antes, durante ou após qualquer passo da trilha OXE.
13
+ - Não interrompe o fluxo em curso — a observação é armazenada e incorporada na próxima oportunidade.
14
+ - Se chamado **durante execute** (fase `executing` no STATE) com impacto `execute` ou `all`: oferecer opção de aplicar agora (pausar onda atual) ou continuar e aplicar na próxima rodada.
15
+ - Ler **`.oxe/STATE.md`** para capturar o contexto automático (fase atual, tarefa ativa, workstream ativo).
16
+ - Usar `oxe/templates/OBSERVATIONS.template.md` para criar o arquivo se ainda não existir.
17
+ </context>
18
+
19
+ <format_observations_md>
20
+ Arquivo: **`.oxe/OBSERVATIONS.md`**
21
+
22
+ ```markdown
23
+ # Observações OXE
24
+
25
+ | ID | Data | Contexto | Impacto | Status |
26
+ |----|------|----------|---------|--------|
27
+ | OBS-001 | 2026-04-04 | execute/T3 | spec, plan | pendente |
28
+ | OBS-002 | 2026-04-04 | pós-spec | execute | incorporada → execute (2026-04-04) |
29
+
30
+ ---
31
+
32
+ ### OBS-001 — 2026-04-04 | execute/T3
33
+ **Impacto:** spec, plan
34
+ **Status:** pendente
35
+
36
+ JWT expiration deve ser configurável via `JWT_EXPIRES_IN` env var, não hardcoded 7d.
37
+
38
+ ---
39
+
40
+ ### OBS-002 — 2026-04-04 | pós-spec
41
+ **Impacto:** execute
42
+ **Status:** incorporada → execute (2026-04-04)
43
+
44
+ API deve retornar mensagens de erro em português do Brasil.
45
+ ```
46
+
47
+ **IDs:** sequenciais `OBS-001`, `OBS-002`, … (continuar do último ID existente no arquivo).
48
+
49
+ **Impacto:** classificar automaticamente com base no conteúdo:
50
+ - `spec` — afeta requisitos, critérios de aceite ou escopo
51
+ - `plan` — afeta tarefas, ondas, dependências ou verificação
52
+ - `execute` — afeta a implementação da tarefa atual ou próxima
53
+ - `all` — afeta múltiplas camadas
54
+
55
+ **Status lifecycle:** `pendente` → `incorporada → <workflow> (YYYY-MM-DD)`
56
+ </format_observations_md>
57
+
58
+ <process>
59
+ 1. Ler **`.oxe/STATE.md`**: capturar `phase`, `last_task` ou tarefa ativa na onda, `active_workstream`.
60
+ 2. Determinar o **próximo ID** (OBS-NNN): contar entradas existentes em `.oxe/OBSERVATIONS.md` ou começar em OBS-001.
61
+ 3. Classificar o **impacto** automaticamente com base no texto; se ambíguo, usar `all`.
62
+ 4. Criar ou atualizar **`.oxe/OBSERVATIONS.md`**:
63
+ - Adicionar linha na tabela de índice.
64
+ - Adicionar seção `### OBS-NNN` com contexto, impacto, status e texto.
65
+ 5. Avaliar **urgência**:
66
+ - Se `phase` ∈ `{ executing, quick_active }` **e** impacto ∈ `{ execute, all }`:
67
+ - Apresentar ao usuário: "Observação registrada. Deseja aplicar agora (pausar onda atual) ou continuar e incorporar na próxima rodada?"
68
+ - Se pausar: sugerir revisão do bloco `**Verificar:**` da tarefa ativa e ajuste inline.
69
+ - Se continuar: confirmar que será incorporado no início da próxima onda.
70
+ - Em qualquer outro caso: confirmar registro e mencionar quando será incorporado.
71
+ 6. Atualizar **`.oxe/STATE.md`**: adicionar ou atualizar campo `obs_pendentes: true` (remover ou marcar `false` quando todos os OBS estiverem `incorporada`).
72
+ 7. Responder no chat com: ID atribuído (OBS-NNN), impacto classificado, próximo passo sugerido (qual workflow incorporará a observação).
73
+ </process>
74
+
75
+ <auto_incorporation_rule>
76
+ Qualquer workflow que leia `.oxe/OBSERVATIONS.md` deve:
77
+ 1. Verificar se há entradas com `Status: pendente` relevantes ao seu escopo de impacto.
78
+ 2. Incorporar o conteúdo na lógica do workflow (enriquecer requisitos, ajustar tarefas, modificar implementação).
79
+ 3. Após incorporar: atualizar a linha no índice e na seção `### OBS-NNN` para `incorporada → <workflow> (data)`.
80
+ 4. Se `STATE.md` tiver `obs_pendentes: true` e todas as observações relevantes foram incorporadas: atualizar para `obs_pendentes: false`.
81
+
82
+ **Workflows que incorporam observações:**
83
+ - `/oxe-spec` (Fase 3 — Requisitos): impacto `spec` ou `all`
84
+ - `/oxe-plan`: impacto `plan` ou `all`
85
+ - `/oxe-discuss`: impacto `spec`, `plan` ou `all` (como contexto adicional)
86
+ - `/oxe-execute`: impacto `execute` ou `all` — incorporar no início da onda atual
87
+ </auto_incorporation_rule>
88
+
89
+ <success_criteria>
90
+ - [ ] `.oxe/OBSERVATIONS.md` existe com entrada OBS-NNN na tabela e seção de detalhe.
91
+ - [ ] Impacto classificado corretamente (spec | plan | execute | all).
92
+ - [ ] `STATE.md` tem `obs_pendentes: true`.
93
+ - [ ] Se urgência execute: usuário foi consultado sobre pausar ou continuar.
94
+ - [ ] Resposta no chat inclui ID, impacto e próximo passo de incorporação.
95
+ </success_criteria>
@@ -0,0 +1,115 @@
1
+ # OXE — Workflow: oxe (entrada universal)
2
+
3
+ <objective>
4
+ Ponto de entrada inteligente do OXE. Faz uma de três coisas dependendo do input do usuário:
5
+
6
+ 1. **Sem input / "o que faço agora?"** → lê `STATE.md` e recomenda exatamente 1 próximo passo (lógica de `next.md`).
7
+ 2. **Input em linguagem natural** (ex.: "quero adicionar login", "preciso revisar um PR") → traduz para o comando OXE correto e executa ou orienta (lógica de `route.md`).
8
+ 3. **"help", "o que é OXE" ou "comandos"** → apresenta o fluxo dos 8 comandos essenciais e a cadeia canônica.
9
+
10
+ **Princípio:** o usuário não precisa decorar o nome do comando — `/oxe [contexto]` resolve.
11
+ </objective>
12
+
13
+ <context>
14
+ - Este workflow **não gera artefatos** por conta própria. Ele orienta ou delega para o workflow correto.
15
+ - Lê `STATE.md` quando disponível para personalizar a resposta ao estado atual do projeto.
16
+ - Quando o input for claro o suficiente para um workflow específico, **executar diretamente** esse workflow (carregar e seguir o `.md` correspondente) em vez de só sugerir o comando.
17
+ - Quando houver ambiguidade genuína, apresentar 2 opções e pedir escolha — nunca listas longas.
18
+ </context>
19
+
20
+ <modo_status>
21
+ ## Modo: Status + Próximo Passo (sem input ou "o que faço agora?")
22
+
23
+ Aplicar a lógica completa de `oxe/workflows/next.md`:
24
+
25
+ 1. Se `.oxe/` ou `STATE.md` não existir → **scan** (`npx oxe-cc@latest` primeiro se OXE não instalado)
26
+ 2. Se `.oxe/codebase/` incompleto e não for quick isolado → **scan**
27
+ 3. Se `quick_active` ou `QUICK.md` sem `PLAN.md` → avaliar promoção (ver `next.md`)
28
+ 4. Se sem `SPEC.md` → **spec**
29
+ 5. Se SPEC mas sem PLAN → verificar `discuss_before_plan` → **discuss** ou **plan**
30
+ 6. Se PLAN sem VERIFY pós-implementação → **execute** ou **verify**
31
+ 7. Se VERIFY com falha → **plan --replan**
32
+ 8. Se VERIFY OK → próxima feature ou milestone
33
+
34
+ **Saída:** exatamente 1 passo, 1 comando, 1 frase de justificativa.
35
+ </modo_status>
36
+
37
+ <modo_route>
38
+ ## Modo: Roteamento de Linguagem Natural (input com contexto)
39
+
40
+ Mapear o input para o workflow correto e executar ou orientar:
41
+
42
+ | Se o usuário disser | Executar |
43
+ |---------------------|----------|
44
+ | "quero [feature / tarefa / entrega]" | Verificar estado → **spec** ou **quick** |
45
+ | "analisa / mapeia o projeto" | **scan** (modo refresh se codebase/ existir) |
46
+ | "pesquisa / spike / quero entender X" | **research** |
47
+ | "revisa PR / diff" | **review-pr** |
48
+ | "auditoria de segurança" | **security** |
49
+ | "valida / verifica" | **verify** |
50
+ | "milestone / release / versão" | **project milestone** |
51
+ | "trilha paralela / workstream" | **project workstream** |
52
+ | "snapshot / checkpoint" | **project checkpoint** |
53
+ | "recuperação / erro / algo quebrou" | **forensics** |
54
+ | "debug / teste falhando" | **debug** |
55
+ | "obs / observação / nota" | **obs** |
56
+ | "atualiza / update OXE" | **update** |
57
+
58
+ Se o input não mapear claramente → apresentar 2 opções mais prováveis e perguntar.
59
+ </modo_route>
60
+
61
+ <modo_help>
62
+ ## Modo: Help (quando o usuário pede "help", "o que é OXE", "comandos")
63
+
64
+ Apresentar de forma concisa:
65
+
66
+ ### Os 8 comandos que você precisa conhecer
67
+
68
+ ```
69
+ /oxe → onde estou / o que faço / help
70
+ /oxe-obs → registrei algo importante agora
71
+ /oxe-quick → tarefa pequena, sem cerimônia
72
+ /oxe-scan → mapeia o projeto (ou atualiza o mapa)
73
+ /oxe-spec → nova feature ou entrega: perguntas → requisitos → roteiro
74
+ /oxe-plan → detalhar em tarefas (--agents para multi-agente)
75
+ /oxe-execute → implementar (A: completo | B: por onda | C: por tarefa)
76
+ /oxe-verify → validar que está pronto
77
+ ```
78
+
79
+ ### A cadeia
80
+
81
+ ```
82
+ /oxe-obs (qualquer momento)
83
+
84
+ /oxe-scan → /oxe-spec → /oxe-plan → /oxe-execute → /oxe-verify
85
+
86
+ /oxe-quick (trabalho pequeno)
87
+ ```
88
+
89
+ ### Para saber o próximo passo agora
90
+
91
+ ```
92
+ /oxe
93
+ ```
94
+
95
+ ### Escape hatches (não precisa decorar — aparecem quando necessários)
96
+
97
+ `/oxe-research`, `/oxe-forensics`, `/oxe-debug`, `/oxe-loop`, `/oxe-security`,
98
+ `/oxe-validate-gaps`, `/oxe-ui-spec`, `/oxe-ui-review`, `/oxe-review-pr`,
99
+ `/oxe-project` (milestone, workstream, checkpoint)
100
+ </modo_help>
101
+
102
+ <process>
103
+ 1. Verificar se há input adicional na mensagem:
104
+ - **Sem input ou "next / o que faço / status":** aplicar `<modo_status>`.
105
+ - **"help / comandos / o que é OXE":** aplicar `<modo_help>`.
106
+ - **Qualquer outra coisa (linguagem natural com contexto):** aplicar `<modo_route>` e, se o workflow for claro, carregar e executar diretamente o `oxe/workflows/<nome>.md` correspondente.
107
+ 2. Nunca produzir listas longas de alternativas. Um passo, um comando, uma frase.
108
+ 3. Se o workflow executado diretamente gerar artefatos, reportar no chat conforme esse workflow.
109
+ </process>
110
+
111
+ <success_criteria>
112
+ - [ ] Usuário recebe exatamente 1 próximo passo (modo status) OU 1 workflow executado (modo route) OU o bloco help compacto (modo help).
113
+ - [ ] Nenhum artefato criado por este workflow diretamente (a menos que o workflow delegado o faça).
114
+ - [ ] Nunca lista mais de 2 alternativas ao mesmo tempo.
115
+ </success_criteria>
@@ -22,14 +22,55 @@ Se o utilizador pedir **`--replan`**: aplicar a mesma lógica de replanejamento
22
22
  - **`sequential`** — uma onda por agente (ondas com um único id cada) ou execução estritamente ordenada.
23
23
  - **`parallel_per_wave`** — dentro de cada onda, agentes sem dependência mútua podem correr em paralelo; ondas são sequenciais.
24
24
  - **`hybrid`** — ondas sequenciais; dentro da onda, paralelo quando `dependencies` já satisfeitas (é o caso mais comum).
25
- - **Schema:** **`oxePlanAgentsSchema: 2`** obrigatório nas novas gerações; incluir **`runId`** (string opaca única, ex. `oxe-{ISO8601}-{6 hex aleatórios}`) e **`lifecycle`**: `{ "status": "pending_execute", "since": "<ISO>" }`. Blueprints com schema **1** (legado) não aplicam exclusividade estrita até serem regerados.
25
+ - **Schema:** **`oxePlanAgentsSchema: 3`** obrigatório nas novas gerações (schema **2** = sem `model_hint`; schema **1** = legado sem `runId`/`lifecycle`). Incluir **`runId`** (string opaca única, ex. `oxe-{ISO8601}-{6 hex aleatórios}`) e **`lifecycle`**: `{ "status": "pending_execute", "since": "<ISO>" }`. Blueprints com schema **2** continuam válidos; schema **1** não aplica exclusividade estrita até serem regerados.
26
26
  - Modelo JSON: ver **`oxe/templates/plan-agents.template.json`** e **`oxe/schemas/plan-agents.schema.json`**.
27
27
  </context>
28
28
 
29
+ <agent_isolation_rule>
30
+ ## Regra de Isolamento de Agentes (Plan-Driven Dynamic Agents)
31
+
32
+ **Cada `/oxe-plan-agent` cria agentes NOVOS para ESTE plano específico.**
33
+
34
+ | Regra | Descrição |
35
+ |-------|-----------|
36
+ | **`runId` único** | Gerar `runId` NOVO a cada execução — nunca reutilizar `runId` de `plan-agents.json` anterior |
37
+ | **`role` específico** | Descrever o papel no domínio desta demanda: "Especialista em autenticação JWT para este plano", não "Backend Developer" genérico |
38
+ | **Não há reuso** | Agentes de planos ou demandas anteriores são inválidos para este plano. `lifecycle.status: invalidated` em qualquer blueprint anterior com `invalidatedBy: "new_plan"` |
39
+ | **Lifecycle exclusivo** | Agentes vivem somente enquanto `lifecycle.status ∈ { pending_execute, executing }` e `runId` alinhado ao STATE.md |
40
+ | **Gate de unicidade** | No quality gate: verificar que o `runId` gerado não existe em nenhum `plan-agents.json` anterior no repositório |
41
+
42
+ **Invalidação de blueprint anterior:**
43
+ Se já existir `.oxe/plan-agents.json` com status não-terminal (`pending_execute` ou `executing`), invalidá-lo antes de criar o novo:
44
+ ```json
45
+ "lifecycle": {
46
+ "status": "invalidated",
47
+ "since": "<ISO agora>",
48
+ "invalidatedBy": "new_plan",
49
+ "invalidatedReason": "Novo /oxe-plan-agent iniciado para nova demanda"
50
+ }
51
+ ```
52
+ </agent_isolation_rule>
53
+
29
54
  <format_plan_md>
30
55
  Seguir **integralmente** o bloco **`<format_plan>`** e **`<plan_quality_gate>`** do ficheiro **`oxe/workflows/plan.md`** ao escrever `.oxe/PLAN.md` (incluindo gate antes de fechar).
31
56
  </format_plan_md>
32
57
 
58
+ <model_hints>
59
+ ## Model Hints por Agente (schema v3, opcional)
60
+
61
+ Cada agente pode declarar `model_hint` para orientar qual tier de modelo usar:
62
+
63
+ | Valor | Quando usar |
64
+ |-------|-------------|
65
+ | `"powerful"` | Agentes de análise, arquitetura, pesquisa, decisões de design |
66
+ | `"balanced"` | Agentes de implementação de features, integração, refactor |
67
+ | `"fast"` | Agentes de review, testes, lint, validação, tarefas repetitivas |
68
+
69
+ **Regra de uso:** quando o `plan-agents.json` tiver `model_hint`, o **`execute.md`** exibe a sugestão ao apresentar a atribuição do agente — permitindo ao usuário configurar o modelo antes de iniciar aquele agente.
70
+
71
+ `model_hint` é opcional: omitir significa "sem preferência" (executa com o modelo padrão da sessão).
72
+ </model_hints>
73
+
33
74
  <format_plan_agents_json>
34
75
  Raiz do ficheiro **`.oxe/plan-agents.json`**:
35
76
 
@@ -49,11 +90,15 @@ Cada **agente**:
49
90
  |-------|-------------|-------------|
50
91
  | `id` | sim | Slug único estável (`agent-db`, `agent-backend-auth`). |
51
92
  | `role` | sim | Nome legível do papel. |
93
+ | `persona` | não | ID de persona em `oxe/personas/` (ex.: `executor`, `architect`). O workflow `/oxe-execute` carrega a persona para instruir o LLM. Ver `oxe/personas/README.md`. |
52
94
  | `scope` | sim | Lista de strings (o que este agente faz, em bullets curtos). |
53
95
  | `taskIds` | sim | Lista de IDs **`T1`…`Tn`** que este agente implementa (subconjunto do `PLAN.md`). |
54
96
  | `dependencies` | não | Lista de **`id`** de outros agentes que devem concluir antes (grafo entre agentes). |
55
97
  | `inputs` | não | Caminhos ou nomes de artefactos a carregar no contexto (ex.: `.oxe/STATE.md`, `.oxe/SPEC.md`). |
56
98
  | `outputs` | não | Paths ou padrões de ficheiros esperados (orientação; o código real vem do PLAN). |
99
+ | `model_hint` | não | Tier de modelo sugerido: `"fast"` \| `"balanced"` \| `"powerful"`. Ver `<model_hints>`. |
100
+
101
+ **Personas disponíveis:** `executor`, `planner`, `verifier`, `researcher`, `debugger`, `architect`, `ui-specialist`, `db-specialist`. Ver `oxe/personas/README.md` para descrição de cada uma. Personas customizadas do projeto ficam em `.oxe/personas/`.
57
102
 
58
103
  **Regras de desenho:** preferir **um agente por domínio** (DB, API, UI) e **várias `Tn`** no mesmo agente quando partilham contexto; usar **agentes separados** quando o contexto mínimo diverge forte (evita fugas de foco).
59
104
  </format_plan_agents_json>
@@ -61,7 +106,7 @@ Cada **agente**:
61
106
  <plan_agent_quality_gate>
62
107
  Antes de finalizar, validar **em conjunto** `PLAN.md` + `plan-agents.json`:
63
108
 
64
- 1. **Schema:** JSON válido; `oxePlanAgentsSchema === 2`; presentes **`runId`** e **`lifecycle`** com `status: pending_execute` e `since` ISO; todos os `id` de agente únicos.
109
+ 1. **Schema:** JSON válido; `oxePlanAgentsSchema {2, 3}` (3 para novos blueprints); presentes **`runId`** e **`lifecycle`** com `status: pending_execute` e `since` ISO; todos os `id` de agente únicos. Se schema 3: `model_hint` de cada agente é `"fast"`, `"balanced"`, `"powerful"` ou ausente.
65
110
  2. **Cobertura de tarefas:** a união dos `taskIds` de todos os agentes é **igual** ao conjunto de `### Tn` presentes no `PLAN.md` (sem tarefa órfã nem tarefa duplicada entre agentes).
66
111
  3. **Dependências de agente:** só referenciam `id` existentes; **sem ciclos**; se o agente A depende de B, então **onda(B) < onda(A)** em `execution.waves` (primeira aparição do id define a onda).
67
112
  4. **Ondas:** cada `id` em `agents` aparece **exatamente uma vez** no total das `waves`; ordem das ondas reflete dependências e alinha com **Onda:** do `PLAN.md` (tarefas na mesma onda do PLAN podem mapear para agentes na mesma wave se não houver dependência agente-a-agente).
@@ -69,6 +114,8 @@ Antes de finalizar, validar **em conjunto** `PLAN.md` + `plan-agents.json`:
69
114
  6. **Alinhamento SPEC:** cada `scope` relevante deve ser rastreável a critérios **A*** via `taskIds` → **Aceite vinculado** no PLAN.
70
115
  7. **Artefactos de mensagens:** pasta **`.oxe/plan-agent-messages/`** existe e contém **`README.md`** (conteúdo baseado em **`oxe/templates/plan-agent-messages-README.template.md`**).
71
116
 
117
+ 8. **Isolamento:** `runId` gerado é novo e único; se havia blueprint anterior com status não-terminal, foi invalidado com `invalidatedBy: "new_plan"` antes de criar o novo (ver `<agent_isolation_rule>`).
118
+
72
119
  Resumo obrigatório no chat: `Gate plan-agent: OK` ou `Gate plan-agent: corrigido (N problemas)`.
73
120
  </plan_agent_quality_gate>
74
121
 
@@ -77,7 +124,7 @@ Resumo obrigatório no chat: `Gate plan-agent: OK` ou `Gate plan-agent: corrigid
77
124
  2. Conceber **agentes** e **ondas** (grafo por dependências de domínio); depois derivar **tarefas `Tn`** com o formato habitual do PLAN (uma tarefa continua a ser a unidade de **Verificar** e **Aceite vinculado**).
78
125
  3. Escrever **`.oxe/PLAN.md`** (cabeçalho YAML como em `oxe/templates/PLAN.template.md`; em **--replan**, secção Replanejamento).
79
126
  4. Gerar **`runId`** novo e **`lifecycle`**: `{ "status": "pending_execute", "since": "<ISO agora>" }`.
80
- 5. Escrever **`.oxe/plan-agents.json`** a partir de **`oxe/templates/plan-agents.template.json`**, com **`oxePlanAgentsSchema: 2`**, `goal`, `agents`, `execution`, `runId`, `lifecycle`.
127
+ 5. Escrever **`.oxe/plan-agents.json`** a partir de **`oxe/templates/plan-agents.template.json`**, com **`oxePlanAgentsSchema: 3`**, `goal`, `agents` (incluindo `model_hint` por agente conforme `<model_hints>`), `execution`, `runId`, `lifecycle`.
81
128
  6. Criar **`.oxe/plan-agent-messages/`** e **`.oxe/plan-agent-messages/README.md`** a partir de **`oxe/templates/plan-agent-messages-README.template.md`**.
82
129
  7. Atualizar **`.oxe/STATE.md`**: fase `plan_ready`, próximo passo `oxe:execute`; preencher **Blueprint de agentes (sessão)** — `run_id` (= `runId`), `lifecycle_status` (= `pending_execute`), **última onda** — (ou `—`).
83
130
  8. Aplicar **`<plan_agent_quality_gate>`**; corrigir até passar.
@@ -12,10 +12,11 @@ Se o usuário pedir **--replan** (ou replanejamento implícito após `verify_fai
12
12
  </objective>
13
13
 
14
14
  <context>
15
+ - Se existir **`.oxe/OBSERVATIONS.md`** com entradas `pendente` de impacto `plan` ou `all`, incorporar nas tarefas relevantes antes de finalizar o plano (ajustar implementação, verificação ou escopo de Tn) e marcar essas entradas como `incorporada → plan (data)`.
15
16
  - Não inventar APIs inexistentes: cruzar com **STRUCTURE.md**, **INTEGRATIONS.md** e arquivos reais; respeitar **CONCERNS.md** (evitar agravar dívida conhecida sem tarefa explícita).
16
17
  - Se existir **`.oxe/NOTES.md`**, rever entradas em aberto: incorporar em tarefas (com **Aceite vinculado** quando aplicável) ou registar na secção **Replanejamento** / nota explícita *fora de âmbito desta trilha*.
17
18
  - Se existir **`.oxe/UI-SPEC.md`**, as tarefas de UI devem referenciar secções do UI-SPEC no texto de **Implementação** ou **Verificar**.
18
- - Se existir **`.oxe/DISCUSS.md`**, alinhar tarefas às decisões registradas.
19
+ - Se existir **`.oxe/DISCUSS.md`**, alinhar tarefas às decisões registradas. Referenciar IDs **D-NN** no campo **Decisão vinculada:** de cada tarefa impactada — se nenhuma decisão impactar a tarefa, omitir o campo. A rastreabilidade D-NN → Tn → verify é usada pela seção **Fidelidade de decisões** do verify.
19
20
  - Se existir **`.oxe/RESEARCH.md`** e notas em **`.oxe/research/*.md`**, ler o índice e as notas cujo **Tema** cruza o âmbito do plano (ou as mais recentes relevantes). Se o índice marcar **Estado** pendente em tópico bloqueante, pedir nova sessão **research** ou **discuss**, ou registar **suposição explícita** no PLAN antes de ondas que dependam dessa decisão.
20
21
  - Se existir **`.oxe/plan-agents.json`** (gerado por **`/oxe-plan-agent`**), um **--replan** ou renumerar tarefas deve **atualizar o JSON em conjunto** com o `PLAN.md` (cobertura `taskIds`, ondas e dependências entre agentes) — ver **`oxe/workflows/plan-agent.md`**. Preferir **`/oxe-plan-agent --replan`** para regerar **`runId`**, **`lifecycle`** (`pending_execute`) e alinhar **STATE.md**; se só **`/oxe-plan`** for usado, ou o JSON fica manualmente sincronizado, ou marcar no JSON `lifecycle.invalidatedBy: new_plan` até novo plan-agent.
21
22
  - Se existirem **`.oxe/CODEBASE-DELTA.md`** e/ou **`.oxe/RESUME.md`** (tipicamente após **`/oxe-compact`**), ler **antes** de detalhar tarefas: o delta resume o que mudou nos mapas face ao código; o RESUME ancora fase e trilha OXE — **não** substituem SPEC nem os sete ficheiros em `codebase/`.
@@ -38,6 +39,8 @@ Cada tarefa em PLAN.md deve seguir:
38
39
  - Comando: `...` (ex.: npm test, pytest, mvn test)
39
40
  - Manual: (opcional) passos breves
40
41
  - **Aceite vinculado:** A1, A2 (IDs exatos da tabela de critérios da SPEC)
42
+ - **Decisão vinculada:** D-01, D-02 (IDs de `.oxe/DISCUSS.md` — omitir se não houver DISCUSS)
43
+ <!-- oxe-task: {"id":"Tn","wave":1,"type":"feature","files":[],"done":false} -->
41
44
  ```
42
45
 
43
46
  **Projetos sem suíte de testes única (legado):** o bloco **Verificar** pode usar `Comando: —` e **Manual** com Grep, leitura de paths ou checklist — ver exemplos em **`oxe/workflows/references/legacy-brownfield.md`**. Todo critério **A*** da SPEC deve aparecer em **Aceite vinculado** de alguma tarefa ou como gap explícito.
@@ -54,6 +57,7 @@ Antes de finalizar a resposta ao utilizador, o agente **deve** percorrer este ga
54
57
  4. **Ondas:** cada número de **Onda:** usado tem pelo menos uma tarefa; sem ondas vazias.
55
58
  5. **`plan_max_tasks_per_wave`:** se `.oxe/config.json` tiver valor **> 0**, contar tarefas por **Onda**; nenhuma onda excede o limite.
56
59
  6. **UI-SPEC:** se existir `.oxe/UI-SPEC.md`, toda tarefa cuja **Implementação** ou **Verificar** toque UI (paths como `*.tsx`, `components/`, ou palavras-chave front, ou pedido explícito do utilizador) deve citar **secção § do UI-SPEC** ou path explícito.
60
+ 7. **Fidelidade de decisões:** se existir `.oxe/DISCUSS.md` com IDs **D-NN**, cada decisão com impacto técnico deve aparecer em **Decisão vinculada:** de alguma tarefa, ou ter nota explícita de gap (fora do escopo desta entrega). Sem cobertura para D-NN técnico = falha do gate.
57
61
 
58
62
  Se após correções estruturais persistir ambiguidade de produto: **uma** frase recomendando `oxe:discuss` ou `oxe:spec`.
59
63
 
@@ -69,7 +73,8 @@ Resumo obrigatório no chat: `Gate do plano: OK` ou `Gate do plano: corrigido (N
69
73
  6. Definir ondas: onda 1 = tarefas sem dependência entre si; onda seguinte = dependentes; respeitar `plan_max_tasks_per_wave` se configurado.
70
74
  7. Aplicar integralmente o bloco **`<plan_quality_gate>`** acima ao `PLAN.md` em disco; corrigir o ficheiro até passar ou documentar gaps explícitos.
71
75
  8. Atualizar `.oxe/STATE.md`: fase `plan_ready`, próximo passo `oxe:execute` (implementar ondas) e depois `oxe:verify`.
72
- 9. Listar no chat: resultado do gate (OK ou corrigido), ondas, contagem de tarefas, comando de teste guarda-chuva se houver.
76
+ 9. **Sugestão de agentes (inteligente):** após o gate passar, verificar se o plano tem 3+ domínios distintos (ex.: backend + frontend + DB, ou auth + notificações + UI). Se sim, sugerir proativamente: "Este plano tem N domínios distintos. Quer gerar um blueprint de agentes com `/oxe-plan --agents`?" — não executar automaticamente, apenas oferecer. Se o usuário incluiu `--agents` no input original, executar imediatamente a lógica de `oxe/workflows/plan-agent.md`.
77
+ 10. Listar no chat: resultado do gate (OK ou corrigido), ondas, contagem de tarefas, comando de teste guarda-chuva se houver.
73
78
  </process>
74
79
 
75
80
  <success_criteria>
@@ -0,0 +1,50 @@
1
+ # OXE — Workflow: project (gestão de projeto)
2
+
3
+ <objective>
4
+ Ponto de entrada unificado para as três operações de gestão de projeto OXE:
5
+
6
+ - **milestone** — marcos de entrega (M-NN): `new`, `complete`, `status`, `audit`
7
+ - **workstream** — trilhas paralelas: `new <nome>`, `switch <nome>`, `list`, `close <nome>`
8
+ - **checkpoint** — snapshot nomeado de sessão: `[slug]`
9
+
10
+ Detecta a operação pelo primeiro token do input e delega ao workflow canônico correspondente.
11
+ </objective>
12
+
13
+ <context>
14
+ - Este workflow é um **dispatcher**: lê o input, identifica a operação e executa o workflow correto.
15
+ - Workflows canônicos: `oxe/workflows/milestone.md`, `oxe/workflows/workstream.md`, `oxe/workflows/checkpoint.md`.
16
+ - Se o input for ambíguo, apresentar as 3 operações disponíveis e pedir escolha.
17
+ - Sem input: mostrar o estado atual de milestones e workstreams ativos lendo `STATE.md`, `MILESTONES.md` e `CHECKPOINTS.md`.
18
+ </context>
19
+
20
+ <dispatch_table>
21
+ | Input começa com | Delega para | Exemplos |
22
+ |------------------|-------------|---------|
23
+ | `milestone new ...` | `milestone.md` + subcomando `new` | `/oxe-project milestone new v1.0` |
24
+ | `milestone complete` | `milestone.md` + subcomando `complete` | `/oxe-project milestone complete` |
25
+ | `milestone status` | `milestone.md` + subcomando `status` | `/oxe-project milestone status` |
26
+ | `milestone audit` | `milestone.md` + subcomando `audit` | `/oxe-project milestone audit` |
27
+ | `workstream new <nome>` | `workstream.md` + subcomando `new` | `/oxe-project workstream new auth` |
28
+ | `workstream switch <nome>` | `workstream.md` + subcomando `switch` | `/oxe-project workstream switch auth` |
29
+ | `workstream list` | `workstream.md` + subcomando `list` | `/oxe-project workstream list` |
30
+ | `workstream close <nome>` | `workstream.md` + subcomando `close` | `/oxe-project workstream close auth` |
31
+ | `checkpoint [slug]` | `checkpoint.md` | `/oxe-project checkpoint pre-refactor` |
32
+ | *(sem input)* | Status atual | `/oxe-project` |
33
+ </dispatch_table>
34
+
35
+ <process>
36
+ 1. Ler o input do usuário (texto após o comando).
37
+ 2. Identificar o primeiro token:
38
+ - `milestone` → carregar e executar `oxe/workflows/milestone.md` passando o restante como subcomando.
39
+ - `workstream` → carregar e executar `oxe/workflows/workstream.md` passando o restante como subcomando.
40
+ - `checkpoint` → carregar e executar `oxe/workflows/checkpoint.md` passando o slug (se houver).
41
+ - *(vazio)* → ler `STATE.md`, `MILESTONES.md` (se existir) e listar: milestone ativo (M-NN / nenhum), workstreams abertos, último checkpoint. Sugerir próxima operação.
42
+ - *(ambíguo)* → listar as 3 operações disponíveis com exemplos de uso.
43
+ 3. Executar o workflow delegado integralmente.
44
+ </process>
45
+
46
+ <success_criteria>
47
+ - [ ] O workflow correto foi executado com base no input.
48
+ - [ ] Sem input: STATUS atual de milestone ativo, workstreams e último checkpoint mostrado.
49
+ - [ ] Input ambíguo: máximo 3 opções apresentadas com exemplos, não listas longas.
50
+ </success_criteria>
@@ -3,15 +3,114 @@
3
3
  <objective>
4
4
  Registrar trabalho **rápido a médio** sem SPEC/PLAN completos: objetivo claro, passos curtos e uma verificação. Saída principal: **`.oxe/QUICK.md`** + atualização de **`.oxe/STATE.md`**.
5
5
 
6
- Usar quando: correção pontual, refactor local, uma feature pequena, ou protótipo que **não** justifica critérios de aceite longos.
6
+ Quando o trabalho envolve **2 ou mais domínios distintos** (ex.: backend + frontend, DB + API, CLI + UI), aplicar também o conceito de **Plan-Driven Dynamic Agents lean**: agentes focados derivados dos passos do QUICK.md, criados para esta demanda específica, sem reutilização entre demandas. O modo com agentes cria também **`.oxe/quick-agents.json`**.
7
+
8
+ Usar quando: correção pontual, refactor local, feature pequena ou protótipo que **não** justifica critérios de aceite completos.
7
9
  </objective>
8
10
 
9
11
  <context>
10
12
  - Ler `.oxe/STATE.md` e, se existirem, `OVERVIEW.md` e `STACK.md` em `.oxe/codebase/` para não contradizer o repo.
11
13
  - Não apagar `SPEC.md` / `PLAN.md` se existirem; este fluxo é paralelo ou temporário.
12
- - **Blueprint plan-agent:** este fluxo **não** reutiliza papéis (`role` / `scope`) de **`.oxe/plan-agents.json`**. Se existir `plan-agents.json` com **`oxePlanAgentsSchema: 2`** e `lifecycle.status` **não** for já `invalidated`, **invalidar** o blueprint após criar/substituir **`QUICK.md`**: `lifecycle: { "status": "invalidated", "since": "<ISO>", "invalidatedBy": "quick", "invalidatedReason": "oxe-quick substitui trilha focada do blueprint" }`. Actualizar **`.oxe/STATE.md`** — secção **Blueprint de agentes (sessão)**: **lifecycle_status** → `invalidated`, nota invalidado por quick”. Não escrever novas mensagens em **`.oxe/plan-agent-messages/`** para o `runId` invalidado.
14
+ - **Blueprint plan-agent:** este fluxo **não** reutiliza papéis (`role` / `scope`) de **`.oxe/plan-agents.json`**. Se existir `plan-agents.json` com **`oxePlanAgentsSchema: 2`** e `lifecycle.status` **não** for já `invalidated`, **invalidar** o blueprint após criar/substituir **`QUICK.md`**: `lifecycle: { "status": "invalidated", "since": "<ISO>", "invalidatedBy": "quick", "invalidatedReason": "oxe-quick substitui trilha focada do blueprint" }`. Actualizar **`.oxe/STATE.md`** — secção **Blueprint de agentes (sessão)**: **lifecycle_status** → `invalidated`, nota "invalidado por quick". Não escrever novas mensagens em **`.oxe/plan-agent-messages/`** para o `runId` invalidado.
15
+ - **Quick-agents anterior:** se existir **`.oxe/quick-agents.json`** com `status` diferente de `done` ou `invalidated`, invalidá-lo antes de criar o novo (`status: "invalidated", "since": "<ISO>", "reason": "novo quick iniciado"`).
13
16
  </context>
14
17
 
18
+ <plan_driven_dynamic_agents_lean>
19
+ ## Plan-Driven Dynamic Agents — lean (integrado ao Quick)
20
+
21
+ ### Os três princípios que guiam este modo
22
+
23
+ **1. Spec-Driven Design**
24
+ O campo `## Objetivo` de **`QUICK.md`** é a **minispec**: define o que pode ser construído, os limites do escopo e o critério de "pronto" (bloco `## Verificar`). Nenhum agente pode adicionar escopo além desse objetivo. A minispec precede e restringe os agentes.
25
+
26
+ **2. Spec-Driven Development**
27
+ Os `## Passos` de **`QUICK.md`** são o **mini-plano**: cada passo é acionável, sequenciado e rastreável ao bloco `## Verificar`. Os agentes são **derivados dos passos** — os passos definem o trabalho; os agentes organizam quem faz o quê. Nunca o contrário.
28
+
29
+ **3. Plan-Driven Dynamic Agents**
30
+ Os agentes são criados **a partir dos passos**, **para esta demanda específica**, e são **invalidados** quando o quick termina ou é superado por um plano completo. Não há reuso de agentes entre demandas distintas. Cada new quick = novos agentes, se aplicável.
31
+
32
+ ### Quando ativar PDDA no Quick
33
+
34
+ Ativar quando **qualquer** condição for verdadeira:
35
+ - Os passos tocam **2 ou mais domínios distintos** (ex.: API e UI, DB e cache, backend e CLI)
36
+ - O usuário pede explicitamente com `--agents`
37
+ - Há **5 ou mais passos** que se agrupam naturalmente em responsabilidades diferentes
38
+
39
+ **Não** ativar quando: todos os passos ficam no mesmo módulo ou camada, há ≤ 3 passos, ou o trabalho é puramente de conteúdo (docs, config).
40
+
41
+ **Se precisar de mais de 3 agentes:** o trabalho não é mais "quick" → promover para **`/oxe-plan-agent`**.
42
+
43
+ ### Formato dos agentes no QUICK.md
44
+
45
+ Cada passo recebe uma anotação de agente (`<!-- agente: id -->`). Uma seção `## Agentes dinâmicos` é adicionada:
46
+
47
+ ```markdown
48
+ ## Agentes dinâmicos (lean PDDA)
49
+ > Derivados dos passos deste QUICK.md — spec-driven (objetivo restringe escopo) e plan-driven (passos definem tarefas).
50
+ > Criados para **esta demanda**. Invalidados ao promover para spec/plan ou ao iniciar novo quick.
51
+
52
+ | ID | Papel nesta demanda | Passos | Persona |
53
+ |----|---------------------|--------|---------|
54
+ | auth-backend | Especialista em JWT e middleware Express para este quick | 1–3 | executor |
55
+ | login-ui | Especialista em integração do formulário de login React | 4–5 | ui-specialist |
56
+ ```
57
+
58
+ **Regras de desenho:**
59
+ - **`role`** deve ser específico ao domínio da demanda: não "Backend Developer" genérico, mas "Especialista em JWT para autenticação neste quick"
60
+ - **`persona`** usa as personas disponíveis: `executor`, `planner`, `verifier`, `researcher`, `debugger`, `architect`, `ui-specialist`, `db-specialist`
61
+ - Cada agente cobre steps **contíguos ou logicamente agrupados** (não intercalar responsabilidades)
62
+ - Máximo **3 agentes** por quick
63
+
64
+ ### Arquivo `.oxe/quick-agents.json`
65
+
66
+ Criar junto ao QUICK.md quando PDDA estiver ativo (usar como base `oxe/templates/quick-agents.template.json`):
67
+
68
+ ```json
69
+ {
70
+ "oxeQuickAgentsSchema": 1,
71
+ "quickId": "quick-<YYYY-MM-DD>-<6hex>",
72
+ "quickRef": ".oxe/QUICK.md",
73
+ "status": "active",
74
+ "since": "<ISO agora>",
75
+ "agents": [
76
+ {
77
+ "id": "auth-backend",
78
+ "role": "Especialista em JWT e middleware Express para este quick",
79
+ "persona": "executor",
80
+ "steps": [1, 2, 3],
81
+ "focus": "Implementar signing/verification de JWT e middleware de auth"
82
+ },
83
+ {
84
+ "id": "login-ui",
85
+ "role": "Especialista em integração do formulário de login React",
86
+ "persona": "ui-specialist",
87
+ "steps": [4, 5],
88
+ "focus": "Integrar token JWT no componente Login e feedback de erro"
89
+ }
90
+ ]
91
+ }
92
+ ```
93
+
94
+ **Lifecycle de `status`:** `active` → `done` (verify concluído com sucesso) | `invalidated` (novo quick/plan/plan-agent iniciado)
95
+
96
+ ### Como `/oxe-execute` usa quick-agents
97
+
98
+ Quando **`quick-agents.json`** tiver `status: active` e QUICK.md existir:
99
+ - `/oxe-execute` adota o `role` e `persona` de cada agente para os steps atribuídos
100
+ - Cada agente trabalha **somente** nos steps listados em `steps[]`
101
+ - Não há protocolo de handoff entre agentes (lean: sem `.oxe/plan-agent-messages/`)
102
+ - Ao concluir todos os steps: sugerir `/oxe-verify` e marcar `quick-agents.json` → `status: done`
103
+
104
+ ### Invalidação de quick-agents
105
+
106
+ | Evento | Ação sobre `quick-agents.json` |
107
+ |--------|-------------------------------|
108
+ | Novo `/oxe-quick` iniciado | `status: "invalidated"`, `reason: "novo quick"` |
109
+ | `/oxe-plan` ou `/oxe-plan-agent` chamado | `status: "invalidated"`, `reason: "promovido a plano"` |
110
+ | `/oxe-verify` confirma sucesso total | `status: "done"` |
111
+ | Invalidação manual pelo usuário | `status: "invalidated"`, `reason: "manual"` |
112
+ </plan_driven_dynamic_agents_lean>
113
+
15
114
  ## Perfil fast (modo trivial)
16
115
 
17
116
  Uso **sem** novo slash: é o mesmo `/oxe-quick` com redação mínima.
@@ -19,6 +118,7 @@ Uso **sem** novo slash: é o mesmo `/oxe-quick` com redação mínima.
19
118
  - **Objetivo** — uma frase no `.oxe/QUICK.md`.
20
119
  - **Passos** — lista numerada, **máximo 10**; cada passo acionável numa linha.
21
120
  - **Verificar** — um comando de terminal **ou** checklist manual explícito.
121
+ - **Agentes dinâmicos** — seção opcional quando PDDA estiver ativo (ver acima).
22
122
  - **Promover para spec/plan?** — preencher sempre; se qualquer gatilho abaixo for verdadeiro, resposta **sim** e parar de acumular trabalho no QUICK — passar a **`/oxe-spec`** (e depois discuss/plan conforme config).
23
123
 
24
124
  O perfil fast **não** é uma segunda trilha: continua sujeito à mesma promoção obrigatória quando o trabalho deixa de ser trivial.
@@ -31,6 +131,7 @@ Promova **nesta sessão ou na próxima** se **qualquer** condição for verdadei
31
131
  - Mudança de **contrato público** (API HTTP, schema de dados exposto, eventos, SDK).
32
132
  - **Segurança**, **dados pessoais**, **auth** ou **conformidade** envolvidos.
33
133
  - O próprio quick ficar com **mais de 10 passos** — dividir ou passar a SPEC.
134
+ - PDDA lean precisaria de **mais de 3 agentes** — promover para **`/oxe-plan-agent`**.
34
135
 
35
136
  No final de **`.oxe/QUICK.md`**, mantenha a linha:
36
137
 
@@ -40,20 +141,29 @@ Se **sim**, o próximo passo recomendado no chat é **`/oxe-spec`** (depois disc
40
141
 
41
142
  <process>
42
143
  1. Garantir `.oxe/` (usar template de STATE só se `STATE.md` não existir).
43
- 2. Criar ou substituir **`.oxe/QUICK.md`** com:
44
- - **Objetivo** uma frase.
144
+ 2. Avaliar se PDDA lean se aplica (ver `<plan_driven_dynamic_agents_lean>` — domínios distintos, 5+ passos, ou flag `--agents`).
145
+ 3. Criar ou substituir **`.oxe/QUICK.md`** com:
146
+ - **Objetivo** — uma frase. *(Esta é a minispec: restringe o escopo de todos os agentes e passos.)*
45
147
  - **Contexto** — 2–5 bullets (arquivos/pastas já vistos).
46
- - **Passos** — lista numerada, **máximo 10** passos acionáveis.
47
- - **Verificar** pelo menos um: comando de terminal (ex.: `npm test`) **ou** checklist manual explícito.
148
+ - **Passos** — lista numerada, **máximo 10** passos acionáveis; se PDDA ativo, anotar `<!-- agente: id -->` em cada passo.
149
+ - **Agentes dinâmicos** *(somente se PDDA ativo)* tabela com ID, papel, steps, persona.
150
+ - **Verificar** — pelo menos um: comando de terminal (ex.: `npm test`) **ou** checklist manual explícito. *(Este é o critério de aceite da minispec.)*
48
151
  - **Promover para spec/plan?** — conforme seção acima.
49
- 3. Se existir **`.oxe/plan-agents.json`** com schema 2 e lifecycle ainda não `invalidated`, aplicar a invalidação descrita em **context** (actualizar JSON + **STATE.md** — blueprint de agentes).
50
- 4. Atualizar **`.oxe/STATE.md`**: fase `quick_active`, próximo passo `oxe:execute` ou implementação manual + `oxe:verify`.
51
- 5. Responder no chat com resumo em ≤8 linhas e o comando de verificação escolhido; se promover = sim, destacar **`/oxe-spec`** como próximo passo lógico; se o blueprint foi invalidado, mencionar **`/oxe-plan-agent`** para novo roteiro com agentes.
152
+ 4. Se PDDA ativo, criar **`.oxe/quick-agents.json`** usando `oxe/templates/quick-agents.template.json`:
153
+ - Gerar `quickId` novo (`quick-<YYYY-MM-DD>-<6hex>`).
154
+ - `status: "active"`, `since: "<ISO agora>"`.
155
+ - Preencher `agents[]` derivando de cada grupo de passos do QUICK.md.
156
+ 5. Se existir **`.oxe/plan-agents.json`** com schema 2 e lifecycle ainda não `invalidated`, aplicar a invalidação descrita em **context** (actualizar JSON + **STATE.md** — blueprint de agentes).
157
+ 6. Se existir **`.oxe/quick-agents.json`** anterior com `status` não-terminal, invalidá-lo (ver **context**).
158
+ 7. Atualizar **`.oxe/STATE.md`**: fase `quick_active`, próximo passo `oxe:execute` ou implementação manual + `oxe:verify`; se PDDA ativo, registrar `quick_agents_status: active` e `quick_id: <quickId>`.
159
+ 8. Responder no chat com resumo em ≤10 linhas: objetivo, passos, agentes (se PDDA ativo), verificação; se promover = sim, destacar **`/oxe-spec`** como próximo passo lógico; se blueprint plan-agent foi invalidado, mencionar **`/oxe-plan-agent`** para novo roteiro.
52
160
  </process>
53
161
 
54
162
  <success_criteria>
55
- - [ ] `.oxe/QUICK.md` existe com passos e bloco **Verificar**.
163
+ - [ ] `.oxe/QUICK.md` existe com objetivo (minispec), passos (mini-plano) e bloco **Verificar** (critério de aceite).
56
164
  - [ ] `STATE.md` reflete fase `quick_active` e próximo passo coerente.
57
165
  - [ ] Fica explícito quando **promover** para spec/plan (regra acima + campo no arquivo).
58
166
  - [ ] Se havia blueprint schema 2 activo, `plan-agents.json` e `STATE.md` reflectem **`invalidated`** por quick.
167
+ - [ ] Se PDDA ativo: `quick-agents.json` existe com `status: active`, `quickId` único, agentes com `role` específico à demanda, `steps` alinhados aos passos do QUICK.md; seção `## Agentes dinâmicos` presente no QUICK.md.
168
+ - [ ] Se PDDA ativo: máximo 3 agentes; se mais necessário, QUICK.md declara `Promover para spec/plan?: sim` com razão "necessita > 3 agentes".
59
169
  </success_criteria>
@@ -16,6 +16,22 @@ Não substitui **SPEC** nem **PLAN**; alimenta decisões que depois entram na SP
16
16
  - Segurança: não gravar segredos nem valores de variáveis de ambiente.
17
17
  </context>
18
18
 
19
+ <thinking_depth>
20
+ ## Profundidade de Raciocínio
21
+
22
+ Antes de iniciar a pesquisa, classificar o tipo de investigação e calibrar a profundidade:
23
+
24
+ | Tipo | Indicadores | Abordagem |
25
+ |------|-------------|-----------|
26
+ | `surface` | Coletar fatos, comparar 2-3 opções conhecidas, confirmar API | Pesquisa padrão — fontes diretas, resposta objetiva |
27
+ | `standard` | Análise de trade-offs, integração de sistemas, avaliação de bibliotecas | Evidências múltiplas, prós/contras explícitos, referências cruzadas |
28
+ | `deep` | Reverse engineering de sistema existente, design de arquitetura nova, migração complexa, brownfield | **Extended thinking recomendado** se o modelo suportar — ativar raciocínio estendido antes de produzir a nota |
29
+
30
+ Anotar `thinking_depth: surface | standard | deep` no frontmatter da nota de pesquisa gerada.
31
+
32
+ **Quando `deep`:** instrua o modelo (explicitamente se necessário) a "raciocinar em profundidade antes de escrever a nota" — explorando hipóteses, descartando alternativas, mapeando incertezas antes de consolidar evidências.
33
+ </thinking_depth>
34
+
19
35
  <process>
20
36
  1. Garantir pastas `.oxe/` e `.oxe/research/`.
21
37
  2. Escolher `YYYY-MM-DD-<slug>.md` único; se colisão, acrescentar sufixo ao slug (ex. `-b`).