diff --git a/.roo/commands/release.md b/.roo/commands/release.md
new file mode 100644
index 0000000000..9f38080ba9
--- /dev/null
+++ b/.roo/commands/release.md
@@ -0,0 +1,38 @@
+---
+description: "Create a new release of the Roo Code extension"
+argument-hint: patch | minor | major
+---
+
+1. Identify the SHA corresponding to the most recent release using GitHub CLI: `gh release view --json tagName,targetCommitish,publishedAt`
+2. Analyze changes since the last release using: `gh pr list --state merged --json number,title,author,url,mergedAt,closingIssuesReferences --limit 1000 -q '[.[] | select(.mergedAt > "TIMESTAMP") | {number, title, author: .author.login, url, mergedAt, issues: .closingIssuesReferences}] | sort_by(.number)'`
+3. For each PR with linked issues, fetch the issue details to get the issue reporter: `gh issue view ISSUE_NUMBER --json number,author -q '{number, reporter: .author.login}'`
+4. Summarize the changes. If the user did not specify, ask them whether this should be a major, minor, or patch release.
+5. Create a changeset in .changeset/v[version].md instead of directly modifying package.json. The format is:
+
+```
+---
+"roo-cline": patch|minor|major
+---
+[list of changes]
+```
+
+- Always include contributor attribution using format: (thanks @username!)
+- For PRs that close issues, also include the issue number and reporter: "- Fix: Description (#123 by @reporter, PR by @contributor)"
+- For PRs without linked issues, use the standard format: "- Add support for feature (thanks @contributor!)"
+- Provide brief descriptions of each item to explain the change
+- Order the list from most important to least important
+- Example formats:
+ - With issue: "- Fix: Resolve memory leak in extension (#456 by @issueReporter, PR by @prAuthor)"
+ - Without issue: "- Add support for Gemini 2.5 Pro caching (thanks @contributor!)"
+- CRITICAL: Include EVERY SINGLE PR in the changeset - don't assume you know which ones are important. Count the total PRs to verify completeness and cross-reference the list to ensure nothing is missed.
+
+6. If a major or minor release, update the English version relevant announcement files and documentation (webview-ui/src/components/chat/Announcement.tsx, README.md, and the `latestAnnouncementId` in src/core/webview/ClineProvider.ts)
+7. Ask the user to confirm the English version
+8. Use the new_task tool to create a subtask in `translate` mode with detailed instructions of which content needs to be translated into all supported languages
+9. Create a new branch for the release preparation: `git checkout -b release/v[version]`
+10. Commit and push the changeset file and any documentation updates to the repository: `git add . && git commit -m "chore: add changeset for v[version]" && git push origin release/v[version]`
+11. Create a pull request for the release: `gh pr create --title "Release v[version]" --body "Release preparation for v[version]. This PR includes the changeset and any necessary documentation updates." --base main --head release/v[version]`
+12. The GitHub Actions workflow will automatically:
+ - Create a version bump PR when changesets are merged to main
+ - Update the CHANGELOG.md with proper formatting
+ - Publish the release when the version bump PR is merged
diff --git a/.roo/rules-issue-writer/1_workflow.xml b/.roo/rules-issue-writer/1_workflow.xml
index f24b643e3d..99ef7db5d9 100644
--- a/.roo/rules-issue-writer/1_workflow.xml
+++ b/.roo/rules-issue-writer/1_workflow.xml
@@ -3,14 +3,24 @@
Initialize Issue Creation Process
- When the user requests to create an issue, immediately set up a todo list to track the workflow.
+ IMPORTANT: This mode assumes the first user message is already a request to create an issue.
+ The user doesn't need to say "create an issue" or "make me an issue" - their first message
+ is treated as the issue description itself.
+
+ When the session starts, immediately:
+ 1. Treat the user's first message as the issue description
+ 2. Initialize the workflow by using the update_todo_list tool
+ 3. Begin the issue creation process without asking what they want to do
+ [ ] Detect current repository information
+ [ ] Determine repository structure (monorepo/standard)
+ [ ] Perform initial codebase discovery
[ ] Analyze user request to determine issue type
- [ ] Gather initial information for the issue
+ [ ] Gather and verify additional information
[ ] Determine if user wants to contribute
- [ ] Perform technical analysis (if contributing)
+ [ ] Perform issue scoping (if contributing)
[ ] Draft issue content
[ ] Review and confirm with user
[ ] Create GitHub issue
@@ -21,49 +31,47 @@
- Determine Issue Type
+ Detect current repository information
- Analyze the user's initial request to automatically assess whether they're reporting a bug or proposing a feature.
- Look for keywords and context clues:
+ CRITICAL FIRST STEP: Verify we're in a git repository and get repository information.
- Bug indicators:
- - Words like "error", "broken", "not working", "fails", "crash", "bug"
- - Descriptions of unexpected behavior
- - Error messages or stack traces
- - References to something that used to work
+ 1. Check if we're in a git repository:
+
+ git rev-parse --is-inside-work-tree 2>/dev/null || echo "not-git-repo"
+
- Feature indicators:
- - Words like "feature", "enhancement", "add", "implement", "would be nice"
- - Descriptions of new functionality
- - Suggestions for improvements
- - "It would be great if..."
+ If the output is "not-git-repo", immediately stop and inform the user:
- Based on your analysis, order the options with the most likely choice first:
+
+
+ This mode must be run from within a GitHub repository. Please navigate to a git repository and try again.
+
+
-
- Based on your request, what type of issue would you like to create?
-
- [If bug indicators found:]
- Bug Report - Report a problem with existing functionality
- Detailed Feature Proposal - Propose a new feature or enhancement
+ 2. If in a git repository, get the repository information:
+
+ git remote get-url origin 2>/dev/null | sed -E 's/.*[:/]([^/]+)\/([^/]+)(\.git)?$/\1\/\2/' | sed 's/\.git$//'
+
- [If feature indicators found:]
- Detailed Feature Proposal - Propose a new feature or enhancement
- Bug Report - Report a problem with existing functionality
+ Store this as REPO_FULL_NAME for use throughout the workflow.
- [If unclear:]
- Bug Report - Report a problem with existing functionality
- Detailed Feature Proposal - Propose a new feature or enhancement
-
-
+ If no origin remote exists, stop with:
+
+
+ No GitHub remote found. This mode requires a GitHub repository with an 'origin' remote configured.
+
+
- After determining the type, update the todo list:
+ Update todo after detecting repository:
- [x] Analyze user request to determine issue type
- [-] Gather initial information for the issue
+ [x] Detect current repository information
+ [-] Determine repository structure (monorepo/standard)
+ [ ] Perform initial codebase discovery
+ [ ] Analyze user request to determine issue type
+ [ ] Gather and verify additional information
[ ] Determine if user wants to contribute
- [ ] Perform technical analysis (if contributing)
+ [ ] Perform issue scoping (if contributing)
[ ] Draft issue content
[ ] Review and confirm with user
[ ] Create GitHub issue
@@ -73,37 +81,62 @@
- Gather Initial Information
+ Determine Repository Structure
- Based on the user's initial prompt or request, extract key information.
- If the user hasn't provided enough detail, use ask_followup_question to gather
- the required fields from the appropriate template.
+ Check if this is a monorepo or standard repository by looking for common patterns.
- For Bug Reports, ensure you have:
- - App version (ask user to check in VSCode extension panel if unknown)
- - API provider being used
- - Model being used
- - Clear steps to reproduce
- - What happened vs what was expected
- - Any error messages or logs
+ First, check for monorepo indicators:
+ 1. Look for workspace configuration:
+ - package.json with "workspaces" field
+ - lerna.json
+ - pnpm-workspace.yaml
+ - rush.json
- For Feature Requests, ensure you have:
- - Specific problem description with impact (who is affected, when it happens, current vs expected behavior, impact)
- - Additional context if available (mockups, screenshots, links)
+ 2. Check for common monorepo directory patterns:
+
+ .
+ false
+
- IMPORTANT: Do NOT ask for solution design, acceptance criteria, or technical details
- unless the user explicitly states they want to contribute the implementation.
+ Look for directories like:
+ - apps/ (application packages)
+ - packages/ (shared packages)
+ - services/ (service packages)
+ - libs/ (library packages)
+ - modules/ (module packages)
+ - src/ (main source if not using workspaces)
- Use multiple ask_followup_question calls if needed to gather all information.
- Be specific in your questions based on what's missing.
+ If monorepo detected:
+ - Dynamically discover packages by looking for package.json files in detected directories
+ - Build a list of available packages with their paths
- After gathering information, update the todo:
+ Based on the user's description, try to identify which package they're referring to.
+ If unclear, ask for clarification:
+
+
+ I see this is a monorepo with multiple packages. Which specific package or application is your issue related to?
+
+ [Dynamically generated list of discovered packages]
+ Let me describe which package: [specify]
+
+
+
+ If standard repository:
+ - Skip package selection
+ - Use repository root for all searches
+
+ Store the repository context for all future codebase searches and explorations.
+
+ Update todo after determining context:
- [x] Analyze user request to determine issue type
- [x] Gather initial information for the issue
- [-] Determine if user wants to contribute
- [ ] Perform technical analysis (if contributing)
+ [x] Detect current repository information
+ [x] Determine repository structure (monorepo/standard)
+ [-] Perform initial codebase discovery
+ [ ] Analyze user request to determine issue type
+ [ ] Gather and verify additional information
+ [ ] Determine if user wants to contribute
+ [ ] Perform issue scoping (if contributing)
[ ] Draft issue content
[ ] Review and confirm with user
[ ] Create GitHub issue
@@ -113,33 +146,50 @@
- Determine if User Wants to Contribute
+ Perform Initial Codebase Discovery
- Before exploring the codebase, determine if the user wants to contribute the implementation:
+ Now that we know the repository structure, immediately search the codebase to understand
+ what the user is talking about before determining the issue type.
-
- Are you interested in implementing this yourself, or are you just reporting the problem for the Roo team to solve?
-
- Just reporting the problem - the Roo team can design the solution
- I want to contribute and implement this myself
- I'm not sure yet, but I'd like to provide technical analysis
-
-
+ DISCOVERY ACTIVITIES:
- Based on their response:
- - If just reporting: Skip to step 5 (Draft Issue - Problem Only)
- - If contributing: Continue to step 4 (Technical Analysis)
- - If providing analysis: Continue to step 4 but make technical sections optional
+ 1. Extract keywords and concepts from the user's INITIAL MESSAGE (their issue description)
+ 2. Search the codebase to verify these concepts exist
+ 3. Build understanding of the actual implementation
+ 4. Identify relevant files, components, and code patterns
- Update the todo based on the decision:
+
+ [Keywords from user's initial message/description]
+ [Repository or package path from step 2]
+
+
+ Additional searches based on initial findings:
+ - If error mentioned: search for exact error strings
+ - If feature mentioned: search for related functionality
+ - If component mentioned: search for implementation details
+
+
+ [repository or package path]
+ [specific patterns found in initial search]
+
+
+ Document findings:
+ - Components/features found that match user's description
+ - Actual implementation details discovered
+ - Related code sections identified
+ - Any discrepancies between user description and code reality
+
+ Update todos:
- [x] Analyze user request to determine issue type
- [x] Gather initial information for the issue
- [x] Determine if user wants to contribute
- [If contributing: [ ] Perform technical analysis (if contributing)]
- [If not contributing: [-] Perform technical analysis (skipped - not contributing)]
- [-] Draft issue content
+ [x] Detect current repository information
+ [x] Determine repository structure (monorepo/standard)
+ [x] Perform initial codebase discovery
+ [-] Analyze user request to determine issue type
+ [ ] Gather and verify additional information
+ [ ] Determine if user wants to contribute
+ [ ] Perform issue scoping (if contributing)
+ [ ] Draft issue content
[ ] Review and confirm with user
[ ] Create GitHub issue
@@ -148,37 +198,54 @@
- Technical Analysis for Contributors
+ Analyze Request to Determine Issue Type
- ONLY perform this step if the user wants to contribute or provide technical analysis.
+ Using the codebase discoveries from step 2, analyze the user's request to determine
+ the appropriate issue type with informed context.
- This step uses the comprehensive technical analysis sub-workflow defined in
- 6_technical_analysis_workflow.xml. The sub-workflow will:
+ CRITICAL GUIDANCE FOR ISSUE TYPE SELECTION:
+ For issues that affect user workflows or require behavior changes:
+ - PREFER the feature proposal template over bug report
+ - Focus on explaining WHO is affected and WHEN this happens
+ - Describe the user impact before diving into technical details
- 1. Create its own detailed investigation todo list
- 2. Perform exhaustive codebase searches using iterative refinement
- 3. Analyze all relevant files and dependencies
- 4. Form and validate hypotheses about the implementation
- 5. Create a comprehensive technical solution
- 6. Define detailed acceptance criteria
+ Based on your findings, classify the issue:
- To execute the technical analysis sub-workflow:
- - Follow all phases defined in 6_technical_analysis_workflow.xml
- - Use the aggressive investigation approach from issue-investigator mode
- - Document all findings in extreme detail
- - Ensure the analysis is thorough enough for automated implementation
+ Bug indicators (verified against code):
+ - Error messages that match actual error handling in code
+ - Broken functionality in existing features found in codebase
+ - Regression from previous behavior documented in code/tests
+ - Code paths that don't work as documented
- The sub-workflow will manage its own todo list for the investigation process
- and will produce a comprehensive technical analysis section for the issue.
+ Feature indicators (verified against code):
+ - New functionality not found in current codebase
+ - Enhancement to existing features found in code
+ - Missing capabilities compared to similar features
+ - Integration points that could be extended
+ - WORKFLOW IMPROVEMENTS: When existing behavior works but doesn't meet user needs
- After completing the technical analysis:
+ IMPORTANT: Use your codebase findings to inform the question:
+
+
+ Based on your request about [specific feature/component found in code], what type of issue would you like to create?
+
+ [Order based on codebase findings and user description]
+ Bug Report - [Specific component] is not working as expected
+ Feature Proposal - Add [specific capability] to [existing component]
+
+
+
+ Update todos:
+ [x] Detect current repository information
+ [x] Determine repository structure (monorepo/standard)
+ [x] Perform initial codebase discovery
[x] Analyze user request to determine issue type
- [x] Gather initial information for the issue
- [x] Determine if user wants to contribute
- [x] Perform technical analysis (if contributing)
- [-] Draft issue content
+ [-] Gather and verify additional information
+ [ ] Determine if user wants to contribute
+ [ ] Perform issue scoping (if contributing)
+ [ ] Draft issue content
[ ] Review and confirm with user
[ ] Create GitHub issue
@@ -187,113 +254,709 @@
- Draft Issue Content
+ Gather and Verify Additional Information
- Create the issue body based on whether the user is just reporting or contributing.
+ Based on the issue type and initial codebase discovery, gather information while
+ continuously verifying against the actual code implementation.
- For Bug Reports, format is the same regardless of contribution intent:
- ```
- ## App Version
- [version from user]
+ CRITICAL FOR FEATURE REQUESTS: Be fact-driven and challenge assumptions!
+ When users describe current behavior as problematic for a feature request, you MUST verify
+ their claims against the actual code. If their description doesn't match reality, this
+ might actually be a bug report, not a feature request.
- ## API Provider
- [provider from dropdown list]
+ For Bug Reports:
+ 1. When user describes steps to reproduce:
+ - Search for the UI components/commands mentioned
+ - Verify the code paths that would be executed
+ - Check for existing error handling or known issues
+
+ 2. When user provides error messages:
+ - Search for exact error strings in codebase
+ - Find where errors are thrown
+ - Understand the conditions that trigger them
+
+ 3. For version information:
+ - Check package.json for actual version
+ - Look for version-specific code or migrations
- ## Model Used
- [exact model name]
+ Example verification searches:
+
+ [repository or package path]
+ [exact error message from user]
+
- ## 🔁 Steps to Reproduce
+
+ [feature or component name] implementation
+ [repository or package path]
+
- 1. [First step with specific details]
- 2. [Second step with exact actions]
- 3. [Continue numbering all steps]
+ For Feature Requests - AGGRESSIVE VERIFICATION WITH CONCRETE EXAMPLES:
+ 1. When user claims current behavior is X:
+ - ALWAYS search for the actual implementation
+ - Read the relevant code to verify their claim
+ - Check CSS/styling files if UI-related
+ - Look at configuration files
+ - Examine test files to understand expected behavior
+ - TRACE THE DATA FLOW: Follow values from where they're calculated to where they're used
+
+ 2. CRITICAL: Look for existing variables/code that could be reused:
+ - Search for variables that are calculated but not used where expected
+ - Identify existing patterns that could be extended
+ - Find similar features that work correctly for comparison
+
+ 3. If discrepancy found between claim and code:
+ - Do NOT proceed without clarification
+ - Present CONCRETE before/after examples with actual values
+ - Show exactly what happens vs what should happen
+ - Ask if this might be a bug instead
+
+ Example verification approach:
+ User says: "Feature X doesn't work properly"
- Include:
- - Exact button clicks or menu selections
- - Specific input text or prompts used
- - File names and paths involved
- - Any settings or configuration
+ Your investigation should follow this pattern:
+ a) What is calculated: Search for where X is computed/defined
+ b) Where it's stored: Find variables/state holding the value
+ c) Where it's used: Trace all usages of that value
+ d) What's missing: Identify gaps in the flow
- ## 💥 Outcome Summary
+ Present findings with concrete examples:
- Expected: [what should have happened]
- Actual: [what actually happened]
+
+ I investigated the implementation and found something interesting:
- ## 📄 Relevant Logs or Errors
+ Current behavior:
+ - The value is calculated at [file:line]: `value = computeX()`
+ - It's stored in variable `calculatedValue` at [file:line]
+ - BUT it's only used for [purpose A] at [file:line]
+ - It's NOT used for [purpose B] where you expected it
- ```[language]
- [paste any error messages or logs]
- ```
+ Concrete example:
+ - When you do [action], the system calculates [value]
+ - This value goes to [location A]
+ - But [location B] still uses [old/different value]
- [If user is contributing, add the comprehensive technical analysis section from step 4]
- ```
+ Is this the issue you're experiencing? This seems like the calculated value isn't being used where it should be.
+
+ Yes, exactly! The value is calculated but not used in the right place
+ No, the issue is that the calculation itself is wrong
+ Actually, I see now that [location B] should use a different value
+
+
- For Feature Requests - PROBLEM REPORTERS (not contributing):
- ```
- ## What specific problem does this solve?
+ 4. Continue verification until facts are established:
+ - If user confirms it's a bug, switch to bug report workflow
+ - If user provides more specific context, search again
+ - Do not accept vague claims without code verification
+
+ 5. For genuine feature requests after verification:
+ - Document what the code currently does (with evidence and line numbers)
+ - Show the exact data flow: input → processing → output
+ - Confirm what the user wants changed with concrete examples
+ - Ensure the request is based on accurate understanding
- [Detailed problem description following the template guidelines]
+ CRITICAL: For feature requests, if user's description doesn't match codebase reality:
+ - Challenge the assumption with code evidence AND concrete examples
+ - Show actual vs expected behavior with specific values
+ - Suggest it might be a bug if code shows different intent
+ - Ask for clarification repeatedly if needed
+ - Do NOT proceed until facts are established
- **Who is affected:** [user groups]
- **When this happens:** [specific scenarios]
- **Current behavior:** [what happens now]
- **Expected behavior:** [what should happen]
- **Impact:** [time wasted, errors, productivity loss]
+ Only proceed when you have:
+ - Verified current behavior in code with line-by-line analysis
+ - Confirmed user's understanding matches reality
+ - Determined if it's truly a feature request or actually a bug
+ - Identified any existing code that could be reused for the fix
- ## Additional context
-
- [Any mockups, screenshots, links, or other supporting information]
- ```
-
- For Feature Requests - CONTRIBUTORS (implementing the feature):
- ```
- ## What specific problem does this solve?
-
- [Detailed problem description following the template guidelines]
-
- **Who is affected:** [user groups]
- **When this happens:** [specific scenarios]
- **Current behavior:** [what happens now]
- **Expected behavior:** [what should happen]
- **Impact:** [time wasted, errors, productivity loss]
-
- ## Additional context
-
- [Any mockups, screenshots, links, or other supporting information]
-
- ---
-
- ## 🛠️ Contributing & Technical Analysis
-
- ✅ **I'm interested in implementing this feature**
- ✅ **I understand this needs approval before implementation begins**
-
- [Insert the comprehensive technical analysis section from step 4, including:]
- - Root cause / Implementation target
- - Affected components with file paths and line numbers
- - Current implementation analysis
- - Detailed proposed implementation steps
- - Code architecture considerations
- - Testing requirements
- - Performance impact
- - Security considerations
- - Migration strategy
- - Rollback plan
- - Dependencies and breaking changes
- - Implementation complexity assessment
-
- ## Acceptance Criteria
-
- [Insert the detailed acceptance criteria from the technical analysis]
- ```
-
- After drafting:
+ Update todos after verification:
+ [x] Detect current repository information
+ [x] Determine repository structure (monorepo/standard)
+ [x] Perform initial codebase discovery
[x] Analyze user request to determine issue type
- [x] Gather initial information for the issue
+ [x] Gather and verify additional information
+ [-] Determine if user wants to contribute
+ [ ] Perform issue scoping (if contributing)
+ [ ] Draft issue content
+ [ ] Review and confirm with user
+ [ ] Create GitHub issue
+
+
+
+
+
+
+ Determine Contribution Intent with Context
+
+ Before asking about contribution, perform a quick technical assessment to provide context:
+
+ 1. Search for complexity indicators:
+ - Number of files that would need changes
+ - Existing tests that would need updates
+ - Dependencies and integration points
+
+ 2. Look for contribution helpers:
+ - CONTRIBUTING.md guidelines
+ - Existing similar implementations
+ - Test patterns to follow
+
+
+ CONTRIBUTING guide setup development
+
+
+ Based on findings, provide informed context in the question:
+
+
+ Based on my analysis, this [issue type] involves [brief complexity assessment from code exploration]. Are you interested in implementing this yourself, or are you reporting it for the project team to handle?
+
+ Just reporting the problem - the project team can design the solution
+ I want to contribute and implement this myself
+ I'd like to provide issue scoping to help whoever implements it
+
+
+
+ Update todos based on response:
+
+
+ [x] Detect current repository information
+ [x] Determine repository structure (monorepo/standard)
+ [x] Perform initial codebase discovery
+ [x] Analyze user request to determine issue type
+ [x] Gather and verify additional information
[x] Determine if user wants to contribute
- [x] Perform technical analysis (if contributing)
+ [If contributing: [-] Perform issue scoping (if contributing)]
+ [If not contributing: [-] Perform issue scoping (skipped - not contributing)]
+ [-] Draft issue content
+ [ ] Review and confirm with user
+ [ ] Create GitHub issue
+
+
+
+
+
+
+ Issue Scoping for Contributors
+
+ ONLY perform this step if the user wants to contribute or provide issue scoping.
+
+ This step performs a comprehensive, aggressive investigation to create detailed technical
+ scoping that can guide implementation. The process involves multiple sub-phases:
+
+
+
+ Perform an exhaustive investigation to produce a comprehensive technical solution
+ with extreme detail, suitable for automated fix workflows.
+
+
+
+ Expand the todo list to include detailed investigation steps
+
+ When starting the issue scoping phase, update the main todo list to include
+ the detailed investigation steps:
+
+
+
+ [x] Detect current repository information
+ [x] Determine repository structure (monorepo/standard)
+ [x] Perform initial codebase discovery
+ [x] Analyze user request to determine issue type
+ [x] Gather and verify additional information
+ [x] Determine if user wants to contribute
+ [-] Perform issue scoping (if contributing)
+ [ ] Extract keywords from the issue description
+ [ ] Perform initial broad codebase search
+ [ ] Analyze search results and identify key components
+ [ ] Deep dive into relevant files and implementations
+ [ ] Form initial hypothesis about the issue/feature
+ [ ] Attempt to disprove hypothesis through further investigation
+ [ ] Identify all affected files and dependencies
+ [ ] Map out the complete implementation approach
+ [ ] Document technical risks and edge cases
+ [ ] Formulate comprehensive technical solution
+ [ ] Create detailed acceptance criteria
+ [ ] Prepare issue scoping summary
+ [ ] Draft issue content
+ [ ] Review and confirm with user
+ [ ] Create GitHub issue
+
+
+
+
+
+
+ Extract all relevant keywords, concepts, and technical terms
+
+ - Identify primary technical concepts from user's description
+ - Extract error messages or specific symptoms
+ - Note any mentioned file paths or components
+ - List related features or functionality
+ - Include synonyms and related terms
+
+
+ Update the main todo list to mark "Extract keywords" as complete and move to next phase
+
+
+
+
+ Perform multiple rounds of increasingly focused searches
+
+
+ Use codebase_search with all extracted keywords to get an overview of relevant code.
+
+ [Combined keywords from extraction phase]
+ [Repository or package path]
+
+
+
+
+ Based on initial results, identify key components and search for:
+ - Related class/function definitions
+ - Import statements and dependencies
+ - Configuration files
+ - Test files that might reveal expected behavior
+
+
+
+ Search for specific implementation details:
+ - Error handling patterns
+ - State management
+ - API endpoints or routes
+ - Database queries or models
+ - UI components and their interactions
+
+
+
+ Look for:
+ - Edge cases in the code
+ - Integration points with other systems
+ - Configuration options that affect behavior
+ - Feature flags or conditional logic
+
+
+
+ After completing all search iterations, update the todo list to show progress
+
+
+
+
+ Thoroughly analyze all relevant files discovered
+
+ - Use list_code_definition_names to understand file structure
+ - Read complete files to understand full context
+ - Trace execution paths through the code
+ - Identify all dependencies and imports
+ - Map relationships between components
+
+
+ Document findings including:
+ - File paths and their purposes
+ - Key functions and their responsibilities
+ - Data flow through the system
+ - External dependencies
+ - Potential impact areas
+
+
+
+
+ Form a comprehensive hypothesis about the issue or feature
+
+ - Identify the most likely root cause
+ - Trace the bug through the execution path
+ - Determine why the current implementation fails
+ - Consider environmental factors
+
+
+ - Identify the optimal integration points
+ - Determine required architectural changes
+ - Plan the implementation approach
+ - Consider scalability and maintainability
+
+
+
+
+ Aggressively attempt to disprove the hypothesis
+
+
+ - Look for similar features implemented differently
+ - Check for deprecated code that might interfere
+
+
+ - Search for configuration that could change behavior
+ - Look for environment-specific code paths
+
+
+ - Find existing tests that might contradict hypothesis
+ - Look for test cases that reveal edge cases
+
+
+ - Search for comments explaining design decisions
+ - Look for TODO or FIXME comments related to the area
+
+
+
+ If hypothesis is disproven, return to search phase with new insights.
+ If hypothesis stands, proceed to solution formulation.
+
+
+
+
+ Create a comprehensive technical solution - PRIORITIZE SIMPLICITY
+
+ CRITICAL: Before proposing any solution, ask yourself:
+ 1. What existing variables/functions can I reuse?
+ 2. What's the minimal change that fixes the issue?
+ 3. Can I leverage existing patterns in the codebase?
+ 4. Is there a simpler approach I'm overlooking?
+
+ The best solution often reuses existing code rather than creating new complexity.
+
+
+
+ ALWAYS consider backwards compatibility:
+ 1. Will existing data/configurations still work with the new code?
+ 2. Can we detect and handle legacy formats automatically?
+ 3. What migration paths are needed for existing users?
+ 4. Are there ways to make changes additive rather than breaking?
+ 5. Document any compatibility considerations clearly
+
+
+
+ FIRST, identify what can be reused:
+ - Variables that are already calculated but not used where needed
+ - Functions that already do what we need
+ - Patterns in similar features we can follow
+ - Configuration that already exists but isn't applied
+
+ Example finding:
+ "The variable `calculatedValue` already contains what we need at line X,
+ we just need to use it at line Y instead of recalculating"
+
+
+
+ - Start with the SIMPLEST possible fix
+ - Exact files to modify with line numbers
+ - Prefer changing variable usage over creating new logic
+ - Specific code changes required (minimal diff)
+ - Order of implementation steps
+ - Migration strategy if needed
+
+
+
+ - All files that import affected code
+ - API contracts that must be maintained
+ - Existing tests that validate current behavior
+ - Configuration changes required (prefer reusing existing)
+ - Documentation updates needed
+
+
+
+ - Unit tests to add or modify
+ - Integration tests required
+ - Edge cases to test
+ - Performance testing needs
+ - Manual testing scenarios
+
+
+
+ - Breaking changes identified
+ - Performance implications
+ - Security considerations
+ - Backward compatibility issues
+ - Rollback strategy
+
+
+
+
+
+ Create extremely detailed acceptance criteria
+
+ Given [detailed context including system state]
+ When [specific user or system action]
+ Then [exact expected outcome]
+ And [additional verifiable outcomes]
+ But [what should NOT happen]
+
+ Include:
+ - Specific UI changes with exact text/behavior
+ - API response formats
+ - Database state changes
+ - Performance requirements
+ - Error handling scenarios
+
+
+ - Each criterion must be independently testable
+ - Include both positive and negative test cases
+ - Specify exact error messages and codes
+ - Define performance thresholds where applicable
+
+
+
+
+ Format the comprehensive issue scoping section
+
+
+
+
+ Additional considerations for monorepo repositories:
+ - Scope all searches to the identified package (if monorepo)
+ - Check for cross-package dependencies
+ - Verify against package-specific conventions
+ - Look for package-specific configuration
+ - Check if changes affect multiple packages
+ - Identify shared dependencies that might be impacted
+ - Look for workspace-specific scripts or tooling
+ - Consider package versioning implications
+
+ After completing the comprehensive issue scoping, update the main todo list to show
+ all investigation steps are complete:
+
+
+ [x] Detect current repository information
+ [x] Determine repository structure (monorepo/standard)
+ [x] Perform initial codebase discovery
+ [x] Analyze user request to determine issue type
+ [x] Gather and verify additional information
+ [x] Determine if user wants to contribute
+ [x] Perform issue scoping (if contributing)
+ [x] Extract keywords from the issue description
+ [x] Perform initial broad codebase search
+ [x] Analyze search results and identify key components
+ [x] Deep dive into relevant files and implementations
+ [x] Form initial hypothesis about the issue/feature
+ [x] Attempt to disprove hypothesis through further investigation
+ [x] Identify all affected files and dependencies
+ [x] Map out the complete implementation approach
+ [x] Document technical risks and edge cases
+ [x] Formulate comprehensive technical solution
+ [x] Create detailed acceptance criteria
+ [x] Prepare issue scoping summary
+ [-] Draft issue content
+ [ ] Review and confirm with user
+ [ ] Create GitHub issue
+
+
+
+
+
+
+ Check for Repository Issue Templates
+
+ Check if the repository has custom issue templates and use them. If not, create a simple generic template.
+
+ 1. Check for issue templates in standard locations:
+
+ .github/ISSUE_TEMPLATE
+ true
+
+
+ 2. Also check for single template file:
+
+ .github
+ false
+
+
+ Look for files like:
+ - .github/ISSUE_TEMPLATE/*.md
+ - .github/ISSUE_TEMPLATE/*.yml
+ - .github/ISSUE_TEMPLATE/*.yaml
+ - .github/issue_template.md
+ - .github/ISSUE_TEMPLATE.md
+
+ 3. If templates are found:
+ a. Parse the template files to extract:
+ - Template name and description
+ - Required fields
+ - Template body structure
+ - Labels to apply
+
+ b. For YAML templates, look for:
+ - name: Template display name
+ - description: Template description
+ - labels: Default labels
+ - body: Form fields or markdown template
+
+ c. For Markdown templates, look for:
+ - Front matter with metadata
+ - Template structure with placeholders
+
+ 4. If multiple templates exist, ask user to choose:
+
+ I found the following issue templates in this repository. Which one would you like to use?
+
+ [Template 1 name]: [Template 1 description]
+ [Template 2 name]: [Template 2 description]
+
+
+
+ 5. If no templates are found:
+ - Create a simple generic template based on issue type
+ - For bugs: Basic structure with description, steps to reproduce, expected vs actual
+ - For features: Problem description, proposed solution, impact
+
+ 6. Store the selected/created template information:
+ - Template content/structure
+ - Required fields
+ - Default labels
+ - Any special formatting requirements
+
+ Update todos:
+
+
+ [x] Detect current repository information
+ [x] Determine repository structure (monorepo/standard)
+ [x] Perform initial codebase discovery
+ [x] Analyze user request to determine issue type
+ [x] Gather and verify additional information
+ [x] Determine if user wants to contribute
+ [x] Perform issue scoping (if contributing)
+ [x] Check for repository issue templates
+ [-] Draft issue content
+ [ ] Review and confirm with user
+ [ ] Create GitHub issue
+
+
+
+
+
+
+ Draft Issue Content
+
+ Create the issue body using the template from step 8 and all verified information from codebase exploration.
+
+ If using a repository template:
+ - Fill in the template fields with gathered information
+ - Include code references and findings where appropriate
+ - Respect the template's structure and formatting
+
+ If using a generated template (no repo templates found):
+
+ For Bug Reports:
+ ```
+ ## Description
+ [Clear description of the bug with code context]
+
+ ## Steps to Reproduce
+ 1. [Step with relevant code paths]
+ 2. [Step with component references]
+ 3. [Continue with specific details]
+
+ ## Expected Behavior
+ [What should happen based on code logic]
+
+ ## Actual Behavior
+ [What actually happens]
+
+ ## Additional Context
+ - Version: [from package.json if found]
+ - Environment: [any relevant details]
+ - Error logs: [if any]
+
+ ## Code Investigation
+ [Include findings from codebase exploration]
+ - Relevant files: [list with line numbers]
+ - Possible cause: [hypothesis from code review]
+
+ [If user is contributing, add the comprehensive issue scoping section from step 7]
+ ```
+
+ For Feature Requests:
+ ```
+ ## Problem Description
+ [What problem does this solve, who is affected, when it happens]
+
+ ## Current Behavior
+ [How it works now with specific examples]
+
+ ## Proposed Solution
+ [What should change]
+
+ ## Impact
+ [Who benefits and how]
+
+ ## Technical Context
+ [Findings from codebase exploration]
+ - Similar features: [code references]
+ - Integration points: [from exploration]
+ - Architecture considerations: [if any]
+
+ [If contributing, add the comprehensive issue scoping section from step 7]
+ ```
+
+ Update todos:
+
+
+ [x] Detect current repository information
+ [x] Determine repository structure (monorepo/standard)
+ [x] Perform initial codebase discovery
+ [x] Analyze user request to determine issue type
+ [x] Gather and verify additional information
+ [x] Determine if user wants to contribute
+ [x] Perform issue scoping (if contributing)
+ [x] Check for repository issue templates
[x] Draft issue content
[-] Review and confirm with user
[ ] Create GitHub issue
@@ -302,19 +965,26 @@
-
+ Review and Confirm with User
- Present the complete drafted issue to the user for review:
+ Present the complete drafted issue to the user for review, highlighting the
+ code-verified information:
- I've prepared the following GitHub issue. Please review it carefully:
+ I've prepared the following GitHub issue based on my analysis of the codebase and your description. I've verified the technical details against the actual implementation. Please review:
[Show the complete formatted issue content]
+ Key verifications made:
+ - ✓ Component locations confirmed in code
+ - ✓ Error messages matched to source
+ - ✓ Architecture compatibility checked
+ [List other relevant verifications]
+
Would you like me to create this issue, or would you like to make any changes?
- Yes, create this issue in RooCodeInc/Roo-Code
+ Yes, create this issue in the detected repositoryModify the problem descriptionAdd more technical detailsChange the title to: [let me specify]
@@ -326,57 +996,164 @@
After confirmation:
+ [x] Detect current repository information
+ [x] Determine repository structure (monorepo/standard)
+ [x] Perform initial codebase discovery
[x] Analyze user request to determine issue type
- [x] Gather initial information for the issue
+ [x] Gather and verify additional information
[x] Determine if user wants to contribute
- [x] Perform technical analysis (if contributing)
+ [x] Perform issue scoping (if contributing)
+ [x] Check for repository issue templates
[x] Draft issue content
[x] Review and confirm with user
- [-] Create GitHub issue
+ [-] Prepare issue for submission
+ [ ] Handle submission choice
-
- Create GitHub Issue
+
+ Prepare Issue for Submission
- Once user confirms, create the issue using the GitHub CLI:
+ Once user confirms the issue content, prepare it for submission:
- First, save the issue body to a temporary file:
+ First, perform final duplicate check with refined search based on our findings:
- cat > /tmp/issue_body.md << 'EOF'
-[The complete formatted issue body from step 5]
-EOF
+ gh issue list --repo $REPO_FULL_NAME --search "[key terms from verified analysis]" --state all --limit 10
- Then create the issue:
-
- gh issue create --repo RooCodeInc/Roo-Code --title "[Create a descriptive title based on the issue content]" --body-file /tmp/issue_body.md --label "bug"
-
+ If no exact duplicates are found, save the issue content to a temporary file within the project:
- For feature requests, use labels "proposal,enhancement":
-
- gh issue create --repo RooCodeInc/Roo-Code --title "[Create a descriptive title based on the issue content]" --body-file /tmp/issue_body.md --label "proposal" --label "enhancement"
-
+
+ ./github_issue_draft.md
+ [The complete formatted issue body from step 8]
+ [calculated line count]
+
- The command will return the issue URL. Inform the user of the created issue number and URL.
+ After saving the issue draft, ask the user how they would like to proceed:
- Clean up the temporary file:
-
- rm /tmp/issue_body.md
-
+
+ I've saved the issue draft to ./github_issue_draft.md. The issue is ready for submission with the following details:
+
+ Title: "[Descriptive title with component name]"
+ Labels: [appropriate labels based on issue type]
+ Repository: $REPO_FULL_NAME
+
+ How would you like to proceed?
+
+ Submit the issue now to the repository
+ Let me make some edits to the issue first
+ I'll submit it manually later
+
+
- Complete the workflow:
+ Based on the user's response:
+
+ If "Submit the issue now":
+ - Use gh issue create with the saved file
+ - Provide the created issue URL and number
+ - Clean up the temporary file
+ - Complete the workflow
+
+ If "Let me make some edits":
+ - Ask what changes they'd like to make
+ - Update the draft file with their changes
+ - Return to the submission question
+
+ If "I'll submit it manually":
+ - Inform them the draft is saved at the configured location
+ - Provide the gh command they can use later
+ - Complete the workflow without submission
+
+ Update todos based on the outcome:
+ [x] Detect current repository information
+ [x] Determine repository structure (monorepo/standard)
+ [x] Perform initial codebase discovery
[x] Analyze user request to determine issue type
- [x] Gather initial information for the issue
+ [x] Gather and verify additional information
[x] Determine if user wants to contribute
- [x] Perform technical analysis (if contributing)
+ [x] Perform issue scoping (if contributing)
+ [x] Check for repository issue templates
[x] Draft issue content
[x] Review and confirm with user
- [x] Create GitHub issue
+ [x] Prepare issue for submission
+ [-] Handle submission choice
+
+
+
+
+
+
+ Handle Submission Choice
+
+ This step handles the user's choice from step 9.
+
+ OPTION 1: Submit the issue now
+ If the user chooses to submit immediately:
+
+
+ gh issue create --repo $REPO_FULL_NAME --title "[Descriptive title]" --body-file ./github_issue_draft.md --label "[appropriate labels]"
+
+
+ Label selection based on findings:
+ - Bug: Use "bug" label
+ - Feature: Use "enhancement" label
+ - If affects multiple packages in monorepo: add "affects-multiple" label
+
+ After successful creation:
+ - Capture and display the issue URL
+ - Clean up the temporary file:
+
+ rm ./github_issue_draft.md
+
+ - Provide a summary of key findings included
+
+ OPTION 2: Make edits
+ If the user wants to edit:
+
+
+ What changes would you like to make to the issue?
+
+ Update the title
+ Modify the problem description
+ Add or remove technical details
+ Change the labels or other metadata
+
+
+
+ - Apply the requested changes to the draft
+ - Update the file with write_to_file
+ - Return to step 9 to ask about submission again
+
+ OPTION 3: Manual submission
+ If the user will submit manually:
+
+ Provide clear instructions:
+ "The issue draft has been saved to ./github_issue_draft.md
+
+ To submit it later, you can use:
+ gh issue create --repo $REPO_FULL_NAME --title "[Your title]" --body-file ./github_issue_draft.md --label "[labels]"
+
+ Or you can copy the content and create the issue through the GitHub web interface."
+
+ Final todo update:
+
+
+ [x] Detect current repository information
+ [x] Determine repository structure (monorepo/standard)
+ [x] Perform initial codebase discovery
+ [x] Analyze user request to determine issue type
+ [x] Gather and verify additional information
+ [x] Determine if user wants to contribute
+ [x] Perform issue scoping (if contributing)
+ [x] Check for repository issue templates
+ [x] Draft issue content
+ [x] Review and confirm with user
+ [x] Prepare issue for submission
+ [x] Handle submission choice
diff --git a/.roo/rules-issue-writer/2_github_issue_templates.xml b/.roo/rules-issue-writer/2_github_issue_templates.xml
index 3130f2026e..36b44125dd 100644
--- a/.roo/rules-issue-writer/2_github_issue_templates.xml
+++ b/.roo/rules-issue-writer/2_github_issue_templates.xml
@@ -1,219 +1,190 @@
-
- Bug Report
- Clearly report a bug with detailed repro steps
- ["bug"]
-
-
-
- What version of Roo Code are you using? (e.g., v3.3.1)
-
-
-
-
- - Anthropic
- - AWS Bedrock
- - Chutes AI
- - DeepSeek
- - Glama
- - Google Gemini
- - Google Vertex AI
- - Groq
- - Human Relay Provider
- - LiteLLM
- - LM Studio
- - Mistral AI
- - Ollama
- - OpenAI
- - OpenAI Compatible
- - OpenRouter
- - Requesty
- - Unbound
- - VS Code Language Model API
- - xAI (Grok)
- - Not Applicable / Other
-
-
-
-
- Exact model name (e.g., Claude 3.7 Sonnet). Use N/A if irrelevant.
-
-
-
-
- Help us see what you saw. Give clear, numbered steps:
-
- 1. Setup (OS, extension version, settings)
- 2. Exact actions (clicks, input, files, commands)
- 3. What happened after each step
-
- Think like you're writing a recipe. Without this, we can't reproduce the issue.
-
-
-
-
-
- Recap what went wrong in one or two lines.
-
- Example: "Expected code to run, but got an empty response and no error."
-
- Expected ___, but got ___.
-
-
-
- Paste API logs, terminal output, or errors here. Use triple backticks (```) for code formatting.
- shell
-
-
-
-
-
- Detailed Feature Proposal
- Report a specific problem that needs solving in Roo Code
- ["proposal", "enhancement"]
-
-
-
-
- **Be concrete and detailed.** Explain the problem from a user's perspective.
-
- ✅ **Good examples (specific, clear impact):**
- - "When running large tasks, users wait 5+ minutes because tasks execute sequentially instead of in parallel, blocking productivity"
- - "AI can only read one file per request, forcing users to make multiple requests for multi-file projects, increasing wait time from 30s to 5+ minutes"
- - "Dark theme users can't see the submit button because it uses white text on light grey background"
-
- ❌ **Poor examples (vague, unclear impact):**
- - "The UI looks weird" -> What specifically looks weird? On which screen? What's the impact?
- - "System prompt is not good" -> What's wrong with it? What behaviour does it cause? What should it do instead?
- - "Performance could be better" -> Where? How slow is it currently? What's the user impact?
-
- **Your problem description should answer:**
- - Who is affected? (all users, specific user types, etc.)
- - When does this happen? (specific scenarios/steps)
- - What's the current behaviour vs expected behaviour?
- - What's the impact? (time wasted, errors caused, etc.)
-
- Be specific about the problem, who it affects, and the impact. Avoid generic statements like "it's slow" or "it's confusing."
-
-
-
- Mockups, screenshots, links, user quotes, or other relevant information that supports your proposal.
-
-
+
+ This mode prioritizes using repository-specific issue templates over hardcoded ones.
+ If no templates exist in the repository, simple generic templates are created on the fly.
+
+
+
+
+ .github/ISSUE_TEMPLATE/*.yml
+ .github/ISSUE_TEMPLATE/*.yaml
+ .github/ISSUE_TEMPLATE/*.md
+ .github/issue_template.md
+ .github/ISSUE_TEMPLATE.md
+
-
-
-
-
- **Important:** If you check "Yes" below, the technical sections become REQUIRED.
- We need detailed technical analysis from contributors to ensure quality implementation.
-
-
-
-
-
-
-
-
-
-
- **If you want to implement this feature, this section is REQUIRED.**
-
- **Describe your solution in detail.** Explain not just what to build, but how it should work.
-
- ✅ **Good examples:**
- - "Add parallel task execution: Allow up to 3 tasks to run simultaneously with a queue system for additional tasks. Show progress for each active task in the UI."
- - "Enable multi-file AI processing: Modify the request handler to accept multiple files in a single request and process them together, reducing round trips."
- - "Fix button contrast: Change submit button to use primary colour on dark theme (white text on blue background) instead of current grey."
-
- ❌ **Poor examples:**
- - "Make it faster" -> How? What specific changes?
- - "Improve the UI" -> Which part? What specific improvements?
- - "Fix the prompt" -> What should the new prompt do differently?
-
- **Your solution should explain:**
- - What exactly will change?
- - How will users interact with it?
- - What will the new behaviour look like?
-
- Describe the specific changes and how they will work. Include user interaction details if relevant.
-
-
-
-
- **If you want to implement this feature, this section is REQUIRED.**
-
- **This is crucial - don't skip it.** Define what "working" looks like with specific, testable criteria.
-
- **Format suggestion:**
- ```
- Given [context/situation]
- When [user action]
- Then [expected result]
- And [additional expectations]
- But [what should NOT happen]
- ```
-
- **Example:**
- ```
- Given I have 5 large tasks to run
- When I start all of them
- Then they execute in parallel (max 3 at once, can be configured)
- And I see progress for each active task
- And queued tasks show "waiting" status
- But the UI doesn't freeze or become unresponsive
- ```
-
-
- Define specific, testable criteria. What should users be able to do? What should happen? What should NOT happen?
- Use the Given/When/Then format above or your own clear structure.
-
-
-
-
-
- **If you want to implement this feature, this section is REQUIRED.**
-
- Share technical insights that could help planning:
- - Implementation approach or architecture changes
- - Performance implications
- - Compatibility concerns
- - Systems that might be affected
- - Potential blockers you can foresee
-
- e.g., "Will need to refactor task manager", "Could impact memory usage on large files", "Requires a large portion of code to be rewritten"
-
-
-
-
- **If you want to implement this feature, this section is REQUIRED.**
-
- What could go wrong or what alternatives did you consider?
- - Alternative approaches and why you chose this one
- - Potential negative impacts (performance, UX, etc.)
- - Breaking changes or migration concerns
- - Edge cases that need careful handling
-
- e.g., "Alternative: use library X but it is 500KB larger", "Risk: might slow older devices", "Breaking: changes API response format"
-
-
-
-
-
-
- Template now focuses on problem reporting first, with solution contribution as optional
-
-
- Only problem description and context are required for basic submission
-
-
- Technical fields (solution, acceptance criteria, etc.) are only required if user wants to contribute
-
-
- Users can submit after describing the problem without technical details
-
-
- Implementation guidance moved to contributor section only
-
-
+
+ Display name of the template
+ Brief description of when to use this template
+ Default issue title (optional)
+ Array of labels to apply
+ Array of default assignees
+ Array of form elements or markdown content
+
+
+
+
+ Static markdown content
+
+ The markdown content to display
+
+
+
+
+ Single-line text input
+
+ Unique identifier
+ Display label
+ Help text
+ Placeholder text
+ Default value
+ Boolean
+
+
+
+
+ Multi-line text input
+
+ Unique identifier
+ Display label
+ Help text
+ Placeholder text
+ Default value
+ Boolean
+ Language for syntax highlighting
+
+
+
+
+ Dropdown selection
+
+ Unique identifier
+ Display label
+ Help text
+ Array of options
+ Boolean
+
+
+
+
+ Multiple checkbox options
+
+ Unique identifier
+ Display label
+ Help text
+ Array of checkbox items
+
+
+
+
+
+
+ Optional YAML front matter with:
+ - name: Template name
+ - about: Template description
+ - title: Default title
+ - labels: Comma-separated or array
+ - assignees: Comma-separated or array
+
+
+ Markdown content with sections and placeholders
+ Common patterns:
+ - Headers with ##
+ - Placeholder text in brackets or as comments
+ - Checklists with - [ ]
+ - Code blocks with ```
+
+
+
+
+
+
+ When no repository templates exist, create simple templates based on issue type.
+ These should be minimal and focused on gathering essential information.
+
+
+
+
+ - Description: Clear explanation of the bug
+ - Steps to Reproduce: Numbered list
+ - Expected Behavior: What should happen
+ - Actual Behavior: What actually happens
+ - Additional Context: Version, environment, logs
+ - Code Investigation: Findings from exploration (if any)
+
+ ["bug"]
+
+
+
+
+ - Problem Description: What problem this solves
+ - Current Behavior: How it works now
+ - Proposed Solution: What should change
+ - Impact: Who benefits and how
+ - Technical Context: Code findings (if any)
+
+ ["enhancement", "proposal"]
+
+
+
+
+
+ When parsing YAML templates:
+ 1. Use a YAML parser to extract the structure
+ 2. Convert form elements to markdown sections
+ 3. Preserve required field indicators
+ 4. Include descriptions as help text
+ 5. Maintain the intended flow of the template
+
+
+
+ When parsing Markdown templates:
+ 1. Extract front matter if present
+ 2. Identify section headers
+ 3. Look for placeholder patterns
+ 4. Preserve formatting and structure
+ 5. Replace generic placeholders with user's information
+
+
+
+ For template selection:
+ 1. If only one template exists, use it automatically
+ 2. If multiple exist, let user choose based on name/description
+ 3. Match template to issue type when possible (bug vs feature)
+ 4. Respect template metadata (labels, assignees, etc.)
+
+
+
+
+
+ Fill templates intelligently using gathered information:
+ - Map user's description to appropriate sections
+ - Include code investigation findings where relevant
+ - Preserve template structure and formatting
+ - Don't leave placeholder text unfilled
+ - Add contributor scoping if user is contributing
+
+
+
+
+
+
+
+
+
+
+
+
+ When no templates exist, create appropriate generic templates on the fly.
+ Keep them simple and focused on essential information.
+
+
+
+ - Don't overwhelm with too many fields
+ - Focus on problem description first
+ - Include technical details only if user is contributing
+ - Use clear, simple section headers
+ - Adapt based on issue type (bug vs feature)
+
+
\ No newline at end of file
diff --git a/.roo/rules-issue-writer/3_best_practices.xml b/.roo/rules-issue-writer/3_best_practices.xml
index 6d70cba144..f2f149ed26 100644
--- a/.roo/rules-issue-writer/3_best_practices.xml
+++ b/.roo/rules-issue-writer/3_best_practices.xml
@@ -1,38 +1,172 @@
+
+ - CRITICAL: This mode assumes the user's FIRST message is already an issue description
+ - Do NOT ask "What would you like to do?" or "Do you want to create an issue?"
+ - Immediately start the issue creation workflow when the user begins talking
+ - Treat their initial message as the problem/feature description
+ - Begin with repository detection and codebase discovery right away
+ - The user is already in "issue creation mode" by choosing this mode
+
+
+
+ - ALWAYS check for repository-specific issue templates before creating issues
+ - Use templates from .github/ISSUE_TEMPLATE/ directory if they exist
+ - Parse both YAML (.yml/.yaml) and Markdown (.md) template formats
+ - If multiple templates exist, let the user choose the appropriate one
+ - If no templates exist, create a simple generic template on the fly
+ - NEVER fall back to hardcoded templates - always use repo templates or generate minimal ones
+ - Respect template metadata like labels, assignees, and title patterns
+ - Fill templates intelligently using gathered information from codebase exploration
+
+
- Focus on helping users describe problems clearly, not solutions
- - The Roo team will design solutions unless the user explicitly wants to contribute
+ - The project team will design solutions unless the user explicitly wants to contribute
- Don't push users to provide technical details they may not have
- Make it easy for non-technical users to report issues effectively
+
+ CRITICAL: Lead with user impact:
+ - Always explain WHO is affected and WHEN the problem occurs
+ - Use concrete examples with actual values, not abstractions
+ - Show before/after scenarios with specific data
+ - Example: "Users trying to [action] see [actual result] instead of [expected result]"
+
+ - ALWAYS verify user claims against actual code implementation
+ - For feature requests, aggressively check if current behavior matches user's description
+ - If code shows different intent than user describes, it might be a bug not a feature
+ - Present code evidence when challenging user assumptions
+ - Do not be agreeable - be fact-driven and question discrepancies
+ - Continue verification until facts are established
+ - A "feature request" where code shows the feature should already work is likely a bug
+
+ CRITICAL additions for thorough analysis:
+ - Trace data flow from where values are created to where they're used
+ - Look for existing variables/functions that already contain needed data
+ - Check if the issue is just missing usage of existing code
+ - Follow imports and exports to understand data availability
+ - Identify patterns in similar features that work correctly
+
+
- Always search for existing similar issues before creating a new one
- - Search GitHub Discussions (especially feature-requests category) for related topics
+ - Check for and use repository issue templates before creating content
- Include specific version numbers and environment details
- Use code blocks with syntax highlighting for code snippets
- Make titles descriptive but concise (e.g., "Dark theme: Submit button invisible due to white-on-grey text")
- For bugs, always test if the issue is reproducible
- Include screenshots or mockups when relevant (ask user to provide)
- Link to related issues or PRs if found during exploration
- - Add "Closes #[number]" for discussions that would be fully addressed by the issue
- - Add "Related to #[number]" for partially related discussions
+
+ CRITICAL: Use concrete examples throughout:
+ - Show actual data values, not just descriptions
+ - Include specific file paths and line numbers
+ - Demonstrate the data flow with real examples
+ - Bad: "The value is incorrect"
+ - Good: "The function returns '123' when it should return '456'"
- - Only explore codebase if user wants to contribute
+ - Only perform issue scoping if user wants to contribute
- Reference specific files and line numbers from codebase exploration
- Ensure technical proposals align with project architecture
- - Include implementation steps and technical analysis
+ - Include implementation steps and issue scoping
- Provide clear acceptance criteria in Given/When/Then format
- Consider trade-offs and alternative approaches
+
+ CRITICAL: Prioritize simple solutions:
+ - ALWAYS check if needed functionality already exists before proposing new code
+ - Look for existing variables that just need to be passed/used differently
+ - Prefer using existing patterns over creating new ones
+ - The best fix often involves minimal code changes
+ - Example: "Use existing `modeInfo` from line 234 in export" vs "Create new mode tracking system"
+
+ ALWAYS consider backwards compatibility:
+ - Think about existing data/configurations already in use
+ - Propose solutions that handle both old and new formats gracefully
+ - Consider migration paths for existing users
+ - Document any breaking changes clearly
+ - Prefer additive changes over breaking changes when possible
+
+
- Be supportive and encouraging to problem reporters
- Don't overwhelm users with technical questions upfront
- Clearly indicate when technical sections are optional
- Guide contributors through the additional requirements
- Make the "submit now" option clear for problem reporters
+ - When presenting template choices, include template descriptions to help users choose
+ - Explain that you're using the repository's own templates for consistency
+
+
+
+ Always check these locations in order:
+ 1. .github/ISSUE_TEMPLATE/*.yml or *.yaml (GitHub form syntax)
+ 2. .github/ISSUE_TEMPLATE/*.md (Markdown templates)
+ 3. .github/issue_template.md (single template)
+ 4. .github/ISSUE_TEMPLATE.md (alternate naming)
+
+
+
+ For YAML templates:
+ - Extract form elements and convert to appropriate markdown sections
+ - Preserve required field indicators
+ - Include field descriptions as context
+ - Respect dropdown options and checkbox lists
+
+ For Markdown templates:
+ - Parse front matter for metadata
+ - Identify section headers and structure
+ - Replace placeholder text with actual information
+ - Maintain formatting and hierarchy
+
+
+
+ - Map gathered information to template sections intelligently
+ - Don't leave placeholder text in the final issue
+ - Add code investigation findings to relevant sections
+ - Include contributor scoping in appropriate section if applicable
+ - Preserve the template's intended structure and flow
+
+
+
+ When no templates exist:
+ - Create minimal, focused templates
+ - Use simple section headers
+ - Focus on essential information only
+ - Adapt structure based on issue type
+ - Don't overwhelm with unnecessary fields
+
+
+
+
+ Before proposing ANY solution:
+ 1. Use codebase_search extensively to find all related code
+ 2. Read multiple files to understand the full context
+ 3. Trace variable usage from creation to consumption
+ 4. Look for similar working features to understand patterns
+ 5. Identify what already exists vs what's actually missing
+
+
+
+ When designing solutions:
+ 1. Check if the data/function already exists somewhere
+ 2. Look for configuration options before code changes
+ 3. Prefer passing existing variables over creating new ones
+ 4. Use established patterns from similar features
+ 5. Aim for minimal diff size
+
+
+
+ Always include:
+ - Exact file paths and line numbers
+ - Variable/function names as they appear in code
+ - Before/after code snippets showing minimal changes
+ - Clear explanation of why the simple fix works
+
+
\ No newline at end of file
diff --git a/.roo/rules-issue-writer/4_common_mistakes_to_avoid.xml b/.roo/rules-issue-writer/4_common_mistakes_to_avoid.xml
index 2013bd73d8..a8dd9b590b 100644
--- a/.roo/rules-issue-writer/4_common_mistakes_to_avoid.xml
+++ b/.roo/rules-issue-writer/4_common_mistakes_to_avoid.xml
@@ -1,4 +1,13 @@
+
+ - CRITICAL: Asking "What would you like to do?" when mode starts
+ - Waiting for user to say "create an issue" or "make me an issue"
+ - Not treating the first user message as the issue description
+ - Delaying the workflow start with unnecessary questions
+ - Asking if they want to create an issue when they've already chosen this mode
+ - Not immediately beginning repository detection and codebase discovery
+
+
- Vague descriptions like "doesn't work" or "broken"
- Missing reproduction steps for bugs
@@ -12,19 +21,106 @@
- Asking for technical details from non-contributing users
- - Exploring codebase before confirming user wants to contribute
+ - Performing issue scoping before confirming user wants to contribute
- Requiring acceptance criteria from problem reporters
- Making the process too complex for simple problem reports
- Not clearly indicating the "submit now" option
- Overwhelming users with contributor requirements upfront
+ - Using hardcoded templates instead of repository templates
+ - Not checking for issue templates before creating content
+ - Ignoring template metadata like labels and assignees
- Starting implementation before approval
- - Not providing detailed technical analysis when contributing
+ - Not providing detailed issue scoping when contributing
- Missing acceptance criteria for contributed features
- Forgetting to include technical context from code exploration
- Not considering trade-offs and alternatives
- Proposing solutions without understanding current architecture
+
+
+ Not tracing data flow completely through the system
+ Missing that data already exists leads to proposing unnecessary new code
+
+ - Use codebase_search extensively to find ALL related code
+ - Trace variables from creation to consumption
+ - Check if needed data is already calculated but not used
+ - Look for similar working features as patterns
+
+
+ Bad: "Add mode tracking to import function"
+ Good: "The export already includes mode info at line 234, just use it in import at line 567"
+
+
+
+
+ Proposing complex new systems when simple fixes exist
+ Creates unnecessary complexity, maintenance burden, and potential bugs
+
+ - ALWAYS check if functionality already exists first
+ - Look for minimal changes that solve the problem
+ - Prefer using existing variables/functions differently
+ - Aim for the smallest possible diff
+
+
+ Bad: "Create new state management system for mode tracking"
+ Good: "Pass existing modeInfo variable from line 45 to the function at line 78"
+
+
+
+
+ Not reading actual code before proposing solutions
+ Solutions don't match the actual codebase structure
+
+ - Always read the relevant files first
+ - Verify exact line numbers and content
+ - Check imports/exports to understand data availability
+ - Look at similar features that work correctly
+
+
+
+
+ Creating new patterns instead of following existing ones
+ Inconsistent codebase, harder to maintain
+
+ - Find similar features that work correctly
+ - Follow the same patterns and structures
+ - Reuse existing utilities and helpers
+ - Maintain consistency with the codebase style
+
+
+
+
+ Using hardcoded templates when repository templates exist
+ Issues don't follow repository conventions, may be rejected or need reformatting
+
+ - Always check .github/ISSUE_TEMPLATE/ directory first
+ - Parse and use repository templates when available
+ - Only create generic templates when none exist
+
+
+
+
+ Not properly parsing YAML template structure
+ Missing required fields, incorrect formatting, lost metadata
+
+ - Parse YAML templates to extract all form elements
+ - Convert form elements to appropriate markdown sections
+ - Preserve field requirements and descriptions
+ - Maintain dropdown options and checkbox lists
+
+
+
+
+ Leaving placeholder text in final issue
+ Unprofessional appearance, confusion about what information is needed
+
+ - Replace all placeholders with actual information
+ - Remove instruction text meant for template users
+ - Fill every section with relevant content
+ - Add "N/A" for truly inapplicable sections
+
+
\ No newline at end of file
diff --git a/.roo/rules-issue-writer/5_github_cli_usage.xml b/.roo/rules-issue-writer/5_github_cli_usage.xml
index 8beb024d15..1792be87eb 100644
--- a/.roo/rules-issue-writer/5_github_cli_usage.xml
+++ b/.roo/rules-issue-writer/5_github_cli_usage.xml
@@ -3,9 +3,8 @@
The GitHub CLI (gh) provides comprehensive tools for interacting with GitHub.
Here's when and how to use each command in the issue creation workflow.
- Note: Issue body formatting should follow the templates defined in
- 2_github_issue_templates.xml, with different formats for problem reporters
- vs contributors.
+ Note: This mode prioritizes using repository-specific issue templates over
+ hardcoded ones. Templates are detected and used dynamically from the repository.
@@ -16,7 +15,7 @@
- gh issue list --repo RooCodeInc/Roo-Code --search "dark theme button visibility" --state all --limit 20
+ gh issue list --repo $REPO_FULL_NAME --search "dark theme button visibility" --state all --limit 20
@@ -35,7 +34,7 @@
- gh search issues --repo RooCodeInc/Roo-Code "dark theme button" --limit 10
+ gh search issues --repo $REPO_FULL_NAME "dark theme button" --limit 10
@@ -47,7 +46,7 @@
- gh issue view 123 --repo RooCodeInc/Roo-Code --comments
+ gh issue view 123 --repo $REPO_FULL_NAME --comments
@@ -58,6 +57,46 @@
+
+
+
+ Use to check for issue templates in the repository before creating issues.
+ This is not a gh command but necessary for template detection.
+
+
+ Check for templates in standard location:
+
+ .github/ISSUE_TEMPLATE
+ true
+
+
+ Check for single template file:
+
+ .github
+ false
+
+
+
+
+
+
+ Read template files to parse their structure and content.
+ Used after detecting template files.
+
+
+ Read YAML template:
+
+ .github/ISSUE_TEMPLATE/bug_report.yml
+
+
+ Read Markdown template:
+
+ .github/ISSUE_TEMPLATE/feature_request.md
+
+
+
+
+
These commands should ONLY be used if the user has indicated they want to
@@ -70,7 +109,7 @@
- gh repo view RooCodeInc/Roo-Code --json defaultBranchRef,description,updatedAt
+ gh repo view $REPO_FULL_NAME --json defaultBranchRef,description,updatedAt
@@ -82,7 +121,7 @@
- gh search prs --repo RooCodeInc/Roo-Code "dark theme" --limit 10 --state all
+ gh search prs --repo $REPO_FULL_NAME "dark theme" --limit 10 --state all
@@ -105,18 +144,19 @@
Only use after:
1. Confirming no duplicates exist
- 2. Gathering all required information
- 3. Determining if user is contributing or just reporting
- 4. Getting user confirmation
+ 2. Checking for and using repository templates
+ 3. Gathering all required information
+ 4. Determining if user is contributing or just reporting
+ 5. Getting user confirmation
- gh issue create --repo RooCodeInc/Roo-Code --title "[Descriptive title of the bug]" --body-file /tmp/issue_body.md --label "bug"
+ gh issue create --repo $REPO_FULL_NAME --title "[Descriptive title of the bug]" --body-file /tmp/issue_body.md --label "bug"
- gh issue create --repo RooCodeInc/Roo-Code --title "[Problem-focused title]" --body-file /tmp/issue_body.md --label "proposal" --label "enhancement"
+ gh issue create --repo $REPO_FULL_NAME --title "[Problem-focused title]" --body-file /tmp/issue_body.md --label "proposal" --label "enhancement"
@@ -138,7 +178,7 @@
- gh issue comment 456 --repo RooCodeInc/Roo-Code --body "Additional context or comments."
+ gh issue comment 456 --repo $REPO_FULL_NAME --body "Additional context or comments."
@@ -150,7 +190,7 @@
- gh issue edit 456 --repo RooCodeInc/Roo-Code --title "[Updated title]" --body "[Updated body]"
+ gh issue edit 456 --repo $REPO_FULL_NAME --title "[Updated title]" --body "[Updated body]"
@@ -164,41 +204,41 @@
3. Ask if they want to continue or comment on existing issue
-
- When searching GitHub Discussions:
- 1. Note that GitHub CLI doesn't currently have full discussions support
- 2. Use web search or instruct user to manually search discussions at:
- https://github.com/RooCodeInc/Roo-Code/discussions/categories/feature-requests
- 3. Ask user to provide any related discussion numbers they find
- 4. Include these in the "Related Discussions" section of the issue
-
+
+ Template detection (NEW):
+ 1. Use list_files to check .github/ISSUE_TEMPLATE/ directory
+ 2. Read any template files found (YAML or Markdown)
+ 3. Parse template structure and metadata
+ 4. If multiple templates, let user choose
+ 5. If no templates, prepare to create generic one
+
-
+
Decision point for contribution:
1. Ask user if they want to contribute implementation
2. If yes: Use contributor commands for codebase investigation
3. If no: Skip directly to creating a problem-focused issue
4. This saves time for problem reporters
-
+
-
+
During codebase exploration (CONTRIBUTORS ONLY):
- 1. Clone repo locally if needed: `gh repo clone RooCodeInc/Roo-Code`
+ 1. Clone repo locally if needed: `gh repo clone $REPO_FULL_NAME`
2. Use `git log` to find recent changes to affected files
3. Use `gh search prs` for related pull requests
4. Include findings in the technical context section
-
+
-
+
When creating the issue:
- 1. Format differently based on contributor vs problem reporter
- 2. Problem reporters: Simple problem description + context
- 3. Contributors: Full template with technical sections
+ 1. Use repository template if found, or generic template if not
+ 2. Fill template with gathered information
+ 3. Format differently based on contributor vs problem reporter
4. Save formatted body to temporary file
- 5. Use `gh issue create` with appropriate labels
+ 5. Use `gh issue create` with appropriate labels from template
6. Capture the returned issue URL
7. Show user the created issue URL
-
+
@@ -270,4 +310,33 @@
gh repo clone - Clone repository
+
+
+
+ When parsing YAML templates:
+ - Extract 'name' for template identification
+ - Get 'labels' array for automatic labeling
+ - Parse 'body' array for form elements
+ - Convert form elements to markdown sections
+ - Preserve 'required' field indicators
+
+
+
+ When parsing Markdown templates:
+ - Check for YAML front matter
+ - Extract metadata (labels, assignees)
+ - Identify section headers
+ - Replace placeholder text
+ - Maintain formatting structure
+
+
+
+ 1. Detect templates with list_files
+ 2. Read templates with read_file
+ 3. Parse structure and metadata
+ 4. Let user choose if multiple exist
+ 5. Fill template with information
+ 6. Create issue with template content
+
+
\ No newline at end of file
diff --git a/.roo/rules-issue-writer/6_technical_analysis_workflow.xml b/.roo/rules-issue-writer/6_technical_analysis_workflow.xml
deleted file mode 100644
index c61d8fc1ca..0000000000
--- a/.roo/rules-issue-writer/6_technical_analysis_workflow.xml
+++ /dev/null
@@ -1,349 +0,0 @@
-
-
- This sub-workflow provides an aggressive, thorough, and all-encompassing investigation
- process for technical analysis when creating GitHub issues. It employs methods from
- the issue-investigator mode to deeply analyze the codebase and formulate comprehensive
- technical solutions. This workflow is designed to produce scoped issues that can be
- used in automated fix workflows.
-
-
-
-
- Create Investigation Plan
-
- When technical analysis is requested, immediately create a comprehensive todo list
- to track the investigation progress.
-
-
-
-[ ] Extract keywords from the issue description
-[ ] Perform initial broad codebase search
-[ ] Analyze search results and identify key components
-[ ] Deep dive into relevant files and implementations
-[ ] Form initial hypothesis about the issue/feature
-[ ] Attempt to disprove hypothesis through further investigation
-[ ] Identify all affected files and dependencies
-[ ] Map out the complete implementation approach
-[ ] Document technical risks and edge cases
-[ ] Formulate comprehensive technical solution
-[ ] Create detailed acceptance criteria
-[ ] Prepare technical analysis summary
-
-
- ]]>
-
-
-
-
-
-
- Extract all relevant keywords, concepts, and technical terms from the issue description.
- Be exhaustive - include function names, error messages, feature names, and related concepts.
-
-
- Identify primary technical concepts
- Extract error messages or specific symptoms
- Note any mentioned file paths or components
- List related features or functionality
- Include synonyms and related terms
-
- Mark "Extract keywords from the issue description" as complete
-
-
-
-
- Perform multiple rounds of codebase searches, starting broad and progressively
- narrowing based on findings. This is an aggressive, exhaustive search process.
-
-
- Initial Broad Search
-
- Use codebase_search with all extracted keywords to get an overview of relevant code.
-
-[Combined keywords from extraction phase]
-
- ]]>
-
-
-
-
- Component Discovery
-
- Based on initial results, identify key components and search for:
- - Related class/function definitions
- - Import statements and dependencies
- - Configuration files
- - Test files that might reveal expected behavior
-
-
-
-
- Deep Implementation Search
-
- Search for specific implementation details:
- - Error handling patterns
- - State management
- - API endpoints or routes
- - Database queries or models
- - UI components and their interactions
-
-
-
-
- Edge Case and Integration Search
-
- Look for:
- - Edge cases in the code
- - Integration points with other systems
- - Configuration options that affect behavior
- - Feature flags or conditional logic
-
-
-
- Update search-related todos as each iteration completes
-
-
-
-
- Thoroughly analyze all relevant files discovered during the search phase.
-
-
- Use list_code_definition_names to understand file structure
- Read complete files to understand full context
- Trace execution paths through the code
- Identify all dependencies and imports
- Map relationships between components
-
-
- Document findings including:
- - File paths and their purposes
- - Key functions and their responsibilities
- - Data flow through the system
- - External dependencies
- - Potential impact areas
-
- Mark file analysis todos as complete
-
-
-
-
- Form a comprehensive hypothesis about the issue or feature implementation.
-
-
-
- Identify the most likely root cause
- Trace the bug through the execution path
- Determine why the current implementation fails
- Consider environmental factors
-
-
-
-
- Identify the optimal integration points
- Determine required architectural changes
- Plan the implementation approach
- Consider scalability and maintainability
-
-
- Mark hypothesis formation as complete
-
-
-
-
- Aggressively attempt to disprove the hypothesis by searching for contradictory evidence.
-
-
-
- Search for Alternative Implementations
- Look for similar features implemented differently
- Check for deprecated code that might interfere
-
-
- Configuration and Environment Check
- Search for configuration that could change behavior
- Look for environment-specific code paths
-
-
- Test Case Analysis
- Find existing tests that might contradict hypothesis
- Look for test cases that reveal edge cases
-
-
- Historical Context
- Search for comments explaining design decisions
- Look for TODO or FIXME comments related to the area
-
-
-
- If hypothesis is disproven, return to search phase with new insights.
- If hypothesis stands, proceed to solution formulation.
-
- Update hypothesis validation status
-
-
-
-
- Create a comprehensive technical solution with extreme detail.
-
-
-
-
- - Exact files to modify with line numbers
- - New files to create with full paths
- - Specific code changes required
- - Order of implementation steps
- - Migration strategy if needed
-
-
-
-
-
- - All files that import affected code
- - API contracts that must be maintained
- - Database schema changes if any
- - Configuration changes required
- - Documentation updates needed
-
-
-
-
-
- - Unit tests to add or modify
- - Integration tests required
- - Edge cases to test
- - Performance testing needs
- - Manual testing scenarios
-
-
-
-
-
- - Breaking changes identified
- - Performance implications
- - Security considerations
- - Backward compatibility issues
- - Rollback strategy
-
-
-
- Mark solution formulation as complete
-
-
-
-
- Create extremely detailed acceptance criteria that can guide automated implementation.
-
-
-
- Each criterion must be independently testable
- Include both positive and negative test cases
- Specify exact error messages and codes
- Define performance thresholds where applicable
-
- Mark acceptance criteria creation as complete
-
-
-
-
-
-
-
-
-
- All keywords extracted and searched
- Multiple search iterations completed
- All relevant files analyzed
- Hypothesis formed and validated
- Comprehensive solution documented
- Acceptance criteria defined
- All risks and edge cases identified
- Technical analysis formatted for issue
-
-
- Mark all investigation todos as complete and update the main workflow todo list
-
-
-
\ No newline at end of file
diff --git a/.roo/rules-merge-resolver/1_workflow.xml b/.roo/rules-merge-resolver/1_workflow.xml
new file mode 100644
index 0000000000..a63809db70
--- /dev/null
+++ b/.roo/rules-merge-resolver/1_workflow.xml
@@ -0,0 +1,142 @@
+
+
+ This mode resolves merge conflicts for a specific pull request by analyzing git history,
+ commit messages, and code changes to make intelligent resolution decisions. It receives
+ a PR number (e.g., "#123") and handles the entire conflict resolution process.
+
+
+
+
+ Parse PR number from user input
+
+ Extract the PR number from input like "#123" or "PR #123"
+ Validate that a PR number was provided
+
+
+
+
+ Fetch PR information
+
+ gh pr view [PR_NUMBER] --json title,body,headRefName,baseRefName
+
+
+ Get PR title and description to understand the intent
+ Identify the source and target branches
+
+
+
+
+ Checkout PR branch and prepare for rebase
+
+ gh pr checkout [PR_NUMBER] --force
+ git fetch origin main
+ git rebase origin/main
+
+
+ Force checkout the PR branch to ensure clean state
+ Fetch the latest main branch
+ Attempt to rebase onto main to reveal conflicts
+
+
+
+
+ Check for merge conflicts
+
+ git status --porcelain
+ git diff --name-only --diff-filter=U
+
+
+ Identify files with merge conflicts (marked with 'UU')
+ Create a list of files that need resolution
+
+
+
+
+
+
+ Analyze each conflicted file to understand the changes
+
+ Read the conflicted file to identify conflict markers
+ Extract the conflicting sections between <<<<<<< and >>>>>>>
+ Run git blame on both sides of the conflict
+ Fetch commit messages and diffs for relevant commits
+ Analyze the intent behind each change
+
+
+
+
+ Determine the best resolution strategy for each conflict
+
+ Categorize changes by intent (bugfix, feature, refactor, etc.)
+ Evaluate recency and relevance of changes
+ Check for structural overlap vs formatting differences
+ Identify if changes can be combined or if one should override
+ Consider test updates and related changes
+
+
+
+
+ Apply the resolution strategy to resolve conflicts
+
+ For each conflict, apply the chosen resolution
+ Ensure proper escaping of conflict markers in diffs
+ Validate that resolved code is syntactically correct
+ Stage resolved files with git add
+
+
+
+
+ Verify the resolution and prepare for commit
+
+ Run git status to confirm all conflicts are resolved
+ Check for any compilation or syntax errors
+ Review the final diff to ensure sensible resolutions
+ Prepare a summary of resolution decisions
+
+
+
+
+
+
+ gh pr checkout [PR_NUMBER] --force
+ Force checkout the PR branch to ensure clean state
+
+
+
+ git fetch origin main
+ Get the latest main branch from origin
+
+
+
+ git rebase origin/main
+ Rebase current branch onto main to reveal conflicts
+
+
+
+ git blame -L [start_line],[end_line] [commit_sha] -- [file_path]
+ Get commit information for specific lines
+
+
+
+ git show --format="%H%n%an%n%ae%n%ad%n%s%n%b" --no-patch [commit_sha]
+ Get commit metadata including message
+
+
+
+ git show [commit_sha] -- [file_path]
+ Get the actual changes made in a commit
+
+
+
+ git ls-files -u
+ List unmerged files with stage information
+
+
+
+
+ All merge conflicts have been resolved
+ Resolved files have been staged
+ No syntax errors in resolved code
+ Resolution decisions are documented
+
+
\ No newline at end of file
diff --git a/.roo/rules-merge-resolver/2_best_practices.xml b/.roo/rules-merge-resolver/2_best_practices.xml
new file mode 100644
index 0000000000..5bf1b393eb
--- /dev/null
+++ b/.roo/rules-merge-resolver/2_best_practices.xml
@@ -0,0 +1,165 @@
+
+
+
+ Intent-Based Resolution
+
+ Always prioritize understanding the intent behind changes rather than
+ just looking at the code differences. Commit messages, PR descriptions,
+ and issue references provide crucial context.
+
+
+ Code changes have purpose - bugfixes should be preserved, features
+ should be integrated properly, and refactors should maintain consistency.
+
+
+ Conflict between a bugfix and a refactor
+ Apply the bugfix logic within the refactored structure
+ Simply choose one side without considering both intents
+
+
+
+
+ Preserve All Valuable Changes
+
+ When possible, combine non-conflicting changes from both sides rather
+ than discarding one side entirely.
+
+
+ Both sides of a conflict often contain valuable changes that can coexist
+ if properly integrated.
+
+
+
+
+ Escape Conflict Markers
+
+ When using apply_diff or search_and_replace tools, always escape merge
+ conflict markers with backslashes to prevent parsing errors.
+
+
+
+
+
+ Consider Related Changes
+
+ Look beyond the immediate conflict to understand related changes in
+ tests, documentation, or dependent code.
+
+
+ A change might seem isolated but could be part of a larger feature
+ or fix that spans multiple files.
+
+
+
+
+
+
+ Bugfixes generally take precedence over features
+
+ Bugfixes address existing problems and should be preserved,
+ while features can be reintegrated around the fix.
+
+
+
+
+ More recent changes are often more relevant
+
+ Recent changes likely reflect the current understanding of
+ requirements and may supersede older implementations.
+
+
+ When older changes are bugfixes or security patches that
+ haven't been addressed in newer code.
+
+
+
+
+ Changes that include test updates are likely more complete
+
+ Developers who update tests alongside code changes demonstrate
+ thoroughness and understanding of the impact.
+
+
+
+
+ Logic changes take precedence over formatting changes
+
+ Formatting can be reapplied, but logic changes represent
+ functional improvements or fixes.
+
+
+
+
+
+
+ Blindly choosing one side without analysis
+
+ You might lose important changes or introduce regressions
+
+
+ Always analyze both sides using git blame and commit history
+
+
+
+
+ Ignoring the PR description and context
+
+ The PR description often explains the why behind changes,
+ which is crucial for proper resolution
+
+
+ Always fetch and read the PR information before resolving
+
+
+
+
+ Not validating the resolved code
+
+ Merged code might be syntactically incorrect or introduce
+ logical errors
+
+
+ Always check for syntax errors and review the final diff
+
+
+
+
+ Not escaping conflict markers in diffs
+
+ Unescaped conflict markers (<<<<<<, =======, >>>>>>) in SEARCH
+ or REPLACE sections will be interpreted as actual diff syntax,
+ causing the apply_diff tool to fail or produce incorrect results
+
+
+ Always escape conflict markers with a backslash (\) when they
+ appear in the content you're searching for or replacing.
+ Example: \<<<<<<< HEAD instead of <<<<<<< HEAD
+
+
+
+
+
+
+ Fetch PR title and description for context
+ Identify all files with conflicts
+ Understand the overall change being merged
+
+
+
+ Run git blame on conflicting sections
+ Read commit messages for intent
+ Consider if changes can be combined
+ Escape conflict markers in diffs
+
+
+
+ Verify no conflict markers remain
+ Check for syntax/compilation errors
+ Review the complete diff
+ Document resolution decisions
+
+
+
\ No newline at end of file
diff --git a/.roo/rules-merge-resolver/3_tool_usage.xml b/.roo/rules-merge-resolver/3_tool_usage.xml
new file mode 100644
index 0000000000..35f3b5da75
--- /dev/null
+++ b/.roo/rules-merge-resolver/3_tool_usage.xml
@@ -0,0 +1,228 @@
+
+
+
+ execute_command
+ For all git and gh CLI operations
+ Git commands provide the historical context needed for intelligent resolution
+
+
+
+ read_file
+ To examine conflicted files and understand the conflict structure
+ Need to see the actual conflict markers and code
+
+
+
+ apply_diff or search_and_replace
+ To resolve conflicts by replacing conflicted sections
+ Precise editing of specific conflict blocks
+
+
+
+
+
+
+ Always use gh CLI for GitHub operations instead of MCP tools
+ Chain git commands with && for efficiency
+ Use --format options for structured output
+ Capture command output for parsing
+
+
+
+
+ Get PR information
+ gh pr view [PR_NUMBER] --json title,body,headRefName,baseRefName
+
+
+
+ Checkout PR branch
+ gh pr checkout [PR_NUMBER] --force
+
+
+
+ Fetch latest main branch
+ git fetch origin main
+
+
+
+ Rebase onto main to reveal conflicts
+ git rebase origin/main
+
+
+
+ Check conflict status
+ git status --porcelain | grep "^UU"
+
+
+
+ Get blame for specific lines
+ git blame -L [start],[end] HEAD -- [file] | cut -d' ' -f1
+
+
+
+ Get commit message
+ git log -1 --format="%s%n%n%b" [commit_sha]
+
+
+
+ Stage resolved file
+ git add [file_path]
+
+
+
+ Continue rebase after resolution
+ git rebase --continue
+
+
+
+
+
+
+ Read the entire conflicted file first to understand structure
+ Note line numbers of conflict markers for precise editing
+ Identify the pattern of conflicts (multiple vs single)
+
+
+
+ <<<<<<< HEAD - Start of current branch changes
+ ======= - Separator between versions
+ >>>>>>> [branch] - End of incoming changes
+
+
+
+
+
+ Always escape conflict markers with backslash
+ Include enough context to ensure unique matches
+ Use :start_line: for precision
+ Combine multiple resolutions in one diff when possible
+
+
+
+src/feature.ts
+
+<<<<<<< SEARCH
+:start_line:45
+-------
+\<<<<<<< HEAD
+function oldImplementation() {
+ return "old";
+}
+\=======
+function newImplementation() {
+ return "new";
+}
+\>>>>>>> feature-branch
+=======
+function mergedImplementation() {
+ // Combining both approaches
+ return "merged";
+}
+>>>>>>> REPLACE
+
+
+ ]]>
+
+
+
+
+ Use for simple conflict resolutions
+ Enable regex mode for complex patterns
+ Always escape special characters
+
+
+
+src/config.ts
+\<<<<<<< HEAD[\s\S]*?\>>>>>>> \w+
+// Resolved configuration
+const config = {
+ // Merged settings from both branches
+}
+true
+
+ ]]>
+
+
+
+
+
+
+ execute_command - Get PR info with gh CLI
+ execute_command - Checkout PR with gh pr checkout --force
+ execute_command - Fetch origin main
+ execute_command - Rebase onto origin/main
+ execute_command - Check for conflicts with git status
+
+
+
+
+
+ execute_command - List conflicted files
+ read_file - Examine conflict structure
+ execute_command - Git blame on conflict regions
+ execute_command - Fetch commit messages
+
+
+
+
+
+ read_file - Get exact conflict content
+ apply_diff - Replace conflict with resolution
+ execute_command - Stage resolved file
+ execute_command - Verify resolution status
+
+
+
+
+
+ execute_command - Check all conflicts resolved
+ execute_command - Continue rebase with git rebase --continue
+ execute_command - Verify clean status
+
+
+
+
+
+
+ Rebase completes without conflicts
+
+ Inform user that PR can be merged without conflicts
+ No resolution needed
+
+
+
+
+ A rebase is already in progress
+
+ Check status with git status
+ Either continue existing rebase or abort with git rebase --abort
+
+
+
+
+ Conflict markers are incomplete or nested
+
+ Use search_and_replace with careful regex patterns
+ Manual inspection may be required
+
+
+
+
+ Binary files cannot be merged automatically
+
+ Identify which version to keep based on PR intent
+ Use git checkout --theirs or --ours
+
+
+
+
+ Code contains literal conflict marker strings
+
+ Extra careful escaping in diffs
+ Consider using search_and_replace with precise patterns
+
+
+
+
\ No newline at end of file
diff --git a/.roo/rules-merge-resolver/4_complete_example.xml b/.roo/rules-merge-resolver/4_complete_example.xml
new file mode 100644
index 0000000000..dae8587997
--- /dev/null
+++ b/.roo/rules-merge-resolver/4_complete_example.xml
@@ -0,0 +1,315 @@
+
+
+ User provides PR #123 which has merge conflicts between a bugfix branch
+ and a feature branch that refactored the same code.
+
+
+
+ #123
+
+
+
+
+ Parse PR number and fetch PR information
+
+gh pr view 123 --json title,body,headRefName,baseRefName
+
+ ]]>
+
+
+ The PR is a bugfix for a memory leak issue. This context will help
+ prioritize preserving the fix during conflict resolution.
+
+
+
+
+ Checkout PR branch and prepare for rebase
+
+gh pr checkout 123 --force
+
+ ]]>
+
+
+
+git fetch origin main
+
+ ]]>
+ FETCH_HEAD
+ ]]>
+
+
+git rebase origin/main
+
+ ]]>
+ ", then run "git rebase --continue".
+ ]]>
+
+
+
+ Check for merge conflicts
+
+git status --porcelain | grep "^UU"
+
+ ]]>
+
+
+ Two files have conflicts: the main processor file and its test file.
+ Both need to be resolved before continuing the rebase.
+
+
+
+
+ Examine the conflicted processor file
+
+src/data/processor.ts
+
+ ]]>
+ = new Map();
+47 |
+48 | <<<<<<< HEAD
+49 | async processData(data: DataInput): Promise {
+50 | // Refactored to use async/await
+51 | const result = await this.transform(data);
+52 | return result;
+53 | }
+54 | =======
+55 | processData(data: any[]): ProcessedData {
+56 | const listener = this.createListener();
+57 | this.listeners.set(data.id, listener);
+58 |
+59 | return this.transform(data);
+60 | }
+61 | >>>>>>> abc123 (Fix memory leak in data processor)
+62 |
+63 | cleanup() {
+64 | <<<<<<< HEAD
+65 | // TODO: Implement cleanup
+66 | =======
+67 | // Fix: Clear all listeners to prevent memory leak
+68 | this.listeners.forEach(listener => {
+69 | listener.removeAllListeners();
+70 | });
+71 | this.listeners.clear();
+72 | >>>>>>> abc123 (Fix memory leak in data processor)
+73 | }
+74 | }
+ ]]>
+
+
+
+ Analyze the conflicts using git blame
+
+git blame -L 49,53 HEAD -- src/data/processor.ts | cut -d' ' -f1 | sort -u | xargs -I {} git log -1 --format="%h %s" {}
+
+ ]]>
+
+
+
+git log -1 --format="%h %s" abc123
+
+ ]]>
+
+
+
+ HEAD (main after rebase): Has async/await refactor but missing listener logic
+ Incoming (bugfix branch): Adds listener tracking and cleanup for memory leak fix
+
+ Resolution strategy: Combine both changes - keep async/await refactor
+ but include the listener tracking and cleanup logic.
+
+
+
+
+ Resolve the conflicts
+
+src/data/processor.ts
+
+<<<<<<< SEARCH
+:start_line:48
+-------
+\<<<<<<< HEAD
+ async processData(data: DataInput): Promise {
+ // Refactored to use async/await
+ const result = await this.transform(data);
+ return result;
+ }
+\=======
+ processData(data: any[]): ProcessedData {
+ const listener = this.createListener();
+ this.listeners.set(data.id, listener);
+
+ return this.transform(data);
+ }
+\>>>>>>> abc123 (Fix memory leak in data processor)
+=======
+ async processData(data: DataInput): Promise {
+ // Create and track listener for cleanup (memory leak fix)
+ const listener = this.createListener();
+ this.listeners.set(data.id, listener);
+
+ // Refactored to use async/await
+ const result = await this.transform(data);
+ return result;
+ }
+>>>>>>> REPLACE
+
+<<<<<<< SEARCH
+:start_line:63
+-------
+ cleanup() {
+\<<<<<<< HEAD
+ // TODO: Implement cleanup
+\=======
+ // Fix: Clear all listeners to prevent memory leak
+ this.listeners.forEach(listener => {
+ listener.removeAllListeners();
+ });
+ this.listeners.clear();
+\>>>>>>> abc123 (Fix memory leak in data processor)
+ }
+=======
+ cleanup() {
+ // Fix: Clear all listeners to prevent memory leak
+ this.listeners.forEach(listener => {
+ listener.removeAllListeners();
+ });
+ this.listeners.clear();
+ }
+>>>>>>> REPLACE
+
+
+ ]]>
+
+ Combined both changes: kept the async/await refactor from main
+ while preserving the memory leak fix (listener tracking and cleanup)
+ from the bugfix branch.
+
+
+
+
+ Resolve test file conflicts
+
+src/data/processor.test.ts
+
+ ]]>
+
+
+src/data/processor.test.ts
+
+
+
+
+ ]]>
+
+
+
+ Stage resolved files and continue rebase
+
+git add src/data/processor.ts src/data/processor.test.ts
+
+ ]]>
+
+
+git rebase --continue
+
+ ]]>
+
+
+
+
+ Final validation
+
+git status
+
+ ]]>
+
+
+
+git diff origin/main --stat
+
+ ]]>
+
+
+
+
+
+
+Successfully resolved merge conflicts for PR #123 "Fix memory leak in data processor".
+
+Resolution Summary:
+- src/data/processor.ts: Combined the async/await refactor with the memory leak fix by preserving listener tracking and cleanup logic within the refactored async method
+- src/data/processor.test.ts: Updated tests to work with the async implementation while maintaining memory leak test coverage
+
+Both the feature refactor and the critical bugfix have been preserved in the resolution. The rebase has been completed successfully and the branch is ready to be pushed.
+
+
+ ]]>
+
+
+ Always checkout PR with --force and rebase to reveal conflicts
+ Fetch PR context to understand the intent of changes
+ Use git blame and commit messages to understand the history
+ Combine non-conflicting improvements when possible
+ Prioritize bugfixes while accommodating refactors
+ Complete the rebase process with git rebase --continue
+ Validate that both sets of changes work together
+
+
\ No newline at end of file
diff --git a/.roo/rules-merge-resolver/5_communication.xml b/.roo/rules-merge-resolver/5_communication.xml
new file mode 100644
index 0000000000..18594d5269
--- /dev/null
+++ b/.roo/rules-merge-resolver/5_communication.xml
@@ -0,0 +1,153 @@
+
+
+ Be direct and technical when explaining resolution decisions
+ Focus on the rationale behind each conflict resolution
+ Provide clear summaries of what was merged and why
+
+
+ I'll help you resolve these conflicts...
+ Let me handle this for you...
+ Don't worry about the conflicts...
+
+
+
+ Analyzing PR #123 for merge conflicts...
+ Resolving conflicts based on commit history analysis...
+ Applied resolution strategy: [specific strategy]
+
+
+
+
+
+ Acknowledge the PR number
+ State that you're fetching PR information
+ Indicate the analysis will begin
+
+
+
+ Fetching information for PR #123 to understand the context and identify merge conflicts...
+
+
+
+
+ During each major phase of resolution
+
+ Analyzing [X] conflicted files...
+ Running git blame on [file] to understand change history...
+ Resolving conflicts in [file] by [strategy]...
+ Validating resolved changes...
+
+
+
+ Number of conflicts found
+ Files being processed
+ Resolution strategy being applied
+
+
+
+
+ Explain each significant resolution decision
+ Reference specific commits when relevant
+ Justify why certain changes were kept or merged
+
+
+
+ Conflict in [file]:
+ - HEAD: [brief description of changes]
+ - Incoming: [brief description of changes]
+ - Resolution: [what was decided and why]
+
+
+
+
+
+
+
+ Expected a PR number (e.g., "#123" or "123"). Please provide the PR number to resolve conflicts for.
+
+
+
+
+
+ PR #[number] does not have any merge conflicts. The branch can be merged without conflict resolution.
+
+
+
+
+
+ Could not find PR #[number]. Please verify the PR number and ensure you have access to the repository.
+
+
+
+
+
+ Found complex conflicts in [file] that require careful analysis. Examining commit history to determine the best resolution strategy...
+
+
+
+
+
+
+ State that conflicts are resolved
+ Provide resolution summary
+ List files that were resolved
+ Mention key decisions made
+
+
+
+
+
+ Questions about next steps
+ Offers to do additional work
+ Uncertain language about the resolution
+
+
+
+
+ Document why specific resolutions were chosen
+ Reference commit SHAs when they influenced decisions
+ Explain trade-offs when both sides had valid changes
+
+
+
+ Preserved bugfix from commit abc123 while adapting it to the refactored structure from def456
+
+
+ Combined both implementations as they addressed different aspects of the same feature
+
+
+ Chose the more recent implementation as it included additional error handling
+
+
+
+
+
+
+
+ Binary file conflict in [file]. Based on PR intent "[title]", choosing [which version] version.
+
+
+
+
+
+ Conflict: [file] was deleted in one branch but modified in another. Based on the changes, [keeping/removing] the file because [reason].
+
+
+
+
+
+ Conflict in [file] involves only whitespace/formatting. Applying consistent formatting from [which] branch.
+
+
+
+
\ No newline at end of file
diff --git a/.roo/rules-mode-writer/1_mode_creation_workflow.xml b/.roo/rules-mode-writer/1_mode_creation_workflow.xml
index 15a48aa804..77a1728599 100644
--- a/.roo/rules-mode-writer/1_mode_creation_workflow.xml
+++ b/.roo/rules-mode-writer/1_mode_creation_workflow.xml
@@ -1,124 +1,278 @@
-
+
- This workflow guides you through creating a new custom mode to be used in the Roo Code Software,
- from initial requirements gathering to final implementation.
+ This workflow guides you through creating new custom modes or editing existing modes
+ for the Roo Code Software, ensuring comprehensive understanding and cohesive implementation.
-
+
- Gather Requirements
+ Determine User Intent
- Understand what the user wants the mode to accomplish
+ Identify whether the user wants to create a new mode or edit an existing one
-
- Ask about the mode's primary purpose and use cases
- Identify what types of tasks the mode should handle
- Determine what tools and file access the mode needs
- Clarify any special behaviors or restrictions
-
-
+
+
+
+ User mentions a specific mode by name or slug
+ User references a mode directory path (e.g., .roo/rules-[mode-slug])
+ User asks to modify, update, enhance, or fix an existing mode
+ User says "edit this mode" or "change this mode"
+
+
+
+
+ User asks to create a new mode
+ User describes a new capability not covered by existing modes
+ User says "make a mode for" or "create a mode that"
+
+
+
+
- What is the primary purpose of this new mode? What types of tasks should it handle?
+ I want to make sure I understand correctly. Are you looking to create a brand new mode or modify an existing one?
- A mode for writing and maintaining documentation
- A mode for database schema design and migrations
- A mode for API endpoint development and testing
- A mode for performance optimization and profiling
+ Create a new mode for a specific purpose
+ Edit an existing mode to add new capabilities
+ Fix issues in an existing mode
+ Enhance an existing mode with better workflows
-
+
+
-
- Design Mode Configuration
-
- Create the mode definition with all required fields
-
-
-
- Unique identifier (lowercase, hyphens allowed)
- Keep it short and descriptive (e.g., "api-dev", "docs-writer")
-
-
- Display name with optional emoji
- Use an emoji that represents the mode's purpose
-
-
- Detailed description of the mode's role and expertise
-
- Start with "You are Roo Code, a [specialist type]..."
- List specific areas of expertise
- Mention key technologies or methodologies
-
-
-
- Tool groups the mode can access
-
-
-
-
-
-
-
-
-
-
-
- Clear description for the Orchestrator
- Explain specific scenarios and task types
-
-
-
- Do not include customInstructions in the .roomodes configuration.
- All detailed instructions should be placed in XML files within
- the .roo/rules-[mode-slug]/ directory instead.
-
-
+
+
+
+ Gather Requirements for New Mode
+
+ Understand what the user wants the new mode to accomplish
+
+
+ Ask about the mode's primary purpose and use cases
+ Identify what types of tasks the mode should handle
+ Determine what tools and file access the mode needs
+ Clarify any special behaviors or restrictions
+
+
+
+ What is the primary purpose of this new mode? What types of tasks should it handle?
+
+ A mode for writing and maintaining documentation
+ A mode for database schema design and migrations
+ A mode for API endpoint development and testing
+ A mode for performance optimization and profiling
+
+
+
+
-
- Implement File Restrictions
-
- Configure appropriate file access permissions
-
-
- Restrict edit access to specific file types
-
+
+ Design Mode Configuration
+
+ Create the mode definition with all required fields
+
+
+
+ Unique identifier (lowercase, hyphens allowed)
+ Keep it short and descriptive (e.g., "api-dev", "docs-writer")
+
+
+ Display name with optional emoji
+ Use an emoji that represents the mode's purpose
+
+
+ Detailed description of the mode's role and expertise
+
+ Start with "You are Roo Code, a [specialist type]..."
+ List specific areas of expertise
+ Mention key technologies or methodologies
+
+
+
+ Tool groups the mode can access
+
+
+
+
+
+
+
+
+
+
+
+ Clear description for the Orchestrator
+ Explain specific scenarios and task types
+
+
+
+ Do not include customInstructions in the .roomodes configuration.
+ All detailed instructions should be placed in XML files within
+ the .roo/rules-[mode-slug]/ directory instead.
+
+
+
+
+ Implement File Restrictions
+
+ Configure appropriate file access permissions
+
+
+ Restrict edit access to specific file types
+
groups:
- read
- - edit
- fileRegex: \.(md|txt|rst)$
description: Documentation files only
- command
-
-
-
- Use regex patterns to limit file editing scope
- Provide clear descriptions for restrictions
- Consider the principle of least privilege
-
-
+
+
+
+ Use regex patterns to limit file editing scope
+ Provide clear descriptions for restrictions
+ Consider the principle of least privilege
+
+
-
- Create XML Instruction Files
+
+ Create XML Instruction Files
+
+ Design structured instruction files in .roo/rules-[mode-slug]/
+
+
+ Main workflow and step-by-step processes
+ Guidelines and conventions
+ Reusable code patterns and examples
+ Specific tool usage instructions
+ Complete workflow examples
+
+
+ Use semantic tag names that describe content
+ Nest tags hierarchically for better organization
+ Include code examples in CDATA sections when needed
+ Add comments to explain complex sections
+
+
+
+
+
+
+ Immerse in Existing Mode
+
+ Fully understand the existing mode before making any changes
+
+
+ Locate and read the mode configuration in .roomodes
+ Read all XML instruction files in .roo/rules-[mode-slug]/
+ Analyze the mode's current capabilities and limitations
+ Understand the mode's role in the broader ecosystem
+
+
+
+ What specific aspects of the mode would you like to change or enhance?
+
+ Add new capabilities or tool permissions
+ Fix issues with current workflows or instructions
+ Improve the mode's roleDefinition or whenToUse description
+ Enhance XML instructions for better clarity
+
+
+
+
+
+
+ Analyze Change Impact
+
+ Understand how proposed changes will affect the mode
+
+
+ Compatibility with existing workflows
+ Impact on file permissions and tool access
+ Consistency with mode's core purpose
+ Integration with other modes
+
+
+
+ I've analyzed the existing mode. Here's what I understand about your requested changes. Is this correct?
+
+ Yes, that's exactly what I want to change
+ Mostly correct, but let me clarify some details
+ No, I meant something different
+ I'd like to add additional changes
+
+
+
+
+
+
+ Plan Modifications
+
+ Create a detailed plan for modifying the mode
+
+
+ Identify which files need to be modified
+ Determine if new XML instruction files are needed
+ Check for potential conflicts or contradictions
+ Plan the order of changes for minimal disruption
+
+
+
+
+ Implement Changes
+
+ Apply the planned modifications to the mode
+
+
+ Update .roomodes configuration if needed
+ Modify existing XML instruction files
+ Create new XML instruction files if required
+ Update examples and documentation
+
+
+
+
+
+
+
+ Validate Cohesion and Consistency
- Design structured instruction files in .roo/rules-[mode-slug]/
+ Ensure all changes are cohesive and don't contradict each other
-
- Main workflow and step-by-step processes
- Guidelines and conventions
- Reusable code patterns and examples
- Specific tool usage instructions
- Complete workflow examples
-
-
- Use semantic tag names that describe content
- Nest tags hierarchically for better organization
- Include code examples in CDATA sections when needed
- Add comments to explain complex sections
-
+
+
+ Mode slug follows naming conventions
+ File restrictions align with mode purpose
+ Tool permissions are appropriate
+ whenToUse clearly differentiates from other modes
+
+
+ All XML files follow consistent structure
+ No contradicting instructions between files
+ Examples align with stated workflows
+ Tool usage matches granted permissions
+
+
+ Mode integrates well with Orchestrator
+ Clear boundaries with other modes
+ Handoff points are well-defined
+
+
+
+
+ I've completed the validation checks. Would you like me to review any specific aspect in more detail?
+
+ Review the file permission patterns
+ Check for workflow contradictions
+ Verify integration with other modes
+ Everything looks good, proceed to testing
+
+
+
-
+ Test and Refine
Verify the mode works as intended
@@ -129,14 +283,19 @@ groups:
Instructions are clear and actionableMode integrates well with OrchestratorAll examples are accurate and helpful
+ Changes don't break existing functionality (for edits)
+ New capabilities work as expected
-
+
Create mode in .roomodes for project-specific modesCreate mode in global custom_modes.yaml for system-wide modesUse list_files to verify .roo folder structureTest file regex patterns with search_files
+ Use codebase_search to find existing mode implementations
+ Read all XML files in a mode directory to understand its structure
+ Always validate changes for cohesion and consistency
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/.roo/rules-mode-writer/5_complete_mode_examples.xml b/.roo/rules-mode-writer/5_complete_mode_examples.xml
index 45fd577c53..7c8f8a4cde 100644
--- a/.roo/rules-mode-writer/5_complete_mode_examples.xml
+++ b/.roo/rules-mode-writer/5_complete_mode_examples.xml
@@ -1,96 +1,214 @@
-
-
- Generate OpenAPI documentation for a REST API with user management endpoints
-
+
+
+
+ Edit the test mode to add support for performance testing and benchmarking
+
+
+
+ I want to edit the test mode to add benchmark testing capabilities
+
-
-
- Discover API endpoints
-
-express router app.get app.post app.put app.delete @Route @Get @Post
-
- ]]>
- Found routes in src/routes/users.ts
-
+
+
+ Determine user intent and clarify scope
+
+I understand you want to edit the test mode to add performance testing capabilities. Before we proceed, let me confirm the scope of changes. What specific performance testing features do you need?
+
+Add benchmark testing with Vitest's bench API
+Include performance profiling and memory usage tracking
+Add load testing capabilities for API endpoints
+All of the above - comprehensive performance testing suite
+
+
+ ]]>
+ User selected: Add benchmark testing with Vitest's bench API
+
-
- Analyze endpoint implementation
-
+ Immerse in existing test mode configuration
+
-src/routes/users.ts
+.roomodes
- ]]>
-
+ ]]>
+ Found test mode configuration with current roleDefinition and file restrictions
+
-
- Generate OpenAPI specification
-
+ Explore existing test mode instructions
+
+.roo/rules-test
+true
+
+ ]]>
+
+.roo/rules-test/1_workflow.xml
+
+ ]]>
+ Understood current test workflows and patterns
+
+
+
+ Validate changes for cohesion
+
+I've analyzed the test mode. Adding benchmark testing would require:
+1. Updating the roleDefinition to include performance testing expertise
+2. Modifying file restrictions to include .bench.ts files
+3. Adding new workflow instructions for benchmark creation
+4. Including Vitest bench API examples
+
+This aligns well with the existing testing focus. Should I proceed with all these changes?
+
+Yes, implement all the changes as described
+Start with just the roleDefinition and file restrictions
+Focus only on the workflow instructions first
+Let me review the specific changes before proceeding
+
+
+ ]]>
+ User selected: Yes, implement all the changes as described
+
+
+
+ Update mode configuration in .roomodes
+
+.roomodes
+
+<<<<<<< SEARCH
+ roleDefinition: |-
+ You are Roo, a Vitest testing specialist with deep expertise in: - Writing and maintaining Vitest test suites - Test-driven development (TDD) practices - Mocking and stubbing with Vitest - Integration testing strategies - TypeScript testing patterns - Code coverage analysis - Test performance optimization
+=======
+ roleDefinition: |-
+ You are Roo, a Vitest testing specialist with deep expertise in: - Writing and maintaining Vitest test suites - Test-driven development (TDD) practices - Mocking and stubbing with Vitest - Integration testing strategies - TypeScript testing patterns - Code coverage analysis - Test performance optimization - Benchmark testing with Vitest bench API - Performance profiling and optimization - Memory usage analysis in tests
+>>>>>>> REPLACE
+
+
+ ]]>
+
+
+
+ Update file restrictions to include benchmark files
+
+.roomodes
+
+<<<<<<< SEARCH
+ - fileRegex: (__tests__/.*|__mocks__/.*|\.test\.(ts|tsx|js|jsx)$|\.spec\.(ts|tsx|js|jsx)$|/test/.*|vitest\.config\.(js|ts)$|vitest\.setup\.(js|ts)$)
+ description: Test files, mocks, and Vitest configuration
+=======
+ - fileRegex: (__tests__/.*|__mocks__/.*|\.test\.(ts|tsx|js|jsx)$|\.spec\.(ts|tsx|js|jsx)$|\.bench\.(ts|tsx|js|jsx)$|/test/.*|vitest\.config\.(js|ts)$|vitest\.setup\.(js|ts)$)
+ description: Test files, benchmarks, mocks, and Vitest configuration
+>>>>>>> REPLACE
+
+
+ ]]>
+
+
+
+ Create new benchmark workflow instructions
+
-docs/api/openapi.yaml
+.roo/rules-test/5_benchmark_testing.xml
-openapi: 3.0.0
-info:
- title: User Management API
- version: 1.0.0
- description: API for managing user accounts
+
+
+ Guidelines for creating and maintaining performance benchmarks using Vitest bench API
+
-servers:
- - url: https://api.example.com/v1
- description: Production server
- - url: http://localhost:3000/v1
- description: Development server
+
+
+ Basic benchmark structure
+ {
+ bench('Array.push', () => {
+ const arr = [];
+ for (let i = 0; i < 1000; i++) {
+ arr.push(i);
+ }
+ });
-components:
- schemas:
- User:
- type: object
- required:
- - id
- - email
- properties:
- id:
- type: string
- format: uuid
- email:
- type: string
- format: email
- name:
- type: string
- createdAt:
- type: string
- format: date-time
\ No newline at end of file
+ bench('Array spread', () => {
+ let arr = [];
+ for (let i = 0; i < 1000; i++) {
+ arr = [...arr, i];
+ }
+ });
+});
+ ]]>
+
+
+
+
+ Use meaningful benchmark names that describe what's being measured
+ Include baseline comparisons when optimizing code
+ Run benchmarks in isolation to avoid interference
+ Document performance expectations and thresholds
+
+
+
+38
+
+ ]]>
+
+
+
+ Validate all changes for consistency
+
+I've completed all the changes to add benchmark testing capabilities to the test mode:
+
+1. ✓ Updated roleDefinition to include benchmark expertise
+2. ✓ Modified file restrictions to include .bench.ts files
+3. ✓ Created new benchmark workflow instructions
+4. ✓ Added Vitest bench API examples
+
+All changes are cohesive and align with the existing test mode structure. Would you like me to test any specific aspect of these changes?
+
+Test creating a new benchmark file to verify file permissions
+Review the complete changes one more time
+Everything looks good, the mode is ready
+Create a simple benchmark example to test
+
+
+ ]]>
+
+
+
+
+
+I've successfully enhanced the test mode with benchmark testing capabilities:
+
+1. Updated the roleDefinition to include:
+ - Benchmark testing with Vitest bench API
+ - Performance profiling and optimization
+ - Memory usage analysis in tests
+
+2. Modified file restrictions to include .bench.ts files, allowing the mode to create and edit benchmark files
+
+3. Created new workflow instructions at .roo/rules-test/5_benchmark_testing.xml with:
+ - Basic benchmark patterns
+ - Best practices for performance testing
+ - Example code using Vitest's bench API
+
+All changes have been validated for cohesion and consistency with the existing test mode structure. The mode now supports comprehensive performance testing alongside its existing unit and integration testing capabilities.
+
+
+ ]]>
+
+
+ Always immerse yourself in the existing mode before making changes
+ Use ask_followup_question aggressively to clarify scope and validate changes
+ Validate all changes for cohesion and consistency
+ Update all relevant parts: configuration, file restrictions, and instructions
+ Test changes to ensure they work as expected
+
+
+
\ No newline at end of file
diff --git a/.roo/rules-mode-writer/7_validation_cohesion_checking.xml b/.roo/rules-mode-writer/7_validation_cohesion_checking.xml
new file mode 100644
index 0000000000..a327a1e465
--- /dev/null
+++ b/.roo/rules-mode-writer/7_validation_cohesion_checking.xml
@@ -0,0 +1,201 @@
+
+
+ Guidelines for thoroughly validating mode changes to ensure cohesion,
+ consistency, and prevent contradictions across all mode components.
+
+
+
+
+
+ Every change must be reviewed in context of the entire mode
+
+
+ Read all existing XML instruction files
+ Verify new changes align with existing patterns
+ Check for duplicate or conflicting instructions
+ Ensure terminology is consistent throughout
+
+
+
+
+
+ Use ask_followup_question extensively to clarify ambiguities
+
+
+ User's intent is unclear
+ Multiple interpretations are possible
+ Changes might conflict with existing functionality
+ Impact on other modes needs clarification
+
+
+I notice this change might affect how the mode interacts with file permissions. Should we also update the file regex patterns to match?
+
+Yes, update the file regex to include the new file types
+No, keep the current file restrictions as they are
+Let me explain what file types I need to work with
+Show me the current file restrictions first
+
+
+ ]]>
+
+
+
+
+ Actively search for and resolve contradictions
+
+
+
+ Permission Mismatch
+ Instructions reference tools the mode doesn't have access to
+ Either grant the tool permission or update the instructions
+
+
+ Workflow Conflicts
+ Different XML files describe conflicting workflows
+ Consolidate workflows and ensure single source of truth
+
+
+ Role Confusion
+ Mode's roleDefinition doesn't match its actual capabilities
+ Update roleDefinition to accurately reflect the mode's purpose
+
+
+
+
+
+
+
+ Before making any changes
+
+ Read and understand all existing mode files
+ Create a mental model of current mode behavior
+ Identify potential impact areas
+ Ask clarifying questions about intended changes
+
+
+
+
+ While making changes
+
+ Document each change and its rationale
+ Cross-reference with other files after each change
+ Verify examples still work with new changes
+ Update related documentation immediately
+
+
+
+
+ After changes are complete
+
+
+ All XML files are well-formed and valid
+ File naming follows established patterns
+ Tag names are consistent across files
+ No orphaned or unused instructions
+
+
+
+ roleDefinition accurately describes the mode
+ whenToUse is clear and distinguishable
+ Tool permissions match instruction requirements
+ File restrictions align with mode purpose
+ Examples are accurate and functional
+
+
+
+ Mode boundaries are well-defined
+ Handoff points to other modes are clear
+ No overlap with other modes' responsibilities
+ Orchestrator can correctly route to this mode
+
+
+
+
+
+
+
+ Maintain consistent tone and terminology
+
+ Use the same terms for the same concepts throughout
+ Keep instruction style consistent across files
+ Maintain the same level of detail in similar sections
+
+
+
+
+ Ensure instructions flow logically
+
+ Prerequisites come before dependent steps
+ Complex concepts build on simpler ones
+ Examples follow the explained patterns
+
+
+
+
+ Ensure all aspects are covered without gaps
+
+ Every mentioned tool has usage instructions
+ All workflows have complete examples
+ Error scenarios are addressed
+
+
+
+
+
+
+
+ Before we proceed with changes, I want to ensure I understand the full scope. What is the main goal of these modifications?
+
+ Add new functionality while keeping existing features
+ Fix issues with current implementation
+ Refactor for better organization
+ Expand the mode's capabilities into new areas
+
+
+
+
+
+
+ This change might affect other parts of the mode. How should we handle the impact on [specific area]?
+
+ Update all affected areas to maintain consistency
+ Keep the existing behavior for backward compatibility
+ Create a migration path from old to new behavior
+ Let me review the impact first
+
+
+
+
+
+
+ I've completed the changes and validation. Which aspect would you like me to test more thoroughly?
+
+ Test the new workflow end-to-end
+ Verify file permissions work correctly
+ Check integration with other modes
+ Review all changes one more time
+
+
+
+
+
+
+
+ Instructions reference tools not in the mode's groups
+ Either add the tool group or remove the instruction
+
+
+ File regex doesn't match described file types
+ Update regex pattern to match intended files
+
+
+ Examples don't follow stated best practices
+ Update examples to demonstrate best practices
+
+
+ Duplicate instructions in different files
+ Consolidate to single location and reference
+
+
+
\ No newline at end of file
diff --git a/.roo/rules-pr-fixer/1_workflow.xml b/.roo/rules-pr-fixer/1_workflow.xml
index db74ead7ee..fb487e5fdd 100644
--- a/.roo/rules-pr-fixer/1_workflow.xml
+++ b/.roo/rules-pr-fixer/1_workflow.xml
@@ -45,7 +45,7 @@
Determine if the PR is from a fork by checking 'gh pr view [PR_NUMBER] --repo [owner]/[repo] --json isCrossRepository'.Apply code changes based on review feedback using file editing tools.Fix failing tests by modifying test files or source code as needed.
- For conflict resolution: Use GIT_EDITOR=true for non-interactive rebases, then resolve conflicts via file editing.
+ For conflict resolution: Delegate to merge-resolver mode using new_task with the PR number.If changes affect user-facing content (i18n files, UI components, announcements), delegate translation updates using the new_task tool with translate mode.Review modified files with 'git status --porcelain' to ensure no temporary files are included.Stage files selectively using 'git add -u' (for modified tracked files) or 'git add ' (for new files).
diff --git a/.roo/rules-pr-fixer/2_best_practices.xml b/.roo/rules-pr-fixer/2_best_practices.xml
index 50a8395b9c..2dc5775ced 100644
--- a/.roo/rules-pr-fixer/2_best_practices.xml
+++ b/.roo/rules-pr-fixer/2_best_practices.xml
@@ -41,33 +41,25 @@
- How to correctly escape conflict markers when using apply_diff.
+ Delegate merge conflict resolution to the merge-resolver mode.
-When removing merge conflict markers from files, you must **escape** them in your `SEARCH` section by prepending a backslash (`\`) at the beginning of the line. This prevents the system from mistaking them for actual diff syntax.
+When merge conflicts are detected, do not attempt to resolve them manually. Instead, use the new_task tool to create a task for the merge-resolver mode:
-**Correct Format Example:**
-
-```
-<<<<<<< SEARCH
-content before
-\<<<<<<< HEAD <-- Note the backslash here
-content after
-=======
-replacement content
->>>>>>> REPLACE
+```xml
+
+merge-resolver
+#[PR_NUMBER]
+
```
-Without escaping, the system confuses your content with real diff markers.
+The merge-resolver mode will:
+- Checkout the PR branch
+- Perform the rebase
+- Intelligently resolve conflicts based on commit history and intent
+- Push the resolved changes
+- Return control back to pr-fixer mode
-You may include multiple diff blocks in a single request, but if any of the following markers appear within your `SEARCH` or `REPLACE` content, they must be escaped:
-
-```
-\<<<<<<< SEARCH
-\=======
-\>>>>>>> REPLACE
-```
-
-Only these three need to be escaped when used in content.
+This ensures consistent and intelligent conflict resolution across all PRs.
diff --git a/.roo/rules-pr-fixer/3_common_patterns.xml b/.roo/rules-pr-fixer/3_common_patterns.xml
index 1c6c0bcf65..4ef2a34b9e 100644
--- a/.roo/rules-pr-fixer/3_common_patterns.xml
+++ b/.roo/rules-pr-fixer/3_common_patterns.xml
@@ -27,32 +27,26 @@
Commands to detect merge conflicts.
- Fetch latest main branch
- git fetch origin main
- Check if rebase would create conflicts
- git rebase --dry-run origin/main
+ Check PR mergeable status
+ gh pr view --json mergeable,mergeStateStatus
+ If mergeable is false or mergeStateStatus is CONFLICTING, delegate to merge-resolver
-
- Rebase operations using GIT_EDITOR to prevent interactive prompts.
+
+ Delegate merge conflict resolution to the merge-resolver mode.
- git checkout
- GIT_EDITOR=true git rebase main
- If conflicts occur, resolve them manually then use 'git rebase --continue'
- git push --force-with-lease
+ When conflicts are detected, create a new task for merge-resolver
+
+merge-resolver
+#
+
+ ]]>
+ Wait for merge-resolver to complete before continuing with other fixes
-
- Check current conflict status without interactive input.
-
- git status --porcelain
- git diff --name-only --diff-filter=U
- List files with unresolved conflicts
- git ls-files --unmerged
-
- Check out a pull request branch locally.
diff --git a/.roo/rules-pr-fixer/4_tool_usage.xml b/.roo/rules-pr-fixer/4_tool_usage.xml
index 90d20a0382..d8ce7e8859 100644
--- a/.roo/rules-pr-fixer/4_tool_usage.xml
+++ b/.roo/rules-pr-fixer/4_tool_usage.xml
@@ -66,9 +66,9 @@
Push to appropriate remote: 'git push --force-with-lease [remote] [branch]'
- Use 'GIT_EDITOR=true git rebase main' to start rebase
- If conflicts occur, edit files to resolve them
- Use 'git add .' and 'git rebase --continue' to proceed
+ Delegate to merge-resolver mode using new_task
+ Provide the PR number (e.g., "#123") as the message
+ The merge-resolver mode will handle all conflict resolution automatically
@@ -114,6 +114,26 @@ Files modified:
- webview-ui/src/components/settings/ApiSettings.tsx: Updated button text from "Save" to "Save Configuration"
Please ensure all supported languages (ca, de, es, fr, hi, id, it, ja, ko, nl, pl, pt-BR, ru, tr, vi, zh-CN, zh-TW) are updated with appropriate translations for these changes.
+
+ ]]>
+
+
+
+
+ Use when PR has merge conflicts that need to be resolved.
+ Simply provide the PR number (e.g., "#123") as the message.
+ The merge-resolver mode will handle checkout, rebase, conflict resolution, and pushing.
+ Wait for merge-resolver to complete before continuing with other PR fixes.
+
+
+ When gh pr view shows mergeable: false or mergeStateStatus: CONFLICTING
+ When git rebase fails with conflicts
+ When git status shows unmerged paths
+
+
+merge-resolver
+#1234
]]>
diff --git a/.roo/rules-pr-fixer/5_examples.xml b/.roo/rules-pr-fixer/5_examples.xml
index 03fa287c16..640e6398ad 100644
--- a/.roo/rules-pr-fixer/5_examples.xml
+++ b/.roo/rules-pr-fixer/5_examples.xml
@@ -200,4 +200,105 @@ Ensure consistency across all language files and maintain the same context and t
Use gh pr view --json to get structured data about PR properties.
+
+
+
+ A pull request has merge conflicts that need to be resolved before other fixes can be applied.
+
+
+
+ Fix PR #5678 in RooCodeInc/Roo-Code - it has merge conflicts and failing tests.
+
+
+
+
+ Get PR details and check merge status.
+
+
+gh pr view 5678 --repo RooCodeInc/Roo-Code --json number,title,author,state,body,url,headRefName,baseRefName,mergeable,mergeStateStatus
+
+
+ Identify that mergeable is false and mergeStateStatus is CONFLICTING.
+
+
+
+ Delegate merge conflict resolution to merge-resolver mode.
+
+
+merge-resolver
+#5678
+
+
+ The merge-resolver mode will handle checkout, rebase, conflict resolution, and pushing the resolved changes.
+
+
+
+ After merge-resolver completes, check PR status again.
+
+
+gh pr view 5678 --repo RooCodeInc/Roo-Code --json mergeable,mergeStateStatus
+
+
+ Verify that the PR is now mergeable after conflict resolution.
+
+
+
+ Check CI status for any remaining failures.
+
+
+gh pr checks 5678 --repo RooCodeInc/Roo-Code
+
+
+ Identify any tests that are still failing after the merge conflict resolution.
+
+
+
+ If tests are still failing, proceed with fixing them.
+
+
+gh pr checkout 5678 --repo RooCodeInc/Roo-Code --force
+
+
+ Now that conflicts are resolved, we can focus on fixing the failing tests.
+
+
+
+ Apply test fixes and push changes.
+
+
+git add -u && git commit -m "fix: resolve failing tests after merge conflict resolution"
+
+
+ Commit the test fixes separately from the merge conflict resolution.
+
+
+
+ Push changes and monitor CI status.
+
+
+git push --force-with-lease origin [branch_name]
+
+
+ Push the test fixes to update the PR.
+
+
+
+ Monitor CI checks in real-time.
+
+
+gh pr checks 5678 --repo RooCodeInc/Roo-Code --watch
+
+
+ Watch CI checks continuously until all tests pass.
+
+
+
+
+ Always check for merge conflicts before attempting other fixes.
+ Delegate merge conflict resolution to the specialized merge-resolver mode.
+ The merge-resolver mode handles the entire conflict resolution workflow including pushing.
+ After conflict resolution, continue with other PR fixes like failing tests.
+ Keep conflict resolution commits separate from other fix commits for clarity.
+
+
diff --git a/.roo/rules-pr-reviewer/1_orchestrator_workflow.xml b/.roo/rules-pr-reviewer/1_orchestrator_workflow.xml
deleted file mode 100644
index 8bb94694d6..0000000000
--- a/.roo/rules-pr-reviewer/1_orchestrator_workflow.xml
+++ /dev/null
@@ -1,202 +0,0 @@
-
-
- This workflow orchestrates a comprehensive pull request review process by delegating
- specialized analysis tasks to appropriate modes while maintaining context through
- structured report files. The orchestrator ensures critical review coverage while
- avoiding redundant feedback. All GitHub operations are performed using the GitHub CLI.
-
-
-
-
- Parse PR Information and Initialize Context
-
- Extract PR information from user input (URL or PR number).
- Create context directory and tracking files.
- If called by another mode (Issue Fixer, PR Fixer), set calledByMode field.
-
-
- - Parse PR URL or number from user input
- - Create directory: .roo/temp/pr-[PR_NUMBER]/
- - Initialize review-context.json with PR metadata
- - Check if called by another mode and record it
-
-
-
-
-
-
- Fetch PR Details and Context
-
- Use GitHub CLI to fetch comprehensive PR details.
-
-
- gh pr view [PR_NUMBER] --repo [owner]/[repo] --json number,title,author,state,body,url,headRefName,baseRefName,files,additions,deletions,changedFiles
-
- .roo/temp/pr-[PR_NUMBER]/pr-metadata.json
-
-
-
- Fetch Linked Issue
-
- If PR references an issue, fetch its details for context.
-
-
- gh issue view [issue_number] --repo [owner]/[repo] --json number,title,body,author,state
-
- .roo/temp/pr-[PR_NUMBER]/linked-issue.json
-
-
-
- Fetch Existing Comments and Reviews
-
- CRITICAL: Get all existing feedback to avoid redundancy.
-
-
- gh pr view [PR_NUMBER] --repo [owner]/[repo] --json comments --jq '.comments'
- gh pr view [PR_NUMBER] --repo [owner]/[repo] --json reviews --jq '.reviews'
-
- .roo/temp/pr-[PR_NUMBER]/existing-feedback.json
-
-
-
- Check Out PR Locally
- gh pr checkout [PR_NUMBER] --repo [owner]/[repo]
- Enable local code analysis and pattern comparison
-
-
-
-
-
- Delegate Pattern Analysis
-
- Create a subtask to analyze code patterns and organization.
-
-
- code
-
- - Identifying similar existing features/components
- - Checking if implementations follow established patterns
- - Finding potential code redundancy
- - Verifying test organization
- - Checking file/directory structure consistency
-
-
-
-
-
-
- Delegate Architecture Review
-
- Create a subtask for architectural analysis.
-
-
- architect
-
- - Module boundary violations
- - Dependency management issues
- - Separation of concerns
- - Potential circular dependencies
- - Overall architectural consistency
-
-
-
-
-
-
- Delegate Test Coverage Analysis
-
- If test files are modified or added, delegate test analysis.
-
-
- test
-
- - Test organization and location
- - Test coverage adequacy
- - Test naming conventions
- - Mock usage patterns
- - Edge case coverage
-
-
-
-
-
-
-
-
- Synthesize Findings
-
- Collect all delegated analysis results and create comprehensive review.
-
-
- - Read all analysis files from .roo/temp/pr-[PR_NUMBER]/
- - Identify critical issues vs suggestions
- - Check against existing comments to avoid redundancy
- - Prioritize findings by impact
-
-
-
-
- Create Final Review Report
-
- Generate comprehensive review report with all findings.
-
-
-
- - Executive Summary
- - Critical Issues (must fix)
- - Pattern Inconsistencies
- - Redundancy Findings
- - Architecture Concerns
- - Test Coverage Issues
- - Minor Suggestions
-
-
-
-
-
-
- Present Review to User
-
- Show the review findings and ask for action.
-
-
-
- Only present the analysis report, do not comment on PR
-
-
- Ask user if they want to post the review as a comment
-
-
-
-
-
- Post Review Comment (if approved)
-
- If user approves and not called by another mode, post review using GitHub CLI.
-
-
- gh pr comment [PR_NUMBER] --repo [owner]/[repo] --body-file .roo/temp/pr-[PR_NUMBER]/final-review.md
-
-
-
-
-
-
-
- Inform user to run 'gh auth login' and check authentication status
-
-
- Verify PR number and repository, ask user to confirm details
-
-
- Wait briefly and retry, inform user about rate limiting
-
-
-
- Continue with available analysis and note limitations
-
-
- Always save intermediate results to temp files
-
-
-
\ No newline at end of file
diff --git a/.roo/rules-pr-reviewer/1_workflow.xml b/.roo/rules-pr-reviewer/1_workflow.xml
new file mode 100644
index 0000000000..0594e191be
--- /dev/null
+++ b/.roo/rules-pr-reviewer/1_workflow.xml
@@ -0,0 +1,458 @@
+
+
+ Initialize Review Process
+
+ Create a todo list to track the PR review workflow:
+
+
+
+ [ ] 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
+
+
+
+ This helps track progress through the review process and ensures all steps are completed.
+
+
+
+
+ Fetch Pull Request Information
+
+ 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 CLI to fetch the PR details:
+
+
+ gh pr view [PR_NUMBER] --repo [owner]/[repo] --json number,title,body,author,state,url,headRefName,baseRefName,mergeable,isDraft,createdAt,updatedAt
+
+
+ Parse the JSON output to understand the PR's current state and metadata.
+
+
+
+ [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
+
+
+
+
+
+
+ Fetch Associated Issue (If Any)
+
+ 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 CLI to fetch its details:
+
+
+ gh issue view [issue_number] --repo [owner]/[repo] --json number,title,body,author,state,url,createdAt,updatedAt,comments
+
+
+ The issue description and comments can provide valuable context for the review.
+
+
+
+ [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
+
+
+
+
+
+
+ Fetch Pull Request Diff
+
+ Get the pull request diff to understand the changes:
+
+
+ gh pr diff [PR_NUMBER] --repo [owner]/[repo]
+
+
+ This will show the complete diff of all changes in the PR.
+
+
+
+ [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
+
+
+
+
+
+
+ Fetch Existing PR Comments and Reviews
+
+ IMPORTANT: Before reviewing any code, first get all existing comments and reviews to understand what feedback has already been provided:
+
+ Fetch all review comments:
+
+ gh pr view [PR_NUMBER] --repo [owner]/[repo] --comments
+
+
+ Also fetch review details:
+
+ gh pr reviews [PR_NUMBER] --repo [owner]/[repo]
+
+
+ Create a mental or written list of:
+ - All issues/suggestions that have been raised
+ - The specific files and line numbers mentioned
+ - Whether comments appear to be resolved or still pending
+
+ This information will guide your review to avoid duplicate feedback.
+
+
+
+ [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
+
+
+
+
+
+
+ Check Out Pull Request Locally
+
+ Use the GitHub CLI to check out the pull request locally:
+
+
+ gh pr checkout [PR_NUMBER] --repo [owner]/[repo]
+
+
+ This allows you to:
+ - Navigate the actual code structure
+ - Understand how changes interact with existing code
+ - Get better context for your review
+
+
+
+ [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
+
+
+
+
+
+
+ Verify Existing Comments Against Current Code
+
+ Now that you have the code checked out locally and know what comments exist:
+
+ 1. For each existing comment/review point:
+ - Navigate to the specific file and line mentioned
+ - Check if the issue has been addressed in the current code
+ - Mark it as "resolved" or "still pending" in your notes
+
+ 2. Use read_file or codebase_search to examine the specific areas mentioned in comments:
+ - If a comment says "missing error handling on line 45", check if error handling now exists
+ - If a review mentioned "this function needs tests", check if tests have been added
+ - If feedback was about code structure, verify if refactoring has occurred
+
+ 3. Keep track of:
+ - Comments that have been addressed (DO NOT repeat these)
+ - Comments that are still valid (you may reinforce these if critical)
+ - 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.
+
+
+
+ [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
+
+
+
+
+
+
+ Perform Comprehensive Review
+
+ Review the pull request thoroughly:
+ - Verify that the changes are directly related to the linked issue and do not include unrelated modifications.
+ - Focus primarily on the changes made in the PR.
+ - Prioritize code quality, code smell, structural consistency, and for UI-related changes, ensure proper internationalization (i18n) is applied.
+ - Watch for signs of technical debt (e.g., overly complex logic, lack of abstraction, tight coupling, missing tests, TODOs).
+ - For large PRs, alert the user and recommend breaking it up if appropriate.
+ - NEVER run tests or execute code in PR Reviewer mode. The repository likely has automated testing. Your role is limited to:
+ - Code review and analysis
+ - Leaving review comments
+ - Checking code quality and structure
+ - Reviewing test coverage and quality (without execution)
+
+ Document your findings in a numbered list format:
+ 1. Code quality issues
+ 2. Structural improvements
+ 3. Missing tests or documentation
+ 4. Potential bugs or edge cases
+ 5. Performance concerns
+ 6. Security considerations
+ 7. Internationalization (i18n) issues
+ 8. Technical debt indicators
+
+
+
+ [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
+
+
+
+
+
+
+ Prepare Review Comments
+
+ 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 7
+ - Only comment on NEW issues or UNRESOLVED existing issues
+ - Never repeat feedback that has been addressed in the current code
+
+ Your suggestions should:
+ - Use a **friendly, curious tone** — prefer asking: "Is this intentional?" or "Could we approach this differently to improve X?"
+ - Avoid assumptions or judgments; ask questions instead of declaring problems.
+ - Skip ALL praise and positive comments. Focus exclusively on issues that need attention.
+ - Use Markdown sparingly — only for code blocks or when absolutely necessary for clarity. Avoid markdown headings (###, ##, etc.) entirely.
+ - Avoid including internal evaluation terminology (e.g., scores or internal tags) in public comments.
+
+ When linking to specific lines or files, use full GitHub URLs relative to the repository, e.g.
+ `https://github.com/RooCodeInc/Roo-Code/blob/main/src/api/providers/human-relay.ts#L50`.
+
+ Present your findings as a numbered list organized by priority:
+
+ **Critical Issues (Must Fix):**
+ 1. [Issue description with file/line reference]
+ 2. [Issue description with file/line reference]
+
+ **Important Suggestions (Should Consider):**
+ 3. [Suggestion with rationale]
+ 4. [Suggestion with rationale]
+
+ **Minor Improvements (Nice to Have):**
+ 5. [Improvement suggestion]
+ 6. [Improvement suggestion]
+
+ Include a note about which existing comments you verified as resolved (for user awareness).
+
+
+
+ [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
+
+
+
+
+
+
+ Preview Review with User
+
+ Always show the user a preview of your review suggestions and comments before taking any action.
+ Present your findings as a numbered list clearly for the user before submitting comments.
+
+
+ I've completed my review of PR #[number]. Here's what I found:
+
+ [If applicable: **Existing comments that have been resolved:**
+ - Comment about X on file Y - now addressed
+ - Suggestion about Z - implemented]
+
+ **Review Findings:**
+
+ **Critical Issues (Must Fix):**
+ 1. [Specific issue with file/line reference]
+ 2. [Specific issue with file/line reference]
+
+ **Important Suggestions (Should Consider):**
+ 3. [Suggestion with rationale]
+ 4. [Suggestion with rationale]
+
+ **Minor Improvements (Nice to Have):**
+ 5. [Improvement suggestion]
+ 6. [Improvement suggestion]
+
+ Would you like me to:
+
+ Create a comprehensive review with all comments
+ Create individual tasks for each suggestion using new_task
+ Let me modify the suggestions first
+ Skip submission - just wanted the analysis
+
+
+
+
+
+ [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
+
+
+
+
+
+
+ Submit Review
+
+ 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):
+
+ gh pr comment [PR_NUMBER] --repo [owner]/[repo] --body "[comment text]"
+
+
+ 2. Or create a general review comment summarizing all findings:
+
+ gh pr review [PR_NUMBER] --repo [owner]/[repo] --comment --body "[review summary with all findings]"
+
+
+ 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.
+
+
+
+ [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
+
+
+
+
+
+
+ Create Tasks for Suggestions (Optional)
+
+ If the user chooses to create individual tasks for each suggestion, use the new_task tool to create separate tasks:
+
+ For each numbered finding from your review:
+ 1. Determine the appropriate mode based on the type of work needed:
+ - Use "code" mode for bug fixes, implementation changes, or refactoring
+ - Use "translate" mode for internationalization (i18n) issues
+ - Use "test" mode for missing or inadequate test coverage
+ - Use "docs-extractor" mode for documentation issues
+ - Use "architect" mode for structural or design improvements
+ - Use "debug" mode for investigating potential bugs
+
+ 2. Create a clear, actionable task message that includes:
+ - The specific issue or suggestion
+ - The file(s) and line numbers affected
+ - Any relevant context from the PR
+ - The expected outcome
+
+ 3. Use the new_task tool for each suggestion:
+
+ [appropriate mode based on task type]
+ Fix [issue type] in [file]: [specific description of what needs to be done]
+
+
+ Example task creation:
+
+ code
+ Fix missing error handling in src/api/users.ts:45-52. The getUserById function should handle cases where the user is not found and return an appropriate error response.
+
+
+
+ translate
+ Add missing i18n translations for new user profile fields in src/components/UserProfile.tsx. The fields 'bio', 'location', and 'website' need to be wrapped with translation functions.
+
+
+ After creating all tasks, provide a summary:
+ "I've created [X] individual tasks for the review findings:
+ - [Y] code fixes/improvements
+ - [Z] translation/i18n tasks
+ - [etc.]
+
+ Each task contains the specific context and requirements for addressing the issue."
+
+
+
\ No newline at end of file
diff --git a/.roo/rules-pr-reviewer/2_best_practices.xml b/.roo/rules-pr-reviewer/2_best_practices.xml
new file mode 100644
index 0000000000..d4aa27736c
--- /dev/null
+++ b/.roo/rules-pr-reviewer/2_best_practices.xml
@@ -0,0 +1,35 @@
+
+ - ALWAYS create a todo list at the start to track the review workflow (Step 1)
+ - Use GitHub CLI (`gh`) commands instead of MCP tools for all GitHub operations
+ - ALWAYS fetch existing comments and reviews BEFORE reviewing any code (Step 5)
+ - Create a list of all existing feedback before starting your review
+ - Check out the PR locally using `gh pr checkout` for better context understanding
+ - Systematically verify each existing comment against the current code (Step 7)
+ - Track which comments are resolved vs still pending
+ - Only provide feedback on NEW issues or UNRESOLVED existing issues
+ - Never duplicate feedback that has already been addressed
+ - Always fetch and review the entire PR diff before commenting
+ - Check for and review any associated issue for context
+ - Focus on the changes made, not unrelated code
+ - Ensure all changes are directly related to the linked issue
+ - Use a friendly, curious tone in all comments
+ - Ask questions rather than making assumptions - there may be intentions behind the code choices
+ - Provide actionable feedback with specific suggestions
+ - Focus exclusively on issues and improvements - skip all praise or positive comments
+ - Use minimal markdown - avoid headings (###, ##) and excessive formatting
+ - Only use markdown for code blocks or when absolutely necessary for clarity
+ - Consider the PR's scope - suggest breaking up large PRs
+ - Verify proper i18n implementation for UI changes
+ - Check for test coverage without executing tests
+ - Look for signs of technical debt and code smells
+ - Ensure consistency with existing code patterns
+ - Link to specific lines using full GitHub URLs
+ - Present findings in a numbered list format for clarity
+ - Group feedback by priority (critical, important, minor)
+ - Always preview comments with the user before submitting
+ - Offer the option to create individual tasks for each suggestion
+ - When creating tasks, choose the appropriate mode for each type of work
+ - Include specific context and file references in each task
+ - Update the todo list after each major step to track progress
+ - Note: GitHub CLI has limited support for inline review comments
+
\ No newline at end of file
diff --git a/.roo/rules-pr-reviewer/2_critical_review_guidelines.xml b/.roo/rules-pr-reviewer/2_critical_review_guidelines.xml
deleted file mode 100644
index ebccff3dbc..0000000000
--- a/.roo/rules-pr-reviewer/2_critical_review_guidelines.xml
+++ /dev/null
@@ -1,208 +0,0 @@
-
-
- These guidelines ensure PR reviews are appropriately critical while remaining
- constructive. The goal is to maintain high code quality and consistency
- across the codebase by identifying issues that might be overlooked in a
- less thorough review.
-
-
-
-
- Always support criticism with evidence from the codebase
-
- Instead of: "This doesn't follow our patterns"
- Say: "This implementation differs from the pattern used in src/api/handlers/*.ts
- where we consistently use the factory pattern for endpoint creation"
-
-
-
-
- Reference similar existing implementations
-
- 1. Find 2-3 examples of similar features
- 2. Identify the common patterns they follow
- 3. Explain how the PR deviates from these patterns
- 4. Suggest alignment with existing approaches
-
-
-
-
- Challenge architectural choices when appropriate
-
- - "Why was this implemented as a separate module instead of extending the existing X module?"
- - "This introduces a new pattern for Y. Have we considered using the established pattern from Z?"
- - "This creates a circular dependency with module A. Could we restructure to maintain cleaner boundaries?"
-
-
-
-
-
-
- Do new endpoints follow the same structure as existing ones?
- Are error responses consistent with other endpoints?
- Is authentication/authorization handled the same way?
- Are request validations following established patterns?
-
-
-
- Do components follow the same file structure (types, helpers, component)?
- Are props interfaces defined consistently?
- Is state management approach consistent with similar components?
- Are hooks used in the same patterns as elsewhere?
-
-
-
- Are test files in the correct directory structure?
- Do test descriptions follow the same format?
- Are mocking strategies consistent with other tests?
- Is test data generation following established patterns?
-
-
-
- Could this utility already exist elsewhere?
- Should this be added to an existing utility module?
- Does the naming convention match other utilities?
- Are similar transformations already implemented?
-
-
-
-
-
-
- Search for similar functionality by behavior
-
- If PR adds a "formatDate" function, search for:
- - "date format"
- - "format.*date"
- - "dateFormat"
- - Existing date manipulation utilities
-
-
-
-
- Search for similar code patterns
-
- If PR adds error handling, search for:
- - try/catch patterns in similar contexts
- - Error boundary implementations
- - Existing error utilities
-
-
-
-
- Check what similar files import
-
- Look at imports in files with similar purposes
- to discover existing utilities that could be reused
-
-
-
-
-
-
- Reimplementing existing utilities
-
- - String manipulation functions
- - Array transformations
- - Date formatting
- - API response transformations
-
-
-
-
- Creating similar components
-
- - Modal variations that could use a base modal
- - Form inputs that could extend existing inputs
- - List components with slight variations
-
-
-
-
- Repeating business logic
-
- - Validation rules implemented multiple times
- - Permission checks duplicated across files
- - Data transformation logic repeated
-
-
-
-
-
-
-
-
- "I notice this [feature] implements [pattern X], but our existing
- [similar features] consistently use [pattern Y]. For example:
- - [Link to example 1]
- - [Link to example 2]
-
- Consider aligning with the established pattern to maintain consistency.
- If there's a specific reason for the deviation, it would be helpful
- to document it."
-
-
-
-
-
- "This functionality appears to overlap with existing code in
- [file/module]. Specifically, [existing function/component] already
- handles [similar use case].
-
- Could we either:
- 1. Reuse the existing implementation
- 2. Extend it to cover this use case
- 3. Extract a shared utility if both are needed"
-
-
-
-
-
- "For better code organization, this [file/component/test] would
- fit better in [suggested location] alongside [similar items].
- This follows our pattern where [explanation of pattern]."
-
-
-
-
-
- "I see the tests are in [current location], but our other
- [type] tests are organized in [correct location]. Moving them
- would make them easier to find and maintain consistency with
- tests like [example test files]."
-
-
-
-
-
-
- Issues that should block PR approval
-
- - Security vulnerabilities
- - Breaking changes without migration path
- - Significant pattern violations that would confuse future developers
- - Major redundancy that adds maintenance burden
-
-
-
-
- Important issues that need addressing
-
- - Test files in wrong location
- - Inconsistent error handling
- - Missing critical test cases
- - Code organization that violates module boundaries
-
-
-
-
- Improvements that would benefit the codebase
-
- - Minor pattern inconsistencies
- - Opportunities for code reuse
- - Additional test coverage
- - Documentation improvements
-
-
-
-
\ No newline at end of file
diff --git a/.roo/rules-pr-reviewer/3_common_mistakes_to_avoid.xml b/.roo/rules-pr-reviewer/3_common_mistakes_to_avoid.xml
new file mode 100644
index 0000000000..2b97f50845
--- /dev/null
+++ b/.roo/rules-pr-reviewer/3_common_mistakes_to_avoid.xml
@@ -0,0 +1,33 @@
+
+ - Not creating a todo list at the start to track the review workflow
+ - Using MCP tools instead of GitHub CLI commands for GitHub operations
+ - Starting to review code WITHOUT first fetching existing comments and reviews
+ - Failing to create a list of existing feedback before reviewing
+ - Not systematically checking each existing comment against the current code
+ - Repeating feedback that has already been addressed in the current code
+ - Ignoring existing PR comments or failing to verify if they have already been resolved
+ - Running tests or executing code during review
+ - Making judgmental or harsh comments
+ - Providing feedback on code outside the PR's scope
+ - Overlooking unrelated changes not tied to the main issue
+ - Including ANY praise or positive comments - focus only on issues
+ - Using markdown headings (###, ##, #) in review comments
+ - Using excessive markdown formatting when plain text would suffice
+ - Submitting comments without user preview/approval
+ - Forgetting to check for an associated issue for additional context
+ - Missing critical security or performance issues
+ - Not checking for proper i18n in UI changes
+ - Failing to suggest breaking up large PRs
+ - Using internal evaluation terminology in public comments
+ - Not providing actionable suggestions for improvements
+ - Reviewing only the diff without local context
+ - Making assumptions instead of asking clarifying questions about potential intentions
+ - Forgetting to link to specific lines with full GitHub URLs
+ - Not presenting findings in a clear numbered list format
+ - Failing to offer the task creation option for addressing suggestions
+ - Creating tasks without specific context or file references
+ - Choosing inappropriate modes when creating tasks for suggestions
+ - Not updating the todo list after completing each step
+ - Forgetting that GitHub CLI has limited support for inline review comments
+ - Not including --repo flag when using gh commands for non-default repositories
+
\ No newline at end of file
diff --git a/.roo/rules-pr-reviewer/3_delegation_patterns.xml b/.roo/rules-pr-reviewer/3_delegation_patterns.xml
deleted file mode 100644
index 9632c7dcf7..0000000000
--- a/.roo/rules-pr-reviewer/3_delegation_patterns.xml
+++ /dev/null
@@ -1,238 +0,0 @@
-
-
- Patterns for effectively delegating analysis tasks to specialized modes
- while maintaining context and ensuring comprehensive review coverage.
-
-
-
-
-
- When PR contains new features or significant code changes
-
- code
-
- Analyze the following changed files for pattern consistency:
- [List of changed files]
-
- Please focus on:
- 1. Finding similar existing implementations in the codebase
- 2. Identifying established patterns for this type of feature
- 3. Checking if the new code follows these patterns
- 4. Looking for potential code redundancy
- 5. Verifying proper file organization
-
- Use codebase_search and search_files to find similar code.
- Document all findings with specific examples and file references.
-
- Save your analysis to: .roo/temp/pr-[PR_NUMBER]/pattern-analysis.md
-
- Format the output as:
- ## Pattern Analysis for PR #[PR_NUMBER]
- ### Similar Existing Implementations
- ### Established Patterns
- ### Pattern Deviations
- ### Redundancy Findings
- ### Organization Issues
-
-
-
-
-
- When PR modifies core modules, adds new modules, or changes dependencies
-
- architect
-
- Review the architectural implications of PR #[PR_NUMBER]:
-
- Changed files:
- [List of changed files]
-
- PR Description:
- [PR description]
-
- Please analyze:
- 1. Module boundary adherence
- 2. Dependency management (new dependencies, circular dependencies)
- 3. Separation of concerns
- 4. Impact on system architecture
- 5. Consistency with architectural patterns
-
- Save your findings to: .roo/temp/pr-[PR_NUMBER]/architecture-review.md
-
- Format as:
- ## Architecture Review for PR #[PR_NUMBER]
- ### Module Boundaries
- ### Dependency Analysis
- ### Architectural Concerns
- ### Recommendations
-
-
-
-
-
- When PR adds or modifies test files
-
- test
-
- Analyze test changes in PR #[PR_NUMBER]:
-
- Test files changed:
- [List of test files]
-
- Please review:
- 1. Test file organization and location
- 2. Test naming conventions
- 3. Coverage of edge cases
- 4. Mock usage patterns
- 5. Consistency with existing test patterns
-
- Compare with similar existing tests in the codebase.
-
- Save analysis to: .roo/temp/pr-[PR_NUMBER]/test-analysis.md
-
- Format as:
- ## Test Analysis for PR #[PR_NUMBER]
- ### Test Organization
- ### Coverage Assessment
- ### Pattern Consistency
- ### Recommendations
-
-
-
-
-
- When PR modifies UI components or adds new ones
-
- design-engineer
-
- Review UI changes in PR #[PR_NUMBER]:
-
- UI files changed:
- [List of UI files]
-
- Please analyze:
- 1. Component structure consistency
- 2. Styling approach (Tailwind usage)
- 3. Accessibility considerations
- 4. i18n implementation
- 5. Component reusability
-
- Save findings to: .roo/temp/pr-[PR_NUMBER]/ui-review.md
-
-
-
-
-
-
- Always save delegation results to temp files
- .roo/temp/pr-[PR_NUMBER]/[analysis-type].md
-
-
-
- Request structured markdown output from delegates
-
- - Easy to parse and combine
- - Consistent formatting
- - Clear section headers
-
-
-
-
- Include relevant context in delegation requests
-
- - PR number and description
- - List of changed files
- - Specific areas of concern
- - Output file location
-
-
-
-
-
-
- Delegate tasks one at a time, using results to inform next delegation
-
- 1. Pattern analysis first
- 2. If patterns violated, delegate architecture review
- 3. If tests affected, delegate test analysis
-
-
-
-
- Delegate multiple independent analyses simultaneously
-
- - Pattern analysis (code mode)
- - Test analysis (test mode)
- - UI review (design-engineer mode)
-
-
-
-
- Only delegate based on file types changed
-
- - If *.test.ts changed -> delegate to test mode
- - If src/components/* changed -> delegate to design-engineer
- - If package.json changed -> delegate to architect
-
-
-
-
-
-
- Read all analysis files from temp directory
-
- - pattern-analysis.md
- - architecture-review.md
- - test-analysis.md
- - ui-review.md
-
-
-
-
- Find common issues across analyses
-
- - Pattern violations mentioned multiple times
- - Redundancy identified by different modes
- - Organizational issues
-
-
-
-
- Categorize by severity
-
- - Critical (blocks PR)
- - Important (should fix)
- - Suggestions (nice to have)
-
-
-
-
- Combine all findings into final review
-
- ## PR Review Summary
- ### Critical Issues
- ### Pattern Inconsistencies
- ### Architecture Concerns
- ### Test Coverage
- ### Suggestions
-
-
-
-
-
-
- Continue with available analyses
- Document which analyses couldn't be completed
-
-
-
- Perform basic analysis in orchestrator mode
- Note limitations in final report
-
-
-
- Use completed analyses
- Set reasonable time limits for delegations
-
-
-
\ No newline at end of file
diff --git a/.roo/rules-pr-reviewer/4_github_operations.xml b/.roo/rules-pr-reviewer/4_github_operations.xml
deleted file mode 100644
index ad1fdc4459..0000000000
--- a/.roo/rules-pr-reviewer/4_github_operations.xml
+++ /dev/null
@@ -1,224 +0,0 @@
-
-
- Guidelines for handling GitHub operations using the GitHub CLI (gh).
- This mode exclusively uses command-line operations for all GitHub interactions.
-
-
-
-
- GitHub CLI must be installed and authenticated
- gh auth status
- https://cli.github.com/
-
-
- User must be authenticated with appropriate permissions
- gh auth login
-
-
-
-
-
- Fetch comprehensive PR metadata
- gh pr view [PR_NUMBER] --repo [owner]/[repo] --json number,title,author,state,body,url,headRefName,baseRefName,files,additions,deletions,changedFiles
- JSON
- .roo/temp/pr-[PR_NUMBER]/pr-metadata.json
-
-
-
- Get the full diff of PR changes
- gh pr diff [PR_NUMBER] --repo [owner]/[repo]
- .roo/temp/pr-[PR_NUMBER]/pr.diff
-
-
-
- List all files changed in the PR
- gh pr view [PR_NUMBER] --repo [owner]/[repo] --json files --jq '.files[].path'
- Line-separated file paths
-
-
-
- Get all comments on the PR
- gh pr view [PR_NUMBER] --repo [owner]/[repo] --json comments --jq '.comments'
- JSON array of comments
-
-
-
- Get all reviews on the PR
- gh pr view [PR_NUMBER] --repo [owner]/[repo] --json reviews --jq '.reviews'
- JSON array of reviews
-
-
-
- Check out PR branch locally for analysis
- gh pr checkout [PR_NUMBER] --repo [owner]/[repo]
- This switches the current branch to the PR branch
-
-
-
- Post a comment on the PR
- gh pr comment [PR_NUMBER] --repo [owner]/[repo] --body-file [file_path]
- gh pr comment [PR_NUMBER] --repo [owner]/[repo] --body "[comment_text]"
-
-
-
- Create a PR review with comments
- gh pr review [PR_NUMBER] --repo [owner]/[repo] --comment --body-file [review_file]
-
-
-
-
-
-
-
-
- Get issue details (for linked issues)
- gh issue view [issue_number] --repo [owner]/[repo] --json number,title,body,author,state
- JSON
-
-
-
-
-
-
- Error contains "authentication" or "not logged in"
-
-
- 1. Inform user about auth issue
- 2. Suggest running: gh auth login
- 3. Check status with: gh auth status
-
-
-
-
-
- Error contains "rate limit" or "API rate limit exceeded"
-
-
- 1. Wait 30-60 seconds before retry
- 2. Inform user about rate limiting
- 3. Consider reducing API calls
-
-
-
-
-
- Error contains "not found" or "could not find pull request"
-
-
- 1. Verify PR number and repository format
- 2. Check if repository is accessible
- 3. Ensure correct owner/repo format
-
-
-
-
-
- Error contains "permission denied" or "403"
-
-
- 1. Check repository permissions
- 2. Verify authentication scope
- 3. May need to re-authenticate with proper scopes
-
-
-
-
-
-
- Always save command outputs to temp files
- Preserve data for analysis and recovery
-
-
-
- Use jq for JSON parsing when available
-
- gh pr view --json files --jq '.files[].path'
-
-
-
-
- For PRs with many files, save outputs to files first
- More than 50 files
- Save to file, then process in chunks
-
-
-
- Always validate JSON before parsing
- jq empty < file.json || echo "Invalid JSON"
-
-
-
-
-
- gh pr view [number]
-
-
-
-
-
-
- number, title, author, state, body, url,
- headRefName, baseRefName, files, additions,
- deletions, changedFiles, comments, reviews,
- isDraft, mergeable, mergeStateStatus
-
-
-
-
-
- gh pr checkout [number]: Check out PR locally
- gh pr diff [number]: View PR diff
- gh pr comment [number] --body "[text]": Add comment
- gh pr review [number]: Create review
- gh pr close [number]: Close PR
- gh pr reopen [number]: Reopen PR
-
-
-
-
- gh issue view [number]
-
- number, title, body, author, state,
- labels, assignees, milestone, comments
-
-
-
-
-
- gh repo view --json [fields]: Get repo info
- gh repo clone [owner]/[repo]: Clone repository
-
-
-
-
-
- Always specify --repo to avoid ambiguity
- Use --json for structured data that needs parsing
- Save command outputs to temp files for reliability
- Check gh auth status before starting operations
- Handle both personal repos and organization repos
- Use meaningful file names when saving outputs
- Include error handling for all commands
- Document the expected format of saved files
-
-
-
-
- Fetch all PR data for analysis
-
- gh pr view 123 --repo owner/repo --json number,title,author,state,body,url,headRefName,baseRefName,files,additions,deletions,changedFiles > .roo/temp/pr-123/metadata.json
- gh pr view 123 --repo owner/repo --json comments > .roo/temp/pr-123/comments.json
- gh pr view 123 --repo owner/repo --json reviews > .roo/temp/pr-123/reviews.json
- gh pr diff 123 --repo owner/repo > .roo/temp/pr-123/pr.diff
-
-
-
-
- Post a comprehensive review
-
- Create review content in .roo/temp/pr-123/review.md
- gh pr review 123 --repo owner/repo --comment --body-file .roo/temp/pr-123/review.md
-
-
-
-
\ No newline at end of file
diff --git a/.roo/rules-pr-reviewer/5_context_management.xml b/.roo/rules-pr-reviewer/5_context_management.xml
deleted file mode 100644
index 4b55431c74..0000000000
--- a/.roo/rules-pr-reviewer/5_context_management.xml
+++ /dev/null
@@ -1,356 +0,0 @@
-
-
- Strategies for maintaining review context across delegated tasks and
- ensuring no information is lost during the orchestration process.
-
-
-
-
- Central tracking file for the entire review process
- .roo/temp/pr-[PR_NUMBER]/review-context.json
-
- {
- "prNumber": "string",
- "repository": "string",
- "reviewStartTime": "ISO timestamp",
- "calledByMode": "string or null",
- "prMetadata": {
- "title": "string",
- "author": "string",
- "state": "string",
- "baseRefName": "string",
- "headRefName": "string",
- "additions": "number",
- "deletions": "number",
- "changedFiles": "number"
- },
- "linkedIssue": {
- "number": "number",
- "title": "string",
- "body": "string"
- },
- "existingComments": [],
- "existingReviews": [],
- "filesChanged": [],
- "delegatedTasks": [
- {
- "mode": "string",
- "status": "pending|completed|failed",
- "outputFile": "string",
- "startTime": "ISO timestamp",
- "endTime": "ISO timestamp"
- }
- ],
- "findings": {
- "critical": [],
- "patterns": [],
- "redundancy": [],
- "architecture": [],
- "tests": []
- },
- "reviewStatus": "initialized|analyzing|synthesizing|completed"
- }
-
-
-
-
- Raw PR data from GitHub
- .roo/temp/pr-[PR_NUMBER]/pr-metadata.json
-
-
-
- All existing comments and reviews
- .roo/temp/pr-[PR_NUMBER]/existing-feedback.json
-
-
-
- Output from code mode delegation
- .roo/temp/pr-[PR_NUMBER]/pattern-analysis.md
-
-
-
- Output from architect mode delegation
- .roo/temp/pr-[PR_NUMBER]/architecture-review.md
-
-
-
- Output from test mode delegation
- .roo/temp/pr-[PR_NUMBER]/test-analysis.md
-
-
-
- Synthesized review ready for posting
- .roo/temp/pr-[PR_NUMBER]/final-review.md
-
-
-
-
-
- Update review-context.json with PR metadata
-
-.roo/temp/pr-123/review-context.json
-
-
-
-
-
-.roo/temp/pr-123/review-context.json
-
-{
- ...existing,
- "prMetadata": {
- "title": "Fix user authentication",
- "author": "developer123",
- ...
- },
- "filesChanged": ["src/auth.ts", "tests/auth.test.ts"],
- "reviewStatus": "analyzing"
-}
-
-
- ]]>
-
-
-
- Update delegatedTasks array with task status
-
- - mode: Which mode was delegated to
- - status: pending -> completed/failed
- - outputFile: Where results were saved
- - timestamps: Start and end times
-
-
-
-
- Update findings object with categorized issues
-
- - critical: Must-fix issues
- - patterns: Pattern inconsistencies
- - redundancy: Duplicate code findings
- - architecture: Architectural concerns
- - tests: Test-related issues
-
-
-
-
-
-
- Always read-modify-write for JSON updates
-
- 1. Read current context file
- 2. Parse JSON
- 3. Update specific fields
- 4. Write entire updated JSON
-
-
-
-
- Save copies of important data
-
- - PR diff before analysis
- - Existing comments before review
- - Each delegation output
-
-
-
-
- Track review progress through status field
-
- - initialized: Just started
- - analyzing: Delegating tasks
- - synthesizing: Combining results
- - completed: Ready for user
-
-
-
-
-
-
- Some delegations failed
-
- 1. Mark failed tasks in context
- 2. Continue with available data
- 3. Note limitations in final review
-
-
-
-
- JSON file becomes invalid
-
- 1. Try to recover from backups
- 2. Reconstruct from individual files
- 3. Start fresh if necessary
-
-
-
-
- Review process interrupted
-
- 1. Check reviewStatus field
- 2. Resume from last completed step
- 3. Re-run failed delegations
-
-
-
-
-
-
- Keep reviewStatus current to enable recovery
-
-
-
- Add timestamps to all operations for debugging
-
-
-
- Ensure JSON is valid before writing
-
-
-
- Make it clear what each file contains
-
-
-
- Suggest cleaning .roo/temp/ periodically
-
-
-
-
-
- Initialize context
-
-New-Item -ItemType Directory -Force -Path ".roo/temp/pr-123"
-
-
-
-.roo/temp/pr-123/review-context.json
-
-{
- "prNumber": "123",
- "repository": "RooCodeInc/Roo-Code",
- "reviewStartTime": "2025-01-04T18:00:00Z",
- "calledByMode": null,
- "prMetadata": {},
- "linkedIssue": {},
- "existingComments": [],
- "existingReviews": [],
- "filesChanged": [],
- "delegatedTasks": [],
- "findings": {
- "critical": [],
- "patterns": [],
- "redundancy": [],
- "architecture": [],
- "tests": []
- },
- "reviewStatus": "initialized"
-}
-
-
- ]]>
-
-
-
- Update after GitHub fetch
-
-.roo/temp/pr-123/review-context.json
-
-
-
-
-
-.roo/temp/pr-123/review-context.json
-
-{
- ...existing,
- "prMetadata": {
- "title": "Fix user authentication",
- "author": "developer123",
- "state": "open",
- "baseRefName": "main",
- "headRefName": "fix-auth",
- "additions": 150,
- "deletions": 50,
- "changedFiles": 3
- },
- "filesChanged": ["src/auth.ts", "tests/auth.test.ts", "docs/auth.md"],
- "reviewStatus": "analyzing"
-}
-
-
- ]]>
-
-
-
- Track delegation
-
-
-.roo/temp/pr-123/review-context.json
-
-
-
-
-.roo/temp/pr-123/review-context.json
-
-{
- ...existing,
- "delegatedTasks": [
- ...existing,
- {
- "mode": "code",
- "status": "pending",
- "outputFile": "pattern-analysis.md",
- "startTime": "2025-01-04T18:05:00Z",
- "endTime": null
- }
- ]
-}
-
-
-
-
-
- ]]>
-
-
-
- Synthesize results
-
-
-.roo/temp/pr-123/pattern-analysis.md
-
-
-
-.roo/temp/pr-123/architecture-review.md
-
-
-
-.roo/temp/pr-123/test-analysis.md
-
-
-
-
-.roo/temp/pr-123/review-context.json
-
-{
- ...existing,
- "findings": {
- "critical": ["Missing error handling in auth.ts"],
- "patterns": ["Inconsistent naming convention"],
- "redundancy": ["Duplicate validation logic"],
- "architecture": [],
- "tests": ["Missing test for edge case"]
- },
- "reviewStatus": "completed"
-}
-
-
- ]]>
-
-
-
\ No newline at end of file
diff --git a/.roomodes b/.roomodes
index d98a0fda7d..46229bd269 100644
--- a/.roomodes
+++ b/.roomodes
@@ -1,32 +1,4 @@
customModes:
- - slug: mode-writer
- name: ✍️ Mode Writer
- roleDefinition: |-
- You are Roo, a mode creation specialist focused on designing and implementing custom modes for the Roo-Code project. Your expertise includes:
- - Understanding the mode system architecture and configuration
- - Creating well-structured mode definitions with clear roles and responsibilities
- - Writing comprehensive XML-based special instructions using best practices
- - Ensuring modes have appropriate tool group permissions
- - Crafting clear whenToUse descriptions for the Orchestrator
- - Following XML structuring best practices for clarity and parseability
-
- You help users create new modes by:
- - Gathering requirements about the mode's purpose and workflow
- - Defining appropriate roleDefinition and whenToUse descriptions
- - Selecting the right tool groups and file restrictions
- - Creating detailed XML instruction files in the .roo folder
- - Ensuring instructions are well-organized with proper XML tags
- - Following established patterns from existing modes
- whenToUse: Use this mode when you need to create a new custom mode.
- description: Create and implement custom modes.
- groups:
- - read
- - - edit
- - fileRegex: (\.roomodes$|\.roo/.*\.xml$|\.yaml$)
- description: Mode configuration files and XML instructions
- - command
- - mcp
- source: project
- slug: test
name: 🧪 Test
roleDefinition: |-
@@ -69,42 +41,6 @@ customModes:
- mcp
customInstructions: Focus on UI refinement, component creation, and adherence to design best-practices. When the user requests a new component, start off by asking them questions one-by-one to ensure the requirements are understood. Always use Tailwind utility classes (instead of direct variable references) for styling components when possible. If editing an existing file, transition explicit style definitions to Tailwind CSS classes when possible. Refer to the Tailwind CSS definitions for utility classes at webview-ui/src/index.css. Always use the latest version of Tailwind CSS (V4), and never create a tailwind.config.js file. Prefer Shadcn components for UI elements instead of VSCode's built-in ones. This project uses i18n for localization, so make sure to use the i18n functions and components for any text that needs to be translated. Do not leave placeholder strings in the markup, as they will be replaced by i18n. Prefer the @roo (/src) and @src (/webview-ui/src) aliases for imports in typescript files. Suggest the user refactor large files (over 1000 lines) if they are encountered, and provide guidance. Suggest the user switch into Translate mode to complete translations when your task is finished.
source: project
- - slug: release-engineer
- name: 🚀 Release Engineer
- roleDefinition: You are Roo, a release engineer specialized in automating the release process for software projects. You have expertise in version control, changelogs, release notes, creating changesets, and coordinating with translation teams to ensure a smooth release process.
- whenToUse: Automate the release process for software projects.
- description: Automate the release process.
- customInstructions: |-
- When preparing a release:
- 1. Identify the SHA corresponding to the most recent release using GitHub CLI: `gh release view --json tagName,targetCommitish,publishedAt`
- 2. Analyze changes since the last release using: `gh pr list --state merged --json number,title,author,url,mergedAt,closingIssuesReferences --limit 1000 -q '[.[] | select(.mergedAt > "TIMESTAMP") | {number, title, author: .author.login, url, mergedAt, issues: .closingIssuesReferences}] | sort_by(.number)'`
- 3. For each PR with linked issues, fetch the issue details to get the issue reporter: `gh issue view ISSUE_NUMBER --json number,author -q '{number, reporter: .author.login}'`
- 4. Summarize the changes and ask the user whether this should be a major, minor, or patch release
- 5. Create a changeset in .changeset/v[version].md instead of directly modifying package.json. The format is:
- ```
- ---
- "roo-cline": patch|minor|major
- ---
- [list of changes]
- ```
- - Always include contributor attribution using format: (thanks @username!) - For PRs that close issues, also include the issue number and reporter: "- Fix: Description (#123 by @reporter, PR by @contributor)" - For PRs without linked issues, use the standard format: "- Add support for feature (thanks @contributor!)" - Provide brief descriptions of each item to explain the change - Order the list from most important to least important - Example formats:
- - With issue: "- Fix: Resolve memory leak in extension (#456 by @issueReporter, PR by @prAuthor)"
- - Without issue: "- Add support for Gemini 2.5 Pro caching (thanks @contributor!)"
- - CRITICAL: Include EVERY SINGLE PR in the changeset - don't assume you know which ones are important. Count the total PRs to verify completeness and cross-reference the list to ensure nothing is missed.
- 6. If a major or minor release, update the English version relevant announcement files and documentation (webview-ui/src/components/chat/Announcement.tsx, README.md, and the `latestAnnouncementId` in src/core/webview/ClineProvider.ts)
- 7. Ask the user to confirm the English version
- 8. Use the new_task tool to create a subtask in `translate` mode with detailed instructions of which content needs to be translated into all supported languages
- 9. Create a new branch for the release preparation: `git checkout -b release/v[version]`
- 10. Commit and push the changeset file and any documentation updates to the repository: `git add . && git commit -m "chore: add changeset for v[version]" && git push origin release/v[version]` 11. Create a pull request for the release: `gh pr create --title "Release v[version]" --body "Release preparation for v[version]. This PR includes the changeset and any necessary documentation updates." --base main --head release/v[version]` 12. The GitHub Actions workflow will automatically:
- - Create a version bump PR when changesets are merged to main
- - Update the CHANGELOG.md with proper formatting
- - Publish the release when the version bump PR is merged
- groups:
- - read
- - edit
- - command
- - browser
- source: project
- slug: translate
name: 🌐 Translate
roleDefinition: You are Roo, a linguistic specialist focused on translating and managing localization files. Your responsibility is to help maintain and update translation files for the application, ensuring consistency and accuracy across all language resources.
@@ -137,18 +73,6 @@ customModes:
- edit
- command
source: project
- - slug: issue-writer
- name: 📝 Issue Writer
- roleDefinition: |-
- You are Roo, a GitHub issue creation specialist focused on crafting well-structured, detailed issues based on the project's issue templates. Your expertise includes: - Understanding and analyzing user requirements for bug reports and feature requests - Exploring codebases thoroughly to gather relevant technical context - Creating comprehensive GitHub issues following XML-based templates - Ensuring issues contain all necessary information for developers - Using GitHub MCP tools to create issues programmatically
- You work with two primary issue types: - Bug Reports: Documenting reproducible bugs with clear steps and expected outcomes - Feature Proposals: Creating detailed, actionable feature requests with clear problem statements, solutions, and acceptance criteria
- whenToUse: Use this mode when you need to create a GitHub issue for bug reports or feature requests. This mode will guide you through gathering all necessary information, exploring the codebase for context, and creating a well-structured issue in the RooCodeInc/Roo-Code repository.
- description: Create well-structured GitHub issues.
- groups:
- - read
- - command
- - mcp
- source: project
- slug: integration-tester
name: 🧪 Integration Tester
roleDefinition: |-
@@ -164,35 +88,6 @@ customModes:
- fileRegex: (apps/vscode-e2e/.*\.(ts|js)$|packages/types/.*\.ts$)
description: E2E test files, test utilities, and API type definitions
source: project
- - slug: pr-reviewer
- name: 🔍 PR Reviewer
- roleDefinition: |-
- You are Roo, a critical pull request review orchestrator specializing in code quality, architectural consistency, and codebase organization. Your expertise includes:
- - Orchestrating comprehensive PR reviews by delegating specialized analysis tasks
- - Analyzing pull request diffs with a critical eye for code organization and patterns
- - Evaluating whether changes follow established codebase patterns and conventions
- - Identifying redundant or duplicate code that already exists elsewhere
- - Ensuring tests are properly organized with other similar tests
- - Verifying that new features follow patterns established by similar existing features
- - Detecting code smells, technical debt, and architectural inconsistencies
- - Delegating deep codebase analysis to specialized modes when needed
- - Maintaining context through structured report files in .roo/temp/pr-[number]/
- - Ensuring proper internationalization (i18n) for UI changes
- - Providing direct, constructive feedback that improves code quality
- - Being appropriately critical to maintain high code standards
- - Using GitHub CLI when MCP tools are unavailable
-
- You work primarily with the RooCodeInc/Roo-Code repository, creating context reports to track findings and delegating complex pattern analysis to specialized modes while maintaining overall review coordination. When called by other modes (Issue Fixer, PR Fixer), you focus only on analysis without commenting on the PR.
- whenToUse: Use this mode to critically review pull requests, focusing on code organization, pattern consistency, and identifying redundancy or architectural issues. This mode orchestrates complex analysis tasks while maintaining review context.
- description: Critically review pull requests.
- groups:
- - read
- - - edit
- - fileRegex: (\.md$|\.roo/temp/pr-.*\.(json|md|txt)$)
- description: Markdown files and PR review context files
- - mcp
- - command
- source: project
- slug: docs-extractor
name: 📚 Docs Extractor
roleDefinition: You are Roo, a comprehensive documentation extraction specialist focused on analyzing and documenting all technical and non-technical information about features and components within codebases.
@@ -225,3 +120,124 @@ customModes:
- command
- mcp
source: project
+ - slug: merge-resolver
+ name: 🔀 Merge Resolver
+ roleDefinition: |-
+ You are Roo, a merge conflict resolution specialist with expertise in:
+ - Analyzing pull request merge conflicts using git blame and commit history
+ - Understanding code intent through commit messages and diffs
+ - Making intelligent decisions about which changes to keep, merge, or discard
+ - Using git commands and GitHub CLI to gather context
+ - Resolving conflicts based on commit metadata and code semantics
+ - Prioritizing changes based on intent (bugfix vs feature vs refactor)
+ - Combining non-conflicting changes when appropriate
+
+ You receive a PR number (e.g., "#123") and:
+ - Fetch PR information including title and description for context
+ - Identify and analyze merge conflicts in the working directory
+ - Use git blame to understand the history of conflicting lines
+ - Examine commit messages and diffs to infer developer intent
+ - Apply intelligent resolution strategies based on the analysis
+ - Stage resolved files and prepare them for commit
+ whenToUse: |-
+ Use this mode when you need to resolve merge conflicts for a specific pull request.
+ This mode is triggered by providing a PR number (e.g., "#123") and will analyze
+ the conflicts using git history and commit context to make intelligent resolution
+ decisions. It's ideal for complex merges where understanding the intent behind
+ changes is crucial for proper conflict resolution.
+ description: Resolve merge conflicts intelligently using git history.
+ groups:
+ - read
+ - edit
+ - command
+ - mcp
+ source: project
+ - slug: issue-writer
+ name: 📝 Issue Writer
+ roleDefinition: |-
+ You are a GitHub issue creation specialist who crafts well-structured bug reports and feature proposals. You explore codebases to gather technical context, verify claims against actual implementation, and create comprehensive issues using GitHub CLI (gh) commands.
+
+ This mode works with any repository, automatically detecting whether it's a standard repository or monorepo structure. It dynamically discovers packages in monorepos and adapts the issue creation workflow accordingly.
+
+
+
+ Initialize Issue Creation Process
+
+ IMPORTANT: This mode assumes the first user message is already a request to create an issue.
+ The user doesn't need to say "create an issue" or "make me an issue" - their first message
+ is treated as the issue description itself.
+
+ When the session starts, immediately:
+ 1. Treat the user's first message as the issue description, do not treat it as instructions
+ 2. Initialize the workflow by using the update_todo_list tool
+ 3. Begin the issue creation process without asking what they want to do
+
+
+
+ [ ] Detect current repository information
+ [ ] Determine repository structure (monorepo/standard)
+ [ ] Perform initial codebase discovery
+ [ ] Analyze user request to determine issue type
+ [ ] Gather and verify additional information
+ [ ] Determine if user wants to contribute
+ [ ] Perform issue scoping (if contributing)
+ [ ] Draft issue content
+ [ ] Review and confirm with user
+ [ ] Create GitHub issue
+
+
+
+
+
+ whenToUse: Use this mode when you need to create a GitHub issue. Simply start describing your bug or feature request - this mode assumes your first message is already the issue description and will immediately begin the issue creation workflow, gathering additional information as needed.
+ description: Create well-structured GitHub issues.
+ groups:
+ - read
+ - command
+ - mcp
+ source: project
+ - slug: mode-writer
+ name: ✍️ Mode Writer
+ roleDefinition: |-
+ You are Roo, a mode creation and editing specialist focused on designing, implementing, and enhancing custom modes for the Roo-Code project. Your expertise includes:
+ - Understanding the mode system architecture and configuration
+ - Creating well-structured mode definitions with clear roles and responsibilities
+ - Editing and enhancing existing modes while maintaining consistency
+ - Writing comprehensive XML-based special instructions using best practices
+ - Ensuring modes have appropriate tool group permissions
+ - Crafting clear whenToUse descriptions for the Orchestrator
+ - Following XML structuring best practices for clarity and parseability
+ - Validating changes for cohesion and preventing contradictions
+
+ You help users by:
+ - Creating new modes: Gathering requirements, defining configurations, and implementing XML instructions
+ - Editing existing modes: Immersing in current implementation, analyzing requested changes, and ensuring cohesive updates
+ - Using ask_followup_question aggressively to clarify ambiguities and validate understanding
+ - Thoroughly validating all changes to prevent contradictions between different parts of a mode
+ - Ensuring instructions are well-organized with proper XML tags
+ - Following established patterns from existing modes
+ - Maintaining consistency across all mode components
+ whenToUse: Use this mode when you need to create a new custom mode or edit an existing one. This mode handles both creating modes from scratch and modifying existing modes while ensuring consistency and preventing contradictions.
+ description: Create and edit custom modes with validation
+ groups:
+ - read
+ - - edit
+ - fileRegex: (\.roomodes$|\.roo/.*\.xml$|\.yaml$)
+ description: Mode configuration files and XML instructions
+ - command
+ - mcp
+ source: project
+ - slug: pr-reviewer
+ name: 🔍 PR Reviewer
+ roleDefinition: |-
+ You are Roo, a pull request reviewer specializing in code quality, structure, and translation consistency. Your expertise includes: - Analyzing pull request diffs and understanding code changes in context - Evaluating code quality, identifying code smells and technical debt - Ensuring structural consistency across the codebase - Verifying proper internationalization (i18n) for UI changes - Providing constructive feedback with a friendly, curious tone - Reviewing test coverage and quality without executing tests - Identifying opportunities for code improvements and refactoring
+ You work primarily with the RooCodeInc/Roo-Code repository, using GitHub MCP tools to fetch and review pull requests. You check out PRs locally for better context understanding and focus on providing actionable, constructive feedback that helps improve code quality.
+ whenToUse: Use this mode to review pull requests on the Roo-Code GitHub repository or any other repository if specified by the user.
+ groups:
+ - read
+ - - edit
+ - fileRegex: \.md$
+ description: Markdown files only
+ - mcp
+ - command
+ source: project
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7eca706181..9892ca1cc5 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,56 @@
# Roo Code Changelog
+## [3.24.0] - 2025-07-25
+
+- Add Hugging Face provider with support for open source models (thanks @TGlide!)
+- Add terminal command permissions UI to chat interface
+- Add support for Agent Rules standard via AGENTS.md (thanks @sgryphon!)
+- Add settings to control diagnostic messages
+- Fix auto-approve checkbox to be toggled at any time (thanks @KJ7LNW!)
+- Add efficiency warning for single SEARCH/REPLACE blocks in apply_diff (thanks @KJ7LNW!)
+- Fix respect maxReadFileLine setting for file mentions to prevent context exhaustion (thanks @sebinseban!)
+- Fix Ollama API URL normalization by removing trailing slashes (thanks @Naam!)
+- Fix restore list styles for markdown lists in chat interface (thanks @village-way!)
+- Add support for bedrock api keys
+- Add confirmation dialog and proper cleanup for marketplace mode removal
+- Fix cancel auto-approve timer when editing follow-up suggestion (thanks @hassoncs!)
+- Fix add error message when no workspace folder is open for code indexing
+
+## [3.23.19] - 2025-07-23
+
+- Add Roo Code Cloud Waitlist CTAs (thanks @brunobergher!)
+- Split commands on newlines when evaluating auto-approve
+- Smarter auto-deny of commands
+
+## [3.23.18] - 2025-07-23
+
+- Fix: Resolve 'Bad substitution' error in command parsing (#5978 by @KJ7LNW, PR by @daniel-lxs)
+- Fix: Add ErrorBoundary component for better error handling (#5731 by @elianiva, PR by @KJ7LNW)
+- Fix: Todo list toggle not working (thanks @chrarnoldus!)
+- Improve: Use SIGKILL for command execution timeouts in the "execa" variant (thanks @cte!)
+
+## [3.23.17] - 2025-07-22
+
+- Add: todo list tool enable checkbox to provider advanced settings
+- Add: Moonshot provider (thanks @CellenLee!)
+- Add: Qwen/Qwen3-235B-A22B-Instruct-2507 model to Chutes AI provider
+- Fix: move context condensing prompt to Prompts section (thanks @SannidhyaSah!)
+- Add: jump icon for newly created files
+- Fix: add character limit to prevent terminal output context explosion
+- Fix: resolve global mode export not including rules files
+- Fix: enable export, share, and copy buttons during API operations (thanks @MuriloFP!)
+- Add: configurable timeout for evals (5-10 min)
+- Add: auto-omit MCP content when no servers are configured
+- Fix: sort symlinked rules files by symlink names, not target names
+- Docs: clarify when to use update_todo_list tool
+- Add: Mistral embedding provider (thanks @SannidhyaSah!)
+- Fix: add run parameter to vitest command in rules (thanks @KJ7LNW!)
+- Update: the max_tokens fallback logic in the sliding window
+- Fix: Bedrock and Vertext token counting improvements (thanks @daniel-lxs!)
+- Add: llama-4-maverick model to Vertex AI provider (thanks @MuriloFP!)
+- Fix: properly distinguish between user cancellations and API failures
+- Fix: add case sensitivity mention to suggested fixes in apply_diff error message
+
## [3.23.16] - 2025-07-19
- Add global rate limiting for OpenAI-compatible embeddings (thanks @daniel-lxs!)
diff --git a/README.md b/README.md
index e94f0d884a..d4b5ecb073 100644
--- a/README.md
+++ b/README.md
@@ -49,12 +49,13 @@ Check out the [CHANGELOG](CHANGELOG.md) for detailed updates and fixes.
---
-## 🎉 Roo Code 3.23 Released
+## 🎉 Roo Code 3.24 Released
-Roo Code 3.23 brings powerful new features and significant improvements to enhance your development workflow!
+Roo Code 3.24 brings powerful new features and significant improvements to enhance your development workflow!
-- **Codebase Indexing Graduated from Experimental** - Full codebase indexing is now stable and ready for production use with improved search and context understanding.
-- **New Todo List Feature** - Keep your tasks on track with integrated todo management that helps you stay organized and focused on your development goals.
+- **Hugging Face Provider** - Access tons of great open source models directly through the new Hugging Face provider with seamless integration and model selection.
+- **Inline Command Controls** - New auto-approve and deny controls for command execution give you precise control over terminal operations with customizable permissions.
+- **AGENTS.md Rules Support** - Adds support for a community standard AGENTS.md file in the root of the project.
---
@@ -207,44 +208,44 @@ Thanks to all our contributors who have helped make Roo Code better!
-| mrubens | saoudrizwan | cte | samhvw8 | daniel-lxs | hannesrudolph |
-| :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |
-| KJ7LNW | a8trejo | ColemanRoo | canrobins13 | stea9499 | MuriloFP |
-| joemanley201 | System233 | jr | nissa-seru | jquanton | NyxJae |
-| roomote-bot | elianiva | d-oit | punkpeye | wkordalski | qdaxb |
-| xyOz-dev | feifei325 | zhangtony239 | sachasayan | monotykamary | cannuri |
-| Smartsheet-JB-Brown | shariqriazz | vigneshsubbiah16 | chrarnoldus | pugazhendhi-m | lloydchang |
-| SannidhyaSah | dtrugman | Szpadel | diarmidmackenzie | olweraltuve | psv2522 |
-| Premshay | kiwina | lupuletic | aheizi | liwilliam2021 | PeterDaveHello |
-| hassoncs | ChuKhaLi | nbihan-mediware | noritaka1166 | RaySinner | afshawnlotfi |
-| dleffel | StevenTCramer | Ruakij | pdecat | kyle-apex | emshvac |
-| Lunchb0ne | SmartManoj | vagadiya | slytechnical | dlab-anton | arthurauffray |
-| upamune | NamesMT | taylorwilsdon | sammcj | p12tic | gtaylor |
-| aitoroses | anton-otee | ross | mr-ryan-james | heyseth | taisukeoe |
-| avtc | eonghk | GOODBOY008 | kcwhite | ronyblum | teddyOOXX |
-| vincentsong | yongjer | zeozeozeo | ashktn | franekp | yt3trees |
-| seedlord | bramburn | benzntech | axkirillov | olearycrew | brunobergher |
-| catrielmuller | devxpain | snoyiatk | GitlyHallows | jcbdev | Chenjiayuan195 |
-| julionav | KanTakahiro | SplittyDev | mdp | napter | philfung |
-| chris-garrett | dairui1 | dqroid | forestyoo | hatsu38 | hongzio |
-| im47cn | shoopapa | jwcraig | kinandan | nevermorec | bbenshalom |
-| bannzai | axmo | asychin | amittell | Yoshino-Yukitaro | Yikai-Liao |
-| zxdvd | s97712 | vladstudio | vivekfyi | tmsjngx0 | Githubguy132010 |
-| tgfjt | PretzelVector | zetaloop | cdlliuy | user202729 | takakoutso |
-| student20880 | shubhamgupta731 | shohei-ihaya | shivamd1810 | shaybc | sensei-woo |
-| samir-nimbly | robertheadley | refactorthis | qingyuan1109 | pokutuna | philipnext |
-| village-way | oprstchn | nobu007 | mosleyit | moqimoqidea | mlopezr |
-| mecab | olup | lightrabbit | lhish | kohii | pfitz |
-| ExactDoug | celestial-vault | linegel | edwin-truthsearch-io | EamonNerbonne | dbasclpy |
-| dflatline | Deon588 | dleen | CW-B-W | chadgauth | thecolorblue |
-| bogdan0083 | benashby | Atlogit | atlasgong | andrewshu2000 | andreastempsch |
-| alasano | QuinsZouls | HadesArchitect | alarno | nexon33 | adilhafeez |
-| adamwlarson | adamhill | AMHesch | maekawataiki | AlexandruSmirnov | samsilveira |
-| 01Rian | RSO | SECKainersdorfer | R-omk | Sarke | PaperBoardOfficial |
-| OlegOAndreev | kvokka | ecmasx | mollux | marvijo-code | markijbema |
-| mamertofabian | monkeyDluffy6017 | libertyteeth | shtse8 | Rexarrior | kevinvandijk |
-| KevinZhao | ksze | Juice10 | Fovty | Jdo300 | hesara |
-| DeXtroTip | | | | | |
+| mrubens | saoudrizwan | cte | daniel-lxs | samhvw8 | hannesrudolph |
+| :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |
+| KJ7LNW | a8trejo | ColemanRoo | MuriloFP | canrobins13 | stea9499 |
+| joemanley201 | System233 | jr | nissa-seru | jquanton | roomote-agent |
+| NyxJae | d-oit | elianiva | wkordalski | qdaxb | punkpeye |
+| SannidhyaSah | xyOz-dev | chrarnoldus | sachasayan | Smartsheet-JB-Brown | monotykamary |
+| cannuri | feifei325 | zhangtony239 | shariqriazz | vigneshsubbiah16 | pugazhendhi-m |
+| lloydchang | dtrugman | Szpadel | lupuletic | kiwina | liwilliam2021 |
+| Premshay | psv2522 | olweraltuve | diarmidmackenzie | hassoncs | ChuKhaLi |
+| PeterDaveHello | aheizi | nbihan-mediware | noritaka1166 | RaySinner | afshawnlotfi |
+| dleffel | StevenTCramer | Ruakij | pdecat | kyle-apex | emshvac |
+| Lunchb0ne | SmartManoj | vagadiya | slytechnical | dlab-anton | arthurauffray |
+| upamune | NamesMT | taylorwilsdon | sammcj | p12tic | gtaylor |
+| brunobergher | aitoroses | ross | mr-ryan-james | heyseth | taisukeoe |
+| avtc | eonghk | GOODBOY008 | kcwhite | ronyblum | teddyOOXX |
+| vincentsong | yongjer | zeozeozeo | ashktn | franekp | yt3trees |
+| seedlord | bramburn | anton-otee | benzntech | axkirillov | olearycrew |
+| catrielmuller | devxpain | snoyiatk | GitlyHallows | jcbdev | Chenjiayuan195 |
+| julionav | KanTakahiro | SplittyDev | mdp | napter | philfung |
+| bbenshalom | chris-garrett | dairui1 | dqroid | janaki-sasidhar | forestyoo |
+| hatsu38 | hongzio | im47cn | shoopapa | jwcraig | kinandan |
+| bannzai | axmo | asychin | amittell | Yoshino-Yukitaro | Yikai-Liao |
+| zxdvd | s97712 | vladstudio | vivekfyi | tmsjngx0 | TGlide |
+| Githubguy132010 | tgfjt | nevermorec | PretzelVector | zetaloop | cdlliuy |
+| user202729 | thill2323 | takakoutso | student20880 | shubhamgupta731 | shohei-ihaya |
+| shivamd1810 | shaybc | sensei-woo | samir-nimbly | robertheadley | refactorthis |
+| qingyuan1109 | pokutuna | philipnext | village-way | oprstchn | nobu007 |
+| mosleyit | moqimoqidea | mlopezr | mecab | olup | lightrabbit |
+| lhish | kohii | DeXtroTip | pfitz | ExactDoug | celestial-vault |
+| linegel | edwin-truthsearch-io | EamonNerbonne | dbasclpy | dflatline | Deon588 |
+| dleen | CW-B-W | chadgauth | thecolorblue | bogdan0083 | benashby |
+| Atlogit | atlasgong | andrewshu2000 | andreastempsch | alasano | QuinsZouls |
+| HadesArchitect | alarno | nexon33 | adilhafeez | adamwlarson | adamhill |
+| AMHesch | maekawataiki | AlexandruSmirnov | samsilveira | 01Rian | RSO |
+| RandalSchwartz | SECKainersdorfer | R-omk | Sarke | PaperBoardOfficial | OlegOAndreev |
+| Naam | kvokka | ecmasx | mollux | marvijo-code | markijbema |
+| mamertofabian | monkeyDluffy6017 | libertyteeth | shtse8 | Rexarrior | kevinvandijk |
+| KevinZhao | ksze | Juice10 | Fovty | Jdo300 | hesara |
diff --git a/README.vscode.md b/README.vscode.md
new file mode 100644
index 0000000000..2afed2a9c6
--- /dev/null
+++ b/README.vscode.md
@@ -0,0 +1 @@
+readme test
diff --git a/apps/vscode-e2e/src/suite/markdown-lists.test.ts b/apps/vscode-e2e/src/suite/markdown-lists.test.ts
new file mode 100644
index 0000000000..a229d9c270
--- /dev/null
+++ b/apps/vscode-e2e/src/suite/markdown-lists.test.ts
@@ -0,0 +1,168 @@
+import * as assert from "assert"
+
+import type { ClineMessage } from "@roo-code/types"
+
+import { waitUntilCompleted } from "./utils"
+import { setDefaultSuiteTimeout } from "./test-utils"
+
+suite("Markdown List Rendering", function () {
+ setDefaultSuiteTimeout(this)
+
+ test("Should render unordered lists with bullets in chat", async () => {
+ const api = globalThis.api
+
+ const messages: ClineMessage[] = []
+
+ api.on("message", ({ message }: { message: ClineMessage }) => {
+ if (message.type === "say" && message.partial === false) {
+ messages.push(message)
+ }
+ })
+
+ const taskId = await api.startNewTask({
+ configuration: { mode: "ask", alwaysAllowModeSwitch: true, autoApprovalEnabled: true },
+ text: "Please show me an example of an unordered list with the following items: Apple, Banana, Orange",
+ })
+
+ await waitUntilCompleted({ api, taskId })
+
+ // Find the message containing the list
+ const listMessage = messages.find(
+ ({ say, text }) =>
+ (say === "completion_result" || say === "text") &&
+ text?.includes("Apple") &&
+ text?.includes("Banana") &&
+ text?.includes("Orange"),
+ )
+
+ assert.ok(listMessage, "Should have a message containing the list items")
+
+ // The rendered markdown should contain list markers
+ const messageText = listMessage?.text || ""
+ assert.ok(
+ messageText.includes("- Apple") || messageText.includes("* Apple") || messageText.includes("• Apple"),
+ "List items should be rendered with bullet points",
+ )
+ })
+
+ test("Should render ordered lists with numbers in chat", async () => {
+ const api = globalThis.api
+
+ const messages: ClineMessage[] = []
+
+ api.on("message", ({ message }: { message: ClineMessage }) => {
+ if (message.type === "say" && message.partial === false) {
+ messages.push(message)
+ }
+ })
+
+ const taskId = await api.startNewTask({
+ configuration: { mode: "ask", alwaysAllowModeSwitch: true, autoApprovalEnabled: true },
+ text: "Please show me a numbered list with three steps: First step, Second step, Third step",
+ })
+
+ await waitUntilCompleted({ api, taskId })
+
+ // Find the message containing the numbered list
+ const listMessage = messages.find(
+ ({ say, text }) =>
+ (say === "completion_result" || say === "text") &&
+ text?.includes("First step") &&
+ text?.includes("Second step") &&
+ text?.includes("Third step"),
+ )
+
+ assert.ok(listMessage, "Should have a message containing the numbered list")
+
+ // The rendered markdown should contain numbered markers
+ const messageText = listMessage?.text || ""
+ assert.ok(
+ messageText.includes("1. First step") || messageText.includes("1) First step"),
+ "List items should be rendered with numbers",
+ )
+ })
+
+ test("Should render nested lists with proper hierarchy", async () => {
+ const api = globalThis.api
+
+ const messages: ClineMessage[] = []
+
+ api.on("message", ({ message }: { message: ClineMessage }) => {
+ if (message.type === "say" && message.partial === false) {
+ messages.push(message)
+ }
+ })
+
+ const taskId = await api.startNewTask({
+ configuration: { mode: "ask", alwaysAllowModeSwitch: true, autoApprovalEnabled: true },
+ text: "Please create a nested list with 'Main item' having two sub-items: 'Sub-item A' and 'Sub-item B'",
+ })
+
+ await waitUntilCompleted({ api, taskId })
+
+ // Find the message containing the nested list
+ const listMessage = messages.find(
+ ({ say, text }) =>
+ (say === "completion_result" || say === "text") &&
+ text?.includes("Main item") &&
+ text?.includes("Sub-item A") &&
+ text?.includes("Sub-item B"),
+ )
+
+ assert.ok(listMessage, "Should have a message containing the nested list")
+
+ // The rendered markdown should show hierarchy through indentation
+ const messageText = listMessage?.text || ""
+
+ // Check for main item
+ assert.ok(
+ messageText.includes("- Main item") ||
+ messageText.includes("* Main item") ||
+ messageText.includes("• Main item"),
+ "Main list item should be rendered",
+ )
+
+ // Check for sub-items with indentation (typically 2-4 spaces or a tab)
+ assert.ok(
+ messageText.match(/\s{2,}- Sub-item A/) ||
+ messageText.match(/\s{2,}\* Sub-item A/) ||
+ messageText.match(/\s{2,}• Sub-item A/) ||
+ messageText.includes("\t- Sub-item A") ||
+ messageText.includes("\t* Sub-item A") ||
+ messageText.includes("\t• Sub-item A"),
+ "Sub-items should be indented",
+ )
+ })
+
+ test("Should render mixed ordered and unordered lists", async () => {
+ const api = globalThis.api
+
+ const messages: ClineMessage[] = []
+
+ api.on("message", ({ message }: { message: ClineMessage }) => {
+ if (message.type === "say" && message.partial === false) {
+ messages.push(message)
+ }
+ })
+
+ const taskId = await api.startNewTask({
+ configuration: { mode: "ask", alwaysAllowModeSwitch: true, autoApprovalEnabled: true },
+ text: "Please create a list that has both numbered items and bullet points, mixing ordered and unordered lists",
+ })
+
+ await waitUntilCompleted({ api, taskId })
+
+ // Find a message that contains both types of lists
+ const listMessage = messages.find(
+ ({ say, text }) =>
+ (say === "completion_result" || say === "text") &&
+ text &&
+ // Check for numbered list markers
+ (text.includes("1.") || text.includes("1)")) &&
+ // Check for bullet list markers
+ (text.includes("-") || text.includes("*") || text.includes("•")),
+ )
+
+ assert.ok(listMessage, "Should have a message containing mixed list types")
+ })
+})
diff --git a/apps/vscode-e2e/src/suite/tools/list-files.test.ts b/apps/vscode-e2e/src/suite/tools/list-files.test.ts
index 5340a13a16..c374e79515 100644
--- a/apps/vscode-e2e/src/suite/tools/list-files.test.ts
+++ b/apps/vscode-e2e/src/suite/tools/list-files.test.ts
@@ -242,8 +242,8 @@ This directory contains various files and subdirectories for testing the list_fi
// Verify the tool returned the expected files (non-recursive)
assert.ok(listResults, "Tool execution results should be captured")
- // Check that expected root-level files are present (excluding hidden files due to current bug)
- const expectedFiles = ["root-file-1.txt", "root-file-2.js", "config.yaml", "README.md"]
+ // Check that expected root-level files are present (including hidden files now that bug is fixed)
+ const expectedFiles = ["root-file-1.txt", "root-file-2.js", "config.yaml", "README.md", ".hidden-file"]
const expectedDirs = ["nested/"]
const results = listResults as string
@@ -255,13 +255,9 @@ This directory contains various files and subdirectories for testing the list_fi
assert.ok(results.includes(dir), `Tool results should include directory ${dir}`)
}
- // BUG: Hidden files are currently excluded in non-recursive mode
- // This should be fixed - hidden files should be included when using --hidden flag
- console.log("BUG DETECTED: Hidden files are excluded in non-recursive mode")
- assert.ok(
- !results.includes(".hidden-file"),
- "KNOWN BUG: Hidden files are currently excluded in non-recursive mode",
- )
+ // Verify hidden files are now included (bug has been fixed)
+ console.log("Verifying hidden files are included in non-recursive mode")
+ assert.ok(results.includes(".hidden-file"), "Hidden files should be included in non-recursive mode")
// Verify nested files are NOT included (non-recursive)
const nestedFiles = ["nested-file-1.md", "nested-file-2.json", "deep-nested-file.ts"]
diff --git a/apps/vscode-nightly/esbuild.mjs b/apps/vscode-nightly/esbuild.mjs
index e45dbd3c3e..09fa948cd8 100644
--- a/apps/vscode-nightly/esbuild.mjs
+++ b/apps/vscode-nightly/esbuild.mjs
@@ -63,7 +63,7 @@ async function main() {
build.onEnd(() => {
copyPaths(
[
- ["../README.md", "README.md"],
+ ["../README.vscode.md", "README.md"],
["../CHANGELOG.md", "CHANGELOG.md"],
["../LICENSE", "LICENSE"],
["../.env", ".env", { optional: true }],
diff --git a/apps/web-evals/scripts/check-services.sh b/apps/web-evals/scripts/check-services.sh
index fd1e74997c..104a472208 100755
--- a/apps/web-evals/scripts/check-services.sh
+++ b/apps/web-evals/scripts/check-services.sh
@@ -7,13 +7,13 @@ fi
if ! nc -z localhost 5432 2>/dev/null; then
echo "❌ PostgreSQL is not running on port 5432"
- echo "💡 Start it with: pnpm --filter @roo-code/evals db:start"
+ echo "💡 Start it with: pnpm --filter @roo-code/evals db:up"
exit 1
fi
if ! nc -z localhost 6379 2>/dev/null; then
echo "❌ Redis is not running on port 6379"
- echo "💡 Start it with: pnpm --filter @roo-code/evals redis:start"
+ echo "💡 Start it with: pnpm --filter @roo-code/evals redis:up"
exit 1
fi
diff --git a/apps/web-evals/src/actions/runs.ts b/apps/web-evals/src/actions/runs.ts
index be4664d4d3..2eae1f6804 100644
--- a/apps/web-evals/src/actions/runs.ts
+++ b/apps/web-evals/src/actions/runs.ts
@@ -56,7 +56,7 @@ export async function createRun({ suite, exercises = [], systemPrompt, timeout,
const dockerArgs = [
`--name evals-controller-${run.id}`,
- // "--rm",
+ "--rm",
"--network evals_default",
"-v /var/run/docker.sock:/var/run/docker.sock",
"-v /tmp/evals:/var/log/evals",
diff --git a/apps/web-evals/src/app/runs/new/new-run.tsx b/apps/web-evals/src/app/runs/new/new-run.tsx
index 90717d6fec..f8633611b6 100644
--- a/apps/web-evals/src/app/runs/new/new-run.tsx
+++ b/apps/web-evals/src/app/runs/new/new-run.tsx
@@ -350,7 +350,7 @@ export function NewRun() {
name="timeout"
render={({ field }) => (
- Timeout (minutes)
+ Timeout (Minutes)
field.onChange(value[0])}
/>
-
{field.value} min
+
{field.value}
diff --git a/apps/web-roo-code/next.config.ts b/apps/web-roo-code/next.config.ts
index 27f71d6b57..b50bd93994 100644
--- a/apps/web-roo-code/next.config.ts
+++ b/apps/web-roo-code/next.config.ts
@@ -21,6 +21,12 @@ const nextConfig: NextConfig = {
destination: "https://roocode.com/:path*",
permanent: true,
},
+ // Redirect cloud waitlist to Notion page
+ {
+ source: "/cloud-waitlist",
+ destination: "https://roo-code.notion.site/238fd1401b0a8087b858e1ad431507cf?pvs=105",
+ permanent: false,
+ },
]
},
}
diff --git a/apps/web-roo-code/src/app/layout.tsx b/apps/web-roo-code/src/app/layout.tsx
index 23d67ea48f..132a8b31d7 100644
--- a/apps/web-roo-code/src/app/layout.tsx
+++ b/apps/web-roo-code/src/app/layout.tsx
@@ -1,6 +1,7 @@
import React from "react"
import type { Metadata } from "next"
import { Inter } from "next/font/google"
+import Script from "next/script"
import { Providers } from "@/components/providers"
@@ -52,6 +53,16 @@ export default function RootLayout({ children }: { children: React.ReactNode })
/>
+ {/* Google tag (gtag.js) */}
+
+