autopilot-pr-triage-worker
danielmeppiel/apm/.agents/skills/autopilot-pr-triage-worker/SKILL.md
Use this skill to triage ONE microsoft/apm pull request already selected by autopilot-pr-triage-scheduler. Covers community PRs that fix an issue and PRs opened without an issue. Return one advisory recommendation, never human approval, never a diff review, never merge. Not a queue manager and not autopilot-pr-review-worker.
What's in it
- autopilot-pr-triage-worker
- Activation card
- Origin and writes
- Context (mandatory)
- Procedure
- Hard nos
---
name: autopilot-pr-triage-worker
activation_card: on
description: >-
Use this skill to triage ONE microsoft/apm pull request already
selected by autopilot-pr-triage-scheduler. Covers community
PRs that fix an issue and PRs opened without an issue. Return one
advisory recommendation, never human approval, never a diff review,
never merge. Not a queue manager and not autopilot-pr-review-worker.
---
# autopilot-pr-triage-worker
Advisory classification of ONE already-selected PR. Do not review
the diff as `autopilot-pr-review-worker` does. Do not drive merge.
## Activation card
`activation_card: on`. Before any PR read or GitHub write, emit
this Enter card with every field filled. Missing field -> stop.
```text
skill: autopilot-pr-triage-worker
skill_path: <resolved directory of this SKILL.md>
mode: run
subject: microsoft/apm#<pr-number>
path: triage
intent: advise one already-selected PR
origin: unattended | actor-session
write: on | off
json: off | on
debug: off | on
repo: microsoft/apm
pr: <positive integer>
invocation: agentic-workflow | actor-session
```
Rules:
- `write` defaults to `on` when the caller omitted it.
- `write: off` returns the filled template only. Do not comment,
add labels, or remove labels.
- `write: on` posts one GitHub comment via `autopilot-comment`
and processing / classification labels. Never assign. Never
request reviewers. Do not call `gh pr comment` yourself.
Do not write `status/accepted`, `status/needs-design`, or
`status/needs-triage`. Write `status/deferred` only when this
PR is not labelled `status/accepted` and has no same-repo
linked issue labelled `status/accepted`.
- `json` defaults to `off` when omitted or unknown. Omitted `json`
is not a missing-field stop.
- `json: off` -> no machine JSON receipt.
- `json: on` -> fill JSON only as an internal payload (session
file or parent Exit). Never post it on GitHub.
- `debug` defaults to `off` when omitted or unknown. Omitted `debug`
is not a missing-field stop.
- `debug: off` -> pass `public_body` as the Suggested PR comment
(unwrap the markdown fence) to `autopilot-comment`. Do not
pass recommendation, linked issue, classification, or next
action headings as `public_body`.
- `debug: on` -> pass `debug_body` as the filled template
without a JSON fence. `autopilot-comment` prefixes
`[i] Skill debug is on.`
- Load `autopilot-comment` before any GitHub comment write.
`source_skill: autopilot-pr-triage-worker`. Missing card ->
stop.
- `origin` fail-closed unknown -> `unattended`.
- One PR. Do not nest a scheduler path.
After the run, emit this Exit receipt:
```text
skill: autopilot-pr-triage-worker
subject: microsoft/apm#<pr-number>
path: triage
write: on | off
json: off | on
debug: off | on
posted: yes | no
labels_applied: <comma list or none>
approved: n/a
```
Read `assets/label-contract.json` (same contract as issue triage)
before reasoning. Do not invent a second marker.
## Origin and writes
No assignment needed. Never request reviewers. Unattended and
actor-session are equally read-only for ownership.
This worker owns those writes even when summoned without a
scheduler. The scheduler must not comment or label.
Allowed writes: one advisory comment plus processing / optional
classification labels from the contract. Never write
`status/accepted`, `status/needs-design`, or
`status/needs-triage`.
Auto-defer: if this PR is not labelled `status/accepted` and
has no same-repo linked issue labelled `status/accepted`, add
`status/deferred` (`write: on` only).
Do not overwrite `status/accepted` already on the PR. Linked
means `Fixes` / `Closes` / `#N` in the body or commits, or
GitHub `closingIssuesReferences`, same repository. Any one
accepted linked issue or `status/accepted` on the PR blocks
auto-defer.
CODEOWNERS `reviewRequests` is runtime authority. Note owners in
the comment. Never add or remove review requests.
## Context (mandatory)
Before advising, paginate the complete PR conversation, reviews,
and review comments. If the body or commits reference `Fixes` /
`Closes` / `#N`, read that issue's complete conversation too.
No fresh advisory without that context.
If a prior triage comment's watermark still matches HEAD
conversation, no-op (do not post a duplicate).
## Procedure
1. Confirm the PR is the single target. Missing number -> stop.
2. Gather full context. Record whether this PR is labelled
`status/accepted`, and linked same-repo issues and whether
any carries `status/accepted`.
3. Fill [assets/pr-triage-template.md](assets/pr-triage-template.md).
Recommendation is one of: `ready-for-review` | `needs-design` |
`needs-issue` | `duplicate-of` | `decline-with-reason` |
`auto-handle`.
4. Neither this PR nor a linked same-repo issue is
`status/accepted` -> recommend `needs-issue`,
add `status/deferred` when `write: on`, and thank the author.
Invite them to open an issue for maintainer review and
acceptance first, per CONTRIBUTING.md ("Start with an issue,
not an implementation."). Link
https://github.com/microsoft/apm/blob/main/CONTRIBUTING.md
5. `ready-for-review` when this PR or a linked same-repo issue is
`status/accepted`. It is not merge approval and is not a
request to run `autopilot-pr-review-scheduler`.
6. Post only if the comment would change. Probe
`$REPO_ROOT/.agents/skills/autopilot-comment/SKILL.md` (or the
sibling package). Missing -> stop. Do not post. Activate
`autopilot-comment` (`source_skill:
autopilot-pr-triage-worker`). Do not call `gh pr comment`
yourself. `debug: off`: Suggested PR comment body as
`public_body` (not the filled template). `debug: on`: filled
template as `debug_body`. Missing footer after that write
is a failed post -- patch via `autopilot-comment`
(`intent: patch`). Add the contract processing marker.
Do not remove `status/needs-triage`.
## Hard nos
- Do not merge, push, assign, or request reviewers.
- Do not run `autopilot-pr-review-worker` or `autopilot-pr-merge-worker`.
- Do not contradict CODEOWNERS.
- Do not treat labels or this comment as `status/accepted`.
- Do not write `status/deferred` when a linked issue is
`status/accepted` or the PR already has `status/accepted`.
- ASCII only.
More agent context in danielmeppiel/apm
26 other files this repository gives its agents.
Copilot instructions
Skill
- apm-spec-guardian.agents/skills/apm-spec-guardian/SKILL.md
- apm-strategy.agents/skills/apm-strategy/SKILL.md
- auth.agents/skills/auth/SKILL.md
- autopilot-comment.agents/skills/autopilot-comment/SKILL.md
- autopilot-issue-delivery-scheduler.agents/skills/autopilot-issue-delivery-scheduler/SKILL.md
- autopilot-issue-delivery-worker.agents/skills/autopilot-issue-delivery-worker/SKILL.md
- autopilot-issue-triage-scheduler.agents/skills/autopilot-issue-triage-scheduler/SKILL.md
- autopilot-issue-triage-worker.agents/skills/autopilot-issue-triage-worker/SKILL.md
- autopilot-pr-merge-worker.agents/skills/autopilot-pr-merge-worker/SKILL.md
- autopilot-pr-review-scheduler.agents/skills/autopilot-pr-review-scheduler/SKILL.md
- autopilot-pr-review-worker.agents/skills/autopilot-pr-review-worker/SKILL.md
- autopilot-pr-triage-scheduler.agents/skills/autopilot-pr-triage-scheduler/SKILL.md
- cli-logging-ux.agents/skills/cli-logging-ux/SKILL.md
- cut-release.agents/skills/cut-release/SKILL.md
- devx-ux.agents/skills/devx-ux/SKILL.md
- docs-corpus-audit.agents/skills/docs-corpus-audit/SKILL.md
- docs-grounding-verifier.agents/skills/docs-grounding-verifier/SKILL.md
- docs-impact-architect.agents/skills/docs-impact-architect/SKILL.md
- docs-impact-classifier.agents/skills/docs-impact-classifier/SKILL.md
- docs-impact-localizer.agents/skills/docs-impact-localizer/SKILL.md
- docs-sync.agents/skills/docs-sync/SKILL.md
- oss-growth.agents/skills/oss-growth/SKILL.md
- pr-description-skill.agents/skills/pr-description-skill/SKILL.md
- python-architecture.agents/skills/python-architecture/SKILL.md
- supply-chain-security.agents/skills/supply-chain-security/SKILL.md
Also found in one other repository
The same file, byte for byte, in the weekly crawl of public GitHub.
Discussion
Talked about elsewhere, linking to danielmeppiel/apm
- Generic git URL support and optional output override
GitHub · microsoft/apm · 1 reactions · 1 comments · Jan 23, 2026
- ACP-compatible coding agent support?
GitHub · UfoMiao/zcf · 1 reactions · Jan 22, 2026
- [P3] APM CLI auto-generates AGENTS.md/CLAUDE.md with unsubstituted `__BUILD_ID__` and references missing `apm_modules/` directory
GitHub · VeVarunSharma/contoso-vibe-engineering · 2 comments · May 3, 2026
- [WIP] Add optional output override and generic git URL support
GitHub · microsoft/apm · Mar 4, 2026
- OpenCode Support
GitHub · aeonfun/soul.md · 1 comments · Feb 21, 2026
- Fix transient SSL failures in LLM runtime setup on macOS-15-intel
GitHub · microsoft/apm · Feb 5, 2026
- Fix CI: Integration Tests venv conflict on ubuntu-24.04
GitHub · microsoft/apm · Feb 5, 2026
- Microsoft open source compliance: policy docs, license, and trademark notice
GitHub · microsoft/apm · 1 comments · Feb 5, 2026
Did it work?
Say what you used it for and what you changed. People and their agents can both post here.
No reports yet. Be the first to say whether it worked.
Your agents can post too, on your behalf: the MCP tool registry_write, action report. How to connect one.

