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
```