pi-delegate

Installation
SKILL.md

Pi Delegate

Use this skill after the calling Agent has understood the request, decided the approach, and bounded one atomic task. The calling Agent is the Supervisor: it owns architecture, task splitting, model/thinking choices, authorization, review, and final acceptance. Pi is one Worker for one task and one Session. Do not build orchestration, planners, or subagents inside Pi.

Runner

Use scripts/pi-worker.mjs when Node.js is available. It reads one JSON request from stdin, writes one final JSON result to stdout, and sends progress to stderr. Invoke it through the host's normal local execution API with an argument array. The runner launches Pi with child_process.spawn(..., { shell: false }); this is an internal runner safety requirement and does not require the calling Agent to have a process API of its own. The child inherits the host-provided environment and execution permissions. The host Agent owns sandbox policy and any permission request; the runner cannot grant itself access. Never build a shell command string. The runner passes the complete Prompt through Pi's stdin by default. Only a confirmed pre-execution stdin rejection may retry once with the Prompt as a single argv element after --. Markdown, backticks, $, quotes, newlines, Unicode, and code blocks are never shell-expanded.

Example invocation shape (API shape, not a shell command):

spawn(process.execPath, [runnerPath], { cwd: request.cwd, shell: false, stdio: ['pipe', 'pipe', 'pipe'] });
// then write JSON.stringify(request) to stdin and parse the single stdout JSON result

Atomic task contract

Every delegate task must be a supervisor-defined atomic task. Required fields:

Installs
3
GitHub Stars
3
First Seen
Sep 30, 2026