| name | babysit |
| description | Orchestrate via @babysitter. Use this skill when asked to babysit a run, orchestrate a process or whenever it is called explicitly. (babysit, babysitter, orchestrate, orchestrate a run, workflow, etc.) |
babysit
Orchestrate .a5c/runs/<runId>/ through iterative execution.
Dependencies
Babysitter SDK and CLI
Read the SDK version from versions.json to ensure version compatibility:
SDK_VERSION=$(node -e "try{console.log(JSON.parse(require('fs').readFileSync('${PLUGIN_ROOT}/versions.json','utf8')).sdkVersion||'latest')}catch{console.log('latest')}")
sudo npm i -g @a5c-ai/babysitter-sdk@$SDK_VERSION
then use the CLI alias: CLI="babysitter"
Alternatively, use the CLI alias: CLI="npx -y @a5c-ai/babysitter-sdk@$SDK_VERSION"
jq
make sure you have jq installed and available in the path. if not, install it.
Instructions
Run the following command to get full orchestration instructions:
babysitter instructions:babysit-skill --harness github-copilot --json
Follow the instructions returned by the command above to orchestrate the run.
GitHub Copilot CLI -- In-Turn Loop Model
IMPORTANT: Unlike Claude Code, GitHub Copilot CLI does NOT have a Stop hook
that can drive the orchestration loop between turns. The sessionEnd hook output
is ignored and cannot block or restart the session.
Therefore, you MUST use in-turn iteration: run the full orchestration loop
within a single session turn. The pattern is:
babysitter run:iterate --json -- get pending actions
- For each pending action: execute it (run tasks, post results via
task:post)
babysitter run:iterate --json -- check for more pending actions
- Repeat steps 2-3 until run completes or reaches a breakpoint requiring user input
- If a breakpoint requires user input, ask the user and post the response, then continue iterating
All iteration happens within the same turn -- do NOT rely on hooks to re-enter
the orchestration loop. The agent drives the loop directly by calling
run:iterate repeatedly until completion.
Loop Example
RESULT=$(babysitter run:iterate --run-id "$RUN_ID" --json)
STATUS=$(echo "$RESULT" | jq -r '.status')
while [ "$STATUS" != "completed" ] && [ "$STATUS" != "failed" ]; do
RESULT=$(babysitter run:iterate --run-id "$RUN_ID" --json)
STATUS=$(echo "$RESULT" | jq -r '.status')
done