oxe-cc 0.3.8 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/.cursor/commands/oxe-checkpoint.md +2 -0
  2. package/.cursor/commands/oxe-compact.md +2 -0
  3. package/.cursor/commands/oxe-debug.md +2 -0
  4. package/.cursor/commands/oxe-discuss.md +2 -0
  5. package/.cursor/commands/oxe-execute.md +3 -1
  6. package/.cursor/commands/oxe-forensics.md +2 -0
  7. package/.cursor/commands/oxe-help.md +2 -0
  8. package/.cursor/commands/oxe-milestone.md +11 -0
  9. package/.cursor/commands/oxe-next.md +2 -0
  10. package/.cursor/commands/oxe-obs.md +11 -0
  11. package/.cursor/commands/oxe-plan-agent.md +2 -0
  12. package/.cursor/commands/oxe-plan.md +2 -0
  13. package/.cursor/commands/oxe-quick.md +3 -1
  14. package/.cursor/commands/oxe-research.md +2 -0
  15. package/.cursor/commands/oxe-review-pr.md +2 -0
  16. package/.cursor/commands/oxe-route.md +2 -0
  17. package/.cursor/commands/oxe-scan.md +2 -0
  18. package/.cursor/commands/oxe-spec.md +3 -1
  19. package/.cursor/commands/oxe-ui-review.md +2 -0
  20. package/.cursor/commands/oxe-ui-spec.md +2 -0
  21. package/.cursor/commands/oxe-update.md +2 -0
  22. package/.cursor/commands/oxe-validate-gaps.md +2 -0
  23. package/.cursor/commands/oxe-verify.md +2 -0
  24. package/.cursor/commands/oxe-workstream.md +11 -0
  25. package/.github/prompts/oxe-execute.prompt.md +12 -12
  26. package/.github/prompts/oxe-milestone.prompt.md +12 -0
  27. package/.github/prompts/oxe-obs.prompt.md +12 -0
  28. package/.github/prompts/oxe-quick.prompt.md +12 -12
  29. package/.github/prompts/oxe-spec.prompt.md +2 -2
  30. package/.github/prompts/oxe-workstream.prompt.md +12 -0
  31. package/README.md +205 -442
  32. package/bin/banner.txt +1 -1
  33. package/bin/lib/oxe-plugins.cjs +226 -0
  34. package/bin/lib/oxe-project-health.cjs +97 -1
  35. package/bin/lib/oxe-security.cjs +225 -0
  36. package/bin/oxe-cc.js +29 -0
  37. package/commands/oxe/execute.md +16 -16
  38. package/commands/oxe/milestone.md +16 -0
  39. package/commands/oxe/obs.md +16 -0
  40. package/commands/oxe/quick.md +16 -16
  41. package/commands/oxe/spec.md +2 -2
  42. package/commands/oxe/workstream.md +16 -0
  43. package/lib/sdk/index.cjs +284 -0
  44. package/lib/sdk/index.d.ts +148 -1
  45. package/oxe/personas/README.md +39 -0
  46. package/oxe/personas/architect.md +37 -0
  47. package/oxe/personas/db-specialist.md +36 -0
  48. package/oxe/personas/debugger.md +38 -0
  49. package/oxe/personas/executor.md +38 -0
  50. package/oxe/personas/planner.md +36 -0
  51. package/oxe/personas/researcher.md +35 -0
  52. package/oxe/personas/ui-specialist.md +36 -0
  53. package/oxe/personas/verifier.md +39 -0
  54. package/oxe/templates/CONFIG.md +58 -4
  55. package/oxe/templates/DISCUSS.template.md +44 -0
  56. package/oxe/templates/MEMORY.template.md +49 -0
  57. package/oxe/templates/MILESTONES.template.md +17 -0
  58. package/oxe/templates/OBSERVATIONS.template.md +18 -0
  59. package/oxe/templates/PLUGINS.md +101 -0
  60. package/oxe/templates/ROADMAP.template.md +44 -0
  61. package/oxe/templates/STATE.md +29 -2
  62. package/oxe/templates/config.template.json +5 -0
  63. package/oxe/templates/plan-agent-messages-README.template.md +1 -1
  64. package/oxe/templates/quick-agents.template.json +24 -0
  65. package/oxe/workflows/discuss.md +48 -5
  66. package/oxe/workflows/execute.md +111 -28
  67. package/oxe/workflows/help.md +80 -15
  68. package/oxe/workflows/milestone.md +96 -0
  69. package/oxe/workflows/obs.md +95 -0
  70. package/oxe/workflows/plan-agent.md +31 -1
  71. package/oxe/workflows/plan.md +5 -1
  72. package/oxe/workflows/quick.md +120 -10
  73. package/oxe/workflows/references/plan-agent-chat-protocol.md +14 -0
  74. package/oxe/workflows/scan.md +9 -1
  75. package/oxe/workflows/spec.md +172 -23
  76. package/oxe/workflows/verify.md +77 -17
  77. package/oxe/workflows/workstream.md +96 -0
  78. 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>
@@ -10,7 +10,7 @@ O plano **não** é só uma lista de tarefas: cada agente é um **pacote de cont
10
10
 
11
11
  **Exclusividade:** os papéis definidos no JSON são **efémeros** e **exclusivos** da trilha PLAN + **`/oxe-execute`** com este `runId`. **`/oxe-quick`** ou trabalho fora do `PLAN.md` **não** reutilizam estes agentes (ver **`quick.md`**, **`execute.md`**, referência **`references/plan-agent-chat-protocol.md`**).
12
12
 
13
- Se o utilizador pedir **`--replan`**: aplicar a mesma lógica de replanejamento descrita em **`plan.md`** (VERIFY, SUMMARY, secção Replanejamento) e **atualizar ou recriar** `plan-agents.json` em coerência com o novo `PLAN.md`; gerar **novo** `runId` e repor `lifecycle.status` → `pending_execute` (e limpar ou arquivar `.oxe/plan-agent-messages/` se o utilizador quiser histórico limpo documentar no chat).
13
+ Se o utilizador pedir **`--replan`**: aplicar a mesma lógica de replanejamento descrita em **`plan.md`** (VERIFY, SUMMARY, secção Replanejamento) e **atualizar ou recriar** `plan-agents.json` em coerência com o novo `PLAN.md`; gerar **novo** `runId` e repor `lifecycle.status` → `pending_execute`. Se ainda existir pasta **`.oxe/plan-agent-messages/`** cheia do **run** anterior e o utilizador não precisar dela na raiz, **arquivar** primeiro em **`.oxe/archive/plan-agent-runs/<runId-antigo>/`** (ver **`references/plan-agent-chat-protocol.md`**) ou pedir confirmação antes de sobrescrever; depois recriar **`.oxe/plan-agent-messages/README.md`** para o novo `runId`.
14
14
  </objective>
15
15
 
16
16
  <context>
@@ -26,6 +26,31 @@ Se o utilizador pedir **`--replan`**: aplicar a mesma lógica de replanejamento
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>
@@ -49,12 +74,15 @@ Cada **agente**:
49
74
  |-------|-------------|-------------|
50
75
  | `id` | sim | Slug único estável (`agent-db`, `agent-backend-auth`). |
51
76
  | `role` | sim | Nome legível do papel. |
77
+ | `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
78
  | `scope` | sim | Lista de strings (o que este agente faz, em bullets curtos). |
53
79
  | `taskIds` | sim | Lista de IDs **`T1`…`Tn`** que este agente implementa (subconjunto do `PLAN.md`). |
54
80
  | `dependencies` | não | Lista de **`id`** de outros agentes que devem concluir antes (grafo entre agentes). |
55
81
  | `inputs` | não | Caminhos ou nomes de artefactos a carregar no contexto (ex.: `.oxe/STATE.md`, `.oxe/SPEC.md`). |
56
82
  | `outputs` | não | Paths ou padrões de ficheiros esperados (orientação; o código real vem do PLAN). |
57
83
 
84
+ **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/`.
85
+
58
86
  **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
87
  </format_plan_agents_json>
60
88
 
@@ -69,6 +97,8 @@ Antes de finalizar, validar **em conjunto** `PLAN.md` + `plan-agents.json`:
69
97
  6. **Alinhamento SPEC:** cada `scope` relevante deve ser rastreável a critérios **A*** via `taskIds` → **Aceite vinculado** no PLAN.
70
98
  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
99
 
100
+ 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>`).
101
+
72
102
  Resumo obrigatório no chat: `Gate plan-agent: OK` ou `Gate plan-agent: corrigido (N problemas)`.
73
103
  </plan_agent_quality_gate>
74
104
 
@@ -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
 
@@ -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>
@@ -78,6 +78,20 @@ Opcional: **`taskIds`** — subset das tarefas que esta mensagem cobre.
78
78
  - **`/oxe-quick`** invalida o blueprint (`invalidatedBy: quick`); não reutilizar papéis do JSON no fluxo quick.
79
79
  - Trabalho **fora** do conjunto de `Tn` do `PLAN.md`: não assumir persona do blueprint; opcionalmente pedir confirmação para invalidar (`invalidatedBy: out_of_scope`).
80
80
 
81
+ ## Artefactos no repositório após fecho (recomendação OXE)
82
+
83
+ Durante a trilha ativa, **`plan-agents.json`** e **`.oxe/plan-agent-messages/`** na raiz de `.oxe/` são práticos (caminhos estáveis para **`/oxe-execute`**). Depois de **`lifecycle.closed`** (tipicamente após **`/oxe-verify`** com sucesso), estes ficheiros **deixam de ser necessários** para o dia a dia e **poluem** o explorador e o `git status` se ficarem sempre na raiz.
84
+
85
+ **Recomendação (equilíbrio entre limpeza e auditoria):**
86
+
87
+ 1. **Arquivar por sessão (`runId`), não apagar** — Move-se o histórico para **`.oxe/archive/plan-agent-runs/<runId>/`**:
88
+ - **`messages/`** — todo o conteúdo actual de **`.oxe/plan-agent-messages/`** excepto um `README.md` de índice opcional (ou mover também o README antigo para dentro do arquivo).
89
+ - **`plan-agents.json`** — cópia final do blueprint **no momento do fecho** (o JSON na raiz `.oxe/` pode ser **removido** após cópia, ou substituído por um stub mínimo só se outra ferramenta exigir o path; o normal é remover da raiz após arquivo).
90
+ 2. **Não commitar ruído sem querer** — Quem preferir **não** versionar handoffs: adicionar **`.oxe/archive/plan-agent-runs/`** ou **`.oxe/plan-agent-messages/`** ao **`.gitignore`** do projeto (trade-off: perde-se histórico no Git).
91
+ 3. **Pastas por sessão desde o primeiro dia** (alternativa maior) — **`.oxe/plan-agent-runs/<runId>/messages/`** + **`plan-agents.json`** dentro da mesma pasta, com um **`plan-agents.active`** ou entrada em **STATE** a apontar o `runId` corrente. Exige alterar todos os workflows e o mental model dos agentes; reserve-se para uma evolução do pacote se a raiz `.oxe/` tiver de ficar sempre mínima.
92
+
93
+ **Resumo:** para o fluxo OXE actual, **arquivar em `.oxe/archive/plan-agent-runs/<runId>/` após verify OK** é a forma mais simples de “não precisarem mais existir na raiz” sem perder rastreabilidade. Apagar em massa só com **confirmação explícita** do utilizador.
94
+
81
95
  ## Ver também
82
96
 
83
97
  - [`oxe/workflows/plan-agent.md`](../plan-agent.md)
@@ -32,7 +32,15 @@ Se **`.oxe/config.json`** tiver `scan_focus_globs` ou `scan_ignore_globs`, **pri
32
32
  - **CONVENTIONS.md** — estilo de código (naming, formatação, imports), padrões de erros/logging, organização de módulos; **prescreve** o que seguir em novas alterações (com paths em backticks).
33
33
  - **CONCERNS.md** — dívida técnica, áreas frágeis, riscos de segurança/desempenho, dependências sensíveis; cada item com impacto breve e **arquivos** referenciados.
34
34
  4. Atualizar **`.oxe/STATE.md`**: **Data** do scan (ISO), fase sugerida `scan_complete`, próximo passo `oxe:spec` ou `oxe:plan` se já houver SPEC.
35
- 5. Resumir em 5–10 linhas no chat: o que foi escrito e o próximo passo sugerido.
35
+ 5. **Scale-adaptive** (se `scale_adaptive: true` em `.oxe/config.json` ou não configurado ativo por padrão):
36
+ - Contar arquivos de código (excluindo `node_modules`, `dist`, `build`).
37
+ - Contar dependências diretas (se houver `package.json`, `pom.xml`, `go.mod`, etc.).
38
+ - Sugerir profile adequado no chat:
39
+ - **< 50 arquivos, < 10 dependências** → sugerir `profile: "fast"` no config.
40
+ - **50–500 arquivos** → sugerir `profile: "balanced"` (padrão).
41
+ - **> 500 arquivos ou sistema legado** → sugerir `profile: "strict"`.
42
+ - Se já houver `profile` no `.oxe/config.json`, não sugerir mudança — apenas confirmar.
43
+ 6. Resumir em 5–10 linhas no chat: o que foi escrito, o próximo passo sugerido, e (se scale-adaptive ativo) o profile recomendado.
36
44
  </process>
37
45
 
38
46
  <success_criteria>
@@ -1,42 +1,191 @@
1
1
  # OXE — Workflow: spec
2
2
 
3
3
  <objective>
4
- Registrar a intenção do usuário em **`.oxe/SPEC.md`**: escopo, **critérios de aceite com IDs estáveis (A1, A2, …)** e coluna **Como verificar**, não objetivos e suposições. A spec é o contrato antes do plano.
4
+ Conduzir as **5 fases** do processo de especificação e produzir dois artefatos:
5
5
 
6
- Para trabalho **muito pequeno**, o usuário pode preferir **`oxe:quick`** (`.oxe/QUICK.md`) em vez deste fluxo não bloqueie: se pedirem explicitamente quick, redirecione.
6
+ 1. **`.oxe/SPEC.md`** contrato formal com critérios de aceite estáveis (A1, A2, …) e coluna **Como verificar**.
7
+ 2. **`.oxe/ROADMAP.md`** — fases de entrega mapeadas a requisitos (R-ID) e critérios (A*).
7
8
 
8
- Se **`.oxe/config.json`** tiver `discuss_before_plan: true`, mencionar no fim que o próximo passo recomendado é **`oxe:discuss`** antes do plano.
9
+ **Foco em redução de requisições:** as fases são estruturadas para extrair o máximo de informação por rodada nunca uma pergunta por vez, sempre blocos coesos.
9
10
 
10
- Entrada: texto livre na mensagem ou caminho `@arquivo.md` / anexo para incorporar PRD/notas.
11
+ Para trabalho **muito pequeno** que não justifica spec completa: redirecionar para **`oxe:quick`**.
12
+
13
+ Se **`.oxe/config.json`** tiver `discuss_before_plan: true`: mencionar no final da Fase 5 que o próximo passo é **`oxe:discuss`** antes do plano.
11
14
  </objective>
12
15
 
13
16
  <context>
14
- **Pré-requisito:** preferencialmente **scan** executado. Se não existir scan, mencionar na spec que o mapa está pendente.
15
-
16
- Leia `.oxe/STATE.md` e, se existirem, trechos relevantes de `.oxe/codebase/OVERVIEW.md` e `STACK.md` para não contradizer o projeto real.
17
+ **Pré-requisito preferível:** scan executado. Se não existir, mencionar na spec que o mapa está pendente.
17
18
 
18
- Use o template **`oxe/templates/SPEC.template.md`**: tabela **Critérios de aceite** com colunas **ID | Critério | Como verificar**.
19
+ Ler no início:
20
+ - `.oxe/STATE.md` — fase atual, decisões, workstream ativo
21
+ - `.oxe/codebase/OVERVIEW.md` e `STACK.md` se existirem — não contradizer o repo
22
+ - **`.oxe/OBSERVATIONS.md`** — se houver entradas `pendente` com impacto `spec` ou `all`, incorporá-las na Fase 3 (Requisitos) e marcá-las `incorporada → spec (data)` após uso
19
23
 
20
- **Brownfield (COBOL, JCL, copybooks, VB6, SP):** quando o objetivo for documentar ou planear migração, ver **`oxe/workflows/references/legacy-brownfield.md`** — epicos por **trilha** (batch, online, desktop↔SQL), critérios **A*** verificáveis por Grep/leitura/checklist, e secções opcionais alinháveis a `spec_required_sections` em `.oxe/config.json` (ver `oxe/templates/CONFIG.md`).
24
+ **Brownfield (COBOL, JCL, copybooks, VB6, SP):** quando o objetivo for documentar ou planear migração, ver **`oxe/workflows/references/legacy-brownfield.md`** — épicos por trilha, critérios A* verificáveis por Grep/leitura/checklist.
21
25
 
22
- **Exploratório / sistema grande / reversa / modernização:** quando a tecnologia ou o âmbito for incerto, houver necessidade de **mapear** o sistema, **engenharia reversa** ou **hipóteses de modernização** antes de tarefas executáveis, recomendar **`oxe:research`** (notas datadas em `.oxe/research/` + índice `.oxe/RESEARCH.md`) **antes** de `oxe:plan` — sugestão, não bloqueio obrigatório para specs mínimas.
26
+ Usar templates: **`oxe/templates/SPEC.template.md`** e **`oxe/templates/ROADMAP.template.md`**.
23
27
  </context>
24
28
 
29
+ <fase_1_perguntas>
30
+ ## Fase 1 — Perguntas
31
+
32
+ **Objetivo:** entender completamente a ideia antes de qualquer escrita de artefato.
33
+
34
+ **Regra de ouro:** nunca uma pergunta por vez — sempre um **bloco coeso** de 3-5 perguntas por rodada. Máximo **3 rodadas**; sinalize quando achar que tem entendimento completo e peça confirmação antes de avançar.
35
+
36
+ **Blocos de perguntas (adaptar ao contexto):**
37
+
38
+ *Bloco A — Objetivo e motivação:*
39
+ - Qual o problema central que isso resolve? Quem se beneficia?
40
+ - Há uma solução atual (mesmo que ruim)? O que falha nela?
41
+ - Como o sucesso será medido — qual o indicador mais importante?
42
+
43
+ *Bloco B — Restrições e tecnologia:*
44
+ - Quais tecnologias ou frameworks são obrigatórios ou proibidos?
45
+ - Há restrições de prazo, orçamento, tamanho do time ou infraestrutura?
46
+ - Quais integrações existentes precisam ser mantidas?
47
+
48
+ *Bloco C — Casos extremos e escopo:*
49
+ - Quais cenários de erro ou casos extremos são críticos de tratar na v1?
50
+ - O que definitivamente está **fora** do escopo desta entrega?
51
+ - Há comportamento esperado que você sabe que não é óbvio?
52
+
53
+ **Estratégia de rodadas:**
54
+ - Rodada 1: blocos A + B (entendimento geral)
55
+ - Rodada 2: bloco C + clarificações específicas (se necessário)
56
+ - Rodada 3 (máx): apenas se ainda houver ambiguidade crítica
57
+ - Após rodada 3: avançar para Fase 2 mesmo com suposições explícitas
58
+
59
+ **Ao final:** "Acho que entendi completamente. Confirma antes de avançarmos para pesquisa/requisitos? [resumo em 3-5 bullets]"
60
+ </fase_1_perguntas>
61
+
62
+ <fase_2_pesquisa>
63
+ ## Fase 2 — Pesquisa (opcional, recomendada)
64
+
65
+ **Objetivo:** investigar domínios incertos antes de escrever requisitos.
66
+
67
+ **Proposta ao usuário:** com base na Fase 1, listar 2-4 áreas de investigação sugeridas e perguntar quais investigar. Exemplos:
68
+ - "Há 3 áreas com incerteza técnica: autenticação JWT, integração com Stripe, e deploy em edge. Quer investigar alguma antes de avançar para requisitos?"
69
+
70
+ **Se aprovado:**
71
+ - Criar notas de pesquisa datadas em `.oxe/research/YYYY-MM-DD-<slug>.md` (usar fluxo de `research.md`)
72
+ - Atualizar `.oxe/RESEARCH.md` com índice
73
+ - Consolidar descobertas relevantes antes de avançar para Fase 3
74
+
75
+ **Se pulado:** registrar em `SPEC.md` as áreas de incerteza como suposições explícitas.
76
+
77
+ **Explorações grandes / sistemas legado:** ver **`oxe/workflows/references/legacy-brownfield.md`** — progressive disclosure por área, multiple sessions, epicos por trilha.
78
+ </fase_2_pesquisa>
79
+
80
+ <fase_3_requisitos>
81
+ ## Fase 3 — Requisitos
82
+
83
+ **Objetivo:** extrair uma tabela clara de requisitos com versionamento (v1/v2/fora).
84
+
85
+ **Incorporar primeiro:** verificar `.oxe/OBSERVATIONS.md` por entradas `pendente` com impacto `spec` ou `all` — incorporar aqui antes de finalizar a tabela.
86
+
87
+ **Formato da tabela:**
88
+
89
+ | R-ID | Requisito | Versão | Critério de aceite |
90
+ |------|-----------|--------|--------------------|
91
+ | R1 | [o que o sistema deve fazer] | v1 | A1 — [como verificar] |
92
+ | R2 | [outro requisito] | v1 | A2 — [como verificar] |
93
+ | R3 | [requisito futuro] | v2 | A3 — [quando implementado] |
94
+ | R4 | [fora do escopo] | fora | — |
95
+
96
+ **Definições:**
97
+ - **v1** = MVP essencial; entra no próximo `/oxe-plan`
98
+ - **v2** = evolução futura; entra em ciclos seguintes
99
+ - **fora** = explicitamente descartado desta entrega
100
+
101
+ **Apresentar ao usuário para validação** antes de avançar para Fase 4. Se ajustar: atualizar tabela e repetir até aprovação.
102
+ </fase_3_requisitos>
103
+
104
+ <fase_4_roteiro>
105
+ ## Fase 4 — Roteiro
106
+
107
+ **Objetivo:** criar fases de entrega mapeadas aos requisitos v1 e escrever `.oxe/ROADMAP.md`.
108
+
109
+ **Lógica de agrupamento:**
110
+ - Agrupar requisitos v1 em fases por **dependência técnica** e **valor entregável**
111
+ - Cada fase deve ter resultado demonstrável (não apenas código interno)
112
+ - Fase 1 = o que `/oxe-plan` implementará no próximo ciclo
113
+ - Fases 2+ = ciclos futuros de spec→plan→execute→verify
114
+
115
+ **Escrever `.oxe/ROADMAP.md`** usando `oxe/templates/ROADMAP.template.md`:
116
+
117
+ ```markdown
118
+ ---
119
+ oxe_doc: roadmap
120
+ status: draft
121
+ updated: <data>
122
+ spec_ref: .oxe/SPEC.md
123
+ ---
124
+
125
+ ## Fase 1 — [Nome]
126
+ **Requisitos:** R1, R3
127
+ **Critérios de aceite:** A1, A2, A3
128
+ **Escopo:** ...
129
+
130
+ ## Fase 2 — [Nome]
131
+ **Requisitos:** R2, R5
132
+ **Critérios de aceite:** A4, A5
133
+ **Escopo:** ...
134
+
135
+ ## Fora do escopo (v2+)
136
+ - R4: [descrição] — motivo
137
+ ```
138
+ </fase_4_roteiro>
139
+
140
+ <fase_5_aprovacao>
141
+ ## Fase 5 — Aprovação e próximo passo
142
+
143
+ **Objetivo:** confirmar o roteiro com o usuário e redirecionar para o plano.
144
+
145
+ **Apresentar resumo:**
146
+ - Objetivo em 1 frase
147
+ - Requisitos v1 (N itens), v2 (M itens), fora (K itens)
148
+ - Roteiro: Fase 1 → N critérios; Fase 2 → M critérios
149
+ - Critérios de aceite da Fase 1: A1, A2, …
150
+
151
+ **Perguntar ao usuário:**
152
+ > "Roteiro aprovado? Quer gerar o plano agora ou ajustar algo antes?"
153
+
154
+ **Se aprovado — oferecer os próximos passos:**
155
+
156
+ | Opção | Quando usar | Próximo passo |
157
+ |-------|-------------|---------------|
158
+ | Plano simples | Tarefa clara, sem orquestração multi-agente | `/oxe-plan` |
159
+ | Plano com agentes | Time distribuído, domínios distintos, ondas paralelas | `/oxe-plan-agent` |
160
+ | Discutir antes | `discuss_before_plan: true` em config, ou risco técnico | `/oxe-discuss` → `/oxe-plan` |
161
+
162
+ **Se ajustar:** voltar à fase indicada (Requisitos, Roteiro ou Perguntas) e repetir.
163
+
164
+ **Ao finalizar:**
165
+ - Marcar `ROADMAP.md` → `status: approved`
166
+ - Atualizar `STATE.md`: `phase: spec_ready`, próximo passo conforme escolha
167
+ </fase_5_aprovacao>
168
+
25
169
  <process>
26
- 1. Resolver entrada: se começar com `@`, ler arquivo; senão usar o texto da conversa.
27
- 2. Criar ou atualizar **`.oxe/SPEC.md`** usando `oxe/templates/SPEC.template.md` como esqueleto. Se o ficheiro já existir com YAML inicial (`---` … `---` antes do primeiro `#`), **preservar** chaves existentes; **atualizar** `updated:` com a data ISO do dia; ajustar `status` (ex. para `ready`) se o utilizador declarar a spec fechada. Se não houver frontmatter, pode adicioná-lo na primeira edição substancial.
28
- 3. Garantir seções:
29
- - **Objetivo**uma frase clara.
30
- - **Escopo**bullets dentro / fora.
31
- - **Critérios de aceite** — tabela com IDs **A1**, **A2**, … (testáveis).
32
- - **Suposições e riscos**.
33
- - **Referências** paths se conhecidos.
34
- 4. Atualizar **`.oxe/STATE.md`**: fase `spec_ready`, próximo passo `oxe:discuss` ou `oxe:plan` conforme `discuss_before_plan`.
35
- 5. Responder com resumo da spec e no máximo 3 perguntas objetivas se algo crítico estiver ambíguo.
170
+ 1. Ler `.oxe/STATE.md`, `OVERVIEW.md`, `STACK.md` e `.oxe/OBSERVATIONS.md` (verificar pendentes).
171
+ 2. **Fase 1 Perguntas:** enviar bloco coeso de 3-5 perguntas; máx 3 rodadas; confirmar entendimento.
172
+ 3. **Fase 2 — Pesquisa:** propor áreas de investigação; aguardar aprovação; executar se aprovado.
173
+ 4. **Fase 3 Requisitos:** extrair tabela R-ID com v1/v2/fora e critérios A*; incorporar OBS pendentes; apresentar para validação.
174
+ 5. **Fase 4 Roteiro:** agrupar requisitos v1 em fases; escrever `.oxe/ROADMAP.md`.
175
+ 6. Escrever **`.oxe/SPEC.md`** usando `oxe/templates/SPEC.template.md`:
176
+ - Frontmatter YAML (`oxe_doc: spec`, `status`, `updated`, `inputs`)
177
+ - Objetivo, Escopo (dentro/fora), Critérios de aceite (tabela A*), Suposições e riscos, Referências
178
+ - Preservar chaves existentes se SPEC.md existir; atualizar `updated:`
179
+ 7. **Fase 5 Aprovação:** apresentar resumo, aguardar aprovação do roteiro, redirecionar.
180
+ 8. Atualizar **`.oxe/STATE.md`**: `phase: spec_ready`, próximo passo.
181
+ 9. Marcar OBS incorporadas em `.oxe/OBSERVATIONS.md` se houver pendentes de impacto `spec`.
36
182
  </process>
37
183
 
38
184
  <success_criteria>
39
- - [ ] `.oxe/SPEC.md` existe e cada critério tem ID **A*** e forma de verificar.
40
- - [ ] `STATE.md` atualizado.
41
- - [ ] Ambiguidades críticas foram perguntas ou registradas como suposição explícita.
185
+ - [ ] `.oxe/SPEC.md` existe com critérios A* e coluna Como verificar; `STATE.md` atualizado.
186
+ - [ ] `.oxe/ROADMAP.md` existe com fases mapeadas a R-IDs e A*, status `approved` (ou `draft` se usuário não confirmou).
187
+ - [ ] Tabela de requisitos R-ID foi apresentada e validada (v1/v2/fora) antes do roteiro.
188
+ - [ ] Usuário foi consultado no gate da Fase 5 e escolheu o próximo passo.
189
+ - [ ] OBS pendentes com impacto `spec` foram incorporadas e marcadas `incorporada`.
190
+ - [ ] Máximo 3 rodadas de perguntas utilizadas — não mais.
42
191
  </success_criteria>