Use when creating a pull request, submitting work for review, or running gh pr create — produces consistent, well-structured PR descriptions
From nightshiftnpx claudepluginhub klefix/nightshift --plugin nightshiftThis skill uses the workspace's default tool permissions.
Designs and optimizes AI agent action spaces, tool definitions, observation formats, error recovery, and context for higher task completion rates.
Generate consistent, well-structured PR descriptions by analyzing the diff and commit history. Write for humans who weren't in the room.
gh pr create# Determine base branch
BASE=$(git rev-parse --abbrev-ref HEAD@{upstream} 2>/dev/null | sed 's|origin/||' || echo "main")
# Full diff against base
git diff "$BASE"...HEAD --stat
git diff "$BASE"...HEAD
# Commit history on this branch
git log "$BASE"..HEAD --oneline
# Check for related issues (look at branch name, commit messages)
gh issue list --state open --limit 10
Group changes by logical concern (not by file):
#NNN or issue keywordsdocs/adr/ for recently added/modified ADRs in the diff## Summary
<2-3 sentences: what changed and why — lead with the "so what">
## Changes
- <Grouped by logical concern>
- <Not file-by-file — intent, not mechanics>
## Context
<Link to issue (#NNN), ADR (docs/adr/NNNN-*.md), or brief architectural context>
<Omit this section if there's no meaningful context to add>
## Test Plan
- [ ] <Concrete verification steps>
- [ ] <Not just "run tests" — what specifically to check>
Title must follow Conventional Commits:
<type>(<optional scope>): <short description>
| Type | When |
|---|---|
feat | New feature or capability |
fix | Bug fix |
refactor | Code change that neither fixes a bug nor adds a feature |
docs | Documentation only |
chore | Build, CI, tooling, dependencies |
test | Adding or fixing tests |
style | Formatting, whitespace (no logic change) |
perf | Performance improvement |
Examples:
feat: add JWT-based authenticationfix(auth): handle expired refresh tokenschore: upgrade dependencies to latestWhy this matters: GitHub uses the PR title as the squash-merge commit message. A conventional commit title means the merge commit is correctly formatted without manual editing.
gh pr create --title "<type>(<scope>): <description>" --body "$(cat <<'EOF'
<the description from step 4>
EOF
)"
Add flags as appropriate:
--assignee @me--label <label> if relevant labels exist--milestone <milestone> if one applies--draft if work is still in progresstype: or type(scope): — no exceptionsListing files instead of intent
Empty test plan
Missing context