@kbediako/codex-orchestrator 0.1.20 → 0.1.21
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/README.md +3 -0
- package/dist/bin/codex-orchestrator.js +11 -1
- package/dist/orchestrator/src/cli/skills.js +30 -4
- package/docs/README.md +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -137,14 +137,17 @@ codex-orchestrator skills install
|
|
|
137
137
|
|
|
138
138
|
Options:
|
|
139
139
|
- `--force` overwrites existing files.
|
|
140
|
+
- `--only <skills>` installs only selected skills (comma-separated). Combine with `--force` to overwrite only those.
|
|
140
141
|
- `--codex-home <path>` targets a different Codex home directory.
|
|
141
142
|
|
|
142
143
|
Bundled skills (may vary by release):
|
|
144
|
+
- `collab-subagents-first`
|
|
143
145
|
- `delegation-usage`
|
|
144
146
|
- `standalone-review`
|
|
145
147
|
- `docs-first`
|
|
146
148
|
- `collab-evals`
|
|
147
149
|
- `collab-deliberation`
|
|
150
|
+
- `release`
|
|
148
151
|
- `delegate-early` (compatibility alias; use `delegation-usage`)
|
|
149
152
|
|
|
150
153
|
## DevTools readiness
|
|
@@ -605,7 +605,15 @@ async function handleSkills(rawArgs) {
|
|
|
605
605
|
const format = flags['format'] === 'json' ? 'json' : 'text';
|
|
606
606
|
const force = flags['force'] === true;
|
|
607
607
|
const codexHome = readStringFlag(flags, 'codex-home');
|
|
608
|
-
const
|
|
608
|
+
const onlyRaw = flags['only'];
|
|
609
|
+
let only;
|
|
610
|
+
if (onlyRaw !== undefined) {
|
|
611
|
+
if (typeof onlyRaw !== 'string') {
|
|
612
|
+
throw new Error('--only requires a comma-separated list of skill names.');
|
|
613
|
+
}
|
|
614
|
+
only = onlyRaw.split(',').map((entry) => entry.trim()).filter(Boolean);
|
|
615
|
+
}
|
|
616
|
+
const result = await installSkills({ force, codexHome, only });
|
|
609
617
|
if (format === 'json') {
|
|
610
618
|
console.log(JSON.stringify(result, null, 2));
|
|
611
619
|
}
|
|
@@ -946,6 +954,7 @@ Commands:
|
|
|
946
954
|
--format json Emit machine-readable output (dry-run only).
|
|
947
955
|
skills install Install bundled skills into $CODEX_HOME/skills.
|
|
948
956
|
--force Overwrite existing skill files.
|
|
957
|
+
--only <skills> Install only selected skills (comma-separated).
|
|
949
958
|
--codex-home <path> Override the target Codex home directory.
|
|
950
959
|
--format json Emit machine-readable output.
|
|
951
960
|
mcp serve [--repo <path>] [--dry-run] [-- <extra args>]
|
|
@@ -972,6 +981,7 @@ function printSkillsHelp() {
|
|
|
972
981
|
Commands:
|
|
973
982
|
install Install bundled skills into $CODEX_HOME/skills.
|
|
974
983
|
--force Overwrite existing skill files.
|
|
984
|
+
--only <skills> Install only selected skills (comma-separated).
|
|
975
985
|
--codex-home <path> Override the target Codex home directory.
|
|
976
986
|
--format json Emit machine-readable output.
|
|
977
987
|
`);
|
|
@@ -12,18 +12,28 @@ export async function installSkills(options = {}) {
|
|
|
12
12
|
const targetRoot = join(codexHome, 'skills');
|
|
13
13
|
const written = [];
|
|
14
14
|
const skipped = [];
|
|
15
|
-
const
|
|
16
|
-
|
|
15
|
+
const availableSkills = await listSkillNames(sourceRoot);
|
|
16
|
+
const selectedSkills = resolveSelectedSkills(availableSkills, options.only);
|
|
17
|
+
const copyOptions = {
|
|
17
18
|
force: options.force ?? false,
|
|
18
19
|
written,
|
|
19
20
|
skipped
|
|
20
|
-
}
|
|
21
|
+
};
|
|
22
|
+
if (selectedSkills.length === availableSkills.length) {
|
|
23
|
+
await copyDir(sourceRoot, targetRoot, copyOptions);
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
await mkdir(targetRoot, { recursive: true });
|
|
27
|
+
for (const skill of selectedSkills) {
|
|
28
|
+
await copyDir(join(sourceRoot, skill), join(targetRoot, skill), copyOptions);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
21
31
|
return {
|
|
22
32
|
written,
|
|
23
33
|
skipped,
|
|
24
34
|
sourceRoot,
|
|
25
35
|
targetRoot,
|
|
26
|
-
skills:
|
|
36
|
+
skills: selectedSkills
|
|
27
37
|
};
|
|
28
38
|
}
|
|
29
39
|
export function formatSkillsInstallSummary(result, cwd = process.cwd()) {
|
|
@@ -61,6 +71,22 @@ async function listSkillNames(sourceRoot) {
|
|
|
61
71
|
const entries = await readdir(sourceRoot, { withFileTypes: true });
|
|
62
72
|
return entries.filter((entry) => entry.isDirectory()).map((entry) => entry.name);
|
|
63
73
|
}
|
|
74
|
+
function resolveSelectedSkills(availableSkills, only) {
|
|
75
|
+
if (!only) {
|
|
76
|
+
return availableSkills;
|
|
77
|
+
}
|
|
78
|
+
const trimmed = only.map((entry) => entry.trim()).filter(Boolean);
|
|
79
|
+
if (trimmed.length === 0) {
|
|
80
|
+
throw new Error('No skills specified for --only.');
|
|
81
|
+
}
|
|
82
|
+
const requested = Array.from(new Set(trimmed));
|
|
83
|
+
const available = new Set(availableSkills);
|
|
84
|
+
const unknown = requested.filter((skill) => !available.has(skill));
|
|
85
|
+
if (unknown.length > 0) {
|
|
86
|
+
throw new Error(`Unknown skill(s): ${unknown.join(', ')}. Available skills: ${availableSkills.join(', ')}`);
|
|
87
|
+
}
|
|
88
|
+
return requested;
|
|
89
|
+
}
|
|
64
90
|
async function assertDirectory(path) {
|
|
65
91
|
const info = await stat(path).catch(() => null);
|
|
66
92
|
if (!info || !info.isDirectory()) {
|
package/docs/README.md
CHANGED
|
@@ -103,7 +103,7 @@ Use `npx @kbediako/codex-orchestrator resume --run <run-id>` to continue interru
|
|
|
103
103
|
- `codex-orchestrator init codex [--cwd <path>] [--force]`: copy starter templates into a repo (includes `mcp-client.json` and `AGENTS.md`; no overwrite unless `--force`).
|
|
104
104
|
- `codex-orchestrator doctor [--format json]`: check optional tooling dependencies and print install commands.
|
|
105
105
|
- `codex-orchestrator devtools setup [--yes]`: print DevTools MCP setup instructions (`--yes` applies `codex mcp add ...`).
|
|
106
|
-
- `codex-orchestrator skills install [--force] [--codex-home <path>]`: install bundled skills into `$CODEX_HOME/skills` (global skills remain the primary reference when installed).
|
|
106
|
+
- `codex-orchestrator skills install [--force] [--only <skills>] [--codex-home <path>]`: install bundled skills into `$CODEX_HOME/skills` (global skills remain the primary reference when installed).
|
|
107
107
|
- `codex-orchestrator self-check --format json`: emit a safe JSON health payload for smoke tests.
|
|
108
108
|
- `codex-orchestrator --version`: print the package version.
|
|
109
109
|
|