oxe-cc 1.2.1 → 1.4.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 (281) hide show
  1. package/.cursor/commands/oxe-ask.md +2 -2
  2. package/.cursor/commands/oxe-capabilities.md +2 -2
  3. package/.cursor/commands/oxe-checkpoint.md +2 -2
  4. package/.cursor/commands/oxe-compact.md +2 -2
  5. package/.cursor/commands/oxe-dashboard.md +2 -2
  6. package/.cursor/commands/oxe-debug.md +2 -2
  7. package/.cursor/commands/oxe-discuss.md +2 -2
  8. package/.cursor/commands/oxe-execute.md +5 -2
  9. package/.cursor/commands/oxe-forensics.md +2 -2
  10. package/.cursor/commands/oxe-help.md +2 -2
  11. package/.cursor/commands/oxe-loop.md +2 -2
  12. package/.cursor/commands/oxe-milestone.md +2 -2
  13. package/.cursor/commands/oxe-next.md +2 -2
  14. package/.cursor/commands/oxe-obs.md +2 -2
  15. package/.cursor/commands/oxe-plan-agent.md +2 -2
  16. package/.cursor/commands/oxe-plan.md +2 -2
  17. package/.cursor/commands/oxe-project.md +2 -2
  18. package/.cursor/commands/oxe-quick.md +2 -2
  19. package/.cursor/commands/oxe-research.md +2 -2
  20. package/.cursor/commands/oxe-retro.md +2 -2
  21. package/.cursor/commands/oxe-review-pr.md +2 -2
  22. package/.cursor/commands/oxe-route.md +2 -2
  23. package/.cursor/commands/oxe-scan.md +2 -2
  24. package/.cursor/commands/oxe-security.md +2 -2
  25. package/.cursor/commands/oxe-session.md +2 -2
  26. package/.cursor/commands/oxe-ship.md +2 -2
  27. package/.cursor/commands/oxe-skill.md +2 -2
  28. package/.cursor/commands/oxe-spec.md +2 -2
  29. package/.cursor/commands/oxe-ui-review.md +2 -2
  30. package/.cursor/commands/oxe-ui-spec.md +2 -2
  31. package/.cursor/commands/oxe-update.md +2 -2
  32. package/.cursor/commands/oxe-validate-gaps.md +2 -2
  33. package/.cursor/commands/oxe-verify.md +5 -2
  34. package/.cursor/commands/oxe-workstream.md +2 -2
  35. package/.cursor/commands/oxe.md +2 -2
  36. package/.github/copilot-instructions.md +13 -13
  37. package/.github/prompts/oxe-ask.prompt.md +2 -2
  38. package/.github/prompts/oxe-capabilities.prompt.md +2 -2
  39. package/.github/prompts/oxe-checkpoint.prompt.md +2 -2
  40. package/.github/prompts/oxe-compact.prompt.md +2 -2
  41. package/.github/prompts/oxe-dashboard.prompt.md +2 -2
  42. package/.github/prompts/oxe-debug.prompt.md +2 -2
  43. package/.github/prompts/oxe-discuss.prompt.md +2 -2
  44. package/.github/prompts/oxe-execute.prompt.md +5 -2
  45. package/.github/prompts/oxe-forensics.prompt.md +2 -2
  46. package/.github/prompts/oxe-help.prompt.md +2 -2
  47. package/.github/prompts/oxe-loop.prompt.md +2 -2
  48. package/.github/prompts/oxe-milestone.prompt.md +2 -2
  49. package/.github/prompts/oxe-next.prompt.md +2 -2
  50. package/.github/prompts/oxe-obs.prompt.md +2 -2
  51. package/.github/prompts/oxe-plan-agent.prompt.md +2 -2
  52. package/.github/prompts/oxe-plan.prompt.md +2 -2
  53. package/.github/prompts/oxe-project.prompt.md +2 -2
  54. package/.github/prompts/oxe-quick.prompt.md +2 -2
  55. package/.github/prompts/oxe-research.prompt.md +2 -2
  56. package/.github/prompts/oxe-retro.prompt.md +2 -2
  57. package/.github/prompts/oxe-review-pr.prompt.md +2 -2
  58. package/.github/prompts/oxe-route.prompt.md +2 -2
  59. package/.github/prompts/oxe-scan.prompt.md +2 -2
  60. package/.github/prompts/oxe-security.prompt.md +2 -2
  61. package/.github/prompts/oxe-session.prompt.md +2 -2
  62. package/.github/prompts/oxe-ship.prompt.md +2 -2
  63. package/.github/prompts/oxe-skill.prompt.md +2 -2
  64. package/.github/prompts/oxe-spec.prompt.md +2 -2
  65. package/.github/prompts/oxe-ui-review.prompt.md +2 -2
  66. package/.github/prompts/oxe-ui-spec.prompt.md +2 -2
  67. package/.github/prompts/oxe-update.prompt.md +2 -2
  68. package/.github/prompts/oxe-validate-gaps.prompt.md +2 -2
  69. package/.github/prompts/oxe-verify.prompt.md +5 -2
  70. package/.github/prompts/oxe-workstream.prompt.md +2 -2
  71. package/.github/prompts/oxe.prompt.md +2 -2
  72. package/AGENTS.md +5 -3
  73. package/CHANGELOG.md +72 -10
  74. package/LICENSE +21 -674
  75. package/README.md +631 -535
  76. package/bin/banner.txt +6 -6
  77. package/bin/lib/oxe-agent-install.cjs +69 -69
  78. package/bin/lib/oxe-azure.cjs +1445 -1445
  79. package/bin/lib/oxe-context-engine.cjs +867 -867
  80. package/bin/lib/oxe-dashboard.cjs +76 -28
  81. package/bin/lib/oxe-operational.cjs +2144 -1340
  82. package/bin/lib/oxe-project-health.cjs +483 -1
  83. package/bin/lib/oxe-runtime-semantics.cjs +12 -0
  84. package/bin/oxe-cc.js +554 -152
  85. package/commands/oxe/ask.md +2 -2
  86. package/commands/oxe/capabilities.md +2 -2
  87. package/commands/oxe/checkpoint.md +2 -2
  88. package/commands/oxe/compact.md +2 -2
  89. package/commands/oxe/dashboard.md +2 -2
  90. package/commands/oxe/debug.md +2 -2
  91. package/commands/oxe/discuss.md +2 -2
  92. package/commands/oxe/execute.md +5 -2
  93. package/commands/oxe/forensics.md +2 -2
  94. package/commands/oxe/help.md +2 -2
  95. package/commands/oxe/loop.md +2 -2
  96. package/commands/oxe/milestone.md +2 -2
  97. package/commands/oxe/next.md +2 -2
  98. package/commands/oxe/obs.md +2 -2
  99. package/commands/oxe/oxe.md +2 -2
  100. package/commands/oxe/plan-agent.md +2 -2
  101. package/commands/oxe/plan.md +2 -2
  102. package/commands/oxe/project.md +2 -2
  103. package/commands/oxe/quick.md +2 -2
  104. package/commands/oxe/research.md +2 -2
  105. package/commands/oxe/retro.md +2 -2
  106. package/commands/oxe/review-pr.md +2 -2
  107. package/commands/oxe/route.md +2 -2
  108. package/commands/oxe/scan.md +2 -2
  109. package/commands/oxe/security.md +2 -2
  110. package/commands/oxe/session.md +2 -2
  111. package/commands/oxe/ship.md +2 -2
  112. package/commands/oxe/skill.md +2 -2
  113. package/commands/oxe/spec.md +2 -2
  114. package/commands/oxe/ui-review.md +2 -2
  115. package/commands/oxe/ui-spec.md +2 -2
  116. package/commands/oxe/update.md +2 -2
  117. package/commands/oxe/validate-gaps.md +2 -2
  118. package/commands/oxe/verify.md +5 -2
  119. package/commands/oxe/workstream.md +2 -2
  120. package/lib/runtime/delivery/branch-manager.d.ts +1 -0
  121. package/lib/runtime/delivery/branch-manager.js +7 -0
  122. package/lib/runtime/delivery/ci-checks.js +34 -1
  123. package/lib/runtime/delivery/delivery-records.d.ts +34 -0
  124. package/lib/runtime/delivery/delivery-records.js +48 -0
  125. package/lib/runtime/delivery/index.d.ts +1 -0
  126. package/lib/runtime/delivery/index.js +1 -0
  127. package/lib/runtime/delivery/promotion-pipeline.d.ts +26 -2
  128. package/lib/runtime/delivery/promotion-pipeline.js +111 -14
  129. package/lib/runtime/gate/gate-manager.d.ts +41 -0
  130. package/lib/runtime/gate/gate-manager.js +108 -1
  131. package/lib/runtime/index.d.ts +2 -2
  132. package/lib/runtime/index.js +3 -1
  133. package/lib/runtime/models/gate-decision.d.ts +4 -1
  134. package/lib/runtime/models/workspace.d.ts +3 -0
  135. package/lib/runtime/plugins/capability-adapter.d.ts +12 -0
  136. package/lib/runtime/plugins/capability-adapter.js +204 -0
  137. package/lib/runtime/plugins/capability-matrix.d.ts +5 -0
  138. package/lib/runtime/plugins/capability-matrix.js +48 -17
  139. package/lib/runtime/plugins/index.d.ts +1 -0
  140. package/lib/runtime/plugins/index.js +1 -0
  141. package/lib/runtime/plugins/plugin-abi.d.ts +2 -0
  142. package/lib/runtime/plugins/plugin-manifest.d.ts +1 -1
  143. package/lib/runtime/plugins/plugin-manifest.js +6 -2
  144. package/lib/runtime/plugins/plugin-registry.d.ts +46 -0
  145. package/lib/runtime/plugins/plugin-registry.js +79 -2
  146. package/lib/runtime/policy/policy-engine.d.ts +19 -0
  147. package/lib/runtime/policy/policy-engine.js +76 -4
  148. package/lib/runtime/projection/projection-engine.d.ts +9 -1
  149. package/lib/runtime/projection/projection-engine.js +73 -3
  150. package/lib/runtime/scheduler/multi-agent-coordinator.d.ts +43 -1
  151. package/lib/runtime/scheduler/multi-agent-coordinator.js +151 -39
  152. package/lib/runtime/scheduler/run-journal.d.ts +1 -1
  153. package/lib/runtime/scheduler/scheduler.d.ts +19 -1
  154. package/lib/runtime/scheduler/scheduler.js +258 -13
  155. package/lib/runtime/verification/verification-compiler.d.ts +43 -0
  156. package/lib/runtime/verification/verification-compiler.js +137 -0
  157. package/lib/runtime/verification/verification-manifest.d.ts +9 -0
  158. package/lib/runtime/verification/verification-manifest.js +56 -6
  159. package/lib/runtime/workspace/strategies/ephemeral-container.d.ts +1 -0
  160. package/lib/runtime/workspace/strategies/ephemeral-container.js +4 -0
  161. package/lib/runtime/workspace/strategies/git-worktree.d.ts +1 -0
  162. package/lib/runtime/workspace/strategies/git-worktree.js +2 -0
  163. package/lib/runtime/workspace/strategies/inplace.d.ts +1 -0
  164. package/lib/runtime/workspace/strategies/inplace.js +2 -0
  165. package/lib/runtime/workspace/workspace-manager.d.ts +2 -1
  166. package/lib/sdk/README.md +20 -8
  167. package/lib/sdk/index.cjs +33 -24
  168. package/lib/sdk/index.d.ts +149 -14
  169. package/oxe/templates/ACTIVE-RUN.template.json +32 -32
  170. package/oxe/templates/CAPABILITIES.template.md +7 -7
  171. package/oxe/templates/CAPABILITY.template.md +45 -45
  172. package/oxe/templates/CHECKPOINTS.template.md +7 -7
  173. package/oxe/templates/EXECUTION-RUNTIME.template.md +68 -68
  174. package/oxe/templates/HYPOTHESES.template.md +33 -33
  175. package/oxe/templates/LESSONS-METRICS.template.json +13 -13
  176. package/oxe/templates/NOTES.template.md +16 -16
  177. package/oxe/templates/PLAN-REVIEW.template.md +31 -31
  178. package/oxe/templates/SESSION.template.md +34 -34
  179. package/oxe/templates/SKILL.template.md +26 -26
  180. package/oxe/templates/STATE.md +55 -55
  181. package/oxe/templates/WORKFLOW_AUTHORING.md +18 -18
  182. package/oxe/workflows/ask.md +96 -96
  183. package/oxe/workflows/capabilities.md +25 -25
  184. package/oxe/workflows/dashboard.md +33 -33
  185. package/oxe/workflows/discuss.md +12 -12
  186. package/oxe/workflows/execute.md +14 -0
  187. package/oxe/workflows/help.md +352 -352
  188. package/oxe/workflows/next.md +22 -22
  189. package/oxe/workflows/oxe.md +6 -6
  190. package/oxe/workflows/plan-agent.md +9 -9
  191. package/oxe/workflows/plan.md +51 -20
  192. package/oxe/workflows/quick.md +10 -10
  193. package/oxe/workflows/references/reasoning-discovery.md +28 -28
  194. package/oxe/workflows/references/reasoning-execution.md +29 -29
  195. package/oxe/workflows/references/reasoning-planning.md +32 -32
  196. package/oxe/workflows/references/reasoning-review.md +29 -29
  197. package/oxe/workflows/references/reasoning-status.md +24 -24
  198. package/oxe/workflows/references/robustness-elevation.md +295 -295
  199. package/oxe/workflows/references/workflow-runtime-contracts.json +952 -930
  200. package/oxe/workflows/route.md +16 -16
  201. package/oxe/workflows/session.md +213 -213
  202. package/oxe/workflows/ship.md +142 -142
  203. package/oxe/workflows/skill.md +44 -44
  204. package/oxe/workflows/ui-review.md +36 -36
  205. package/oxe/workflows/verify-audit.md +73 -73
  206. package/oxe/workflows/verify.md +10 -0
  207. package/package.json +92 -92
  208. package/packages/runtime/package.json +16 -15
  209. package/packages/runtime/src/audit/audit-trail.ts +243 -243
  210. package/packages/runtime/src/audit/index.ts +2 -2
  211. package/packages/runtime/src/audit/policy-pack.ts +62 -62
  212. package/packages/runtime/src/compiler/graph-compiler.ts +245 -245
  213. package/packages/runtime/src/compiler/index.ts +1 -1
  214. package/packages/runtime/src/context/context-pack-builder.ts +259 -259
  215. package/packages/runtime/src/context/context-pack-store.ts +197 -197
  216. package/packages/runtime/src/context/context-profiles.ts +60 -60
  217. package/packages/runtime/src/context/index.ts +3 -3
  218. package/packages/runtime/src/decision/decision-engine.ts +174 -174
  219. package/packages/runtime/src/decision/decision-memo.ts +211 -211
  220. package/packages/runtime/src/decision/index.ts +2 -2
  221. package/packages/runtime/src/delivery/branch-manager.ts +91 -84
  222. package/packages/runtime/src/delivery/ci-checks.ts +285 -252
  223. package/packages/runtime/src/delivery/delivery-records.ts +75 -0
  224. package/packages/runtime/src/delivery/index.ts +5 -4
  225. package/packages/runtime/src/delivery/pr-manager.ts +112 -112
  226. package/packages/runtime/src/delivery/promotion-pipeline.ts +334 -180
  227. package/packages/runtime/src/events/bus.ts +92 -92
  228. package/packages/runtime/src/events/catalog.ts +29 -29
  229. package/packages/runtime/src/events/envelope.ts +14 -14
  230. package/packages/runtime/src/events/index.ts +3 -3
  231. package/packages/runtime/src/evidence/evidence-store.ts +130 -130
  232. package/packages/runtime/src/evidence/index.ts +1 -1
  233. package/packages/runtime/src/gate/gate-manager.ts +289 -137
  234. package/packages/runtime/src/gate/index.ts +1 -1
  235. package/packages/runtime/src/index.ts +41 -37
  236. package/packages/runtime/src/models/attempt.ts +19 -19
  237. package/packages/runtime/src/models/evidence.ts +21 -21
  238. package/packages/runtime/src/models/gate-decision.ts +25 -21
  239. package/packages/runtime/src/models/index.ts +8 -8
  240. package/packages/runtime/src/models/run.ts +24 -24
  241. package/packages/runtime/src/models/session.ts +11 -11
  242. package/packages/runtime/src/models/verification-result.ts +10 -10
  243. package/packages/runtime/src/models/work-item.ts +25 -25
  244. package/packages/runtime/src/models/workspace.ts +31 -28
  245. package/packages/runtime/src/plugins/capability-adapter.ts +206 -0
  246. package/packages/runtime/src/plugins/capability-matrix.ts +126 -83
  247. package/packages/runtime/src/plugins/index.ts +5 -4
  248. package/packages/runtime/src/plugins/plugin-abi.ts +97 -95
  249. package/packages/runtime/src/plugins/plugin-manifest.ts +118 -113
  250. package/packages/runtime/src/plugins/plugin-registry.ts +232 -124
  251. package/packages/runtime/src/policy/index.ts +1 -1
  252. package/packages/runtime/src/policy/policy-engine.ts +330 -244
  253. package/packages/runtime/src/projection/index.ts +1 -1
  254. package/packages/runtime/src/projection/projection-engine.ts +328 -249
  255. package/packages/runtime/src/reducers/debug-reducer.ts +36 -36
  256. package/packages/runtime/src/reducers/index.ts +2 -2
  257. package/packages/runtime/src/reducers/run-state-reducer.ts +269 -269
  258. package/packages/runtime/src/scheduler/agent-registry.ts +132 -132
  259. package/packages/runtime/src/scheduler/agent-roles.ts +109 -109
  260. package/packages/runtime/src/scheduler/index.ts +4 -4
  261. package/packages/runtime/src/scheduler/multi-agent-coordinator.ts +521 -333
  262. package/packages/runtime/src/scheduler/run-journal.ts +62 -62
  263. package/packages/runtime/src/scheduler/scheduler.ts +722 -441
  264. package/packages/runtime/src/verification/index.ts +2 -2
  265. package/packages/runtime/src/verification/verification-compiler.ts +436 -225
  266. package/packages/runtime/src/verification/verification-manifest.ts +252 -192
  267. package/packages/runtime/src/workspace/index.ts +5 -5
  268. package/packages/runtime/src/workspace/strategies/ephemeral-container.ts +126 -121
  269. package/packages/runtime/src/workspace/strategies/git-worktree.ts +79 -77
  270. package/packages/runtime/src/workspace/strategies/inplace.ts +38 -35
  271. package/packages/runtime/src/workspace/workspace-manager.ts +16 -15
  272. package/packages/runtime/tsconfig.json +17 -17
  273. package/vscode-extension/.vscodeignore +7 -7
  274. package/vscode-extension/LICENSE +21 -0
  275. package/vscode-extension/oxe-agents-1.0.0.vsix +0 -0
  276. package/vscode-extension/oxe-agents-1.4.0.vsix +0 -0
  277. package/vscode-extension/package.json +184 -184
  278. package/vscode-extension/src/extension.js +310 -310
  279. package/vscode-extension/src/shared/contextLoader.js +137 -137
  280. package/vscode-extension/src/shared/contractBuilder.js +159 -159
  281. package/vscode-extension/src/shared/stateReader.js +101 -101
package/bin/banner.txt CHANGED
@@ -7,12 +7,12 @@
7
7
 
8
8
  ══════════════════════════════════════════════════════
9
9
 
10
- 🌵 OXE CLI · Spec-driven workflow
11
- "Do jeito nordestino de fazer software"
12
-
13
- ⚙️ Context Engineering
14
- 🤖 Multi-IDE · Cursor · Copilot · +CLIs
10
+ 🌵 OXE CLI · Runtime Enterprise
11
+ "Spec-driven workflow com estado canónico"
12
+
13
+ ⚙️ Context Engineering · Evidence-first Verify
14
+ 🤖 Multi-IDE · Copilot · Cursor · +CLIs
15
15
 
16
16
  ══════════════════════════════════════════════════════
17
17
 
18
- v{version}
18
+ v{version}
@@ -8,10 +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');
14
- const runtimeSemantics = require('./oxe-runtime-semantics.cjs');
11
+ const fs = require('fs');
12
+ const path = require('path');
13
+ const os = require('os');
14
+ const runtimeSemantics = require('./oxe-runtime-semantics.cjs');
15
15
 
16
16
  const OXE_MANAGED_HTML = '<!-- oxe-cc managed -->';
17
17
  const OXE_MANAGED_TOML = '# oxe-cc managed';
@@ -76,55 +76,55 @@ function adjustWorkflowPathsForNestedLayout(content) {
76
76
 
77
77
  /**
78
78
  * @param {string} text
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
- }
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
+ }
104
104
 
105
105
  /**
106
106
  * @param {string} skillName
107
107
  * @param {string} description
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
- }
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
+ }
128
128
 
129
129
  /**
130
130
  * @returns {string[]}
@@ -190,9 +190,9 @@ function installSkillTreeFromCursorCommands(cCmdSrc, skillsRoot, opts, pathRewri
190
190
  const writeOne = (skillName, srcPath, descSuffix) => {
191
191
  let raw = fs.readFileSync(srcPath, 'utf8');
192
192
  if (pathRewriteNested) raw = adjustWorkflowPathsForNestedLayout(raw);
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);
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);
196
196
  const destDir = path.join(skillsRoot, skillName);
197
197
  const dest = path.join(destDir, 'SKILL.md');
198
198
  if (opts.dryRun) {
@@ -257,8 +257,8 @@ function installGeminiTomlCommands(cCmdSrc, paths, opts, pathRewriteNested, logO
257
257
  const writeToml = (relPath, srcPath, descSuffix) => {
258
258
  let raw = fs.readFileSync(srcPath, 'utf8');
259
259
  if (pathRewriteNested) raw = adjustWorkflowPathsForNestedLayout(raw);
260
- const { description, body } = parseCursorCommandFrontmatter(raw);
261
- const desc = descSuffix ? `${description} ${descSuffix}`.trim() : description;
260
+ const { description, body } = parseCursorCommandFrontmatter(raw);
261
+ const desc = descSuffix ? `${description} ${descSuffix}`.trim() : description;
262
262
  const toml = buildGeminiToml(desc, body);
263
263
  const dest = path.join(base, relPath);
264
264
  if (opts.dryRun) {
@@ -307,8 +307,8 @@ function installWindsurfGlobalWorkflows(cCmdSrc, paths, opts, pathRewriteNested,
307
307
  }
308
308
  let raw = fs.readFileSync(src, 'utf8');
309
309
  if (pathRewriteNested) raw = adjustWorkflowPathsForNestedLayout(raw);
310
- const { description, body } = parseCursorCommandFrontmatter(raw);
311
- const title = description || name.replace(/\.md$/i, '');
310
+ const { description, body } = parseCursorCommandFrontmatter(raw);
311
+ const title = description || name.replace(/\.md$/i, '');
312
312
  const out =
313
313
  `---\n` +
314
314
  `description: ${JSON.stringify(title)}\n` +
@@ -362,19 +362,19 @@ function installCodexPrompts(cCmdSrc, paths, opts, pathRewriteNested, logOmitido
362
362
  }
363
363
  let raw = fs.readFileSync(src, 'utf8');
364
364
  if (pathRewriteNested) raw = adjustWorkflowPathsForNestedLayout(raw);
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`;
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`;
378
378
  fs.mkdirSync(destDir, { recursive: true });
379
379
  fs.writeFileSync(dest, out, 'utf8');
380
380
  }