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.
- package/Cargo.lock +2 -2
- package/Cargo.toml +1 -1
- package/README.de.md +4 -4
- package/README.es.md +4 -4
- package/README.fr.md +4 -4
- package/README.it.md +4 -4
- package/README.ja.md +4 -4
- package/README.ko.md +4 -4
- package/README.md +13 -7
- package/README.pt.md +4 -4
- package/README.ru.md +4 -4
- package/README.tr.md +4 -4
- package/README.vi.md +4 -4
- package/README.zh-TW.md +4 -4
- package/README.zh.md +4 -4
- package/dist/agents/__tests__/native-config.test.js +37 -33
- package/dist/agents/__tests__/native-config.test.js.map +1 -1
- package/dist/agents/native-config.d.ts +18 -6
- package/dist/agents/native-config.d.ts.map +1 -1
- package/dist/agents/native-config.js +109 -92
- package/dist/agents/native-config.js.map +1 -1
- package/dist/autoresearch/__tests__/contracts.test.js +37 -1
- package/dist/autoresearch/__tests__/contracts.test.js.map +1 -1
- package/dist/autoresearch/__tests__/runtime-parity-extra.test.js +10 -10
- package/dist/autoresearch/__tests__/runtime-parity-extra.test.js.map +1 -1
- package/dist/autoresearch/__tests__/runtime.test.js +2 -2
- package/dist/autoresearch/__tests__/runtime.test.js.map +1 -1
- package/dist/autoresearch/contracts.d.ts.map +1 -1
- package/dist/autoresearch/contracts.js +17 -10
- package/dist/autoresearch/contracts.js.map +1 -1
- package/dist/autoresearch/runtime.d.ts.map +1 -1
- package/dist/autoresearch/runtime.js +84 -96
- package/dist/autoresearch/runtime.js.map +1 -1
- package/dist/cli/__tests__/agents-init.test.js +2 -0
- package/dist/cli/__tests__/agents-init.test.js.map +1 -1
- package/dist/cli/__tests__/agents.test.d.ts +2 -0
- package/dist/cli/__tests__/agents.test.d.ts.map +1 -0
- package/dist/cli/__tests__/agents.test.js +114 -0
- package/dist/cli/__tests__/agents.test.js.map +1 -0
- package/dist/cli/__tests__/autoresearch-guided.test.js +156 -1
- package/dist/cli/__tests__/autoresearch-guided.test.js.map +1 -1
- package/dist/cli/__tests__/autoresearch.test.js +483 -25
- package/dist/cli/__tests__/autoresearch.test.js.map +1 -1
- package/dist/cli/__tests__/cleanup.test.d.ts +2 -0
- package/dist/cli/__tests__/cleanup.test.d.ts.map +1 -0
- package/dist/cli/__tests__/cleanup.test.js +213 -0
- package/dist/cli/__tests__/cleanup.test.js.map +1 -0
- package/dist/cli/__tests__/error-handling-warnings.test.js +1 -1
- package/dist/cli/__tests__/error-handling-warnings.test.js.map +1 -1
- package/dist/cli/__tests__/explore.test.js +3 -3
- package/dist/cli/__tests__/explore.test.js.map +1 -1
- package/dist/cli/__tests__/index.test.js +530 -401
- package/dist/cli/__tests__/index.test.js.map +1 -1
- package/dist/cli/__tests__/native-assets.test.js +72 -9
- package/dist/cli/__tests__/native-assets.test.js.map +1 -1
- package/dist/cli/__tests__/ralph-deslop-contract.test.d.ts +2 -0
- package/dist/cli/__tests__/ralph-deslop-contract.test.d.ts.map +1 -0
- package/dist/cli/__tests__/ralph-deslop-contract.test.js +28 -0
- package/dist/cli/__tests__/ralph-deslop-contract.test.js.map +1 -0
- package/dist/cli/__tests__/ralph-prd-deep-interview.test.js +4 -0
- package/dist/cli/__tests__/ralph-prd-deep-interview.test.js.map +1 -1
- package/dist/cli/__tests__/ralphthon.test.d.ts +2 -0
- package/dist/cli/__tests__/ralphthon.test.d.ts.map +1 -0
- package/dist/cli/__tests__/ralphthon.test.js +28 -0
- package/dist/cli/__tests__/ralphthon.test.js.map +1 -0
- package/dist/cli/__tests__/setup-agents-overwrite.test.js +36 -1
- package/dist/cli/__tests__/setup-agents-overwrite.test.js.map +1 -1
- package/dist/cli/__tests__/setup-prompts-overwrite.test.js +35 -5
- package/dist/cli/__tests__/setup-prompts-overwrite.test.js.map +1 -1
- package/dist/cli/__tests__/setup-refresh.test.js +2 -2
- package/dist/cli/__tests__/setup-refresh.test.js.map +1 -1
- package/dist/cli/__tests__/setup-scope.test.js +131 -161
- package/dist/cli/__tests__/setup-scope.test.js.map +1 -1
- package/dist/cli/__tests__/setup-skills-overwrite.test.js +10 -10
- package/dist/cli/__tests__/setup-skills-overwrite.test.js.map +1 -1
- package/dist/cli/__tests__/sparkshell-cli.test.js +28 -2
- package/dist/cli/__tests__/sparkshell-cli.test.js.map +1 -1
- package/dist/cli/__tests__/team.test.js +1 -112
- package/dist/cli/__tests__/team.test.js.map +1 -1
- package/dist/cli/__tests__/uninstall.test.js +7 -20
- package/dist/cli/__tests__/uninstall.test.js.map +1 -1
- package/dist/cli/agents-init.d.ts.map +1 -1
- package/dist/cli/agents-init.js +99 -95
- package/dist/cli/agents-init.js.map +1 -1
- package/dist/cli/agents.d.ts +14 -0
- package/dist/cli/agents.d.ts.map +1 -0
- package/dist/cli/agents.js +261 -0
- package/dist/cli/agents.js.map +1 -0
- package/dist/cli/autoresearch-guided.d.ts +8 -0
- package/dist/cli/autoresearch-guided.d.ts.map +1 -1
- package/dist/cli/autoresearch-guided.js +104 -37
- package/dist/cli/autoresearch-guided.js.map +1 -1
- package/dist/cli/autoresearch-intake.d.ts +62 -0
- package/dist/cli/autoresearch-intake.d.ts.map +1 -0
- package/dist/cli/autoresearch-intake.js +336 -0
- package/dist/cli/autoresearch-intake.js.map +1 -0
- package/dist/cli/autoresearch.d.ts +4 -1
- package/dist/cli/autoresearch.d.ts.map +1 -1
- package/dist/cli/autoresearch.js +181 -32
- package/dist/cli/autoresearch.js.map +1 -1
- package/dist/cli/cleanup.d.ts +52 -0
- package/dist/cli/cleanup.d.ts.map +1 -0
- package/dist/cli/cleanup.js +302 -0
- package/dist/cli/cleanup.js.map +1 -0
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +9 -37
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/explore.d.ts.map +1 -1
- package/dist/cli/explore.js +5 -4
- package/dist/cli/explore.js.map +1 -1
- package/dist/cli/index.d.ts +5 -7
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +623 -451
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/native-assets.d.ts +15 -1
- package/dist/cli/native-assets.d.ts.map +1 -1
- package/dist/cli/native-assets.js +134 -32
- package/dist/cli/native-assets.js.map +1 -1
- package/dist/cli/ralph.d.ts.map +1 -1
- package/dist/cli/ralph.js +38 -1
- package/dist/cli/ralph.js.map +1 -1
- package/dist/cli/ralphthon.d.ts +14 -0
- package/dist/cli/ralphthon.d.ts.map +1 -0
- package/dist/cli/ralphthon.js +234 -0
- package/dist/cli/ralphthon.js.map +1 -0
- package/dist/cli/setup.d.ts +1 -4
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +111 -76
- package/dist/cli/setup.js.map +1 -1
- package/dist/cli/sparkshell.d.ts +3 -1
- package/dist/cli/sparkshell.d.ts.map +1 -1
- package/dist/cli/sparkshell.js +35 -16
- package/dist/cli/sparkshell.js.map +1 -1
- package/dist/cli/team.d.ts.map +1 -1
- package/dist/cli/team.js +1 -0
- package/dist/cli/team.js.map +1 -1
- package/dist/cli/uninstall.d.ts +1 -1
- package/dist/cli/uninstall.d.ts.map +1 -1
- package/dist/cli/uninstall.js +82 -64
- package/dist/cli/uninstall.js.map +1 -1
- package/dist/config/__tests__/generator-idempotent.test.js +10 -10
- package/dist/config/__tests__/generator-idempotent.test.js.map +1 -1
- package/dist/config/__tests__/generator-notify.test.js +15 -0
- package/dist/config/__tests__/generator-notify.test.js.map +1 -1
- package/dist/config/generator.d.ts +0 -1
- package/dist/config/generator.d.ts.map +1 -1
- package/dist/config/generator.js +53 -42
- package/dist/config/generator.js.map +1 -1
- package/dist/hooks/__tests__/agents-overlay.test.js +295 -230
- package/dist/hooks/__tests__/agents-overlay.test.js.map +1 -1
- package/dist/hooks/__tests__/anti-slop-workflow.test.js +3 -0
- package/dist/hooks/__tests__/anti-slop-workflow.test.js.map +1 -1
- package/dist/hooks/__tests__/deep-interview-contract.test.js +49 -24
- package/dist/hooks/__tests__/deep-interview-contract.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-fallback-watcher-ralphthon.test.d.ts +2 -0
- package/dist/hooks/__tests__/notify-fallback-watcher-ralphthon.test.d.ts.map +1 -0
- package/dist/hooks/__tests__/notify-fallback-watcher-ralphthon.test.js +193 -0
- package/dist/hooks/__tests__/notify-fallback-watcher-ralphthon.test.js.map +1 -0
- package/dist/hooks/agents-overlay.d.ts +1 -1
- package/dist/hooks/agents-overlay.d.ts.map +1 -1
- package/dist/hooks/agents-overlay.js +109 -106
- package/dist/hooks/agents-overlay.js.map +1 -1
- package/dist/hud/constants.d.ts +1 -1
- package/dist/hud/constants.js +1 -1
- package/dist/modes/base.d.ts +1 -1
- package/dist/modes/base.d.ts.map +1 -1
- package/dist/modes/base.js +1 -1
- package/dist/modes/base.js.map +1 -1
- package/dist/notifications/__tests__/formatter.test.js +36 -2
- package/dist/notifications/__tests__/formatter.test.js.map +1 -1
- package/dist/notifications/formatter.d.ts +3 -2
- package/dist/notifications/formatter.d.ts.map +1 -1
- package/dist/notifications/formatter.js +33 -9
- package/dist/notifications/formatter.js.map +1 -1
- package/dist/ralphthon/__tests__/bootstrap.test.d.ts +2 -0
- package/dist/ralphthon/__tests__/bootstrap.test.d.ts.map +1 -0
- package/dist/ralphthon/__tests__/bootstrap.test.js +23 -0
- package/dist/ralphthon/__tests__/bootstrap.test.js.map +1 -0
- package/dist/ralphthon/__tests__/orchestrator.test.d.ts +2 -0
- package/dist/ralphthon/__tests__/orchestrator.test.d.ts.map +1 -0
- package/dist/ralphthon/__tests__/orchestrator.test.js +309 -0
- package/dist/ralphthon/__tests__/orchestrator.test.js.map +1 -0
- package/dist/ralphthon/__tests__/prd.test.d.ts +2 -0
- package/dist/ralphthon/__tests__/prd.test.d.ts.map +1 -0
- package/dist/ralphthon/__tests__/prd.test.js +133 -0
- package/dist/ralphthon/__tests__/prd.test.js.map +1 -0
- package/dist/ralphthon/bootstrap.d.ts +3 -0
- package/dist/ralphthon/bootstrap.d.ts.map +1 -0
- package/dist/ralphthon/bootstrap.js +84 -0
- package/dist/ralphthon/bootstrap.js.map +1 -0
- package/dist/ralphthon/orchestrator.d.ts +50 -0
- package/dist/ralphthon/orchestrator.d.ts.map +1 -0
- package/dist/ralphthon/orchestrator.js +362 -0
- package/dist/ralphthon/orchestrator.js.map +1 -0
- package/dist/ralphthon/prd.d.ts +191 -0
- package/dist/ralphthon/prd.d.ts.map +1 -0
- package/dist/ralphthon/prd.js +359 -0
- package/dist/ralphthon/prd.js.map +1 -0
- package/dist/ralphthon/runtime.d.ts +31 -0
- package/dist/ralphthon/runtime.d.ts.map +1 -0
- package/dist/ralphthon/runtime.js +108 -0
- package/dist/ralphthon/runtime.js.map +1 -0
- package/dist/ralphthon/tmux.d.ts +3 -0
- package/dist/ralphthon/tmux.d.ts.map +1 -0
- package/dist/ralphthon/tmux.js +39 -0
- package/dist/ralphthon/tmux.js.map +1 -0
- package/dist/subagents/__tests__/tracker.test.d.ts +2 -0
- package/dist/subagents/__tests__/tracker.test.d.ts.map +1 -0
- package/dist/subagents/__tests__/tracker.test.js +47 -0
- package/dist/subagents/__tests__/tracker.test.js.map +1 -0
- package/dist/subagents/tracker.d.ts +52 -0
- package/dist/subagents/tracker.d.ts.map +1 -0
- package/dist/subagents/tracker.js +175 -0
- package/dist/subagents/tracker.js.map +1 -0
- package/dist/team/__tests__/runtime.test.js +2 -2
- package/dist/team/__tests__/runtime.test.js.map +1 -1
- package/dist/team/__tests__/tmux-session.test.js +34 -0
- package/dist/team/__tests__/tmux-session.test.js.map +1 -1
- package/dist/team/__tests__/worker-bootstrap.test.js +189 -163
- package/dist/team/__tests__/worker-bootstrap.test.js.map +1 -1
- package/dist/team/__tests__/worktree.test.js +1 -1
- package/dist/team/__tests__/worktree.test.js.map +1 -1
- package/dist/team/tmux-session.d.ts +4 -4
- package/dist/team/tmux-session.d.ts.map +1 -1
- package/dist/team/tmux-session.js +48 -15
- package/dist/team/tmux-session.js.map +1 -1
- package/dist/team/worker-bootstrap.d.ts +1 -1
- package/dist/team/worker-bootstrap.d.ts.map +1 -1
- package/dist/team/worker-bootstrap.js +58 -63
- package/dist/team/worker-bootstrap.js.map +1 -1
- package/dist/team/worktree.js +1 -1
- package/dist/team/worktree.js.map +1 -1
- package/dist/utils/__tests__/agents-md.test.d.ts +2 -0
- package/dist/utils/__tests__/agents-md.test.d.ts.map +1 -0
- package/dist/utils/__tests__/agents-md.test.js +32 -0
- package/dist/utils/__tests__/agents-md.test.js.map +1 -0
- package/dist/utils/__tests__/agents-model-table.test.d.ts +2 -0
- package/dist/utils/__tests__/agents-model-table.test.d.ts.map +1 -0
- package/dist/utils/__tests__/agents-model-table.test.js +84 -0
- package/dist/utils/__tests__/agents-model-table.test.js.map +1 -0
- package/dist/utils/__tests__/paths.test.js +78 -83
- package/dist/utils/__tests__/paths.test.js.map +1 -1
- package/dist/utils/agents-md.d.ts.map +1 -1
- package/dist/utils/agents-md.js +10 -0
- package/dist/utils/agents-md.js.map +1 -1
- package/dist/utils/agents-model-table.d.ts +16 -0
- package/dist/utils/agents-model-table.d.ts.map +1 -0
- package/dist/utils/agents-model-table.js +83 -0
- package/dist/utils/agents-model-table.js.map +1 -0
- package/dist/utils/paths.d.ts +6 -6
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js +31 -31
- package/dist/utils/paths.js.map +1 -1
- package/dist/verification/__tests__/explore-harness-release-workflow.test.js +21 -3
- package/dist/verification/__tests__/explore-harness-release-workflow.test.js.map +1 -1
- package/dist/verification/__tests__/native-release-manifest.test.d.ts +2 -0
- package/dist/verification/__tests__/native-release-manifest.test.d.ts.map +1 -0
- package/dist/verification/__tests__/native-release-manifest.test.js +80 -0
- package/dist/verification/__tests__/native-release-manifest.test.js.map +1 -0
- package/package.json +1 -1
- package/prompts/executor.md +15 -0
- package/scripts/__tests__/smoke-packed-install.test.mjs +137 -8
- package/scripts/eval-adaptive-sort-optimization.py +24 -0
- package/scripts/eval-in-action-cat-shellout-demo.js +31 -0
- package/scripts/eval-ml-kaggle-model-optimization.py +29 -0
- package/scripts/eval-noisy-bayesopt-highdim.py +44 -0
- package/scripts/eval-noisy-latent-subspace-discovery.py +44 -0
- package/scripts/generate-native-release-manifest.mjs +14 -3
- package/scripts/notify-fallback-watcher.js +308 -6
- package/scripts/notify-hook.js +20 -0
- package/scripts/run-autoresearch-showcase.sh +75 -0
- package/scripts/smoke-packed-install.mjs +142 -10
- package/skills/ai-slop-cleaner/SKILL.md +7 -0
- package/skills/deep-interview/SKILL.md +30 -1
- package/skills/omx-setup/SKILL.md +2 -2
- package/skills/ralph/SKILL.md +15 -0
- package/skills/skill/SKILL.md +32 -32
- package/skills/team/SKILL.md +6 -0
- package/skills/worker/SKILL.md +2 -2
- package/templates/AGENTS.md +97 -16
- package/dist/cli/__tests__/runtime-native-resolution.test.d.ts +0 -2
- package/dist/cli/__tests__/runtime-native-resolution.test.d.ts.map +0 -1
- package/dist/cli/__tests__/runtime-native-resolution.test.js.map +0 -1
- package/dist/cli/__tests__/runtime-native.test.d.ts +0 -2
- package/dist/cli/__tests__/runtime-native.test.d.ts.map +0 -1
- package/dist/cli/__tests__/runtime-native.test.js.map +0 -1
- package/dist/cli/runtime-native.d.ts +0 -23
- package/dist/cli/runtime-native.d.ts.map +0 -1
- package/dist/cli/runtime-native.js +0 -86
- package/dist/cli/runtime-native.js.map +0 -1
- package/dist/mcp/__tests__/runtime-run-native-cutover.test.d.ts +0 -2
- package/dist/mcp/__tests__/runtime-run-native-cutover.test.d.ts.map +0 -1
- 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 {
|
|
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`, `~/.
|
|
46
|
-
- `project`: local directories (`./.codex`, `./.
|
|
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.
|
package/skills/ralph/SKILL.md
CHANGED
|
@@ -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)
|
package/skills/skill/SKILL.md
CHANGED
|
@@ -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 `~/.
|
|
19
|
-
2. Scan project skills at `.
|
|
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 (~/.
|
|
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 (.
|
|
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` → `~/.
|
|
55
|
-
- `project` → `.
|
|
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 ~/.
|
|
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
|
-
- `~/.
|
|
121
|
-
- `.
|
|
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., `~/.
|
|
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 (~/.
|
|
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 (~/.
|
|
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/.
|
|
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: ~/.
|
|
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: `~/.
|
|
294
|
-
- Project 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 .
|
|
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/.
|
|
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=".
|
|
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 (~/.
|
|
388
|
-
if [ -d "$HOME/.
|
|
389
|
-
USER_COUNT=$(find "$HOME/.
|
|
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/.
|
|
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 (.
|
|
412
|
-
if [ -d ".
|
|
413
|
-
PROJECT_COUNT=$(find ".
|
|
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 ".
|
|
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** (~/.
|
|
471
|
-
- **Project-level** (.
|
|
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 (.
|
|
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: ~/.
|
|
764
|
-
✓ Project skills directory exists: .
|
|
763
|
+
✓ User skills directory exists: ~/.codex/skills/
|
|
764
|
+
✓ Project skills directory exists: .codex/skills/
|
|
765
765
|
|
|
766
766
|
Scanning for skills...
|
|
767
767
|
|
package/skills/team/SKILL.md
CHANGED
|
@@ -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
|
package/skills/worker/SKILL.md
CHANGED
|
@@ -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. `~/.
|
|
24
|
-
3. `<leader_cwd>/.
|
|
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)
|