File size: 5,086 Bytes
1dbc34b | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 | # PR Comment Fix Agent Instructions
## Overview
This agent automatically reviews a GitHub Pull Request, analyzes all comments, and systematically addresses each comment by making the necessary code changes.
## Workflow
### Step 1: Fetch PR Information
1. Use the GitHub CLI command: `gh pr view <pr-number> --comments --json number,title,body,comments,headRefName,baseRefName`
2. Parse the JSON output to extract:
- PR number and title
- PR description/body
- All comments (including review comments and inline comments)
- Branch information (head and base branches)
### Step 2: Analyze Comments
For each comment, identify:
- **Type**: Review comment, inline comment, or general comment
- **File path**: If it's an inline comment, extract the file path
- **Line number**: If it's an inline comment, extract the line number(s)
- **Intent**: What change is being requested?
- Bug fix
- Code style/formatting
- Performance improvement
- Refactoring
- Missing functionality
- Documentation update
- Test addition/modification
- **Priority**: Determine if it's blocking (must fix) or non-blocking (nice to have)
### Step 3: Checkout PR Branch
1. Ensure you're in the correct repository
2. Fetch the latest changes: `git fetch origin`
3. Checkout the PR branch: `git checkout <headRefName>`
4. Pull latest changes: `git pull origin <headRefName>`
### Step 4: Address Each Comment Systematically
For each comment, follow this process:
#### 4.1 Read Relevant Files
- If the comment references a specific file, read that file first
- If the comment is general, read related files based on context
- Understand the current implementation
#### 4.2 Understand the Request
- Parse what specific change is needed
- Identify the root cause or issue
- Consider edge cases and implications
#### 4.3 Make the Fix
- Implement the requested change
- Ensure the fix addresses the exact concern raised
- Maintain code consistency with the rest of the codebase
- Follow existing code style and patterns
#### 4.4 Verify the Fix
- Check that the change resolves the comment
- Ensure no new issues are introduced
- Run relevant tests if available
- Check for linting errors
### Step 5: Document Changes
For each comment addressed:
- Add a comment or commit message referencing the PR comment
- If multiple comments are addressed, group related changes logically
### Step 6: Commit Changes
1. Stage all changes: `git add -A`
2. Create a commit with a descriptive message:
```
fix: address PR review comments
- [Brief description of fix 1] (addresses comment #X)
- [Brief description of fix 2] (addresses comment #Y)
- ...
```
3. Push changes: `git push origin <headRefName>`
## Comment Types and Handling
### Inline Code Comments
- **Location**: Specific file and line number
- **Action**: Read the file, locate the exact line, understand context, make targeted fix
- **Example**: "This function should handle null values" → Add null check
### Review Comments
- **Location**: May reference multiple files or general patterns
- **Action**: Read all referenced files, understand the pattern, apply fix consistently
- **Example**: "We should use async/await instead of promises" → Refactor all instances
### General Comments
- **Location**: PR-level, not file-specific
- **Action**: Understand the broader concern, identify affected areas, make comprehensive changes
- **Example**: "Add error handling" → Review entire PR for missing error handling
## Best Practices
1. **One Comment at a Time**: Address comments sequentially to avoid conflicts
2. **Preserve Intent**: Don't change more than necessary to address the comment
3. **Test Changes**: Run tests after each significant change
4. **Ask for Clarification**: If a comment is ambiguous, note it but proceed with best interpretation
5. **Group Related Fixes**: If multiple comments address the same issue, fix them together
6. **Maintain Style**: Follow existing code style, formatting, and patterns
7. **Check Dependencies**: Ensure fixes don't break other parts of the codebase
## Error Handling
- If a comment references a file that doesn't exist, note it and skip
- If a line number is out of range (file changed), search for similar code nearby
- If a fix introduces breaking changes, revert and try a different approach
- If tests fail after a fix, investigate and adjust the implementation
## Completion Criteria
The agent has successfully completed when:
1. All comments have been analyzed
2. All actionable comments have been addressed with code changes
3. All changes have been committed and pushed
4. A summary of addressed comments is provided
## Example Output Summary
```
PR #123 Review Comments - Addressed
✅ Comment #1: Fixed null handling in getUserData() (line 45)
✅ Comment #2: Added error handling for API calls
✅ Comment #3: Refactored to use async/await pattern
⚠️ Comment #4: Requires clarification - noted in commit message
✅ Comment #5: Fixed typo in documentation
Total: 5 comments, 4 addressed, 1 requires clarification
```
|