Researches, drafts, reviews, and updates pull request descriptions as durable project documentation, grounded in the diff, repository docs, and live GitHub issues and PRs. USE FOR: writing a PR body or PR description, updating a PR description after new commits, review guides, validation summaries, issue linkage, explaining how a change fits product work. DO NOT USE FOR: resolving review threads (use fusion-github-review-resolution), implementing an issue end-to-end (use fusion-issue-solving), drafting issues (use fusion-issue-authoring), or dependency PR verdicts (use fusion-dependency-review).
73
92%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Low
Low-risk findings worth noting
Treat every pull request body as durable project documentation. A future maintainer should understand why the change exists, how it advances the product, what behavior and boundaries changed, and where related work continues — without reconstructing the story from the diff.
Durable does not mean long. Write the body for people first: a reviewer with thirty seconds should get the outcome, the ask, the risks, and the validation result from the visible part, while file lists, command output, and evidence stay one click away in folded blocks.
Typical triggers:
Implicit triggers:
fusion-issue-solving) reaches its PR-body step and this skill is installedfusion-github-review-resolutionfusion-issue-solving (it can hand its PR-body step to this skill)fusion-issue-authoringfusion-dependency-reviewCollect before drafting; ask only for what cannot be derived:
Derive the rest from the repository: diff, commits, PR template, docs, and repository-local instructions.
Inspect the branch, merge base, diff, commits, and the validation actually run in this session or reported by the user. Identify user-visible behavior, operational behavior, security boundaries, data ownership, migrations, compatibility effects, and explicit non-goals. Never describe planned behavior as implemented.
.github/pull_request_template.md, .github/PULL_REQUEST_TEMPLATE.md, docs/pull_request_template.md, root pull_request_template.md, and .github/PULL_REQUEST_TEMPLATE/. When several templates exist, pick the one matching the change or ask..github/copilot-instructions.md, files under .github/instructions/, AGENTS.md, contribution guides) for PR, issue-linking, and validation-evidence rules. They take precedence over this skill.Follow references/evidence-sources.md. Use sources by claim: the diff for what changed; repository docs (ADRs, specs, CODEMAP.md, README) for decisions and boundaries; live GitHub for scope, state, and hierarchy; an optional semantic index only to discover candidates. Run independent searches in parallel, refine once with terms found, and prefer a few strong relationships over a long list of adjacent results.
Verify every candidate issue or PR live and read-only: title, type, state, parent/children, and body. Distinguish issues from PRs. Map the change to the owning feature or story, child work it enables, predecessor PRs that set the baseline, and adopted external work. Explain each relationship; never just list it.
Draft into a context-specific file such as .tmp/pr-body-<issue-or-topic>.md (never a shared .tmp/pr-body.md) unless repository instructions name another location. Preserve every template heading, comment, checklist item, and their order; replace placeholders with accurate content and expand them into a coherent account using assets/pr-body-outline.md. Without a repository template, use assets/pr-body-outline.md.hbs only. Read its .hbs slot header, assets/partials/agent-content/README.md, and every named partial before filling; no renderer ships with the skill.
Shape the body with fusion-agent-content when it is installed. Otherwise apply this summary of it:
<sub>🤖 Drafted by <agent> (<tool>) · <model> · <effort> reasoning</sub>. Take the agent, model, and reasoning effort from the runtime; never guess. Write Drafted with <tool> without a custom agent, and model not reported when the runtime does not say.> **TL;DR:**: one to three sentences on the outcome and what the reviewer should do or decide, without repeating the title. Quote any short list under it too.<details><summary>Details</summary>: file lists, command output, raw data, and a long review guide.<details><summary>References and evidence</summary> and always last: skills used, skill references read, and each verified issue, PR, doc, or command with one line on what it shows.Keep visible what the reader must act on: the one-line validation result, risks, breaking changes, boundaries, and which issues close versus are referenced. Shorten by folding, never by dropping facts; aim for a visible part that fits on about one screen.
Avoid bodies that are only generated file lists, commit summaries, or test checklists. Name files in the visible part only in a short review guide or where ownership is unclear; put full file lists under Details.
Follow references/issue-linking.md:
closes owner/repo#123) or only reference it (refs owner/repo#123), with the most logical choice preselected: close when this PR completes the issue (the usual case); reference for parent stories, multi-PR or rollout work, and other repositories this PR only supports.Report only commands and outcomes actually observed, as exact commands with pass/fail. Keep a one-line result visible (for example "All 6 checks pass; e2e not run, needs CI") and fold the command table and output under Details. Separate pre-existing failures from failures caused by the change. State what was not run and why. Follow repository-specific evidence rules (for example visual baselines, screenshot environments, CI-only suites) from local instructions instead of inventing them.
Show the final draft and the intended operation: create or update, base, head, draft/ready, assignee, title. Do not create or update a PR without explicit user confirmation of that mutation. Then:
gh pr create --base <base> --head <branch> --title "<title>" --body-file <draft>, adding --draft or --assignee as confirmedgh pr edit <number> --body-file <draft>gh is unavailableAfter publishing, read the live PR back and run assets/publish-checklist.md. If anything drifted, such as an unintended closing reference, fix the draft and re-confirm before editing again.
closingIssuesReferencesUser: "Open a PR for this branch, it solves #57 and is part of story #212."
Agent: drafts .tmp/pr-body-57-<topic>.md from the repository template, opening with its runtime banner and a two-sentence quoted TL;DR (> **TL;DR:** ...), and verifies both issues live. It keeps the one-line validation result and closing choices visible, and folds the file list, command output, and evidence. It asks: "Close #57 on merge (recommended: this PR meets its acceptance criteria) and reference story #212 (recommended: two sibling tasks are still open)?" It writes closes owner/repo#57 and refs owner/repo#212 as confirmed. It publishes only after confirming base, draft state, and creation, then checks that closingIssuesReferences lists only #57.
Avoid: closing story #212 because the PR mentions it, leaving #57 open when the PR completes it, or opening the body with a file inventory.
Defer to repository-local instructions for PR template choice, base-branch selection, issue-linking conventions, draft locations, validation-evidence rules, and review-request workflow. Point to those rules at the point of use instead of restating them. When local rules set a linking default, use it as the recommendation and still ask when the user is available.
This skill is mutation-capable. Repository-local workflow instructions take precedence over inline guidance when they conflict.
Never:
Always:
equinor/fusion-framework
ed87615
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.