project-autopilot
Skill1 starsChanged 21 days agoMITView on GitHub
Multi-agent delivery orchestrator: give a request and it plans, codes, reviews and tests it with your coding-agent CLIs (Planning -> Plan Review -> Implementation -> Code Review -> Gate -> Verification -> Final Review), then leaves the change for a human to commit. Works with standalone and SpecKit projects, checks browser tasks with Playwright, and uses the Claude Code, opencode, Codex and Antigravity CLIs. Runs directly with Node; no installer or certification.
- Installs packages
- Commits and pushes
3 other projects use a version of this.
Adopted by
Most recently taken up by
- SubliminalCoding/bilbroswagginz-skillstheir own version, first seen Sep 27, 2026
- diiiiiiylan/project-autopilottheir own version, first seen Jun 19, 2026
- RajeshKalidandi/dotclaudetheir own version, first seen Apr 10, 2026
Other versions3 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 3
- diiiiiiylan/project-autopilot★ 1same name
- RajeshKalidandi/dotclaude★ 1same name
- SubliminalCoding/bilbroswagginz-skills★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
The file
We split this skill into the rules it gives an agent
10 rules. 0 are common, 1 is distinctive, and 9 are very specific to this project.
0
Common
Most of the 3 edited versions we read keep these.
1
Distinctive
This author's own choices. Worth a look.
9
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 22
Never edit
.autopilot/state.jsonby hand: Use ap reset, ap rebase, ap finding drop or ap cancel. - Very specific: line 28
ap stopandap cancelbelong to the user: Do not start them on your own. - Very specific: line 30
When a mission stops with STOP — human intervention required, report the reason and the resume command it prints.
- Very specific: line 54
All commands take --repo <path> (default: current folder).
- Distinctive: line 96
Code review, per phase: Read-only. Code Review FAIL returns to Implementation for the tasks the findings name.
- Very specific: line 102
Verification: Read-only. The verifier checks each task's acceptance line with the gate evidence and ticks the task in TASKS.md.
- Very specific: line 111
Escalation: When a budget is spent, a task stops progressing, or a guard trips, the mission saves state and stops with STOP — human …
- Very specific: line 262
Keep reviewers independent: never the same model for code_reviewer as implementer, or for plan_reviewer as planner, as primary or fallback.
- Very specific: line 314
Every setting with its default is in docs/configuration.md → Configuration reference (generated from config.schema.json).
- Very specific: line 337
Run npm test for the deterministic test suite (scripts/test-all.mjs), and node scripts/doctor.mjs to check the environment.
“Common” is measured: kept by at least 6 in 10 of the 3 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Project Autopilot
Project Autopilot (ap) carries one request — a mission — from plan to
tested code. Each step is done by a separate role, each role can be a different
agent CLI and model, and every result is checked before the next step:
Planning → Plan Review → Implementation → Code Review → Gate (tests) → Verification → Final Review → Human Review/Commit
Works with SpecKit (drives an existing SpecKit project's tasks) and Playwright
(built in; the verifier checks browser tasks in a real browser). Without SpecKit
it writes its own plan. It is standalone: no other skill is required. The human-facing guide with all
details is README.md; this file is the operating summary for an agent.
Rules for an agent using this skill
- Never commit or push for the mission. Autopilot never runs
git commitorgit push; the finished change waits in the working tree for the human. - Never edit
.autopilot/state.jsonby hand. Useap reset,ap rebase,ap finding droporap cancel; they keep the state consistent and record what changed. - Long-running. A mission takes tens of minutes to hours. Use
ap run --detachon Linux/WSL2 to keep it running in the background, and read.autopilot/missions/<mission>/WATCH-REPORT.mdfor status. ap stopandap cancelbelong to the user. Do not start them on your own;/ap.stopand/ap.cancelare user-only slash commands.- When a mission stops with
STOP — human intervention required, report the reason and the resume command it prints; do not work around the guard.
Getting started
Requires Node.js 18+, Git, one signed-in agent CLI, and bubblewrap on
Linux/WSL2 for the read-only reviewers.
npm install -g project-autopilot # once; or: node <skill>/bin/ap.cjs …
ap setup # once per project (wizard)
ap run "Add a dark-mode toggle to the settings page" # a full missionnode bin/ap.cjs <command> is the authoritative entry point and always works
by path; bin/ap.cmd (Native Windows) and bin/ap (Linux/WSL2) are thin
launchers that only forward the arguments and exit code. If Node.js is missing,
they exit 127. Nothing is installed globally, no PATH or profile is changed,
and there is no certification step: each ap run does a quick, non-authoritative
preflight (CLI present, --version/--help works, configured flags exist,
paths usable).
Command reference
All commands take --repo <path> (default: current folder). Exit codes: 0
success, dry-run or nothing to do; 1 refusal or failure; 2 usage error
(Unknown command); 127 launcher without Node.js 18+.
| Command | Effect | Confirmation |
setup | first-time wizard: roles, CLIs, models, gate commands, runtime mode; installs slash commands; adds .autopilot/ to .gitignore | interactive |
run ["<request>"] [--stage <planning|implement|review|verify>] [--detach] | full mission; no request = resume the open mission; a different request abandons the open mission and starts a new one (loud takeover block, no prompt) | none |
stop [--yes] [--dry-run] | stop the live run, keep the mission (ap run resumes) | y/N |
cancel ["<reason>"] [--yes] [--dry-run] | end the mission; stops a live run first | one y/N for both |
reset [--scope <key>] | clear spent retry counters (all, or one key) | none |
rebase [--note "<why>"] [--yes] | accept operator edits made during a pause | y/N |
finding list / finding drop <n> [--note] [--yes] | list / drop a current review finding | y/N for drop |
config [--role <role>] | edit settings interactively | interactive |
config show [--path <key.path>] [--explain] | print effective settings, marked [default] / [from config.json]; --explain adds a one-line explanation under each setting | none |
config fill [--dry-run] | add missing settings at their defaults, repair $schema | none |
commands | re-install the /ap.* slash-command files | none |
plan-review, code-review, verify-file | adhoc reviews outside any mission (below) | none |
uninstall [--dry-run] [--yes] [--keep-missions] | remove this project's .autopilot/ and its .gitignore line only | y/N |
adapter <certify|status> <adapter> | compatibility no-ops (certification is not required) | none |
help | command list | none |
--yes is required when there is no terminal; without it a state-changing
command refuses instead of acting silently. With a saved wsl2-strong mode,
run, stop and cancel typed on Native Windows hand over to WSL. ap status
and ap watch do not exist; the WATCH-REPORT is the status view.
How a mission runs
- Planning. The spec stage is opt-in (
workflow.standalone_spec: true); without it standalone writesPLAN.md+TASKS.mdonly. With the spec stage on, the planner first writesSPEC.md(FR-### requirements) andCODEMAP.md(code map), reviewed until they pass; thenPLAN.mdandTASKS.mdin.autopilot/missions/<NNN>-<slug>/; tasks cite the FRs they implement. Each task is one concrete action on about one file, with exact paths, anaccept:line and averify:command; more than 3 changes or 2 files means split it. The read-only plan reviewer APPROVES or DENIES with findings; the planner revises up toretries.plan_revisionstimes (the spec review:retries.spec_revisions, default 3, then open findings pass to the plan stage). With the spec on, full plan-review rounds also cross-check SPEC/PLAN/TASKS (coverage, naming, ambiguity, duplicates, conflicts). Plan Review FAIL returns to Planning. - Implementation, per phase. One implementer session per task. At a turn or
token cap the implementer writes a hand-off note (
handoff/<task>.md) and a fresh session continues it, up tocaps.implementer.extra_sessions. - Code review, per phase. Read-only. Code Review FAIL returns to Implementation for the tasks the findings name; the re-review covers its own findings plus the fix.
- Gate. Autopilot runs
tests.gate_commandsitself. Failing tests are re-run on the phase's starting code; failures that existed before are not blamed on the phase, new ones go back to the implementer. - Verification. Read-only. The verifier checks each task's acceptance line
with the gate evidence and ticks the task in
TASKS.md. Verification never runs before Code Review has passed; a FAIL returns to Implementation, then Code Review and Verification repeat. A multi-finding status enumerates each finding against its own evidence, never a group summary. - Final review. The code reviewer reads the whole mission change and, when a
spec exists (
SPEC.md/ SpecKitspec.md), checks every FR against the code; up toretries.final_review_fix_roundsfix rounds. Success printsALL WORK COMPLETE — HUMAN COMMIT REQUIRED. - Escalation. When a budget is spent, a task stops progressing, or a guard
trips, the mission saves state and stops with
STOP — human intervention required(report statusESCALATED). Fix the cause, thenap run; useap resetfirst when a budget ran out. Messages print the exact resume command, e.g.Resume: ap reset --scope <key> then ap run. - Smarter retries. Planner/implementer may have an
escalation_model, used for one fix round after a reviewer reports the same finding not fixedretries.escalate_after_not_fixedtimes (default 2). Continuation sessions that change no file stop afterretries.no_progress_sessions(default 2), after one session on the implementer'sescalation_model(once per fix round), if set. Network tests the task itself env-gates are reviewed statically and listed in MANUAL-CHECKS.md, not failed for needing the network. A session silent fortime_limits.silent_run_minutes(default 10) is stopped asIDLE_HANG; an opencode rate-limit storm asRATE_LIMITED; both consumeinfrastructureRetryBudgetlike a timeout. - Resume.
.autopilot/state.jsonholds checkpoints;ap runre-runs only unfinished work.
Agent slash commands (/ap.…)
ap setup / ap commands install one command set, with the same SpecKit-style
dot names in every supported agent, for agents found on PATH: Claude Code
.claude/commands/ap.<cmd>.md, opencode .opencode/command/ap.<cmd>.md,
Antigravity .agents/skills/ap.<cmd>/SKILL.md (a marked, generated dir per
command). Type them in the agent's chat; arguments are passed through.
/ap.run— Do the whole job: plan, code, review, test until done. All phases, with fix rounds. Terminal:ap run/ap.plan— Step 1 only: write a reviewed spec, plan + task list, then stop. Includes the plan review. Terminal:ap run --stage planning/ap.implement— Step 2 only: code the next part of the plan, then stop (no review). Current phase only; standalone missions only. Terminal:ap run --stage implement/ap.review— Step 3 only: review the code just written, then stop. Current phase only; standalone missions only. Terminal:ap run --stage review/ap.verify— Step 4 only: test the code just reviewed and tick its tasks done. Current phase only; standalone missions only. Terminal:ap run --stage verify/ap.stop— Pause the running mission (continue later with/ap.run). User-only. Terminal:ap stop --yes/ap.cancel— End the current mission for good; stops a live run first. User-only. Terminal:ap cancel --yes
/ap.plan and /ap.run can start a mission or resume the open one; the three
single-step commands need an already-planned standalone mission. User-only
means the model cannot invoke them (Claude Code disable-model-invocation: true;
opencode commands are user-typed); typing them is the confirmation, so they pass
--yes. They are not generated for Antigravity (its skills are model-invocable
with no opt-out) — use a terminal there. ap stop targets only the mission's
owner process, never the chat session. reset, rebase, uninstall, setup
and config are terminal-only. Codex (no custom-prompt loader) and Cursor (not
yet reviewed) get no slash commands. Antigravity commands are verified in the
agy CLI only, not in the Antigravity IDE over WSL. Older generated names
(.claude/commands/ap/*.md, .opencode/command/ap-*.md) are removed by setup,
commands and uninstall.
Adhoc reviews (plan-review, code-review, verify-file)
One-shot reviews outside any mission: no mission state changes, never commit.
ap plan-review <plan-file>— review a plan file (roleplan_reviewer).ap code-review (<range> | <commit> | <diff-file> | <path>) [--range <a..b> | --commit <sha> | --diff-file <file>]— review a diff, commit, range or path (rolecode_reviewer).ap verify-file <criteria-file> [--cmd "<test command>"]— verify a criteria file, optionally running--cmdfirst and giving its output to the verifier as evidence (roleverifier;--cmdruns outside role containment, never in the repo write path).
Slash forms: /ap.plan-review, /ap.code-review, /ap.verify-file.
Refusals (exit 2, nothing runs): missing or unreadable input, verify-file with
no checkable criteria, code-review with an invalid range/commit or an
unresolvable diff, and --cmd on anything but verify-file. Runtime failures
exit 1. Output: .autopilot/adhoc/<timestamp>-<role>/summary.md (verdict,
findings, --cmd evidence), plus cmd-evidence.txt with --cmd; the run's own
files sit in a nested NN-<role>-<id8>/ folder named in the summary.
Mission control
Five operator-only commands act on the active mission — ap stop, ap cancel,
ap reset, ap rebase and ap finding. All five record what they did in
state.json and the mission's WATCH-REPORT.
ap stop
Kill + keep, never terminal: SIGTERM, 10 s grace so the run saves state, then
SIGKILL (taskkill /T, then /T /F on Windows); runs it stopped are marked
INTERRUPTED. State, checkpoints and counters are untouched; ap run resumes.
With no live run it says No mission is running. (or names the idle mission and
points at ap cancel) and changes nothing.
ap cancel [reason]
Prints the plan (mission, phase/step, fields to clear, what is kept) and asks
one y/N that covers stopping a live run too; the process is confirmed dead
before any state is cleared. On y: phase/step become cancelled, every
mission-scoped field is cleared, and lastCancelled{at, reason, previousPhase,
previousStep, mission} is stamped. Files, the Git tree and the mission folder
are kept; failure counters are cleared when the next mission starts.
ap reset [--scope <scope-or-key>]
- Bare: clears every spent failure budget, every task continuation allowance and its dead-ends, and the plan revision counter (review feedback, stage position and hand-off notes are kept). Nothing spent → exit 1.
--scopeclears one key: a failure budget (e.g.infrastructureRetryBudget:mission); a task continuation (full keycontinuationAllowance:task:standalone:phase-1:<taskId>, the scope, or the bare task id — the hand-off note is kept);standalone-plan-revision; orfallback:<role>(drop the sticky fallback, return to the primary model).- Stopped mission: applies at once. Running mission: queued in
.autopilot/reset-request.jsonand applied at the next failure or continuation decision, so the mission continues instead of escalating. It buys one more attempt; it does not fix the cause. It stampslastReset.
ap rebase [--note "<why>"] [--yes]
Accepts a phase-checkpoint drift (PHASE_CHECKPOINT_DRIFT, reason delta
drift) caused by operator edits during a pause: re-points the checkpoint digest
at the observed files and records operatorPhaseEdits (files, note, time, old
and new digests). It always also re-bases the current phase baseline onto
HEAD, so operator commits stop appearing as phase work. --note is shown in
the next implementer/reviewer briefs (Operator note: … (from ap rebase)).
Keeps the phase/step/task cursor; refuses while a run is live; prints nothing
to rebase when the baseline is already at HEAD.
ap finding list / ap finding drop <n>
list numbers the current phase's open review findings. drop <n> removes
finding n from the saved feedback, the review round history and the
last-failure evidence, so the next fix round no longer asks for it; it is
recorded in operatorDroppedFindings. --scope <key> picks another feedback
scope. Refuses while a run is live.
ap uninstall [--dry-run] [--yes] [--keep-missions]
Removes only this project's .autopilot/ folder and the exact .autopilot/
line setup added to .gitignore (a similar line of the user's is kept; EOL style
kept; an emptied .gitignore stays as an empty file). --keep-missions first
archives missions/ to autopilot-missions-archive-<date> at the repository
root. Refuses while a run is live. Not set up → prints Autopilot is not set up
here. and exits 0, without starting the setup wizard.
Roles and containment
- Planner and Implementer write to the repository.
- Plan Reviewer, Code Reviewer and Verifier are read-only:
- Strong mode (
linux-strong/wsl2-strong):bubblewrapbinds the repository read-only and a separate scratch folder writable; network access is normal. OS-enforced, and a hard requirement: without bubblewrap the role fails withREAD_ONLY_CONTAINMENT_UNAVAILABLE. windows-compatibility(Native Windows, SpecKit and standalone): the role works on a throwaway copy — disposable-copy isolation, not OS-enforced.
- Strong mode (
- A before/after Git snapshot and touched-files list are recorded for every
role, whatever the containment. Read-only roles write temporary files in their
scratch/folder under.autopilot/; a write anywhere else, or in the fingerprinted agent folders (.agent/,.claude/,.opencode/,.commandcode/,.mimocode/), stops the run withRelay policy violation: read_only_violation. - Git commit/push and clearly destructive commands are blocked in every role
(see
scripts/relay-guards.mjs,scripts/shell-guard.mjs); harmless blocked Git calls only warn. - Gate commands run without network (
unshare --net) on Linux unlesstests.gate_networkis true. - Keep reviewers independent: never the same model for
code_reviewerasimplementer, or forplan_reviewerasplanner, as primary or fallback.
Known Git-guard limitation
The Git guard is defense in depth for normal PATH-resolved Git, not a hard
boundary: a child that runs an absolute Git path and overrides GIT_CONFIG_*
can bypass the hook layer. Read-only mounts and disposable copies protect the
local repository but cannot stop a remote push — do not expose push-capable
credentials. Writable roles are checked after the run (detection, not prevention).
Models and fallbacks
Each role has cli, model, reasoning, variant, resume_session and
ordered fallbacks. Fallbacks trigger only on rate-limit/quota failures; the
chosen fallback stays sticky and the primary is retried after
advanced.fallback_retry_primary_minutes (default 60). When an opencode
*-free model has used its fallbacks on a rate limit, other discovered free
models are tried — never paid ones (roles.free_models.auto_fallback: false
turns this off); free-model roles get at least roles.free_models.max_turns
turns (default 45). Model lists come from the CLI itself where possible
(opencode models, Codex model/list), else a dated documented list (Claude
aliases) marked non-live, else manual entry.
Setup and configuration
ap setup detects installed CLIs (claude, codex, opencode, agy,
cursor-agent), SpecKit, Playwright and bubblewrap, then configures each
role, fallbacks, escalation models, gate commands (it suggests npm test,
pytest, go test ./..., cargo test or make test when found) and the
runtime mode. ap config can later keep, change or clear the saved test
command. On Native Windows the only question is WSL2 Strong vs Windows
Compatibility, asked when both are usable; the gate network setting follows the
mode (isolated in WSL, network allowed in Compatibility).
.autopilot/config.json uses schema 4.0 (schema_version: "4.0") with the
sections project, roles, caps, retries, time_limits, workflow,
tests, safety, runtime, frameworks and advanced. Its $schema points
at the skill's config.schema.json, so editors show descriptions and allowed
values; keys starting with _ are allowed as comments. Older 2.x/3.x configs
migrate automatically with one timestamped backup.
ap config [--role <role>]— interactive edit (roles:planner,plan_reviewer,implementer,code_reviewer,verifier).ap config show [--path <key.path>] [--explain]— effective values, marked[default]or[from config.json];--explainadds a one-line explanation under each setting.ap config fill [--dry-run]— add every missing setting at its default, keep every existing value (includingnulland empty lists), rename old names in place (time_limits.mission_timeout_minutes→call_backstop_minutes), repair$schema; writes a.bak-<timestamp>backup first; never invents aruntimemode.
Every setting with its default is in docs/configuration.md
→ Configuration reference (generated from config.schema.json).
SpecKit, standalone and not-yet-reviewed integrations
- Standalone (default): each mission keeps
SPEC.md,CODEMAP.md,PLAN.mdandTASKS.mdin.autopilot/missions/<NNN>-<slug>/. All features, including--stage, work here. - SpecKit:
.specify/workflows/speckit/workflow.ymlis authoritative; command steps map to the planner, gate steps to the plan reviewer, and implementation is owned by Autopilot (same review, gate and verification). - Existing plans:
ap runclassifies planning as missing, partial, complete or ambiguous, resumes from the right step, validates complete plans read-only before coding, and stops on ambiguous state instead of guessing. - GSD — not yet reviewed in this version; coming in a future version. The
adapter exists (
.planning/phases, PLAN frontmatter for phase/plan/wave, planning-review stages, worktree waves; Strong mode only) but is not reviewed or tested end to end for this release;ap setup/ap configdo not offer it. - Cursor — not yet reviewed in this version; coming in a future version.
cursor-agentis accepted as a role CLI but has not been reviewed or tested.
Verification
Run npm test for the deterministic test suite (scripts/test-all.mjs), and
node scripts/doctor.mjs to check the environment. Successful completion ends
with a human-commit-required message; Project Autopilot itself never commits or
pushes.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

