@a5c-ai/babysitter-codex 0.1.6-staging.2dca8387
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/.codex/AGENTS.md +53 -0
- package/.codex/command-catalog.json +130 -0
- package/.codex/config.toml +24 -0
- package/.codex/hooks/babysitter-session-start.sh +15 -0
- package/.codex/hooks/babysitter-stop-hook.sh +15 -0
- package/.codex/hooks/user-prompt-submit.sh +15 -0
- package/.codex/hooks.json +37 -0
- package/.codex/plugin.json +132 -0
- package/.codex/skills/babysitter/assimilate/SKILL.md +58 -0
- package/.codex/skills/babysitter/call/SKILL.md +590 -0
- package/.codex/skills/babysitter/doctor/SKILL.md +89 -0
- package/.codex/skills/babysitter/forever/SKILL.md +45 -0
- package/.codex/skills/babysitter/help/SKILL.md +49 -0
- package/.codex/skills/babysitter/issue/SKILL.md +36 -0
- package/.codex/skills/babysitter/model/SKILL.md +31 -0
- package/.codex/skills/babysitter/observe/SKILL.md +38 -0
- package/.codex/skills/babysitter/plan/SKILL.md +44 -0
- package/.codex/skills/babysitter/project-install/SKILL.md +65 -0
- package/.codex/skills/babysitter/resume/SKILL.md +30 -0
- package/.codex/skills/babysitter/retrospect/SKILL.md +43 -0
- package/.codex/skills/babysitter/team-install/SKILL.md +31 -0
- package/.codex/skills/babysitter/user-install/SKILL.md +53 -0
- package/.codex/skills/babysitter/yolo/SKILL.md +48 -0
- package/AGENTS.md +91 -0
- package/CHANGELOG.md +162 -0
- package/README.md +146 -0
- package/SKILL.md +89 -0
- package/agents/openai.yaml +4 -0
- package/babysitter.lock.json +18 -0
- package/bin/postinstall.js +225 -0
- package/bin/uninstall.js +37 -0
- package/commands/README.md +23 -0
- package/commands/assimilate.md +27 -0
- package/commands/call.md +30 -0
- package/commands/doctor.md +27 -0
- package/commands/forever.md +27 -0
- package/commands/help.md +28 -0
- package/commands/issue.md +27 -0
- package/commands/model.md +27 -0
- package/commands/observe.md +27 -0
- package/commands/plan.md +27 -0
- package/commands/project-install.md +31 -0
- package/commands/resume.md +29 -0
- package/commands/retrospect.md +27 -0
- package/commands/team-install.md +29 -0
- package/commands/user-install.md +27 -0
- package/commands/yolo.md +28 -0
- package/package.json +50 -0
- package/scripts/team-install.js +257 -0
- package/test/integration.test.js +69 -0
- package/test/packaged-install.test.js +191 -0
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* postinstall.js — Copies babysitter-codex skill files to ~/.codex/skills/
|
|
6
|
+
* so Codex CLI discovers the skill globally for all projects.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
const fs = require('fs');
|
|
10
|
+
const path = require('path');
|
|
11
|
+
const os = require('os');
|
|
12
|
+
const { spawnSync } = require('child_process');
|
|
13
|
+
|
|
14
|
+
const SKILL_NAME = 'babysitter-codex';
|
|
15
|
+
const PACKAGE_ROOT = path.resolve(__dirname, '..');
|
|
16
|
+
const IS_WIN = process.platform === 'win32';
|
|
17
|
+
const INSTALL_ENTRIES = [
|
|
18
|
+
{ source: 'SKILL.md', required: true },
|
|
19
|
+
{ source: 'AGENTS.md', required: true },
|
|
20
|
+
{ source: 'README.md', required: true },
|
|
21
|
+
{ source: 'agents', required: true },
|
|
22
|
+
{ source: 'bin', required: true },
|
|
23
|
+
{ source: '.codex', required: true },
|
|
24
|
+
{ source: 'commands', required: true },
|
|
25
|
+
{ source: 'scripts', required: true },
|
|
26
|
+
{ source: 'babysitter.lock.json', required: true },
|
|
27
|
+
];
|
|
28
|
+
|
|
29
|
+
function getCodexHome() {
|
|
30
|
+
if (process.env.CODEX_HOME) return process.env.CODEX_HOME;
|
|
31
|
+
return path.join(os.homedir(), '.codex');
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function writeFileIfChanged(filePath, contents) {
|
|
35
|
+
if (fs.existsSync(filePath)) {
|
|
36
|
+
const current = fs.readFileSync(filePath, 'utf8');
|
|
37
|
+
if (current === contents) {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
fs.mkdirSync(path.dirname(filePath), { recursive: true });
|
|
42
|
+
fs.writeFileSync(filePath, contents, 'utf8');
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function mergeCodexHomeConfig(codexHome) {
|
|
47
|
+
const configPath = path.join(codexHome, 'config.toml');
|
|
48
|
+
const featureLines = [
|
|
49
|
+
'[features]',
|
|
50
|
+
'codex_hooks = true',
|
|
51
|
+
'multi_agent = true',
|
|
52
|
+
];
|
|
53
|
+
|
|
54
|
+
if (!fs.existsSync(configPath)) {
|
|
55
|
+
writeFileIfChanged(
|
|
56
|
+
configPath,
|
|
57
|
+
[
|
|
58
|
+
'approval_policy = "on-request"',
|
|
59
|
+
'sandbox_mode = "workspace-write"',
|
|
60
|
+
'',
|
|
61
|
+
...featureLines,
|
|
62
|
+
'',
|
|
63
|
+
].join('\n')
|
|
64
|
+
);
|
|
65
|
+
console.log(`[babysitter-codex] wrote ${configPath}`);
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
let content = fs.readFileSync(configPath, 'utf8');
|
|
70
|
+
if (!/^\s*codex_hooks\s*=.*$/m.test(content)) {
|
|
71
|
+
if (/^\[features\]\s*$/m.test(content)) {
|
|
72
|
+
content = content.replace(
|
|
73
|
+
/^\[features\]\s*$/m,
|
|
74
|
+
['[features]', 'codex_hooks = true', 'multi_agent = true'].join('\n')
|
|
75
|
+
);
|
|
76
|
+
} else {
|
|
77
|
+
content = [content.trimEnd(), '', ...featureLines, ''].join('\n');
|
|
78
|
+
}
|
|
79
|
+
} else if (!/^\s*multi_agent\s*=.*$/m.test(content) && /^\[features\]\s*$/m.test(content)) {
|
|
80
|
+
content = content.replace(
|
|
81
|
+
/^\[features\]\s*$/m,
|
|
82
|
+
['[features]', 'multi_agent = true'].join('\n')
|
|
83
|
+
);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
if (writeFileIfChanged(configPath, content)) {
|
|
87
|
+
console.log(`[babysitter-codex] merged ${configPath}`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
function shouldAutoOnboardWorkspace(skillDir) {
|
|
92
|
+
const initCwd = process.env.INIT_CWD;
|
|
93
|
+
if (!initCwd) return null;
|
|
94
|
+
|
|
95
|
+
const resolved = path.resolve(initCwd);
|
|
96
|
+
if (!fs.existsSync(resolved)) return null;
|
|
97
|
+
if (!fs.statSync(resolved).isDirectory()) return null;
|
|
98
|
+
|
|
99
|
+
const normalizedWorkspace = resolved.toLowerCase();
|
|
100
|
+
const normalizedPackageRoot = PACKAGE_ROOT.toLowerCase();
|
|
101
|
+
const normalizedSkillDir = skillDir.toLowerCase();
|
|
102
|
+
if (normalizedWorkspace === normalizedPackageRoot || normalizedWorkspace === normalizedSkillDir) {
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
return resolved;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
function autoOnboardWorkspace(skillDir) {
|
|
110
|
+
const workspace = shouldAutoOnboardWorkspace(skillDir);
|
|
111
|
+
if (!workspace) {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
const scriptPath = path.join(skillDir, 'scripts', 'team-install.js');
|
|
116
|
+
if (!fs.existsSync(scriptPath)) {
|
|
117
|
+
console.warn('[babysitter-codex] WARNING: team-install.js is missing; skipping workspace hook onboarding');
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
const result = spawnSync(process.execPath, [scriptPath, '--workspace', workspace], {
|
|
122
|
+
cwd: workspace,
|
|
123
|
+
stdio: 'pipe',
|
|
124
|
+
encoding: 'utf8',
|
|
125
|
+
env: {
|
|
126
|
+
...process.env,
|
|
127
|
+
BABYSITTER_PACKAGE_ROOT: skillDir,
|
|
128
|
+
},
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
if (result.status !== 0) {
|
|
132
|
+
console.warn(`[babysitter-codex] WARNING: workspace onboarding failed for ${workspace}`);
|
|
133
|
+
if (result.stdout) console.warn(result.stdout.trim());
|
|
134
|
+
if (result.stderr) console.warn(result.stderr.trim());
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
console.log(`[babysitter-codex] onboarded workspace hooks/config at ${workspace}`);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
function copyRecursive(src, dest) {
|
|
142
|
+
const stat = fs.statSync(src);
|
|
143
|
+
if (stat.isDirectory()) {
|
|
144
|
+
fs.mkdirSync(dest, { recursive: true });
|
|
145
|
+
for (const entry of fs.readdirSync(src)) {
|
|
146
|
+
// Skip node_modules, .a5c, .git, and test directories
|
|
147
|
+
if (['node_modules', '.a5c', '.git', 'test', '.gitignore'].includes(entry)) continue;
|
|
148
|
+
copyRecursive(path.join(src, entry), path.join(dest, entry));
|
|
149
|
+
}
|
|
150
|
+
} else {
|
|
151
|
+
// Codex requires SKILL.md frontmatter to begin exactly with "---".
|
|
152
|
+
// Strip UTF-8 BOM if present to avoid loader parse failures.
|
|
153
|
+
if (path.basename(src) === 'SKILL.md') {
|
|
154
|
+
const file = fs.readFileSync(src);
|
|
155
|
+
const hasBom = file.length >= 3 && file[0] === 0xef && file[1] === 0xbb && file[2] === 0xbf;
|
|
156
|
+
fs.writeFileSync(dest, hasBom ? file.subarray(3) : file);
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
fs.copyFileSync(src, dest);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
function installEntry(skillDir, entry) {
|
|
164
|
+
const src = path.join(PACKAGE_ROOT, entry.source);
|
|
165
|
+
const dest = path.join(skillDir, entry.source);
|
|
166
|
+
if (!fs.existsSync(src)) {
|
|
167
|
+
if (entry.required) {
|
|
168
|
+
throw new Error(`required install payload is missing: ${src}`);
|
|
169
|
+
}
|
|
170
|
+
return false;
|
|
171
|
+
}
|
|
172
|
+
copyRecursive(src, dest);
|
|
173
|
+
console.log(`[babysitter-codex] ${entry.source}${fs.statSync(src).isDirectory() ? '/' : ''}`);
|
|
174
|
+
return true;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
function verifyInstalledPayload(skillDir) {
|
|
178
|
+
const missing = INSTALL_ENTRIES
|
|
179
|
+
.map((entry) => entry.source)
|
|
180
|
+
.filter((source) => !fs.existsSync(path.join(skillDir, source)));
|
|
181
|
+
if (missing.length > 0) {
|
|
182
|
+
throw new Error(`installed skill is incomplete; missing: ${missing.join(', ')}`);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
function main() {
|
|
187
|
+
const codexHome = getCodexHome();
|
|
188
|
+
const skillDir = path.join(codexHome, 'skills', SKILL_NAME);
|
|
189
|
+
|
|
190
|
+
console.log(`[babysitter-codex] Installing skill to ${skillDir}`);
|
|
191
|
+
|
|
192
|
+
try {
|
|
193
|
+
fs.mkdirSync(skillDir, { recursive: true });
|
|
194
|
+
|
|
195
|
+
for (const entry of INSTALL_ENTRIES) {
|
|
196
|
+
installEntry(skillDir, entry);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
verifyInstalledPayload(skillDir);
|
|
200
|
+
mergeCodexHomeConfig(codexHome);
|
|
201
|
+
|
|
202
|
+
if (!IS_WIN) {
|
|
203
|
+
const hookDir = path.join(skillDir, '.codex', 'hooks');
|
|
204
|
+
if (fs.existsSync(hookDir)) {
|
|
205
|
+
for (const name of fs.readdirSync(hookDir)) {
|
|
206
|
+
const hookPath = path.join(hookDir, name);
|
|
207
|
+
if (name.endsWith('.sh') && fs.statSync(hookPath).isFile()) {
|
|
208
|
+
fs.chmodSync(hookPath, 0o755);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
console.log('[babysitter-codex] +x hooks/*.sh');
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
autoOnboardWorkspace(skillDir);
|
|
216
|
+
|
|
217
|
+
console.log('[babysitter-codex] Installation complete!');
|
|
218
|
+
console.log('[babysitter-codex] Restart Codex to pick up the updated skill and hook config.');
|
|
219
|
+
} catch (err) {
|
|
220
|
+
console.error(`[babysitter-codex] Failed to install skill files: ${err.message}`);
|
|
221
|
+
process.exitCode = 1;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
main();
|
package/bin/uninstall.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* uninstall.js — Removes babysitter-codex skill files from ~/.codex/skills/
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
const fs = require('fs');
|
|
9
|
+
const path = require('path');
|
|
10
|
+
const os = require('os');
|
|
11
|
+
|
|
12
|
+
const SKILL_NAME = 'babysitter-codex';
|
|
13
|
+
|
|
14
|
+
function getCodexHome() {
|
|
15
|
+
if (process.env.CODEX_HOME) return process.env.CODEX_HOME;
|
|
16
|
+
return path.join(os.homedir(), '.codex');
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function main() {
|
|
20
|
+
const codexHome = getCodexHome();
|
|
21
|
+
const skillDir = path.join(codexHome, 'skills', SKILL_NAME);
|
|
22
|
+
|
|
23
|
+
if (!fs.existsSync(skillDir)) {
|
|
24
|
+
console.log('[babysitter-codex] Skill directory not found, nothing to remove.');
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
try {
|
|
29
|
+
fs.rmSync(skillDir, { recursive: true, force: true });
|
|
30
|
+
console.log(`[babysitter-codex] Removed ${skillDir}`);
|
|
31
|
+
console.log('[babysitter-codex] Restart Codex to complete uninstallation.');
|
|
32
|
+
} catch (err) {
|
|
33
|
+
console.warn(`[babysitter-codex] Warning: Could not remove skill directory: ${err.message}`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
main();
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Command Docs
|
|
2
|
+
|
|
3
|
+
This folder mirrors the upstream Babysitter command-doc structure for the
|
|
4
|
+
Codex skill bundle and integration package. It is not evidence of a native
|
|
5
|
+
Codex plugin manifest model.
|
|
6
|
+
|
|
7
|
+
## Commands
|
|
8
|
+
|
|
9
|
+
- [call](./call.md)
|
|
10
|
+
- [yolo](./yolo.md)
|
|
11
|
+
- [resume](./resume.md)
|
|
12
|
+
- [plan](./plan.md)
|
|
13
|
+
- [forever](./forever.md)
|
|
14
|
+
- [doctor](./doctor.md)
|
|
15
|
+
- [observe](./observe.md)
|
|
16
|
+
- [retrospect](./retrospect.md)
|
|
17
|
+
- [model](./model.md)
|
|
18
|
+
- [issue](./issue.md)
|
|
19
|
+
- [help](./help.md)
|
|
20
|
+
- [project-install](./project-install.md)
|
|
21
|
+
- [team-install](./team-install.md)
|
|
22
|
+
- [user-install](./user-install.md)
|
|
23
|
+
- [assimilate](./assimilate.md)
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Assimilate external methodology/spec into babysitter process patterns.
|
|
3
|
+
argument-hint: Target repo/spec/reference
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# babysitter:assimilate
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
Assimilate external methodology/spec into babysitter process patterns.
|
|
11
|
+
|
|
12
|
+
## Usage
|
|
13
|
+
|
|
14
|
+
```text
|
|
15
|
+
babysitter assimilate Target repo/spec/reference
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Example
|
|
19
|
+
|
|
20
|
+
```text
|
|
21
|
+
babysitter assimilate https://github.com/org/methodology
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Notes
|
|
25
|
+
|
|
26
|
+
- Use command phrases in Codex chat (`babysitter ...`), not custom slash commands.
|
|
27
|
+
- If SDK capabilities are missing in your installed version, babysitter-codex falls back to compatibility behavior where possible.
|
package/commands/call.md
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Start an interactive babysitter orchestration run.
|
|
3
|
+
argument-hint: Specific instructions for the run
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# babysitter:call
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
Start an interactive babysitter orchestration run.
|
|
11
|
+
|
|
12
|
+
## Usage
|
|
13
|
+
|
|
14
|
+
```text
|
|
15
|
+
babysitter call Specific instructions for the run
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Example
|
|
19
|
+
|
|
20
|
+
```text
|
|
21
|
+
babysitter call implement auth with tests
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Notes
|
|
25
|
+
|
|
26
|
+
- Use command phrases in Codex chat (`babysitter ...`), not custom slash commands.
|
|
27
|
+
- The primary Codex plugin path is hook-first through `.codex/hooks.json` (`SessionStart`, `UserPromptSubmit`, `Stop`).
|
|
28
|
+
- Low-level runtime mechanics live here and in `.codex/skills/babysitter/call/SKILL.md`, not in the top-level README or install guide.
|
|
29
|
+
- The implementation should create or bind honestly, let the `Stop` hook own continuation, write value payloads to `output.json`, and post outcomes through SDK commands rather than direct `result.json` writes.
|
|
30
|
+
- If SDK capabilities are missing in your installed version, babysitter-codex falls back to compatibility behavior where possible.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Diagnose run/runtime health and compatibility.
|
|
3
|
+
argument-hint: [run-id|mcp]
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# babysitter:doctor
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
Diagnose run/runtime health and compatibility.
|
|
11
|
+
|
|
12
|
+
## Usage
|
|
13
|
+
|
|
14
|
+
```text
|
|
15
|
+
babysitter doctor [run-id|mcp]
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Example
|
|
19
|
+
|
|
20
|
+
```text
|
|
21
|
+
babysitter doctor mcp
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Notes
|
|
25
|
+
|
|
26
|
+
- Use command phrases in Codex chat (`babysitter ...`), not custom slash commands.
|
|
27
|
+
- If SDK capabilities are missing in your installed version, babysitter-codex falls back to compatibility behavior where possible.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Run a periodic or continuous orchestration loop.
|
|
3
|
+
argument-hint: Specific instructions for recurring workflow
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# babysitter:forever
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
Run a periodic or continuous orchestration loop.
|
|
11
|
+
|
|
12
|
+
## Usage
|
|
13
|
+
|
|
14
|
+
```text
|
|
15
|
+
babysitter forever Specific instructions for recurring workflow
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Example
|
|
19
|
+
|
|
20
|
+
```text
|
|
21
|
+
babysitter forever monitor production error trends daily
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Notes
|
|
25
|
+
|
|
26
|
+
- Use command phrases in Codex chat (`babysitter ...`), not custom slash commands.
|
|
27
|
+
- If SDK capabilities are missing in your installed version, babysitter-codex falls back to compatibility behavior where possible.
|
package/commands/help.md
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Show command/process/skill/agent help.
|
|
3
|
+
argument-hint: [command|process|skill|agent|methodology]
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# babysitter:help
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
Show command/process/skill/agent help.
|
|
11
|
+
|
|
12
|
+
## Usage
|
|
13
|
+
|
|
14
|
+
```text
|
|
15
|
+
babysitter help [command|process|skill|agent|methodology]
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Example
|
|
19
|
+
|
|
20
|
+
```text
|
|
21
|
+
babysitter help command doctor
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Notes
|
|
25
|
+
|
|
26
|
+
- Use command phrases in Codex chat (`babysitter ...`), not custom slash commands.
|
|
27
|
+
- Codex chat owns the loop through the hook model in `.codex/hooks.json`; `Stop` is the continuation owner.
|
|
28
|
+
- If SDK capabilities are missing in your installed version, babysitter-codex falls back to compatibility behavior where possible.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Start from a GitHub issue and prepare execution/apply flow.
|
|
3
|
+
argument-hint: <issue-number|url> [--repo owner/name] [--apply]
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# babysitter:issue
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
Start from a GitHub issue and prepare execution/apply flow.
|
|
11
|
+
|
|
12
|
+
## Usage
|
|
13
|
+
|
|
14
|
+
```text
|
|
15
|
+
babysitter issue <issue-number|url> [--repo owner/name] [--apply]
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Example
|
|
19
|
+
|
|
20
|
+
```text
|
|
21
|
+
babysitter issue 123 --repo owner/repo --apply
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Notes
|
|
25
|
+
|
|
26
|
+
- Use command phrases in Codex chat (`babysitter ...`), not custom slash commands.
|
|
27
|
+
- If SDK capabilities are missing in your installed version, babysitter-codex falls back to compatibility behavior where possible.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Set or show model routing policy by phase.
|
|
3
|
+
argument-hint: show | clear | set <phase>=<model>
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# babysitter:model
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
Set or show model routing policy by phase.
|
|
11
|
+
|
|
12
|
+
## Usage
|
|
13
|
+
|
|
14
|
+
```text
|
|
15
|
+
babysitter model show | clear | set <phase>=<model>
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Example
|
|
19
|
+
|
|
20
|
+
```text
|
|
21
|
+
babysitter model set plan=gpt-5 execute=gpt-5-codex
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Notes
|
|
25
|
+
|
|
26
|
+
- Use command phrases in Codex chat (`babysitter ...`), not custom slash commands.
|
|
27
|
+
- If SDK capabilities are missing in your installed version, babysitter-codex falls back to compatibility behavior where possible.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Open observer workflow for run visibility and monitoring.
|
|
3
|
+
argument-hint: [watch target]
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# babysitter:observe
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
Open observer workflow for run visibility and monitoring.
|
|
11
|
+
|
|
12
|
+
## Usage
|
|
13
|
+
|
|
14
|
+
```text
|
|
15
|
+
babysitter observe [watch target]
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Example
|
|
19
|
+
|
|
20
|
+
```text
|
|
21
|
+
babysitter observe current workspace
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Notes
|
|
25
|
+
|
|
26
|
+
- Use command phrases in Codex chat (`babysitter ...`), not custom slash commands.
|
|
27
|
+
- If SDK capabilities are missing in your installed version, babysitter-codex falls back to compatibility behavior where possible.
|
package/commands/plan.md
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Plan a workflow without executing it.
|
|
3
|
+
argument-hint: Specific instructions for the plan
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# babysitter:plan
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
Plan a workflow without executing it.
|
|
11
|
+
|
|
12
|
+
## Usage
|
|
13
|
+
|
|
14
|
+
```text
|
|
15
|
+
babysitter plan Specific instructions for the plan
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Example
|
|
19
|
+
|
|
20
|
+
```text
|
|
21
|
+
babysitter plan migration from monolith to services
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Notes
|
|
25
|
+
|
|
26
|
+
- Use command phrases in Codex chat (`babysitter ...`), not custom slash commands.
|
|
27
|
+
- If SDK capabilities are missing in your installed version, babysitter-codex falls back to compatibility behavior where possible.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Onboard babysitter into the current project.
|
|
3
|
+
argument-hint: Project setup instructions
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# babysitter:project-install
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
Onboard babysitter into the current project.
|
|
11
|
+
|
|
12
|
+
## Usage
|
|
13
|
+
|
|
14
|
+
```text
|
|
15
|
+
babysitter project-install Project setup instructions
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Example
|
|
19
|
+
|
|
20
|
+
```text
|
|
21
|
+
babysitter project-install for this repository
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Notes
|
|
25
|
+
|
|
26
|
+
- Use command phrases in Codex chat (`babysitter ...`), not custom slash commands.
|
|
27
|
+
- Project onboarding should layer Codex config, profile, and pinned-content setup around the active process roots.
|
|
28
|
+
- Do not describe project onboarding as creating a project-only process-library scope.
|
|
29
|
+
- Do not document fictional hook-based continuation for Codex.
|
|
30
|
+
- Keep low-level onboarding mechanics here or in the Codex skill docs, not in user-facing README copy. That includes config file writes, process-root fallback rules, and compatibility-mode behavior.
|
|
31
|
+
- If SDK capabilities are missing in your installed version, babysitter-codex falls back to compatibility behavior where possible.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Resume an existing babysitter run/session.
|
|
3
|
+
argument-hint: [selector|run-id]
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# babysitter:resume
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
Resume an existing babysitter run/session.
|
|
11
|
+
|
|
12
|
+
## Usage
|
|
13
|
+
|
|
14
|
+
```text
|
|
15
|
+
babysitter resume [selector|run-id]
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Example
|
|
19
|
+
|
|
20
|
+
```text
|
|
21
|
+
babysitter resume recent
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Notes
|
|
25
|
+
|
|
26
|
+
- Use command phrases in Codex chat (`babysitter ...`), not custom slash commands.
|
|
27
|
+
- Resume should continue from `.a5c/current-run.json` or the indexed run selector, then rely on the Codex `Stop` hook to continue the loop after each yield.
|
|
28
|
+
- This command doc is an internal home for resume mechanics that user-facing docs should not spell out, including persisted run selection, hook-owned continuation, and honest completion-proof handling.
|
|
29
|
+
- If SDK capabilities are missing in your installed version, babysitter-codex falls back to compatibility behavior where possible.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Analyze runs and propose process improvements.
|
|
3
|
+
argument-hint: [run-id]
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# babysitter:retrospect
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
Analyze runs and propose process improvements.
|
|
11
|
+
|
|
12
|
+
## Usage
|
|
13
|
+
|
|
14
|
+
```text
|
|
15
|
+
babysitter retrospect [run-id]
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Example
|
|
19
|
+
|
|
20
|
+
```text
|
|
21
|
+
babysitter retrospect latest run
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Notes
|
|
25
|
+
|
|
26
|
+
- Use command phrases in Codex chat (`babysitter ...`), not custom slash commands.
|
|
27
|
+
- If SDK capabilities are missing in your installed version, babysitter-codex falls back to compatibility behavior where possible.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Install team-pinned runtime/content from lockfile.
|
|
3
|
+
argument-hint: [--dry-run]
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# babysitter:team-install
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
Install team-pinned runtime/content from lockfile.
|
|
11
|
+
|
|
12
|
+
## Usage
|
|
13
|
+
|
|
14
|
+
```text
|
|
15
|
+
babysitter team-install [--dry-run]
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Example
|
|
19
|
+
|
|
20
|
+
```text
|
|
21
|
+
babysitter team-install
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Notes
|
|
25
|
+
|
|
26
|
+
- Use command phrases in Codex chat (`babysitter ...`), not custom slash commands.
|
|
27
|
+
- Team install pins content and rules for the workspace; it is not the sole process-library root.
|
|
28
|
+
- This command doc is where install implementation details belong: manifest verification, lockfile handling, workspace metadata writes, and any fallback process-library behavior.
|
|
29
|
+
- If SDK capabilities are missing in your installed version, babysitter-codex falls back to compatibility behavior where possible.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Set up babysitter user profile and defaults.
|
|
3
|
+
argument-hint: User setup instructions
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# babysitter:user-install
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
Set up babysitter user profile and defaults.
|
|
11
|
+
|
|
12
|
+
## Usage
|
|
13
|
+
|
|
14
|
+
```text
|
|
15
|
+
babysitter user-install User setup instructions
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Example
|
|
19
|
+
|
|
20
|
+
```text
|
|
21
|
+
babysitter user-install for backend workflows
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Notes
|
|
25
|
+
|
|
26
|
+
- Use command phrases in Codex chat (`babysitter ...`), not custom slash commands.
|
|
27
|
+
- If SDK capabilities are missing in your installed version, babysitter-codex falls back to compatibility behavior where possible.
|