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.
- package/.cursor/commands/oxe-execute.md +2 -2
- package/.cursor/commands/oxe-loop.md +11 -0
- package/.cursor/commands/oxe-milestone.md +11 -0
- package/.cursor/commands/oxe-obs.md +11 -0
- package/.cursor/commands/oxe-project.md +11 -0
- package/.cursor/commands/oxe-quick.md +2 -2
- package/.cursor/commands/oxe-security.md +11 -0
- package/.cursor/commands/oxe-spec.md +2 -2
- package/.cursor/commands/oxe-workstream.md +11 -0
- package/.cursor/commands/oxe.md +9 -0
- package/.github/prompts/oxe-execute.prompt.md +12 -12
- package/.github/prompts/oxe-loop.prompt.md +12 -0
- package/.github/prompts/oxe-milestone.prompt.md +12 -0
- package/.github/prompts/oxe-obs.prompt.md +12 -0
- package/.github/prompts/oxe-project.prompt.md +12 -0
- package/.github/prompts/oxe-quick.prompt.md +12 -12
- package/.github/prompts/oxe-security.prompt.md +12 -0
- package/.github/prompts/oxe-spec.prompt.md +2 -2
- package/.github/prompts/oxe-workstream.prompt.md +12 -0
- package/.github/prompts/oxe.prompt.md +12 -0
- package/README.md +287 -544
- package/bin/banner.txt +1 -1
- package/bin/lib/oxe-plugins.cjs +226 -0
- package/bin/lib/oxe-project-health.cjs +97 -1
- package/bin/lib/oxe-security.cjs +225 -0
- package/bin/oxe-cc.js +30 -1
- package/commands/oxe/execute.md +16 -16
- package/commands/oxe/loop.md +17 -0
- package/commands/oxe/milestone.md +16 -0
- package/commands/oxe/obs.md +16 -0
- package/commands/oxe/oxe.md +16 -0
- package/commands/oxe/project.md +16 -0
- package/commands/oxe/quick.md +16 -16
- package/commands/oxe/security.md +16 -0
- package/commands/oxe/spec.md +2 -2
- package/commands/oxe/workstream.md +16 -0
- package/lib/sdk/index.cjs +284 -0
- package/lib/sdk/index.d.ts +148 -1
- package/oxe/personas/README.md +39 -0
- package/oxe/personas/architect.md +37 -0
- package/oxe/personas/db-specialist.md +36 -0
- package/oxe/personas/debugger.md +38 -0
- package/oxe/personas/executor.md +38 -0
- package/oxe/personas/planner.md +36 -0
- package/oxe/personas/researcher.md +35 -0
- package/oxe/personas/ui-specialist.md +36 -0
- package/oxe/personas/verifier.md +39 -0
- package/oxe/templates/CONFIG.md +54 -4
- package/oxe/templates/DISCUSS.template.md +44 -0
- package/oxe/templates/MEMORY.template.md +49 -0
- package/oxe/templates/MILESTONES.template.md +17 -0
- package/oxe/templates/OBSERVATIONS.template.md +18 -0
- package/oxe/templates/PLUGINS.md +101 -0
- package/oxe/templates/ROADMAP.template.md +44 -0
- package/oxe/templates/SECURITY.template.md +72 -0
- package/oxe/templates/STATE.md +29 -2
- package/oxe/templates/config.template.json +5 -0
- package/oxe/templates/plan-agents.template.json +3 -2
- package/oxe/templates/quick-agents.template.json +24 -0
- package/oxe/workflows/discuss.md +48 -5
- package/oxe/workflows/execute.md +133 -28
- package/oxe/workflows/help.md +105 -24
- package/oxe/workflows/loop.md +57 -0
- package/oxe/workflows/milestone.md +96 -0
- package/oxe/workflows/obs.md +95 -0
- package/oxe/workflows/oxe.md +115 -0
- package/oxe/workflows/plan-agent.md +50 -3
- package/oxe/workflows/plan.md +7 -2
- package/oxe/workflows/project.md +50 -0
- package/oxe/workflows/quick.md +120 -10
- package/oxe/workflows/research.md +16 -0
- package/oxe/workflows/scan.md +23 -1
- package/oxe/workflows/security.md +61 -0
- package/oxe/workflows/spec.md +172 -23
- package/oxe/workflows/verify.md +80 -18
- package/oxe/workflows/workstream.md +96 -0
- package/package.json +3 -2
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
oxe_memory: true
|
|
3
|
+
persona: (executor | planner | verifier | researcher | debugger | architect | ui-specialist | db-specialist | custom)
|
|
4
|
+
session: YYYY-MM-DD
|
|
5
|
+
project: (nome do projeto ou — )
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# OXE — Memory Sidecar
|
|
9
|
+
|
|
10
|
+
> Memória persistente de sessão para agente OXE.
|
|
11
|
+
> Criado automaticamente pelo workflow que gerou esta sessão.
|
|
12
|
+
> Referenciado no STATE.md sob **Memory (sidecars de sessão)**.
|
|
13
|
+
|
|
14
|
+
## Contexto da sessão
|
|
15
|
+
|
|
16
|
+
- **Data:** YYYY-MM-DD
|
|
17
|
+
- **Persona:** (nome da persona)
|
|
18
|
+
- **Escopo:** (o que foi trabalhado nesta sessão)
|
|
19
|
+
- **Fase OXE:** scan_complete | spec_ready | discuss_complete | plan_ready | executing | verify_complete
|
|
20
|
+
|
|
21
|
+
## Aprendizados
|
|
22
|
+
|
|
23
|
+
_(O que foi descoberto que não estava no codebase ou na SPEC)_
|
|
24
|
+
|
|
25
|
+
- …
|
|
26
|
+
|
|
27
|
+
## Decisões tomadas
|
|
28
|
+
|
|
29
|
+
_(Decisões D-NN relevantes para sessões futuras)_
|
|
30
|
+
|
|
31
|
+
- D-NN: …
|
|
32
|
+
|
|
33
|
+
## Padrões observados
|
|
34
|
+
|
|
35
|
+
_(Padrões de código, arquitetura ou comportamento identificados)_
|
|
36
|
+
|
|
37
|
+
- …
|
|
38
|
+
|
|
39
|
+
## Avisos para sessões futuras
|
|
40
|
+
|
|
41
|
+
_(Armadilhas, fragilidades, ou contexto que o próximo agente precisa saber)_
|
|
42
|
+
|
|
43
|
+
- …
|
|
44
|
+
|
|
45
|
+
## Arquivos chave acessados
|
|
46
|
+
|
|
47
|
+
_(Paths mais importantes lidos/modificados nesta sessão)_
|
|
48
|
+
|
|
49
|
+
- `…`
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# OXE — Milestones
|
|
2
|
+
|
|
3
|
+
> Índice de marcos de entrega do projeto. Cada milestone é uma versão com artefatos arquivados em `.oxe/milestones/M-NN/`.
|
|
4
|
+
|
|
5
|
+
## M-01 — (nome) (ativo)
|
|
6
|
+
|
|
7
|
+
- **Status:** ativo | entregue | cancelado
|
|
8
|
+
- **Iniciado:** YYYY-MM-DD
|
|
9
|
+
- **Encerrado:** — (preencher ao completar)
|
|
10
|
+
- **SPEC:** `.oxe/SPEC.md` | `.oxe/milestones/M-01/SPEC.md` (após arquivamento)
|
|
11
|
+
- **Critérios:** A1, A2, … (IDs da SPEC)
|
|
12
|
+
- **Entregável:** (descrever o que este milestone entrega)
|
|
13
|
+
- **Notas:** (opcional)
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
_(Adicione M-02, M-03, … conforme `/oxe-milestone new`.)_
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Observações OXE
|
|
2
|
+
|
|
3
|
+
<!-- Registradas via /oxe-obs. Incorporadas automaticamente em /oxe-spec, /oxe-plan,
|
|
4
|
+
/oxe-discuss e /oxe-execute quando há entradas com status: pendente.
|
|
5
|
+
Após incorporação: status muda para "incorporada → <workflow> (YYYY-MM-DD)". -->
|
|
6
|
+
|
|
7
|
+
| ID | Data | Contexto | Impacto | Status |
|
|
8
|
+
|----|------|----------|---------|--------|
|
|
9
|
+
| OBS-001 | YYYY-MM-DD | [fase/tarefa] | spec, plan, execute ou all | pendente |
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
### OBS-001 — YYYY-MM-DD | [contexto: fase atual / tarefa ativa]
|
|
14
|
+
|
|
15
|
+
**Impacto:** spec | plan | execute | all
|
|
16
|
+
**Status:** pendente
|
|
17
|
+
|
|
18
|
+
[Texto da observação — restrição, descoberta técnica, preferência, risco ou decisão]
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# OXE — Plugin System
|
|
2
|
+
|
|
3
|
+
Plugins OXE são módulos CJS colocados em **`.oxe/plugins/`** que se executam em resposta a eventos do ciclo de vida dos workflows.
|
|
4
|
+
|
|
5
|
+
## Instalação
|
|
6
|
+
|
|
7
|
+
Crie um arquivo `.cjs` em `.oxe/plugins/`:
|
|
8
|
+
|
|
9
|
+
```js
|
|
10
|
+
// .oxe/plugins/meu-plugin.cjs
|
|
11
|
+
module.exports = {
|
|
12
|
+
name: 'meu-plugin',
|
|
13
|
+
version: '1.0.0',
|
|
14
|
+
hooks: {
|
|
15
|
+
async onAfterVerify({ projectRoot, result }) {
|
|
16
|
+
if (result === 'verify_complete') {
|
|
17
|
+
console.log('[meu-plugin] Entrega verificada com sucesso!');
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Hooks disponíveis
|
|
25
|
+
|
|
26
|
+
| Hook | Quando dispara | Contexto (`ctx`) |
|
|
27
|
+
|------|---------------|------------------|
|
|
28
|
+
| `onBeforeScan` | Antes do scan iniciar | `{ projectRoot }` |
|
|
29
|
+
| `onAfterScan` | Após os 7 mapas serem gerados | `{ projectRoot, maps: string[] }` |
|
|
30
|
+
| `onBeforeSpec` | Antes do workflow spec | `{ projectRoot }` |
|
|
31
|
+
| `onAfterSpec` | Após SPEC.md ser gerado | `{ projectRoot, specPath: string }` |
|
|
32
|
+
| `onBeforePlan` | Antes do workflow plan | `{ projectRoot }` |
|
|
33
|
+
| `onAfterPlan` | Após PLAN.md ser gerado | `{ projectRoot, planPath: string }` |
|
|
34
|
+
| `onPlanGenerated` | Alias de `onAfterPlan` | `{ projectRoot, planPath: string }` |
|
|
35
|
+
| `onBeforeExecute` | Antes de iniciar uma onda | `{ projectRoot, wave: number }` |
|
|
36
|
+
| `onAfterExecute` | Após onda concluída | `{ projectRoot, wave: number, tasks: string[] }` |
|
|
37
|
+
| `onBeforeVerify` | Antes do workflow verify | `{ projectRoot }` |
|
|
38
|
+
| `onAfterVerify` | Após VERIFY.md ser gerado | `{ projectRoot, result: 'verify_complete'\|'verify_failed' }` |
|
|
39
|
+
| `onVerifyComplete` | Quando verify_complete | `{ projectRoot, verifyPath: string }` |
|
|
40
|
+
| `onVerifyFailed` | Quando verify_failed | `{ projectRoot, verifyPath: string, gaps: string[] }` |
|
|
41
|
+
| `onMilestoneNew` | Novo milestone criado | `{ projectRoot, milestoneId: string, name: string }` |
|
|
42
|
+
| `onMilestoneComplete` | Milestone encerrado | `{ projectRoot, milestoneId: string, archivePath: string }` |
|
|
43
|
+
| `onWorkstreamNew` | Novo workstream criado | `{ projectRoot, workstream: string }` |
|
|
44
|
+
|
|
45
|
+
## Exemplos de uso
|
|
46
|
+
|
|
47
|
+
### Notificação Slack
|
|
48
|
+
|
|
49
|
+
```js
|
|
50
|
+
// .oxe/plugins/slack-notify.cjs
|
|
51
|
+
const https = require('https');
|
|
52
|
+
|
|
53
|
+
module.exports = {
|
|
54
|
+
name: 'slack-notify',
|
|
55
|
+
version: '1.0.0',
|
|
56
|
+
hooks: {
|
|
57
|
+
async onVerifyComplete({ projectRoot }) {
|
|
58
|
+
const webhookUrl = process.env.SLACK_WEBHOOK_OXE;
|
|
59
|
+
if (!webhookUrl) return;
|
|
60
|
+
// enviar notificação...
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Geração de changelog
|
|
67
|
+
|
|
68
|
+
```js
|
|
69
|
+
// .oxe/plugins/changelog.cjs
|
|
70
|
+
const fs = require('fs');
|
|
71
|
+
const path = require('path');
|
|
72
|
+
|
|
73
|
+
module.exports = {
|
|
74
|
+
name: 'changelog',
|
|
75
|
+
version: '1.0.0',
|
|
76
|
+
hooks: {
|
|
77
|
+
async onMilestoneComplete({ projectRoot, milestoneId }) {
|
|
78
|
+
const entry = `## ${milestoneId} — ${new Date().toISOString().split('T')[0]}\n\n`;
|
|
79
|
+
const changelogPath = path.join(projectRoot, 'CHANGELOG.md');
|
|
80
|
+
const existing = fs.existsSync(changelogPath) ? fs.readFileSync(changelogPath, 'utf8') : '';
|
|
81
|
+
fs.writeFileSync(changelogPath, entry + existing, 'utf8');
|
|
82
|
+
},
|
|
83
|
+
},
|
|
84
|
+
};
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Erros em plugins
|
|
88
|
+
|
|
89
|
+
Erros em hooks individuais são capturados e logados como warnings — não interrompem o workflow. Use `oxe-cc doctor` para validar plugins:
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
oxe-cc doctor --plugins
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## Regras
|
|
96
|
+
|
|
97
|
+
1. Plugins devem ter extensão `.cjs`.
|
|
98
|
+
2. Plugins devem exportar `name` (string) e `hooks` (objeto).
|
|
99
|
+
3. Hooks são assíncronos por padrão mas podem ser síncronos.
|
|
100
|
+
4. Plugins não devem alterar artefatos OXE diretamente (STATE.md, PLAN.md, etc.) — use os outputs do contexto.
|
|
101
|
+
5. Máximo recomendado: 20 plugins por projeto.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
oxe_doc: roadmap
|
|
3
|
+
status: draft
|
|
4
|
+
updated: YYYY-MM-DD
|
|
5
|
+
spec_ref: .oxe/SPEC.md
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Roteiro de Entrega
|
|
9
|
+
|
|
10
|
+
<!-- Produzido pelo /oxe-spec (Fase 4). Cada fase mapeia requisitos R-ID → critérios A* da SPEC.
|
|
11
|
+
Fase 1 é o alvo do próximo /oxe-plan ou /oxe-plan-agent.
|
|
12
|
+
Fases seguintes entram em ciclos futuros de spec → plan → execute → verify. -->
|
|
13
|
+
|
|
14
|
+
## Fase 1 — [Nome curto da fase]
|
|
15
|
+
|
|
16
|
+
**Requisitos:** R1, R2
|
|
17
|
+
**Critérios de aceite:** A1, A2, A3
|
|
18
|
+
**Escopo:** o que será construído nesta fase (1–3 frases)
|
|
19
|
+
|
|
20
|
+
## Fase 2 — [Nome curto da fase]
|
|
21
|
+
|
|
22
|
+
**Requisitos:** R3, R4
|
|
23
|
+
**Critérios de aceite:** A4, A5
|
|
24
|
+
**Escopo:** o que será construído nesta fase (1–3 frases)
|
|
25
|
+
|
|
26
|
+
<!-- Adicionar mais fases conforme necessário -->
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Fora do escopo (v2+)
|
|
31
|
+
|
|
32
|
+
| Requisito | Motivo do adiamento |
|
|
33
|
+
|-----------|---------------------|
|
|
34
|
+
| R5: [descrição] | Complexidade técnica — reservado para v2 |
|
|
35
|
+
| R6: [descrição] | Depende de R3 estar estável |
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Histórico de aprovação
|
|
40
|
+
|
|
41
|
+
| Versão | Data | Comentário |
|
|
42
|
+
|--------|------|------------|
|
|
43
|
+
| v1 draft | YYYY-MM-DD | Gerado pelo /oxe-spec |
|
|
44
|
+
| v1 aprovado | YYYY-MM-DD | Aprovado pelo usuário — seguir para /oxe-plan Fase 1 |
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
---
|
|
2
|
+
oxe_doc: security
|
|
3
|
+
status: draft
|
|
4
|
+
updated: YYYY-MM-DD
|
|
5
|
+
stack_ref: .oxe/codebase/STACK.md
|
|
6
|
+
plan_ref: .oxe/PLAN.md
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Auditoria de Segurança OXE
|
|
10
|
+
|
|
11
|
+
## Stack e escopo
|
|
12
|
+
|
|
13
|
+
**Stack identificado:** [linguagem, framework, DB, auth]
|
|
14
|
+
**Categorias OWASP avaliadas:** A01, A02, A03, ...
|
|
15
|
+
**Categorias descartadas:** A04 (motivo), A08 (motivo), ...
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Achados
|
|
20
|
+
|
|
21
|
+
### P0 — Crítico (requer ação imediata)
|
|
22
|
+
|
|
23
|
+
| ID | Categoria | Arquivo:linha | Padrão encontrado | Recomendação | Tarefa |
|
|
24
|
+
|----|-----------|--------------|-------------------|--------------|--------|
|
|
25
|
+
| S-01 | A07 — Auth | `src/auth/login.ts:42` | Senha comparada sem hash | Usar bcrypt/argon2 | T_new |
|
|
26
|
+
|
|
27
|
+
### P1 — Alto (antes do próximo deploy)
|
|
28
|
+
|
|
29
|
+
| ID | Categoria | Arquivo:linha | Padrão encontrado | Recomendação | Tarefa |
|
|
30
|
+
|----|-----------|--------------|-------------------|--------------|--------|
|
|
31
|
+
| S-02 | A05 — Config | `.env.example:8` | JWT_SECRET sem rotação documentada | Documentar política de rotação | T3 |
|
|
32
|
+
|
|
33
|
+
### P2 — Médio (ação recomendada, compensação aceitável)
|
|
34
|
+
|
|
35
|
+
| ID | Categoria | Arquivo:linha | Padrão encontrado | Recomendação | Tarefa |
|
|
36
|
+
|----|-----------|--------------|-------------------|--------------|--------|
|
|
37
|
+
| S-03 | A09 — Logging | `src/api/handler.ts:15` | Erro logado com stack trace completo em produção | Filtrar dados sensíveis em prod | T_new |
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Resultado por categoria
|
|
42
|
+
|
|
43
|
+
| Categoria OWASP | Status | Achados |
|
|
44
|
+
|-----------------|--------|---------|
|
|
45
|
+
| A01 — Broken Access Control | ✅ Sem achados | — |
|
|
46
|
+
| A02 — Cryptographic Failures | ⚠️ P1 | S-02 |
|
|
47
|
+
| A03 — Injection | ✅ Sem achados | — |
|
|
48
|
+
| A05 — Security Misconfiguration | ⚠️ P1 | S-02 |
|
|
49
|
+
| A07 — Authentication Failures | ❌ P0 | S-01 |
|
|
50
|
+
| A09 — Logging & Monitoring | ⚠️ P2 | S-03 |
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Sugestões de tarefas novas
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
T_new-S01: Implementar hash de senha com bcrypt (custo ≥ 12)
|
|
58
|
+
Verificar: login falha com senha errada; hash visível no DB.
|
|
59
|
+
Aceite vinculado: [A* de segurança se existir na SPEC]
|
|
60
|
+
|
|
61
|
+
T_new-S03: Filtrar stack traces em logs de produção
|
|
62
|
+
Verificar: log em NODE_ENV=production não expõe stacktrace.
|
|
63
|
+
Aceite vinculado: —
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Próximo passo
|
|
69
|
+
|
|
70
|
+
- **P0 presente:** ação obrigatória antes de qualquer deploy — criar tarefas e adicionar ao PLAN via `/oxe-plan --replan`.
|
|
71
|
+
- **Apenas P1/P2:** priorizar P1 na próxima onda; P2 pode ir para backlog v2.
|
|
72
|
+
- **Sem achados:** registrar como "auditoria limpa em YYYY-MM-DD" e prosseguir.
|
package/oxe/templates/STATE.md
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
## Último compact (codebase + RESUME) (opcional)
|
|
13
13
|
|
|
14
14
|
- **Data:** (**YYYY-MM-DD** — preenchido por **`/oxe-compact`**: refresh incremental dos mapas em `.oxe/codebase/` + `CODEBASE-DELTA.md` + `RESUME.md`)
|
|
15
|
-
- **Notas:** (opcional; ex.:
|
|
15
|
+
- **Notas:** (opcional; ex.: "só STRUCTURE e TESTING")
|
|
16
16
|
|
|
17
17
|
## Contexto do plano / quick (opcional)
|
|
18
18
|
|
|
@@ -37,9 +37,36 @@ _(O agente pode preencher após cada onda.)_
|
|
|
37
37
|
- [ ] Onda N — implementação concluída
|
|
38
38
|
- [ ] Onda N — **Verificar** executado ou agendado
|
|
39
39
|
|
|
40
|
+
## Milestone ativo (opcional — `/oxe-milestone`)
|
|
41
|
+
|
|
42
|
+
- **ID:** (ex.: M-01 — ou — se não houver milestone ativo)
|
|
43
|
+
- **Nome:** (ex.: v1.0 — autenticação básica)
|
|
44
|
+
- **Iniciado:** (YYYY-MM-DD)
|
|
45
|
+
- **Progresso:** (N/M critérios verificados)
|
|
46
|
+
|
|
47
|
+
## Último milestone encerrado (opcional)
|
|
48
|
+
|
|
49
|
+
- **ID:** —
|
|
50
|
+
- **Data de encerramento:** —
|
|
51
|
+
- **Artefatos:** `.oxe/milestones/M-NN/`
|
|
52
|
+
|
|
53
|
+
## Workstreams ativos (opcional — `/oxe-workstream`)
|
|
54
|
+
|
|
55
|
+
- (nenhum ou lista de nomes: ex.: `feature-billing`, `bugfix-auth`)
|
|
56
|
+
|
|
57
|
+
## Workstream ativo (contexto atual)
|
|
58
|
+
|
|
59
|
+
- (nome do workstream ativo — ou — para pipeline principal)
|
|
60
|
+
|
|
61
|
+
## Memory (sidecars de sessão) (opcional — `/oxe-memory`)
|
|
62
|
+
|
|
63
|
+
Sidecars de memória persistente por agente/sessão. Armazenados em `.oxe/memory/`.
|
|
64
|
+
|
|
65
|
+
- (nenhum ou lista: ex.: `architect-2025-01-15.md`, `researcher-auth-2025-01-14.md`)
|
|
66
|
+
|
|
40
67
|
## Decisões persistentes
|
|
41
68
|
|
|
42
|
-
- (bullet: decisão → data)
|
|
69
|
+
- (bullet: D-NN: decisão → data)
|
|
43
70
|
|
|
44
71
|
## Próximo passo sugerido
|
|
45
72
|
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
{
|
|
2
|
+
"_comment": "OXE config — copie para .oxe/config.json no seu projeto. Remova esta linha.",
|
|
3
|
+
"profile": "balanced",
|
|
2
4
|
"discuss_before_plan": false,
|
|
5
|
+
"verification_depth": "standard",
|
|
3
6
|
"after_verify_suggest_pr": true,
|
|
4
7
|
"after_verify_draft_commit": true,
|
|
8
|
+
"after_verify_suggest_uat": false,
|
|
5
9
|
"default_verify_command": "",
|
|
6
10
|
"scan_max_age_days": 0,
|
|
7
11
|
"compact_max_age_days": 0,
|
|
12
|
+
"scale_adaptive": true,
|
|
8
13
|
"scan_focus_globs": [],
|
|
9
14
|
"scan_ignore_globs": [],
|
|
10
15
|
"spec_required_sections": [],
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"oxePlanAgentsSchema":
|
|
2
|
+
"oxePlanAgentsSchema": 3,
|
|
3
3
|
"runId": "oxe-YYYY-MM-DD-substituir-por-id-opaco",
|
|
4
4
|
"lifecycle": {
|
|
5
5
|
"status": "pending_execute",
|
|
@@ -18,7 +18,8 @@
|
|
|
18
18
|
"taskIds": ["T1"],
|
|
19
19
|
"dependencies": [],
|
|
20
20
|
"inputs": [".oxe/STATE.md", ".oxe/SPEC.md"],
|
|
21
|
-
"outputs": ["src/example.ts"]
|
|
21
|
+
"outputs": ["src/example.ts"],
|
|
22
|
+
"model_hint": "balanced"
|
|
22
23
|
}
|
|
23
24
|
],
|
|
24
25
|
"execution": {
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"oxeQuickAgentsSchema": 1,
|
|
3
|
+
"quickId": "quick-YYYY-MM-DD-substituir-por-6hex",
|
|
4
|
+
"quickRef": ".oxe/QUICK.md",
|
|
5
|
+
"status": "active",
|
|
6
|
+
"since": "YYYY-MM-DDTHH:mm:ssZ",
|
|
7
|
+
"_comment": "Agentes derivados dos passos do QUICK.md. Plan-Driven Dynamic Agents (lean): criados para esta demanda, invalidados ao promover para spec/plan ou iniciar novo quick.",
|
|
8
|
+
"agents": [
|
|
9
|
+
{
|
|
10
|
+
"id": "agent-dominio-a",
|
|
11
|
+
"role": "Papel específico para ESTA demanda (não genérico)",
|
|
12
|
+
"persona": "executor",
|
|
13
|
+
"steps": [1, 2, 3],
|
|
14
|
+
"focus": "Uma frase sobre o foco deste agente nos steps atribuídos"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"id": "agent-dominio-b",
|
|
18
|
+
"role": "Papel específico para ESTA demanda (não genérico)",
|
|
19
|
+
"persona": "executor",
|
|
20
|
+
"steps": [4, 5],
|
|
21
|
+
"focus": "Uma frase sobre o foco deste agente nos steps atribuídos"
|
|
22
|
+
}
|
|
23
|
+
]
|
|
24
|
+
}
|
package/oxe/workflows/discuss.md
CHANGED
|
@@ -8,10 +8,22 @@ Usar quando: SPEC existe mas há ambiguidade, risco técnico, ou `discuss_before
|
|
|
8
8
|
|
|
9
9
|
<context>
|
|
10
10
|
- Ler `.oxe/SPEC.md`, `.oxe/STATE.md` e trechos relevantes de `.oxe/codebase/OVERVIEW.md` / `STACK.md`.
|
|
11
|
+
- Se existir **`.oxe/OBSERVATIONS.md`** com entradas `pendente` de impacto `spec`, `plan` ou `all`, carregá-las como contexto adicional para as perguntas e decisões; marcá-las `incorporada → discuss (data)` após uso.
|
|
11
12
|
- Se existir **`.oxe/NOTES.md`**, rever bullets em aberto: promover para perguntas/decisões em `DISCUSS.md` ou marcar como *descartado* / *adiado* com uma linha de justificativa.
|
|
12
13
|
- Se `.oxe/config.json` existir e `discuss_before_plan` for `true`, tratar este passo como **recomendado** antes de `oxe:plan`.
|
|
13
14
|
</context>
|
|
14
15
|
|
|
16
|
+
<decision_ids>
|
|
17
|
+
Toda decisão fechada em `DISCUSS.md` recebe um **ID estável** com prefixo `D-` e número sequencial: **D-01**, **D-02**, …
|
|
18
|
+
|
|
19
|
+
Regras:
|
|
20
|
+
1. O ID é atribuído **quando a decisão é registrada** (não quando a pergunta é feita).
|
|
21
|
+
2. IDs não são reutilizados — se uma decisão for revertida, registrar a reversão com novo ID (`D-05: Revertendo D-02 — novo comportamento X`) e marcar D-02 como `*(revertida por D-05)*`.
|
|
22
|
+
3. `PLAN.md` deve referenciar os IDs nas tarefas (campo **Decisão vinculada:** `D-01, D-03`).
|
|
23
|
+
4. `VERIFY.md` deve cruzar os IDs na seção **Fidelidade de decisões**.
|
|
24
|
+
5. O ID é o vínculo de rastreabilidade discuss → plan → verify.
|
|
25
|
+
</decision_ids>
|
|
26
|
+
|
|
15
27
|
<process>
|
|
16
28
|
1. Se não existir `.oxe/SPEC.md`, pedir **spec** primeiro (ou **quick** se for trabalho trivial).
|
|
17
29
|
2. Se existir **`.oxe/NOTES.md`**, rever bullets em aberto e decidir o que entra em **Perguntas** ou **Decisões** (ou marcar *descartado* / *adiado* com justificativa curta).
|
|
@@ -19,16 +31,47 @@ Usar quando: SPEC existe mas há ambiguidade, risco técnico, ou `discuss_before
|
|
|
19
31
|
4. Criar ou atualizar **`.oxe/DISCUSS.md`** com estrutura fixa:
|
|
20
32
|
- **Contexto** — 2–4 bullets do que já se sabe da SPEC.
|
|
21
33
|
- **Perguntas** — numeradas; para cada uma: resposta (se o usuário já respondeu na mensagem) ou `_(pendente)_`.
|
|
22
|
-
- **Decisões** —
|
|
23
|
-
- **Implicações para o plano** — bullets (ex.:
|
|
34
|
+
- **Decisões** — tabela com colunas **ID** / **Decisão** / **Data** / **Impacto no plano** (só as já fechadas). Atribuir IDs **D-01**, **D-02**, … em sequência.
|
|
35
|
+
- **Implicações para o plano** — bullets (ex.: "migrations necessárias", "feature flag").
|
|
24
36
|
5. Se ainda houver perguntas **pendentes** críticas, listá-las no chat (máx. 7) e parar até resposta; depois atualizar DISCUSS.md.
|
|
25
|
-
6. Atualizar **`.oxe/STATE.md`**: fase `discuss_complete`, próximo passo `oxe:plan`.
|
|
26
|
-
7. Resumo no chat em ≤8 linhas.
|
|
37
|
+
6. Atualizar **`.oxe/STATE.md`**: fase `discuss_complete`, próximo passo `oxe:plan`. Registrar os IDs de decisão na seção **Decisões persistentes** do STATE (ex.: `D-01: escolheu JWT — 2025-01-15`).
|
|
38
|
+
7. Resumo no chat em ≤8 linhas, listando decisões com seus IDs.
|
|
27
39
|
</process>
|
|
28
40
|
|
|
41
|
+
<discuss_md_format>
|
|
42
|
+
```markdown
|
|
43
|
+
---
|
|
44
|
+
oxe_doc: discuss
|
|
45
|
+
status: (open | closed)
|
|
46
|
+
updated: YYYY-MM-DD
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
# OXE — Discuss
|
|
50
|
+
|
|
51
|
+
## Contexto
|
|
52
|
+
- …
|
|
53
|
+
|
|
54
|
+
## Perguntas
|
|
55
|
+
|
|
56
|
+
1. **[pergunta]**
|
|
57
|
+
- Resposta: … / _(pendente)_
|
|
58
|
+
|
|
59
|
+
## Decisões
|
|
60
|
+
|
|
61
|
+
| ID | Decisão | Data | Impacto no plano |
|
|
62
|
+
|------|----------------------------------|------------|---------------------------------------|
|
|
63
|
+
| D-01 | (decisão clara e acionável) | YYYY-MM-DD | (como afeta tarefas / arquivos) |
|
|
64
|
+
| D-02 | … | … | … |
|
|
65
|
+
|
|
66
|
+
## Implicações para o plano
|
|
67
|
+
- …
|
|
68
|
+
```
|
|
69
|
+
</discuss_md_format>
|
|
70
|
+
|
|
29
71
|
<success_criteria>
|
|
30
72
|
- [ ] `.oxe/DISCUSS.md` existe com perguntas e decisões alinhadas à SPEC.
|
|
73
|
+
- [ ] Cada decisão fechada tem ID único **D-NN** na tabela de Decisões.
|
|
31
74
|
- [ ] Se existir `.oxe/NOTES.md`, as entradas relevantes foram tratadas (promovidas, descartadas ou adiadas com nota).
|
|
32
75
|
- [ ] Nenhuma ambiguidade crítica ficou sem registro (como pendente ou suposição explícita na SPEC).
|
|
33
|
-
- [ ] `STATE.md` indica próximo passo **plan**.
|
|
76
|
+
- [ ] `STATE.md` indica próximo passo **plan** e lista IDs de decisão em **Decisões persistentes**.
|
|
34
77
|
</success_criteria>
|