git-standards/skills/pr-standards/SKILL.md
Use when creating PRs, linking issues, managing PR comments, or creating GitHub issues
npx skillsauth add jacobpevans/claude-code-plugins pr-standardsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Run these checks in order before gh pr create:
Guard 1 — Check for merged twin (prevents zombie PRs):
gh pr list --repo JacobPEvans/<repo> --state merged --head <branch>
If merged PR exists AND git log origin/main..HEAD --oneline is empty:
STOP. Remove stale worktree.
Guard 2 — Check for existing open PR (prevents duplicates):
gh pr list --repo JacobPEvans/<repo> --state open --head <branch>
If open PR exists: git push origin <branch> instead of creating new PR.
Guard 3 — Find related issues (enforces linking):
gh issue list --repo JacobPEvans/<repo> --state open --search "<keywords>"
Include Closes #X or Related to #X in PR body. After creation:
gh issue comment <num> --body "Implementation: #<pr>".
Guard 4 — Validate branch has commits:
git log origin/main..HEAD --oneline
If empty: no new work. Clean up instead.
When reviewing a PR, distinguish a real fix from a workaround. Workarounds become permanent tech debt if merged without acknowledgement. Four red flags:
grep -r <name> . in the repo; if zero matches, the mechanism does not
exist and the inline copy will drift silently.Three or more red flags → recommend close, not merge. Workarounds get an upstream issue and an exit criterion before merging, or they are rejected.
Origin: 2026-05-22 ansible-splunk PRs #216 (asymmetric inline of 1 of 6
imports, references non-existent gh-aw-sync-upstream mechanism) and #218
(cron-retrigger band-aid with no exit criterion). Both reached
mergeStateStatus: CLEAN and would have merged under a mechanical-gate
review.
Every PR body must include (bot PRs exempt):
## Related Issues
Closes #X
Use Closes #X for full resolution (auto-closes on merge).
Use Related to #X for partial.
NEVER tag AI assistants in PR comments unless explicitly requesting assistance. Do not tag to acknowledge fixes, notify of changes, or thank for feedback. Just resolve the thread.
Exception: explicit requests like
@gemini-code-assist review the security implications of this change.
Canonical conventions (no emoji, Conventional Commits, feat: vs fix:):
docs.jacobpevans.com/conventions/commit-conventions.
PR-specific additions: prefixes apply to commit subjects and PR titles only — PR descriptions and release notes are plain prose. Applies to all PRs — human, AI-assisted, and bot-authored automated fixes.
| Prefix | Use Case |
| --- | --- |
| [FEATURE] | New functionality |
| [BUG] | Something broken |
| [DOCS] | Documentation changes |
| [REFACTOR] | Code improvements |
| [Small Batch] | Scoped 1-2 week work |
Type (pick one): bug, enhancement, documentation, question
Priority (pick one): priority:critical, priority:high,
priority:medium, priority:low
Size: size:xs (<1d), size:s (1-3d), size:m (3-5d),
size:l (1-2w), size:xl (2+w)
## Problem
**Raw idea**: [concept]
**Current pain**: [what's broken]
**Size**: [xs|s|m|l|xl]
## Solution Sketch
**Core concept**: [approach]
**Out of scope**: [boundaries]
## Rabbit Holes
- [complexity traps to avoid]
## Done Looks Like
- [ ] Acceptance criterion
## Verification Steps
- [ ] How to verify
## Metadata
**Related Issues**: Blocks: #XX / Blocked by: #YY / Related to: #ZZ
## What Happened
[Expected vs actual]
## Steps to Reproduce
1. Step one
## Context
**Environment**: [details]
## Done Looks Like
- [ ] Bug no longer occurs
- [ ] Regression test added
## Verification Steps
- [ ] Reproduce steps no longer trigger bug
Every issue MUST have explicit, checkbox-format acceptance criteria.
tools
Use when installing or choosing CLI tools in a Nix flake repo, editing flake.nix or home-manager config, or when tempted to pip/pipx/uv/brew/npm install anything. Tools come from the dev shell or nix shell — never ad-hoc package managers.
testing
Use when creating or editing GitHub Actions workflows that call reusable workflows (uses: OWNER/repo/.github/workflows/...) — org owner references must be the literal current org, and shared-CI homes are under dryvist.
development
Use when adding or editing .pre-commit-config.yaml, wiring pre-commit hooks into a repo, scaffolding a new repo's lint/hook setup, or deciding where a hook or shared lint config should live. Covers the canonical nix-devenv/dryvist-.github architecture, profiles, and consumer patterns.
testing
Check PR merge readiness, sync local repo, cleanup stale worktrees; optional cross-repo sweep and stale-branch prune modes