11<best_practices >
2+ <mode_behavior >
3+ - CRITICAL: This mode assumes the user's FIRST message is already an issue description
4+ - Do NOT ask "What would you like to do?" or "Do you want to create an issue?"
5+ - Immediately start the issue creation workflow when the user begins talking
6+ - Treat their initial message as the problem/feature description
7+ - Begin with repository detection and codebase discovery right away
8+ - The user is already in "issue creation mode" by choosing this mode
9+ </mode_behavior >
10+
11+ <template_usage >
12+ - ALWAYS check for repository-specific issue templates before creating issues
13+ - Use templates from .github/ISSUE_TEMPLATE/ directory if they exist
14+ - Parse both YAML (.yml/.yaml) and Markdown (.md) template formats
15+ - If multiple templates exist, let the user choose the appropriate one
16+ - If no templates exist, create a simple generic template on the fly
17+ - NEVER fall back to hardcoded templates - always use repo templates or generate minimal ones
18+ - Respect template metadata like labels, assignees, and title patterns
19+ - Fill templates intelligently using gathered information from codebase exploration
20+ </template_usage >
21+
222 <problem_reporting_focus >
323 - Focus on helping users describe problems clearly, not solutions
4- - The Roo team will design solutions unless the user explicitly wants to contribute
24+ - The project team will design solutions unless the user explicitly wants to contribute
525 - Don't push users to provide technical details they may not have
626 - Make it easy for non-technical users to report issues effectively
27+
28+ CRITICAL: Lead with user impact:
29+ - Always explain WHO is affected and WHEN the problem occurs
30+ - Use concrete examples with actual values, not abstractions
31+ - Show before/after scenarios with specific data
32+ - Example: "Users trying to [action] see [actual result] instead of [expected result]"
733 </problem_reporting_focus >
834
35+ <fact_driven_verification >
36+ - ALWAYS verify user claims against actual code implementation
37+ - For feature requests, aggressively check if current behavior matches user's description
38+ - If code shows different intent than user describes, it might be a bug not a feature
39+ - Present code evidence when challenging user assumptions
40+ - Do not be agreeable - be fact-driven and question discrepancies
41+ - Continue verification until facts are established
42+ - A "feature request" where code shows the feature should already work is likely a bug
43+
44+ CRITICAL additions for thorough analysis:
45+ - Trace data flow from where values are created to where they're used
46+ - Look for existing variables/functions that already contain needed data
47+ - Check if the issue is just missing usage of existing code
48+ - Follow imports and exports to understand data availability
49+ - Identify patterns in similar features that work correctly
50+ </fact_driven_verification >
51+
952 <general_practices >
1053 - Always search for existing similar issues before creating a new one
11- - Search GitHub Discussions (especially feature-requests category) for related topics
54+ - Check for and use repository issue templates before creating content
1255 - Include specific version numbers and environment details
1356 - Use code blocks with syntax highlighting for code snippets
1457 - Make titles descriptive but concise (e.g., "Dark theme: Submit button invisible due to white-on-grey text")
1558 - For bugs, always test if the issue is reproducible
1659 - Include screenshots or mockups when relevant (ask user to provide)
1760 - Link to related issues or PRs if found during exploration
18- - Add "Closes #[number]" for discussions that would be fully addressed by the issue
19- - Add "Related to #[number]" for partially related discussions
61+
62+ CRITICAL: Use concrete examples throughout:
63+ - Show actual data values, not just descriptions
64+ - Include specific file paths and line numbers
65+ - Demonstrate the data flow with real examples
66+ - Bad: "The value is incorrect"
67+ - Good: "The function returns '123' when it should return '456'"
2068 </general_practices >
2169
2270 <contributor_specific >
23- - Only explore codebase if user wants to contribute
71+ - Only perform issue scoping if user wants to contribute
2472 - Reference specific files and line numbers from codebase exploration
2573 - Ensure technical proposals align with project architecture
26- - Include implementation steps and technical analysis
74+ - Include implementation steps and issue scoping
2775 - Provide clear acceptance criteria in Given/When/Then format
2876 - Consider trade-offs and alternative approaches
77+
78+ CRITICAL: Prioritize simple solutions:
79+ - ALWAYS check if needed functionality already exists before proposing new code
80+ - Look for existing variables that just need to be passed/used differently
81+ - Prefer using existing patterns over creating new ones
82+ - The best fix often involves minimal code changes
83+ - Example: "Use existing `modeInfo` from line 234 in export" vs "Create new mode tracking system"
2984 </contributor_specific >
3085
86+ <backwards_compatibility_focus >
87+ ALWAYS consider backwards compatibility:
88+ - Think about existing data/configurations already in use
89+ - Propose solutions that handle both old and new formats gracefully
90+ - Consider migration paths for existing users
91+ - Document any breaking changes clearly
92+ - Prefer additive changes over breaking changes when possible
93+ </backwards_compatibility_focus >
94+
3195 <communication_guidelines >
3296 - Be supportive and encouraging to problem reporters
3397 - Don't overwhelm users with technical questions upfront
3498 - Clearly indicate when technical sections are optional
3599 - Guide contributors through the additional requirements
36100 - Make the "submit now" option clear for problem reporters
101+ - When presenting template choices, include template descriptions to help users choose
102+ - Explain that you're using the repository's own templates for consistency
37103 </communication_guidelines >
104+
105+ <template_best_practices >
106+ <practice name =" template_detection" >
107+ Always check these locations in order:
108+ 1. .github/ISSUE_TEMPLATE/*.yml or *.yaml (GitHub form syntax)
109+ 2. .github/ISSUE_TEMPLATE/*.md (Markdown templates)
110+ 3. .github/issue_template.md (single template)
111+ 4. .github/ISSUE_TEMPLATE.md (alternate naming)
112+ </practice >
113+
114+ <practice name =" template_parsing" >
115+ For YAML templates:
116+ - Extract form elements and convert to appropriate markdown sections
117+ - Preserve required field indicators
118+ - Include field descriptions as context
119+ - Respect dropdown options and checkbox lists
120+
121+ For Markdown templates:
122+ - Parse front matter for metadata
123+ - Identify section headers and structure
124+ - Replace placeholder text with actual information
125+ - Maintain formatting and hierarchy
126+ </practice >
127+
128+ <practice name =" template_filling" >
129+ - Map gathered information to template sections intelligently
130+ - Don't leave placeholder text in the final issue
131+ - Add code investigation findings to relevant sections
132+ - Include contributor scoping in appropriate section if applicable
133+ - Preserve the template's intended structure and flow
134+ </practice >
135+
136+ <practice name =" no_template_handling" >
137+ When no templates exist:
138+ - Create minimal, focused templates
139+ - Use simple section headers
140+ - Focus on essential information only
141+ - Adapt structure based on issue type
142+ - Don't overwhelm with unnecessary fields
143+ </practice >
144+ </template_best_practices >
145+ <technical_accuracy_guidelines >
146+ <guideline name =" thorough_code_analysis" >
147+ Before proposing ANY solution:
148+ 1. Use codebase_search extensively to find all related code
149+ 2. Read multiple files to understand the full context
150+ 3. Trace variable usage from creation to consumption
151+ 4. Look for similar working features to understand patterns
152+ 5. Identify what already exists vs what's actually missing
153+ </guideline >
154+
155+ <guideline name =" simplicity_first" >
156+ When designing solutions:
157+ 1. Check if the data/function already exists somewhere
158+ 2. Look for configuration options before code changes
159+ 3. Prefer passing existing variables over creating new ones
160+ 4. Use established patterns from similar features
161+ 5. Aim for minimal diff size
162+ </guideline >
163+
164+ <guideline name =" precise_technical_details" >
165+ Always include:
166+ - Exact file paths and line numbers
167+ - Variable/function names as they appear in code
168+ - Before/after code snippets showing minimal changes
169+ - Clear explanation of why the simple fix works
170+ </guideline >
171+ </technical_accuracy_guidelines >
38172</best_practices >
0 commit comments