From autopilot
The discipline layer for autonomous roadmap execution — survival rules, verification gates, the strictly-serial merge protocol, crash recovery, and the communication contract. Load this whenever running autopilot:task, /autopilot:solo, or /autopilot:fleet; every other autopilot component references it instead of restating it.
How this skill is triggered — by the user, by Claude, or both
Slash command
/autopilot:standardsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
These are the rules that keep an autonomous agent alive and trustworthy. They are
These are the rules that keep an autonomous agent alive and trustworthy. They are
project-agnostic: they speak in the engine's abstract verbs, never in a specific
tool. Your project's config binds the verbs to real commands — the base roadmap.config.md
(plumbing), composed with the active initiative's roadmaps/<id>.md overlay (source + queue).
Wherever a rule says verify, push, merge, comment-pr, etc., run the binding the
effective config defines for that verb.
Every rule below was earned the hard way. Treat them as non-negotiable unless the project's config (base or overlay) explicitly overrides one.
The cardinal sin is reporting success you did not observe.
verify
command runs in the background waiting for a notification. Agents die there. A gate that
takes twenty minutes in the foreground is correct; a backgrounded one that "completes"
while you were composing a message means you died, not finished.cmd > run.log 2>&1; echo "exit=$?". Piping through tail/head discards the real exit
code, and temp filesystems hit transient out-of-space errors that a pipe will hide.verify must run against committed state. Many verify commands diff against the
remote base and see only committed changes — commit first, or you will "pass" having
tested nothing.verify gate. It is not a formality.push was accepted. After pushing, check the remote tip equals your
local tip. A rejected (non-fast-forward) push followed by a squash-merge silently drops
your commits. Never treat a branch as current until the push is confirmed.park the task. A disabled test is a lie told to the next agent.merge only when every gate is satisfied: verify green on the rebased branch, all
required reviews triaged with no open high-severity finding, and the task's own checklist
done. If a project marks a class of decision as reserved to a human, build everything
around the reserved core, leave a clearly-tagged pending note, and continue — never
implement the reserved part yourself.branch → push →
open-pr → merge. Never commit to or force-push the base.trap/finally). Orphans starve every later gate on the machine — one stray pool of
busy-loops once held an entire CI host hostage for hours.log-decision, and proceed.
Your replacement for a human stakeholder is the set of canonical documents the
roadmap.config.md names.ps aux | sort -rk3 | head): a dead sibling's leftovers, not the test, are often the
cause.TASK-ID → PR #N merged or TASK-ID → parked: <reason, ≤5 words>). All prose lives in
artifacts: specs, PR descriptions, tracker comments, memory. Do not narrate, plan aloud,
or summarize what you are doing.chore(roadmap): scaffold <id>, not "scaffold roadmap overlay"). Keep that reasoning in your own
head and in log-decision. The user sees only the
contract lines above, the one-line drift report (§3 / the drift check), and the digest
pointer — nothing about how the queue was resolved or sequenced.comment-pr the instant its triage is done, before you write any sentence about it.
Producing a review's text without posting it is the single most common way these agents
die: the turn ends on the review text and someone else has to finish your job. If your
last action generated a review, your turn is not over.Run this every time, before you compose any final message. It is the single gate the rest of these standards converge on — most agent deaths are a missed line here:
comment-pr and the URL came back. If not, post it now — your turn is not over.push accepted (remote
tip == local tip), verify green against committed state, merge confirmed to contain
your work.complete, log-decision, derive, and any pending-human note
are written to artifacts — not merely described in chat.Failing any check means you are not done: fix it before sending, don't narrate it.
These apply whenever a fleet runs agents in parallel against one repository.
branch/commit/checkout can fail when siblings hold the
index lock — retry after a few seconds. Critically, verify the current branch
(git branch --show-current) before any gate: a silently-failed checkout leaves you on
the base branch, and the gate then "passes" on the base instead of your work.This is what makes parallel execution safe. The orchestrator merges one PR at a time, in completion order, onto the roadmap's configured base — its integration branch when one is set (§11), mainline otherwise; two concurrent roadmaps each run their own queue on their own branch and never interact. For each ready PR:
verify after any
source conflict. Anchor commands with an absolute path and verify the current branch
before any gate.verify with full log capture to a file — never trust a piped exit code. Perform any
deferred manual QA now.push and confirm acceptance (remote tip == local
tip) before merge. A rejected push plus a squash-merge silently drops the fixes.merge, then sync the base and confirm the merged commit actually contains what you
think it does when fixes were involved. Only now remove the agent's worktree and local
branch — never on a completion notification, which can fire while the agent is still
reviving; removing a live agent's worktree kills it.complete the task, post its decision lines via log-decision, derive
any follow-up work, post pending-human notes.claim the next fitting task and spawn.If steps 1–2 fail twice on the same PR for non-environmental reasons, park it and free the
lane.
Agents die ending their turn on a background gate or on review text.
comment-pr (with a one-line
attribution note), confirms remote tip == worktree tip, and runs the normal queue pass.
Diagnose by reading the PR's comments and the worktree before assuming anything is missing.sonnet). Mechanical =
the outcome is extractive or binary, not a judgment call: evidence extraction ("did review
X run? quote the verdict"), data cross-checks (key-completeness, id↔enum parity),
"does X exist" sweeps, false-positive filtering against an explicit exclusion list.Autopilot runs to completion, then stops — it is not a daemon.
park it and take the next.
Two consecutive parked tasks in a row: likely systemic — write a digest and stop rather
than burning the queue.Autopilot runs at most one solo/fleet per roadmap at a time — two runs on one roadmap would share its queue and trample each other. Two agents driving different roadmaps may run concurrently; the marker is per-roadmap, never a repo-wide lock.
examples/bindings/).A roadmap that runs alongside another targets its own integration branch instead of mainline
(its effective ## Code-host binding points branch/open-pr/merge at integration/<ID>).
This makes concurrency safe by construction: each roadmap's serial merge queue (§6) lives on
its own branch, so two concurrent runs never share a queue and cannot collide — no cross-roadmap
lane-surface coordination is needed.
verify after
any conflict, so the final merge stays small.reconcile merges the integration branch into
mainline behind the full verify gate and the conflict protocol — a single deliberate merge,
naturally serialized with any other roadmap's reconcile because they all target mainline. If
it conflicts irreducibly, park the reconcile with a note and report; never force it.reconcile.Guides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub odelrio/autopilot --plugin autopilot