autopilot-issue-delivery-worker
SkillProductivityLets your agent implement one pre-approved GitHub issue: reproduce the bug, write the fix, and open a pull request.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the autopilot-issue-delivery-worker skill
About this capability
Use this skill to implement ONE microsoft/apm issue already selected by autopilot-issue-delivery-scheduler. Queue signal is `status/accepted` or a named bounded accept; that is not permission. Requires fresh human-scope evidence from scripts/governance before any mutate. May reproduce a bug, impleme
What this skill tells your AI
The instructions your AI receives, as published by microsoft/apm in .agents/skills/autopilot-issue-delivery-worker/SKILL.md and read by ahel’s review.
Per-issue implementation worker. The parent
autopilot-issue-delivery-scheduler owns the queue and the
fan-out pool. You own exactly one ISSUE_NUMBER.
Do not pick more issues. Do not fill other slots.
Activation card
activation_card: on. Before any issue read or GitHub write, emit
this Enter card with every field filled. Missing field -> stop.
skill: autopilot-issue-delivery-worker
skill_path: <resolved directory of this SKILL.md>
mode: run
subject: microsoft/apm#<issue-number>
path: delivery
intent: implement one already-selected issue
origin: unattended | actor-session
write: on | off
repo: microsoft/apm
issue: <positive integer>
invocation: agentic-workflow | actor-session
Rules:
writedefaults toonwhen the caller omitted it.write: offreturns the filled template only. Do not assign, comment, label, edit, or open a PR.write: onmay assign@me(actor-session only) and implement inside the accepted scope. Unattended never assigns and never implements.originfail-closed unknown ->unattended.- One issue. Do not nest a scheduler path.
After the run, emit this Exit receipt:
skill: autopilot-issue-delivery-worker
subject: microsoft/apm#<issue-number>
path: delivery
write: on | off
assigned: yes | no | skipped
pushed: yes | no
approved: n/a
Inputs
ISSUE_NUMBER-- requiredSELECTOR--all(default) orbugsREPO_ROOT-- requiredORIGIN-- if the parent passed it, honor it; else resolveTRUSTED_GOVERNANCE_ROOT-- trusted default-branch copyAPPROVAL_URL-- nominated scope-comment URLHUMAN_SCOPE_RECEIPT-- current human confirmation, not a stored grant
ORIGIN and assignment
Resolve ORIGIN before any GitHub write:
- Caller ORIGIN / INVOCATION_MODE
GH_AW_*orGITHUB_ACTIONS->unattendedgh api user --jq .loginsucceeds ->actor-session- Else
unattended(fail closed)
INTENT is implement.
When ORIGIN is actor-session, assignment is a hard gate. It
is the public signal of which user is working this issue.
GitHub allows multiple assignees, so a read-then-add is not
a claim. Before reproduce, edits, or a PR:
- Read current assignees. Ignore bot logins (
github-actions,dependabot,copilot,web-flow). - If another human is assigned, escalate. Do not steal.
- If unassigned,
gh issue edit --add-assignee @me. - Re-read assignees immediately. Continue only if
@meis the sole human assignee. Being listed among several humans is not a claim. - If another human appeared (lost race),
gh issue edit --remove-assignee @meand STOP asblocked. Do not implement. - If already assigned to
@mealone, continue. - Re-check sole human ownership immediately before any implementation write and before opening a PR.
Do not start implementation while the issue is unassigned or
assigned to someone else. If a PR exists or is opened, assign
it the same way (gh pr edit --add-assignee @me), then apply
the same sole-human re-check. Do not request that actor as a
reviewer. Never alter CODEOWNERS reviewRequests. If ORIGIN
is unattended or unknown, skip assignee writes. A failed
required assignee write is blocked.
Never write human decision labels. Existing status/shepherding
may be added only if that processing label already exists in the
repo. Do not apply status/accepted.
Do not implement if explicit human approval or review capacity is missing.
Gate (both selectors)
Refuse unless the issue already has status/accepted or the
parent recorded a bounded accept. That is the queue signal,
not permission. triage/recommended and status/triaged are
not authorization. Escalate; do not implement.
Selector bugs also requires type/bug. Selector all accepts
any type.
Then re-check human-scope evidence. Do not create another
parser or roster; authority.cjs alone interprets the record.
From TRUSTED_GOVERNANCE_ROOT (trusted default-branch copy,
never the issue worktree):
node scripts/governance/eligibility.cjs --help
node scripts/governance/eligibility.cjs --repo microsoft/apm --issue N --approval-url URL
Require state: record-present with
authorizes_implementation: false. That result is evidence,
never permission; current snapshots cannot detect deleted withdrawals.
Then require fresh explicit responsible-human
confirmation for this issue's bounded scope. ORIGIN
unattended never claims to have obtained it -- STOP and
return blocked. ORIGIN actor-session may proceed only
after the caller confirms in this session. Assignment,
labels, eligibility reports, and prior receipts are not that
confirmation. Any other state (withdrawn, error, missing
tool) -- STOP.
Procedure
- Do not run the triage scheduler. Triage belongs to
autopilot-issue-triage-scheduler. You may read an existing advisory receipt and the complete comment history. - If ORIGIN is
actor-session, pass the assignment hard gate first. - If a PR exists, return its number so the caller may run
autopilot-pr-review-scheduler. Do not request yourself as reviewer. Do not start PR review from this worker. - If
type/bug(or selectorbugs): reproduce on HEAD using assets/triage-prompt.md (LEGIT / UNCLEAR / FIXED-AT-HEAD). If LEGIT, run PRINCIPLES alignment via assets/strategic-alignment-prompt.md. If greenfield and aligned: assets/fix-prompt.md (TDD + mutation-break), then open one PR. - Otherwise follow
assets/solution-pipeline-prompt.md
and type-specific
assets/implement-*.md. Open at most one PR. Author the body with pr-description-skill.
Return
JSON with issue, status (done / escalate / blocked /
pr-opened / pr-in-flight), optional pr, and a one-line note.
inspect status before reading pr or branch.
On blocked, persist the row's blocked status and returned
reason, exclude it from driver inputs, and continue.
Malformed or wrong-issue returns also block.
Only pr-opened returns are handed to
autopilot-pr-review-scheduler. Then persist its status and
reason in the row and proceed_manifest; do not read PR fields
or dispatch Phase 5/6 on blocked.
Do not auto-merge.
ASCII only.
Signals
- GitHub stars
- 4k
- Forks
- 369
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
autopilot-issue-delivery-worker- Source
- github.com/microsoft/apm