oh-my-codex 0.10.2 → 0.10.3

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 (260) hide show
  1. package/README.de.md +4 -4
  2. package/README.es.md +4 -4
  3. package/README.fr.md +4 -4
  4. package/README.it.md +4 -4
  5. package/README.ja.md +4 -4
  6. package/README.ko.md +4 -4
  7. package/README.md +13 -7
  8. package/README.pt.md +4 -4
  9. package/README.ru.md +4 -4
  10. package/README.tr.md +4 -4
  11. package/README.vi.md +4 -4
  12. package/README.zh-TW.md +4 -4
  13. package/README.zh.md +4 -4
  14. package/dist/agents/__tests__/native-config.test.js +37 -33
  15. package/dist/agents/__tests__/native-config.test.js.map +1 -1
  16. package/dist/agents/__tests__/skill-bridge.test.d.ts +2 -0
  17. package/dist/agents/__tests__/skill-bridge.test.d.ts.map +1 -0
  18. package/dist/agents/__tests__/skill-bridge.test.js +71 -0
  19. package/dist/agents/__tests__/skill-bridge.test.js.map +1 -0
  20. package/dist/agents/native-config.d.ts +18 -6
  21. package/dist/agents/native-config.d.ts.map +1 -1
  22. package/dist/agents/native-config.js +109 -92
  23. package/dist/agents/native-config.js.map +1 -1
  24. package/dist/agents/skill-bridge.d.ts +20 -0
  25. package/dist/agents/skill-bridge.d.ts.map +1 -0
  26. package/dist/agents/skill-bridge.js +150 -0
  27. package/dist/agents/skill-bridge.js.map +1 -0
  28. package/dist/autoresearch/__tests__/contracts.test.js +37 -1
  29. package/dist/autoresearch/__tests__/contracts.test.js.map +1 -1
  30. package/dist/autoresearch/__tests__/runtime-parity-extra.test.js +10 -10
  31. package/dist/autoresearch/__tests__/runtime-parity-extra.test.js.map +1 -1
  32. package/dist/autoresearch/__tests__/runtime.test.js +2 -2
  33. package/dist/autoresearch/__tests__/runtime.test.js.map +1 -1
  34. package/dist/autoresearch/contracts.d.ts.map +1 -1
  35. package/dist/autoresearch/contracts.js +17 -10
  36. package/dist/autoresearch/contracts.js.map +1 -1
  37. package/dist/autoresearch/runtime.d.ts.map +1 -1
  38. package/dist/autoresearch/runtime.js +71 -96
  39. package/dist/autoresearch/runtime.js.map +1 -1
  40. package/dist/cli/__tests__/agents-init.test.js +2 -0
  41. package/dist/cli/__tests__/agents-init.test.js.map +1 -1
  42. package/dist/cli/__tests__/agents.test.d.ts +2 -0
  43. package/dist/cli/__tests__/agents.test.d.ts.map +1 -0
  44. package/dist/cli/__tests__/agents.test.js +114 -0
  45. package/dist/cli/__tests__/agents.test.js.map +1 -0
  46. package/dist/cli/__tests__/autoresearch-guided.test.js +156 -1
  47. package/dist/cli/__tests__/autoresearch-guided.test.js.map +1 -1
  48. package/dist/cli/__tests__/autoresearch.test.js +195 -24
  49. package/dist/cli/__tests__/autoresearch.test.js.map +1 -1
  50. package/dist/cli/__tests__/cleanup.test.d.ts +2 -0
  51. package/dist/cli/__tests__/cleanup.test.d.ts.map +1 -0
  52. package/dist/cli/__tests__/cleanup.test.js +213 -0
  53. package/dist/cli/__tests__/cleanup.test.js.map +1 -0
  54. package/dist/cli/__tests__/error-handling-warnings.test.js +1 -1
  55. package/dist/cli/__tests__/error-handling-warnings.test.js.map +1 -1
  56. package/dist/cli/__tests__/explore.test.js +3 -3
  57. package/dist/cli/__tests__/explore.test.js.map +1 -1
  58. package/dist/cli/__tests__/index.test.js +521 -401
  59. package/dist/cli/__tests__/index.test.js.map +1 -1
  60. package/dist/cli/__tests__/native-assets.test.js +72 -9
  61. package/dist/cli/__tests__/native-assets.test.js.map +1 -1
  62. package/dist/cli/__tests__/ralphthon.test.d.ts +2 -0
  63. package/dist/cli/__tests__/ralphthon.test.d.ts.map +1 -0
  64. package/dist/cli/__tests__/ralphthon.test.js +28 -0
  65. package/dist/cli/__tests__/ralphthon.test.js.map +1 -0
  66. package/dist/cli/__tests__/setup-agents-overwrite.test.js +36 -1
  67. package/dist/cli/__tests__/setup-agents-overwrite.test.js.map +1 -1
  68. package/dist/cli/__tests__/setup-prompts-overwrite.test.js +35 -5
  69. package/dist/cli/__tests__/setup-prompts-overwrite.test.js.map +1 -1
  70. package/dist/cli/__tests__/setup-refresh.test.js +2 -2
  71. package/dist/cli/__tests__/setup-refresh.test.js.map +1 -1
  72. package/dist/cli/__tests__/setup-scope.test.js +131 -161
  73. package/dist/cli/__tests__/setup-scope.test.js.map +1 -1
  74. package/dist/cli/__tests__/setup-skills-overwrite.test.js +10 -10
  75. package/dist/cli/__tests__/setup-skills-overwrite.test.js.map +1 -1
  76. package/dist/cli/__tests__/sparkshell-cli.test.js +28 -2
  77. package/dist/cli/__tests__/sparkshell-cli.test.js.map +1 -1
  78. package/dist/cli/__tests__/team.test.js +1 -112
  79. package/dist/cli/__tests__/team.test.js.map +1 -1
  80. package/dist/cli/__tests__/uninstall.test.js +7 -20
  81. package/dist/cli/__tests__/uninstall.test.js.map +1 -1
  82. package/dist/cli/agents-init.d.ts.map +1 -1
  83. package/dist/cli/agents-init.js +99 -95
  84. package/dist/cli/agents-init.js.map +1 -1
  85. package/dist/cli/agents.d.ts +14 -0
  86. package/dist/cli/agents.d.ts.map +1 -0
  87. package/dist/cli/agents.js +261 -0
  88. package/dist/cli/agents.js.map +1 -0
  89. package/dist/cli/autoresearch-guided.d.ts +8 -0
  90. package/dist/cli/autoresearch-guided.d.ts.map +1 -1
  91. package/dist/cli/autoresearch-guided.js +104 -37
  92. package/dist/cli/autoresearch-guided.js.map +1 -1
  93. package/dist/cli/autoresearch-intake.d.ts +60 -0
  94. package/dist/cli/autoresearch-intake.d.ts.map +1 -0
  95. package/dist/cli/autoresearch-intake.js +318 -0
  96. package/dist/cli/autoresearch-intake.js.map +1 -0
  97. package/dist/cli/autoresearch.d.ts +3 -1
  98. package/dist/cli/autoresearch.d.ts.map +1 -1
  99. package/dist/cli/autoresearch.js +64 -10
  100. package/dist/cli/autoresearch.js.map +1 -1
  101. package/dist/cli/cleanup.d.ts +52 -0
  102. package/dist/cli/cleanup.d.ts.map +1 -0
  103. package/dist/cli/cleanup.js +302 -0
  104. package/dist/cli/cleanup.js.map +1 -0
  105. package/dist/cli/doctor.d.ts.map +1 -1
  106. package/dist/cli/doctor.js +9 -37
  107. package/dist/cli/doctor.js.map +1 -1
  108. package/dist/cli/explore.d.ts.map +1 -1
  109. package/dist/cli/explore.js +5 -4
  110. package/dist/cli/explore.js.map +1 -1
  111. package/dist/cli/index.d.ts +5 -7
  112. package/dist/cli/index.d.ts.map +1 -1
  113. package/dist/cli/index.js +610 -427
  114. package/dist/cli/index.js.map +1 -1
  115. package/dist/cli/native-assets.d.ts +15 -1
  116. package/dist/cli/native-assets.d.ts.map +1 -1
  117. package/dist/cli/native-assets.js +134 -32
  118. package/dist/cli/native-assets.js.map +1 -1
  119. package/dist/cli/ralph.d.ts.map +1 -1
  120. package/dist/cli/ralph.js +38 -1
  121. package/dist/cli/ralph.js.map +1 -1
  122. package/dist/cli/ralphthon.d.ts +14 -0
  123. package/dist/cli/ralphthon.d.ts.map +1 -0
  124. package/dist/cli/ralphthon.js +234 -0
  125. package/dist/cli/ralphthon.js.map +1 -0
  126. package/dist/cli/setup.d.ts +1 -4
  127. package/dist/cli/setup.d.ts.map +1 -1
  128. package/dist/cli/setup.js +111 -76
  129. package/dist/cli/setup.js.map +1 -1
  130. package/dist/cli/sparkshell.d.ts +3 -1
  131. package/dist/cli/sparkshell.d.ts.map +1 -1
  132. package/dist/cli/sparkshell.js +35 -16
  133. package/dist/cli/sparkshell.js.map +1 -1
  134. package/dist/cli/team.d.ts.map +1 -1
  135. package/dist/cli/team.js +1 -0
  136. package/dist/cli/team.js.map +1 -1
  137. package/dist/cli/uninstall.d.ts +1 -1
  138. package/dist/cli/uninstall.d.ts.map +1 -1
  139. package/dist/cli/uninstall.js +82 -64
  140. package/dist/cli/uninstall.js.map +1 -1
  141. package/dist/config/__tests__/generator-idempotent.test.js +10 -10
  142. package/dist/config/__tests__/generator-idempotent.test.js.map +1 -1
  143. package/dist/config/__tests__/generator-notify.test.js +15 -0
  144. package/dist/config/__tests__/generator-notify.test.js.map +1 -1
  145. package/dist/config/generator.d.ts +0 -1
  146. package/dist/config/generator.d.ts.map +1 -1
  147. package/dist/config/generator.js +53 -42
  148. package/dist/config/generator.js.map +1 -1
  149. package/dist/hooks/__tests__/agents-overlay.test.js +295 -230
  150. package/dist/hooks/__tests__/agents-overlay.test.js.map +1 -1
  151. package/dist/hooks/__tests__/deep-interview-contract.test.js +49 -24
  152. package/dist/hooks/__tests__/deep-interview-contract.test.js.map +1 -1
  153. package/dist/hooks/__tests__/notify-fallback-watcher-ralphthon.test.d.ts +2 -0
  154. package/dist/hooks/__tests__/notify-fallback-watcher-ralphthon.test.d.ts.map +1 -0
  155. package/dist/hooks/__tests__/notify-fallback-watcher-ralphthon.test.js +193 -0
  156. package/dist/hooks/__tests__/notify-fallback-watcher-ralphthon.test.js.map +1 -0
  157. package/dist/hooks/agents-overlay.d.ts +1 -1
  158. package/dist/hooks/agents-overlay.d.ts.map +1 -1
  159. package/dist/hooks/agents-overlay.js +109 -106
  160. package/dist/hooks/agents-overlay.js.map +1 -1
  161. package/dist/modes/base.d.ts +1 -1
  162. package/dist/modes/base.d.ts.map +1 -1
  163. package/dist/modes/base.js +1 -1
  164. package/dist/modes/base.js.map +1 -1
  165. package/dist/ralphthon/__tests__/bootstrap.test.d.ts +2 -0
  166. package/dist/ralphthon/__tests__/bootstrap.test.d.ts.map +1 -0
  167. package/dist/ralphthon/__tests__/bootstrap.test.js +23 -0
  168. package/dist/ralphthon/__tests__/bootstrap.test.js.map +1 -0
  169. package/dist/ralphthon/__tests__/orchestrator.test.d.ts +2 -0
  170. package/dist/ralphthon/__tests__/orchestrator.test.d.ts.map +1 -0
  171. package/dist/ralphthon/__tests__/orchestrator.test.js +309 -0
  172. package/dist/ralphthon/__tests__/orchestrator.test.js.map +1 -0
  173. package/dist/ralphthon/__tests__/prd.test.d.ts +2 -0
  174. package/dist/ralphthon/__tests__/prd.test.d.ts.map +1 -0
  175. package/dist/ralphthon/__tests__/prd.test.js +133 -0
  176. package/dist/ralphthon/__tests__/prd.test.js.map +1 -0
  177. package/dist/ralphthon/bootstrap.d.ts +3 -0
  178. package/dist/ralphthon/bootstrap.d.ts.map +1 -0
  179. package/dist/ralphthon/bootstrap.js +84 -0
  180. package/dist/ralphthon/bootstrap.js.map +1 -0
  181. package/dist/ralphthon/orchestrator.d.ts +50 -0
  182. package/dist/ralphthon/orchestrator.d.ts.map +1 -0
  183. package/dist/ralphthon/orchestrator.js +362 -0
  184. package/dist/ralphthon/orchestrator.js.map +1 -0
  185. package/dist/ralphthon/prd.d.ts +191 -0
  186. package/dist/ralphthon/prd.d.ts.map +1 -0
  187. package/dist/ralphthon/prd.js +355 -0
  188. package/dist/ralphthon/prd.js.map +1 -0
  189. package/dist/ralphthon/runtime.d.ts +31 -0
  190. package/dist/ralphthon/runtime.d.ts.map +1 -0
  191. package/dist/ralphthon/runtime.js +104 -0
  192. package/dist/ralphthon/runtime.js.map +1 -0
  193. package/dist/ralphthon/tmux.d.ts +3 -0
  194. package/dist/ralphthon/tmux.d.ts.map +1 -0
  195. package/dist/ralphthon/tmux.js +39 -0
  196. package/dist/ralphthon/tmux.js.map +1 -0
  197. package/dist/subagents/__tests__/tracker.test.d.ts +2 -0
  198. package/dist/subagents/__tests__/tracker.test.d.ts.map +1 -0
  199. package/dist/subagents/__tests__/tracker.test.js +47 -0
  200. package/dist/subagents/__tests__/tracker.test.js.map +1 -0
  201. package/dist/subagents/tracker.d.ts +52 -0
  202. package/dist/subagents/tracker.d.ts.map +1 -0
  203. package/dist/subagents/tracker.js +175 -0
  204. package/dist/subagents/tracker.js.map +1 -0
  205. package/dist/team/__tests__/worker-bootstrap.test.js +189 -163
  206. package/dist/team/__tests__/worker-bootstrap.test.js.map +1 -1
  207. package/dist/team/__tests__/worktree.test.js +1 -1
  208. package/dist/team/__tests__/worktree.test.js.map +1 -1
  209. package/dist/team/worker-bootstrap.d.ts +1 -1
  210. package/dist/team/worker-bootstrap.d.ts.map +1 -1
  211. package/dist/team/worker-bootstrap.js +58 -63
  212. package/dist/team/worker-bootstrap.js.map +1 -1
  213. package/dist/team/worktree.js +1 -1
  214. package/dist/team/worktree.js.map +1 -1
  215. package/dist/utils/__tests__/agents-md.test.d.ts +2 -0
  216. package/dist/utils/__tests__/agents-md.test.d.ts.map +1 -0
  217. package/dist/utils/__tests__/agents-md.test.js +32 -0
  218. package/dist/utils/__tests__/agents-md.test.js.map +1 -0
  219. package/dist/utils/__tests__/agents-model-table.test.d.ts +2 -0
  220. package/dist/utils/__tests__/agents-model-table.test.d.ts.map +1 -0
  221. package/dist/utils/__tests__/agents-model-table.test.js +84 -0
  222. package/dist/utils/__tests__/agents-model-table.test.js.map +1 -0
  223. package/dist/utils/__tests__/paths.test.js +78 -83
  224. package/dist/utils/__tests__/paths.test.js.map +1 -1
  225. package/dist/utils/agents-md.d.ts.map +1 -1
  226. package/dist/utils/agents-md.js +10 -0
  227. package/dist/utils/agents-md.js.map +1 -1
  228. package/dist/utils/agents-model-table.d.ts +16 -0
  229. package/dist/utils/agents-model-table.d.ts.map +1 -0
  230. package/dist/utils/agents-model-table.js +83 -0
  231. package/dist/utils/agents-model-table.js.map +1 -0
  232. package/dist/utils/paths.d.ts +6 -6
  233. package/dist/utils/paths.d.ts.map +1 -1
  234. package/dist/utils/paths.js +31 -31
  235. package/dist/utils/paths.js.map +1 -1
  236. package/dist/verification/__tests__/explore-harness-release-workflow.test.js +21 -3
  237. package/dist/verification/__tests__/explore-harness-release-workflow.test.js.map +1 -1
  238. package/dist/verification/__tests__/native-release-manifest.test.d.ts +2 -0
  239. package/dist/verification/__tests__/native-release-manifest.test.d.ts.map +1 -0
  240. package/dist/verification/__tests__/native-release-manifest.test.js +80 -0
  241. package/dist/verification/__tests__/native-release-manifest.test.js.map +1 -0
  242. package/package.json +1 -1
  243. package/prompts/executor.md +15 -0
  244. package/scripts/__tests__/smoke-packed-install.test.mjs +137 -8
  245. package/scripts/eval-adaptive-sort-optimization.py +24 -0
  246. package/scripts/eval-in-action-cat-shellout-demo.js +31 -0
  247. package/scripts/eval-ml-kaggle-model-optimization.py +29 -0
  248. package/scripts/eval-noisy-bayesopt-highdim.py +44 -0
  249. package/scripts/eval-noisy-latent-subspace-discovery.py +44 -0
  250. package/scripts/generate-native-release-manifest.mjs +14 -3
  251. package/scripts/notify-fallback-watcher.js +308 -6
  252. package/scripts/notify-hook.js +20 -0
  253. package/scripts/run-autoresearch-showcase.sh +75 -0
  254. package/scripts/smoke-packed-install.mjs +142 -10
  255. package/skills/deep-interview/SKILL.md +30 -1
  256. package/skills/omx-setup/SKILL.md +2 -2
  257. package/skills/skill/SKILL.md +32 -32
  258. package/skills/team/SKILL.md +6 -0
  259. package/skills/worker/SKILL.md +2 -2
  260. package/templates/AGENTS.md +97 -16
@@ -1,22 +1,147 @@
1
1
  import { createServer } from 'node:http';
2
- import { cpSync, existsSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
2
+ import {
3
+ cpSync,
4
+ existsSync,
5
+ lstatSync,
6
+ mkdtempSync,
7
+ readFileSync,
8
+ rmSync,
9
+ symlinkSync,
10
+ writeFileSync,
11
+ } from 'node:fs';
3
12
  import { chmodSync, mkdirSync } from 'node:fs';
4
13
  import { tmpdir } from 'node:os';
5
- import { join, resolve } from 'node:path';
14
+ import { basename, dirname, join, resolve } from 'node:path';
6
15
  import { spawnSync } from 'node:child_process';
7
16
  import { pathToFileURL } from 'node:url';
8
17
 
18
+ const REQUIRED_NODE_MODULE_MARKERS = [
19
+ join('typescript', 'package.json'),
20
+ join('@iarna', 'toml', 'package.json'),
21
+ join('@modelcontextprotocol', 'sdk', 'package.json'),
22
+ join('zod', 'package.json'),
23
+ ];
24
+
9
25
  function usage() {
10
26
  return [
11
- 'Usage: node scripts/smoke-packed-install.mjs [--release-assets-dir <dir>]',
27
+ 'Usage: node scripts/smoke-packed-install.mjs [--release-assets-dir <dir>] [--require-no-fallback]',
12
28
  '',
13
29
  'Creates an npm tarball, installs it into an isolated prefix, and smoke tests the installed omx CLI.',
14
30
  'When --release-assets-dir is provided, native hydration is also exercised using a local HTTP server.',
15
31
  ].join('\n');
16
32
  }
17
33
 
34
+ function hasNodeModulesPath(nodeModulesPath) {
35
+ try {
36
+ lstatSync(nodeModulesPath);
37
+ return true;
38
+ } catch {
39
+ return false;
40
+ }
41
+ }
42
+
43
+ export function hasUsableNodeModules(repoRoot) {
44
+ return REQUIRED_NODE_MODULE_MARKERS.every((marker) => existsSync(join(repoRoot, 'node_modules', marker)));
45
+ }
46
+
47
+ export function resolveGitCommonDir(cwd, gitRunner = spawnSync) {
48
+ const result = gitRunner('git', ['rev-parse', '--git-common-dir'], {
49
+ cwd,
50
+ encoding: 'utf-8',
51
+ });
52
+ if (result.status !== 0) {
53
+ return null;
54
+ }
55
+ const value = (result.stdout || '').trim();
56
+ if (!value) {
57
+ return null;
58
+ }
59
+ return resolve(cwd, value);
60
+ }
61
+
62
+ export function resolveReusableNodeModulesSource(repoRoot, gitRunner = spawnSync) {
63
+ const commonDir = resolveGitCommonDir(repoRoot, gitRunner);
64
+ if (!commonDir || basename(commonDir) !== '.git') {
65
+ return null;
66
+ }
67
+
68
+ const primaryRepoRoot = dirname(commonDir);
69
+ if (resolve(primaryRepoRoot) === resolve(repoRoot)) {
70
+ return null;
71
+ }
72
+
73
+ if (!hasUsableNodeModules(primaryRepoRoot)) {
74
+ return null;
75
+ }
76
+
77
+ return join(primaryRepoRoot, 'node_modules');
78
+ }
79
+
80
+ function formatCommandFailure(cmd, args, result) {
81
+ return [
82
+ `Command failed: ${cmd} ${args.join(' ')}`,
83
+ result.stdout?.trim() ? `stdout:\n${result.stdout.trim()}` : '',
84
+ result.stderr?.trim() ? `stderr:\n${result.stderr.trim()}` : '',
85
+ ].filter(Boolean).join('\n\n');
86
+ }
87
+
88
+ export function ensureRepoDependencies(repoRoot, options = {}) {
89
+ const {
90
+ gitRunner = spawnSync,
91
+ install = (cwd) => {
92
+ const result = spawnSync('npm', ['ci'], {
93
+ cwd,
94
+ encoding: 'utf-8',
95
+ stdio: 'pipe',
96
+ });
97
+ if (result.status !== 0) {
98
+ throw new Error(formatCommandFailure('npm', ['ci'], result));
99
+ }
100
+ },
101
+ remove = rmSync,
102
+ symlink = symlinkSync,
103
+ log = () => {},
104
+ platformName = process.platform,
105
+ } = options;
106
+
107
+ if (hasUsableNodeModules(repoRoot)) {
108
+ return {
109
+ strategy: 'existing',
110
+ nodeModulesPath: join(repoRoot, 'node_modules'),
111
+ };
112
+ }
113
+
114
+ const targetNodeModules = join(repoRoot, 'node_modules');
115
+ if (hasNodeModulesPath(targetNodeModules)) {
116
+ remove(targetNodeModules, { recursive: true, force: true });
117
+ }
118
+
119
+ const reusableNodeModules = resolveReusableNodeModulesSource(repoRoot, gitRunner);
120
+ if (reusableNodeModules) {
121
+ symlink(reusableNodeModules, targetNodeModules, platformName === 'win32' ? 'junction' : 'dir');
122
+ log(`[smoke:packed-install] Reusing node_modules from ${reusableNodeModules}`);
123
+ return {
124
+ strategy: 'symlink',
125
+ nodeModulesPath: targetNodeModules,
126
+ sourceNodeModulesPath: reusableNodeModules,
127
+ };
128
+ }
129
+
130
+ log('[smoke:packed-install] Installing repo dependencies with npm ci');
131
+ install(repoRoot);
132
+ return {
133
+ strategy: 'installed',
134
+ nodeModulesPath: targetNodeModules,
135
+ };
136
+ }
137
+
138
+ export function hasSparkShellFallbackBanner(stderr) {
139
+ return /GLIBC-incompatible native sidecar detected/i.test(String(stderr || ''));
140
+ }
141
+
18
142
  function parseArgs(argv) {
19
143
  let releaseAssetsDir;
144
+ let requireNoFallback = false;
20
145
  for (let index = 0; index < argv.length; index += 1) {
21
146
  const token = argv[index];
22
147
  if (token === '--help' || token === '-h') {
@@ -30,9 +155,13 @@ function parseArgs(argv) {
30
155
  index += 1;
31
156
  continue;
32
157
  }
158
+ if (token === '--require-no-fallback') {
159
+ requireNoFallback = true;
160
+ continue;
161
+ }
33
162
  throw new Error(`Unknown argument: ${token}\n${usage()}`);
34
163
  }
35
- return { releaseAssetsDir };
164
+ return { releaseAssetsDir, requireNoFallback };
36
165
  }
37
166
 
38
167
  function run(cmd, args, options = {}) {
@@ -42,11 +171,7 @@ function run(cmd, args, options = {}) {
42
171
  ...options,
43
172
  });
44
173
  if (result.status !== 0) {
45
- throw new Error([
46
- `Command failed: ${cmd} ${args.join(' ')}`,
47
- result.stdout?.trim() ? `stdout:\n${result.stdout.trim()}` : '',
48
- result.stderr?.trim() ? `stderr:\n${result.stderr.trim()}` : '',
49
- ].filter(Boolean).join('\n\n'));
174
+ throw new Error(formatCommandFailure(cmd, args, result));
50
175
  }
51
176
  return result;
52
177
  }
@@ -153,7 +278,7 @@ export function rewriteManifestDownloadUrls(manifestPath, baseUrl) {
153
278
  }
154
279
 
155
280
  async function main() {
156
- const { releaseAssetsDir } = parseArgs(process.argv.slice(2));
281
+ const { releaseAssetsDir, requireNoFallback } = parseArgs(process.argv.slice(2));
157
282
  const repoRoot = process.cwd();
158
283
  const tempRoot = mkdtempSync(join(tmpdir(), 'omx-packed-install-'));
159
284
  const prefixDir = join(tempRoot, 'prefix');
@@ -166,6 +291,10 @@ async function main() {
166
291
  let server;
167
292
  let tarballPath;
168
293
  try {
294
+ ensureRepoDependencies(repoRoot, {
295
+ log: (message) => console.log(message),
296
+ });
297
+
169
298
  const pack = run('npm', ['pack', '--json'], { cwd: repoRoot });
170
299
  const packOutput = JSON.parse(pack.stdout.slice(pack.stdout.indexOf('[')));
171
300
  const tarballName = packOutput[0]?.filename;
@@ -192,6 +321,9 @@ async function main() {
192
321
  };
193
322
 
194
323
  const sparkshell = run(omxPath, ['sparkshell', 'node', '--version'], { cwd: repoRoot, env });
324
+ if (requireNoFallback && hasSparkShellFallbackBanner(sparkshell.stderr)) {
325
+ throw new Error(`Unexpected sparkshell fallback stderr:\n${sparkshell.stderr}`);
326
+ }
195
327
  if (!/v\d+\./.test(sparkshell.stdout)) {
196
328
  throw new Error(`Unexpected sparkshell stdout:\n${sparkshell.stdout}`);
197
329
  }
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: deep-interview
3
3
  description: Socratic deep interview with mathematical ambiguity gating before execution
4
- argument-hint: "<idea or vague description>"
4
+ argument-hint: "[--quick|--standard|--deep] [--autoresearch] <idea or vague description>"
5
5
  ---
6
6
 
7
7
  <Purpose>
@@ -30,8 +30,13 @@ Execution quality is usually bottlenecked by intent clarity, not just missing im
30
30
  - **Quick (`--quick`)**: fast pre-PRD pass; target threshold `<= 0.30`; max rounds 5
31
31
  - **Standard (`--standard`, default)**: full requirement interview; target threshold `<= 0.20`; max rounds 12
32
32
  - **Deep (`--deep`)**: high-rigor exploration; target threshold `<= 0.15`; max rounds 20
33
+ - **Autoresearch (`--autoresearch`)**: same interview rigor as Standard, but specialized for `omx autoresearch` launch readiness and `.omx/specs/` mission/sandbox artifact handoff
33
34
 
34
35
  If no flag is provided, use **Standard**.
36
+
37
+ <Mode_Flags>
38
+ - **`--autoresearch`**: switch the interview into autoresearch-intake mode for `omx autoresearch` handoff. In this mode, the interview should converge on a launch-ready research mission, write canonical artifacts under `.omx/specs/`, and preserve the explicit `refine further` vs `launch` boundary for downstream CLI intake.
39
+ </Mode_Flags>
35
40
  </Depth_Profiles>
36
41
 
37
42
  <Execution_Policy>
@@ -194,6 +199,30 @@ Spec should include:
194
199
  - Technical context findings
195
200
  - Full or condensed transcript
196
201
 
202
+ ### Autoresearch specialization
203
+
204
+ When the clarified task is specifically about `omx autoresearch`, or the skill is invoked with `--autoresearch`, keep the interview domain-specific and emit launch-consumable artifacts without skipping clarification.
205
+
206
+ - **Accepted seed inputs:** `topic`, `evaluator`, `keep-policy`, `slug`, existing mission draft text, and prior evaluator examples/templates
207
+ - **Required interview focus:** mission clarity, evaluator readiness, keep policy, slug/session naming, and whether the draft is ready to launch now or should refine further
208
+ - **Canonical artifact path:** `.omx/specs/deep-interview-autoresearch-{slug}.md`
209
+ - **Launch artifact bundle:** `.omx/specs/autoresearch-{slug}/mission.md`, `.omx/specs/autoresearch-{slug}/sandbox.md`, and `.omx/specs/autoresearch-{slug}/result.json`
210
+ - **Launch artifact directory:** `.omx/specs/autoresearch-{slug}/`
211
+ - **Required artifact sections:**
212
+ - `Mission Draft`
213
+ - `Evaluator Draft`
214
+ - `Launch Readiness`
215
+ - `Seed Inputs`
216
+ - `Confirmation Bridge`
217
+ - **Required launch artifacts under `.omx/specs/autoresearch-{slug}/`:**
218
+ - `mission.md`
219
+ - `sandbox.md`
220
+ - `result.json`
221
+ - **Launch-readiness rule:** mark the draft as **not launch-ready** while the evaluator command still contains placeholder markers such as `<...>`, `TODO`, `TBD`, `REPLACE_ME`, `CHANGEME`, or `your-command-here`
222
+ - **Structured result contract:** `result.json` should point to the draft + mission/sandbox artifacts and carry the finalized `topic`, `evaluatorCommand`, `keepPolicy`, `slug`, `launchReady`, and `blockedReasons` fields so `omx autoresearch` can consume it directly
223
+ - **Confirmation bridge:** after artifact generation, offer at least `refine further` and `launch`; do not launch detached tmux until the user explicitly confirms `launch`
224
+ - **Handoff rule:** downstream execution must preserve the clarified mission intent, evaluator expectations, decision boundaries, and launch-readiness status from this artifact rather than bypassing the draft review step
225
+
197
226
  ## Phase 5: Execution Bridge
198
227
 
199
228
  Present execution options after artifact generation using explicit handoff contracts. Treat the deep-interview spec as the current requirements source of truth and preserve intent, non-goals, decision boundaries, acceptance criteria, and any residual-risk warnings across the handoff.
@@ -42,8 +42,8 @@ Supported setup flags (current implementation):
42
42
  - Local project orchestration file is `./AGENTS.md` (project root).
43
43
  - If `AGENTS.md` exists and `--force` is not used, interactive TTY runs ask whether to overwrite. Non-interactive runs preserve the file.
44
44
  - Scope targets:
45
- - `user`: user directories (`~/.codex`, `~/.agents/skills`, `~/.omx/agents`)
46
- - `project`: local directories (`./.codex`, `./.agents/skills`, `./.omx/agents`)
45
+ - `user`: user directories (`~/.codex`, `~/.codex/skills`, `~/.omx/agents`)
46
+ - `project`: local directories (`./.codex`, `./.codex/skills`, `./.omx/agents`)
47
47
  - If persisted scope is `project`, `omx` launch automatically uses `CODEX_HOME=./.codex` unless user explicitly overrides `CODEX_HOME`.
48
48
  - With `--force`, AGENTS overwrite may still be skipped if an active OMX session is detected (safety guard).
49
49
  - Legacy persisted scope values (`project-local`) are automatically migrated to `project` with a one-time warning.
@@ -15,19 +15,19 @@ Meta-skill for managing oh-my-codex skills via CLI-like commands.
15
15
  Show all local skills organized by scope.
16
16
 
17
17
  **Behavior:**
18
- 1. Scan user skills at `~/.agents/skills/`
19
- 2. Scan project skills at `.agents/skills/`
18
+ 1. Scan user skills at `~/.codex/skills/`
19
+ 2. Scan project skills at `.codex/skills/`
20
20
  3. Parse YAML frontmatter for metadata
21
21
  4. Display in organized table format:
22
22
 
23
23
  ```
24
- USER SKILLS (~/.agents/skills/):
24
+ USER SKILLS (~/.codex/skills/):
25
25
  | Name | Triggers | Quality | Usage | Scope |
26
26
  |-------------------|--------------------|---------|-------|-------|
27
27
  | error-handler | fix, error | 95% | 42 | user |
28
28
  | api-builder | api, endpoint | 88% | 23 | user |
29
29
 
30
- PROJECT SKILLS (.agents/skills/):
30
+ PROJECT SKILLS (.codex/skills/):
31
31
  | Name | Triggers | Quality | Usage | Scope |
32
32
  |-------------------|--------------------|---------|-------|---------|
33
33
  | test-runner | test, run | 92% | 15 | project |
@@ -51,8 +51,8 @@ Interactive wizard for creating a new skill.
51
51
  4. **Ask for argument hint** (optional)
52
52
  - Example: "<file> [options]"
53
53
  5. **Ask for scope:**
54
- - `user` → `~/.agents/skills/<name>/SKILL.md`
55
- - `project` → `.agents/skills/<name>/SKILL.md`
54
+ - `user` → `~/.codex/skills/<name>/SKILL.md`
55
+ - `project` → `.codex/skills/<name>/SKILL.md`
56
56
  6. **Create skill file** with template:
57
57
 
58
58
  ```yaml
@@ -105,7 +105,7 @@ Triggers (comma-separated): log, logger, logging
105
105
  Argument hint (optional): <level> [message]
106
106
  Scope (user/project): user
107
107
 
108
- ✓ Created skill at ~/.agents/skills/custom-logger/SKILL.md
108
+ ✓ Created skill at ~/.codex/skills/custom-logger/SKILL.md
109
109
  → Edit with: /skill edit custom-logger
110
110
  ```
111
111
 
@@ -117,13 +117,13 @@ Remove a skill by name.
117
117
 
118
118
  **Behavior:**
119
119
  1. **Search for skill** in both scopes:
120
- - `~/.agents/skills/<name>/SKILL.md`
121
- - `.agents/skills/<name>/SKILL.md`
120
+ - `~/.codex/skills/<name>/SKILL.md`
121
+ - `.codex/skills/<name>/SKILL.md`
122
122
  2. **If found:**
123
123
  - Display skill info (name, description, scope)
124
124
  - **Ask for confirmation:** "Delete '<name>' skill from <scope>? (yes/no)"
125
125
  3. **If confirmed:**
126
- - Delete entire skill directory (e.g., `~/.agents/skills/<name>/`)
126
+ - Delete entire skill directory (e.g., `~/.codex/skills/<name>/`)
127
127
  - Report: "✓ Removed skill '<name>' from <scope>"
128
128
  4. **If not found:**
129
129
  - Report: "✗ Skill '<name>' not found in user or project scope"
@@ -135,7 +135,7 @@ Remove a skill by name.
135
135
  User: /skill remove old-logger
136
136
  Assistant: Found skill 'old-logger' in user scope:
137
137
  Description: Legacy logging utility
138
- Scope: user (~/.agents/skills/)
138
+ Scope: user (~/.codex/skills/)
139
139
 
140
140
  Delete 'old-logger' skill? (yes/no)
141
141
 
@@ -251,13 +251,13 @@ Show detailed information about a skill.
251
251
 
252
252
  ```
253
253
  Skill: custom-logger
254
- Scope: user (~/.agents/skills/custom-logger/)
254
+ Scope: user (~/.codex/skills/custom-logger/)
255
255
  Description: Enhanced logging with structured output
256
256
  Triggers: log, logger, logging
257
257
  Argument Hint: <level> [message]
258
258
  Quality: 95% (if available)
259
259
  Usage Count: 42 times (if available)
260
- File Path: /home/user/.agents/skills/custom-logger/SKILL.md
260
+ File Path: /home/user/.codex/skills/custom-logger/SKILL.md
261
261
 
262
262
  --- FULL CONTENT ---
263
263
  [entire markdown content]
@@ -272,7 +272,7 @@ Assistant: Skill: custom-logger
272
272
  Scope: user
273
273
  Description: Enhanced logging with structured output
274
274
  Triggers: log, logger, logging
275
- File: ~/.agents/skills/custom-logger/SKILL.md
275
+ File: ~/.codex/skills/custom-logger/SKILL.md
276
276
 
277
277
  --- CONTENT ---
278
278
  # Custom Logger Skill
@@ -290,8 +290,8 @@ Sync skills between user and project scopes.
290
290
 
291
291
  **Behavior:**
292
292
  1. **Scan both scopes:**
293
- - User skills: `~/.agents/skills/`
294
- - Project skills: `.agents/skills/`
293
+ - User skills: `~/.codex/skills/`
294
+ - Project skills: `.codex/skills/`
295
295
  2. **Compare and categorize:**
296
296
  - User-only skills (not in project)
297
297
  - Project-only skills (not in user)
@@ -339,7 +339,7 @@ Assistant: Found 5 user-only skills and 2 project-only skills.
339
339
 
340
340
  Copy 'error-handler' from user to project? (yes/no/skip)
341
341
  User: yes
342
- Assistant: ✓ Copied 'error-handler' to .agents/skills/
342
+ Assistant: ✓ Copied 'error-handler' to .codex/skills/
343
343
 
344
344
  Copy 'api-builder' from user to project? (yes/no/skip)
345
345
  User: skip
@@ -360,7 +360,7 @@ First, check if skill directories exist and create them if needed:
360
360
 
361
361
  ```bash
362
362
  # Check and create user-level skills directory
363
- USER_SKILLS_DIR="$HOME/.agents/skills"
363
+ USER_SKILLS_DIR="$HOME/.codex/skills"
364
364
  if [ -d "$USER_SKILLS_DIR" ]; then
365
365
  echo "User skills directory exists: $USER_SKILLS_DIR"
366
366
  else
@@ -369,7 +369,7 @@ else
369
369
  fi
370
370
 
371
371
  # Check and create project-level skills directory
372
- PROJECT_SKILLS_DIR=".agents/skills"
372
+ PROJECT_SKILLS_DIR=".codex/skills"
373
373
  if [ -d "$PROJECT_SKILLS_DIR" ]; then
374
374
  echo "Project skills directory exists: $PROJECT_SKILLS_DIR"
375
375
  else
@@ -384,15 +384,15 @@ Scan both directories and show a comprehensive inventory:
384
384
 
385
385
  ```bash
386
386
  # Scan user-level skills
387
- echo "=== USER-LEVEL SKILLS (~/.agents/skills/) ==="
388
- if [ -d "$HOME/.agents/skills" ]; then
389
- USER_COUNT=$(find "$HOME/.agents/skills" -name "*.md" 2>/dev/null | wc -l)
387
+ echo "=== USER-LEVEL SKILLS (~/.codex/skills/) ==="
388
+ if [ -d "$HOME/.codex/skills" ]; then
389
+ USER_COUNT=$(find "$HOME/.codex/skills" -name "*.md" 2>/dev/null | wc -l)
390
390
  echo "Total skills: $USER_COUNT"
391
391
 
392
392
  if [ $USER_COUNT -gt 0 ]; then
393
393
  echo ""
394
394
  echo "Skills found:"
395
- find "$HOME/.agents/skills" -name "*.md" -type f -exec sh -c '
395
+ find "$HOME/.codex/skills" -name "*.md" -type f -exec sh -c '
396
396
  FILE="$1"
397
397
  NAME=$(grep -m1 "^name:" "$FILE" 2>/dev/null | sed "s/name: //")
398
398
  DESC=$(grep -m1 "^description:" "$FILE" 2>/dev/null | sed "s/description: //")
@@ -408,15 +408,15 @@ else
408
408
  fi
409
409
 
410
410
  echo ""
411
- echo "=== PROJECT-LEVEL SKILLS (.agents/skills/) ==="
412
- if [ -d ".agents/skills" ]; then
413
- PROJECT_COUNT=$(find ".agents/skills" -name "*.md" 2>/dev/null | wc -l)
411
+ echo "=== PROJECT-LEVEL SKILLS (.codex/skills/) ==="
412
+ if [ -d ".codex/skills" ]; then
413
+ PROJECT_COUNT=$(find ".codex/skills" -name "*.md" 2>/dev/null | wc -l)
414
414
  echo "Total skills: $PROJECT_COUNT"
415
415
 
416
416
  if [ $PROJECT_COUNT -gt 0 ]; then
417
417
  echo ""
418
418
  echo "Skills found:"
419
- find ".agents/skills" -name "*.md" -type f -exec sh -c '
419
+ find ".codex/skills" -name "*.md" -type f -exec sh -c '
420
420
  FILE="$1"
421
421
  NAME=$(grep -m1 "^name:" "$FILE" 2>/dev/null | sed "s/name: //")
422
422
  DESC=$(grep -m1 "^description:" "$FILE" 2>/dev/null | sed "s/description: //")
@@ -467,8 +467,8 @@ Ask user to provide either:
467
467
  - **Paste content**: Paste skill markdown content directly
468
468
 
469
469
  Then ask for scope:
470
- - **User-level** (~/.agents/skills/) - Available across all projects
471
- - **Project-level** (.agents/skills/) - Only for this project
470
+ - **User-level** (~/.codex/skills/) - Available across all projects
471
+ - **Project-level** (.codex/skills/) - Only for this project
472
472
 
473
473
  Validate the skill format and save to the chosen location.
474
474
 
@@ -715,7 +715,7 @@ When invoked without arguments, run the full guided wizard.
715
715
 
716
716
  **Automatic Application**: Codex detects triggers and applies skills automatically - no need to remember or search for solutions.
717
717
 
718
- **Version Control**: Project-level skills (.agents/skills/) are committed with your code, so the whole team benefits.
718
+ **Version Control**: Project-level skills (.codex/skills/) are committed with your code, so the whole team benefits.
719
719
 
720
720
  **Evolving Knowledge**: Skills improve over time as you discover better approaches and refine triggers.
721
721
 
@@ -760,8 +760,8 @@ Good skills are:
760
760
  > /skill list
761
761
 
762
762
  Checking skill directories...
763
- ✓ User skills directory exists: ~/.agents/skills/
764
- ✓ Project skills directory exists: .agents/skills/
763
+ ✓ User skills directory exists: ~/.codex/skills/
764
+ ✓ Project skills directory exists: .codex/skills/
765
765
 
766
766
  Scanning for skills...
767
767
 
@@ -9,6 +9,12 @@ description: N coordinated agents on shared task list using tmux-based orchestra
9
9
 
10
10
  This skill is operationally sensitive. Treat it as an operator workflow, not a generic prompt pattern.
11
11
 
12
+ ## Team vs Native Subagents
13
+
14
+ - Use **Codex native subagents** for bounded, in-session parallelism where one leader thread can fan out a few independent subtasks and wait for them directly.
15
+ - Use **`omx team`** when you need durable tmux workers, shared task state, mailbox/dispatch coordination, worktrees, explicit lifecycle control, or long-running parallel execution that must survive beyond one local reasoning burst.
16
+ - Native subagents can complement team/ralph execution, but they do **not** replace the tmux team runtime's stateful coordination contract.
17
+
12
18
  ## What This Skill Must Do
13
19
 
14
20
  ## GPT-5.4 Guidance Alignment
@@ -20,8 +20,8 @@ Example: `alpha/worker-2`
20
20
  When a worker inbox tells you to load this skill, resolve the first existing path:
21
21
 
22
22
  1. `${CODEX_HOME:-~/.codex}/skills/worker/SKILL.md`
23
- 2. `~/.agents/skills/worker/SKILL.md`
24
- 3. `<leader_cwd>/.agents/skills/worker/SKILL.md`
23
+ 2. `~/.codex/skills/worker/SKILL.md`
24
+ 3. `<leader_cwd>/.codex/skills/worker/SKILL.md`
25
25
  4. `<leader_cwd>/skills/worker/SKILL.md` (repo fallback)
26
26
 
27
27
  ## Startup Protocol (ACK)
@@ -1,3 +1,10 @@
1
+ <!-- AUTONOMY DIRECTIVE — DO NOT REMOVE -->
2
+ YOU ARE AN AUTONOMOUS CODING AGENT. EXECUTE TASKS TO COMPLETION WITHOUT ASKING FOR PERMISSION.
3
+ DO NOT STOP TO ASK "SHOULD I PROCEED?" — PROCEED. DO NOT WAIT FOR CONFIRMATION ON OBVIOUS NEXT STEPS.
4
+ IF BLOCKED, TRY AN ALTERNATIVE APPROACH. ONLY ASK WHEN TRULY AMBIGUOUS OR DESTRUCTIVE.
5
+ USE CODEX NATIVE SUBAGENTS FOR INDEPENDENT PARALLEL SUBTASKS WHEN THAT IMPROVES THROUGHPUT. THIS IS COMPLEMENTARY TO OMX TEAM MODE.
6
+ <!-- END AUTONOMY DIRECTIVE -->
7
+
1
8
  # oh-my-codex - Intelligent Multi-Agent Orchestration
2
9
 
3
10
  You are running with oh-my-codex (OMX), a coordination layer for Codex CLI.
@@ -27,6 +34,7 @@ Keep runtime marker contracts stable and non-destructive when overlays are appli
27
34
  - Prefer evidence over assumption; verify before claiming completion.
28
35
  - Use the lightest path that preserves quality: direct action, MCP, then delegation.
29
36
  - Check official documentation before implementing with unfamiliar SDKs, frameworks, or APIs.
37
+ - Within a single Codex session or team pane, use Codex native subagents for independent, bounded parallel subtasks when that improves throughput.
30
38
  <!-- OMX:GUIDANCE:OPERATING:START -->
31
39
  - Default to compact, information-dense responses; expand only when risk, ambiguity, or the user explicitly calls for detail.
32
40
  - Proceed automatically on clear, low-risk, reversible next steps; ask only for irreversible, side-effectful, or materially branching actions.
@@ -45,6 +53,75 @@ Keep runtime marker contracts stable and non-destructive when overlays are appli
45
53
  - Run lint, typecheck, tests, and static analysis after changes.
46
54
  - Final reports must include changed files, simplifications made, and remaining risks.
47
55
 
56
+ <lore_commit_protocol>
57
+ ## Lore Commit Protocol
58
+
59
+ Every commit message must follow the Lore protocol — structured decision records using native git trailers.
60
+ Commits are not just labels on diffs; they are the atomic unit of institutional knowledge.
61
+
62
+ ### Format
63
+
64
+ ```
65
+ <intent line: why the change was made, not what changed>
66
+
67
+ <body: narrative context — constraints, approach rationale>
68
+
69
+ Constraint: <external constraint that shaped the decision>
70
+ Rejected: <alternative considered> | <reason for rejection>
71
+ Confidence: <low|medium|high>
72
+ Scope-risk: <narrow|moderate|broad>
73
+ Directive: <forward-looking warning for future modifiers>
74
+ Tested: <what was verified (unit, integration, manual)>
75
+ Not-tested: <known gaps in verification>
76
+ ```
77
+
78
+ ### Rules
79
+
80
+ 1. **Intent line first.** The first line describes *why*, not *what*. The diff already shows what changed.
81
+ 2. **Trailers are optional but encouraged.** Use the ones that add value; skip the ones that don't.
82
+ 3. **`Rejected:` prevents re-exploration.** If you considered and rejected an alternative, record it so future agents don't waste cycles re-discovering the same dead end.
83
+ 4. **`Directive:` is a message to the future.** Use it for "do not change X without checking Y" warnings.
84
+ 5. **`Constraint:` captures external forces.** API limitations, policy requirements, upstream bugs — things not visible in the code.
85
+ 6. **`Not-tested:` is honest.** Declaring known verification gaps is more valuable than pretending everything is covered.
86
+ 7. **All trailers use git-native trailer format** (key-value after a blank line). No custom parsing required.
87
+
88
+ ### Example
89
+
90
+ ```
91
+ Prevent silent session drops during long-running operations
92
+
93
+ The auth service returns inconsistent status codes on token
94
+ expiry, so the interceptor catches all 4xx responses and
95
+ triggers an inline refresh.
96
+
97
+ Constraint: Auth service does not support token introspection
98
+ Constraint: Must not add latency to non-expired-token paths
99
+ Rejected: Extend token TTL to 24h | security policy violation
100
+ Rejected: Background refresh on timer | race condition with concurrent requests
101
+ Confidence: high
102
+ Scope-risk: narrow
103
+ Directive: Error handling is intentionally broad (all 4xx) — do not narrow without verifying upstream behavior
104
+ Tested: Single expired token refresh (unit)
105
+ Not-tested: Auth service cold-start > 500ms behavior
106
+ ```
107
+
108
+ ### Trailer Vocabulary
109
+
110
+ | Trailer | Purpose |
111
+ |---------|---------|
112
+ | `Constraint:` | External constraint that shaped the decision |
113
+ | `Rejected:` | Alternative considered and why it was rejected |
114
+ | `Confidence:` | Author's confidence level (low/medium/high) |
115
+ | `Scope-risk:` | How broadly the change affects the system (narrow/moderate/broad) |
116
+ | `Reversibility:` | How easily the change can be undone (clean/messy/irreversible) |
117
+ | `Directive:` | Forward-looking instruction for future modifiers |
118
+ | `Tested:` | What verification was performed |
119
+ | `Not-tested:` | Known gaps in verification |
120
+ | `Related:` | Links to related commits, issues, or decisions |
121
+
122
+ Teams may introduce domain-specific trailers without breaking compatibility.
123
+ </lore_commit_protocol>
124
+
48
125
  ---
49
126
 
50
127
  <delegation_rules>
@@ -114,22 +191,22 @@ The `deep-interview` skill is the Socratic deep interview workflow and includes
114
191
 
115
192
  | Keyword(s) | Skill | Action |
116
193
  |-------------|-------|--------|
117
- | "ralph", "don't stop", "must complete", "keep going" | `$ralph` | Read `~/.agents/skills/ralph/SKILL.md`, execute persistence loop |
118
- | "autopilot", "build me", "I want a" | `$autopilot` | Read `~/.agents/skills/autopilot/SKILL.md`, execute autonomous pipeline |
119
- | "ultrawork", "ulw", "parallel" | `$ultrawork` | Read `~/.agents/skills/ultrawork/SKILL.md`, execute parallel agents |
120
- | "ultraqa" | `$ultraqa` | Read `~/.agents/skills/ultraqa/SKILL.md`, run QA cycling workflow |
121
- | "analyze", "investigate" | `$analyze` | Read `~/.agents/skills/analyze/SKILL.md`, run deep analysis |
122
- | "plan this", "plan the", "let's plan" | `$plan` | Read `~/.agents/skills/plan/SKILL.md`, start planning workflow |
123
- | "interview", "deep interview", "gather requirements", "interview me", "don't assume", "ouroboros" | `$deep-interview` | Read `~/.agents/skills/deep-interview/SKILL.md`, run Ouroboros-inspired Socratic ambiguity-gated interview workflow |
124
- | "ralplan", "consensus plan" | `$ralplan` | Read `~/.agents/skills/ralplan/SKILL.md`, start consensus planning with RALPLAN-DR structured deliberation (short by default, `--deliberate` for high-risk) |
125
- | "team", "swarm", "coordinated team", "coordinated swarm" | `$team` | Read `~/.agents/skills/team/SKILL.md`, start team orchestration (swarm compatibility alias) |
126
- | "ecomode", "eco", "budget" | `$ecomode` | Read `~/.agents/skills/ecomode/SKILL.md`, enable token-efficient mode |
127
- | "cancel", "stop", "abort" | `$cancel` | Read `~/.agents/skills/cancel/SKILL.md`, cancel active modes |
128
- | "tdd", "test first" | `$tdd` | Read `~/.agents/skills/tdd/SKILL.md`, start test-driven workflow |
129
- | "fix build", "type errors" | `$build-fix` | Read `~/.agents/skills/build-fix/SKILL.md`, fix build errors |
130
- | "review code", "code review", "code-review" | `$code-review` | Read `~/.agents/skills/code-review/SKILL.md`, run code review |
131
- | "security review" | `$security-review` | Read `~/.agents/skills/security-review/SKILL.md`, run security audit |
132
- | "web-clone", "clone site", "clone website", "copy webpage" | `$web-clone` | Read `~/.agents/skills/web-clone/SKILL.md`, start website cloning pipeline |
194
+ | "ralph", "don't stop", "must complete", "keep going" | `$ralph` | Read `~/.codex/skills/ralph/SKILL.md`, execute persistence loop |
195
+ | "autopilot", "build me", "I want a" | `$autopilot` | Read `~/.codex/skills/autopilot/SKILL.md`, execute autonomous pipeline |
196
+ | "ultrawork", "ulw", "parallel" | `$ultrawork` | Read `~/.codex/skills/ultrawork/SKILL.md`, execute parallel agents |
197
+ | "ultraqa" | `$ultraqa` | Read `~/.codex/skills/ultraqa/SKILL.md`, run QA cycling workflow |
198
+ | "analyze", "investigate" | `$analyze` | Read `~/.codex/skills/analyze/SKILL.md`, run deep analysis |
199
+ | "plan this", "plan the", "let's plan" | `$plan` | Read `~/.codex/skills/plan/SKILL.md`, start planning workflow |
200
+ | "interview", "deep interview", "gather requirements", "interview me", "don't assume", "ouroboros" | `$deep-interview` | Read `~/.codex/skills/deep-interview/SKILL.md`, run Ouroboros-inspired Socratic ambiguity-gated interview workflow |
201
+ | "ralplan", "consensus plan" | `$ralplan` | Read `~/.codex/skills/ralplan/SKILL.md`, start consensus planning with RALPLAN-DR structured deliberation (short by default, `--deliberate` for high-risk) |
202
+ | "team", "swarm", "coordinated team", "coordinated swarm" | `$team` | Read `~/.codex/skills/team/SKILL.md`, start team orchestration (swarm compatibility alias) |
203
+ | "ecomode", "eco", "budget" | `$ecomode` | Read `~/.codex/skills/ecomode/SKILL.md`, enable token-efficient mode |
204
+ | "cancel", "stop", "abort" | `$cancel` | Read `~/.codex/skills/cancel/SKILL.md`, cancel active modes |
205
+ | "tdd", "test first" | `$tdd` | Read `~/.codex/skills/tdd/SKILL.md`, start test-driven workflow |
206
+ | "fix build", "type errors" | `$build-fix` | Read `~/.codex/skills/build-fix/SKILL.md`, fix build errors |
207
+ | "review code", "code review", "code-review" | `$code-review` | Read `~/.codex/skills/code-review/SKILL.md`, run code review |
208
+ | "security review" | `$security-review` | Read `~/.codex/skills/security-review/SKILL.md`, run security audit |
209
+ | "web-clone", "clone site", "clone website", "copy webpage" | `$web-clone` | Read `~/.codex/skills/web-clone/SKILL.md`, start website cloning pipeline |
133
210
 
134
211
  Detection rules:
135
212
  - Keywords are case-insensitive and match anywhere in the user message.
@@ -182,6 +259,10 @@ Normalize model flags to one canonical `--model <value>` entry.
182
259
  Do not guess frontier/spark defaults from model-family recency; use `OMX_DEFAULT_FRONTIER_MODEL` and `OMX_DEFAULT_SPARK_MODEL`.
183
260
  </team_model_resolution>
184
261
 
262
+ <!-- OMX:MODELS:START -->
263
+ <!-- Auto-generated by omx setup -->
264
+ <!-- OMX:MODELS:END -->
265
+
185
266
  ---
186
267
 
187
268
  <verification>