microsoft/pull-requests
> Guidance for creating pull requests and handling PR review comments in the Agent Framework repository. Use this when writing a PR description (filling out the PR template) or when responding to and resolving review comments on an existing PR.
npx skills add https://github.com/microsoft/agent-framework --skill pull-requests
This skill covers two tasks: (1) writing a high-quality PR description, and
(2) handling review comments on an existing PR.
Always follow the repository PR template at
.github/pull_request_template.md. Keep its
exact structure and headings. Fill every section:
### Motivation & ContextExplain *why* the change is needed: the problem it solves and the scenario it
contributes to. Describe the net change relative to main — this is implied, so
do not spell out "vs main" explicitly.
### Description & Review GuideDescribe the changes, the overall approach, and the design. Answer the three
prompts:
reviewers only**. Automated/AI reviewers must ignore it and review the entire
change rather than narrowing scope to it.
### Related IssueLink the issue the PR fixes using a GitHub closing keyword (Fixes #123 /
Closes #123) so it closes automatically on merge. A PR with no linked issue may
be closed regardless of how valid the change is. Before opening, confirm there is
no other open PR for the same issue; if there is, explain how this PR differs.
### Contribution ChecklistCheck every item that applies. For the breaking-change item:
breaking change label or put[BREAKING] in the title prefix, before or after a language prefix such as
Python: or .NET: — workflows keep the label and the title prefix in sync
automatically (see .github/workflows/label-title-prefix.yml and
.github/workflows/label-pr.yml).
the checklist already cover validation status.
Open new PRs as drafts until they are ready for review. Example:
gh pr create --repo microsoft/agent-framework --base main \
--head <your-fork-owner>:<branch> --draft \
--title "<concise title>" --body "<body following the template>"
When a PR receives review comments, follow this sequence — **do not start editing
code before the user has reviewed the plan**:
including inline code comments and general review summaries.
addressed (or why it should not be, with reasoning).
approval or adjustments before implementing anything.
was addressed (or the agreed outcome) — leave none unanswered.
comment has actually been addressed.
List review comments and threads:
# Inline review comments
gh api repos/{owner}/{repo}/pulls/{pr}/comments
# Review threads with resolution state (GraphQL)
gh api graphql -f query='
query($owner:String!,$repo:String!,$pr:Int!){
repository(owner:$owner,name:$repo){
pullRequest(number:$pr){
reviewThreads(first:100){
nodes{ id isResolved comments(first:50){ nodes{ id body author{login} } } }
}
}
}
}' -F owner={owner} -F repo={repo} -F pr={pr}
Reply to an inline review comment:
gh api repos/{owner}/{repo}/pulls/{pr}/comments/{comment_id}/replies \
-f body="Addressed in <commit>: <explanation>"
Resolve a review thread (needs the thread node id from the GraphQL query above):
gh api graphql -f query='
mutation($threadId:ID!){
resolveReviewThread(input:{threadId:$threadId}){ thread{ isResolved } }
}' -F threadId={thread_id}
Take microsoft/pull-requests from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.