Fun pull requests
Prepares and publishes a polished GitHub pull request with `gh`, including PR title and body drafting, branch review summaries, draft-vs-ready guidance, and `gh pr create` workflows. Use when the task involves opening, drafting, publishing, or summarizing a GitHub pull request for the current branch.From its SKILL.md
npx -y skills add madflojo/fun-pull-requests --skill fun-pull-requestsAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its file declares
Copied from the file, not written here
The file declares its own license as Apache-2.0. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
9.1 KB, ~2.0k tokens by cl100k_base, as published. Nobody here has run it
Fun Pull Requests
Prepare the current branch for review and open a polished GitHub pull request
with gh. The result should be concrete, accurate, and easy for reviewers to
scan, with a little personality where it helps and none where it hurts.
Add a little bit of contextual humor to the PR, not much, just enough that a reviewer might crack a small smile while the title and summary stay relevant and professional.
Use this skill when the user wants to:
- open or publish a pull request
- draft a PR title and body
- summarize branch changes for review
- convert local branch state into a review-ready GitHub PR flow
Working Style
- Be accurate before being playful. The PR should stay professional and factual.
- Keep tone concise and human. Add a small amount of contextual humor, but keep it subordinate to the technical content.
- Review the branch state before proposing a title or body.
- Do not assume upstreams, remotes, auth, or default branches are configured.
- Scope tool use to repo-local
gitinspection andghPR operations. Preferghfor repository and PR operations, and fall back to raw git only when that improves reliability or whenghcannot provide the needed detail.
Preflight
Start by checking whether the repository and CLI state can support PR creation.
1. Confirm repository state
git rev-parse --show-toplevel
git rev-parse --is-inside-work-tree
git remote -v
git rev-parse --abbrev-ref HEAD
git status --short
2. Confirm GitHub CLI auth
gh auth status
If gh auth status fails or shows no usable GitHub account:
- stop before attempting
gh pr create - tell the user authentication is required
- suggest
gh auth login
3. Confirm the repo is visible to gh
Prefer:
gh repo view --json nameWithOwner,defaultBranchRef
If that fails because the local repo is not associated with a GitHub remote:
- inspect
git remote -v - if there is no usable GitHub remote, tell the user the branch cannot be published until a GitHub remote exists
- if there is a GitHub remote but
gh repo viewstill fails, report that and fall back to git-only inspection for local summary work
Resolve the Base Branch
Never hardcode main unless every better signal fails.
Resolve the base branch in this order:
- Current branch upstream target, if it exists and points at a remote branch.
- Repository default branch from
gh repo view --json defaultBranchRef. - Remote HEAD from git, for example
refs/remotes/origin/HEAD. origin/main, thenorigin/master, but only as explicit last-resort guesses.
Useful commands:
git rev-parse --abbrev-ref --symbolic-full-name @{u}
gh repo view --json defaultBranchRef --jq '.defaultBranchRef.name'
git symbolic-ref --quiet refs/remotes/origin/HEAD
git branch -r
When converting a remote ref into a base branch name, strip the remote prefix so
origin/main becomes main.
If you still cannot determine a credible base branch, stop and tell the user which signals were missing instead of guessing.
Review the Current Branch
After the base branch is known, inspect what the PR will contain.
BASE_REF="<resolved-remote-base-ref>"
git --no-pager log --oneline --decorate --no-merges "${BASE_REF}..HEAD"
git --no-pager diff --stat "${BASE_REF}..HEAD"
git --no-pager diff --name-status "${BASE_REF}..HEAD"
Use the inspection results to draft the PR summary. Mention meaningful behavior changes, reviewer risks, follow-up work, and any test or validation status that the user already has.
No-Upstream Behavior
If the current branch has no upstream:
- say so explicitly
- do not pretend a PR can be opened until the branch exists on a remote
- prefer pushing the current branch with upstream tracking before PR creation
Typical flow:
git push -u origin HEAD
If the remote is not origin, use the correct remote name discovered during
preflight.
If the user asked only for a draft title/body, you can still prepare the PR content locally without pushing. If they asked to actually publish the PR, the branch must be pushed first.
Draft vs Ready Guidance
Choose draft status intentionally.
Prefer a draft PR when:
- implementation is still in progress
- tests are incomplete or knowingly failing
- feedback is wanted on direction before final polish
- follow-up commits are expected before merge review
Prefer a ready PR when:
- the requested scope is implemented
- known blockers are resolved or clearly disclosed
- the branch is ready for normal review
If the user did not specify and the branch looks incomplete, default to draft and explain why. If the branch appears complete, default to a ready PR.
Create the PR
Prefer piping the body over stdin with --body-file - so you avoid shell
escaping issues and temporary-file assumptions.
Template:
BASE_BRANCH="<resolved-base-branch>"
HEAD_BRANCH="$(git rev-parse --abbrev-ref HEAD)"
TITLE="<type(scope): short subject>"
gh pr create \
--base "${BASE_BRANCH}" \
--head "${HEAD_BRANCH}" \
--title "${TITLE}" \
--body-file - <<'EOF'
## Summary
<What changed and why it matters.>
## Changes
- <Meaningful change 1>
- <Meaningful change 2>
## Validation
- <Tests run, or "Not run">
## Risks
- <Known risk, follow-up, or "None noted">
EOF
For a draft PR:
gh pr create --draft ...
gh Fallback Behavior
Prefer gh for the actual PR creation, but handle failures cleanly.
If gh pr create fails:
- Read the error and determine whether it is caused by auth, missing remote branch, missing repo association, or permission problems.
- Fix the prerequisite if it is safe and clearly requested, such as pushing the branch first.
- If creation still cannot proceed, provide the prepared title and body to the user so they can create the PR manually.
Reasonable fallbacks:
- use
gh pr create --webif CLI submission fails but browser-based creation is acceptable - use a repo-local temporary file with
--body-file <path>if stdin or heredoc behavior is unreliable in the environment - fall back to raw git only for inspection and branch publishing, not for PR creation itself
Avoid /tmp if the environment may be sandboxed or ephemeral.
Title and Body Rules
- Prefer conventional-commit-style titles such as
feat:,fix:,docs:, orrefactor:. - Keep titles short, concrete, and reviewer-oriented.
- Add a little bit of contextual humor to the PR title or summary, not much, just enough that it feels human while still reading cleanly in release notes and GitHub history.
- When the change is low-risk, docs-focused, or otherwise light in tone, the humorous touch can be more visible.
- Body content should explain outcome, notable changes, validation status, and risk.
- Include a brief playful phrase in the summary when the title stays straight, or keep the summary mostly straight when the title already carries the wink.
- Do not hide missing tests or known issues behind humor.
- For risky, sensitive, or user-impacting changes, keep the humor understated and feel free to skip it entirely if that serves clarity better.
Examples of good lighter-touch titles:
docs: add gh skill install guidance without the side quest 🗺️refactor(ci): trim release wiring before it grows a second headdocs(readme): clarify local setup before the yak gets involveddocs: tune PR copy so release notes keep their tie on
Examples of good lighter-touch summary lines:
Document the new install flow so readers can get to the good part withoutspelunking through setup docs.Tighten the release steps so future updates feel more like a routine andless like archaeology.
Examples of when to stay fully straight:
fix(auth): handle expired token refresh before retriessecurity: rotate leaked development credentialsfix(api): preserve webhook signature verification on retries
Examples of understated humor for serious changes:
fix(auth): handle expired token refresh before retriesSummary:Keep token refresh failures from turning login into a trust fall.security: rotate leaked development credentialsSummary:Replace exposed credentials and close the window before it becomesa skylight.
If the wording starts reading like stand-up material, pull it back.
Output Expectations
When helping the user, provide:
- the resolved base branch and how it was determined
- a short summary of the branch contents
- the proposed PR title
- the proposed PR body
- whether the PR should be draft or ready, with reasoning
- the exact
gh pr createcommand if the user wants to run or review it
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.