|
|
@@ -1,100 +1,133 @@
|
|
|
<workflow>
|
|
|
<step number="1">
|
|
|
+ <name>Initialize Review Process</name>
|
|
|
+ <instructions>
|
|
|
+ Create a todo list to track the PR review workflow:
|
|
|
+
|
|
|
+ <update_todo_list>
|
|
|
+ <todos>
|
|
|
+ [ ] Fetch pull request information
|
|
|
+ [ ] Fetch associated issue (if any)
|
|
|
+ [ ] Fetch pull request diff
|
|
|
+ [ ] Fetch existing PR comments and reviews
|
|
|
+ [ ] Check out pull request locally
|
|
|
+ [ ] Verify existing comments against current code
|
|
|
+ [ ] Perform comprehensive review
|
|
|
+ [ ] Prepare review comments
|
|
|
+ [ ] Preview review with user
|
|
|
+ [ ] Submit review or create tasks
|
|
|
+ </todos>
|
|
|
+ </update_todo_list>
|
|
|
+
|
|
|
+ This helps track progress through the review process and ensures all steps are completed.
|
|
|
+ </instructions>
|
|
|
+ </step>
|
|
|
+
|
|
|
+ <step number="2">
|
|
|
<name>Fetch Pull Request Information</name>
|
|
|
<instructions>
|
|
|
- By default, use the GitHub MCP server to fetch and review pull requests from the
|
|
|
- https://github.com/RooCodeInc/Roo-Code repository.
|
|
|
+ By default, review pull requests from the https://github.com/RooCodeInc/Roo-Code repository.
|
|
|
|
|
|
If the user provides a PR number or URL, extract the necessary information:
|
|
|
- Repository owner and name
|
|
|
- Pull request number
|
|
|
|
|
|
- Use the GitHub MCP tool to fetch the PR details:
|
|
|
-
|
|
|
- <use_mcp_tool>
|
|
|
- <server_name>github</server_name>
|
|
|
- <tool_name>get_pull_request</tool_name>
|
|
|
- <arguments>
|
|
|
- {
|
|
|
- "owner": "[owner]",
|
|
|
- "repo": "[repo]",
|
|
|
- "pullNumber": [number]
|
|
|
- }
|
|
|
- </arguments>
|
|
|
- </use_mcp_tool>
|
|
|
+ Use the GitHub CLI to fetch the PR details:
|
|
|
+
|
|
|
+ <execute_command>
|
|
|
+ <command>gh pr view [PR_NUMBER] --repo [owner]/[repo] --json number,title,body,author,state,url,headRefName,baseRefName,mergeable,isDraft,createdAt,updatedAt</command>
|
|
|
+ </execute_command>
|
|
|
+
|
|
|
+ Parse the JSON output to understand the PR's current state and metadata.
|
|
|
+
|
|
|
+ <update_todo_list>
|
|
|
+ <todos>
|
|
|
+ [x] Fetch pull request information
|
|
|
+ [ ] Fetch associated issue (if any)
|
|
|
+ [ ] Fetch pull request diff
|
|
|
+ [ ] Fetch existing PR comments and reviews
|
|
|
+ [ ] Check out pull request locally
|
|
|
+ [ ] Verify existing comments against current code
|
|
|
+ [ ] Perform comprehensive review
|
|
|
+ [ ] Prepare review comments
|
|
|
+ [ ] Preview review with user
|
|
|
+ [ ] Submit review or create tasks
|
|
|
+ </todos>
|
|
|
+ </update_todo_list>
|
|
|
</instructions>
|
|
|
</step>
|
|
|
|
|
|
- <step number="2">
|
|
|
+ <step number="3">
|
|
|
<name>Fetch Associated Issue (If Any)</name>
|
|
|
<instructions>
|
|
|
Check the pull request body for a reference to a GitHub issue (e.g., "Fixes #123", "Closes #456").
|
|
|
- If an issue is referenced, use the GitHub MCP tool to fetch its details:
|
|
|
+ If an issue is referenced, use the GitHub CLI to fetch its details:
|
|
|
|
|
|
- <use_mcp_tool>
|
|
|
- <server_name>github</server_name>
|
|
|
- <tool_name>get_issue</tool_name>
|
|
|
- <arguments>
|
|
|
- {
|
|
|
- "owner": "[owner]",
|
|
|
- "repo": "[repo]",
|
|
|
- "issue_number": [issue_number]
|
|
|
- }
|
|
|
- </arguments>
|
|
|
- </use_mcp_tool>
|
|
|
+ <execute_command>
|
|
|
+ <command>gh issue view [issue_number] --repo [owner]/[repo] --json number,title,body,author,state,url,createdAt,updatedAt,comments</command>
|
|
|
+ </execute_command>
|
|
|
|
|
|
The issue description and comments can provide valuable context for the review.
|
|
|
+
|
|
|
+ <update_todo_list>
|
|
|
+ <todos>
|
|
|
+ [x] Fetch pull request information
|
|
|
+ [x] Fetch associated issue (if any)
|
|
|
+ [ ] Fetch pull request diff
|
|
|
+ [ ] Fetch existing PR comments and reviews
|
|
|
+ [ ] Check out pull request locally
|
|
|
+ [ ] Verify existing comments against current code
|
|
|
+ [ ] Perform comprehensive review
|
|
|
+ [ ] Prepare review comments
|
|
|
+ [ ] Preview review with user
|
|
|
+ [ ] Submit review or create tasks
|
|
|
+ </todos>
|
|
|
+ </update_todo_list>
|
|
|
</instructions>
|
|
|
</step>
|
|
|
|
|
|
- <step number="3">
|
|
|
+ <step number="4">
|
|
|
<name>Fetch Pull Request Diff</name>
|
|
|
<instructions>
|
|
|
Get the pull request diff to understand the changes:
|
|
|
|
|
|
- <use_mcp_tool>
|
|
|
- <server_name>github</server_name>
|
|
|
- <tool_name>get_pull_request_diff</tool_name>
|
|
|
- <arguments>
|
|
|
- {
|
|
|
- "owner": "[owner]",
|
|
|
- "repo": "[repo]",
|
|
|
- "pullNumber": [number]
|
|
|
- }
|
|
|
- </arguments>
|
|
|
- </use_mcp_tool>
|
|
|
+ <execute_command>
|
|
|
+ <command>gh pr diff [PR_NUMBER] --repo [owner]/[repo]</command>
|
|
|
+ </execute_command>
|
|
|
+
|
|
|
+ This will show the complete diff of all changes in the PR.
|
|
|
+
|
|
|
+ <update_todo_list>
|
|
|
+ <todos>
|
|
|
+ [x] Fetch pull request information
|
|
|
+ [x] Fetch associated issue (if any)
|
|
|
+ [x] Fetch pull request diff
|
|
|
+ [ ] Fetch existing PR comments and reviews
|
|
|
+ [ ] Check out pull request locally
|
|
|
+ [ ] Verify existing comments against current code
|
|
|
+ [ ] Perform comprehensive review
|
|
|
+ [ ] Prepare review comments
|
|
|
+ [ ] Preview review with user
|
|
|
+ [ ] Submit review or create tasks
|
|
|
+ </todos>
|
|
|
+ </update_todo_list>
|
|
|
</instructions>
|
|
|
</step>
|
|
|
|
|
|
- <step number="4">
|
|
|
+ <step number="5">
|
|
|
<name>Fetch Existing PR Comments and Reviews</name>
|
|
|
<instructions>
|
|
|
IMPORTANT: Before reviewing any code, first get all existing comments and reviews to understand what feedback has already been provided:
|
|
|
|
|
|
- <use_mcp_tool>
|
|
|
- <server_name>github</server_name>
|
|
|
- <tool_name>get_pull_request_comments</tool_name>
|
|
|
- <arguments>
|
|
|
- {
|
|
|
- "owner": "[owner]",
|
|
|
- "repo": "[repo]",
|
|
|
- "pullNumber": [number]
|
|
|
- }
|
|
|
- </arguments>
|
|
|
- </use_mcp_tool>
|
|
|
-
|
|
|
- Also fetch existing reviews:
|
|
|
- <use_mcp_tool>
|
|
|
- <server_name>github</server_name>
|
|
|
- <tool_name>get_pull_request_reviews</tool_name>
|
|
|
- <arguments>
|
|
|
- {
|
|
|
- "owner": "[owner]",
|
|
|
- "repo": "[repo]",
|
|
|
- "pullNumber": [number]
|
|
|
- }
|
|
|
- </arguments>
|
|
|
- </use_mcp_tool>
|
|
|
+ Fetch all review comments:
|
|
|
+ <execute_command>
|
|
|
+ <command>gh pr view [PR_NUMBER] --repo [owner]/[repo] --comments</command>
|
|
|
+ </execute_command>
|
|
|
+
|
|
|
+ Also fetch review details:
|
|
|
+ <execute_command>
|
|
|
+ <command>gh pr reviews [PR_NUMBER] --repo [owner]/[repo]</command>
|
|
|
+ </execute_command>
|
|
|
|
|
|
Create a mental or written list of:
|
|
|
- All issues/suggestions that have been raised
|
|
|
@@ -102,26 +135,56 @@
|
|
|
- Whether comments appear to be resolved or still pending
|
|
|
|
|
|
This information will guide your review to avoid duplicate feedback.
|
|
|
+
|
|
|
+ <update_todo_list>
|
|
|
+ <todos>
|
|
|
+ [x] Fetch pull request information
|
|
|
+ [x] Fetch associated issue (if any)
|
|
|
+ [x] Fetch pull request diff
|
|
|
+ [x] Fetch existing PR comments and reviews
|
|
|
+ [ ] Check out pull request locally
|
|
|
+ [ ] Verify existing comments against current code
|
|
|
+ [ ] Perform comprehensive review
|
|
|
+ [ ] Prepare review comments
|
|
|
+ [ ] Preview review with user
|
|
|
+ [ ] Submit review or create tasks
|
|
|
+ </todos>
|
|
|
+ </update_todo_list>
|
|
|
</instructions>
|
|
|
</step>
|
|
|
|
|
|
- <step number="5">
|
|
|
+ <step number="6">
|
|
|
<name>Check Out Pull Request Locally</name>
|
|
|
<instructions>
|
|
|
Use the GitHub CLI to check out the pull request locally:
|
|
|
|
|
|
<execute_command>
|
|
|
- <command>gh pr checkout [PR_NUMBER]</command>
|
|
|
+ <command>gh pr checkout [PR_NUMBER] --repo [owner]/[repo]</command>
|
|
|
</execute_command>
|
|
|
|
|
|
This allows you to:
|
|
|
- Navigate the actual code structure
|
|
|
- Understand how changes interact with existing code
|
|
|
- Get better context for your review
|
|
|
+
|
|
|
+ <update_todo_list>
|
|
|
+ <todos>
|
|
|
+ [x] Fetch pull request information
|
|
|
+ [x] Fetch associated issue (if any)
|
|
|
+ [x] Fetch pull request diff
|
|
|
+ [x] Fetch existing PR comments and reviews
|
|
|
+ [x] Check out pull request locally
|
|
|
+ [ ] Verify existing comments against current code
|
|
|
+ [ ] Perform comprehensive review
|
|
|
+ [ ] Prepare review comments
|
|
|
+ [ ] Preview review with user
|
|
|
+ [ ] Submit review or create tasks
|
|
|
+ </todos>
|
|
|
+ </update_todo_list>
|
|
|
</instructions>
|
|
|
</step>
|
|
|
|
|
|
- <step number="6">
|
|
|
+ <step number="7">
|
|
|
<name>Verify Existing Comments Against Current Code</name>
|
|
|
<instructions>
|
|
|
Now that you have the code checked out locally and know what comments exist:
|
|
|
@@ -142,10 +205,25 @@
|
|
|
- New issues not previously mentioned (these are your main focus)
|
|
|
|
|
|
This verification step is CRITICAL to avoid redundant feedback and ensures your review adds value.
|
|
|
+
|
|
|
+ <update_todo_list>
|
|
|
+ <todos>
|
|
|
+ [x] Fetch pull request information
|
|
|
+ [x] Fetch associated issue (if any)
|
|
|
+ [x] Fetch pull request diff
|
|
|
+ [x] Fetch existing PR comments and reviews
|
|
|
+ [x] Check out pull request locally
|
|
|
+ [x] Verify existing comments against current code
|
|
|
+ [ ] Perform comprehensive review
|
|
|
+ [ ] Prepare review comments
|
|
|
+ [ ] Preview review with user
|
|
|
+ [ ] Submit review or create tasks
|
|
|
+ </todos>
|
|
|
+ </update_todo_list>
|
|
|
</instructions>
|
|
|
</step>
|
|
|
|
|
|
- <step number="7">
|
|
|
+ <step number="8">
|
|
|
<name>Perform Comprehensive Review</name>
|
|
|
<instructions>
|
|
|
Review the pull request thoroughly:
|
|
|
@@ -169,16 +247,31 @@
|
|
|
6. Security considerations
|
|
|
7. Internationalization (i18n) issues
|
|
|
8. Technical debt indicators
|
|
|
+
|
|
|
+ <update_todo_list>
|
|
|
+ <todos>
|
|
|
+ [x] Fetch pull request information
|
|
|
+ [x] Fetch associated issue (if any)
|
|
|
+ [x] Fetch pull request diff
|
|
|
+ [x] Fetch existing PR comments and reviews
|
|
|
+ [x] Check out pull request locally
|
|
|
+ [x] Verify existing comments against current code
|
|
|
+ [x] Perform comprehensive review
|
|
|
+ [ ] Prepare review comments
|
|
|
+ [ ] Preview review with user
|
|
|
+ [ ] Submit review or create tasks
|
|
|
+ </todos>
|
|
|
+ </update_todo_list>
|
|
|
</instructions>
|
|
|
</step>
|
|
|
|
|
|
- <step number="8">
|
|
|
+ <step number="9">
|
|
|
<name>Prepare Review Comments</name>
|
|
|
<instructions>
|
|
|
Format your review comments following these guidelines:
|
|
|
|
|
|
CRITICAL: Before adding any comment, verify it's not already addressed:
|
|
|
- - Cross-reference with your notes from Step 6
|
|
|
+ - Cross-reference with your notes from Step 7
|
|
|
- Only comment on NEW issues or UNRESOLVED existing issues
|
|
|
- Never repeat feedback that has been addressed in the current code
|
|
|
|
|
|
@@ -207,10 +300,25 @@
|
|
|
6. [Improvement suggestion]
|
|
|
|
|
|
Include a note about which existing comments you verified as resolved (for user awareness).
|
|
|
+
|
|
|
+ <update_todo_list>
|
|
|
+ <todos>
|
|
|
+ [x] Fetch pull request information
|
|
|
+ [x] Fetch associated issue (if any)
|
|
|
+ [x] Fetch pull request diff
|
|
|
+ [x] Fetch existing PR comments and reviews
|
|
|
+ [x] Check out pull request locally
|
|
|
+ [x] Verify existing comments against current code
|
|
|
+ [x] Perform comprehensive review
|
|
|
+ [x] Prepare review comments
|
|
|
+ [ ] Preview review with user
|
|
|
+ [ ] Submit review or create tasks
|
|
|
+ </todos>
|
|
|
+ </update_todo_list>
|
|
|
</instructions>
|
|
|
</step>
|
|
|
|
|
|
- <step number="9">
|
|
|
+ <step number="10">
|
|
|
<name>Preview Review with User</name>
|
|
|
<instructions>
|
|
|
Always show the user a preview of your review suggestions and comments before taking any action.
|
|
|
@@ -245,62 +353,63 @@
|
|
|
<suggest>Skip submission - just wanted the analysis</suggest>
|
|
|
</follow_up>
|
|
|
</ask_followup_question>
|
|
|
+
|
|
|
+ <update_todo_list>
|
|
|
+ <todos>
|
|
|
+ [x] Fetch pull request information
|
|
|
+ [x] Fetch associated issue (if any)
|
|
|
+ [x] Fetch pull request diff
|
|
|
+ [x] Fetch existing PR comments and reviews
|
|
|
+ [x] Check out pull request locally
|
|
|
+ [x] Verify existing comments against current code
|
|
|
+ [x] Perform comprehensive review
|
|
|
+ [x] Prepare review comments
|
|
|
+ [x] Preview review with user
|
|
|
+ [ ] Submit review or create tasks
|
|
|
+ </todos>
|
|
|
+ </update_todo_list>
|
|
|
</instructions>
|
|
|
</step>
|
|
|
|
|
|
- <step number="10">
|
|
|
+ <step number="11">
|
|
|
<name>Submit Review</name>
|
|
|
<instructions>
|
|
|
- Based on user preference, submit the review as a comprehensive review:
|
|
|
-
|
|
|
- 1. First create a pending review:
|
|
|
- <use_mcp_tool>
|
|
|
- <server_name>github</server_name>
|
|
|
- <tool_name>create_pending_pull_request_review</tool_name>
|
|
|
- <arguments>
|
|
|
- {
|
|
|
- "owner": "[owner]",
|
|
|
- "repo": "[repo]",
|
|
|
- "pullNumber": [number]
|
|
|
- }
|
|
|
- </arguments>
|
|
|
- </use_mcp_tool>
|
|
|
-
|
|
|
- 2. Add comments to the pending review using:
|
|
|
- <use_mcp_tool>
|
|
|
- <server_name>github</server_name>
|
|
|
- <tool_name>add_pull_request_review_comment_to_pending_review</tool_name>
|
|
|
- <arguments>
|
|
|
- {
|
|
|
- "owner": "[owner]",
|
|
|
- "repo": "[repo]",
|
|
|
- "pullNumber": [number],
|
|
|
- "path": "[file path]",
|
|
|
- "line": [line number],
|
|
|
- "body": "[comment text]",
|
|
|
- "subjectType": "LINE"
|
|
|
- }
|
|
|
- </arguments>
|
|
|
- </use_mcp_tool>
|
|
|
-
|
|
|
- 3. Submit the review:
|
|
|
- <use_mcp_tool>
|
|
|
- <server_name>github</server_name>
|
|
|
- <tool_name>submit_pending_pull_request_review</tool_name>
|
|
|
- <arguments>
|
|
|
- {
|
|
|
- "owner": "[owner]",
|
|
|
- "repo": "[repo]",
|
|
|
- "pullNumber": [number],
|
|
|
- "event": "COMMENT",
|
|
|
- "body": "[overall review summary]"
|
|
|
- }
|
|
|
- </arguments>
|
|
|
- </use_mcp_tool>
|
|
|
+ Based on user preference, submit the review using GitHub CLI:
|
|
|
+
|
|
|
+ Note: The GitHub CLI has limited support for creating reviews with inline comments.
|
|
|
+ For comprehensive reviews with line-specific comments, we'll need to:
|
|
|
+
|
|
|
+ 1. Create individual comments on specific lines (if needed):
|
|
|
+ <execute_command>
|
|
|
+ <command>gh pr comment [PR_NUMBER] --repo [owner]/[repo] --body "[comment text]"</command>
|
|
|
+ </execute_command>
|
|
|
+
|
|
|
+ 2. Or create a general review comment summarizing all findings:
|
|
|
+ <execute_command>
|
|
|
+ <command>gh pr review [PR_NUMBER] --repo [owner]/[repo] --comment --body "[review summary with all findings]"</command>
|
|
|
+ </execute_command>
|
|
|
+
|
|
|
+ Note: For line-specific comments, you may need to use the GitHub web interface or API directly,
|
|
|
+ as the gh CLI has limited support for inline review comments.
|
|
|
+
|
|
|
+ <update_todo_list>
|
|
|
+ <todos>
|
|
|
+ [x] Fetch pull request information
|
|
|
+ [x] Fetch associated issue (if any)
|
|
|
+ [x] Fetch pull request diff
|
|
|
+ [x] Fetch existing PR comments and reviews
|
|
|
+ [x] Check out pull request locally
|
|
|
+ [x] Verify existing comments against current code
|
|
|
+ [x] Perform comprehensive review
|
|
|
+ [x] Prepare review comments
|
|
|
+ [x] Preview review with user
|
|
|
+ [x] Submit review or create tasks
|
|
|
+ </todos>
|
|
|
+ </update_todo_list>
|
|
|
</instructions>
|
|
|
</step>
|
|
|
|
|
|
- <step number="11">
|
|
|
+ <step number="12">
|
|
|
<name>Create Tasks for Suggestions (Optional)</name>
|
|
|
<instructions>
|
|
|
If the user chooses to create individual tasks for each suggestion, use the new_task tool to create separate tasks:
|