7.8 KiB
name, description, allowed-tools
| name | description | allowed-tools | ||||||
|---|---|---|---|---|---|---|---|---|
| update-pr | Creates comprehensive PR descriptions by systematically reviewing ALL changes - features, bug fixes, tests, docs, and infrastructure. Use when user wants to update PR description, prepare PR for review, or document branch changes. Requires gh CLI. |
|
Comprehensive PR Description Creator
Create thorough PR descriptions that document EVERY meaningful change, not just the headline feature.
Critical Rule: Complete Coverage
NEVER assume you know what's in the PR based on branch name or first glance.
PRs often contain:
- Main feature work
- Bug fixes discovered during development
- Performance optimizations
- Test infrastructure improvements
- Documentation updates
- Dependency changes
- Configuration adjustments
You MUST systematically review ALL changes and include them in the summary.
Phase 1: Complete Change Inventory
First, determine the base branch for comparison:
# Get base branch from current PR (if one exists), otherwise fall back to default branch
BASE_BRANCH=$( \
gh pr view --json baseRefName -q '.baseRefName' 2>/dev/null || \
git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null || \
echo 'refs/remotes/origin/main' \
)
BASE_BRANCH="${BASE_BRANCH#refs/remotes/origin/}"
Then gather context (using $BASE_BRANCH from above). These commands are independent and can be run as separate tool calls:
PR and working tree status:
gh pr status
git status --short
Changed files:
git diff origin/$BASE_BRANCH...HEAD --stat
git diff origin/$BASE_BRANCH...HEAD --name-status
Commit history:
git log origin/$BASE_BRANCH..HEAD --oneline --no-merges
Note: Using the PR's actual base branch ensures accurate diffs for release backports or PRs targeting non-default branches.
Phase 2: Systematic File Analysis
Using the --name-status output, create a categorized inventory of EVERY changed file:
2.1 Core Application Changes
- Check files matching your framework patterns (e.g.,
*Service*,*Controller*,*Component*) - Look for: new methods, refactoring, bug fixes, performance improvements
- Read key diffs to understand WHAT changed and WHY
2.2 Bug Fixes & Corrections
- Scan commit messages for: "fix", "bug", "correct", "resolve"
- Read diffs for files mentioned in fix commits
- Document: what was broken, what was fixed, impact
2.3 Infrastructure & Framework
- Check: interceptors, middleware, base classes, test fixtures
- Look for: new patterns, performance improvements, testing infrastructure
- These are often overlooked but important
2.4 Configuration Changes
- Check: config files, constants, environment settings, package files
- Look for: new constants, dependency changes, configuration adjustments
- Even small changes here can be significant
2.5 Test Files
- Count new test files vs modified test files
- Check for: new test patterns, test infrastructure, coverage improvements
- Document test coverage added
2.6 Documentation
- Check: README files, docs folders, inline documentation
- Look for: new documentation, removed obsolete content, updated instructions
2.7 Build & Tooling
- Check: package.json, build configs, CI/CD files, scripts
- Look for: dependency updates, new tooling, build process changes
2.8 UI/Frontend Changes
- Check: components, styles, state management
- Look for: new components, UI fixes, styling changes
Phase 3: Commit-by-Commit Review
For EACH commit in git log:
- Read the commit message - it tells you WHAT category of change
- Identify which files were changed in that commit
- Read diffs for key files to understand the WHY
- Note if commit is: feature, bugfix, test, docs, refactor, perf, chore
Common prefixes:
fix:= bug fix (HIGH PRIORITY - always include)feat:= feature (main work)test:= test infrastructuredocs:= documentationperf:= performance optimizationrefactor:= code organizationchore:= maintenance tasks
Phase 4: Verification Checklist
Before writing the summary, confirm you've checked:
- ALL commits reviewed and categorized
- Core application changes documented
- Bug fixes identified and explained
- Infrastructure/framework changes noted
- Configuration changes included
- Test coverage quantified
- Documentation updates listed
- Build/tooling changes noted
If you cannot check ALL boxes, you are not done gathering data.
Phase 5: Write Comprehensive Summary
Structure your summary to cover ALL categories of changes.
Template Structure
## Summary
[One sentence covering the MAIN change, plus brief mention of other significant improvements]
## User Impact
**[Main Feature Category]:**
- [Specific user-facing improvements]
**[Secondary Categories if applicable - e.g., Reliability, Performance]:**
- [Bug fixes with impact]
- [Performance improvements]
## Technical Notes
### 1. [Main Feature Name]
[Detailed explanation of main feature with file references]
### 2. [Bug Fixes / Corrections]
[Each bug fix with location, what was wrong, impact, fix]
### 3. [Infrastructure / Performance]
[Test improvements, framework changes, optimizations]
### 4. [Configuration & Dependencies]
[Constants, config changes, dependency updates]
### 5. [Documentation]
[README updates, new docs, removed obsolete content]
## Testing
[Comprehensive test results with specific numbers]
## Implementation Approach
[List ALL commits with brief explanation of each]
1. **[commit message]** - [what it did]
2. **[commit message]** - [what it did]
...
## Next Steps
[Only if applicable]
---
Generated with [Claude Code](https://claude.com/claude-code)
Quality Checklist
Before finalizing, verify:
- Completeness: Every commit is represented in the summary
- Accuracy: All bug fixes are documented with impact
- Context: WHY changes were made, not just WHAT changed
- Organization: Changes grouped logically (features, bugs, infrastructure, etc.)
- Specificity: File paths for critical changes
- Impact: User-facing vs internal changes clearly separated
- Testing: Actual test results reported, not assumptions
Output Instructions
- Save to temporary file: Write the summary to
/tmp/pr-summary.md(avoids cluttering repo) - Self-review: Read your summary and verify all commits and file categories are covered
- User approval: Show the summary and ask if they want to update the PR
- Update PR (only if user approves):
gh pr edit --body-file /tmp/pr-summary.md
Common Mistakes to Avoid
- Focusing only on main feature - PRs often contain multiple types of changes
- Skipping "small" changes - Constants, config, and doc changes matter
- Ignoring bug fixes - These are often HIGH PRIORITY to document
- Missing test infrastructure - Test improvements affect development velocity
- Incomplete commit review - Every commit tells part of the story
- Vague descriptions - "Updated files" tells reviewers nothing
Troubleshooting
No PR exists yet:
# Create PR first
gh pr create --title "Title" --body "WIP"
# Then run the update process
Verify base branch:
# Check what base branch the PR is targeting
gh pr view --json baseRefName -q '.baseRefName'
# Or detect default branch if no PR exists (with guaranteed fallback)
BASE=$(git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null || echo 'refs/remotes/origin/main')
echo "${BASE#refs/remotes/origin/}"
gh CLI not authenticated:
gh auth status
gh auth login
Remember: The PR may contain a week's worth of work across multiple areas. Your job is to tell the complete story, not just the headline feature.