Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
112 changes: 85 additions & 27 deletions .roo/rules-release-notes-writer/1_workflow.xml
Original file line number Diff line number Diff line change
Expand Up @@ -49,40 +49,98 @@
</steps>
</phase>
<phase name="process_each_pr">
<description>For each PR, follow a micro-workflow to gather, analyze, and write to a temporary file.</description>
<micro_workflow>
<description>Process PRs individually, investigating each one thoroughly and storing findings in a temporary file for later compilation.</description>
<iterative_workflow>
<overview>
For each PR in the list, execute a complete investigation workflow and immediately
store the findings in a temporary markdown file (e.g., temp_pr_analysis.md).
This allows for incremental building of release note data.
</overview>

<per_pr_steps>
<step number="1">
<action>Gather comprehensive PR details</action>
<tools>
<tool>github.get_pull_request - Title, author, description</tool>
<tool>github.get_pull_request_files - Changed files (optional)</tool>
<tool>github.get_pull_request_diff - Code changes (if needed for clarity)</tool>
</tools>
<details>Extract PR title, author username, and description for analysis</details>
</step>

<step number="2">
<action>Extract and gather linked issue details</action>
<process>
<substep>Parse PR description for issue references (Fixes #123, Closes #456, etc.)</substep>
<substep>For each found issue number, use github.get_issue to gather details</substep>
<substep>Extract issue reporter username and title for context</substep>
</process>
<tools>
<tool>github.get_issue - For each linked issue found</tool>
</tools>
</step>

<step number="3">
<action>Analyze and categorize the change</action>
<analysis_framework>
<question>What changed? (core functionality/feature affected)</question>
<question>Why did it change? (problem being solved)</question>
<question>How does this impact users? (benefits in plain language)</question>
<question>What category? (bug fix, feature, improvement, etc.)</question>
</analysis_framework>
</step>

<step number="4">
<action>Write findings to temporary file</action>
<process>
<substep>Create or append to temp_pr_analysis.md</substep>
<substep>Include structured data for this PR</substep>
<substep>Store all contributor information</substep>
<substep>Include categorization and user impact analysis</substep>
</process>
<file_format>
Use a consistent markdown format that can be easily parsed later
for generating the final release notes
</file_format>
</step>
</per_pr_steps>

<completion_per_pr>
After each PR analysis is complete and written to the temporary file,
move on to the next PR. This ensures thorough investigation of each
change before proceeding.
</completion_per_pr>
</iterative_workflow>
</phase>
<phase name="compile_final_release_notes">
<description>Read the temporary analysis file and compile all findings into the final release notes format</description>
<steps>
<step number="1">
<action>Gather comprehensive PR details</action>
<tools>
<tool>github.get_pull_request - Title, author, description</tool>
<tool>github.get_pull_request_files - Changed files</tool>
<tool>github.get_pull_request_diff - Code changes</tool>
<tool>github.get_pull_request_comments - Additional context if needed</tool>
</tools>
<action>Read temporary analysis file</action>
<details>
Read the complete temp_pr_analysis.md file that contains all individual PR investigations
</details>
</step>
<step number="2">
<action>Gather related issue details</action>
<tools>
<tool>github.get_issue</tool>
</tools>
<details>From the PR description, extract the issue number and retrieve details.</details>
<action>Group and organize findings</action>
<details>
Group PRs by category (Bug Fixes, QOL Improvements, Provider Updates, etc.)
based on the analysis stored for each PR
</details>
</step>
<step number="3">
<action>Append analysis to temporary file</action>
<action>Format for release notes</action>
<details>
Analyze the gathered information for a single PR and append the summary
to a temporary file. This builds a comprehensive dataset incrementally.
</details>
Transform the organized findings into the final release notes format
with proper acknowledgments and user-friendly language
</details>
</step>
<step number="4">
<action>Clean up temporary file</action>
<details>
Optionally remove or archive the temporary analysis file after successful completion
</details>
</step>
</micro_workflow>
</phase>
<phase name="transform_to_user_benefits">
<description>Analyze technical changes from the temporary file and convert to user-facing benefits based on the official changelog</description>
<steps>
<step>Identify what changed (core functionality/feature)</step>
<step>Understand why it changed (problem being solved)</step>
<step>Determine user impact (benefits in plain language)</step>
<step>Categorize changes (features, fixes, improvements)</step>
</steps>
</phase>
<phase name="generate_documentation">
Expand Down
17 changes: 17 additions & 0 deletions .roo/rules-release-notes-writer/2_formatting_standards.xml
Original file line number Diff line number Diff line change
Expand Up @@ -82,11 +82,28 @@ Concluding sentence about the overall benefit to users.

<contributor_acknowledgments>
<format>(thanks username!)</format>
<multiple_contributors>
<format>(thanks username1, username2!)</format>
<description>When multiple contributors are involved (PR author + issue reporter)</description>
</multiple_contributors>
<rules>
<rule>Omit @ symbol from GitHub usernames</rule>
<rule>Place before PR link in parentheses</rule>
<rule>Use consistent format throughout</rule>
<rule>Include both PR author and issue reporter when available</rule>
<rule>List PR author first, then issue reporter</rule>
<rule>Separate multiple usernames with commas</rule>
</rules>
<examples>
<example>
<description>PR author only</description>
<format>(thanks john-doe!)</format>
</example>
<example>
<description>PR author + issue reporter</description>
<format>(thanks john-doe, jane-smith!)</format>
</example>
</examples>
</contributor_acknowledgments>

<pr_links>
Expand Down
82 changes: 76 additions & 6 deletions .roo/rules-release-notes-writer/3_pr_analysis_patterns.xml
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@
<structure><![CDATA[
## [User-Friendly Feature Name]

We've [high-level description of improvement] (thanks [Author]!) ([#PR_NUMBER](https://github.com/RooCodeInc/Roo-Code/pull/PR_NUMBER)):
We've [high-level description of improvement] (thanks [Contributors]!) ([#PR_NUMBER](https://github.com/RooCodeInc/Roo-Code/pull/PR_NUMBER)):

- **[Benefit Category 1]**: [How this helps users in plain language]
- **[Benefit Category 2]**: [Another user benefit explained simply]
Expand All @@ -67,7 +67,7 @@ We've [high-level description of improvement] (thanks [Author]!) ([#PR_NUMBER](h
<example><![CDATA[
## Intelligent Context Condensing Now Default

We've made our smart context management the default behavior for all conversations (thanks john-doe!) ([#1234](https://github.com/RooCodeInc/Roo-Code/pull/1234)):
We've made our smart context management the default behavior for all conversations (thanks john-doe, issue-reporter!) ([#1234](https://github.com/RooCodeInc/Roo-Code/pull/1234)):

- **Better Performance**: Conversations stay fast even with large codebases
- **Smarter Responses**: Roo focuses on the most relevant code for your current task
Expand All @@ -79,21 +79,45 @@ This means you can work with larger projects without worrying about context mana

<template type="bug_fix">
<structure><![CDATA[
* **[Problem Fixed]**: [Brief description of what users can now do] (thanks [Author]!) ([#PR](link))
* **[Problem Fixed]**: [Brief description of what users can now do] (thanks [Contributors]!) ([#PR](link))
]]></structure>
<example><![CDATA[
* **File Editing**: Fixed issue where large files couldn't be edited properly (thanks jane-smith!) ([#1235](https://github.com/RooCodeInc/Roo-Code/pull/1235))
* **File Editing**: Fixed issue where large files couldn't be edited properly (thanks jane-smith, bug-reporter!) ([#1235](https://github.com/RooCodeInc/Roo-Code/pull/1235))
]]></example>
</template>

<template type="improvement">
<structure><![CDATA[
* **[Area Improved]**: [What's better for users] ([#PR](link))
* **[Area Improved]**: [What's better for users] (thanks [Contributors]!) ([#PR](link))
]]></structure>
<example><![CDATA[
* **Search Performance**: Code searches now complete 2x faster for large projects ([#1236](https://github.com/RooCodeInc/Roo-Code/pull/1236))
* **Search Performance**: Code searches now complete 2x faster for large projects (thanks perf-dev, suggester!) ([#1236](https://github.com/RooCodeInc/Roo-Code/pull/1236))
]]></example>
</template>

<contributor_identification>
<pr_author>
<description>Always include the PR author as the primary contributor</description>
<source>user.login field from github.get_pull_request</source>
</pr_author>
<issue_reporter>
<description>Include issue reporter when PR references an issue</description>
<source>user.login field from github.get_issue for linked issues</source>
<patterns>
<pattern>Fixes #123</pattern>
<pattern>Closes #456</pattern>
<pattern>Resolves #789</pattern>
<pattern>Fix #101</pattern>
<pattern>Close #202</pattern>
</patterns>
</issue_reporter>
<ordering>
<rule>List PR author first</rule>
<rule>List issue reporter(s) second</rule>
<rule>Separate multiple contributors with commas</rule>
<rule>Remove duplicates if same person is both PR author and issue reporter</rule>
</ordering>
</contributor_identification>
</pr_templates>

<categorization_guide>
Expand Down Expand Up @@ -187,4 +211,50 @@ This means you can work with larger projects without worrying about context mana
<keywords>secure, safe, protected</keywords>
</category>
</benefit_categories>

<subtask_mode_patterns>
<description>
Patterns specific to operating as a subtask for single PR investigation
</description>
<message_recognition>
<pattern>Investigate PR #(\d+) for release notes v([\d.]+)</pattern>
<extraction>
<field name="pr_number">First capture group</field>
<field name="version">Second capture group</field>
</extraction>
</message_recognition>
<workflow_differences>
<difference>
<main_mode>Processes multiple PRs in sequence</main_mode>
<subtask_mode>Focuses on single PR investigation</subtask_mode>
</difference>
<difference>
<main_mode>Creates complete release notes files</main_mode>
<subtask_mode>Appends findings to temp_pr_analysis.md</subtask_mode>
</difference>
<difference>
<main_mode>Updates multiple documentation files</main_mode>
<subtask_mode>Only writes to temporary analysis file</subtask_mode>
</difference>
</workflow_differences>
<output_format>
<description>Standardized format for subtask findings</description>
<template><![CDATA[
## PR #[number]: [Title]

**Author**: [username]
**Linked Issues**: #[issue] (reporter: [username]), ...
**Category**: [Bug Fix/Feature/Improvement/etc.]
**User Impact**: [Clear description of benefit to users]
**Contributors**: [all contributors including PR author and issue reporters]

---
]]></template>
<notes>
<note>Always append to temp_pr_analysis.md using insert_content with line 0</note>
<note>Include the separator (---) to clearly delineate entries</note>
<note>Maintain consistent formatting for easy parsing</note>
</notes>
</output_format>
</subtask_mode_patterns>
</pr_analysis_patterns>
Loading