oxe-cc 0.3.0 → 0.3.2

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.
@@ -18,6 +18,7 @@ Se o utilizador mencionar **OXE**, **oxe**, **/oxe-**, ou pedidos como “mapear
18
18
  | Execute | `oxe/workflows/execute.md` | “oxe execute”, “executar onda”, “onda 2 OXE” |
19
19
  | Verify | `oxe/workflows/verify.md` | “oxe verify”, “validar plano OXE”, “VERIFY.md” |
20
20
  | Next | `oxe/workflows/next.md` | “oxe next”, “próximo passo OXE” |
21
+ | Review PR | `oxe/workflows/review-pr.md` | “revisar PR”, link `…/pull/10`, “diff entre branches”, “code review OXE” *(prompt: `/oxe-review-pr`)* |
21
22
  | Help | `oxe/workflows/help.md` | “oxe help”, “como usar OXE” |
22
23
 
23
24
  **Regra:** lê o Markdown indicado e executa **todos** os passos e critérios de sucesso descritos nesse ficheiro. Não atalhes: cria ou atualiza os ficheiros em `.oxe/` conforme o workflow.
@@ -30,7 +31,7 @@ Se o utilizador mencionar **OXE**, **oxe**, **/oxe-**, ou pedidos como “mapear
30
31
  ## Cursor vs Copilot
31
32
 
32
33
  - **Cursor:** slash commands em `.cursor/commands/oxe-*.md` apontam para os mesmos workflows.
33
- - **Copilot:** prompt files em `.github/prompts/oxe-*.prompt.md`; cada um indica o workflow em `oxe/workflows/<passo>.md` na raiz do repo.
34
+ - **Copilot:** prompt files em `.github/prompts/oxe-*.prompt.md`; cada um indica o workflow em `oxe/workflows/<passo>.md` na raiz do repo. **`oxe-review-pr`** existe só como prompt Copilot (não há slash command Cursor correspondente).
34
35
 
35
36
  ## Manutenção deste pacote (oxe-build)
36
37
 
@@ -0,0 +1,12 @@
1
+ ---
2
+ name: oxe-review-pr
3
+ agent: agent
4
+ description: OXE — Revisão de PR (link GitHub, branches ou SHAs)
5
+ argument-hint: "URL ou refs: https://github.com/org/repo/pull/10 | main feature/foo"
6
+ ---
7
+
8
+ Executa o workflow **OXE review-pr**. Lê e aplica **integralmente**:
9
+
10
+ `oxe/workflows/review-pr.md` (na raiz do repositório em contexto)
11
+
12
+ **Exemplos de entrada:** cola o URL da PR (`https://github.com/org/repo/pull/10`, com ou sem `/files`); ou `org/repo#10`; ou **base** e **head** (branches/tags/SHAs). Sem refs, o agente infere (ex.: `main` vs branch atual).
package/AGENTS.md CHANGED
@@ -6,6 +6,6 @@ Este repositório empacota o fluxo **OXE** (spec-driven, artefatos em `.oxe/`).
6
6
  - **Instruções do repositório:** [.github/copilot-instructions.md](.github/copilot-instructions.md) — aplicadas automaticamente no Copilot Chat quando o repo está em contexto.
7
7
  - **Workflows canónicos:** [oxe/workflows/](oxe/workflows/) — editar aqui primeiro; Cursor e Copilot apontam para estes ficheiros (inclui `quick.md`, `execute.md`).
8
8
  - **CLI:** `oxe-cc` instala assets e bootstrap (`.oxe/STATE.md`, `config.json`, `codebase/`); `oxe-cc doctor` valida workflows, JSON de config e mapa scan; `oxe-cc init-oxe` só inicializa `.oxe/`.
9
- - **Prompt files (Copilot / VS Code):** [.github/prompts/*.prompt.md](.github/prompts/) — invocar com `/` no chat (ex. `/oxe-scan`) após `chat.promptFiles` estar ativo.
9
+ - **Prompt files (Copilot / VS Code):** [.github/prompts/*.prompt.md](.github/prompts/) — invocar com `/` no chat (ex. `/oxe-scan`, `/oxe-review-pr` para diff tipo PR) após `chat.promptFiles` estar ativo.
10
10
 
11
11
  Quando o utilizador pedir uma etapa OXE por linguagem natural, segue o ficheiro `oxe/workflows/<passo>.md` correspondente sem atalhar passos.
package/README.md CHANGED
@@ -1,206 +1,236 @@
1
- # oxe-build
1
+ <div align="center">
2
2
 
3
- [![npm version](https://img.shields.io/npm/v/oxe-cc.svg)](https://www.npmjs.com/package/oxe-cc)
4
- [![license](https://img.shields.io/npm/l/oxe-cc.svg)](https://www.npmjs.com/package/oxe-cc)
3
+ <p align="center">
4
+ <img src="assets/readme-banner.svg" alt="OXE" width="920" />
5
+ </p>
5
6
 
6
- *(O badge de versão reflete uma release real depois de `npm publish` concluído com sucesso.)*
7
+ **Fluxo spec-driven e context engineering para [Cursor](https://cursor.com) e [GitHub Copilot](https://github.com/features/copilot) inspirado na ideia do [GSD](https://github.com/gsd-build/get-shit-done), com **menos comandos** e foco em **`.oxe/`** + **`oxe/workflows/`**.**
7
8
 
8
- Fluxo **spec-driven** enxuto (inspirado em context engineering / GSD), com prefixo **OXE** e artefatos em **`.oxe/`**.
9
+ [![npm](https://img.shields.io/npm/v/oxe-cc.svg?style=flat-square)](https://www.npmjs.com/package/oxe-cc)
10
+ [![license](https://img.shields.io/npm/l/oxe-cc.svg?style=flat-square)](LICENSE)
9
11
 
10
- Os alvos **iniciais** são **Cursor** e **GitHub Copilot** (VS Code e IDEs compatíveis). Outros clientes podem usar os mesmos workflows em Markdown.
12
+ ```bash
13
+ npx oxe-cc@latest
14
+ ```
11
15
 
12
- O nome previsto no npm é **`oxe-cc`**. Confirma se já está publicado: `npm view oxe-cc version`. Se responder **404**, o pacote **ainda não existe** no registry — usa uma das opções abaixo até publicares com sucesso.
16
+ **Manter atualizado:** `npx oxe-cc@latest --force` (na raiz do projeto).
13
17
 
14
- ## Instalação (escolhe uma)
18
+ [Para quem é](#para-quem-é) · [Começar](#começar) · [Como funciona](#como-funciona) · [Modo rápido](#modo-rápido) · [Porque funciona](#porque-funciona) · [Comandos](#comandos) · [Configuração](#configuração) · [Problemas](#resolução-de-problemas)
15
19
 
16
- Precisas de **Node.js 18+**. O executável chama-se **`oxe-cc`**.
20
+ </div>
17
21
 
18
- ### A) Repositório local (sem npm registry)
22
+ ---
19
23
 
20
- ```bash
21
- cd C:\caminho\para\oxe-build
22
- npm link
23
- cd C:\caminho\para\teu-projeto
24
- npm link oxe-cc
25
- oxe-cc
26
- ```
24
+ ## Para quem é
27
25
 
28
- Ou, sem `link`, apontando ao script:
26
+ Para quem quer **descrever o que quer e ver isso construído de forma consistente** — **sem** simular uma organização enorme de processos em cima do repositório.
29
27
 
30
- ```bash
31
- node C:\caminho\para\oxe-build\bin\oxe-cc.js
32
- ```
28
+ OXE é **enxuto**: não há dezenas de slash commands nem instalador multi-runtime. Há **um CLI** que copia ficheiros para o projeto, **workflows em Markdown** que o agente segue, e **estado em disco** para a sessão principal não “inchada” com tudo o que já foi decidido.
29
+
30
+ ---
31
+
32
+ ## Começar
33
33
 
34
- ### B) Depois de publicado no npm
34
+ **Requisito:** [Node.js 18+](https://nodejs.org/).
35
+
36
+ Na **raiz do repositório** do teu projeto:
35
37
 
36
38
  ```bash
37
- cd /caminho/do/teu-projeto
38
39
  npx oxe-cc@latest
39
40
  ```
40
41
 
41
- Página do pacote (quando existir): [npmjs.com/package/oxe-cc](https://www.npmjs.com/package/oxe-cc). Versões: [aba Versions](https://www.npmjs.com/package/oxe-cc?activeTab=versions).
42
+ Isto copia, entre outros: **`oxe/`** (workflows + templates), **`.cursor/`** (slash commands), **`.github/`** (instruções Copilot + prompt files), **`commands/oxe/`** (atalhos estilo `oxe:*` para outros clientes), **`AGENTS.md`**, e cria um **`.oxe/`** mínimo (`STATE.md`, `config.json` a partir de template, pasta `codebase/`) — salvo flags como `--no-init-oxe`.
42
43
 
43
- ### C) Erro `npm error 404` / `'oxe-cc@latest' is not in this registry`
44
+ **Confirmar instalação no agente**
44
45
 
45
- Significa que **nenhuma versão** de `oxe-cc` foi aceite no `registry.npmjs.org`. Causas frequentes:
46
+ | Onde | O que correr |
47
+ |------|----------------|
48
+ | **Cursor** | `/oxe-help` |
49
+ | **Copilot** (VS Code) | `/oxe-help` no chat, se [prompt files](https://code.visualstudio.com/docs/copilot/customization/prompt-files) estiverem ativos (`"chat.promptFiles": true` — exemplo em [`.vscode/settings.json`](.vscode/settings.json)) |
46
50
 
47
- 1. **`npm publish` falhou** (ex. **403** conta com **2FA obrigatória** para publicar). Ativa 2FA em [npm Security](https://www.npmjs.com/settings/~/security) e volta a correr `npm publish --access public` dentro da pasta do repo, autenticado (`npm login`).
48
- 2. **Nome diferente** — publicaste com **scope** (ex. `@propagno/oxe-cc`). Nesse caso usa `npx @propagno/oxe-cc@latest` (ajusta ao `name` real do `package.json`).
49
- 3. **Outro registry** — confirma: `npm config get registry` → deve ser `https://registry.npmjs.org/` para o público.
51
+ > **Nota:** O Copilot usa **instruções do repositório** (`.github/copilot-instructions.md`) **e** os ficheiros em `.github/prompts/*.prompt.md`. Sem prompt files, ainda podes pedir em linguagem natural (“executa o workflow OXE scan”) com o repo em contexto.
50
52
 
51
- Até o 404 desaparecer, usa a opção **A** (`npm link` ou `node …/bin/oxe-cc.js`).
53
+ **Sem pacote no npm** (`npm view oxe-cc version` → 404): clone este repo, `npm link` na pasta **oxe-build**, `npm link oxe-cc` no teu projeto, e corre `oxe-cc`. Alternativa: `node /caminho/oxe-build/bin/oxe-cc.js`.
52
54
 
53
- Opções úteis:
55
+ <details>
56
+ <summary><strong>Instalação: flags úteis (CI, ou só parte do pacote)</strong></summary>
54
57
 
55
- | Opção | Efeito |
56
- |--------|--------|
57
- | *(omissão)* | **Cursor + Copilot** + `oxe/` + `commands/oxe` + `AGENTS.md` |
58
- | `--all`, `-a` | Garante Cursor e Copilot (mesmo efeito que omitir `--cursor` e `--copilot`) |
59
- | `--dir <pasta>` | Instala noutro diretório em vez do cwd |
60
- | `--cursor` | Só `.cursor/commands` e `.cursor/rules` |
61
- | `--copilot` | `.github/copilot-instructions.md` e `.github/prompts` |
62
- | `--vscode` | Copia também `.vscode/settings.json` (`chat.promptFiles`) |
63
- | `--no-commands` | Não copia `commands/oxe/` |
64
- | `--no-agents` | Não copia `AGENTS.md` |
65
- | `--force` / `-f` | Sobrescreve ficheiros existentes |
66
- | `--dry-run` | Mostra o que faria sem escrever |
67
- | `--no-init-oxe` | Não cria `.oxe/` (STATE, config, codebase) após instalar |
68
- | `--oxe-only` | Copia só a pasta `oxe/` (sem Cursor, Copilot, `commands/oxe`, `AGENTS.md`) |
69
- | `-h` / `--help`, `-v` / `--version` | Ajuda e versão |
58
+ | Flag | Efeito |
59
+ |------|--------|
60
+ | `--force` / `-f` | Sobrescreve ficheiros existentes (**obrigatório** para atualizar cópias antigas) |
61
+ | `--dry-run` | Lista ações sem escrever |
62
+ | `--cursor` / `--copilot` | Instala uma das stacks |
63
+ | `--oxe-only` | Só a pasta `oxe/` (workflows) |
64
+ | `--no-init-oxe` | Não cria `.oxe/` no fim |
65
+ | `--vscode` | Copia `.vscode/settings.json` de exemplo |
66
+ | `--no-commands` | Omite `commands/oxe/` |
67
+ | `--no-agents` | Omite `AGENTS.md` |
68
+ | `--dir <pasta>` ou argumento posicional | Destino em vez do diretório atual |
70
69
 
71
- **Subcomandos:**
70
+ **Global:** `npm install -g oxe-cc`.
72
71
 
73
- | Comando | Efeito |
74
- |---------|--------|
75
- | `oxe-cc doctor [dir]` | Node, workflows vs pacote, JSON válido em `.oxe/config.json`, mapa scan (7 ficheiros em `codebase/`) |
76
- | `oxe-cc init-oxe [dir]` | Só `.oxe/`: STATE, `config.json` (template), pasta `codebase/` |
72
+ **Subcomandos:** `oxe-cc doctor` (valida Node, workflows, `.oxe/`), `oxe-cc init-oxe` (só bootstrap `.oxe/`).
77
73
 
78
- A pasta **`oxe/`** (workflows + templates) é **sempre** copiada na instalação normal. `--cursor` / `--copilot` apenas controlam se entram ficheiros em `.cursor/` e `.github/`.
74
+ </details>
79
75
 
80
- Instalação global (só depois do pacote existir no npm): `npm install -g oxe-cc`.
76
+ <details>
77
+ <summary><strong>Desenvolvimento (clonar o oxe-build)</strong></summary>
78
+
79
+ ```bash
80
+ git clone https://github.com/propagno/oxe-build.git
81
+ cd oxe-build
82
+ npm test
83
+ node bin/oxe-cc.js --help
84
+ ```
81
85
 
82
- ### Nova versão no npm (mantenedores)
86
+ Para testar no teu app: `npm link` aqui, depois `npm link oxe-cc` no projeto alvo.
83
87
 
84
- 1. Atualiza **`version`** em `package.json` (semver).
85
- 2. Garante **`repository`**, **`homepage`** e **`bugs`** corretos para o teu GitHub.
86
- 3. Conta npm com **2FA** ativa: `npm login`, depois **`npm publish --access public`**.
87
- 4. O script **`prepublishOnly`** corre testes + `scan:assets` + `--version` antes do upload.
88
+ </details>
88
89
 
89
- ### Fork com outro nome no npm
90
+ ---
90
91
 
91
- 1. Edita `package.json`: **`name`** (ex. `@tua-org/oxe-cc`) e **`repository.url`**.
92
- 2. `npm publish --access public` (scopes `@org/...` precisam de `--access public` na primeira publicação).
92
+ ## Como funciona
93
93
 
94
- ### CLI com nome personalizado
94
+ **Já tens código?** Começa por **`/oxe-scan`**. Gera mapas em **`.oxe/codebase/`** (stack, estrutura, testes, convenções, etc.). Assim o **spec** e o **plan** alinham com o repo real — à semelhança de correres *map-codebase* antes do roadmap no GSD.
95
95
 
96
- No `package.json`, o binário é o mapa **`bin`**: a chave é o comando no terminal, o valor é o script.
96
+ ### 1. Mapear `/oxe-scan`
97
97
 
98
- ```json
99
- "bin": {
100
- "oxe-cc": "bin/oxe-cc.js",
101
- "meu-oxe": "bin/oxe-cc.js"
102
- }
103
- ```
98
+ Inventaria o projeto e preenche **`.oxe/codebase/*.md`**, atualiza **`.oxe/STATE.md`**. Podes indicar foco opcional (ex. “só API”).
104
99
 
105
- Depois de publicar, o comando extra fica disponível **globalmente** com `npm i -g nome-do-pacote` como `meu-oxe`. Com **npx**, o pacote continua a identificar-se pelo **`name`** em `package.json`; para correr um binário que não é o nome do pacote, usa por exemplo `npx -p oxe-cc meu-oxe` (ajusta `oxe-cc` / `meu-oxe` aos teus nomes).
100
+ ### 2. Especificar `/oxe-spec`
106
101
 
107
- O ficheiro do script (`bin/oxe-cc.js`) pode ser renomeado desde que atualizes o caminho no mapa `bin`.
102
+ Produz ou atualiza **`.oxe/SPEC.md`**: objetivo, escopo, critérios de aceite, riscos. Isto é o contrato antes do plano.
108
103
 
109
- **Desenvolvimento local sem publicar:** na pasta `oxe-build`, `npm link` e no projeto alvo `npm link oxe-cc`, depois `oxe-cc`; ou `node /caminho/para/oxe-build/bin/oxe-cc.js`. **Testes:** `npm test`. **Scan de assets (padrões tipo segredo em markdown):** `npm run scan:assets`.
104
+ ### 3. Discutir *(opcional)* `/oxe-discuss`
110
105
 
111
- ### Imagem / banner no início do CLI
106
+ Captura decisões de implementação (UI, API, tom, edge cases) em **`.oxe/DISCUSS.md`**, para o plano não “adivinhar” o que preferes. Útil quando `discuss_before_plan` está ativo em `.oxe/config.json`. Saltar = defaults razoáveis; usar = mais próximo da tua visão.
112
107
 
113
- Ao correr `oxe-cc` (instalar, `doctor`, `init-oxe`, `--help`), aparece um **cabeçalho ASCII** vindo de [`bin/banner.txt`](bin/banner.txt). Podes **personalizar** editando esse ficheiro no teu fork antes de publicar no npm.
108
+ ### 4. Planear `/oxe-plan`
114
109
 
115
- - Placeholder **`{version}`**substituído pela versão do `package.json` (ex. `v0.3.0`).
116
- - **Cores:** em terminal TTY, o corpo usa ciano + negrito; a linha com a versão fica mais discreta. Define **`NO_COLOR`** (ou `FORCE_COLOR=0`) para saída só texto.
117
- - **Desligar o banner:** variável de ambiente **`OXE_NO_BANNER=1`** (útil em CI ou testes).
118
- - **`--version`** não mostra banner — só uma linha `oxe-cc v…` para scripts.
110
+ Gera **`.oxe/PLAN.md`**: tarefas **atómicas**, **ondas** (paralelo vs sequencial), e bloco **Verificar** (comando de teste ou checklist) **por tarefa**. Ideia: cada tarefa cabe num contexto de agente focado, com verificação explícita mesmo espírito dos planos XML pequenos do GSD, em Markdown.
119
111
 
120
- Para um “logo” mais elaborado, substitui o conteúdo de `banner.txt` pelo teu ASCII art (várias linhas, largura ~60 colunas costuma caber bem). Não é suportada imagem bitmap no terminal; para isso seria preciso outra ferramenta (ex. `terminal-image`) e dependências extra.
112
+ Ondas em resumo: tarefas **independentes** na mesma onda podem correr em paralelo; **dependentes** vão para ondas posteriores (como no diagrama de *waves* do GSD, que com menos cerimónia).
121
113
 
122
- ## Fonte única
114
+ ### 5. Executar — implementação + `/oxe-execute` *(opcional)*
123
115
 
124
- Os passos detalhados vivem em **`oxe/workflows/`** (`scan.md`, `spec.md`, `discuss.md`, `plan.md`, `quick.md`, `execute.md`, `verify.md`, `next.md`, `help.md`). Comandos Cursor, prompts Copilot e `commands/oxe/*` **delegam** para esses ficheiros.
116
+ Implementas no editor ou deixas o agente seguir **`/oxe-execute`** sobre o plano (ou QUICK). O OXE não impõe subagentes nem commits atómicos por tarefa como o GSD; isso fica ao teu fluxo Git.
125
117
 
126
- Por omissão, após instalar, o CLI cria **`.oxe/`** mínimo: `STATE.md`, **`config.json`** (a partir de `oxe/templates/config.template.json`) e pasta **`codebase/`** — exceto com `--no-init-oxe`. Documentação das chaves: **`oxe/templates/CONFIG.md`**.
118
+ ### 6. Verificar `/oxe-verify`
127
119
 
128
- ## Cursor
120
+ Cruza **SPEC** + **PLAN** com o código; escreve **`.oxe/VERIFY.md`**. Se algo falhar, corrigis ou replanejas (`/oxe-plan` com lógica de replanejamento descrita no workflow).
129
121
 
130
- | Slash | Workflow |
131
- |-------|----------|
132
- | `/oxe-scan` | `oxe/workflows/scan.md` |
133
- | `/oxe-spec` | `oxe/workflows/spec.md` |
134
- | `/oxe-discuss` | `oxe/workflows/discuss.md` |
135
- | `/oxe-plan` | `oxe/workflows/plan.md` |
136
- | `/oxe-quick` | `oxe/workflows/quick.md` |
137
- | `/oxe-execute` | `oxe/workflows/execute.md` |
138
- | `/oxe-verify` | `oxe/workflows/verify.md` |
139
- | `/oxe-next` | `oxe/workflows/next.md` |
140
- | `/oxe-help` | `oxe/workflows/help.md` |
122
+ ### 7. Seguir em frente — `/oxe-next` e ciclo
141
123
 
142
- Ficheiros: `.cursor/commands/oxe-*.md` e regra `.cursor/rules/oxe-workflow.mdc`.
124
+ Para a **próxima** feature ou fase: de novo **spec → plan → …** ou **`/oxe-next`** para sugerir o passo lógico a partir de **STATE.md**.
143
125
 
144
- ## GitHub Copilot
126
+ ---
145
127
 
146
- 1. **Instruções do repositório** — [`.github/copilot-instructions.md`](.github/copilot-instructions.md): ativadas automaticamente no chat quando o repositório está em contexto (ver [documentação](https://docs.github.com/copilot/customizing-copilot/adding-repository-custom-instructions-for-github-copilot)).
147
- 2. **Prompt files** — [`.github/prompts/*.prompt.md`](.github/prompts/): no chat, escreve `/` e escolhe por exemplo **`oxe-scan`**, **`oxe-quick`**, **`oxe-execute`**, etc. (o `name` no frontmatter define o comando). Cada prompt referencia `oxe/workflows/<passo>.md` na **raiz do repo em contexto**.
128
+ ## Modo rápido
148
129
 
149
- Este repo inclui [`.vscode/settings.json`](.vscode/settings.json) com `"chat.promptFiles": true` para expor a pasta `.github/prompts`. Podes copiar essa definição para o teu `settings.json` global se preferires.
130
+ Para trabalho **adhoc** sem roadmap completo equivalente conceptual ao **`/gsd:quick`**:
150
131
 
151
- 3. **Agentes** [`AGENTS.md`](AGENTS.md) resume o pacote para modos que leem instruções de agente no repo.
132
+ **`/oxe-quick`** gera **`.oxe/QUICK.md`** com passos curtos e verificação. Depois podes usar **`/oxe-execute`** em cima disso ou implementar direto e fechar com **`/oxe-verify`**.
152
133
 
153
- ## Fluxo recomendado
134
+ Se o trabalho crescer, **promove** para spec + plan completos.
154
135
 
155
- **Completo:** 1. **scan** (7 ficheiros em `codebase/`, incl. CONVENTIONS + CONCERNS) → 2. **spec** → 3. **discuss** (opcional; recomendado se `discuss_before_plan` em `.oxe/config.json`) → 4. **plan** (secção **Replanejamento** em `--replan`) → 5. **execute** (opcional) → 6. implementar → 7. **verify** (rascunho de commit + checklist PR se ativo em config) → 8. **next**.
136
+ ---
156
137
 
157
- **Rápido (tarefas pequenas):** **quick** gera `.oxe/QUICK.md` com passos curtos + verificação; depois **execute** (sobre o QUICK) ou implementação direta e **verify**. Promover a spec/plan se o trabalho crescer (muitos ficheiros, API pública, segurança).
138
+ ## Porque funciona
158
139
 
159
- ## Artefatos (`.oxe/` no projeto alvo)
140
+ **Context engineering:** o agente não precisa de “lembrar” tudo na janela principal — o que importa está em ficheiros **pequenos e por etapa**.
160
141
 
161
- | Caminho | Conteúdo |
162
- |---------|----------|
163
- | `.oxe/STATE.md` | Fase, último scan, próximo passo |
164
- | `.oxe/config.json` | Opcional (criado no bootstrap): `discuss_before_plan`, texto de verify pós-sucesso, comando de teste por defeito — ver `oxe/templates/CONFIG.md` |
165
- | `.oxe/codebase/*.md` | Mapa: OVERVIEW, STACK, STRUCTURE, TESTING, INTEGRATIONS, **CONVENTIONS**, **CONCERNS** |
166
- | `.oxe/SPEC.md` | Especificação |
167
- | `.oxe/DISCUSS.md` | Perguntas e decisões antes do plano (opcional) |
168
- | `.oxe/PLAN.md` | Plano com **Verificar** por tarefa + secção **Replanejamento** |
169
- | `.oxe/QUICK.md` | Modo rápido: passos curtos + verificar |
142
+ | Artefato | Função |
143
+ |----------|--------|
144
+ | `.oxe/STATE.md` | Fase, decisões, próximo passo — memória entre sessões |
145
+ | `.oxe/codebase/*.md` | Mapa do repo após scan |
146
+ | `.oxe/SPEC.md` | O que entregar e como saber que está certo |
147
+ | `.oxe/DISCUSS.md` | Preferências antes do plano *(opcional)* |
148
+ | `.oxe/PLAN.md` | Tarefas atómicas + **Verificar** por item |
149
+ | `.oxe/QUICK.md` | Modo rápido |
170
150
  | `.oxe/VERIFY.md` | Resultado das verificações |
171
- | `.oxe/SUMMARY.md` | Resumo de sessão / contexto para replan (opcional) |
151
+ | `oxe/workflows/*.md` | **Fonte única** dos passos (Cursor e Copilot só delegam aqui) |
152
+
153
+ **Formato:** planos em Markdown com secções fixas (incl. verificação), legíveis por humanos e por modelos — sem XML obrigatório, mas com a mesma ideia de *precise instructions + verify*.
154
+
155
+ ---
172
156
 
173
- Templates: **`oxe/templates/`** (`STATE.md`, `config.template.json`, `CONFIG.md`, `SPEC.template.md`, `PLAN.template.md`, `SUMMARY.template.md`).
157
+ ## Comandos
174
158
 
175
- Neste repositório, **`.oxe/` está no `.gitignore`** para não versionar scans locais do *oxe-build*. No teu produto, remove ou ajusta essa regra se quiseres commitar `.oxe/` com a equipa.
159
+ ### Fluxo principal
176
160
 
177
- ## Usar noutro projeto
161
+ | Comando | O que faz |
162
+ |---------|-----------|
163
+ | `/oxe-scan` | Mapeia o codebase → `.oxe/codebase/` |
164
+ | `/oxe-spec` | Escreve/atualiza `.oxe/SPEC.md` |
165
+ | `/oxe-discuss` | Decisões antes do plano → `.oxe/DISCUSS.md` |
166
+ | `/oxe-plan` | Pesquisa no repo + plano com ondas e Verificar |
167
+ | `/oxe-execute` | Execução guiada do plano (ou QUICK) |
168
+ | `/oxe-verify` | Validação; `.oxe/VERIFY.md` |
169
+ | `/oxe-next` | Sugere o próximo passo |
170
+ | `/oxe-help` | Ajuda e visão geral |
178
171
 
179
- - Com pacote no npm: **`npx oxe-cc@latest`** na raiz do repo alvo, ou **`npx oxe-cc@<versão>`** (versões na [página do pacote](https://www.npmjs.com/package/oxe-cc?activeTab=versions) quando existir).
180
- - Sem pacote no npm: **`npm link oxe-cc`** (após `npm link` no clone do `oxe-build`) ou **`node …/oxe-build/bin/oxe-cc.js`**.
172
+ ### Modo rápido
181
173
 
182
- Alternativa manual: copia os mesmos caminhos que o instalador usa (`oxe/`, `.cursor/`, `.github/`, `commands/oxe`, `AGENTS.md`, opcionalmente `.vscode/settings.json` ou só `"chat.promptFiles": true` nas definições).
174
+ | Comando | O que faz |
175
+ |---------|-----------|
176
+ | `/oxe-quick` | `.oxe/QUICK.md` — tarefa pontual |
183
177
 
184
- `commands/oxe/*.md` mantém frontmatter estilo GSD (`name: oxe:scan`, …) para ferramentas que importam comandos nesse formato.
178
+ ### Revisão de PR / diff entre branches *(só Copilot)*
179
+
180
+ | Prompt | O que faz |
181
+ |--------|-----------|
182
+ | `/oxe-review-pr` | Segue `oxe/workflows/review-pr.md`: diff estilo PR (`git diff base...head`, `gh pr diff <n>`, ou fetch `pull/<n>/head`), riscos, testes e checklist. Podes colar o **link da PR** (ex. `https://github.com/org/repo/pull/10`) ou indicar `main` e `feature/x`. **Não** há slash command em `.cursor/commands/`; no Cursor podes pedir o mesmo em linguagem natural com o workflow em contexto. |
183
+
184
+ ### Outros clientes
185
+
186
+ Em **Claude Code** (ou ferramentas que leem `commands/oxe/`), os mesmos passos expõem nomes **`oxe:scan`**, **`oxe:plan`**, etc. (frontmatter `name:`).
187
+
188
+ ---
189
+
190
+ ## Configuração
191
+
192
+ Preferências do projeto em **`.oxe/config.json`** (criado no bootstrap a partir de `oxe/templates/config.template.json`). Chaves e comportamento: [`oxe/templates/CONFIG.md`](oxe/templates/CONFIG.md) (ex.: `discuss_before_plan`, texto pós-verify, comando de teste por defeito).
193
+
194
+ ---
195
+
196
+ ## Resolução de problemas
197
+
198
+ | Situação | O que tentar |
199
+ |----------|----------------|
200
+ | Comandos não aparecem no Cursor | Confirma que `.cursor/commands/` existe; reinicia o Cursor |
201
+ | Prompts `/oxe-*` não aparecem no Copilot | Ativa `"chat.promptFiles": true`; confirma `.github/prompts/*.prompt.md` |
202
+ | **`ETARGET`** / versão não encontrada no `npx` | `npm cache clean --force`, `npx clear-npx-cache`, ou fixa versão: `npx oxe-cc@0.3.0`. Verifica `npm config get registry` |
203
+ | **404** no `npm view oxe-cc` | Pacote com outro nome (scope) ou ainda não publicado — usa `npm link` ou `node …/bin/oxe-cc.js` |
204
+ | Ficheiros não atualizam | Reinstala com **`--force`** |
205
+
206
+ **Ajuda no terminal:** `oxe-cc --help`. **Diagnóstico:** `oxe-cc doctor`.
207
+
208
+ **Banner no CLI:** [`bin/banner.txt`](bin/banner.txt) (`{version}`). `OXE_NO_BANNER=1` desliga; `NO_COLOR` remove cores.
209
+
210
+ <details>
211
+ <summary><strong>Publicar no npm (mantenedores)</strong></summary>
212
+
213
+ Sobe `version` em `package.json`, `npm login` (2FA se exigido), `npm publish --access public`. O `prepublishOnly` corre testes e `scan:assets`.
214
+
215
+ </details>
216
+
217
+ <details>
218
+ <summary><strong>Estrutura do repositório</strong></summary>
219
+
220
+ | Caminho | Função |
221
+ |---------|--------|
222
+ | `assets/readme-banner.svg` | Banner deste README |
223
+ | `bin/oxe-cc.js`, `bin/banner.txt` | CLI |
224
+ | `oxe/workflows/` | Workflows canónicos |
225
+ | `oxe/templates/` | Modelos e CONFIG |
226
+ | `.cursor/`, `.github/` | Cursor e Copilot |
227
+ | `commands/oxe/` | `oxe:*` para outros runtimes |
228
+ | `tests/`, `scripts/`, `.github/workflows/` | CI e qualidade |
185
229
 
186
- ## Estrutura deste repositório
230
+ </details>
187
231
 
188
- | Pasta / ficheiro | Função |
189
- |------------------|--------|
190
- | `bin/oxe-cc.js` | CLI: instalar, `doctor`, `init-oxe` |
191
- | `bin/banner.txt` | Cabeçalho ASCII ao arrancar o CLI (`{version}`) |
192
- | `package.json` | Metadados npm (`oxe-cc`, `files`, `bin`) |
193
- | `oxe/workflows/` | Workflows canónicos (fonte única) |
194
- | `oxe/templates/` | Modelos (STATE, config, SPEC, PLAN, SUMMARY, CONFIG.md) |
195
- | `scripts/oxe-assets-scan.cjs` | Verificação leve de padrões sensíveis em markdown (CI / `npm run scan:assets`) |
196
- | `.github/workflows/ci.yml` | `npm test` + `scan:assets` |
197
- | `.cursor/commands/` | Slash commands Cursor |
198
- | `.cursor/rules/` | Regras do projeto Cursor |
199
- | `.github/copilot-instructions.md` | Instruções Copilot no repo |
200
- | `.github/prompts/` | Ficheiros `*.prompt.md` (`/oxe-scan`, …) |
201
- | `commands/oxe/` | Comandos com frontmatter estilo GSD |
202
- | `AGENTS.md` | Resumo para agentes (ex. Copilot) |
232
+ ---
203
233
 
204
234
  ## Licença
205
235
 
206
- [GPL-3.0](LICENSE) — ver [LICENSE](LICENSE).
236
+ [GPL-3.0](LICENSE).
@@ -0,0 +1,18 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="920" height="200" viewBox="0 0 920 200" role="img" aria-label="OXE  spec-driven workflows">
2
+ <defs>
3
+ <linearGradient id="oxe-bg" x1="0%" y1="0%" x2="100%" y2="100%">
4
+ <stop offset="0%" style="stop-color:#0d1117"/>
5
+ <stop offset="50%" style="stop-color:#161b22"/>
6
+ <stop offset="100%" style="stop-color:#21262d"/>
7
+ </linearGradient>
8
+ <linearGradient id="oxe-accent" x1="0%" y1="0%" x2="100%" y2="0%">
9
+ <stop offset="0%" style="stop-color:#58a6ff"/>
10
+ <stop offset="100%" style="stop-color:#79c0ff"/>
11
+ </linearGradient>
12
+ </defs>
13
+ <rect width="920" height="200" rx="16" fill="url(#oxe-bg)"/>
14
+ <rect x="2" y="2" width="916" height="196" rx="14" fill="none" stroke="url(#oxe-accent)" stroke-width="2" opacity="0.45"/>
15
+ <text x="460" y="100" text-anchor="middle" font-family="ui-sans-serif, system-ui, -apple-system, Segoe UI, sans-serif" font-size="72" font-weight="800" fill="url(#oxe-accent)" letter-spacing="0.12em">OXE</text>
16
+ <text x="460" y="138" text-anchor="middle" font-family="ui-sans-serif, system-ui, -apple-system, Segoe UI, sans-serif" font-size="17" fill="#8b949e">Fluxo spec-driven � Cursor &amp; GitHub Copilot � CLI npm</text>
17
+ <text x="460" y="168" text-anchor="middle" font-family="ui-monospace, SFMono-Regular, Consolas, monospace" font-size="13" fill="#6e7681">npx oxe-cc@latest</text>
18
+ </svg>
package/bin/banner.txt CHANGED
@@ -1,5 +1,18 @@
1
- .============================================.
2
- | OXE · spec-driven workflow CLI |
3
- | Cursor · GitHub Copilot |
4
- '============================================'
5
- v{version}
1
+ ██████╗ ██╗ ██╗███████╗
2
+ ██╔═══██╗╚██╗██╔╝██╔════╝
3
+ ██║ ██║ ╚███╔╝ █████╗
4
+ ██║ ██║ ██╔██╗ ██╔══╝
5
+ ╚██████╔╝██╔╝ ██╗███████╗
6
+ ╚═════╝ ╚═╝ ╚═╝╚══════╝
7
+
8
+ ══════════════════════════════════════════════════════
9
+
10
+ 🌵 OXE CLI · Spec-driven workflow
11
+ "Do jeito nordestino de fazer software"
12
+
13
+ ⚙️ Context Engineering
14
+ 🤖 Cursor · Copilot · AI Agents
15
+
16
+ ══════════════════════════════════════════════════════
17
+
18
+ v0.3.1
package/bin/oxe-cc.js CHANGED
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env node
1
+ #!/usr/bin/env node
2
2
  /**
3
3
  * OXE — install workflows into a target project; bootstrap `.oxe/`; doctor.
4
4
  * Usage:
@@ -335,6 +335,11 @@ ${green}Install options:${reset}
335
335
  -h, --help
336
336
  -v, --version
337
337
 
338
+ ${green}Upgrade (project already has OXE):${reset}
339
+ npx oxe-cc@latest --force # repo root — refresh oxe/, .cursor/, .github/, …
340
+ npm install -g oxe-cc@latest && oxe-cc --force # global CLI install
341
+ npx clear-npx-cache # if npx keeps an old tarball (npm 7+)
342
+
338
343
  ${green}Examples:${reset}
339
344
  npx oxe-cc@latest
340
345
  npx oxe-cc@latest ./my-app
@@ -16,7 +16,7 @@ Slash commands: `/oxe-scan`, `/oxe-spec`, `/oxe-discuss`, `/oxe-plan`, `/oxe-ver
16
16
  ## GitHub Copilot (VS Code / IDE)
17
17
 
18
18
  1. **Instruções do repositório:** `.github/copilot-instructions.md` (ativas no chat quando o repositório está em contexto).
19
- 2. **Prompt files:** no chat, escrever `/` e escolher **`oxe-scan`**, **`oxe-spec`**, **`oxe-discuss`**, **`oxe-plan`**, **`oxe-verify`**, **`oxe-next`**, **`oxe-quick`**, **`oxe-execute`**, **`oxe-help`**. Requer `chat.promptFiles`: true.
19
+ 2. **Prompt files:** no chat, escrever `/` e escolher **`oxe-scan`**, **`oxe-spec`**, **`oxe-discuss`**, **`oxe-plan`**, **`oxe-verify`**, **`oxe-next`**, **`oxe-quick`**, **`oxe-execute`**, **`oxe-help`**, **`oxe-review-pr`** (revisão: URL `github.com/.../pull/N`, branches ou SHAs). Requer `chat.promptFiles`: true.
20
20
 
21
21
  ## Fluxo completo
22
22
 
@@ -46,5 +46,7 @@ Slash commands: `/oxe-scan`, `/oxe-spec`, `/oxe-discuss`, `/oxe-plan`, `/oxe-ver
46
46
 
47
47
  ## Gatilhos naturais (Copilot / chat)
48
48
 
49
- Quando o utilizador disser “oxe scan”, “oxe quick”, “executar onda OXE”, etc., seguir o workflow correspondente em `oxe/workflows/*.md`.
49
+ Quando o utilizador disser “oxe scan”, “oxe quick”, “executar onda OXE”, “revisar PR”, “diff entre branches”, etc., seguir o workflow correspondente em `oxe/workflows/*.md`.
50
+
51
+ **Nota:** **`oxe-review-pr`** não tem homólogo em `.cursor/commands/`; no Cursor podes pedir em linguagem natural seguindo `oxe/workflows/review-pr.md` ou abrir o mesmo ficheiro como contexto.
50
52
  </output>
@@ -0,0 +1,45 @@
1
+ # OXE — Workflow: review-pr (revisão de diff / PR)
2
+
3
+ <objective>
4
+ Rever alterações como num pull request: **URL do GitHub** (`…/pull/<n>`), **branches** ou **SHAs**. Cobre diff, risco, convenções do projeto e sugestões acionáveis. **Não** substitui CI nem testes manuais; complementa-os.
5
+ </objective>
6
+
7
+ <context>
8
+ - **Base** e **head** são nomes de branch, tags ou SHAs (ex.: `main` e `feature/foo`).
9
+ - **URL de PR no GitHub** — O utilizador pode colar o link da PR (ex.: `https://github.com/org/repo/pull/10` ou atalho `org/repo#10`). O número da PR é o segmento depois de `/pull/`.
10
+ - Em Git, o diff “estilo PR” (só o que a branch introduz) usa o **merge base**: `git diff base...head` (três pontos).
11
+ - Diff literal entre pontas: `git diff base..head` (dois pontos) — útil quando o utilizador pede explicitamente.
12
+ - Este passo é **opcional** no fluxo OXE; não atualiza `STATE.md` com fases canónicas, salvo o utilizador pedir registo do resultado em disco.
13
+ </context>
14
+
15
+ <process>
16
+ 1. **Resolver entrada**
17
+ - **URL ou `#` de PR** — Se a mensagem contiver um URL `github.com/.../pull/<n>` (com ou sem `https://`, com sufixo `/files` ou `/commits`) ou texto `owner/repo#n`, extrair `<n>` (e opcionalmente `owner/repo` para confirmar que o clone local é o mesmo repositório).
18
+ - **Refs explícitas** — Caso contrário, tratar como base/head: se faltar um dos dois, inferir base = `main` ou `master` (o que existir) e head = branch atual (`git rev-parse --abbrev-ref HEAD`), ou pedir clarificação.
19
+ 2. **Obter diff (com URL / número de PR)** — Ordem de preferência quando o cwd é o repositório certo:
20
+ - **GitHub CLI:** `gh pr diff <n>` (ou `gh pr diff <n> --patch`). Se `gh` não estiver disponível ou falhar auth, tentar Git puro.
21
+ - **Git fetch ref da PR:** `git fetch origin pull/<n>/head:oxe-pr-<n>` (ajustar `origin` se o remoto tiver outro nome). Descobrir branch base com `gh pr view <n> --json baseRefName -q .baseRefName` ou assumir `main`/`master`; depois `git diff origin/<base>...oxe-pr-<n>` ou `git diff <base>...oxe-pr-<n>` após `fetch` da base.
22
+ - **Sem terminal / outro repo:** Pedir ao utilizador que cole o diff da aba “Files changed” no GitHub ou o output de `gh pr diff <n>` corrido localmente no repo certo.
23
+ 3. **Obter diff (só branches / SHAs)** — Preferir terminal quando disponível:
24
+ - `git fetch` (se fizer sentido e o ambiente permitir rede).
25
+ - `git merge-base base head` (opcional, para confirmar ancestral comum).
26
+ - `git diff base...head` (revisão tipo PR).
27
+ - `git log base..head --oneline -n 30` (contexto de commits).
28
+ Se o sandbox bloquear Git, pedir ao utilizador que cole o output de `git diff base...head` ou use o diff da UI do GitHub/GitLab.
29
+ Se o diff já foi obtido no passo 2 (URL da PR), **não** repetir este passo.
30
+ 4. **Ler contexto do projeto** — Se existirem, usar trechos relevantes de `.oxe/codebase/CONVENTIONS.md`, `STACK.md`, `OVERVIEW.md` e, se aplicável, `.oxe/SPEC.md` / `.oxe/PLAN.md` para alinhar expectativas (sem assumir que o PR cobre só OXE).
31
+ 5. **Analisar** — Estruturar a resposta com:
32
+ - **Resumo** — O que muda em 3–6 frases.
33
+ - **Ficheiros / áreas** — Agrupar por domínio (API, UI, config, etc.).
34
+ - **Riscos** — Regressões, breaking changes, segurança (inputs, segredos, auth), performance óbvia, migrações.
35
+ - **Testes** — O que deveria ser coberto ou correr localmente (comandos sugeridos se conhecidos do repo).
36
+ - **Checklist PR** — Título sugerido, descrição curta, breaking changes, rollback.
37
+ 6. **Opcional em disco** — Se o utilizador pedir registo: criar ou atualizar **`.oxe/PR-REVIEW.md`** com data, URL ou refs (base/head), resumo, achados e próximos passos (formato Markdown legível).
38
+ </process>
39
+
40
+ <success>
41
+ - [ ] URL da PR ou par base/head está explícito na resposta (ou foi pedida clarificação).
42
+ - [ ] A análise baseia-se no diff (terminal ou colado), não só em suposições.
43
+ - [ ] Há secção de riscos e de testes/verificação sugerida.
44
+ - [ ] Nenhum segredo ou credencial é repetido na análise; redigir se aparecerem no diff.
45
+ </success>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oxe-cc",
3
- "version": "0.3.0",
3
+ "version": "0.3.2",
4
4
  "description": "OXE — spec-driven workflows for Cursor and GitHub Copilot (install via npx)",
5
5
  "license": "GPL-3.0",
6
6
  "author": "",
@@ -29,6 +29,7 @@
29
29
  "files": [
30
30
  "bin",
31
31
  "oxe",
32
+ "assets",
32
33
  ".cursor",
33
34
  ".github",
34
35
  "commands",