summaryrefslogtreecommitdiff
path: root/skills/pi-subagent/SKILL.md
AgeCommit message (Collapse)Author
11 dayssz-final-review-loop: wait with a wake armed, not blocked in sz-wait-forIgor Soarez
The loop's agents blocked in a foreground sz-wait-for because nothing could bring an agent back from a background one. Both harnesses now can: pi's alarm fires when a when_done command exits, and Claude Code starts a new turn when a run_in_background Bash task exits (checked on 2.1.310). So an agent arms sz-wait-for as a wake and ends its turn: no context resent every 30 minutes to re-arm, the human can talk to it while it waits, and "arm, then signal" becomes literal. The foreground wait stays for a harness with neither. The invariant is unchanged in substance: never idle, where idle now means the other side's turn with no wake armed. sz-wait-for stays the watcher, for its settle window. pi-subagent: §5 says how to be woken in Claude Code too.
11 dayspi alarm: fire when a command exits or when processes exitIgor Soarez
when_done runs a command (bash -c, in pi's cwd, output to a log file) and fires when it exits, with its exit status; cancelling the alarm or ending the session stops it. when_exits polls PIDs already running and fires once all are gone. Either takes an optional deadline, 24 hours by default, at which the alarm fires anyway and a still-running command is stopped. A process exiting is a signal any condition can be turned into -- gh run watch, sz-wait-for, an until-curl loop -- so the agent can start something long, end its turn and be woken, instead of blocking on it. The delivery path is the existing one, unchanged. pi-subagent: §5 sets an alarm on the runs' PIDs instead of waiting.
2026-10-21pi-subagent: opt-in sessions, to follow up, resume after a timeout, or forkIgor Soarez
run-agent.sh still runs with --no-session by default. --session saves the run as session <name> under <workdir>/sessions/; --followup TEXT sends the next message in it, from any provider and model; --fork FROM starts <name> as a copy of FROM. A follow-up or fork inherits --tools, --thinking, --cwd and --context-files, so a read-only subagent stays read-only, and the earlier round's files move to <name>.round<N>.*. Sessions are opened by file path: by id, pi looks only among sessions started in the current directory and otherwise silently creates an empty one, exit 0. A fresh retry moves the old session aside, since pi would resume it given the same id. pi-review-panel launches members with --session, so a contradiction can be put to both reviewers before it is settled; verdicts are still tallied from the original reviews. From dot request 20261021-123436-work-laptop-d0adf2.
2026-10-21skills: pi-subagent, extracted from pi-review-panel, which now runs on itIgor Soarez
The panel's mechanics -- headless pi runs that don't hang, answer extraction, billed cost, retries, verifying what comes back -- are not review-specific. pi-subagent covers one delegated task, one brief fanned out to several models, or a job split into parallel parts; pi-review-panel keeps only what a review adds. run-agent.sh replaces run-member.sh and fixes what it got wrong: - `timeout` is not on a Mac without coreutils, which failed every member with exit 127; it falls back to gtimeout, then perl's alarm (142 -> 124). - pi exits 0 when the provider refuses the request, or the answer is empty; both are now exit 1, with stopReason and error in the cost file. - a retry moves the earlier attempt to <name>.attempt<N>.* instead of overwriting its cost file. New options: --tools (an allowlist; read,grep,find,ls is read-only by construction), --cwd, --context-files, --brief, --deliver. status.sh replaces the `pgrep -f run-member.sh` loop, which counted every panel on the machine, and prints the cost table. From dot request 20261021-114826-work-laptop-2b868c.