Boomerang Tasks
Boomerang Tasks (also known as subtasks or task orchestration) allow you to break down complex projects into smaller, manageable pieces. This decomposition makes it possible to delegate parts of your work to specialized assistants, each using a different Roo Code mode tailored for that specific job (like code
, architect
, or debug
).
Boomerang Mode is a Custom Mode
The Boomerang Mode mentioned here is not a built-in mode but a custom mode you can create yourself. It's specifically designed to orchestrate workflows by breaking down tasks and delegating them to other modes.
Why Use Boomerang Tasks?
- Tackle Complexity: Break large, multi-step projects (e.g., building a full feature) into focused subtasks (e.g., design, implementation, documentation).
- Use Specialized Modes: Automatically delegate subtasks to the mode best suited for that specific piece of work, leveraging specialized capabilities for optimal results.
- Maintain Focus & Efficiency: Each subtask operates in its own isolated context with a separate conversation history. This prevents the parent task from becoming cluttered with the detailed execution steps, allowing it to focus efficiently on the high-level workflow and manage the overall process based on concise summaries from completed subtasks.
- Streamline Workflows: Results from one subtask can be automatically passed to the next, creating a smooth flow (e.g., architectural decisions feeding into the coding task).
How It Works
- Use a Custom Mode configured for orchestration (like the Boomerang Mode described below), Roo can analyze a complex task and suggest breaking it down into a subtask.
- The parent task pauses, and the new subtask begins in a different mode.
- When the subtask's goal is achieved, Roo signals completion.
- The parent task resumes with only the summary of the subtask. The parent uses this summary to continue the main workflow.
Key Considerations
Approval Required
By default, you must approve the creation and completion of each subtask. This can be automated via the Auto-Approving Actions settings if desired.
Context Isolation and Transfer
- Down: Via the initial instructions provided when the subtask is created.
- Up: Via the final summary provided when the subtask finishes. Be mindful that only this summary returns to the parent.
Navigation
Roo's interface helps you see the hierarchy of tasks (which task is the parent, which are children). You can typically navigate between active and paused tasks.
Boomerang Tasks provide a powerful way to manage complex development workflows directly within Roo Code, leveraging specialized modes for maximum efficiency.
Keep Tasks Focused
Setting Up Boomerang Mode
Download Configuration
You can download the Boomerang Mode configuration file here: boomerang-mode.roomodes
. Rename the downloaded file to .roomodes
and place it in the root directory of your project.
Manual Configuration
You can also create your own Boomerang Mode. Follow the steps in the Custom Modes documentation, using the text below for the key configuration fields.
- Recommended Tool Access: Ensure all tool access checkboxes are unchecked in the "Available Tools" section when creating the mode. Boomerang Mode primarily uses the
new_task
capability (which doesn't require specific tool group permissions) to delegate work to other modes. Role Definition: Copy this for the 'Role Definition' field:
You are Roo, a strategic workflow orchestrator who coordinates complex tasks by delegating them to appropriate specialized modes. You have a comprehensive understanding of each mode's capabilities and limitations, allowing you to effectively break down complex problems into discrete tasks that can be solved by different specialists.
Mode-specific Custom Instructions: Copy this for the 'Mode-specific Custom Instructions' field:
Your role is to coordinate complex workflows by delegating tasks to specialized modes. As an orchestrator, you should:
1. When given a complex task, break it down into logical subtasks that can be delegated to appropriate specialized modes.
2. For each subtask, use the `new_task` tool to delegate. Choose the most appropriate mode for the subtask's specific goal and provide comprehensive instructions in the `message` parameter. These instructions must include:
* All necessary context from the parent task or previous subtasks required to complete the work.
* A clearly defined scope, specifying exactly what the subtask should accomplish.
* An explicit statement that the subtask should *only* perform the work outlined in these instructions and not deviate.
* An instruction for the subtask to signal completion by using the `attempt_completion` tool, providing a concise yet thorough summary of the outcome in the `result` parameter, keeping in mind that this summary will be the source of truth used to keep track of what was completed on this project.
* A statement that these specific instructions supersede any conflicting general instructions the subtask's mode might have.
3. Track and manage the progress of all subtasks. When a subtask is completed, analyze its results and determine the next steps.
4. Help the user understand how the different subtasks fit together in the overall workflow. Provide clear reasoning about why you're delegating specific tasks to specific modes.
5. When all subtasks are completed, synthesize the results and provide a comprehensive overview of what was accomplished.
6. Ask clarifying questions when necessary to better understand how to break down complex tasks effectively.
7. Suggest improvements to the workflow based on the results of completed subtasks.
Use subtasks to maintain clarity. If a request significantly shifts focus or requires a different expertise (mode), consider creating a subtask rather than overloading the current one.
Footnotes
- This context is passed via the message parameter of the
new_task
tool. - The mode for the subtask is specified via the mode parameter of the
new_task
tool during initiation. - This summary is passed via the result parameter of the
attempt_completion
tool when the subtask finishes.