oh-my-codex 0.10.2 → 0.10.4

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 (293) hide show
  1. package/Cargo.lock +2 -2
  2. package/Cargo.toml +1 -1
  3. package/README.de.md +4 -4
  4. package/README.es.md +4 -4
  5. package/README.fr.md +4 -4
  6. package/README.it.md +4 -4
  7. package/README.ja.md +4 -4
  8. package/README.ko.md +4 -4
  9. package/README.md +13 -7
  10. package/README.pt.md +4 -4
  11. package/README.ru.md +4 -4
  12. package/README.tr.md +4 -4
  13. package/README.vi.md +4 -4
  14. package/README.zh-TW.md +4 -4
  15. package/README.zh.md +4 -4
  16. package/dist/agents/__tests__/native-config.test.js +37 -33
  17. package/dist/agents/__tests__/native-config.test.js.map +1 -1
  18. package/dist/agents/native-config.d.ts +18 -6
  19. package/dist/agents/native-config.d.ts.map +1 -1
  20. package/dist/agents/native-config.js +109 -92
  21. package/dist/agents/native-config.js.map +1 -1
  22. package/dist/autoresearch/__tests__/contracts.test.js +37 -1
  23. package/dist/autoresearch/__tests__/contracts.test.js.map +1 -1
  24. package/dist/autoresearch/__tests__/runtime-parity-extra.test.js +10 -10
  25. package/dist/autoresearch/__tests__/runtime-parity-extra.test.js.map +1 -1
  26. package/dist/autoresearch/__tests__/runtime.test.js +2 -2
  27. package/dist/autoresearch/__tests__/runtime.test.js.map +1 -1
  28. package/dist/autoresearch/contracts.d.ts.map +1 -1
  29. package/dist/autoresearch/contracts.js +17 -10
  30. package/dist/autoresearch/contracts.js.map +1 -1
  31. package/dist/autoresearch/runtime.d.ts.map +1 -1
  32. package/dist/autoresearch/runtime.js +84 -96
  33. package/dist/autoresearch/runtime.js.map +1 -1
  34. package/dist/cli/__tests__/agents-init.test.js +2 -0
  35. package/dist/cli/__tests__/agents-init.test.js.map +1 -1
  36. package/dist/cli/__tests__/agents.test.d.ts +2 -0
  37. package/dist/cli/__tests__/agents.test.d.ts.map +1 -0
  38. package/dist/cli/__tests__/agents.test.js +114 -0
  39. package/dist/cli/__tests__/agents.test.js.map +1 -0
  40. package/dist/cli/__tests__/autoresearch-guided.test.js +156 -1
  41. package/dist/cli/__tests__/autoresearch-guided.test.js.map +1 -1
  42. package/dist/cli/__tests__/autoresearch.test.js +483 -25
  43. package/dist/cli/__tests__/autoresearch.test.js.map +1 -1
  44. package/dist/cli/__tests__/cleanup.test.d.ts +2 -0
  45. package/dist/cli/__tests__/cleanup.test.d.ts.map +1 -0
  46. package/dist/cli/__tests__/cleanup.test.js +213 -0
  47. package/dist/cli/__tests__/cleanup.test.js.map +1 -0
  48. package/dist/cli/__tests__/error-handling-warnings.test.js +1 -1
  49. package/dist/cli/__tests__/error-handling-warnings.test.js.map +1 -1
  50. package/dist/cli/__tests__/explore.test.js +3 -3
  51. package/dist/cli/__tests__/explore.test.js.map +1 -1
  52. package/dist/cli/__tests__/index.test.js +530 -401
  53. package/dist/cli/__tests__/index.test.js.map +1 -1
  54. package/dist/cli/__tests__/native-assets.test.js +72 -9
  55. package/dist/cli/__tests__/native-assets.test.js.map +1 -1
  56. package/dist/cli/__tests__/ralph-deslop-contract.test.d.ts +2 -0
  57. package/dist/cli/__tests__/ralph-deslop-contract.test.d.ts.map +1 -0
  58. package/dist/cli/__tests__/ralph-deslop-contract.test.js +28 -0
  59. package/dist/cli/__tests__/ralph-deslop-contract.test.js.map +1 -0
  60. package/dist/cli/__tests__/ralph-prd-deep-interview.test.js +4 -0
  61. package/dist/cli/__tests__/ralph-prd-deep-interview.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 +62 -0
  94. package/dist/cli/autoresearch-intake.d.ts.map +1 -0
  95. package/dist/cli/autoresearch-intake.js +336 -0
  96. package/dist/cli/autoresearch-intake.js.map +1 -0
  97. package/dist/cli/autoresearch.d.ts +4 -1
  98. package/dist/cli/autoresearch.d.ts.map +1 -1
  99. package/dist/cli/autoresearch.js +181 -32
  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 +623 -451
  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__/anti-slop-workflow.test.js +3 -0
  152. package/dist/hooks/__tests__/anti-slop-workflow.test.js.map +1 -1
  153. package/dist/hooks/__tests__/deep-interview-contract.test.js +49 -24
  154. package/dist/hooks/__tests__/deep-interview-contract.test.js.map +1 -1
  155. package/dist/hooks/__tests__/notify-fallback-watcher-ralphthon.test.d.ts +2 -0
  156. package/dist/hooks/__tests__/notify-fallback-watcher-ralphthon.test.d.ts.map +1 -0
  157. package/dist/hooks/__tests__/notify-fallback-watcher-ralphthon.test.js +193 -0
  158. package/dist/hooks/__tests__/notify-fallback-watcher-ralphthon.test.js.map +1 -0
  159. package/dist/hooks/agents-overlay.d.ts +1 -1
  160. package/dist/hooks/agents-overlay.d.ts.map +1 -1
  161. package/dist/hooks/agents-overlay.js +109 -106
  162. package/dist/hooks/agents-overlay.js.map +1 -1
  163. package/dist/hud/constants.d.ts +1 -1
  164. package/dist/hud/constants.js +1 -1
  165. package/dist/modes/base.d.ts +1 -1
  166. package/dist/modes/base.d.ts.map +1 -1
  167. package/dist/modes/base.js +1 -1
  168. package/dist/modes/base.js.map +1 -1
  169. package/dist/notifications/__tests__/formatter.test.js +36 -2
  170. package/dist/notifications/__tests__/formatter.test.js.map +1 -1
  171. package/dist/notifications/formatter.d.ts +3 -2
  172. package/dist/notifications/formatter.d.ts.map +1 -1
  173. package/dist/notifications/formatter.js +33 -9
  174. package/dist/notifications/formatter.js.map +1 -1
  175. package/dist/ralphthon/__tests__/bootstrap.test.d.ts +2 -0
  176. package/dist/ralphthon/__tests__/bootstrap.test.d.ts.map +1 -0
  177. package/dist/ralphthon/__tests__/bootstrap.test.js +23 -0
  178. package/dist/ralphthon/__tests__/bootstrap.test.js.map +1 -0
  179. package/dist/ralphthon/__tests__/orchestrator.test.d.ts +2 -0
  180. package/dist/ralphthon/__tests__/orchestrator.test.d.ts.map +1 -0
  181. package/dist/ralphthon/__tests__/orchestrator.test.js +309 -0
  182. package/dist/ralphthon/__tests__/orchestrator.test.js.map +1 -0
  183. package/dist/ralphthon/__tests__/prd.test.d.ts +2 -0
  184. package/dist/ralphthon/__tests__/prd.test.d.ts.map +1 -0
  185. package/dist/ralphthon/__tests__/prd.test.js +133 -0
  186. package/dist/ralphthon/__tests__/prd.test.js.map +1 -0
  187. package/dist/ralphthon/bootstrap.d.ts +3 -0
  188. package/dist/ralphthon/bootstrap.d.ts.map +1 -0
  189. package/dist/ralphthon/bootstrap.js +84 -0
  190. package/dist/ralphthon/bootstrap.js.map +1 -0
  191. package/dist/ralphthon/orchestrator.d.ts +50 -0
  192. package/dist/ralphthon/orchestrator.d.ts.map +1 -0
  193. package/dist/ralphthon/orchestrator.js +362 -0
  194. package/dist/ralphthon/orchestrator.js.map +1 -0
  195. package/dist/ralphthon/prd.d.ts +191 -0
  196. package/dist/ralphthon/prd.d.ts.map +1 -0
  197. package/dist/ralphthon/prd.js +359 -0
  198. package/dist/ralphthon/prd.js.map +1 -0
  199. package/dist/ralphthon/runtime.d.ts +31 -0
  200. package/dist/ralphthon/runtime.d.ts.map +1 -0
  201. package/dist/ralphthon/runtime.js +108 -0
  202. package/dist/ralphthon/runtime.js.map +1 -0
  203. package/dist/ralphthon/tmux.d.ts +3 -0
  204. package/dist/ralphthon/tmux.d.ts.map +1 -0
  205. package/dist/ralphthon/tmux.js +39 -0
  206. package/dist/ralphthon/tmux.js.map +1 -0
  207. package/dist/subagents/__tests__/tracker.test.d.ts +2 -0
  208. package/dist/subagents/__tests__/tracker.test.d.ts.map +1 -0
  209. package/dist/subagents/__tests__/tracker.test.js +47 -0
  210. package/dist/subagents/__tests__/tracker.test.js.map +1 -0
  211. package/dist/subagents/tracker.d.ts +52 -0
  212. package/dist/subagents/tracker.d.ts.map +1 -0
  213. package/dist/subagents/tracker.js +175 -0
  214. package/dist/subagents/tracker.js.map +1 -0
  215. package/dist/team/__tests__/runtime.test.js +2 -2
  216. package/dist/team/__tests__/runtime.test.js.map +1 -1
  217. package/dist/team/__tests__/tmux-session.test.js +34 -0
  218. package/dist/team/__tests__/tmux-session.test.js.map +1 -1
  219. package/dist/team/__tests__/worker-bootstrap.test.js +189 -163
  220. package/dist/team/__tests__/worker-bootstrap.test.js.map +1 -1
  221. package/dist/team/__tests__/worktree.test.js +1 -1
  222. package/dist/team/__tests__/worktree.test.js.map +1 -1
  223. package/dist/team/tmux-session.d.ts +4 -4
  224. package/dist/team/tmux-session.d.ts.map +1 -1
  225. package/dist/team/tmux-session.js +48 -15
  226. package/dist/team/tmux-session.js.map +1 -1
  227. package/dist/team/worker-bootstrap.d.ts +1 -1
  228. package/dist/team/worker-bootstrap.d.ts.map +1 -1
  229. package/dist/team/worker-bootstrap.js +58 -63
  230. package/dist/team/worker-bootstrap.js.map +1 -1
  231. package/dist/team/worktree.js +1 -1
  232. package/dist/team/worktree.js.map +1 -1
  233. package/dist/utils/__tests__/agents-md.test.d.ts +2 -0
  234. package/dist/utils/__tests__/agents-md.test.d.ts.map +1 -0
  235. package/dist/utils/__tests__/agents-md.test.js +32 -0
  236. package/dist/utils/__tests__/agents-md.test.js.map +1 -0
  237. package/dist/utils/__tests__/agents-model-table.test.d.ts +2 -0
  238. package/dist/utils/__tests__/agents-model-table.test.d.ts.map +1 -0
  239. package/dist/utils/__tests__/agents-model-table.test.js +84 -0
  240. package/dist/utils/__tests__/agents-model-table.test.js.map +1 -0
  241. package/dist/utils/__tests__/paths.test.js +78 -83
  242. package/dist/utils/__tests__/paths.test.js.map +1 -1
  243. package/dist/utils/agents-md.d.ts.map +1 -1
  244. package/dist/utils/agents-md.js +10 -0
  245. package/dist/utils/agents-md.js.map +1 -1
  246. package/dist/utils/agents-model-table.d.ts +16 -0
  247. package/dist/utils/agents-model-table.d.ts.map +1 -0
  248. package/dist/utils/agents-model-table.js +83 -0
  249. package/dist/utils/agents-model-table.js.map +1 -0
  250. package/dist/utils/paths.d.ts +6 -6
  251. package/dist/utils/paths.d.ts.map +1 -1
  252. package/dist/utils/paths.js +31 -31
  253. package/dist/utils/paths.js.map +1 -1
  254. package/dist/verification/__tests__/explore-harness-release-workflow.test.js +21 -3
  255. package/dist/verification/__tests__/explore-harness-release-workflow.test.js.map +1 -1
  256. package/dist/verification/__tests__/native-release-manifest.test.d.ts +2 -0
  257. package/dist/verification/__tests__/native-release-manifest.test.d.ts.map +1 -0
  258. package/dist/verification/__tests__/native-release-manifest.test.js +80 -0
  259. package/dist/verification/__tests__/native-release-manifest.test.js.map +1 -0
  260. package/package.json +1 -1
  261. package/prompts/executor.md +15 -0
  262. package/scripts/__tests__/smoke-packed-install.test.mjs +137 -8
  263. package/scripts/eval-adaptive-sort-optimization.py +24 -0
  264. package/scripts/eval-in-action-cat-shellout-demo.js +31 -0
  265. package/scripts/eval-ml-kaggle-model-optimization.py +29 -0
  266. package/scripts/eval-noisy-bayesopt-highdim.py +44 -0
  267. package/scripts/eval-noisy-latent-subspace-discovery.py +44 -0
  268. package/scripts/generate-native-release-manifest.mjs +14 -3
  269. package/scripts/notify-fallback-watcher.js +308 -6
  270. package/scripts/notify-hook.js +20 -0
  271. package/scripts/run-autoresearch-showcase.sh +75 -0
  272. package/scripts/smoke-packed-install.mjs +142 -10
  273. package/skills/ai-slop-cleaner/SKILL.md +7 -0
  274. package/skills/deep-interview/SKILL.md +30 -1
  275. package/skills/omx-setup/SKILL.md +2 -2
  276. package/skills/ralph/SKILL.md +15 -0
  277. package/skills/skill/SKILL.md +32 -32
  278. package/skills/team/SKILL.md +6 -0
  279. package/skills/worker/SKILL.md +2 -2
  280. package/templates/AGENTS.md +97 -16
  281. package/dist/cli/__tests__/runtime-native-resolution.test.d.ts +0 -2
  282. package/dist/cli/__tests__/runtime-native-resolution.test.d.ts.map +0 -1
  283. package/dist/cli/__tests__/runtime-native-resolution.test.js.map +0 -1
  284. package/dist/cli/__tests__/runtime-native.test.d.ts +0 -2
  285. package/dist/cli/__tests__/runtime-native.test.d.ts.map +0 -1
  286. package/dist/cli/__tests__/runtime-native.test.js.map +0 -1
  287. package/dist/cli/runtime-native.d.ts +0 -23
  288. package/dist/cli/runtime-native.d.ts.map +0 -1
  289. package/dist/cli/runtime-native.js +0 -86
  290. package/dist/cli/runtime-native.js.map +0 -1
  291. package/dist/mcp/__tests__/runtime-run-native-cutover.test.d.ts +0 -2
  292. package/dist/mcp/__tests__/runtime-run-native-cutover.test.d.ts.map +0 -1
  293. package/dist/mcp/__tests__/runtime-run-native-cutover.test.js.map +0 -1
@@ -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
  }
@@ -22,6 +22,12 @@ Use this skill when:
22
22
  - Keep using inspection, tests, diagnostics, and verification until the cleanup is grounded.
23
23
  - Proceed automatically through clear, reversible cleanup steps; ask only when a choice materially changes scope or behavior.
24
24
 
25
+ ## Scoped File Lists and Ralph Workflow
26
+
27
+ - This skill can accept a **file list scope** instead of a whole feature area.
28
+ - When the caller provides a changed-files list (for example, Ralph session-owned edits), keep the cleanup strictly bounded to those files.
29
+ - In the **Ralph workflow**, the mandatory deslop pass should run this skill on Ralph's changed files only, in standard mode unless the caller explicitly requests otherwise.
30
+
25
31
  ## Procedure
26
32
 
27
33
  1. **Lock behavior with regression tests first**
@@ -32,6 +38,7 @@ Use this skill when:
32
38
  2. **Create a cleanup plan before code**
33
39
  - List the specific smells to remove
34
40
  - Bound the pass to the requested files/scope
41
+ - If a file list scope is provided, keep the pass restricted to that changed-files list
35
42
  - Order fixes from safest/highest-signal to riskiest
36
43
  - Do not start coding until the cleanup plan is explicit
37
44
 
@@ -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.
@@ -78,6 +78,15 @@ Complex tasks often fail silently: partial implementations get declared "done",
78
78
  - Standard changes: STANDARD tier (architect role)
79
79
  - >20 files or security/architectural changes: THOROUGH tier (architect role)
80
80
  - Ralph floor: always at least STANDARD, even for small changes
81
+ 7.5 **Mandatory Deslop Pass**:
82
+ - After Step 7 passes, run `oh-my-codex:ai-slop-cleaner` on **all files changed during the Ralph session**.
83
+ - Scope the cleaner to **changed files only**; do not widen the pass beyond Ralph-owned edits.
84
+ - Run the cleaner in **standard mode** (not `--review`).
85
+ - If the prompt contains `--no-deslop`, skip Step 7.5 entirely and proceed with the most recent successful verification evidence.
86
+ 7.6 **Regression Re-verification**:
87
+ - After the deslop pass, re-run all tests/build/lint and read the output to confirm they still pass.
88
+ - If post-deslop regression fails, roll back cleaner changes or fix and retry. Then rerun Step 7.5 and Step 7.6 until the regression is green.
89
+ - Do not proceed to completion until post-deslop regression is green (unless `--no-deslop` explicitly skipped the deslop pass).
81
90
  8. **On approval**: Run `/cancel` to cleanly exit and clean up all state files
82
91
  9. **On rejection**: Fix the issues raised, then re-verify at the same tier
83
92
  </Steps>
@@ -170,6 +179,8 @@ Why bad: These are independent tasks that should run in parallel, not sequential
170
179
  - [ ] Fresh build output shows success
171
180
  - [ ] lsp_diagnostics shows 0 errors on affected files
172
181
  - [ ] Architect verification passed (STANDARD tier minimum)
182
+ - [ ] ai-slop-cleaner pass completed on changed files (or --no-deslop specified)
183
+ - [ ] Post-deslop regression tests pass
173
184
  - [ ] `/cancel` run for clean state cleanup
174
185
  </Final_Checklist>
175
186
 
@@ -181,6 +192,10 @@ When the user provides the `--prd` flag, initialize a Product Requirements Docum
181
192
  ### Detecting PRD Mode
182
193
  Check if `{{PROMPT}}` contains `--prd` or `--PRD`.
183
194
 
195
+ ### Detecting `--no-deslop`
196
+ Check if `{{PROMPT}}` contains `--no-deslop`.
197
+ If `--no-deslop` is present, skip the deslop pass entirely after Step 7 and continue using the latest successful pre-deslop verification evidence.
198
+
184
199
  ### Visual Reference Flags (Optional)
185
200
  Ralph execution supports visual reference flags for screenshot tasks:
186
201
  - Repeatable image inputs: `-i <image-path>` (can be used multiple times)
@@ -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)