agentleFS
rolandtolnayrolandtolnay/llm-toolkit/skills/create-pr/SKILL.md

create-pr

Skill1 starsChanged 3 months agoMITView on GitHub

Open a pull request whose description explains why the change exists and where it needs a careful read. Use when changes are ready to ship.

  • Commits and pushes

196 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use update-pr, act-on-feedback and 10 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • MicrosoftSkill

    update-pr

    Update the pull request for the current session. Use when the user wants to push new changes to an existing PR.

    Also in 9 projects that use this

  • MicrosoftSkill

    act-on-feedback

    Act on user feedback attached to the current session. Use when the user submits feedback on the session's changes via the Submit Feedback button.

    Also in 3 projects that use this

  • ModelEngine-GroupSkill

    create-release-note

    从 PR/commit 中自动生成结构化的 Release Notes,并可选创建 GitHub Draft Release。支持 x.y.0 版本合并前一 minor 系列的 release notes。当用户要求生成发布说明、创建 release notes 时触发。参数为版本号和可选的上一版本号。

    Also in 3 projects that use this

  • frostneySkill

    native-nostalgia-stack

    Applies the user's FreePascal toolchain and its build, formatting, hook, and test contracts while leaving project-specific mechanics local. Use when scaffolding or working in a FreePascal project that follows this toolchain.

    Also in 3 projects that use this

  • frostneySkill

    software-engineering-excellence

    Applies the user's engineering standards during substantial technical work: preserve scope, use current evidence, delegate independent parts, and complete authorized outcomes. Use during substantial implementation, debugging, refactoring, or multi-part delivery work.

    Also in 3 projects that use this

  • parkchuSkill

    start-mission

    넥스트스텝(NextStep) 미션을 처음 시작할 때, 미션 저장소를 fork·clone하고 최초 작업 브랜치(step1 등)까지 만들어 준다. gh CLI로 fork하고 clone까지 이어서 처리하며, gh가 없거나 인증이 안 돼 있으면 브라우저 Fork 안내로 폴백한다. 이미 fork/clone돼 있으면 재사용하고 이어서 진행한다(재실행 안전). 사용자가 "미션 시작하려는데 저장소 세팅해줘", "새 미션 시작할래", "fork부터 해줘", "/nextstep:start-mission" 등으로 요청할 때 사용한다.

    Also in 3 projects that use this

  • +1 more from microsoft

The file

We split this skill into the rules it gives an agent

2 rules. 0 are common, 2 are distinctive, and 0 are very specific to this project.

  • 0

    Common

    Most of the 179 edited versions we read keep these.

  • 2

    Distinctive

    This author's own choices. Worth a look.

  • 0

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Stop gathering once you can state why the change exists.

    line 28
  2. Distinctive:

    Check that the created PR's body is the description and not empty or a receipt, then return the PR URL.

    line 66

“Common” is measured: kept by at least 6 in 10 of the 179 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Open a pull request against the default base branch with a description that explains the change: what problem it solves and why this approach, not just what the diff touched.

Invoking this skill is the go-ahead for the whole flow: committing what the branch needs, pushing, and opening the PR with the description you write. Ask first only before stashing or switching branches with uncommitted work, since that work is easy to lose, and propose the new branch name in that same question. If the branch is the base branch with no changes, say there is nothing to PR and stop. Arguments carrying commit instructions ("use the last 3 commits", "cherry-pick abc123") override the default landing choice.

What good looks like

A reviewer reads the description and understands the motivation before the mechanics. Linear tickets are linked inline where they add context, not dumped in a list. Changes are grouped by logical area, not by file. The reviewer builds a mental model from the summary and the changes, then skims the diff and trusts the implementation unless the risk section sends them somewhere. The risk section is that routing: it names the files from the diff that deserve a line-by-line read and says what makes each one costly to get wrong. Automated reviewers already give a correctness verdict, so it is not that, and it is not a second list of what the PR touches. The test plan says how to verify the change. Every claim comes from the diff, the conversation, or the ticket: when the rationale cannot be recovered, describe what the change does and flag the missing why rather than inventing one, and add no metrics or outcomes the PR does not contain.

Land the change

Inspect the repo with git: the current branch, staged versus unstaged work, the default base branch (git symbolic-ref --short refs/remotes/origin/HEAD, falling back to origin/main), commits and diff stat against base, and the recent commit-message style. Get the change onto a branch ahead of base without losing uncommitted work: a feature branch already ahead takes its uncommitted changes as a commit and a push; uncommitted work on the base branch, or work to isolate off a busy branch, moves to a new branch cut from the fetched base. Match the repo's existing commit style.

Gather the why

Get just enough to explain the motivation, the problem, and any notable alternative considered. The current conversation is often enough; reach further only when the why is still thin:

  • Past sessions for this project, if you can search them, for multi-session work or a fresh "just make a PR" invocation.
  • The Linear ticket plus its parent and blocking tickets, whenever a ticket ID appears in the branch, commits, conversation, or arguments; the ticket often holds context the conversation never mentioned.
  • The driving PRD, if one exists (often under etc/prd/): it states the problem, the solution, and the decisions this change implements.
  • The project's domain docs: CONTEXT.md (or a root CONTEXT-MAP.md) for the canonical terms, and relevant ADRs under docs/adr/ for why a non-obvious approach was chosen.

Stop gathering once you can state why the change exists.

Write the PR

Combine the diff, the gathered why, and any arguments passed in:

## Summary

[1-3 paragraphs. Lead with the motivation and problem, then the solution and the reasoning that shaped it. Weave Linear links into the prose where they add context — "This resolves [ENG-123](url) by…" — covering the primary ticket and any parent or blocking issues. Don't list them separately.]

### Ticket

[Standalone link only if there's a single primary ticket — "Resolves [ENG-123](url)". Omit otherwise.]

### Changes

[Bulleted, grouped by logical area, not by file.]

## Risk

[Judge the diff the way a senior developer reading it cold would. A file earns a line-by-line read when it introduces or changes an invariant other code relies on, adds branching the reviewer must hold in their head, alters a happy path users run often, or has an effect a revert cannot undo (a migration, a sent message, a deployed resource). Name each such file by its path from the diff with a clause saying which of these applies; everything not named is a skim. When no file qualifies, the whole section is one sentence: the change is low risk, a revert undoes it, and we are confident merging. Risk is not diff size, and listing every area the PR touches tells the reviewer nothing.]

## Test plan

[Checklist of how to verify the change works.]

Draft the description in your own voice first, then humanize it with whatever the session provides for that (a humanize tool, or a humanizer skill read only after the draft exists) so it reads as a person wrote it for reviewers, with the structure, facts, and ticket links intact. Write the humanized description to a new file in a fresh temporary directory. Use the humanized text without further stylistic edits; fix a factual error with a targeted edit rather than another humanization pass.

Create

Push if needed, then create the PR against the base branch, passing the humanized description file with --body-file rather than reproducing it in shell arguments:

gh pr create --title "<title>" --body-file "<humanized-description-path>" --base "<base>"

Check that the created PR's body is the description and not empty or a receipt, then return the PR URL.

Success criteria

  • The why is sourced from the conversation, and from past sessions, Linear, the PRD, or domain docs when the conversation was thin
  • The description leads with motivation, links tickets inline, groups changes by logical area, names the files that need a careful read or calls the change low risk, and ends with a test plan
  • The description was drafted first, humanized once, and used as humanized apart from targeted factual fixes
  • The PR exists with the humanized body and its URL is returned

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.