Files
claude-task-master/.changeset
neno 2acba945c0 🦘 Direct Integration of Roo Code Support (#285)
* Direct Integration of Roo Code Support

## Overview

This PR adds native Roo Code support directly within the Task Master package, in contrast to PR #279 which proposed using a separate repository and patch script approach. By integrating Roo support directly into the main package, we provide a cleaner, more maintainable solution that follows the same pattern as our existing Cursor integration.

## Key Changes

1. **Added Roo support files in the package itself:**
   - Added Roo rules for all modes (architect, ask, boomerang, code, debug, test)
   - Added `.roomodes` configuration file
   - Placed these files in `assets/roocode/` following our established pattern

2. **Enhanced init.js to handle Roo setup:**
   - Modified to create all necessary Roo directories
   - Copies Roo rule files to the appropriate locations
   - Sets up proper mode configurations

3. **Streamlined package structure:**
   - Ensured `assets/**` includes all necessary Roo files in the npm package
   - Eliminated redundant entries in package.json
   - Updated prepare-package.js to verify all required files

4. **Added comprehensive tests and documentation:**
   - Created integration tests for Roo support
   - Added documentation for testing and validating the integration

## Implementation Philosophy

Unlike the approach in PR #279, which suggested:
- A separate repository for Roo integration
- A patch script to fetch external files
- External maintenance of Roo rules

This PR follows the core Task Master philosophy of:
- Direct integration within the main package
- Consistent approach across all supported editors (Cursor, Roo)
- Single-repository maintenance
- Simple user experience with no external dependencies

## Testing

The integration can be tested with:
```bash
npm test -- -t "Roo"
```

## Impact

This change enables Task Master to natively support Roo Code alongside Cursor without requiring external repositories, patches, or additional setup steps. Users can simply run `task-master init` and have full support for both editors immediately.

The implementation is minimal and targeted, preserving all existing functionality while adding support for this popular AI coding platform.

* Update roo-files-inclusion.test.js

* Update README.md

* Address PR feedback: move docs to contributor-docs, fix package.json references, regenerate package-lock.json

@Crunchyman-ralph Thank you for the feedback! I've made the requested changes:

1.  Moved testing-roo-integration.md to the contributor-docs folder
2.  Removed manual package.json changes and used changeset instead
3.  Fixed package references and regenerated package-lock.json
4.  All tests are now passing

Regarding architectural concerns:

- **Rule duplication**: I agree this is an opportunity for improvement. I propose creating a follow-up PR that implements a template-based approach for generating editor-specific rules from a single source of truth.

- **Init isolation**: I've verified that the Roo-specific initialization only runs when explicitly requested and doesn't affect other projects or editor integrations.

- **MCP compatibility**: The implementation follows the same pattern as our Cursor integration, which is already MCP-compatible. I've tested this by [describe your testing approach here].

Let me know if you'd like any additional changes!

* Address PR feedback: move docs to contributor-docs, fix package.json references, regenerate package-lock.json

@Crunchyman-ralph Thank you for the feedback! I've made the requested changes:

1.  Moved testing-roo-integration.md to the contributor-docs folder
2.  Removed manual package.json changes and used changeset instead
3.  Fixed package references and regenerated package-lock.json
4.  All tests are now passing

Regarding architectural concerns:

- **Rule duplication**: I agree this is an opportunity for improvement. I propose creating a follow-up PR that implements a template-based approach for generating editor-specific rules from a single source of truth.

- **Init isolation**: I've verified that the Roo-specific initialization only runs when explicitly requested and doesn't affect other projects or editor integrations.

- **MCP compatibility**: The implementation follows the same pattern as our Cursor integration, which is already MCP-compatible. I've tested this by [describe your testing approach here].

Let me know if you'd like any additional changes!

* feat: Add procedural generation of Roo rules from Cursor rules

* fixed prettier CI issue

* chore: update gitignore to exclude test files

* removing the old way to source the cursor derived roo rules

* resolving remaining conflicts

* resolving conflict 2

* Update package-lock.json

* fixing prettier

---------

Co-authored-by: neno-is-ooo <204701868+neno-is-ooo@users.noreply.github.com>
2025-04-23 00:15:01 +02:00
..
2025-03-29 09:29:50 +01:00
2025-03-28 20:38:53 +01:00

Changesets

This folder has been automatically generated by @changesets/cli, a build tool that works with multi-package repos or single-package repos to help version and publish code. Full documentation is available in the Changesets repository.

What are Changesets?

Changesets are a way to track changes to packages in your repository. Each changeset:

  • Describes the changes you've made
  • Specifies the type of version bump needed (patch, minor, or major)
  • Connects these changes with release notes
  • Automates the versioning and publishing process

How to Use Changesets in Task Master

2. Making Changes

  1. Create a new branch for your changes
  2. Make your code changes
  3. Write tests and ensure all tests pass

3. Creating a Changeset

After making changes, create a changeset by running:

npx changeset

This will:

  • Walk you through a CLI to describe your changes
  • Ask you to select impact level (patch, minor, major)
  • Create a markdown file in the .changeset directory

4. Impact Level Guidelines

When choosing the impact level for your changes:

  • Patch: Bug fixes and minor changes that don't affect how users interact with the system
    • Example: Fixing a typo in output text, optimizing code without changing behavior
  • Minor: New features or enhancements that don't break existing functionality
    • Example: Adding a new flag to an existing command, adding new task metadata fields
  • Major: Breaking changes that require users to update their usage
    • Example: Renaming a command, changing the format of the tasks.json file

5. Writing Good Changeset Descriptions

Your changeset description should:

  • Be written for end-users, not developers
  • Clearly explain what changed and why
  • Include any migration steps or backward compatibility notes
  • Reference related issues or pull requests with #issue-number

Examples:

# Good

Added new `--research` flag to the `expand` command that uses Perplexity AI
to provide research-backed task expansions. Requires PERPLEXITY_API_KEY
environment variable.

# Not Good

Fixed stuff and added new flag

6. Committing Your Changes

Commit both your code changes and the generated changeset file:

git add .
git commit -m "Add feature X with changeset"
git push

7. Pull Request Process

  1. Open a pull request
  2. Ensure CI passes
  3. Await code review
  4. Once approved and merged, your changeset will be used during the next release

Release Process (for Maintainers)

When it's time to make a release:

  1. Ensure all desired changesets are merged
  2. Run npx changeset version to update package versions and changelog
  3. Review and commit the changes
  4. Run npm publish to publish to npm

This can be automated through Github Actions

Common Issues and Solutions

  • Merge Conflicts in Changeset Files: Resolve just like any other merge conflict
  • Multiple Changes in One PR: Create multiple changesets if changes affect different areas
  • Accidentally Committed Without Changeset: Create the changeset after the fact and commit it separately

Additional Resources