oxe-cc 0.7.0 → 0.9.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-ask.md +34 -0
- package/.cursor/commands/oxe-capabilities.md +34 -0
- package/.cursor/commands/oxe-checkpoint.md +34 -0
- package/.cursor/commands/oxe-compact.md +33 -0
- package/.cursor/commands/oxe-dashboard.md +34 -0
- package/.cursor/commands/oxe-debug.md +34 -0
- package/.cursor/commands/oxe-discuss.md +34 -0
- package/.cursor/commands/oxe-execute.md +34 -0
- package/.cursor/commands/oxe-forensics.md +34 -0
- package/.cursor/commands/oxe-help.md +33 -0
- package/.cursor/commands/oxe-loop.md +34 -0
- package/.cursor/commands/oxe-milestone.md +34 -0
- package/.cursor/commands/oxe-next.md +33 -0
- package/.cursor/commands/oxe-obs.md +34 -0
- package/.cursor/commands/oxe-plan-agent.md +33 -0
- package/.cursor/commands/oxe-plan.md +34 -0
- package/.cursor/commands/oxe-project.md +34 -0
- package/.cursor/commands/oxe-quick.md +34 -0
- package/.cursor/commands/oxe-research.md +34 -0
- package/.cursor/commands/oxe-retro.md +34 -0
- package/.cursor/commands/oxe-review-pr.md +34 -0
- package/.cursor/commands/oxe-route.md +34 -0
- package/.cursor/commands/oxe-scan.md +34 -0
- package/.cursor/commands/oxe-security.md +34 -0
- package/.cursor/commands/oxe-session.md +34 -0
- package/.cursor/commands/oxe-skill.md +45 -0
- package/.cursor/commands/oxe-spec.md +34 -0
- package/.cursor/commands/oxe-ui-review.md +34 -0
- package/.cursor/commands/oxe-ui-spec.md +34 -0
- package/.cursor/commands/oxe-update.md +33 -0
- package/.cursor/commands/oxe-validate-gaps.md +34 -0
- package/.cursor/commands/oxe-verify.md +34 -0
- package/.cursor/commands/oxe-workstream.md +34 -0
- package/.cursor/commands/oxe.md +38 -2
- package/.github/copilot-instructions.md +20 -5
- package/.github/prompts/oxe-ask.prompt.md +33 -0
- package/.github/prompts/oxe-capabilities.prompt.md +33 -0
- package/.github/prompts/oxe-checkpoint.prompt.md +45 -12
- package/.github/prompts/oxe-compact.prompt.md +44 -11
- package/.github/prompts/oxe-dashboard.prompt.md +33 -0
- package/.github/prompts/oxe-debug.prompt.md +45 -12
- package/.github/prompts/oxe-discuss.prompt.md +33 -0
- package/.github/prompts/oxe-execute.prompt.md +45 -12
- package/.github/prompts/oxe-forensics.prompt.md +45 -12
- package/.github/prompts/oxe-help.prompt.md +42 -9
- package/.github/prompts/oxe-loop.prompt.md +45 -12
- package/.github/prompts/oxe-milestone.prompt.md +45 -12
- package/.github/prompts/oxe-next.prompt.md +42 -9
- package/.github/prompts/oxe-obs.prompt.md +45 -12
- package/.github/prompts/oxe-plan-agent.prompt.md +43 -10
- package/.github/prompts/oxe-plan.prompt.md +45 -12
- package/.github/prompts/oxe-project.prompt.md +45 -12
- package/.github/prompts/oxe-quick.prompt.md +45 -12
- package/.github/prompts/oxe-research.prompt.md +45 -12
- package/.github/prompts/oxe-retro.prompt.md +45 -12
- package/.github/prompts/oxe-review-pr.prompt.md +45 -12
- package/.github/prompts/oxe-route.prompt.md +45 -12
- package/.github/prompts/oxe-scan.prompt.md +45 -12
- package/.github/prompts/oxe-security.prompt.md +45 -12
- package/.github/prompts/oxe-session.prompt.md +33 -0
- package/.github/prompts/oxe-skill.prompt.md +45 -0
- package/.github/prompts/oxe-spec.prompt.md +45 -12
- package/.github/prompts/oxe-ui-review.prompt.md +45 -12
- package/.github/prompts/oxe-ui-spec.prompt.md +45 -12
- package/.github/prompts/oxe-update.prompt.md +44 -11
- package/.github/prompts/oxe-validate-gaps.prompt.md +45 -12
- package/.github/prompts/oxe-verify.prompt.md +45 -12
- package/.github/prompts/oxe-workstream.prompt.md +45 -12
- package/.github/prompts/oxe.prompt.md +45 -12
- package/AGENTS.md +6 -4
- package/CHANGELOG.md +45 -0
- package/README.md +38 -8
- package/bin/banner.txt +1 -1
- package/bin/lib/oxe-agent-install.cjs +69 -55
- package/bin/lib/oxe-context-engine.cjs +866 -0
- package/bin/lib/oxe-dashboard.cjs +605 -588
- package/bin/lib/oxe-operational.cjs +105 -0
- package/bin/lib/oxe-plugins.cjs +115 -0
- package/bin/lib/oxe-project-health.cjs +1139 -666
- package/bin/lib/oxe-runtime-semantics.cjs +459 -0
- package/bin/lib/oxe-security.cjs +64 -0
- package/bin/oxe-cc.js +615 -46
- package/commands/oxe/ask.md +33 -0
- package/commands/oxe/capabilities.md +33 -0
- package/commands/oxe/checkpoint.md +49 -16
- package/commands/oxe/compact.md +43 -10
- package/commands/oxe/dashboard.md +33 -0
- package/commands/oxe/debug.md +49 -16
- package/commands/oxe/discuss.md +33 -0
- package/commands/oxe/execute.md +49 -16
- package/commands/oxe/forensics.md +49 -16
- package/commands/oxe/help.md +44 -11
- package/commands/oxe/loop.md +50 -17
- package/commands/oxe/milestone.md +49 -16
- package/commands/oxe/next.md +45 -12
- package/commands/oxe/obs.md +49 -16
- package/commands/oxe/oxe.md +49 -16
- package/commands/oxe/plan-agent.md +48 -15
- package/commands/oxe/plan.md +48 -15
- package/commands/oxe/project.md +49 -16
- package/commands/oxe/quick.md +49 -16
- package/commands/oxe/research.md +49 -16
- package/commands/oxe/retro.md +49 -16
- package/commands/oxe/review-pr.md +49 -16
- package/commands/oxe/route.md +44 -11
- package/commands/oxe/scan.md +49 -16
- package/commands/oxe/security.md +49 -16
- package/commands/oxe/session.md +33 -0
- package/commands/oxe/skill.md +49 -0
- package/commands/oxe/spec.md +47 -14
- package/commands/oxe/ui-review.md +49 -16
- package/commands/oxe/ui-spec.md +49 -16
- package/commands/oxe/update.md +49 -16
- package/commands/oxe/validate-gaps.md +49 -16
- package/commands/oxe/verify.md +48 -15
- package/commands/oxe/workstream.md +49 -16
- package/lib/sdk/index.cjs +140 -7
- package/lib/sdk/index.d.ts +266 -1
- package/oxe/templates/HYPOTHESES.template.md +33 -0
- package/oxe/templates/PLAN.template.md +53 -22
- package/oxe/templates/SESSION.template.md +2 -0
- package/oxe/templates/SKILL.template.md +26 -0
- package/oxe/templates/WORKFLOW_AUTHORING.md +18 -2
- package/oxe/templates/config.template.json +16 -14
- package/oxe/workflows/ask.md +28 -7
- package/oxe/workflows/capabilities.md +2 -0
- package/oxe/workflows/dashboard.md +12 -2
- package/oxe/workflows/debug.md +9 -4
- package/oxe/workflows/discuss.md +12 -6
- package/oxe/workflows/execute.md +34 -12
- package/oxe/workflows/forensics.md +14 -9
- package/oxe/workflows/help.md +20 -9
- package/oxe/workflows/loop.md +13 -7
- package/oxe/workflows/next.md +6 -4
- package/oxe/workflows/plan-agent.md +3 -2
- package/oxe/workflows/plan.md +26 -3
- package/oxe/workflows/quick.md +10 -3
- package/oxe/workflows/references/reasoning-discovery.md +28 -0
- package/oxe/workflows/references/reasoning-execution.md +29 -0
- package/oxe/workflows/references/reasoning-planning.md +32 -0
- package/oxe/workflows/references/reasoning-review.md +29 -0
- package/oxe/workflows/references/reasoning-status.md +24 -0
- package/oxe/workflows/references/workflow-runtime-contracts.json +879 -0
- package/oxe/workflows/research.md +8 -2
- package/oxe/workflows/retro.md +7 -2
- package/oxe/workflows/review-pr.md +12 -8
- package/oxe/workflows/route.md +16 -13
- package/oxe/workflows/security.md +3 -2
- package/oxe/workflows/session.md +44 -0
- package/oxe/workflows/skill.md +44 -0
- package/oxe/workflows/spec.md +21 -18
- package/oxe/workflows/ui-review.md +13 -7
- package/oxe/workflows/update.md +3 -1
- package/oxe/workflows/validate-gaps.md +12 -6
- package/oxe/workflows/verify-audit.md +73 -0
- package/oxe/workflows/verify.md +40 -16
- package/package.json +4 -3
|
@@ -1,12 +1,45 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: oxe-validate-gaps
|
|
3
|
-
agent: agent
|
|
4
|
-
description: OXE — Gaps de cobertura pós-verify (VALIDATION-GAPS.md)
|
|
5
|
-
argument-hint: "[opcional: foco Tn ou A*]"
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
1
|
+
---
|
|
2
|
+
name: oxe-validate-gaps
|
|
3
|
+
agent: agent
|
|
4
|
+
description: OXE — Gaps de cobertura pós-verify (VALIDATION-GAPS.md)
|
|
5
|
+
argument-hint: "[opcional: foco Tn ou A*]"
|
|
6
|
+
oxe_workflow_slug: validate-gaps
|
|
7
|
+
oxe_reasoning_mode: review
|
|
8
|
+
oxe_question_policy: none
|
|
9
|
+
oxe_output_contract: findings
|
|
10
|
+
oxe_tool_profile: review_heavy
|
|
11
|
+
oxe_confidence_policy: explicit
|
|
12
|
+
oxe_context_tier: standard
|
|
13
|
+
oxe_contract_version: 2.0.0
|
|
14
|
+
oxe_semantics_hash: 27d51ac144da4c1c
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
<!-- oxe-reasoning-contract:start -->
|
|
18
|
+
|
|
19
|
+
**Contrato de raciocínio OXE deste comando**
|
|
20
|
+
- **Workflow:** validate-gaps
|
|
21
|
+
- **Modo:** revisão
|
|
22
|
+
- **Perguntas:** nenhuma
|
|
23
|
+
- **Saída esperada:** achados
|
|
24
|
+
- **Perfil de ferramentas:** revisão intensa
|
|
25
|
+
- **Política de confiança:** explícita
|
|
26
|
+
- **Tier de contexto padrão:** padrão
|
|
27
|
+
- **Versão do contrato:** 2.0.0
|
|
28
|
+
- **Checksum semântico:** `27d51ac144da4c1c`
|
|
29
|
+
- **Entrada de contexto prioritária:** `.oxe/context/packs/validate-gaps.md` e `.oxe/context/packs/validate-gaps.json`
|
|
30
|
+
- **Regra pack-first:** ler o context pack primeiro; se estiver stale, incompleto ou ausente, cair para leitura direta com fallback explícito.
|
|
31
|
+
- **Inspeção estruturada:** `oxe-cc context inspect --workflow validate-gaps --json`
|
|
32
|
+
- Apresentar findings primeiro, ordenados por severidade e evidência.
|
|
33
|
+
- Separar bug, risco, regressão e lacuna de teste.
|
|
34
|
+
- Se não houver findings, declarar isso explicitamente e listar riscos residuais.
|
|
35
|
+
- **Seções esperadas:** Findings · Perguntas abertas · Riscos residuais · Resumo
|
|
36
|
+
- **Bloqueios formais:** missing:state
|
|
37
|
+
- **Referência canónica:** `oxe/workflows/references/reasoning-review.md`
|
|
38
|
+
|
|
39
|
+
<!-- oxe-reasoning-contract:end -->
|
|
40
|
+
|
|
41
|
+
Executa o workflow **OXE validate-gaps** no repositório atual. Lê e aplica **integralmente**:
|
|
42
|
+
|
|
43
|
+
`oxe/workflows/validate-gaps.md`
|
|
44
|
+
|
|
45
|
+
Requer `VERIFY.md` e `PLAN.md` já existentes. Texto adicional: foco opcional em tarefa **Tn** ou critério **A***.
|
|
@@ -1,12 +1,45 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: oxe-verify
|
|
3
|
-
agent: agent
|
|
4
|
-
description: OXE — Valida implementação (.oxe/VERIFY.md)
|
|
5
|
-
argument-hint: "[opcional: Tn]"
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
1
|
+
---
|
|
2
|
+
name: oxe-verify
|
|
3
|
+
agent: agent
|
|
4
|
+
description: OXE — Valida implementação (.oxe/VERIFY.md)
|
|
5
|
+
argument-hint: "[opcional: Tn]"
|
|
6
|
+
oxe_workflow_slug: verify
|
|
7
|
+
oxe_reasoning_mode: review
|
|
8
|
+
oxe_question_policy: none
|
|
9
|
+
oxe_output_contract: findings
|
|
10
|
+
oxe_tool_profile: review_heavy
|
|
11
|
+
oxe_confidence_policy: explicit
|
|
12
|
+
oxe_context_tier: standard
|
|
13
|
+
oxe_contract_version: 2.0.0
|
|
14
|
+
oxe_semantics_hash: 442bb4594208d058
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
<!-- oxe-reasoning-contract:start -->
|
|
18
|
+
|
|
19
|
+
**Contrato de raciocínio OXE deste comando**
|
|
20
|
+
- **Workflow:** verify
|
|
21
|
+
- **Modo:** revisão
|
|
22
|
+
- **Perguntas:** nenhuma
|
|
23
|
+
- **Saída esperada:** achados
|
|
24
|
+
- **Perfil de ferramentas:** revisão intensa
|
|
25
|
+
- **Política de confiança:** explícita
|
|
26
|
+
- **Tier de contexto padrão:** padrão
|
|
27
|
+
- **Versão do contrato:** 2.0.0
|
|
28
|
+
- **Checksum semântico:** `442bb4594208d058`
|
|
29
|
+
- **Entrada de contexto prioritária:** `.oxe/context/packs/verify.md` e `.oxe/context/packs/verify.json`
|
|
30
|
+
- **Regra pack-first:** ler o context pack primeiro; se estiver stale, incompleto ou ausente, cair para leitura direta com fallback explícito.
|
|
31
|
+
- **Inspeção estruturada:** `oxe-cc context inspect --workflow verify --json`
|
|
32
|
+
- Apresentar findings primeiro, ordenados por severidade e evidência.
|
|
33
|
+
- Separar bug, risco, regressão e lacuna de teste.
|
|
34
|
+
- Se não houver findings, declarar isso explicitamente e listar riscos residuais.
|
|
35
|
+
- **Seções esperadas:** Findings · Perguntas abertas · Riscos residuais · Resumo
|
|
36
|
+
- **Bloqueios formais:** missing:state
|
|
37
|
+
- **Referência canónica:** `oxe/workflows/references/reasoning-review.md`
|
|
38
|
+
|
|
39
|
+
<!-- oxe-reasoning-contract:end -->
|
|
40
|
+
|
|
41
|
+
Executa o workflow **OXE verify**. Lê e aplica **integralmente**:
|
|
42
|
+
|
|
43
|
+
`oxe/workflows/verify.md` (na raiz do repositório em contexto)
|
|
44
|
+
|
|
45
|
+
Se o utilizador indicar uma tarefa `Tn`, restringe a verificação a essa tarefa.
|
|
@@ -1,12 +1,45 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: oxe-workstream
|
|
3
|
-
agent: agent
|
|
4
|
-
description: "OXE — Trilhas paralelas: list, new <nome>, switch <nome>, status, close <nome> — cada trilha tem artefatos independentes em .oxe/workstreams/<nome>/"
|
|
5
|
-
argument-hint: "list | new <nome> | switch <nome> | status | close <nome>"
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
1
|
+
---
|
|
2
|
+
name: oxe-workstream
|
|
3
|
+
agent: agent
|
|
4
|
+
description: "OXE — Trilhas paralelas: list, new <nome>, switch <nome>, status, close <nome> — cada trilha tem artefatos independentes em .oxe/workstreams/<nome>/"
|
|
5
|
+
argument-hint: "list | new <nome> | switch <nome> | status | close <nome>"
|
|
6
|
+
oxe_workflow_slug: workstream
|
|
7
|
+
oxe_reasoning_mode: execution
|
|
8
|
+
oxe_question_policy: ask_high_impact_only
|
|
9
|
+
oxe_output_contract: execution
|
|
10
|
+
oxe_tool_profile: write_bounded
|
|
11
|
+
oxe_confidence_policy: explicit
|
|
12
|
+
oxe_context_tier: standard
|
|
13
|
+
oxe_contract_version: 2.0.0
|
|
14
|
+
oxe_semantics_hash: 82d171363381cc0d
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
<!-- oxe-reasoning-contract:start -->
|
|
18
|
+
|
|
19
|
+
**Contrato de raciocínio OXE deste comando**
|
|
20
|
+
- **Workflow:** workstream
|
|
21
|
+
- **Modo:** execução
|
|
22
|
+
- **Perguntas:** perguntar só alto impacto
|
|
23
|
+
- **Saída esperada:** execução
|
|
24
|
+
- **Perfil de ferramentas:** mutação limitada
|
|
25
|
+
- **Política de confiança:** explícita
|
|
26
|
+
- **Tier de contexto padrão:** padrão
|
|
27
|
+
- **Versão do contrato:** 2.0.0
|
|
28
|
+
- **Checksum semântico:** `82d171363381cc0d`
|
|
29
|
+
- **Entrada de contexto prioritária:** `.oxe/context/packs/workstream.md` e `.oxe/context/packs/workstream.json`
|
|
30
|
+
- **Regra pack-first:** ler o context pack primeiro; se estiver stale, incompleto ou ausente, cair para leitura direta com fallback explícito.
|
|
31
|
+
- **Inspeção estruturada:** `oxe-cc context inspect --workflow workstream --json`
|
|
32
|
+
- Fazer reconhecimento curto antes de editar ou executar mutações.
|
|
33
|
+
- Trabalhar no menor write set viável e validar após cada fatia relevante.
|
|
34
|
+
- Parar e explicitar o bloqueio quando houver hipótese crítica não verificada.
|
|
35
|
+
- **Seções esperadas:** Contexto lido · Alvo da mudança · Validação executada · Resultado · Próximo passo
|
|
36
|
+
- **Bloqueios formais:** missing:state · missing:plan
|
|
37
|
+
- **Referência canónica:** `oxe/workflows/references/reasoning-execution.md`
|
|
38
|
+
|
|
39
|
+
<!-- oxe-reasoning-contract:end -->
|
|
40
|
+
|
|
41
|
+
Executa o workflow **OXE workstream** no repositório atual. Lê e aplica **integralmente** o ficheiro no workspace:
|
|
42
|
+
|
|
43
|
+
`oxe/workflows/workstream.md`
|
|
44
|
+
|
|
45
|
+
Usa o texto adicional desta mensagem como subcomando e contexto.
|
|
@@ -1,12 +1,45 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: oxe
|
|
3
|
-
agent: agent
|
|
4
|
-
description: OXE — Entrada universal: próximo passo / roteamento / help dos 8 comandos essenciais
|
|
5
|
-
argument-hint: "[contexto em linguagem natural | 'help' | vazio para próximo passo]"
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
1
|
+
---
|
|
2
|
+
name: oxe
|
|
3
|
+
agent: agent
|
|
4
|
+
description: OXE — Entrada universal: próximo passo / roteamento / help dos 8 comandos essenciais
|
|
5
|
+
argument-hint: "[contexto em linguagem natural | 'help' | vazio para próximo passo]"
|
|
6
|
+
oxe_workflow_slug: oxe
|
|
7
|
+
oxe_reasoning_mode: status
|
|
8
|
+
oxe_question_policy: none
|
|
9
|
+
oxe_output_contract: routing
|
|
10
|
+
oxe_tool_profile: read_heavy
|
|
11
|
+
oxe_confidence_policy: explicit
|
|
12
|
+
oxe_context_tier: standard
|
|
13
|
+
oxe_contract_version: 2.0.0
|
|
14
|
+
oxe_semantics_hash: d7f65cd3f77b0abc
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
<!-- oxe-reasoning-contract:start -->
|
|
18
|
+
|
|
19
|
+
**Contrato de raciocínio OXE deste comando**
|
|
20
|
+
- **Workflow:** oxe
|
|
21
|
+
- **Modo:** estado / roteamento
|
|
22
|
+
- **Perguntas:** nenhuma
|
|
23
|
+
- **Saída esperada:** roteamento
|
|
24
|
+
- **Perfil de ferramentas:** leitura intensa
|
|
25
|
+
- **Política de confiança:** explícita
|
|
26
|
+
- **Tier de contexto padrão:** padrão
|
|
27
|
+
- **Versão do contrato:** 2.0.0
|
|
28
|
+
- **Checksum semântico:** `d7f65cd3f77b0abc`
|
|
29
|
+
- **Entrada de contexto prioritária:** `.oxe/context/packs/oxe.md` e `.oxe/context/packs/oxe.json`
|
|
30
|
+
- **Regra pack-first:** ler o context pack primeiro; se estiver stale, incompleto ou ausente, cair para leitura direta com fallback explícito.
|
|
31
|
+
- **Inspeção estruturada:** `oxe-cc context inspect --workflow oxe --json`
|
|
32
|
+
- Responder com leitura curta e orientada a decisão.
|
|
33
|
+
- Dar uma recomendação única e justificar o motivo.
|
|
34
|
+
- Explicitar a confiança quando o estado estiver incompleto ou ambíguo.
|
|
35
|
+
- **Seções esperadas:** Leitura atual · Recomendação · Motivo · Confiança
|
|
36
|
+
- **Bloqueios formais:** missing:state
|
|
37
|
+
- **Referência canónica:** `oxe/workflows/references/reasoning-status.md`
|
|
38
|
+
|
|
39
|
+
<!-- oxe-reasoning-contract:end -->
|
|
40
|
+
|
|
41
|
+
Executa o workflow **OXE** (entrada universal) no repositório atual. Lê e aplica **integralmente**:
|
|
42
|
+
|
|
43
|
+
`oxe/workflows/oxe.md`
|
|
44
|
+
|
|
45
|
+
`$ARGUMENTS`: vazio → próximo passo; texto → roteamento; "help" → 8 comandos essenciais.
|
package/AGENTS.md
CHANGED
|
@@ -72,10 +72,12 @@ Blueprints em `.oxe/plan-agents.json` (schema 3). Protocolo inter-agente: `oxe/w
|
|
|
72
72
|
## Integrações IDE
|
|
73
73
|
|
|
74
74
|
- **Cursor:** slash commands em `~/.cursor/commands/` (gerados por `npm run sync:cursor`)
|
|
75
|
-
- **GitHub Copilot (VS Code):** prompt files em
|
|
75
|
+
- **GitHub Copilot (VS Code):** prompt files em `.github/prompts/` + `.github/copilot-instructions.md`
|
|
76
76
|
- **Claude Code:** commands em `~/.claude/commands/`
|
|
77
77
|
- **OpenCode / Gemini / Codex / Windsurf / Antigravity:** via `oxe-cc --all-agents`
|
|
78
78
|
|
|
79
|
-
## Instruções para agentes de IA
|
|
80
|
-
|
|
81
|
-
Quando o utilizador pedir uma etapa OXE por linguagem natural, seguir o ficheiro `oxe/workflows/<passo>.md` correspondente **sem atalhar passos**. Ler os artefatos em `.oxe/` antes de qualquer ação — nunca partir de suposições sobre o estado do projeto.
|
|
79
|
+
## Instruções para agentes de IA
|
|
80
|
+
|
|
81
|
+
Quando o utilizador pedir uma etapa OXE por linguagem natural, seguir o ficheiro `oxe/workflows/<passo>.md` correspondente **sem atalhar passos**. Ler os artefatos em `.oxe/` antes de qualquer ação — nunca partir de suposições sobre o estado do projeto.
|
|
82
|
+
|
|
83
|
+
Os wrappers por runtime podem carregar metadata cognitiva (`oxe_reasoning_mode`, `oxe_question_policy`, `oxe_output_contract`, `oxe_tool_profile`, `oxe_confidence_policy`), mas o comportamento canónico continua no workflow. Use essa metadata para adaptar a postura do agente sem bifurcar a lógica do OXE por ferramenta.
|
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,51 @@ Todas as versões seguem [Semantic Versioning](https://semver.org/). As mudança
|
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
+
## [0.8.0] — 2026-04-14
|
|
8
|
+
|
|
9
|
+
### Adicionado
|
|
10
|
+
|
|
11
|
+
**Session forking + revert**
|
|
12
|
+
- `session fork [nome]` — bifurca a sessão ativa, copiando todos os artefatos para uma nova sessão; rastreia `forked_from` na SESSION.md
|
|
13
|
+
- `session revert <checkpoint-slug>` — restaura STATE.md ao snapshot de um checkpoint, sem apagar artefatos atuais
|
|
14
|
+
|
|
15
|
+
**Skill system**
|
|
16
|
+
- `/oxe-skill` — workflow para descobrir, invocar e gerenciar skills (unificação de personas e capabilities)
|
|
17
|
+
- `@<skill-id>` no chat resolve persona OU capability OU composite como ponto de entrada único
|
|
18
|
+
- Template `SKILL.template.md` para criação de skills de projeto em `.oxe/skills/`
|
|
19
|
+
- Resolução em 3 camadas: project → capabilities → global (personas do pacote)
|
|
20
|
+
|
|
21
|
+
**Sistema de permissões com wildcard**
|
|
22
|
+
- `permissions[]` em `.oxe/config.json` — regras glob+ação que controlam acesso a arquivos durante execute e apply
|
|
23
|
+
- Ações: `allow`, `deny`, `ask` — avaliação first-match wins
|
|
24
|
+
- Scopes: `execute`, `apply`, `all`
|
|
25
|
+
- Gate automático no workflow execute antes de cada onda
|
|
26
|
+
|
|
27
|
+
**Config hierárquico (system → user → project)**
|
|
28
|
+
- `loadOxeConfigMerged()` agora lê 3 níveis: system (`OXE_SYSTEM_CONFIG` ou path OS-default) < user (`~/.oxe/config.json`) < project (`.oxe/config.json`)
|
|
29
|
+
- `status --full` exibe fontes de cada nível de configuração
|
|
30
|
+
- Campo `sources` no retorno do SDK
|
|
31
|
+
|
|
32
|
+
**Event sourcing com replay**
|
|
33
|
+
- `replayEvents()` no SDK — reconstrói timeline de `OXE-EVENTS.ndjson` com deltas, filtros por run/wave/event
|
|
34
|
+
- `oxe-cc runtime replay [--run <id>] [--from <event-id>] [--wave <n>] [--write]` — visualização de timeline no terminal ou `REPLAY-SESSION.md` em disco
|
|
35
|
+
- Integração com `/oxe-forensics` — replay como ferramenta de investigação
|
|
36
|
+
|
|
37
|
+
**Plugin system com carregamento remoto**
|
|
38
|
+
- `plugins[]` em `config.json` aceita `{ source: "npm:<pkg>" }` e `{ source: "path:./file.cjs" }`
|
|
39
|
+
- `oxe-cc plugins list` — lista plugins carregados (local + externos)
|
|
40
|
+
- `oxe-cc plugins install npm:<pkg>` — instala plugin npm em `.oxe/plugins/_npm/`
|
|
41
|
+
- `resolvePluginSources()` e `installNpmPlugin()` expostos no SDK
|
|
42
|
+
|
|
43
|
+
### Tipos TypeScript
|
|
44
|
+
- `OxePermissionRule`, `PermissionCheckResult`, `ReplayReport`, `PluginSource` adicionados
|
|
45
|
+
- `security.checkFilePermission`, `security.checkPermissions`, `security.globToRegex` declarados
|
|
46
|
+
- `operational.replayEvents` declarado
|
|
47
|
+
- `plugins.resolvePluginSources`, `plugins.installNpmPlugin` declarados
|
|
48
|
+
- `health.loadOxeConfigMerged` retorna `sources: { system, user, project }`
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
7
52
|
## [0.7.0] — 2026-04-13
|
|
8
53
|
|
|
9
54
|
### Adicionado
|
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
[](https://www.npmjs.com/package/oxe-cc)
|
|
8
8
|
[](LICENSE)
|
|
9
9
|
|
|
10
|
-
**Versão:** `0.
|
|
10
|
+
**Versão:** `0.8.0` · [package.json](package.json)
|
|
11
11
|
|
|
12
12
|
**Framework OXE — Orchestrated eXperience Engineering**
|
|
13
13
|
|
|
@@ -31,11 +31,26 @@ Ele se apoia em três princípios:
|
|
|
31
31
|
- **Context engineering** — o estado do trabalho fica em arquivos pequenos dentro de `.oxe/`, não na memória do chat. O agente lê o que precisa, quando precisa — sem sobrecarregar o contexto com decisões já tomadas.
|
|
32
32
|
- **Lessons loop** — ao fim de cada ciclo, `/oxe-retro` extrai 3–5 lições prescritivas que o próximo spec/plan lê automaticamente. Depois de alguns ciclos, os planos ficam dramaticamente melhores porque os erros anteriores não se repetem.
|
|
33
33
|
- **Plan-Driven Dynamic Agents** — quando há múltiplos domínios, o plano cria agentes específicos para *aquela demanda*. Agentes não são reaproveitados entre projetos ou demandas.
|
|
34
|
+
- **Semântica de raciocínio multi-runtime** — discovery, planning, execution, review e status seguem contratos cognitivos explícitos. O mesmo workflow OXE deve gerar respostas exploratórias, decision-complete e auditáveis em Copilot, Cursor, Claude, Codex e demais runtimes suportados.
|
|
34
35
|
|
|
35
36
|
O resultado: **menos requisições**, **mais coerência**, e uma experiência de engenharia orquestrada que funciona do mesmo jeito em qualquer IDE.
|
|
36
37
|
|
|
37
38
|
---
|
|
38
39
|
|
|
40
|
+
## Semântica de raciocínio do OXE
|
|
41
|
+
|
|
42
|
+
O OXE agora distingue cinco famílias de raciocínio:
|
|
43
|
+
|
|
44
|
+
- `discovery` — explorar antes de perguntar; separar fatos, inferências e lacunas
|
|
45
|
+
- `planning` — produzir plano decision-complete, com riscos, validação e confidence gate
|
|
46
|
+
- `execution` — reconhecimento curto antes de mutar; menor write set viável; validação por fatia
|
|
47
|
+
- `review` — findings primeiro, severidade, evidência e risco residual
|
|
48
|
+
- `status` — leitura curta do estado, recomendação única e motivo
|
|
49
|
+
|
|
50
|
+
Essas regras vivem no núcleo canónico em `oxe/workflows/references/reasoning-*.md`, sobem para os workflows em `oxe/workflows/` e são renderizadas para cada runtime em `.github/prompts/`, `.cursor/commands/`, `commands/oxe/`, `.codex/prompts/` e skills multiagente.
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
39
54
|
## Modos de uso
|
|
40
55
|
|
|
41
56
|
Escolha a complexidade certa para sua tarefa. Você sempre começa simples e adiciona estrutura quando precisar.
|
|
@@ -175,6 +190,7 @@ Cada passo lê o anterior como contexto e escreve seu artefato no escopo correto
|
|
|
175
190
|
| `/oxe-session` | Cria, alterna, retoma, fecha e migra sessões OXE sem misturar artefatos de ciclos diferentes. |
|
|
176
191
|
| `/oxe-ask` | Lê `STATE`, resolve a sessão ativa e responde perguntas situacionais com base nos artefatos reais. |
|
|
177
192
|
| `/oxe-capabilities` | Gera e mantém o catálogo nativo de capabilities do projeto em `.oxe/CAPABILITIES.md` e `.oxe/capabilities/`, com política, side effects e evidência esperada. |
|
|
193
|
+
| `/oxe-skill` | Descobrir, invocar e gerenciar skills OXE — unificação de personas e capabilities via `@<skill-id>`. Subcomandos: `list`, `explain <id>`, `new <id>`, invocação `@<id>` inline. |
|
|
178
194
|
| `oxe-cc azure` | Provider Azure nativo via Azure CLI: autenticação corporativa com MFA, inventário via Resource Graph e operações guiadas para Service Bus, Event Grid e Azure SQL, sempre com evidência em `.oxe/cloud/azure/`. |
|
|
179
195
|
| `/oxe-dashboard` | Consolida `STATE`, `PLAN`, `ACTIVE-RUN`, trace log, runtime, checkpoints e verify numa visão visual de ciclo, artefatos, ondas, handoffs e aprovação antes do execute. |
|
|
180
196
|
|
|
@@ -198,12 +214,16 @@ Estes não precisam ser decorados — aparecem quando o contexto pede ou quando
|
|
|
198
214
|
|
|
199
215
|
| Comando | Quando usar |
|
|
200
216
|
|---------|-------------|
|
|
217
|
+
| `/oxe-debug` | Diagnóstico técnico inline durante execute — stack trace, teste vermelho, flake |
|
|
201
218
|
| `/oxe-research` | Spike, mapa de sistema, engenharia reversa — antes de spec ou plano |
|
|
202
219
|
| `/oxe-forensics` | Falha persistente após múltiplas tentativas — diagnóstico profundo |
|
|
220
|
+
| `/oxe-validate-gaps` | Gaps de cobertura pós-verify (Nyquist-lite) |
|
|
221
|
+
| `/oxe-security` | Auditoria OWASP P0/P1/P2 vinculada ao stack |
|
|
203
222
|
| `/oxe-ui-spec` | Contrato UI/UX derivado da SPEC (quando UI é domínio crítico) |
|
|
204
223
|
| `/oxe-ui-review` | Auditoria da implementação UI contra o contrato |
|
|
205
224
|
| `/oxe-review-pr` | Revisão de PR ou diff de branches |
|
|
206
225
|
| `/oxe-checkpoint` | Snapshot nomeado do estado da sessão |
|
|
226
|
+
| `/oxe-loop` | Iteração automática até verify passar (integrado ao Modo B do execute) |
|
|
207
227
|
|
|
208
228
|
---
|
|
209
229
|
|
|
@@ -388,7 +408,8 @@ npx oxe-cc@latest
|
|
|
388
408
|
|
|
389
409
|
| Flag | Efeito |
|
|
390
410
|
|------|--------|
|
|
391
|
-
| `--cursor` / `--copilot` | Só uma das stacks |
|
|
411
|
+
| `--cursor` / `--copilot` | Só uma das stacks da IDE |
|
|
412
|
+
| `--copilot-cli` | Skills globais do Copilot CLI em `~/.copilot/skills/` |
|
|
392
413
|
| `--all-agents` | Cursor + Copilot + Claude + OpenCode + Gemini + Codex + Windsurf + Antigravity |
|
|
393
414
|
| `--global` | Layout clássico: `oxe/` na raiz + `.oxe/` |
|
|
394
415
|
| `--local` | Layout mínimo: só `.oxe/` (padrão) |
|
|
@@ -400,6 +421,8 @@ npx oxe-cc@latest
|
|
|
400
421
|
|
|
401
422
|
</details>
|
|
402
423
|
|
|
424
|
+
GitHub Copilot no VS Code é **workspace-first**: o OXE instala prompt files em `.github/prompts/*.prompt.md` e mescla instruções em `.github/copilot-instructions.md`. `~/.copilot/` fica reservado ao legado detectável e ao runtime do Copilot CLI.
|
|
425
|
+
|
|
403
426
|
<details>
|
|
404
427
|
<summary><strong>Atualizar e desinstalar</strong></summary>
|
|
405
428
|
|
|
@@ -430,15 +453,19 @@ node bin/oxe-cc.js --help
|
|
|
430
453
|
| Comando | O que faz |
|
|
431
454
|
|---------|-----------|
|
|
432
455
|
| `oxe-cc` / `oxe-cc install` | Instala workflows e integrações |
|
|
433
|
-
| `oxe-cc doctor` | Diagnóstico completo: Node, workflows, config, bootstrap `.oxe/`, sessão ativa, autoavaliação do plano
|
|
456
|
+
| `oxe-cc doctor` | Diagnóstico completo: Node, workflows, config, bootstrap `.oxe/`, sessão ativa, autoavaliação do plano, saúde lógica (`healthy` \| `warning` \| `broken`), drift semântico multi-runtime e workflows sem contrato no registry |
|
|
434
457
|
| `oxe-cc status` | Próximo passo sugerido + saúde lógica do fluxo |
|
|
435
458
|
| `oxe-cc status --full` | Coverage matrix + readiness gate + active run no terminal (ANSI) |
|
|
436
|
-
| `oxe-cc status --json` | Mesmo, em JSON, com `healthStatus`, `activeSession` e `
|
|
459
|
+
| `oxe-cc status --json` | Mesmo, em JSON (schema v3), com `healthStatus`, `activeSession`, `planSelfEvaluation`, `contextPacks`, `contextQuality` e `semanticsDrift` |
|
|
460
|
+
| `oxe-cc context build [--workflow <slug>] [--tier <minimal\|standard\|full>]` | Gera context pack(s) em `.oxe/context/packs/` — seleção determinística de artefatos por contrato de workflow |
|
|
461
|
+
| `oxe-cc context inspect [--workflow <slug>]` | Inspeciona um context pack existente ou resolve sob demanda (sem escrita); útil para diagnóstico antes de iniciar um passo |
|
|
437
462
|
| `oxe-cc update` | Atualiza workflows para a versão mais recente |
|
|
438
|
-
| `oxe-cc init-oxe` | Bootstrap do `.oxe/` (STATE, config, codebase/) |
|
|
439
|
-
| `oxe-cc dashboard` | Interface web local para revisão, comentários e aprovação do plano |
|
|
463
|
+
| `oxe-cc init-oxe` | Bootstrap do `.oxe/` (STATE, config, codebase/, context/, install/) |
|
|
464
|
+
| `oxe-cc dashboard` | Interface web local para revisão, comentários e aprovação do plano (inclui aba Context com quality score e drift semântico) |
|
|
440
465
|
| `oxe-cc runtime <status\|start\|pause\|resume\|replay>` | Controla o run ativo, cursor, replay e tracing operacional |
|
|
466
|
+
| `oxe-cc runtime replay [--run <id>] [--from <event-id>] [--wave <n>] [--write]` | Timeline de eventos com deltas; `--write` gera `REPLAY-SESSION.md` |
|
|
441
467
|
| `oxe-cc capabilities <list\|install\|remove\|update>` | Mantém o catálogo nativo de capabilities em `.oxe/` |
|
|
468
|
+
| `oxe-cc plugins <list\|install\|remove>` | Gerencia plugins de lifecycle; `install npm:<pkg>` instala em `.oxe/plugins/_npm/` |
|
|
442
469
|
| `oxe-cc uninstall` | Remove integrações OXE do HOME e do repo |
|
|
443
470
|
| `oxe-cc uninstall --global-cli` | Também remove o pacote npm global do PATH |
|
|
444
471
|
|
|
@@ -458,7 +485,8 @@ Arquivo `.oxe/config.json`. Principais opções:
|
|
|
458
485
|
| `scale_adaptive` | `true` | Scan sugere o profile pelo tamanho do projeto |
|
|
459
486
|
| `scan_max_age_days` | `0` | Doctor avisa quando o scan estiver velho |
|
|
460
487
|
| `lessons_max_age_days` | `0` | Doctor avisa quando a última retro estiver velho |
|
|
461
|
-
| `plugins` | `[]` | Hooks de lifecycle em `.oxe/plugins/*.cjs` |
|
|
488
|
+
| `plugins` | `[]` | Hooks de lifecycle em `.oxe/plugins/*.cjs`; aceita `{ source: "npm:<pkg>" }` e `{ source: "path:./file.cjs" }` |
|
|
489
|
+
| `permissions` | `[]` | Regras glob+ação para gate de arquivos em execute/apply — `{ pattern, action: allow\|deny\|ask, scope?: execute\|apply\|all }` |
|
|
462
490
|
|
|
463
491
|
---
|
|
464
492
|
|
|
@@ -485,7 +513,9 @@ TypeScript: [`lib/sdk/index.d.ts`](lib/sdk/index.d.ts) · Docs: [`lib/sdk/README
|
|
|
485
513
|
| Situação | O que tentar |
|
|
486
514
|
|----------|-------------|
|
|
487
515
|
| Comandos não aparecem no Cursor | Confirme `~/.cursor/commands/`; reinicie o Cursor |
|
|
488
|
-
| `/oxe-*` não aparecem no Copilot | Ative `"chat.promptFiles": true`; confirme
|
|
516
|
+
| `/oxe-*` não aparecem no Copilot | Ative `"chat.promptFiles": true`; confirme `.github/prompts/` e `.github/copilot-instructions.md`; se existir legado em `~/.copilot/`, rode `npx oxe-cc uninstall --copilot-legacy-clean` |
|
|
517
|
+
| Copilot responde fora do workflow OXE | Rode `npx oxe-cc doctor`; confirme que o prompt veio de `.github/prompts/` e não do legado em `~/.copilot/`; se houver blocos mistos de outros frameworks no global, limpe o legado |
|
|
518
|
+
| Um runtime responde sem a nova disciplina de raciocínio | Verifique drift entre `oxe/workflows/`, `.github/prompts/`, `commands/oxe/` e os prompts instalados; rode `npm run sync:runtime-metadata` e `npm run sync:cursor` no repo do pacote |
|
|
489
519
|
| Arquivos não atualizam | Reinstale com `--force` |
|
|
490
520
|
| `ETARGET` / versão não encontrada | `npm cache clean --force` |
|
|
491
521
|
| Erro no WSL sobre Node | Use Node instalado dentro do WSL |
|
package/bin/banner.txt
CHANGED
|
@@ -8,9 +8,10 @@
|
|
|
8
8
|
* Com `--ide-local`, destinos equivalentes sob a raiz do projeto (ex.: ./.opencode/commands).
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
const fs = require('fs');
|
|
12
|
-
const path = require('path');
|
|
13
|
-
const os = require('os');
|
|
11
|
+
const fs = require('fs');
|
|
12
|
+
const path = require('path');
|
|
13
|
+
const os = require('os');
|
|
14
|
+
const runtimeSemantics = require('./oxe-runtime-semantics.cjs');
|
|
14
15
|
|
|
15
16
|
const OXE_MANAGED_HTML = '<!-- oxe-cc managed -->';
|
|
16
17
|
const OXE_MANAGED_TOML = '# oxe-cc managed';
|
|
@@ -75,47 +76,55 @@ function adjustWorkflowPathsForNestedLayout(content) {
|
|
|
75
76
|
|
|
76
77
|
/**
|
|
77
78
|
* @param {string} text
|
|
78
|
-
* @returns {{ description: string, body: string }}
|
|
79
|
-
*/
|
|
80
|
-
function parseCursorCommandFrontmatter(text) {
|
|
81
|
-
const normalized = text.replace(/\r\n/g, '\n');
|
|
82
|
-
if (!normalized.startsWith('---\n')) {
|
|
83
|
-
return { description: '', body: normalized.trim() };
|
|
84
|
-
}
|
|
85
|
-
const end = normalized.indexOf('\n---\n', 4);
|
|
86
|
-
if (end === -1) {
|
|
87
|
-
return { description: '', body: normalized.trim() };
|
|
88
|
-
}
|
|
89
|
-
const yamlBlock = normalized.slice(4, end);
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
79
|
+
* @returns {{ description: string, body: string, frontmatter: Record<string, string> }}
|
|
80
|
+
*/
|
|
81
|
+
function parseCursorCommandFrontmatter(text) {
|
|
82
|
+
const normalized = text.replace(/\r\n/g, '\n');
|
|
83
|
+
if (!normalized.startsWith('---\n')) {
|
|
84
|
+
return { description: '', body: normalized.trim(), frontmatter: {} };
|
|
85
|
+
}
|
|
86
|
+
const end = normalized.indexOf('\n---\n', 4);
|
|
87
|
+
if (end === -1) {
|
|
88
|
+
return { description: '', body: normalized.trim(), frontmatter: {} };
|
|
89
|
+
}
|
|
90
|
+
const yamlBlock = normalized.slice(4, end);
|
|
91
|
+
const frontmatter = {};
|
|
92
|
+
let description = '';
|
|
93
|
+
for (const line of yamlBlock.split('\n')) {
|
|
94
|
+
const m = line.match(/^description:\s*(.+)$/);
|
|
95
|
+
if (m) {
|
|
96
|
+
description = m[1].trim().replace(/^["']|["']$/g, '');
|
|
97
|
+
}
|
|
98
|
+
const kv = line.match(/^([A-Za-z0-9_-]+):\s*(.+)$/);
|
|
99
|
+
if (kv) frontmatter[kv[1]] = kv[2].trim().replace(/^["']|["']$/g, '');
|
|
100
|
+
}
|
|
101
|
+
const body = normalized.slice(end + 5).trim();
|
|
102
|
+
return { description, body, frontmatter };
|
|
103
|
+
}
|
|
101
104
|
|
|
102
105
|
/**
|
|
103
106
|
* @param {string} skillName
|
|
104
107
|
* @param {string} description
|
|
105
|
-
* @param {string} body
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
108
|
+
* @param {string} body
|
|
109
|
+
* @param {Record<string, string>} [metadata]
|
|
110
|
+
*/
|
|
111
|
+
function buildAgentSkillMarkdown(skillName, description, body, metadata) {
|
|
112
|
+
const desc = description.trim() || `Comando OXE — ${skillName}`;
|
|
113
|
+
const meta = metadata ? runtimeSemantics.pickRuntimeMetadata(metadata) : {};
|
|
114
|
+
const metaLines = Object.keys(meta).length
|
|
115
|
+
? `${runtimeSemantics.renderRuntimeMetadataLines(meta).join('\n')}\n`
|
|
116
|
+
: '';
|
|
117
|
+
return (
|
|
118
|
+
`---\n` +
|
|
119
|
+
`name: ${skillName}\n` +
|
|
120
|
+
`description: ${JSON.stringify(desc)}\n` +
|
|
121
|
+
`user-invocable: true\n` +
|
|
122
|
+
metaLines +
|
|
123
|
+
`---\n\n` +
|
|
124
|
+
`${OXE_MANAGED_HTML}\n\n` +
|
|
125
|
+
`${body}\n`
|
|
126
|
+
);
|
|
127
|
+
}
|
|
119
128
|
|
|
120
129
|
/**
|
|
121
130
|
* @returns {string[]}
|
|
@@ -181,9 +190,9 @@ function installSkillTreeFromCursorCommands(cCmdSrc, skillsRoot, opts, pathRewri
|
|
|
181
190
|
const writeOne = (skillName, srcPath, descSuffix) => {
|
|
182
191
|
let raw = fs.readFileSync(srcPath, 'utf8');
|
|
183
192
|
if (pathRewriteNested) raw = adjustWorkflowPathsForNestedLayout(raw);
|
|
184
|
-
const { description, body } = parseCursorCommandFrontmatter(raw);
|
|
185
|
-
const desc = descSuffix ? `${description.trim()} ${descSuffix}`.trim() : description.trim();
|
|
186
|
-
const md = buildAgentSkillMarkdown(skillName, desc, body);
|
|
193
|
+
const { description, body, frontmatter } = parseCursorCommandFrontmatter(raw);
|
|
194
|
+
const desc = descSuffix ? `${description.trim()} ${descSuffix}`.trim() : description.trim();
|
|
195
|
+
const md = buildAgentSkillMarkdown(skillName, desc, body, frontmatter);
|
|
187
196
|
const destDir = path.join(skillsRoot, skillName);
|
|
188
197
|
const dest = path.join(destDir, 'SKILL.md');
|
|
189
198
|
if (opts.dryRun) {
|
|
@@ -248,8 +257,8 @@ function installGeminiTomlCommands(cCmdSrc, paths, opts, pathRewriteNested, logO
|
|
|
248
257
|
const writeToml = (relPath, srcPath, descSuffix) => {
|
|
249
258
|
let raw = fs.readFileSync(srcPath, 'utf8');
|
|
250
259
|
if (pathRewriteNested) raw = adjustWorkflowPathsForNestedLayout(raw);
|
|
251
|
-
const { description, body } = parseCursorCommandFrontmatter(raw);
|
|
252
|
-
const desc = descSuffix ? `${description} ${descSuffix}`.trim() : description;
|
|
260
|
+
const { description, body } = parseCursorCommandFrontmatter(raw);
|
|
261
|
+
const desc = descSuffix ? `${description} ${descSuffix}`.trim() : description;
|
|
253
262
|
const toml = buildGeminiToml(desc, body);
|
|
254
263
|
const dest = path.join(base, relPath);
|
|
255
264
|
if (opts.dryRun) {
|
|
@@ -298,8 +307,8 @@ function installWindsurfGlobalWorkflows(cCmdSrc, paths, opts, pathRewriteNested,
|
|
|
298
307
|
}
|
|
299
308
|
let raw = fs.readFileSync(src, 'utf8');
|
|
300
309
|
if (pathRewriteNested) raw = adjustWorkflowPathsForNestedLayout(raw);
|
|
301
|
-
const { description, body } = parseCursorCommandFrontmatter(raw);
|
|
302
|
-
const title = description || name.replace(/\.md$/i, '');
|
|
310
|
+
const { description, body } = parseCursorCommandFrontmatter(raw);
|
|
311
|
+
const title = description || name.replace(/\.md$/i, '');
|
|
303
312
|
const out =
|
|
304
313
|
`---\n` +
|
|
305
314
|
`description: ${JSON.stringify(title)}\n` +
|
|
@@ -353,14 +362,19 @@ function installCodexPrompts(cCmdSrc, paths, opts, pathRewriteNested, logOmitido
|
|
|
353
362
|
}
|
|
354
363
|
let raw = fs.readFileSync(src, 'utf8');
|
|
355
364
|
if (pathRewriteNested) raw = adjustWorkflowPathsForNestedLayout(raw);
|
|
356
|
-
const { description, body } = parseCursorCommandFrontmatter(raw);
|
|
357
|
-
const
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
365
|
+
const { description, body, frontmatter } = parseCursorCommandFrontmatter(raw);
|
|
366
|
+
const meta = runtimeSemantics.pickRuntimeMetadata(frontmatter);
|
|
367
|
+
const metaLines = Object.keys(meta).length
|
|
368
|
+
? `${runtimeSemantics.renderRuntimeMetadataLines(meta).join('\n')}\n`
|
|
369
|
+
: '';
|
|
370
|
+
const out =
|
|
371
|
+
`---\n` +
|
|
372
|
+
`description: ${JSON.stringify(description || 'OXE')}\n` +
|
|
373
|
+
`argument-hint: [texto livre opcional]\n` +
|
|
374
|
+
metaLines +
|
|
375
|
+
`---\n\n` +
|
|
376
|
+
`${OXE_MANAGED_HTML}\n\n` +
|
|
377
|
+
`${body}\n`;
|
|
364
378
|
fs.mkdirSync(destDir, { recursive: true });
|
|
365
379
|
fs.writeFileSync(dest, out, 'utf8');
|
|
366
380
|
}
|