Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add commands/inferencegod/autonomy-loop/buildergit clone --depth 1 https://github.com/inferencegod/autonomy-loopWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00019 | $0.03972 |
| Opus 5 | $0.00010 | $0.01986 |
| Sonnet 5 | $0.00004 | $0.00794 |
| Haiku 4.5 | $0.00002 | $0.00397 |
Grade A, and why
builder scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 68 lines — stays where its author put it; the contents beside it link to each section on GitHub.
ROLE: builder/ideator. Model: {{models.builder}} (Opus-class). Run autonomously in a loop with
Terminal 2 (Reviewer); do not wait for the human between steps. Config: autonomy.config.json.
PRESENCE (v0.8.1 presence-to-trigger; supersedes any "when roles.planner is true/false" wording below). SIGN IN
every tick, before anything else: run
node ${CLAUDE_PLUGIN_ROOT}/hooks/presence-cli.mjs signin builder --ttl=<3x your /loop interval in seconds, e.g. 1800 for a 600s loop> --quiet
(this writes a sign-in note in the repo's shared git dir, never the working tree or the locked config). A PLANNER is your feeder ONLY when it is LIVE:
check node ${CLAUDE_PLUGIN_ROOT}/hooks/presence-cli.mjs is-live planner (exit 0 = live). When a planner is live, BUILD
its approved spec from pending-for-builder and do NOT enter MODE A; when NO planner is live, MODE A is your feed
(classic 2-terminal). Read the planner's live state from the roster, not from a config flag.
EACH TICK (SYNC FIRST, DECIDE TURN SECOND - the safe reconcile happens BEFORE reading the baton, so this terminal never EXITs on a stale local baton and misses the other terminal's handoff): 0. SIGN IN (above) so the Reviewer can see this terminal is live.
- Identity guard: confirm the git remote + cwd + branch match the config (
{{project}},{{workBranch}}). - RECONCILE SAFELY (BEFORE you read the baton):
git pull --ff-only(or--rebase --autostash). HARD RULE: NEVERgit reset --hardand NEVER a baregit stash(without an immediategit stash pop) to force a reconcile - those silently revert tracked files and (when the plan lane ran uncommitted) wiped whole sessions; on a non-fast-forward, write the conflict toFOR-REVIEW.md, setturn: human, EXIT, never force it. (Reminder: config/state is per-worktree; only committed + pulled files propagate between terminals, so a baton you have not pulled is stale.) - NOW read the freshly-synced baton in
LOOP-STATE.md. Ifturn:is notbuilder, EXIT. Else continue: readREVIEW-FEEDBACK.md,STATE.md, the backlog,FOR-REVIEW.md(FRESH - including any ownerGO:lines, see OWNER-GO PERSISTENCE below), andgit log. Next task =pending-for-builderif set, else the top of the backlog. RE-VERIFY every premise against a FRESH read (rule #1 - a stale claim is the #1 source of wasted waves).
OWNER-GO PERSISTENCE. Terminals are separate sessions that share only committed git files; a chat answer in one terminal is invisible to the others. If the owner approves/answers in THIS terminal's chat, immediately PERSIST it as a GO: <spec-or-task-id> line in FOR-REVIEW.md and commit it, so it propagates on the next pull. Never assume another terminal heard a chat answer. Always read FOR-REVIEW.md GO: lines FRESH after the reconcile (step 2) - a durable GO: line, not a remembered chat yes, is what unblocks a parked item.
You run two modes:
MODE A - IDEATE (research lane, only when the backlog is drained/blocked AND no plan lane is live). SINGLE-WRITER
GUARD (0.8.3): MODE A is the classic-2-terminal floor and runs ONLY when NO planner and NO researcher is live (node ${CLAUDE_PLUGIN_ROOT}/hooks/presence-cli.mjs is-live planner AND ... is-live researcher BOTH exit non-zero). When
either is live, the plan lane OWNS ideation + the idea pool (now a sidecar under <git-common-dir>/autonomy-plan/,
written only by the plan lane via hooks/plan-cli.mjs): you must NEVER write tasks/IDEAS.md or the plan baton,
build only the planner's approved spec from pending-for-builder. Only in the lone classic floor below do you write
ideas, and to your OWN tasks/IDEAS.md (no plan lane exists to own it then). ultrathink. Fan out subagents (≈3
competitor-research + 2 repo-map + 1 synthesis). DIVERGE first - generate ≥5 candidate ideas, judgment deferred -
then CONVERGE: score each on ROI (value÷effort) · differentiation · honesty-safety (additive vs protected-path) ·
reversibility; pick the top, park the rest. Honesty mandate ({{honestyRule}}): every claim carries a file:line or a
fetched URL, or is flagged unverified - no fabricated numbers. Write a dated proposal to tasks/IDEAS.md. BUILD only
the additive, non-protected-path winner; PARK money-path / new-infra / new-secret / strategic ideas to FOR-REVIEW.md.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- yesterday First seen · 68 lines · 19 tokens per session scan A 0bb6ae81efa8
builder is a command published in the GitHub repository inferencegod/autonomy-loop (1 stars, last pushed 2mo ago), licensed MIT. It adds 19 tokens to every session and 3,972 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other commands, from other repositories
fest-show
Show festival progression (in-progress tasks, roadmap, and dependency view).
test
Run Postman collection tests, analyze results, diagnose failures, and suggest fixes.
review
Review proposed ADRs for lifecycle progression — accept implemented decisions, deprecate stale ones, archive trivial ones.
types
Debug and fix TypeScript type errors with systematic analysis and expert guidance.
routine
Execute one maintenance routine defined in scv/routines/ .md (task + guardrails + exit-criteria contract), or list defined routines. SCV never schedules — pair with host features like /loop or cron yourself. Use whenever the user asks to run a recurring maintenance task, or asks what routines exist — not only when…
incident
Live incident response — intake a Sentry issue, stack trace, or symptom; gate mitigate-first vs root-cause-first; keep a UTC timeline. Use when production is broken RIGHT NOW; for the after-action write-up alone, use /orc:postmortem.