@a5c-ai/babysitter-github 0.1.1-staging.0a3fc67d → 0.1.1-staging.0dc03363
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/.github/plugin.json +25 -0
- package/README.md +121 -22
- package/bin/cli.js +12 -0
- package/bin/install-shared.js +252 -1
- package/bin/install.js +60 -12
- package/bin/uninstall.js +1 -1
- 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/package.json +8 -4
- package/plugin.json +5 -50
- package/scripts/sync-command-surfaces.js +62 -0
- package/scripts/team-install.js +8 -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
package/package.json
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@a5c-ai/babysitter-github",
|
|
3
|
-
"version": "0.1.1-staging.
|
|
3
|
+
"version": "0.1.1-staging.0dc03363",
|
|
4
4
|
"description": "Babysitter orchestration plugin for GitHub Copilot CLI with lifecycle hooks and SDK-managed process-library bootstrapping",
|
|
5
5
|
"scripts": {
|
|
6
|
-
"test": "
|
|
6
|
+
"test": "node scripts/sync-command-surfaces.js --check && node test/cloud-agent-install.test.js",
|
|
7
|
+
"sync:commands": "node scripts/sync-command-surfaces.js",
|
|
7
8
|
"postinstall": "node bin/install.js",
|
|
8
9
|
"preuninstall": "node bin/uninstall.js",
|
|
9
10
|
"team:install": "node scripts/team-install.js",
|
|
@@ -21,7 +22,10 @@
|
|
|
21
22
|
"bin/",
|
|
22
23
|
"scripts/",
|
|
23
24
|
"versions.json",
|
|
24
|
-
"AGENTS.md"
|
|
25
|
+
"AGENTS.md",
|
|
26
|
+
"commands/",
|
|
27
|
+
".github/",
|
|
28
|
+
"README.md"
|
|
25
29
|
],
|
|
26
30
|
"keywords": [
|
|
27
31
|
"babysitter",
|
|
@@ -41,6 +45,6 @@
|
|
|
41
45
|
},
|
|
42
46
|
"homepage": "https://github.com/a5c-ai/babysitter/tree/main/plugins/babysitter-github#readme",
|
|
43
47
|
"dependencies": {
|
|
44
|
-
"@a5c-ai/babysitter-sdk": "0.0.
|
|
48
|
+
"@a5c-ai/babysitter-sdk": "0.0.184-staging.0dc03363"
|
|
45
49
|
}
|
|
46
50
|
}
|
package/plugin.json
CHANGED
|
@@ -2,57 +2,12 @@
|
|
|
2
2
|
"name": "babysitter",
|
|
3
3
|
"version": "0.1.0",
|
|
4
4
|
"description": "Orchestrate complex, multi-step workflows with event-sourced state management, hook-based extensibility, and human-in-the-loop approval -- powered by the Babysitter SDK",
|
|
5
|
-
"author": "a5c.ai",
|
|
5
|
+
"author": { "name": "a5c.ai", "email": "support@a5c.ai" },
|
|
6
6
|
"license": "MIT",
|
|
7
|
-
"
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
},
|
|
12
|
-
"commands": [],
|
|
13
|
-
"skills": [
|
|
14
|
-
{
|
|
15
|
-
"name": "babysit",
|
|
16
|
-
"file": "skills/babysit/SKILL.md"
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
"name": "call",
|
|
20
|
-
"file": "skills/call/SKILL.md"
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
"name": "doctor",
|
|
24
|
-
"file": "skills/doctor/SKILL.md"
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
"name": "retrospect",
|
|
28
|
-
"file": "skills/retrospect/SKILL.md"
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
"name": "resume",
|
|
32
|
-
"file": "skills/resume/SKILL.md"
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
"name": "observe",
|
|
36
|
-
"file": "skills/observe/SKILL.md"
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
"name": "help",
|
|
40
|
-
"file": "skills/help/SKILL.md"
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
"name": "plan",
|
|
44
|
-
"file": "skills/plan/SKILL.md"
|
|
45
|
-
},
|
|
46
|
-
{
|
|
47
|
-
"name": "assimilate",
|
|
48
|
-
"file": "skills/assimilate/SKILL.md"
|
|
49
|
-
},
|
|
50
|
-
{
|
|
51
|
-
"name": "user-install",
|
|
52
|
-
"file": "skills/user-install/SKILL.md"
|
|
53
|
-
}
|
|
54
|
-
],
|
|
55
|
-
"contextFileName": "AGENTS.md",
|
|
7
|
+
"skills": "skills/",
|
|
8
|
+
"hooks": "hooks.json",
|
|
9
|
+
"commands": "commands/",
|
|
10
|
+
"agents": "AGENTS.md",
|
|
56
11
|
"repository": {
|
|
57
12
|
"type": "git",
|
|
58
13
|
"url": "https://github.com/a5c-ai/babysitter"
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const path = require('path');
|
|
4
|
+
const {
|
|
5
|
+
listDirectories,
|
|
6
|
+
listMarkdownBasenames,
|
|
7
|
+
reportCheckResult,
|
|
8
|
+
syncCommandMirrors,
|
|
9
|
+
syncSkillsFromCommands,
|
|
10
|
+
} = require('../../../scripts/plugin-command-sync-lib.cjs');
|
|
11
|
+
|
|
12
|
+
const PACKAGE_ROOT = path.resolve(__dirname, '..');
|
|
13
|
+
const REPO_ROOT = path.resolve(PACKAGE_ROOT, '..', '..');
|
|
14
|
+
const ROOT_COMMANDS = path.join(REPO_ROOT, 'plugins', 'babysitter', 'commands');
|
|
15
|
+
const PLUGIN_COMMANDS = path.join(PACKAGE_ROOT, 'commands');
|
|
16
|
+
const PLUGIN_SKILLS = path.join(PACKAGE_ROOT, 'skills');
|
|
17
|
+
const LABEL = 'babysitter-github sync';
|
|
18
|
+
|
|
19
|
+
function getMirroredCommandNames() {
|
|
20
|
+
const local = new Set(listMarkdownBasenames(PLUGIN_COMMANDS));
|
|
21
|
+
return listMarkdownBasenames(ROOT_COMMANDS).filter((name) => local.has(name));
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function getDerivedSkillNames() {
|
|
25
|
+
const local = new Set(listDirectories(PLUGIN_SKILLS));
|
|
26
|
+
return listMarkdownBasenames(PLUGIN_COMMANDS).filter((name) => local.has(name));
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function main() {
|
|
30
|
+
const check = process.argv.includes('--check');
|
|
31
|
+
const mirrorResult = syncCommandMirrors({
|
|
32
|
+
label: LABEL,
|
|
33
|
+
sourceRoot: ROOT_COMMANDS,
|
|
34
|
+
targetRoot: PLUGIN_COMMANDS,
|
|
35
|
+
names: getMirroredCommandNames(),
|
|
36
|
+
check,
|
|
37
|
+
cwd: PACKAGE_ROOT,
|
|
38
|
+
});
|
|
39
|
+
const skillsResult = syncSkillsFromCommands({
|
|
40
|
+
label: LABEL,
|
|
41
|
+
sourceRoot: PLUGIN_COMMANDS,
|
|
42
|
+
skillsRoot: PLUGIN_SKILLS,
|
|
43
|
+
names: getDerivedSkillNames(),
|
|
44
|
+
check,
|
|
45
|
+
cwd: PACKAGE_ROOT,
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
if (check) {
|
|
49
|
+
reportCheckResult(LABEL, [...mirrorResult.stale, ...skillsResult.stale]);
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
const updated = mirrorResult.updated + skillsResult.updated;
|
|
54
|
+
if (updated === 0) {
|
|
55
|
+
console.log(`[${LABEL}] no GitHub plugin command changes were needed.`);
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
console.log(`[${LABEL}] updated ${updated} GitHub plugin file(s).`);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
main();
|
package/scripts/team-install.js
CHANGED
|
@@ -16,11 +16,14 @@ const {
|
|
|
16
16
|
function parseArgs(argv) {
|
|
17
17
|
const args = {
|
|
18
18
|
workspace: process.cwd(),
|
|
19
|
+
cloudAgent: false,
|
|
19
20
|
dryRun: false,
|
|
20
21
|
};
|
|
21
22
|
for (let i = 2; i < argv.length; i += 1) {
|
|
22
23
|
if (argv[i] === '--workspace' && argv[i + 1]) {
|
|
23
24
|
args.workspace = path.resolve(argv[++i]);
|
|
25
|
+
} else if (argv[i] === '--cloud-agent') {
|
|
26
|
+
args.cloudAgent = true;
|
|
24
27
|
} else if (argv[i] === '--dry-run') {
|
|
25
28
|
args.dryRun = true;
|
|
26
29
|
}
|
|
@@ -32,7 +35,7 @@ function main() {
|
|
|
32
35
|
const args = parseArgs(process.argv);
|
|
33
36
|
const packageRoot = path.resolve(process.env.BABYSITTER_PACKAGE_ROOT || path.join(__dirname, '..'));
|
|
34
37
|
const workspaceRoot = args.workspace;
|
|
35
|
-
const workspacePluginRoot = path.join(workspaceRoot, 'plugins', 'babysitter
|
|
38
|
+
const workspacePluginRoot = path.join(workspaceRoot, 'plugins', 'babysitter');
|
|
36
39
|
const workspaceMarketplacePath = path.join(workspaceRoot, '.agents', 'plugins', 'marketplace.json');
|
|
37
40
|
const workspaceCopilotDir = path.join(workspaceRoot, '.copilot');
|
|
38
41
|
|
|
@@ -58,6 +61,10 @@ function main() {
|
|
|
58
61
|
ensureMarketplaceEntry(workspaceMarketplacePath, workspacePluginRoot);
|
|
59
62
|
registerCopilotPlugin(workspacePluginRoot);
|
|
60
63
|
installCopilotSurface(packageRoot, workspaceCopilotDir);
|
|
64
|
+
if (args.cloudAgent) {
|
|
65
|
+
const { installCloudAgentSurface } = require('../bin/install-shared');
|
|
66
|
+
installInfo.cloudAgent = installCloudAgentSurface(packageRoot, workspaceRoot);
|
|
67
|
+
}
|
|
61
68
|
|
|
62
69
|
const active = ensureGlobalProcessLibrary(packageRoot);
|
|
63
70
|
installInfo.processLibraryStateFile = active.stateFile;
|
|
@@ -1,17 +1,38 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: assimilate
|
|
3
|
-
description: Assimilate an external methodology,
|
|
3
|
+
description: Assimilate an external methodology, harness, or specification into babysitter process definitions with skills and agents.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# assimilate
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
Invoke the babysitter:babysit skill (using the Skill tool) and follow its instructions (SKILL.md).
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
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.
|
|
11
11
|
|
|
12
|
-
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
12
|
+
If the workspace does not already have an active process-library binding, initialize it first through the shared global SDK binding:
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
babysitter process-library:active --json
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Run the process after formalizing it.
|
|
19
|
+
|
|
20
|
+
Available assimilation workflows:
|
|
21
|
+
- **methodology-assimilation** (`specializations/meta/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.
|
|
22
|
+
- **harness integration** (`specializations/meta/assimilation/harness/*`) - Integrates babysitter SDK with a specific AI coding harness (generic, codex, opencode, gemini-cli, openclaw, antigravity).
|
|
23
|
+
|
|
24
|
+
During the interview phase, determine which assimilation workflow to use based on the user's target:
|
|
25
|
+
- If the target is a **repo URL or methodology name** then use the methodology-assimilation workflow.
|
|
26
|
+
- If the target is a **harness name** (e.g. codex, opencode, antigravity) then use the matching harness process.
|
|
27
|
+
- If the target is a **specification or other source** then adapt the methodology-assimilation workflow for the spec format.
|
|
28
|
+
- If unclear, ask the user to clarify the assimilation target and type.
|
|
29
|
+
|
|
30
|
+
## After Assimilation: Contribute Back
|
|
31
|
+
|
|
32
|
+
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:
|
|
33
|
+
|
|
34
|
+
- **Completed a methodology assimilation**: `/babysitter:contrib library contribution: assimilated [methodology-name] into babysitter process definitions`
|
|
35
|
+
- **Completed a harness integration**: `/babysitter:contrib library contribution: [harness-name] harness integration`
|
|
36
|
+
- **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]`
|
|
37
|
+
|
|
38
|
+
Even just reporting that an assimilation didn't work well helps improve babysitter for everyone.
|
package/skills/call/SKILL.md
CHANGED
|
@@ -1,17 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: call
|
|
3
|
-
description:
|
|
3
|
+
description: Orchestrate a babysitter run. use this command to start babysitting a complex workflow.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# call
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
Resolve the request in `call` mode:
|
|
11
|
-
|
|
12
|
-
- treat everything after `$call` as the initial Babysitter request for a new
|
|
13
|
-
orchestration run
|
|
14
|
-
- create the process, create the run, and enter the Babysitter loop
|
|
15
|
-
- using this always means the user meant an interactive run
|
|
16
|
-
- do not create a separate command surface here; this skill only forwards into
|
|
17
|
-
`babysit`
|
|
8
|
+
Invoke the babysitter:babysit skill (using the Skill tool) and follow its instructions (SKILL.md).
|