oxe-cc 1.6.0 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/README.md +36 -34
  3. package/bin/lib/oxe-agent-install.cjs +149 -32
  4. package/bin/lib/oxe-operational.cjs +141 -34
  5. package/bin/lib/oxe-project-health.cjs +150 -42
  6. package/bin/lib/oxe-release.cjs +1 -0
  7. package/bin/oxe-cc.js +205 -113
  8. package/commands/oxe/debug.md +6 -1
  9. package/commands/oxe/discuss.md +7 -2
  10. package/commands/oxe/execute.md +7 -2
  11. package/commands/oxe/plan-agent.md +7 -2
  12. package/commands/oxe/plan.md +7 -2
  13. package/commands/oxe/scan.md +6 -1
  14. package/commands/oxe/spec.md +6 -1
  15. package/commands/oxe/verify.md +6 -1
  16. package/docs/CONTENT-MIGRATION-AUDIT.md +49 -0
  17. package/docs/RUNTIME-SMOKE-MATRIX.md +1 -1
  18. package/lib/runtime/compiler/graph-compiler.js +32 -0
  19. package/lib/runtime/context/context-pack-builder.d.ts +15 -0
  20. package/lib/runtime/context/context-pack-builder.js +78 -0
  21. package/lib/runtime/events/catalog.d.ts +1 -1
  22. package/lib/runtime/events/catalog.js +5 -0
  23. package/lib/runtime/executor/action-tool-map.d.ts +3 -0
  24. package/lib/runtime/executor/action-tool-map.js +41 -0
  25. package/lib/runtime/executor/built-in-tools.d.ts +8 -0
  26. package/lib/runtime/executor/built-in-tools.js +267 -0
  27. package/lib/runtime/executor/index.d.ts +6 -0
  28. package/lib/runtime/executor/index.js +12 -0
  29. package/lib/runtime/executor/llm-task-executor.d.ts +29 -0
  30. package/lib/runtime/executor/llm-task-executor.js +138 -0
  31. package/lib/runtime/executor/node-prompt-builder.d.ts +3 -0
  32. package/lib/runtime/executor/node-prompt-builder.js +36 -0
  33. package/lib/runtime/executor/stream-completion.d.ts +38 -0
  34. package/lib/runtime/executor/stream-completion.js +105 -0
  35. package/lib/runtime/index.d.ts +1 -0
  36. package/lib/runtime/index.js +2 -0
  37. package/lib/runtime/models/failure.d.ts +5 -0
  38. package/lib/runtime/models/failure.js +2 -0
  39. package/lib/runtime/plugins/capability-adapter.d.ts +9 -0
  40. package/lib/runtime/plugins/capability-adapter.js +111 -8
  41. package/lib/runtime/plugins/plugin-abi.d.ts +8 -0
  42. package/lib/runtime/plugins/plugin-registry.d.ts +2 -1
  43. package/lib/runtime/plugins/plugin-registry.js +6 -1
  44. package/lib/runtime/reducers/run-state-reducer.js +39 -2
  45. package/lib/runtime/scheduler/scheduler.d.ts +14 -2
  46. package/lib/runtime/scheduler/scheduler.js +131 -11
  47. package/lib/runtime/verification/verification-manifest.d.ts +5 -2
  48. package/oxe/agents/oxe-assumptions-analyzer.md +136 -0
  49. package/oxe/agents/oxe-codebase-mapper.md +142 -0
  50. package/oxe/agents/oxe-debugger.md +145 -0
  51. package/oxe/agents/oxe-executor.md +139 -0
  52. package/oxe/agents/oxe-integration-checker.md +142 -0
  53. package/oxe/agents/oxe-plan-checker.md +143 -0
  54. package/oxe/agents/oxe-planner.md +151 -0
  55. package/oxe/agents/oxe-research-synthesizer.md +146 -0
  56. package/oxe/agents/oxe-researcher.md +163 -0
  57. package/oxe/agents/oxe-ui-auditor.md +151 -0
  58. package/oxe/agents/oxe-ui-checker.md +157 -0
  59. package/oxe/agents/oxe-ui-researcher.md +179 -0
  60. package/oxe/agents/oxe-validation-auditor.md +154 -0
  61. package/oxe/agents/oxe-verifier.md +132 -0
  62. package/oxe/personas/README.md +91 -39
  63. package/oxe/personas/architect.md +149 -37
  64. package/oxe/personas/db-specialist.md +149 -36
  65. package/oxe/personas/debugger.md +155 -38
  66. package/oxe/personas/executor.md +164 -38
  67. package/oxe/personas/planner.md +165 -36
  68. package/oxe/personas/researcher.md +148 -35
  69. package/oxe/personas/ui-specialist.md +164 -36
  70. package/oxe/personas/verifier.md +174 -39
  71. package/oxe/templates/FIXTURE-PACK.template.json +18 -11
  72. package/oxe/templates/FIXTURE-PACK.template.md +19 -10
  73. package/oxe/templates/IMPLEMENTATION-PACK.template.json +26 -10
  74. package/oxe/templates/IMPLEMENTATION-PACK.template.md +32 -20
  75. package/oxe/templates/PLAN.template.md +62 -31
  76. package/oxe/templates/REFERENCE-ANCHORS.template.md +14 -10
  77. package/oxe/templates/SUMMARY.template.md +50 -20
  78. package/oxe/workflows/debug.md +9 -7
  79. package/oxe/workflows/execute.md +11 -8
  80. package/oxe/workflows/forensics.md +5 -3
  81. package/oxe/workflows/plan.md +277 -0
  82. package/oxe/workflows/scan.md +355 -69
  83. package/oxe/workflows/spec.md +302 -9
  84. package/oxe/workflows/ui-review.md +5 -4
  85. package/oxe/workflows/ui-spec.md +4 -3
  86. package/oxe/workflows/verify.md +8 -5
  87. package/package.json +26 -26
  88. package/packages/runtime/package.json +5 -5
  89. package/packages/runtime/src/compiler/graph-compiler.ts +40 -0
  90. package/packages/runtime/src/context/context-pack-builder.ts +80 -0
  91. package/packages/runtime/src/events/catalog.ts +5 -0
  92. package/packages/runtime/src/executor/action-tool-map.ts +46 -0
  93. package/packages/runtime/src/executor/built-in-tools.ts +276 -0
  94. package/packages/runtime/src/executor/index.ts +6 -0
  95. package/packages/runtime/src/executor/llm-task-executor.ts +194 -0
  96. package/packages/runtime/src/executor/node-prompt-builder.ts +45 -0
  97. package/packages/runtime/src/executor/stream-completion.ts +145 -0
  98. package/packages/runtime/src/index.ts +3 -0
  99. package/packages/runtime/src/models/failure.ts +11 -0
  100. package/packages/runtime/src/plugins/capability-adapter.ts +117 -10
  101. package/packages/runtime/src/plugins/plugin-abi.ts +9 -0
  102. package/packages/runtime/src/plugins/plugin-registry.ts +10 -1
  103. package/packages/runtime/src/reducers/run-state-reducer.ts +59 -2
  104. package/packages/runtime/src/scheduler/scheduler.ts +152 -14
  105. package/packages/runtime/src/verification/verification-manifest.ts +12 -8
  106. package/vscode-extension/oxe-agents-1.7.0.vsix +0 -0
  107. package/vscode-extension/oxe-agents-1.8.0.vsix +0 -0
  108. package/vscode-extension/package.json +2 -2
package/bin/oxe-cc.js CHANGED
@@ -1527,20 +1527,20 @@ function printOxeHealthDiagnostics(target, c, diagOpts = {}) {
1527
1527
  if (r.eventsSummary) {
1528
1528
  console.log(` ${c ? dim : ''}Tracing:${c ? reset : ''} ${r.eventsSummary.total} evento(s)`);
1529
1529
  }
1530
- if (r.planSelfEvaluation && r.planSelfEvaluation.hasSection) {
1531
- const best = r.planSelfEvaluation.bestPlan || '—';
1532
- const conf =
1533
- typeof r.planSelfEvaluation.confidence === 'number' ? `${r.planSelfEvaluation.confidence}%` : '—';
1534
- console.log(` ${c ? dim : ''}Plano (autoavaliação):${c ? reset : ''} melhor=${best} | confiança=${conf}`);
1535
- }
1536
- if (typeof r.executionRationalityReady === 'boolean') {
1537
- console.log(
1538
- ` ${c ? dim : ''}Prontidão racional:${c ? reset : ''} implementation=${r.implementationPackReady ? 'ok' : 'pendente'} | anchors=${r.referenceAnchorsReady ? 'ok' : 'pendente'} | fixtures=${r.fixturePackReady ? 'ok' : 'pendente'}`
1539
- );
1540
- }
1541
- if (r.contextQuality) {
1542
- console.log(
1543
- ` ${c ? dim : ''}Contexto:${c ? reset : ''} score=${r.contextQuality.primaryScore != null ? r.contextQuality.primaryScore : '—'} | workflow=${r.contextQuality.primaryWorkflow || '—'} | status=${r.contextQuality.primaryStatus || '—'}`
1530
+ if (r.planSelfEvaluation && r.planSelfEvaluation.hasSection) {
1531
+ const best = r.planSelfEvaluation.bestPlan || '—';
1532
+ const conf =
1533
+ typeof r.planSelfEvaluation.confidence === 'number' ? `${r.planSelfEvaluation.confidence}%` : '—';
1534
+ console.log(` ${c ? dim : ''}Plano (autoavaliação):${c ? reset : ''} melhor=${best} | confiança=${conf}`);
1535
+ }
1536
+ if (typeof r.executionRationalityReady === 'boolean') {
1537
+ console.log(
1538
+ ` ${c ? dim : ''}Prontidão racional:${c ? reset : ''} implementation=${r.implementationPackReady ? 'ok' : 'pendente'} | anchors=${r.referenceAnchorsReady ? 'ok' : 'pendente'} | fixtures=${r.fixturePackReady ? 'ok' : 'pendente'}`
1539
+ );
1540
+ }
1541
+ if (r.contextQuality) {
1542
+ console.log(
1543
+ ` ${c ? dim : ''}Contexto:${c ? reset : ''} score=${r.contextQuality.primaryScore != null ? r.contextQuality.primaryScore : '—'} | workflow=${r.contextQuality.primaryWorkflow || '—'} | status=${r.contextQuality.primaryStatus || '—'}`
1544
1544
  );
1545
1545
  }
1546
1546
  if (r.semanticsDrift) {
@@ -1668,11 +1668,11 @@ function runStatusFull(target) {
1668
1668
  sp = oxeHealth.scopedOxePaths(target, activeSession);
1669
1669
  }
1670
1670
 
1671
- printSection('OXE ▸ status --full');
1672
- console.log(` ${c ? green : ''}Projeto:${c ? reset : ''} ${c ? cyan : ''}${target}${c ? reset : ''}`);
1673
- console.log(` ${c ? green : ''}Sessão:${c ? reset : ''} ${c ? cyan : ''}${activeSession || 'modo legado'}${c ? reset : ''}`);
1674
- console.log(` ${c ? green : ''}Workspace mode:${c ? reset : ''} ${report.workspaceMode || 'oxe_project'}`);
1675
- console.log(` ${c ? green : ''}Fase:${c ? reset : ''} ${report.phase || '—'}`);
1671
+ printSection('OXE ▸ status --full');
1672
+ console.log(` ${c ? green : ''}Projeto:${c ? reset : ''} ${c ? cyan : ''}${target}${c ? reset : ''}`);
1673
+ console.log(` ${c ? green : ''}Sessão:${c ? reset : ''} ${c ? cyan : ''}${activeSession || 'modo legado'}${c ? reset : ''}`);
1674
+ console.log(` ${c ? green : ''}Workspace mode:${c ? reset : ''} ${report.workspaceMode || 'oxe_project'}`);
1675
+ console.log(` ${c ? green : ''}Fase:${c ? reset : ''} ${report.phase || '—'}`);
1676
1676
 
1677
1677
  const healthColor = report.healthStatus === 'healthy' ? green : report.healthStatus === 'warning' ? yellow : red;
1678
1678
  console.log(` ${c ? green : ''}Saúde:${c ? reset : ''} ${c ? healthColor : ''}${report.healthStatus}${c ? reset : ''}`);
@@ -1687,6 +1687,14 @@ function runStatusFull(target) {
1687
1687
  console.log(` ${c ? yellow : ''} • ${warning}${c ? reset : ''}`);
1688
1688
  }
1689
1689
  }
1690
+ if (report.codex && (report.codex.detected || report.codex.warnings.length)) {
1691
+ console.log(`\n ${c ? yellow : ''}Codex${c ? reset : ''}`);
1692
+ console.log(` ${c ? dim : ''}Prompts:${c ? reset : ''} ${report.codex.commandsReady ? 'ok' : 'pendente'} · ${displayPathForUser(report.codex.promptsDir)}`);
1693
+ console.log(` ${c ? dim : ''}Skills:${c ? reset : ''} ${report.codex.skillsReady ? 'ok' : 'pendente'} · ${displayPathForUser(report.codex.skillsRoot)}`);
1694
+ for (const warning of report.codexWarn.slice(0, 3)) {
1695
+ console.log(` ${c ? yellow : ''} • ${warning}${c ? reset : ''}`);
1696
+ }
1697
+ }
1690
1698
 
1691
1699
  // Coverage matrix
1692
1700
  const specPath = activeSession && sp.spec ? sp.spec : p.spec;
@@ -1702,41 +1710,41 @@ function runStatusFull(target) {
1702
1710
  console.log(` ${coverageCell(codebaseExists, 'codebase scan')} ${coverageCell(specExists, 'SPEC.md')} ${coverageCell(planExists, 'PLAN.md')} ${coverageCell(verifyExists, 'VERIFY.md')} ${coverageCell(lessonsExists, 'LESSONS.md')}`);
1703
1711
 
1704
1712
  // Readiness gate
1705
- const packageMode = report.workspaceMode === 'product_package';
1706
- const ready = packageMode
1707
- ? Boolean(report.releaseReadiness && report.releaseReadiness.ok)
1708
- : specExists
1709
- && planExists
1710
- && report.executionRationalityReady
1711
- && !report.planWarn.length
1712
- && !report.runtimeWarn.length;
1713
- const gateColor = ready ? green : yellow;
1714
- console.log(`\n ${c ? yellow : ''}Readiness gate${c ? reset : ''}`);
1715
- console.log(` ${c ? gateColor : ''}${ready ? (packageMode ? '✓ Pronto para publicar' : '✓ Pronto para executar') : (packageMode ? '✗ Não pronto para publicar' : '✗ Não pronto para executar')}${c ? reset : ''}`);
1716
- if (packageMode) {
1717
- const releaseReadiness = report.releaseReadiness || { blockers: [], warnings: [] };
1718
- if (Array.isArray(releaseReadiness.blockers) && releaseReadiness.blockers.length) {
1719
- for (const blocker of releaseReadiness.blockers) {
1720
- console.log(` ${c ? red : ''} • ${blocker}${c ? reset : ''}`);
1721
- }
1722
- }
1723
- if (Array.isArray(releaseReadiness.warnings) && releaseReadiness.warnings.length) {
1724
- for (const warning of releaseReadiness.warnings) {
1725
- console.log(` ${c ? yellow : ''} • ${warning}${c ? reset : ''}`);
1726
- }
1727
- }
1728
- } else {
1729
- if (!specExists) console.log(` ${c ? dim : ''} • SPEC.md ausente — rode /oxe-spec${c ? reset : ''}`);
1730
- if (!planExists) console.log(` ${c ? dim : ''} • PLAN.md ausente — rode /oxe-plan${c ? reset : ''}`);
1731
- if (report.planWarn.length) {
1732
- for (const w of report.planWarn) {
1733
- console.log(` ${c ? yellow : ''} • ${w}${c ? reset : ''}`);
1734
- }
1735
- }
1736
- if (planExists) {
1737
- console.log(` ${c ? dim : ''} • Artefatos racionais:${c ? reset : ''} implementation=${report.implementationPackReady ? 'ok' : 'pendente'} · anchors=${report.referenceAnchorsReady ? 'ok' : 'pendente'} · fixtures=${report.fixturePackReady ? 'ok' : 'pendente'}`);
1738
- }
1739
- }
1713
+ const packageMode = report.workspaceMode === 'product_package';
1714
+ const ready = packageMode
1715
+ ? Boolean(report.releaseReadiness && report.releaseReadiness.ok)
1716
+ : specExists
1717
+ && planExists
1718
+ && report.executionRationalityReady
1719
+ && !report.planWarn.length
1720
+ && !report.runtimeWarn.length;
1721
+ const gateColor = ready ? green : yellow;
1722
+ console.log(`\n ${c ? yellow : ''}Readiness gate${c ? reset : ''}`);
1723
+ console.log(` ${c ? gateColor : ''}${ready ? (packageMode ? '✓ Pronto para publicar' : '✓ Pronto para executar') : (packageMode ? '✗ Não pronto para publicar' : '✗ Não pronto para executar')}${c ? reset : ''}`);
1724
+ if (packageMode) {
1725
+ const releaseReadiness = report.releaseReadiness || { blockers: [], warnings: [] };
1726
+ if (Array.isArray(releaseReadiness.blockers) && releaseReadiness.blockers.length) {
1727
+ for (const blocker of releaseReadiness.blockers) {
1728
+ console.log(` ${c ? red : ''} • ${blocker}${c ? reset : ''}`);
1729
+ }
1730
+ }
1731
+ if (Array.isArray(releaseReadiness.warnings) && releaseReadiness.warnings.length) {
1732
+ for (const warning of releaseReadiness.warnings) {
1733
+ console.log(` ${c ? yellow : ''} • ${warning}${c ? reset : ''}`);
1734
+ }
1735
+ }
1736
+ } else {
1737
+ if (!specExists) console.log(` ${c ? dim : ''} • SPEC.md ausente — rode /oxe-spec${c ? reset : ''}`);
1738
+ if (!planExists) console.log(` ${c ? dim : ''} • PLAN.md ausente — rode /oxe-plan${c ? reset : ''}`);
1739
+ if (report.planWarn.length) {
1740
+ for (const w of report.planWarn) {
1741
+ console.log(` ${c ? yellow : ''} • ${w}${c ? reset : ''}`);
1742
+ }
1743
+ }
1744
+ if (planExists) {
1745
+ console.log(` ${c ? dim : ''} • Artefatos racionais:${c ? reset : ''} implementation=${report.implementationPackReady ? 'ok' : 'pendente'} · anchors=${report.referenceAnchorsReady ? 'ok' : 'pendente'} · fixtures=${report.fixturePackReady ? 'ok' : 'pendente'}`);
1746
+ }
1747
+ }
1740
1748
 
1741
1749
  // Active run summary
1742
1750
  if (report.activeRun) {
@@ -1822,24 +1830,24 @@ function runStatusFull(target) {
1822
1830
  }
1823
1831
 
1824
1832
  // Plan self-evaluation
1825
- if (!packageMode && report.planSelfEvaluation) {
1826
- const pse = report.planSelfEvaluation;
1827
- const threshold = report.planConfidenceThreshold || 90;
1828
- console.log(`\n ${c ? yellow : ''}Autoavaliação do plano${c ? reset : ''}`);
1829
- if (pse.best_plan_current != null) {
1830
- const bestColor = pse.best_plan_current ? green : red;
1831
- console.log(` ${c ? dim : ''}Melhor plano atual:${c ? reset : ''} ${c ? bestColor : ''}${pse.best_plan_current ? 'sim' : 'não'}${c ? reset : ''}`);
1832
- }
1833
- if (pse.confidence != null) {
1834
- const confColor = report.planConfidenceExecutable
1835
- ? green
1836
- : Number(pse.confidence) >= Math.max(80, threshold - 10)
1837
- ? yellow
1838
- : red;
1839
- console.log(` ${c ? dim : ''}Confiança:${c ? reset : ''} ${c ? confColor : ''}${pse.confidence}%${c ? reset : ''}`);
1840
- console.log(` ${c ? dim : ''}Gate executável:${c ? reset : ''} > ${threshold}%${pse.executable ? ' (atingido)' : ' (ainda não atingido)'}`);
1841
- }
1842
- }
1833
+ if (!packageMode && report.planSelfEvaluation) {
1834
+ const pse = report.planSelfEvaluation;
1835
+ const threshold = report.planConfidenceThreshold || 90;
1836
+ console.log(`\n ${c ? yellow : ''}Autoavaliação do plano${c ? reset : ''}`);
1837
+ if (pse.best_plan_current != null) {
1838
+ const bestColor = pse.best_plan_current ? green : red;
1839
+ console.log(` ${c ? dim : ''}Melhor plano atual:${c ? reset : ''} ${c ? bestColor : ''}${pse.best_plan_current ? 'sim' : 'não'}${c ? reset : ''}`);
1840
+ }
1841
+ if (pse.confidence != null) {
1842
+ const confColor = report.planConfidenceExecutable
1843
+ ? green
1844
+ : Number(pse.confidence) >= Math.max(80, threshold - 10)
1845
+ ? yellow
1846
+ : red;
1847
+ console.log(` ${c ? dim : ''}Confiança:${c ? reset : ''} ${c ? confColor : ''}${pse.confidence}%${c ? reset : ''}`);
1848
+ console.log(` ${c ? dim : ''}Gate executável:${c ? reset : ''} > ${threshold}%${pse.executable ? ' (atingido)' : ' (ainda não atingido)'}`);
1849
+ }
1850
+ }
1843
1851
 
1844
1852
  console.log(`\n ${c ? dim : ''}Próximo passo:${c ? reset : ''} ${c ? cyan : ''}${report.next && report.next.cursorCmd ? report.next.cursorCmd : '—'}${c ? reset : ''}`);
1845
1853
  console.log(` ${c ? dim : ''}Motivo:${c ? reset : ''} ${report.next && report.next.reason ? report.next.reason : '—'}`);
@@ -1858,13 +1866,13 @@ function runStatus(target, opts = {}) {
1858
1866
  const next = report.next;
1859
1867
 
1860
1868
  if (opts.json) {
1861
- /** @type {Record<string, unknown>} */
1862
- const payload = {
1863
- oxeStatusSchema: 5,
1864
- projectRoot: path.resolve(target),
1865
- workspaceMode: report.workspaceMode || 'oxe_project',
1866
- releaseReadiness: report.releaseReadiness || null,
1867
- nextStep: report.next.step,
1869
+ /** @type {Record<string, unknown>} */
1870
+ const payload = {
1871
+ oxeStatusSchema: 5,
1872
+ projectRoot: path.resolve(target),
1873
+ workspaceMode: report.workspaceMode || 'oxe_project',
1874
+ releaseReadiness: report.releaseReadiness || null,
1875
+ nextStep: report.next.step,
1868
1876
  cursorCmd: report.next.cursorCmd,
1869
1877
  reason: report.next.reason,
1870
1878
  artifacts: report.next.artifacts,
@@ -1873,18 +1881,18 @@ function runStatus(target, opts = {}) {
1873
1881
  activeSession: report.activeSession,
1874
1882
  scanDate: report.scanDate,
1875
1883
  staleScan: report.stale,
1876
- compactDate: report.compactDate,
1877
- staleCompact: report.staleCompact,
1878
- planSelfEvaluation: report.planSelfEvaluation,
1879
- planConfidenceThreshold: report.planConfidenceThreshold,
1880
- planConfidenceExecutable: report.planConfidenceExecutable,
1881
- implementationPackReady: report.implementationPackReady,
1882
- referenceAnchorsReady: report.referenceAnchorsReady,
1883
- fixturePackReady: report.fixturePackReady,
1884
- executionRationalityReady: report.executionRationalityReady,
1885
- criticalExecutionGaps: report.criticalExecutionGaps,
1886
- executionRationality: report.executionRationality,
1887
- planReviewStatus: report.planReviewStatus,
1884
+ compactDate: report.compactDate,
1885
+ staleCompact: report.staleCompact,
1886
+ planSelfEvaluation: report.planSelfEvaluation,
1887
+ planConfidenceThreshold: report.planConfidenceThreshold,
1888
+ planConfidenceExecutable: report.planConfidenceExecutable,
1889
+ implementationPackReady: report.implementationPackReady,
1890
+ referenceAnchorsReady: report.referenceAnchorsReady,
1891
+ fixturePackReady: report.fixturePackReady,
1892
+ executionRationalityReady: report.executionRationalityReady,
1893
+ criticalExecutionGaps: report.criticalExecutionGaps,
1894
+ executionRationality: report.executionRationality,
1895
+ planReviewStatus: report.planReviewStatus,
1888
1896
  activeRun: report.activeRun,
1889
1897
  eventsSummary: report.eventsSummary,
1890
1898
  runtimeMode: report.runtimeMode,
@@ -1909,6 +1917,7 @@ function runStatus(target, opts = {}) {
1909
1917
  azureActive: report.azureActive,
1910
1918
  azure: report.azure,
1911
1919
  copilot: report.copilot,
1920
+ codex: report.codex,
1912
1921
  contextPacks: report.contextPacks,
1913
1922
  contextQuality: report.contextQuality,
1914
1923
  semanticsDrift: report.semanticsDrift,
@@ -1927,6 +1936,7 @@ function runStatus(target, opts = {}) {
1927
1936
  sessionWarnings: report.sessionWarn,
1928
1937
  installWarnings: report.installWarn,
1929
1938
  copilotWarnings: report.copilotWarn,
1939
+ codexWarnings: report.codexWarn,
1930
1940
  contextWarnings: report.contextWarn,
1931
1941
  semanticsWarnings: report.semanticsWarn,
1932
1942
  summaryGapWarning: report.summaryGapWarn,
@@ -1941,10 +1951,10 @@ function runStatus(target, opts = {}) {
1941
1951
  return;
1942
1952
  }
1943
1953
 
1944
- printSection('OXE ▸ status');
1945
- const c = useAnsiColors();
1946
- console.log(` ${c ? green : ''}Projeto:${c ? reset : ''} ${c ? cyan : ''}${target}${c ? reset : ''}`);
1947
- console.log(` ${c ? dim : ''}Workspace mode:${c ? reset : ''} ${report.workspaceMode || 'oxe_project'}`);
1954
+ printSection('OXE ▸ status');
1955
+ const c = useAnsiColors();
1956
+ console.log(` ${c ? green : ''}Projeto:${c ? reset : ''} ${c ? cyan : ''}${target}${c ? reset : ''}`);
1957
+ console.log(` ${c ? dim : ''}Workspace mode:${c ? reset : ''} ${report.workspaceMode || 'oxe_project'}`);
1948
1958
 
1949
1959
  const wfTgt = oxeWorkflows.resolveWorkflowsDir(target);
1950
1960
  if (!wfTgt) {
@@ -1962,6 +1972,8 @@ function runStatus(target, opts = {}) {
1962
1972
  const _claudeLocal = path.join(target, 'commands', 'oxe');
1963
1973
  const _claudeGlobal = path.join(require('os').homedir(), '.claude', 'commands');
1964
1974
  ideStatusLines.push(`Claude Code ${fs.existsSync(_claudeLocal) || fs.existsSync(_claudeGlobal) ? (c ? green + '✓' + reset : '✓') : (c ? dim + '✗' + reset : '✗')}`);
1975
+ const _codex = report.codex || oxeHealth.codexIntegrationReport(target);
1976
+ ideStatusLines.push(`Codex ${_codex.commandsReady ? (c ? green + '✓' + reset : '✓') : (c ? dim + '✗' + reset : '✗')}`);
1965
1977
  console.log(`\n ${c ? dim : ''}IDEs:${c ? reset : ''} ${ideStatusLines.join(' ')}`);
1966
1978
 
1967
1979
  // Gates pending in default view
@@ -1975,24 +1987,24 @@ function runStatus(target, opts = {}) {
1975
1987
  }
1976
1988
 
1977
1989
  // Explicit blockage diagnosis
1978
- const packageMode = report.workspaceMode === 'product_package';
1979
- const specMissing = !fs.existsSync(path.join(target, '.oxe', 'SPEC.md'));
1980
- const planMissing = !fs.existsSync(path.join(target, '.oxe', 'PLAN.md'));
1981
- const verifyMissing = !fs.existsSync(path.join(target, '.oxe', 'VERIFY.md'));
1982
- if (packageMode) {
1983
- const releaseReadiness = report.releaseReadiness || { ok: false, blockers: [], warnings: [] };
1984
- if (!releaseReadiness.ok && Array.isArray(releaseReadiness.blockers) && releaseReadiness.blockers.length) {
1985
- console.log(` ${c ? yellow : ''}⚠ Release blockers:${c ? reset : ''} ${releaseReadiness.blockers[0]}`);
1986
- } else if (Array.isArray(releaseReadiness.warnings) && releaseReadiness.warnings.length) {
1987
- console.log(` ${c ? dim : ''}Obs.:${c ? reset : ''} release warnings ativas — ${releaseReadiness.warnings[0]}`);
1988
- }
1989
- } else if (specMissing) {
1990
- console.log(` ${c ? yellow : ''}⚠ Bloqueio:${c ? reset : ''} SPEC.md ausente — rode ${c ? cyan : ''}/oxe-spec${c ? reset : ''} antes de planejar`);
1991
- } else if (planMissing) {
1992
- console.log(` ${c ? yellow : ''}⚠ Bloqueio:${c ? reset : ''} PLAN.md ausente — rode ${c ? cyan : ''}/oxe-plan${c ? reset : ''}`);
1993
- } else if (verifyMissing && !planMissing) {
1994
- console.log(` ${c ? dim : ''}Obs.:${c ? reset : ''} VERIFY.md ainda não gerado — rode ${c ? cyan : ''}/oxe-verify${c ? reset : ''} após executar`);
1995
- }
1990
+ const packageMode = report.workspaceMode === 'product_package';
1991
+ const specMissing = !fs.existsSync(path.join(target, '.oxe', 'SPEC.md'));
1992
+ const planMissing = !fs.existsSync(path.join(target, '.oxe', 'PLAN.md'));
1993
+ const verifyMissing = !fs.existsSync(path.join(target, '.oxe', 'VERIFY.md'));
1994
+ if (packageMode) {
1995
+ const releaseReadiness = report.releaseReadiness || { ok: false, blockers: [], warnings: [] };
1996
+ if (!releaseReadiness.ok && Array.isArray(releaseReadiness.blockers) && releaseReadiness.blockers.length) {
1997
+ console.log(` ${c ? yellow : ''}⚠ Release blockers:${c ? reset : ''} ${releaseReadiness.blockers[0]}`);
1998
+ } else if (Array.isArray(releaseReadiness.warnings) && releaseReadiness.warnings.length) {
1999
+ console.log(` ${c ? dim : ''}Obs.:${c ? reset : ''} release warnings ativas — ${releaseReadiness.warnings[0]}`);
2000
+ }
2001
+ } else if (specMissing) {
2002
+ console.log(` ${c ? yellow : ''}⚠ Bloqueio:${c ? reset : ''} SPEC.md ausente — rode ${c ? cyan : ''}/oxe-spec${c ? reset : ''} antes de planejar`);
2003
+ } else if (planMissing) {
2004
+ console.log(` ${c ? yellow : ''}⚠ Bloqueio:${c ? reset : ''} PLAN.md ausente — rode ${c ? cyan : ''}/oxe-plan${c ? reset : ''}`);
2005
+ } else if (verifyMissing && !planMissing) {
2006
+ console.log(` ${c ? dim : ''}Obs.:${c ? reset : ''} VERIFY.md ainda não gerado — rode ${c ? cyan : ''}/oxe-verify${c ? reset : ''} após executar`);
2007
+ }
1996
2008
 
1997
2009
  if (opts.hints) {
1998
2010
  console.log(`\n ${c ? cyan : ''}Lembretes (rotina OXE)${reset}`);
@@ -2195,6 +2207,9 @@ function runDoctor(target, options = {}) {
2195
2207
  const claudeReady = fs.existsSync(claudeLocalDir) || fs.existsSync(claudeGlobalDir);
2196
2208
  ideChecks.push({ label: 'Claude Code', ready: claudeReady, hint: 'commands/oxe/ ou ~/.claude/commands/' });
2197
2209
 
2210
+ const codexReport = oxeHealth.codexIntegrationReport(target);
2211
+ ideChecks.push({ label: 'Codex', ready: codexReport.commandsReady, hint: '~/.codex/prompts/oxe.md' });
2212
+
2198
2213
  for (const ide of ideChecks) {
2199
2214
  if (ide.ready) {
2200
2215
  console.log(`${c ? green : ''}OK${c ? reset : ''} ${ide.label} pronto (${ide.hint})`);
@@ -2733,6 +2748,10 @@ function runInstall(opts) {
2733
2748
  if (fs.existsSync(personasSrc)) {
2734
2749
  copyDir(personasSrc, path.join(nested, 'personas'), copyOpts, false);
2735
2750
  }
2751
+ const agentsSrc = path.join(PKG_ROOT, 'oxe', 'agents');
2752
+ if (fs.existsSync(agentsSrc)) {
2753
+ copyDir(agentsSrc, path.join(nested, 'agents'), copyOpts, false);
2754
+ }
2736
2755
  // Schemas: copiar para .oxe/schemas/ (ex.: plan-agents.schema.json para validação local)
2737
2756
  const schemasSrc = path.join(PKG_ROOT, 'oxe', 'schemas');
2738
2757
  if (fs.existsSync(schemasSrc)) {
@@ -2751,6 +2770,7 @@ function runInstall(opts) {
2751
2770
  const doAgentClis = opts.copilotCli || opts.allAgents;
2752
2771
  if (doAgentClis) {
2753
2772
  const cCmd = path.join(PKG_ROOT, '.cursor', 'commands');
2773
+ const canonicalAgents = path.join(PKG_ROOT, 'oxe', 'agents');
2754
2774
  const clBase = installClaudeBase(opts);
2755
2775
  const cpHome = installCopilotCliHome(opts);
2756
2776
  const clDest = path.join(clBase, 'commands');
@@ -2763,12 +2783,20 @@ function runInstall(opts) {
2763
2783
  installOxeCopilotCliSkills(cCmd, cpHome, copyOpts, idePathRewrite);
2764
2784
  copyDir(cCmd, clDest, copyOpts, idePathRewrite);
2765
2785
  copyDir(cCmd, cpCmdDest, copyOpts, idePathRewrite);
2786
+ if (fs.existsSync(canonicalAgents)) {
2787
+ oxeAgentInstall.installCanonicalAgentMarkdowns(
2788
+ canonicalAgents,
2789
+ agentPaths.claudeAgentsDir,
2790
+ copyOpts
2791
+ );
2792
+ }
2766
2793
  } else {
2767
2794
  console.warn(`${yellow}aviso:${reset} pasta ausente ${cCmd} — ignorando comandos CLI`);
2768
2795
  }
2769
2796
  }
2770
2797
 
2771
2798
  const cCmdAgents = path.join(PKG_ROOT, '.cursor', 'commands');
2799
+ const canonicalAgents = path.join(PKG_ROOT, 'oxe', 'agents');
2772
2800
  if (fs.existsSync(cCmdAgents) && (opts.allAgents || anyGranularAgent(opts))) {
2773
2801
  const logO = (d) => console.log(`${dim}omitido${reset} ${d} (já existe — use --force)`);
2774
2802
  const logW = (msg) => console.log(`${dim}agents${reset} ${msg}`);
@@ -2796,6 +2824,13 @@ function runInstall(opts) {
2796
2824
  logO,
2797
2825
  logW
2798
2826
  );
2827
+ oxeAgentInstall.installCanonicalAgentSkills(
2828
+ canonicalAgents,
2829
+ agentPaths.antigravitySkillsRoot,
2830
+ copyOpts,
2831
+ logO,
2832
+ logW
2833
+ );
2799
2834
  }
2800
2835
  if (opts.agentCodex || opts.allAgents) {
2801
2836
  oxeAgentInstall.installSkillTreeFromCursorCommands(
@@ -2806,6 +2841,13 @@ function runInstall(opts) {
2806
2841
  logO,
2807
2842
  logW
2808
2843
  );
2844
+ oxeAgentInstall.installCanonicalAgentSkills(
2845
+ canonicalAgents,
2846
+ agentPaths.codexAgentsSkillsRoot,
2847
+ copyOpts,
2848
+ logO,
2849
+ logW
2850
+ );
2809
2851
  }
2810
2852
  }
2811
2853
 
@@ -2900,6 +2942,7 @@ function runInstall(opts) {
2900
2942
  trackFile(runtimeSemanticsManifestPath(opts));
2901
2943
  if (opts.copilotCli || opts.allAgents) {
2902
2944
  addTracked(path.join(installClaudeBase(opts), 'commands'), (n) => oxeAgentInstall.isOxeCommandMarkdownName(n));
2945
+ addTracked(agentPaths.claudeAgentsDir, (n) => oxeAgentInstall.isOxeAgentMarkdownName(n));
2903
2946
  addTracked(path.join(cpCliHome, 'commands'), (n) => oxeAgentInstall.isOxeCommandMarkdownName(n));
2904
2947
  const skRoot = path.join(cpCliHome, 'skills');
2905
2948
  if (fs.existsSync(skRoot)) {
@@ -3048,6 +3091,16 @@ function uninstallLocalIdeFromProject(u, removedPaths) {
3048
3091
  }
3049
3092
  }
3050
3093
  }
3094
+ const claudeAgentsDir = path.join(proj, '.claude', 'agents');
3095
+ if (fs.existsSync(claudeAgentsDir)) {
3096
+ for (const name of fs.readdirSync(claudeAgentsDir)) {
3097
+ if (oxeAgentInstall.isOxeAgentMarkdownName(name)) {
3098
+ const p = path.join(claudeAgentsDir, name);
3099
+ unlinkQuiet(p, u);
3100
+ track(p);
3101
+ }
3102
+ }
3103
+ }
3051
3104
  const skillsRoot = path.join(proj, '.copilot', 'skills');
3052
3105
  if (fs.existsSync(skillsRoot)) {
3053
3106
  for (const ent of fs.readdirSync(skillsRoot, { withFileTypes: true })) {
@@ -3383,6 +3436,16 @@ function runUninstall(u) {
3383
3436
  }
3384
3437
  }
3385
3438
  }
3439
+ const claudeAgentsDir = path.join(claudeUserDir(ideOpts), 'agents');
3440
+ if (fs.existsSync(claudeAgentsDir)) {
3441
+ for (const name of fs.readdirSync(claudeAgentsDir)) {
3442
+ if (oxeAgentInstall.isOxeAgentMarkdownName(name)) {
3443
+ const p = path.join(claudeAgentsDir, name);
3444
+ unlinkQuiet(p, u);
3445
+ removedPaths.push(p);
3446
+ }
3447
+ }
3448
+ }
3386
3449
  const skillsRoot = path.join(copilotUserDir(ideOpts), 'skills');
3387
3450
  if (fs.existsSync(skillsRoot)) {
3388
3451
  for (const ent of fs.readdirSync(skillsRoot, { withFileTypes: true })) {
@@ -4533,6 +4596,35 @@ async function runRuntime(opts) {
4533
4596
  }
4534
4597
  }
4535
4598
 
4599
+ if (opts.action === 'execute') {
4600
+ try {
4601
+ const result = await oxeOperational.runRuntimeExecute(opts.dir, activeSession, {
4602
+ runId: opts.runId || undefined,
4603
+ heartbeatTimeoutMs: opts.heartbeatTimeoutMs || undefined,
4604
+ });
4605
+ if (opts.jsonOutput) {
4606
+ console.log(JSON.stringify(result, null, 2));
4607
+ if (result.result && result.result.failed && result.result.failed.length > 0) process.exitCode = 1;
4608
+ return;
4609
+ }
4610
+ const r = result.result || {};
4611
+ const completed = Array.isArray(r.completed) ? r.completed : [];
4612
+ const failed = Array.isArray(r.failed) ? r.failed : [];
4613
+ const blocked = Array.isArray(r.blocked) ? r.blocked : [];
4614
+ console.log(` ${c ? green : ''}✓${c ? reset : ''} Runtime execute concluído (modo: ${result.mode})`);
4615
+ console.log(` ${c ? green : ''}Completados:${c ? reset : ''} ${completed.length}`);
4616
+ if (failed.length > 0)
4617
+ console.log(` ${c ? red : ''}Falhos:${c ? reset : ''} ${failed.length} — ${failed.join(', ')}`);
4618
+ if (blocked.length > 0)
4619
+ console.log(` ${c ? '\x1b[33m' : ''}Bloqueados:${c ? reset : ''} ${blocked.length} — ${blocked.join(', ')}`);
4620
+ if (failed.length > 0) process.exitCode = 1;
4621
+ return;
4622
+ } catch (err) {
4623
+ console.error(`${red}${err && err.message ? err.message : 'Falha ao executar runtime.'}${reset}`);
4624
+ process.exit(1);
4625
+ }
4626
+ }
4627
+
4536
4628
  if (opts.action === 'ci') {
4537
4629
  try {
4538
4630
  const report = await oxeOperational.runRuntimeCiChecks(opts.dir, activeSession, {
@@ -1,6 +1,11 @@
1
1
  ---
2
2
  name: oxe:debug
3
- description: "[DEPRECATED v1.1.0] Incorporado por /oxe-execute. Use: /oxe-execute --debug"
3
+ description: >
4
+ Diagnóstica falhas com metodologia RCA: hipóteses explícitas → evidência → reprodução controlada
5
+ → causa raiz → hotfix mínimo. Não corrige sintomas — rasteia até a causa raiz antes de propor
6
+ qualquer mudança. Documenta o diagnóstico completo em DEBUG.md (sintoma, hipóteses testadas,
7
+ root cause, hotfix aplicado, evidência de resolução). Após o hotfix, orienta execução de
8
+ /oxe-verify para confirmar que os critérios A* afetados ainda passam.
4
9
  argument-hint: "[Tn ou erro/stack]"
5
10
  allowed-tools:
6
11
  - Read
@@ -1,7 +1,12 @@
1
1
  ---
2
2
  name: oxe:discuss
3
- description: Perguntas objetivas antes do plano — .oxe/DISCUSS.md
4
- argument-hint: "[contexto ou respostas]"
3
+ description: >
4
+ Conduz sessão estruturada de resolução de decisões técnicas antes do planejamento. Identifica
5
+ trade-offs relevantes, apresenta alternativas com critérios objetivos, registra a decisão
6
+ escolhida com motivo e impacto em DISCUSS.md como D-NN. Cada D-NN fechado aqui é vinculado a
7
+ tarefas Tn no PLAN.md e verificado pelo Verificador após execução. Usar quando: `discuss_before_plan`
8
+ está ativo no config, há decisão arquitetural aberta, ou o Arquiteto sinalizou bloqueio.
9
+ argument-hint: "[decisão a tomar | contexto do trade-off | D-NN a reabrir]"
5
10
  allowed-tools:
6
11
  - Read
7
12
  - Bash
@@ -1,7 +1,12 @@
1
1
  ---
2
2
  name: oxe:execute
3
- description: "Executar plano A/B/C. Flags: --note (obs), --debug, --deep-diagnosis, --checkpoint '<nome>', --iterative"
4
- argument-hint: "[A|B|C | --note 'texto' | --debug | --deep-diagnosis | --checkpoint '<nome>' | --iterative]"
3
+ description: >
4
+ Executa as tarefas do PLAN.md onda por onda, com write set mínimo e verificação obrigatória
5
+ antes de avançar. Compila o grafo de execução via LlmTaskExecutor, respeita dependências entre
6
+ tarefas, particiona tools idempotentes (paralelas) e mutáveis (seriais), e registra evidência
7
+ auditável por Tn. Modo --debug ativa diagnóstico de falha inline. --checkpoint '<nome>' cria
8
+ ponto de restauração antes de ondas de alto risco.
9
+ argument-hint: "[onda|Tn | --debug | --deep-diagnosis | --checkpoint '<nome>' | --note 'texto' | --iterative]"
5
10
  allowed-tools:
6
11
  - Read
7
12
  - Bash
@@ -1,7 +1,12 @@
1
1
  ---
2
2
  name: oxe:plan-agent
3
- description: Gera PLAN.md e plan-agents.json (blueprint de agentes e ondas)
4
- argument-hint: "[--replan se existe PLAN.md]"
3
+ description: >
4
+ Gera PLAN.md e plan-agents.json blueprint de execução multi-agente com ondas paralelas.
5
+ Cada agente recebe persona (executor, db-specialist, ui-specialist, etc.), escopo de tarefas,
6
+ dependências entre agentes e lifecycle state rastreável. Ideal para planos com 3+ domínios
7
+ distintos (backend, frontend, banco) onde paralelismo real de agentes é possível. --replan
8
+ regenera o runId, preserva tarefas concluídas e alinha STATE.md.
9
+ argument-hint: "[--replan | <contexto adicional de domínios>]"
5
10
  allowed-tools:
6
11
  - Read
7
12
  - Write
@@ -1,7 +1,12 @@
1
1
  ---
2
2
  name: oxe:plan
3
- description: Gera PLAN.md a partir da SPEC com tarefas atômicas e verificação por item
4
- argument-hint: "[--replan se existe PLAN.md]"
3
+ description: >
4
+ Decompõe os critérios A* da SPEC em tarefas GraphNode com mutation_scope explícito, action_type
5
+ correto e verify command determinístico. Projeta ondas que maximizam paralelismo respeitando
6
+ dependências e mutation_scope disjunto. Aplica rubrica de confiança em 6 dimensões e quality gate
7
+ de 19 itens. Gera IMPLEMENTATION-PACK, REFERENCE-ANCHORS e FIXTURE-PACK junto com o PLAN.md.
8
+ --replan preserva histórico e atualiza tarefas sem apagar o trabalho anterior.
9
+ argument-hint: "[--replan | --agents (gera blueprint de agentes junto)]"
5
10
  allowed-tools:
6
11
  - Read
7
12
  - Write
@@ -1,6 +1,11 @@
1
1
  ---
2
2
  name: oxe:scan
3
- description: "[DEPRECATED v1.1.0] Incorporado por /oxe-spec. Use: /oxe-spec --refresh (incremental) ou /oxe-spec --full (completo)"
3
+ description: >
4
+ Analisa o codebase e produz os sete documentos em .oxe/codebase/ (OVERVIEW, STACK, STRUCTURE,
5
+ TESTING, INTEGRATIONS, CONVENTIONS, CONCERNS). Detecta padrão arquitetural dominante, domínios
6
+ funcionais e sugere profile scale-adaptive. Modo bootstrap (do zero) ou refresh (incremental).
7
+ Cada documento passa por gate de qualidade com critérios e anti-padrões por tipo. O mapa
8
+ resultante alimenta spec, plan e o contexto do LlmTaskExecutor.
4
9
  argument-hint: "[área opcional, ex. auth, api]"
5
10
  allowed-tools:
6
11
  - Read
@@ -1,6 +1,11 @@
1
1
  ---
2
2
  name: oxe:spec
3
- description: "Spec em 5 fases. Flags: --refresh (scan incremental), --full (scan completo), --research (spike), --ui (gera UI-SPEC)"
3
+ description: >
4
+ Conduz as 5 fases do processo de especificação: perguntas (blocos coesos por domínio), pesquisa
5
+ (investigação de incertezas técnicas), requisitos (tabela R-ID com v1/v2/fora e critérios A*
6
+ verificáveis), elevação de robustez (checklist de segurança por domínio AUTH/API/DB/FRONTEND/FILE),
7
+ e aprovação com roteiro ROADMAP.md. Flags: --refresh (atualiza codebase/ antes), --full (scan
8
+ completo), --research (Fase 2 explícita), --ui (gera UI-SPEC.md ao final).
4
9
  argument-hint: "[descrição da feature | --refresh | --full | --research | --ui]"
5
10
  allowed-tools:
6
11
  - Read
@@ -1,6 +1,11 @@
1
1
  ---
2
2
  name: oxe:verify
3
- description: "Valida e fecha o ciclo (retro automática). Flags: --gaps, --security, --ui, --pr, --diff, --skip-retro"
3
+ description: >
4
+ Audita a implementação em quatro camadas: pré-execução (ambiente e commits), por tarefa Tn
5
+ (verify command de cada task), por critério A* (cobertura completa da SPEC), e fidelidade de
6
+ decisões D-NN. Produz VERIFY.md com evidência observável por critério, classifica findings por
7
+ severidade, gera checklist UAT para validação humana, e fecha o ciclo com retro automática.
8
+ --security adiciona auditoria de segurança baseline. --gaps foca em A* sem cobertura.
4
9
  argument-hint: "[Tn | --gaps | --security | --ui | --pr | --diff branchA...branchB | --skip-retro]"
5
10
  allowed-tools:
6
11
  - Read
@@ -0,0 +1,49 @@
1
+ # Content Migration Audit
2
+
3
+ Este documento registra a triagem interna de conteúdo usado como insumo para fortalecer o OXE. Ele não é instalado em projetos de usuário e não deve ser referenciado por templates, workflows, comandos, README ou agentes finais.
4
+
5
+ ## Rules
6
+
7
+ - Public artifacts must use OXE naming, paths, commands and runtime contracts only.
8
+ - No public template/workflow/command/agent may reference legacy product names, paths, tool commands or command namespaces.
9
+ - Source material is reauthored, not copied literally.
10
+
11
+ ## Templates
12
+
13
+ | Source theme | Decision | OXE target |
14
+ |--------------|----------|------------|
15
+ | Detailed phase plan contract | merge | `PLAN.template.md`, `IMPLEMENTATION-PACK.*`, `/oxe-plan` |
16
+ | Context and discovery templates | merge | context packs, `RESEARCH.template.md`, `INVESTIGATION.template.md`, `REFERENCE-ANCHORS.template.md` |
17
+ | Requirements, project, roadmap, state | merge | `SPEC.template.md`, `ROADMAP.template.md`, `STATE.md` |
18
+ | Validation, verification and UAT | merge | `/oxe-verify`, runtime evidence, `VERIFY.md` projection |
19
+ | UI contract | merge | `/oxe-spec --ui`, `/oxe-ui-spec`, `/oxe-ui-review` |
20
+ | Debug templates | merge | `/oxe-debug`, `/oxe-forensics`, `oxe-debugger` |
21
+ | Session summaries and setup | merge | `SUMMARY.template.md`, `RESUME.template.md`, checkpoints |
22
+ | Runtime-specific instruction files | inspiration_only | OXE multi-runtime generators |
23
+ | Developer profile/preferences | reject | future consented profile feature only |
24
+
25
+ ## Workflows
26
+
27
+ | Source theme | Decision | OXE target |
28
+ |--------------|----------|------------|
29
+ | New project and milestone discovery | merge | `/oxe-spec`, `/oxe-plan` |
30
+ | Phase planning and review loop | merge | `/oxe-plan`, rationality gate |
31
+ | Plan execution by wave/task | merge | `/oxe-execute` |
32
+ | Verification, validation gaps and UAT | merge | `/oxe-verify` |
33
+ | Codebase mapping and research | merge | `/oxe-scan`, `/oxe-spec --research` |
34
+ | Debug and incident diagnosis | merge | `/oxe-debug`, `/oxe-forensics` |
35
+ | UI design and review | merge | `/oxe-spec --ui`, `/oxe-ui-review` |
36
+ | Progress, next, pause and resume | merge | `/oxe`, `/oxe-next`, `/oxe-session` |
37
+ | Workstreams and isolated workspace concepts | merge | `/oxe-workstream`, runtime agents |
38
+ | Autonomous workflow | reject | OXE keeps governed execution |
39
+ | PR branch/ship workflow | inspiration_only | OXE keeps local commit and separate `runtime promote` |
40
+ | Community/settings/update flows | reject | OXE already has administrative UX |
41
+
42
+ ## Commands
43
+
44
+ Legacy command wrappers are not copied. They are used only as intent inventory and mapped into canonical OXE workflows before generated surfaces are regenerated.
45
+
46
+ ## Agents
47
+
48
+ Specialized agents were reauthored as OXE-native contracts in `oxe/agents/`. They use `.oxe/`, OXE workflows, runtime enterprise, evidence store, personas and `plan-agents.json` only.
49
+