Pr
Skill thettwe/nyann/skills/pr
Open a GitHub pull request from the current branch, with a Conventional-Commits-style title and a body summarizing the commit range. TRIGGER when the user says "open a PR", "create a pull request", "push and PR", "submit this for review", "ship this PR", "open a draft PR", "file a PR for this branch", "/nyann:pr". Do NOT trigger on "merge the PR" / "approve the PR" / "review PR #N" — those are GitHub actions outside nyann's wedge. Do NOT trigger on "rebase" / "sync with main" / "update my branch" — that's the `sync` skill. Do NOT trigger when the user is on `main` or `master` (no PR to open); if detected, tell them to create a branch first and route to `new-branch`.From its SKILL.md
npx -y skills add thettwe/nyann --skill prAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
3 things to look at
- skips confirmationTells the agent to proceed without asking first, 1 time: "skip the confirmation".
- 6 stars6 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.
- runs commandsInstructs the agent to run 5 commands, including `bash bin/session-check.sh --flow=pr` and 4 more.
SKILL.md
5.9 KB, ~1.4k tokens by cl100k_base, as published. Nobody here has run it
pr
Wraps bin/pr.sh. Two modes:
- Context-only (
--context-only). Collects branch + commit range- suggested title without any network calls. The gh auth check is
skipped entirely in this mode (the script exits with the JSON
summary before reaching the gh guard), so context-only also works
when
ghisn't installed or authenticated. Use this when the user wants you to synthesize a PR title and body from the commits before shipping.
- suggested title without any network calls. The gh auth check is
skipped entirely in this mode (the script exits with the JSON
summary before reaching the gh guard), so context-only also works
when
- Create (default). Pushes the current branch with
-utracking and invokesgh pr createwith your title + body. Returns the PR URL.
0. Drift check (quick, non-blocking)
Run bash bin/session-check.sh --flow=pr. If it produces output,
surface the line to the user verbatim. Do not block the flow.
1. Pre-flight
- Verify
ghis installed and authenticated.bin/pr.shdoes this and emits{skipped, reason}with reasongh-not-installedorgh-not-authenticated. If you see a skip, relay it cleanly; don't try to installghfor the user. - Verify the current branch is not
main/master. If it is, refuse and suggest/nyann:branchto create a feature branch first. - Verify there are commits ahead of the base. If
ahead == 0, tell the user there's nothing to PR and suggest they commit first.
Pre-action guards
bash bin/pre-action-guard.sh --flow pr --target <cwd> [--profile <resolved-profile.json>]
| Exit | Meaning | Action |
|---|---|---|
| 0 | Pass (or advisory warnings) | Surface advisory message lines, continue |
| 3 | Critical guard failed | Refuse to open the PR unless the user passes --skip-guards. Re-ask via AskUserQuestion. |
| 4 | Confirm-severity guard failed | AskUserQuestion: "Proceed despite the warnings?" — explicit confirm required. |
Built-in PR guards include branch-pushed (advisory if upstream missing
or ahead/behind) and wip-commits (advisory if the commit range still
contains WIP/fixup commits). Profiles can promote either to confirm or
critical via guards.pr in the profile.
coverage-delta is an opt-in guard — off by default. Note guards.pr
REPLACES the built-in list (subset semantics — it does not append), so
enable it by re-listing the built-ins alongside it:
"guards":{"pr":[{"name":"branch-pushed"},{"name":"wip-commits"},{"name":"coverage-delta"}]}.
Naming only coverage-delta would silently drop branch-pushed and
wip-commits. It warns (advisory
by default; promote to confirm via the profile) when the branch lowers
test coverage versus the cached .nyann/coverage-baseline.json, tolerant
up to guards.coverage_delta_threshold percentage points (default 0 = any
drop warns). It reuses an existing CI coverage artifact
(coverage/coverage-summary.json, coverage.xml, a Go coverprofile, a
tarpaulin report) and soft-skips when none is present — it never runs
the suite, so it's best paired with a profile/CI that already produces
coverage. Refresh the baseline on the base branch / post-merge with
bash bin/guards/coverage-delta.sh --update-baseline.
2. Decide base branch
bin/pr.sh resolves base in this order: --base arg > upstream
tracking ref > origin/HEAD > main. Normally don't pass --base;
trust the resolution. Override only when the user explicitly names a
different target (e.g. "PR into develop").
3. Generate title + body
Run bin/pr.sh --target <cwd> --context-only first. Read the commit
list from the JSON. Then synthesize:
- Title: single Conventional-Commits line. If the branch has one commit, use that commit's subject verbatim. If many commits, pick the dominant type/scope and write a summary line. Keep it under ~70 chars for GitHub's UI.
- Body: GitHub-flavored markdown. Use this skeleton:
When the user has shared context in the session (e.g. "I verified X locally"), fold it into the Test plan. Don't invent tests that weren't run.## Summary <2-4 bullets on what changed and why; derived from the commit list and any user intent they've shared> ## Test plan <bullets on what was verified; include lint / tests / manual checks the user has done in the session>
4. Confirm before shipping
Show the user the proposed title and body. Ask "Ship it?" before calling the create path. Exceptions: if the user's original phrasing was "just open the PR" / "ship it now" / "don't ask, just PR it", skip the confirmation.
5. Invoke create
bin/pr.sh \
--target <cwd> \
--title "<conventional-title>" \
--body "<markdown-body>" \
[--base <branch>] \
[--draft]
--draft when the user says "draft PR" / "WIP PR" / "not ready for
review yet". Relay the URL from {url} in the output back to the
user.
6. Handling errors
gh pr createcan fail if a PR already exists for this branch. In that case, suggest the user switch togh pr editor/nyann:committo add more commits — don't retry the create.git pushcan fail if the remote is ahead. Surface the error verbatim and suggest/nyann:syncor a manual pull+rebase.
When to hand off
- "now merge it" / "approve it" → out of scope; explain nyann doesn't do merge/approve.
- "update my branch with main first" →
syncskill. - "write a commit message first" →
commitskill.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.