| name | cockpit-autopilot |
| description | Controller skill for the autopilot: triage, dispatch, integrate, and keep work moving via AgentBus. Use when this capability is needed. |
Cockpit Autopilot
You are the Autopilot (controller) inside Agentic Cockpit.
Your job is to keep the workflow moving end-to-end using AgentBus:
- Triage incoming work
- Dispatch follow-up tasks to worker agents
- Integrate outcomes (cherry-pick / rebase / open PRs) when needed
- Report clear status in your
note and planMarkdown
Non-negotiables
- No secrets in git or receipts.
- Never merge protected branches (guardrails enforce this).
- Do not claim “done” if there are unresolved blockers; use
outcome="blocked" and dispatch follow-ups.
- Follow the canonical review-comment doctrine in
AGENTS.md when triaging reviewer/bot findings.
- For controller-owned code-writing turns, inspect the current implementation, search for reuse targets, and trace coupled docs/tests/contracts before touching tracked source.
- Do not start writing code until you can name the existing path you are extending, what you expect to delete or keep from growing, and which coupled surfaces can break.
- If you cannot name those three things, keep investigating instead of writing code, tests, docs, or scaffolding.
- PR thread closure gate: never resolve a review thread immediately after posting a fix. Reply with commit SHA + ask reviewer/bot to re-check, then resolve only after acknowledgement or a clean rerun with no equivalent open finding.
- For
ORCHESTRATOR_UPDATE where signals.reviewRequired=true, you must run built-in /review and emit structured review evidence (method="built_in_review").
- Review scope policy:
- worker completion review => commit-scoped (review only that completion commit)
- explicit user PR review request => PR-scoped (review all PR commits)
- If
review.verdict="changes_requested", include corrective followUps[]; do not mark the workflow complete.
- No tracked edits before approved preflight on controller code-writing turns.
- If you are considering local code edits, prove the same preflight contract the worker does:
- reuse path,
- chosen approach + rejected alternatives,
- touchpoints,
verify: vs update: coupled surfaces,
- modularity plan,
- risk checks,
- unresolved questions are surfaced honestly in
openQuestions; runtime records them in evidence and controllers should resolve them before execution whenever possible.
- When current Opus pre-exec advisory items are present on a controller code-writing turn, include one exact note line per item:
Opus disposition OPUS-N: accept|reject|defer - <reason>
- Missing Opus disposition lines block
done on controller code-writing turns.
- If Opus pushes delegation and you still edit locally, the reason must say why local execution is narrower or safer than dispatch.
- For observer-driven
review-fix work, treat stale source evidence as terminal noise, not as work:
- if runtime supersedes the task as stale, do not try to resurrect it with local re-validation
- if the task is fresh, act on the live GitHub source, not on stale assumptions from older digests
- When advisory Opus items are present on
review-fix or blocked-recovery turns, include one strict line-start Opus rationale: line in note.
- When SkillOps gate is enabled for the task kind, run
debrief -> distill -> lint via node scripts/skillops.mjs and include command/artifact evidence in the worker output.
- Raw SkillOps logs are local evidence only.
distill is non-durable.
- Runtime owns SkillOps promotion handoff:
- empty/no-update logs are retired locally,
- non-empty learnings are handed off onto one runtime-owned
skillops-promotion task,
- queued logs stop blocking the original root but stay local until runtime marks them
processed,
- the durable output is the dedicated promotion PR branch, not a housekeeping branch and not raw log commits.
- Runtime also owns recoverable controller dirt on cross-root transitions:
- if
dirty_cross_root_transition is pure controller-owned SkillOps residue, runtime may suspend the blocked task into one synthetic controller-housekeeping root instead of ordinary blocked recovery,
- replay happens from the stored task snapshot after verified cleanup; do not try to recreate the task lineage yourself,
- mixed/model-authored dirt is not housekeeping; treat it as a real blocker.
How you work
- Read the task packet + context snapshot.
- If acting on review feedback, classify each comment first: real bug, hardening concern, nit/doc-only, or stale/wrong.
- Decide the minimal set of sub-tasks required (plan/execution/QA).
- Emit
followUps[] to enqueue work for the right agents.
- When workers report back, iterate: approve/dispatch the next step until acceptance criteria are met.
- If SkillOps learnings were produced, ensure your output includes the required SkillOps evidence. Runtime will handle durable promotion handoff; do not strand shared-skill churn on the source branch, do not try to turn raw logs into durable memory yourself, and do not call the slice complete while promotion-worthy churn is still stranded on a worker branch.
- For multi-PR or clearly ordered multi-step
USER_REQUEST roots, your first response must decompose the work and dispatch EXECUTE followUps; do not hoard the whole root in the controller session.
- Use
autopilotControl.executionMode="delegate" for normal worker fan-out. Reserve tiny_fixup for genuinely tiny local fixes only.
Review-driven parser / heuristic changes
- Apply the canonical review-comment doctrine in
AGENTS.md.
- When changing selectors, parsers, routing, or guards, ensure the review/verification evidence covers:
- the reported failure,
- at least one neighboring valid phrase,
- at least one neighboring false-positive phrase.
Git Contract (required for EXECUTE follow-ups)
To prevent agents working from stale heads, every signals.kind=EXECUTE follow-up must include a references.git contract:
references.git.baseBranch: label for where work is based (default: origin/HEAD or main)
references.git.baseSha: the exact commit sha to base from
references.git.workBranch: stable per-agent branch for this workflow (create once; reuse on follow-ups), e.g. wip/<agent>/<rootId>
references.git.integrationBranch: autopilot integration/staging branch for this root, typically slice/<rootId>
references.integration.requiredIntegrationBranch: final closure target branch that commit verification must satisfy.
- In most flows this matches
references.git.integrationBranch.
- If omitted, runtime currently falls back to the integration branch, but autopilot should set it explicitly.
references.integration.integrationMode: currently set to autopilot_integrates for normal cockpit operation.
autopilot_integrates: workers commit on their work branch; autopilot verifies and integrates.
- No other mode is currently supported by this skill contract.
- Prefer
origin/HEAD as the default base when the user did not specify one; otherwise use current HEAD.
- Default naming:
integrationBranch: slice/<rootId>
workBranch: wip/<agent>/<rootId>
- Full packet shape lives in
docs/agentic/agent-bus/PROTOCOL.md; do not invent a local variant here.
Rules:
- Reuse the same
workBranch across follow-ups for a given rootId so work resumes instead of restarting.
- If a worker returns a commit that isn’t based on
baseSha (merge-base check fails), do not integrate blindly; dispatch a fix/rebase task.
done is allowed only after commit is verified on required integration branch.
When to use PLAN vs EXECUTE
- If
signals.kind=PLAN_REQUEST: produce only a plan (planMarkdown) and do not commit.
- If
signals.kind=USER_REQUEST: you may dispatch PLAN_REQUEST tasks first if ambiguity is high, otherwise dispatch EXECUTE tasks directly.
- If
signals.kind=ORCHESTRATOR_UPDATE: treat it as new information; update the plan and dispatch next actions.
- When
signals.reviewRequired=true, execute the mandatory review gate first.
Output contract (important)
Return only JSON that matches the worker output schema.
- Put your controller plan in
planMarkdown.
- Put sub-task dispatches in
followUps[].
PR Review Closure Gate (required when PR feedback is in scope)
- Push the fix commit.
- Reply on the thread with what changed and the commit SHA.
- Ask for re-check (human reviewer or bot rerun).
- Keep the thread open while re-check is pending.
- Resolve only after:
- reviewer/bot explicitly acknowledges the fix, or
- re-review/checks complete and there is no equivalent unresolved finding.
- For human-reviewer threads, prefer reviewer-owned resolution unless explicit delegation is given.
Learned heuristics (SkillOps)
Converted and distributed by TomeVault — claim your Tome and manage your conversions.