Initial commit
This commit is contained in:
333
commands/fix-pr.md
Normal file
333
commands/fix-pr.md
Normal file
@@ -0,0 +1,333 @@
|
||||
---
|
||||
description: Apply fixes to an existing PR, addressing all review comments and validation issues
|
||||
---
|
||||
|
||||
# Fixing PR: $ARGUMENTS
|
||||
|
||||
## Determining Which PR to Review
|
||||
|
||||
First, determine which PR to review based on the arguments:
|
||||
|
||||
```bash
|
||||
# If no arguments provided, use current branch's PR
|
||||
if [ -z "$ARGUMENTS" ]; then
|
||||
CURRENT_BRANCH=$(git branch --show-current)
|
||||
PR_NUMBER=$(gh pr list --head "$CURRENT_BRANCH" --json number --jq '.[0].number')
|
||||
if [ -z "$PR_NUMBER" ]; then
|
||||
echo "No PR found for current branch $CURRENT_BRANCH"
|
||||
exit 1
|
||||
fi
|
||||
# If argument is a number, use it directly
|
||||
elif [[ "$ARGUMENTS" =~ ^[0-9]+$ ]]; then
|
||||
PR_NUMBER=$ARGUMENTS
|
||||
# Otherwise, search for PR by description/title
|
||||
else
|
||||
PR_NUMBER=$(gh pr list --search "$ARGUMENTS" --json number,title --jq '.[0].number')
|
||||
if [ -z "$PR_NUMBER" ]; then
|
||||
echo "No PR found matching: $ARGUMENTS"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "Reviewing PR #$PR_NUMBER"
|
||||
```
|
||||
|
||||
Orchestrate agents to review, validate, and fix issues in PR #$PR_NUMBER, addressing all GitHub review comments.
|
||||
|
||||
## ⚠️ CRITICAL: Agent Usage is MANDATORY
|
||||
|
||||
**You are a coordinator, NOT an implementer. You MUST:**
|
||||
1. **NEVER make direct code changes** - always use agents
|
||||
2. **INVOKE agents with specific, detailed instructions**
|
||||
3. **WAIT for each agent to complete** before proceeding
|
||||
4. **VERIFY agent outputs** before moving to next phase
|
||||
|
||||
**If you find yourself using Edit, Write, or MultiEdit directly, STOP and invoke the appropriate agent instead.**
|
||||
|
||||
## Phase 1: PR Analysis
|
||||
After determining PR_NUMBER above, gather context about the PR and review comments:
|
||||
|
||||
```bash
|
||||
gh pr view $PR_NUMBER --comments
|
||||
gh pr checks $PR_NUMBER # Note: CI runs on draft PRs too!
|
||||
gh pr diff $PR_NUMBER
|
||||
```
|
||||
|
||||
Document findings:
|
||||
- Current CI status (even draft PRs have CI)
|
||||
- Review comments to address
|
||||
- Files changed
|
||||
- Type of implementation (new program, bug fix, enhancement)
|
||||
|
||||
## Phase 2: Enhanced Domain Validation
|
||||
Run comprehensive validation using specialized agents:
|
||||
|
||||
### Step 1: Domain-Specific Validation
|
||||
Invoke **implementation-validator** to check:
|
||||
- Federal/state jurisdiction separation
|
||||
- Variable naming conventions and duplicates
|
||||
- Hard-coded value patterns
|
||||
- Performance optimization opportunities
|
||||
- Documentation placement
|
||||
- PolicyEngine-specific patterns
|
||||
|
||||
### Step 2: Reference Validation
|
||||
Invoke **reference-validator** to verify:
|
||||
- All parameters have references
|
||||
- References actually corroborate values
|
||||
- Federal sources for federal params
|
||||
- State sources for state params
|
||||
- Specific citations, not generic links
|
||||
|
||||
### Step 3: Implementation Validation
|
||||
Invoke **implementation-validator** to check:
|
||||
- No hard-coded values in formulas
|
||||
- Complete implementations (no TODOs)
|
||||
- Proper entity usage
|
||||
- Correct formula patterns
|
||||
|
||||
Create a comprehensive checklist:
|
||||
- [ ] Domain validation issues
|
||||
- [ ] Reference validation issues
|
||||
- [ ] Implementation issues
|
||||
- [ ] Review comments to address
|
||||
- [ ] CI failures to fix
|
||||
|
||||
## Phase 3: Sequential Fix Application
|
||||
|
||||
**CRITICAL: You MUST use agents for ALL fixes. DO NOT make direct edits yourself.**
|
||||
|
||||
Based on issues found, invoke agents IN ORDER to avoid conflicts.
|
||||
|
||||
**Why Sequential**: Unlike initial implementation where we need isolation, PR fixes must be applied sequentially because:
|
||||
- Each fix builds on the previous one
|
||||
- Avoids merge conflicts
|
||||
- Tests need to see the fixed implementation
|
||||
- Documentation needs to reflect the final code
|
||||
|
||||
**MANDATORY AGENT USAGE - Apply fixes in this exact order:**
|
||||
|
||||
### Step 1: Fix Domain & Parameter Issues
|
||||
```markdown
|
||||
YOU MUST INVOKE THESE AGENTS - DO NOT FIX DIRECTLY:
|
||||
|
||||
1. First, invoke implementation-validator:
|
||||
"Scan all files in this PR and create a comprehensive list of all domain violations and implementation issues"
|
||||
|
||||
2. Then invoke parameter-architect (REQUIRED for ANY hard-coded values):
|
||||
"Design parameter structure for these hard-coded values found: [list all values]
|
||||
Create the YAML parameter files with proper federal/state separation"
|
||||
|
||||
3. Then invoke rules-engineer (REQUIRED for code changes):
|
||||
"Refactor all variables to use the new parameters created by parameter-architect.
|
||||
Fix all hard-coded values in: [list files]"
|
||||
|
||||
4. Then invoke reference-validator:
|
||||
"Add proper references to all new parameters created"
|
||||
|
||||
5. ONLY AFTER all agents complete: Commit changes
|
||||
```
|
||||
|
||||
### Step 2: Add Missing Tests (MANDATORY)
|
||||
```markdown
|
||||
REQUIRED - Must generate tests even if none were failing:
|
||||
|
||||
1. Invoke edge-case-generator:
|
||||
"Generate boundary tests for all parameters created in Step 1.
|
||||
Test edge cases for: [list all new parameters]"
|
||||
|
||||
2. Invoke test-creator:
|
||||
"Create integration tests for the refactored Idaho LIHEAP implementation.
|
||||
Include tests for all new parameter files created."
|
||||
|
||||
3. VERIFY tests pass before committing
|
||||
4. Commit test additions
|
||||
```
|
||||
|
||||
### Step 3: Enhance Documentation
|
||||
1. **documentation-enricher**: Add examples and references to updated code
|
||||
2. Commit documentation improvements
|
||||
|
||||
### Step 4: Optimize Performance (if needed)
|
||||
1. **performance-optimizer**: Vectorize and optimize calculations
|
||||
2. Run tests to ensure no regressions
|
||||
3. Commit optimizations
|
||||
|
||||
### Step 5: Validate Integrations
|
||||
1. **cross-program-validator**: Check benefit interactions
|
||||
2. Fix any cliff effects or integration issues found
|
||||
3. Commit integration fixes
|
||||
|
||||
## Phase 4: Apply Fixes
|
||||
For each issue identified:
|
||||
|
||||
1. **Read current implementation**
|
||||
```bash
|
||||
gh pr checkout $PR_NUMBER
|
||||
```
|
||||
|
||||
2. **Apply agent-generated fixes**
|
||||
- Use Edit/MultiEdit for targeted fixes
|
||||
- Preserve existing functionality
|
||||
- Add only what's needed
|
||||
|
||||
3. **Verify fixes locally**
|
||||
```bash
|
||||
make test
|
||||
make format
|
||||
```
|
||||
|
||||
## Phase 5: Address Review Comments
|
||||
For each GitHub comment:
|
||||
|
||||
1. **Parse comment intent**
|
||||
- Is it requesting a change?
|
||||
- Is it asking for clarification?
|
||||
- Is it pointing out an issue?
|
||||
|
||||
2. **Generate response**
|
||||
- If change requested: Apply fix and confirm
|
||||
- If clarification: Add documentation/comment
|
||||
- If issue: Fix and explain approach
|
||||
|
||||
3. **Post response on GitHub**
|
||||
```bash
|
||||
gh pr comment $PR_NUMBER --body "Addressed: [explanation of fix]"
|
||||
```
|
||||
|
||||
## Phase 6: CI Validation
|
||||
Invoke ci-fixer to ensure all checks pass:
|
||||
|
||||
1. **Push fixes**
|
||||
```bash
|
||||
git add -A
|
||||
git commit -m "Address review comments
|
||||
|
||||
- Fixed hard-coded values identified in review
|
||||
- Added missing tests for edge cases
|
||||
- Enhanced documentation with examples
|
||||
- Optimized performance issues
|
||||
|
||||
Addresses comments from @reviewer"
|
||||
git push
|
||||
```
|
||||
|
||||
2. **Monitor CI**
|
||||
```bash
|
||||
gh pr checks $PR_NUMBER --watch
|
||||
```
|
||||
|
||||
3. **Fix any CI failures**
|
||||
- Format issues: `make format`
|
||||
- Test failures: Fix with targeted agents
|
||||
- Lint issues: Apply corrections
|
||||
|
||||
## Phase 7: Final Review & Summary
|
||||
Invoke implementation-validator for final validation:
|
||||
- All comments addressed?
|
||||
- All tests passing?
|
||||
- No regressions introduced?
|
||||
|
||||
Post summary comment:
|
||||
```bash
|
||||
gh pr comment $PR_NUMBER --body "## Summary of Changes
|
||||
|
||||
### Issues Addressed
|
||||
✅ Fixed hard-coded values in [files]
|
||||
✅ Added parameterization for [values]
|
||||
✅ Enhanced test coverage (+X tests)
|
||||
✅ Improved documentation
|
||||
✅ All CI checks passing
|
||||
|
||||
### Review Comments Addressed
|
||||
- @reviewer1: [Issue] → [Fix applied]
|
||||
- @reviewer2: [Question] → [Clarification added]
|
||||
|
||||
### Ready for Re-Review
|
||||
All identified issues have been addressed. The implementation now:
|
||||
- Uses parameters for all configurable values
|
||||
- Has comprehensive test coverage
|
||||
- Includes documentation with examples
|
||||
- Passes all CI checks"
|
||||
```
|
||||
|
||||
## Command Options
|
||||
|
||||
### Usage Examples
|
||||
- `/review-pr` - Review PR for current branch
|
||||
- `/review-pr 6444` - Review PR #6444
|
||||
- `/review-pr "Idaho LIHEAP"` - Search for and review PR by title/description
|
||||
|
||||
### Quick Fix Mode
|
||||
`/review-pr [PR] --quick`
|
||||
- Only fix CI failures
|
||||
- Skip comprehensive review
|
||||
- Focus on getting checks green
|
||||
|
||||
### Deep Review Mode
|
||||
`/review-pr [PR] --deep`
|
||||
- Run all validators
|
||||
- Generate comprehensive tests
|
||||
- Full documentation enhancement
|
||||
- Cross-program validation
|
||||
|
||||
### Comment Only Mode
|
||||
`/review-pr [PR] --comments-only`
|
||||
- Only address GitHub review comments
|
||||
- Skip additional validation
|
||||
- Faster turnaround
|
||||
|
||||
## Success Metrics
|
||||
|
||||
The PR is ready when:
|
||||
- ✅ All CI checks passing
|
||||
- ✅ All review comments addressed
|
||||
- ✅ No hard-coded values
|
||||
- ✅ Comprehensive test coverage
|
||||
- ✅ Documentation complete
|
||||
- ✅ No performance issues
|
||||
|
||||
## Common Review Patterns
|
||||
|
||||
### "Hard-coded value" Comment
|
||||
1. Identify the value
|
||||
2. Create parameter with parameter-architect
|
||||
3. Update implementation with rules-engineer
|
||||
4. Add test with test-creator
|
||||
|
||||
### "Missing test" Comment
|
||||
1. Identify the scenario
|
||||
2. Use edge-case-generator for boundaries
|
||||
3. Use test-creator for integration tests
|
||||
4. Verify with implementation-validator
|
||||
|
||||
### "Needs documentation" Comment
|
||||
1. Use documentation-enricher
|
||||
2. Add calculation examples
|
||||
3. Add regulatory references
|
||||
4. Explain edge cases
|
||||
|
||||
### "Performance issue" Comment
|
||||
1. Use performance-optimizer
|
||||
2. Vectorize operations
|
||||
3. Remove redundant calculations
|
||||
4. Test with large datasets
|
||||
|
||||
## Error Handling
|
||||
|
||||
If agents produce conflicting fixes:
|
||||
1. Prioritize fixes that address review comments
|
||||
2. Ensure no regressions
|
||||
3. Maintain backward compatibility
|
||||
4. Document any tradeoffs
|
||||
|
||||
## Pre-Flight Checklist
|
||||
|
||||
Before starting, confirm:
|
||||
- [ ] I will NOT make direct edits (no Edit/Write/MultiEdit by coordinator)
|
||||
- [ ] I will invoke agents for ALL changes
|
||||
- [ ] I will wait for each agent to complete
|
||||
- [ ] I will generate tests even if current tests pass
|
||||
- [ ] I will commit after each agent phase
|
||||
|
||||
Start with determining which PR to review, then proceed to Phase 1: Analyze the PR and review comments.
|
||||
Reference in New Issue
Block a user