@a5c-ai/babysitter-cursor 0.1.1-staging.d0170171 → 0.1.1-staging.f2d9bb68
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/.cursor-plugin/plugin.json +4 -6
- package/README.md +39 -29
- package/bin/install-shared.js +30 -5
- package/bin/install.js +8 -8
- package/bin/uninstall.js +4 -4
- package/commands/assimilate.md +37 -0
- package/commands/call.md +7 -0
- package/commands/cleanup.md +20 -0
- package/commands/contrib.md +33 -0
- package/commands/doctor.md +426 -0
- package/commands/forever.md +7 -0
- package/commands/help.md +244 -0
- package/commands/observe.md +12 -0
- package/commands/plan.md +7 -0
- package/commands/plugins.md +255 -0
- package/commands/project-install.md +17 -0
- package/commands/resume.md +8 -0
- package/commands/retrospect.md +55 -0
- package/commands/user-install.md +17 -0
- package/commands/yolo.md +7 -0
- package/hooks/hooks-cursor.json +21 -0
- package/hooks.json +4 -4
- package/package.json +5 -3
- package/plugin.json +2 -2
- package/scripts/sync-command-surfaces.js +62 -0
- package/scripts/team-install.js +1 -1
- package/skills/assimilate/SKILL.md +30 -9
- package/skills/call/SKILL.md +2 -11
- package/skills/doctor/SKILL.md +419 -8
- package/skills/help/SKILL.md +237 -7
- package/skills/observe/SKILL.md +6 -8
- package/skills/plan/SKILL.md +2 -10
- package/skills/resume/SKILL.md +3 -9
- package/skills/retrospect/SKILL.md +38 -37
- package/skills/user-install/SKILL.md +10 -7
- package/versions.json +1 -1
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
{
|
|
2
|
-
"name": "babysitter
|
|
2
|
+
"name": "babysitter",
|
|
3
3
|
"version": "0.1.0",
|
|
4
4
|
"description": "Babysitter orchestration plugin for Cursor IDE/CLI with lifecycle hooks and SDK-managed process-library bootstrapping",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "a5c.ai",
|
|
7
|
-
"email": "support@a5c.ai"
|
|
8
|
-
"url": "https://github.com/a5c-ai/babysitter"
|
|
7
|
+
"email": "support@a5c.ai"
|
|
9
8
|
},
|
|
10
9
|
"homepage": "https://github.com/a5c-ai/babysitter/tree/main/plugins/babysitter-cursor#readme",
|
|
11
10
|
"repository": "https://github.com/a5c-ai/babysitter",
|
|
@@ -18,7 +17,6 @@
|
|
|
18
17
|
"skills"
|
|
19
18
|
],
|
|
20
19
|
"skills": "skills/",
|
|
21
|
-
"commands":
|
|
22
|
-
"hooks": "hooks.json"
|
|
23
|
-
"logo": null
|
|
20
|
+
"commands": "commands/",
|
|
21
|
+
"hooks": "hooks/hooks-cursor.json"
|
|
24
22
|
}
|
package/README.md
CHANGED
|
@@ -27,22 +27,27 @@ npm install -g @a5c-ai/babysitter-sdk
|
|
|
27
27
|
|
|
28
28
|
### Via Cursor Marketplace (recommended)
|
|
29
29
|
|
|
30
|
-
Install
|
|
30
|
+
Install through Cursor's marketplace UI using the repo-root
|
|
31
|
+
`/.cursor-plugin/marketplace.json` manifest:
|
|
31
32
|
|
|
32
|
-
1.
|
|
33
|
-
2.
|
|
34
|
-
3.
|
|
33
|
+
1. Add this repository as a Cursor marketplace source
|
|
34
|
+
2. Open the marketplace entry named **a5c-ai**
|
|
35
|
+
3. Install the plugin named **babysitter**
|
|
35
36
|
|
|
36
37
|
### Via Babysitter plugin manager
|
|
37
38
|
|
|
39
|
+
This path installs the Babysitter plugin package named
|
|
40
|
+
`babysitter-cursor` from the SDK marketplace, not the Cursor UI plugin
|
|
41
|
+
entry:
|
|
42
|
+
|
|
38
43
|
```bash
|
|
39
|
-
babysitter plugin:install babysitter-cursor --marketplace-name a5c
|
|
44
|
+
babysitter plugin:install babysitter-cursor --marketplace-name a5c-ai --global
|
|
40
45
|
```
|
|
41
46
|
|
|
42
47
|
### Workspace installation
|
|
43
48
|
|
|
44
49
|
```bash
|
|
45
|
-
babysitter plugin:install babysitter-cursor --marketplace-name a5c
|
|
50
|
+
babysitter plugin:install babysitter-cursor --marketplace-name a5c-ai --project
|
|
46
51
|
```
|
|
47
52
|
|
|
48
53
|
If the workspace does not already have an active process-library binding, the
|
|
@@ -76,6 +81,8 @@ Copy the plugin directory to your local Cursor plugins path:
|
|
|
76
81
|
|
|
77
82
|
```bash
|
|
78
83
|
cp -r plugins/babysitter-cursor ~/.cursor/plugins/local/babysitter-cursor
|
|
84
|
+
# Or symlink for faster iteration:
|
|
85
|
+
ln -s "$(pwd)/plugins/babysitter-cursor" ~/.cursor/plugins/local/babysitter-cursor
|
|
79
86
|
```
|
|
80
87
|
|
|
81
88
|
## Uninstallation
|
|
@@ -95,10 +102,11 @@ babysitter plugin:uninstall babysitter-cursor --global
|
|
|
95
102
|
```
|
|
96
103
|
plugins/babysitter-cursor/
|
|
97
104
|
.cursor-plugin/
|
|
98
|
-
plugin.json # Cursor
|
|
99
|
-
plugin.json #
|
|
100
|
-
hooks.json #
|
|
105
|
+
plugin.json # Cursor plugin manifest (skills, commands, hooks, metadata)
|
|
106
|
+
plugin.json # Babysitter plugin manifest (skills dir, hooks path, metadata)
|
|
107
|
+
hooks.json # Legacy/manual hook configuration
|
|
101
108
|
hooks/
|
|
109
|
+
hooks-cursor.json # Cursor plugin hook configuration
|
|
102
110
|
session-start.sh # SessionStart lifecycle hook (bash)
|
|
103
111
|
session-start.ps1 # SessionStart lifecycle hook (PowerShell)
|
|
104
112
|
stop-hook.sh # Stop hook -- orchestration loop driver (bash)
|
|
@@ -129,7 +137,7 @@ plugins/babysitter-cursor/
|
|
|
129
137
|
|
|
130
138
|
## Hook Configuration
|
|
131
139
|
|
|
132
|
-
The plugin declares lifecycle hooks in `hooks.json` using the version 1
|
|
140
|
+
The plugin declares lifecycle hooks in `hooks/hooks-cursor.json` using the version 1
|
|
133
141
|
format. Hook event names use camelCase (e.g., `sessionStart`, `stop`).
|
|
134
142
|
|
|
135
143
|
```json
|
|
@@ -139,16 +147,16 @@ format. Hook event names use camelCase (e.g., `sessionStart`, `stop`).
|
|
|
139
147
|
"sessionStart": [
|
|
140
148
|
{
|
|
141
149
|
"type": "command",
|
|
142
|
-
"bash": "./hooks/session-start.sh",
|
|
143
|
-
"powershell": "./hooks/session-start.ps1",
|
|
150
|
+
"bash": "bash \"./hooks/session-start.sh\"",
|
|
151
|
+
"powershell": "powershell -NoProfile -ExecutionPolicy Bypass -File \"./hooks/session-start.ps1\"",
|
|
144
152
|
"timeoutSec": 30
|
|
145
153
|
}
|
|
146
154
|
],
|
|
147
155
|
"stop": [
|
|
148
156
|
{
|
|
149
157
|
"type": "command",
|
|
150
|
-
"bash": "./hooks/stop-hook.sh",
|
|
151
|
-
"powershell": "./hooks/stop-hook.ps1",
|
|
158
|
+
"bash": "bash \"./hooks/stop-hook.sh\"",
|
|
159
|
+
"powershell": "powershell -NoProfile -ExecutionPolicy Bypass -File \"./hooks/stop-hook.ps1\"",
|
|
152
160
|
"loop_limit": null
|
|
153
161
|
}
|
|
154
162
|
]
|
|
@@ -265,7 +273,7 @@ When Cursor attempts to end its turn, this hook intercepts the exit and:
|
|
|
265
273
|
|
|
266
274
|
This is what keeps Babysitter iterating autonomously -- each turn performs
|
|
267
275
|
one orchestration phase, and the stop hook decides whether to loop or yield.
|
|
268
|
-
The `loop_limit: null` setting in `hooks.json` allows unlimited iterations.
|
|
276
|
+
The `loop_limit: null` setting in `hooks/hooks-cursor.json` allows unlimited iterations.
|
|
269
277
|
|
|
270
278
|
**Important:** The stop hook uses `{followup_message: "..."}` to signal
|
|
271
279
|
continuation, NOT `{decision: "block"}`. This is a Cursor-specific
|
|
@@ -305,7 +313,7 @@ The Cursor marketplace manifest lives at `.cursor-plugin/plugin.json`:
|
|
|
305
313
|
|
|
306
314
|
```json
|
|
307
315
|
{
|
|
308
|
-
"name": "babysitter
|
|
316
|
+
"name": "babysitter",
|
|
309
317
|
"version": "0.1.0",
|
|
310
318
|
"description": "Babysitter orchestration plugin for Cursor IDE/CLI ...",
|
|
311
319
|
"author": {
|
|
@@ -317,36 +325,35 @@ The Cursor marketplace manifest lives at `.cursor-plugin/plugin.json`:
|
|
|
317
325
|
"repository": "https://github.com/a5c-ai/babysitter",
|
|
318
326
|
"license": "MIT",
|
|
319
327
|
"skills": "skills/",
|
|
320
|
-
"hooks": "hooks.json"
|
|
328
|
+
"hooks": "hooks/hooks-cursor.json"
|
|
321
329
|
}
|
|
322
330
|
```
|
|
323
331
|
|
|
324
332
|
The `skills` field points to the skills directory where Cursor
|
|
325
333
|
auto-discovers `SKILL.md` files in subdirectories. The `hooks` field
|
|
326
|
-
references the `hooks.json` configuration file.
|
|
334
|
+
references the `hooks/hooks-cursor.json` configuration file.
|
|
327
335
|
|
|
328
336
|
### Marketplace Manifest
|
|
329
337
|
|
|
330
|
-
|
|
331
|
-
`marketplace.json`:
|
|
338
|
+
The repo-root Cursor marketplace manifest lives at `/.cursor-plugin/marketplace.json`:
|
|
332
339
|
|
|
333
340
|
```json
|
|
334
341
|
{
|
|
335
|
-
"name": "a5c
|
|
342
|
+
"name": "a5c-ai",
|
|
336
343
|
"owner": {
|
|
337
|
-
"name": "a5c
|
|
344
|
+
"name": "a5c-ai",
|
|
338
345
|
"email": "support@a5c.ai"
|
|
339
346
|
},
|
|
340
347
|
"metadata": {
|
|
341
348
|
"description": "Babysitter orchestration plugins",
|
|
342
|
-
"
|
|
349
|
+
"pluginRoot": "plugins"
|
|
343
350
|
},
|
|
344
351
|
"plugins": [
|
|
345
352
|
{
|
|
346
|
-
"name": "babysitter
|
|
353
|
+
"name": "babysitter",
|
|
347
354
|
"description": "Multi-step workflow orchestration for Cursor IDE",
|
|
348
355
|
"version": "0.1.0",
|
|
349
|
-
"source": "
|
|
356
|
+
"source": "babysitter-cursor"
|
|
350
357
|
}
|
|
351
358
|
]
|
|
352
359
|
}
|
|
@@ -355,9 +362,9 @@ To distribute through a marketplace, add the plugin to the marketplace's
|
|
|
355
362
|
### User Commands
|
|
356
363
|
|
|
357
364
|
```bash
|
|
358
|
-
babysitter plugin:add-marketplace --marketplace-url https://github.com/a5c-ai/babysitter --global
|
|
359
|
-
babysitter plugin:list-plugins --marketplace-name a5c
|
|
360
|
-
babysitter plugin:install babysitter-cursor --marketplace-name a5c
|
|
365
|
+
babysitter plugin:add-marketplace --marketplace-url https://github.com/a5c-ai/babysitter --marketplace-path plugins/a5c/marketplace/marketplace.json --global
|
|
366
|
+
babysitter plugin:list-plugins --marketplace-name a5c-ai --global
|
|
367
|
+
babysitter plugin:install babysitter-cursor --marketplace-name a5c-ai --global
|
|
361
368
|
```
|
|
362
369
|
|
|
363
370
|
## Troubleshooting
|
|
@@ -378,6 +385,9 @@ Also check log output in `<plugin-root>/.a5c/logs/`:
|
|
|
378
385
|
- `babysitter-stop-hook-stderr.log`
|
|
379
386
|
- `babysitter-session-start-hook-stderr.log`
|
|
380
387
|
|
|
388
|
+
- `$HOME/.a5c/logs/` and relevant logs and run/session specific logs there
|
|
389
|
+
|
|
390
|
+
|
|
381
391
|
### Run stuck or not progressing
|
|
382
392
|
|
|
383
393
|
Check the run status and diagnose:
|
|
@@ -429,7 +439,7 @@ modes.
|
|
|
429
439
|
On native Windows, hook execution depends on shell configuration. The
|
|
430
440
|
plugin includes both `bash` (.sh) and `powershell` (.ps1) hook scripts
|
|
431
441
|
to maximize compatibility. If hooks do not fire, try running from Git Bash
|
|
432
|
-
or WSL. The
|
|
442
|
+
or WSL. The Cursor hook manifest includes explicit `powershell` entries alongside
|
|
433
443
|
`bash` entries for Windows PowerShell execution support.
|
|
434
444
|
|
|
435
445
|
## Development / Contributing
|
package/bin/install-shared.js
CHANGED
|
@@ -5,7 +5,7 @@ const os = require('os');
|
|
|
5
5
|
const path = require('path');
|
|
6
6
|
const { spawnSync } = require('child_process');
|
|
7
7
|
|
|
8
|
-
const PLUGIN_NAME = 'babysitter
|
|
8
|
+
const PLUGIN_NAME = 'babysitter';
|
|
9
9
|
const PLUGIN_CATEGORY = 'Coding';
|
|
10
10
|
const HOOK_SCRIPT_NAMES = [
|
|
11
11
|
'session-start.sh',
|
|
@@ -20,12 +20,17 @@ const DEFAULT_MARKETPLACE = {
|
|
|
20
20
|
},
|
|
21
21
|
plugins: [],
|
|
22
22
|
};
|
|
23
|
+
const MANAGED_HOOKS_CONFIG_PATHS = [
|
|
24
|
+
path.join('hooks', 'hooks-cursor.json'),
|
|
25
|
+
'hooks.json',
|
|
26
|
+
];
|
|
23
27
|
const PLUGIN_BUNDLE_ENTRIES = [
|
|
24
28
|
'.cursor-plugin',
|
|
25
29
|
'plugin.json',
|
|
26
30
|
'hooks.json',
|
|
27
31
|
'hooks',
|
|
28
32
|
'skills',
|
|
33
|
+
'commands',
|
|
29
34
|
'versions.json',
|
|
30
35
|
'.cursorrules',
|
|
31
36
|
];
|
|
@@ -52,7 +57,7 @@ function getHomePluginRoot() {
|
|
|
52
57
|
if (process.env.BABYSITTER_CURSOR_PLUGIN_DIR) {
|
|
53
58
|
return path.resolve(process.env.BABYSITTER_CURSOR_PLUGIN_DIR, PLUGIN_NAME);
|
|
54
59
|
}
|
|
55
|
-
return path.join(getCursorHome(), 'plugins', PLUGIN_NAME);
|
|
60
|
+
return path.join(getCursorHome(), 'plugins', 'local', PLUGIN_NAME);
|
|
56
61
|
}
|
|
57
62
|
|
|
58
63
|
function getHomeMarketplacePath() {
|
|
@@ -135,15 +140,33 @@ function readJson(filePath) {
|
|
|
135
140
|
return JSON.parse(fs.readFileSync(filePath, 'utf8'));
|
|
136
141
|
}
|
|
137
142
|
|
|
143
|
+
function getManagedHooksConfigPath(packageRoot) {
|
|
144
|
+
for (const relativePath of MANAGED_HOOKS_CONFIG_PATHS) {
|
|
145
|
+
const candidate = path.join(packageRoot, relativePath);
|
|
146
|
+
if (fs.existsSync(candidate)) {
|
|
147
|
+
return candidate;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
|
|
138
153
|
function writeJson(filePath, value) {
|
|
139
154
|
writeFileIfChanged(filePath, `${JSON.stringify(value, null, 2)}\n`);
|
|
140
155
|
}
|
|
141
156
|
|
|
157
|
+
function normalizeMarketplaceName(name) {
|
|
158
|
+
const raw = String(name || '').trim();
|
|
159
|
+
const sanitized = raw
|
|
160
|
+
.replace(/[^A-Za-z0-9_-]+/g, '-')
|
|
161
|
+
.replace(/^-+|-+$/g, '');
|
|
162
|
+
return sanitized || DEFAULT_MARKETPLACE.name;
|
|
163
|
+
}
|
|
164
|
+
|
|
142
165
|
function ensureMarketplaceEntry(marketplacePath, pluginSourcePath) {
|
|
143
166
|
const marketplace = fs.existsSync(marketplacePath)
|
|
144
167
|
? readJson(marketplacePath)
|
|
145
168
|
: { ...DEFAULT_MARKETPLACE, plugins: [] };
|
|
146
|
-
marketplace.name = marketplace.name
|
|
169
|
+
marketplace.name = normalizeMarketplaceName(marketplace.name);
|
|
147
170
|
marketplace.interface = marketplace.interface || {};
|
|
148
171
|
marketplace.interface.displayName =
|
|
149
172
|
marketplace.interface.displayName || DEFAULT_MARKETPLACE.interface.displayName;
|
|
@@ -186,8 +209,8 @@ function removeMarketplaceEntry(marketplacePath) {
|
|
|
186
209
|
}
|
|
187
210
|
|
|
188
211
|
function mergeManagedHooksConfig(packageRoot, cursorHome) {
|
|
189
|
-
const hooksJsonPath =
|
|
190
|
-
if (!
|
|
212
|
+
const hooksJsonPath = getManagedHooksConfigPath(packageRoot);
|
|
213
|
+
if (!hooksJsonPath) return;
|
|
191
214
|
const managedConfig = readJson(hooksJsonPath);
|
|
192
215
|
const managedHooks = managedConfig.hooks || {};
|
|
193
216
|
const hooksConfigPath = path.join(cursorHome, 'hooks.json');
|
|
@@ -358,6 +381,7 @@ module.exports = {
|
|
|
358
381
|
copyPluginBundle,
|
|
359
382
|
ensureGlobalProcessLibrary,
|
|
360
383
|
ensureMarketplaceEntry,
|
|
384
|
+
getManagedHooksConfigPath,
|
|
361
385
|
getCursorHome,
|
|
362
386
|
getHomeMarketplacePath,
|
|
363
387
|
getHomePluginRoot,
|
|
@@ -366,4 +390,5 @@ module.exports = {
|
|
|
366
390
|
removeMarketplaceEntry,
|
|
367
391
|
warnWindowsHooks,
|
|
368
392
|
writeJson,
|
|
393
|
+
normalizeMarketplaceName,
|
|
369
394
|
};
|
package/bin/install.js
CHANGED
|
@@ -20,7 +20,7 @@ function main() {
|
|
|
20
20
|
const pluginRoot = getHomePluginRoot();
|
|
21
21
|
const marketplacePath = getHomeMarketplacePath();
|
|
22
22
|
|
|
23
|
-
console.log(`[babysitter
|
|
23
|
+
console.log(`[babysitter] Installing plugin to ${pluginRoot}`);
|
|
24
24
|
|
|
25
25
|
try {
|
|
26
26
|
copyPluginBundle(PACKAGE_ROOT, pluginRoot);
|
|
@@ -28,17 +28,17 @@ function main() {
|
|
|
28
28
|
installCursorSurface(PACKAGE_ROOT, cursorHome);
|
|
29
29
|
|
|
30
30
|
const active = ensureGlobalProcessLibrary(PACKAGE_ROOT);
|
|
31
|
-
console.log(`[babysitter
|
|
32
|
-
console.log(`[babysitter
|
|
31
|
+
console.log(`[babysitter] marketplace: ${marketplacePath}`);
|
|
32
|
+
console.log(`[babysitter] process library: ${active.binding?.dir}`);
|
|
33
33
|
if (active.defaultSpec?.cloneDir) {
|
|
34
|
-
console.log(`[babysitter
|
|
34
|
+
console.log(`[babysitter] process library clone: ${active.defaultSpec.cloneDir}`);
|
|
35
35
|
}
|
|
36
|
-
console.log(`[babysitter
|
|
36
|
+
console.log(`[babysitter] process library state: ${active.stateFile}`);
|
|
37
37
|
warnWindowsHooks();
|
|
38
|
-
console.log('[babysitter
|
|
39
|
-
console.log('[babysitter
|
|
38
|
+
console.log('[babysitter] Installation complete!');
|
|
39
|
+
console.log('[babysitter] Restart Cursor to pick up the installed plugin and config changes.');
|
|
40
40
|
} catch (err) {
|
|
41
|
-
console.error(`[babysitter
|
|
41
|
+
console.error(`[babysitter] Failed to install plugin: ${err.message}`);
|
|
42
42
|
process.exitCode = 1;
|
|
43
43
|
}
|
|
44
44
|
}
|
package/bin/uninstall.js
CHANGED
|
@@ -19,10 +19,10 @@ function main() {
|
|
|
19
19
|
if (fs.existsSync(pluginRoot)) {
|
|
20
20
|
try {
|
|
21
21
|
fs.rmSync(pluginRoot, { recursive: true, force: true });
|
|
22
|
-
console.log(`[babysitter
|
|
22
|
+
console.log(`[babysitter] Removed ${pluginRoot}`);
|
|
23
23
|
removedPlugin = true;
|
|
24
24
|
} catch (err) {
|
|
25
|
-
console.warn(`[babysitter
|
|
25
|
+
console.warn(`[babysitter] Warning: Could not remove plugin directory ${pluginRoot}: ${err.message}`);
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
|
|
@@ -30,11 +30,11 @@ function main() {
|
|
|
30
30
|
removeManagedHooks(cursorHome);
|
|
31
31
|
|
|
32
32
|
if (!removedPlugin) {
|
|
33
|
-
console.log('[babysitter
|
|
33
|
+
console.log('[babysitter] Plugin directory not found, config and hooks cleaned if present.');
|
|
34
34
|
return;
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
console.log('[babysitter
|
|
37
|
+
console.log('[babysitter] Restart Cursor to complete uninstallation.');
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
main();
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Assimilate an external methodology, harness, or specification into babysitter process definitions with skills and agents.
|
|
3
|
+
argument-hint: Target to assimilate (e.g. repo URL, harness name, or spec path)
|
|
4
|
+
allowed-tools: Read, Grep, Write, Task, Bash, Edit, Grep, Glob, WebFetch, WebSearch, Search, AskUserQuestion, TodoWrite, TodoRead, Skill, BashOutput, KillShell, MultiEdit, LS
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Invoke the babysitter:babysit skill (using the Skill tool) and follow its instructions (SKILL.md).
|
|
8
|
+
|
|
9
|
+
Use the assimilation domain processes from the active process library to convert external sources into well-defined babysitter process definitions with accompanying skills/ and agents/ directories.
|
|
10
|
+
|
|
11
|
+
If the workspace does not already have an active process-library binding, initialize it first through the shared global SDK binding:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
babysitter process-library:active --json
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Run the process after formalizing it.
|
|
18
|
+
|
|
19
|
+
Available assimilation workflows:
|
|
20
|
+
- **methodology-assimilation** (`specializations/domains/assimilation/workflows/methodology-assimilation`) - Learns an external methodology from its repo and converts procedural instructions, commands, and manual flows into babysitter processes with refactored skills and agents. Supports output as methodology or specialization.
|
|
21
|
+
- **harness integration** (`specializations/domains/assimilation/harness/*`) - Integrates babysitter SDK with a specific AI coding harness (generic, codex, opencode, gemini-cli, openclaw, antigravity).
|
|
22
|
+
|
|
23
|
+
During the interview phase, determine which assimilation workflow to use based on the user's target:
|
|
24
|
+
- If the target is a **repo URL or methodology name** then use the methodology-assimilation workflow.
|
|
25
|
+
- If the target is a **harness name** (e.g. codex, opencode, antigravity) then use the matching harness process.
|
|
26
|
+
- If the target is a **specification or other source** then adapt the methodology-assimilation workflow for the spec format.
|
|
27
|
+
- If unclear, ask the user to clarify the assimilation target and type.
|
|
28
|
+
|
|
29
|
+
## After Assimilation: Contribute Back
|
|
30
|
+
|
|
31
|
+
After successfully assimilating a methodology or harness integration, prompt the user to share it with the community. The assimilated process definitions, skills, and agents could benefit other babysitter users:
|
|
32
|
+
|
|
33
|
+
- **Completed a methodology assimilation**: `/babysitter:contrib library contribution: assimilated [methodology-name] into babysitter process definitions`
|
|
34
|
+
- **Completed a harness integration**: `/babysitter:contrib library contribution: [harness-name] harness integration`
|
|
35
|
+
- **Hit issues during assimilation** (e.g. unsupported patterns, missing SDK features): `/babysitter:contrib bug report: assimilation of [target] failed because [description]` or `/babysitter:contrib feature request: [what the SDK needs to support]`
|
|
36
|
+
|
|
37
|
+
Even just reporting that an assimilation didn't work well helps improve babysitter for everyone.
|
package/commands/call.md
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Orchestrate a babysitter run. use this command to start babysitting a complex workflow.
|
|
3
|
+
argument-hint: Specific instructions for the run.
|
|
4
|
+
allowed-tools: Read, Grep, Write, Task, Bash, Edit, Grep, Glob, WebFetch, WebSearch, Search, AskUserQuestion, TodoWrite, TodoRead, Skill, BashOutput, KillShell, MultiEdit, LS
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Invoke the babysitter:babysit skill (using the Skill tool) and follow its instructions (SKILL.md).
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Clean up .a5c/runs and .a5c/processes directories. Aggregates insights from completed/failed runs into docs/run-history-insights.md, then removes old run data and orphaned process files.
|
|
3
|
+
argument-hint: "[--dry-run] [--keep-days N] Optional flags. --dry-run shows what would be removed without deleting. --keep-days N keeps runs newer than N days (default 7)."
|
|
4
|
+
allowed-tools: Read, Grep, Write, Task, Bash, Edit, Grep, Glob, WebFetch, WebSearch, Search, AskUserQuestion, TodoWrite, TodoRead, Skill, BashOutput, KillShell, MultiEdit, LS
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Invoke the babysitter:babysit skill (using the Skill tool) and follow its instructions (SKILL.md).
|
|
8
|
+
|
|
9
|
+
Create and run a cleanup process using the process at `skills\babysit\process\cradle\cleanup-runs.js/processes/cleanup-runs.js`.
|
|
10
|
+
|
|
11
|
+
Implementation notes (for the process):
|
|
12
|
+
- Parse arguments for `--dry-run` flag (if present, set dryRun: true in inputs) and `--keep-days N` (default: 7)
|
|
13
|
+
- The process scans .a5c/runs/ for completed/failed runs, aggregates insights, writes summaries, then removes old data
|
|
14
|
+
- Always show the user what will be removed before removing (in interactive mode via breakpoints)
|
|
15
|
+
- In non-interactive mode (yolo), proceed with cleanup using defaults
|
|
16
|
+
- The insights file goes to docs/run-history-insights.md
|
|
17
|
+
- Only remove terminal runs (completed/failed) older than the keep-days threshold
|
|
18
|
+
- Never remove active/in-progress runs
|
|
19
|
+
- Remove orphaned process files not referenced by remaining runs
|
|
20
|
+
- After cleanup, show remaining run count and disk usage
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Submit feedback or contribute to babysitter project
|
|
3
|
+
argument-hint: Specific instructions for the run.
|
|
4
|
+
allowed-tools: Read, Grep, Write, Task, Bash, Edit, Grep, Glob, WebFetch, WebSearch, Search, AskUserQuestion, TodoWrite, TodoRead, Skill, BashOutput, KillShell, MultiEdit, LS
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Invoke the babysitter:babysit skill (using the Skill tool) and follow its instructions (SKILL.md).
|
|
8
|
+
|
|
9
|
+
## Process Routing
|
|
10
|
+
|
|
11
|
+
Contribution processes live under the active process library's `cradle/` directory. Resolve the active library root with `babysitter process-library:active --json` and route based on arguments:
|
|
12
|
+
|
|
13
|
+
### Issue-based (opens a GitHub issue in a5c-ai/babysitter)
|
|
14
|
+
* **Bug report** → `cradle/bug-report.js#process` — Report a bug in the SDK, CLI, process library, etc.
|
|
15
|
+
* **Feature request** → `cradle/feature-request.js#process` — Request a new feature or enhancement
|
|
16
|
+
* **Documentation question** → `cradle/documentation-question.js#process` — Ask about undocumented behavior or missing docs
|
|
17
|
+
|
|
18
|
+
### PR-based (forks repo, creates branch, submits PR to a5c-ai/babysitter)
|
|
19
|
+
* **Bugfix** → `cradle/bugfix.js#process` — User already has the fix for a bug
|
|
20
|
+
* **Feature implementation** → `cradle/feature-implementation-contribute.js#process` — User already has a feature implementation
|
|
21
|
+
* **Harness integration** → `cradle/feature-harness-integration-contribute.js#process` — User has a harness (CI/CD, IDE, editor) integration
|
|
22
|
+
* **Library contribution** → `cradle/library-contribution.js#process` — New or improved process/skill/subagent for the library
|
|
23
|
+
* **Documentation answer** → `cradle/documentation-contribute-answer.js#process` — User has an answer for an unanswered docs question
|
|
24
|
+
|
|
25
|
+
### Router (when arguments are empty or general)
|
|
26
|
+
* **Contribute** → `cradle/contribute.js#process` — Explains contribution types and routes to the specific process
|
|
27
|
+
|
|
28
|
+
## Contribution Rules
|
|
29
|
+
|
|
30
|
+
* PR-based contributions: fork the babysitter repo (a5c-ai/babysitter) for the user, ask to star if not already starred, perform changes, submit PR
|
|
31
|
+
* Issue-based contributions: gather details, search for duplicates, review, then open an issue in a5c-ai/babysitter
|
|
32
|
+
* Add breakpoints (permissions) before ALL gh actions (fork, star, submit PR/issue) to allow user review and cancellation
|
|
33
|
+
* If arguments are empty: use the `contribute.js` router process to show options and route accordingly
|