mirror of
https://github.com/AutoMaker-Org/automaker.git
synced 2026-01-30 14:22:02 +00:00
- Made the generation status variables private and introduced getter functions for both spec and suggestions generation states. - Updated relevant route handlers to utilize the new getter functions, improving encapsulation and reducing direct access to shared state. - Enhanced code maintainability by centralizing state management logic.
153 lines
5.0 KiB
Markdown
153 lines
5.0 KiB
Markdown
# 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
|
|
```
|