pr-prep
PR preparation: git archaeology, test validation, structured PR body generation. Mandatory user review gate before submission. Triggers: "prepare PR", "PR prep", "submit PR", "create PR body", "write PR description".
Best use case
pr-prep is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
PR preparation: git archaeology, test validation, structured PR body generation. Mandatory user review gate before submission. Triggers: "prepare PR", "PR prep", "submit PR", "create PR body", "write PR description".
Teams using pr-prep should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/pr-prep/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How pr-prep Compares
| Feature / Agent | pr-prep | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
PR preparation: git archaeology, test validation, structured PR body generation. Mandatory user review gate before submission. Triggers: "prepare PR", "PR prep", "submit PR", "create PR body", "write PR description".
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# PR Preparation Skill Systematic PR preparation that validates tests and generates high-quality PR bodies. ## Overview Prepares contributions by analyzing the target repo's conventions, git history, test coverage, and generating properly-formatted PR bodies. **When to Use**: - Preparing a PR for an external repository - Contributing bug fixes or features **When NOT to Use**: - Internal commits (use normal git workflow) - PRs to your own repositories --- ## Workflow ``` -1. Prior Work Check -> BLOCKING: Final check for competing PRs 0. Isolation Check -> BLOCK if PR mixes unrelated changes 1. Context Discovery -> Understand target repo conventions 2. Git Archaeology -> Analyze commit patterns, PR history 3. Pre-Flight Checks -> Run tests, linting, build 4. Change Analysis -> Summarize what changed and why 4.5 Commit Split Advisor -> Suggest logical commit groups (manual) 5. PR Body Generation -> Create structured PR description 6. USER REVIEW GATE -> STOP. User must approve before submission. 7. Submission -> Only after explicit user approval ``` --- ## Phase 0: Isolation Check (BLOCKING) **CRITICAL**: Run this FIRST. Do not proceed if PR mixes unrelated changes. ### Commit Type Analysis ```bash # Extract commit type prefixes from branch git log --oneline main..HEAD | sed 's/^[^ ]* //' | grep -oE '^[a-z]+(\([^)]+\))?:' | sort -u ``` **Rule**: If more than one commit type prefix exists, the PR is mixing concerns. ### File Theme Analysis ```bash # List all files changed vs main git diff --name-only main..HEAD # Group by directory git diff --name-only main..HEAD | cut -d'/' -f1-2 | sort -u ``` ### Isolation Checklist | Check | Pass Criteria | |-------|---------------| | **Single commit type** | All commits share same prefix | | **Thematic files** | All changed files relate to PR scope | | **No main overlap** | Changes not already merged | | **Atomic scope** | Can explain in one sentence | **DO NOT PROCEED IF ISOLATION CHECK FAILS.** --- ## CRITICAL: User Review Gate **NEVER submit a PR without explicit user approval.** After generating the PR body (Phase 5), ALWAYS: 1. Write the PR body to a file for review 2. Show the user what will be submitted 3. **STOP and ask**: "Ready to submit? Review the PR body above." 4. Wait for explicit approval before running `gh pr create` ```bash # Write PR body to file cat > /tmp/pr-body.md << 'EOF' <generated PR body> EOF # Show user cat /tmp/pr-body.md # ASK - do not proceed without answer echo "Review complete. Submit this PR? [y/N]" ``` --- ## Phase 3: Pre-Flight Checks ```bash # Go projects go build ./... go vet ./... go test ./... -v -count=1 # Node projects npm run build npm test # Python projects pytest -v ``` ### Pre-Flight Checklist - [ ] Code compiles without errors - [ ] All tests pass - [ ] No new linting warnings - [ ] No secrets or credentials in code --- ## Phase 4.5: Commit Split Analysis (Suggestion-Only) Analyze the branch diff and suggest logical commit groupings. ```bash # Review the scope of changes git diff --stat main..HEAD ``` **Output a numbered list** of suggested commits with file groups: ``` Commit 1: [description] -- files: path/a.go, path/a_test.go Commit 2: [description] -- files: path/b.go, path/c.go ``` **Ordering**: Infrastructure/migrations > Models/services > Controllers/views > Tests > VERSION/CHANGELOG. Each commit must be independently valid (no broken imports). If diff is < 50 lines across < 4 files, recommend a single commit. See [references/commit-split-advisor.md](references/commit-split-advisor.md) for full rules. > **These are suggestions only. User reads and implements manually.** --- ## Phase 5: PR Body Generation ### Standard Format ```markdown ## Summary Brief description of WHAT changed and WHY. 1-3 sentences. Start with action verb (Add, Fix, Update, Refactor). ## Changes Technical details of what was modified. ## Test plan - [x] `go build ./...` passes - [x] `go test ./...` passes - [x] Manual: <specific scenario tested> Fixes #NNN ``` **Key conventions:** - Test plan items are **checked** `[x]` (you ran them before PR) - `Fixes #NNN` goes at the end --- ## Phase 7: Submission (After Approval Only) ```bash # Create PR with reviewed body gh pr create --title "type(scope): brief description" \ --body "$(cat /tmp/pr-body.md)" \ --base main ``` **Remember**: This command should ONLY run after user explicitly approves. --- ## Anti-Patterns | DON'T | DO INSTEAD | |-------|------------| | **Submit without approval** | **ALWAYS stop for user review** | | **Skip isolation check** | **Run Phase 0 FIRST** | | Bundle lint fixes into feature PRs | Lint fixes get their own PR | | Giant PRs | Split into logical chunks | | Vague PR body | Detailed summary with context | | Skip pre-flight | Always run tests locally | ## Examples ### Prepare External PR Body **User says:** "Prepare this branch for PR submission." **What happens:** 1. Run isolation and pre-flight validation. 2. Build structured PR body with summary and test plan. 3. Pause for mandatory user review before submit. ### Evidence-First PR Packaging **User says:** "Generate a high-quality PR description with clear verification steps." **What happens:** 1. Gather git archaeology and test evidence. 2. Synthesize concise rationale and change list. 3. Produce submit-ready body pending approval. ## Troubleshooting | Problem | Cause | Solution | |---------|-------|----------| | PR body is weak | Missing context from commits/tests | Re-run evidence collection and expand summary | | Submission blocked | Mandatory review gate not passed | Get explicit user approval before `gh pr create` | | Test plan incomplete | Commands/results not captured | Add executed checks and outcomes explicitly | | Title/body mismatch | Scope drift during edits | Regenerate from latest branch diff and constraints | ## Reference Documents - [references/case-study-historical-context.md](references/case-study-historical-context.md) - [references/lessons-learned.md](references/lessons-learned.md) - [references/package-extraction.md](references/package-extraction.md) - [references/commit-split-advisor.md](references/commit-split-advisor.md) ## Local Resources ### references/ - [references/case-study-historical-context.md](references/case-study-historical-context.md) - [references/commit-split-advisor.md](references/commit-split-advisor.md) - [references/lessons-learned.md](references/lessons-learned.md) - [references/package-extraction.md](references/package-extraction.md) ### scripts/ - `scripts/validate.sh`
Related Skills
vibe
Comprehensive code validation. Runs complexity analysis then multi-model council. Answer: Is this code ready to ship? Triggers: "vibe", "validate code", "check code", "review code", "code quality", "is this ready".
validation
Full validation phase orchestrator. Vibe + post-mortem + retro + forge. Reviews implementation quality, extracts learnings, feeds the knowledge flywheel. Triggers: "validation", "validate", "validate work", "review and learn", "validation phase", "post-implementation review".
update
Reinstall all AgentOps skills globally from the latest source. Triggers: "update skills", "reinstall skills", "sync skills".
trace
Trace design decisions and concepts through session history, handoffs, and git. Triggers: "trace decision", "how did we decide", "where did this come from", "design provenance", "decision history".
test
Test generation, coverage analysis, and TDD workflow. Triggers: "test", "generate tests", "test coverage", "write tests", "tdd", "add tests", "test strategy", "missing tests", "coverage gaps".
status
Single-screen dashboard showing current work, recent validations, flywheel health, and suggested next action. Triggers: "status", "dashboard", "what am I working on", "where was I".
standards
Language-specific coding standards and validation rules. Provides Python, Go, Rust, TypeScript, Shell, YAML, JSON, and Markdown standards. Auto-loaded by $vibe, $implement, $doc, $bug-hunt, $complexity based on file types.
shared
Shared reference documents for multi-agent skills (not directly invocable)
security
Continuous repository security scanning and release gating. Triggers: "security scan", "security audit", "pre-release security", "run scanners", "check vulnerabilities".
security-suite
Composable security suite for binary and prompt-surface assurance, static analysis, dynamic tracing, repo-native redteam scans, contract capture, baseline drift, and policy gating. Triggers: "binary security", "reverse engineer binary", "black-box binary test", "behavioral trace", "baseline diff", "prompt redteam", "security suite".
scenario
Author and manage holdout scenarios for behavioral validation. Scenarios are stored in .agents/holdout/ where implementing agents cannot see them. Triggers: "$scenario", "holdout", "behavioral scenario", "create scenario", "list scenarios".
scaffold
Project scaffolding, component generation, and boilerplate setup. Triggers: "scaffold", "new project", "init project", "create project", "generate component", "setup project", "starter", "boilerplate".