Skip to content

Commit f8e15c9

Browse files
committed
docs: Update documentation for experimental features and add new images for context management and power steering
1 parent a354be5 commit f8e15c9

File tree

16 files changed

+294
-76
lines changed

16 files changed

+294
-76
lines changed

docs/basic-usage/using-modes.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@ Four ways to switch modes:
1919

2020
1. **Dropdown menu:** Click the selector to the left of the chat input
2121

22-
<img src="/img/modes/modes.png" alt="Using the dropdown menu to switch modes" width="400" />
22+
<img src="/img/using-modes/using-modes.png" alt="Using the dropdown menu to switch modes" width="400" />
2323

2424
2. **Slash command:** Type `/architect`, `/ask`, `/debug`, `/code`, or `/orchestrator` in the chat input
2525

26-
<img src="/img/modes/modes-1.png" alt="Using slash commands to switch modes" width="400" />
26+
<img src="/img/using-modes/using-modes-1.png" alt="Using slash commands to switch modes" width="400" />
2727

2828
3. **Toggle command/Keyboard shortcut:** Use the keyboard shortcut below, applicable to your operating system. Each press cycles through the available modes in sequence, wrapping back to the first mode after reaching the end.
2929

@@ -35,7 +35,7 @@ Four ways to switch modes:
3535

3636
4. **Accept suggestions:** Click on mode switch suggestions that Roo offers when appropriate
3737

38-
<img src="/img/modes/modes-2.png" alt="Accepting a mode switch suggestion from Roo" width="400" />
38+
<img src="/img/using-modes/using-modes-2.png" alt="Accepting a mode switch suggestion from Roo" width="400" />
3939

4040
## Built-in Modes
4141

@@ -54,10 +54,10 @@ Four ways to switch modes:
5454
| Aspect | Details |
5555
|--------|---------|
5656
| **Name** | `❓ Ask` |
57-
| **Description** | A knowledgeable technical assistant focused on answering questions without changing your codebase |
57+
| **Description** | A knowledgeable technical assistant focused on providing thorough and complete answers. It's less inclined to switch to implementing code unless explicitly requested and may use diagrams for clarification. |
5858
| **Tool Access** | Limited access: `read`, `browser`, `mcp` only (cannot edit files or run commands) |
5959
| **Ideal For** | Code explanation, concept exploration, and technical learning |
60-
| **Special Features** | Optimized for informative responses without modifying your project |
60+
| **Special Features** | Optimized for detailed, informative responses, often using diagrams for clarity, without modifying your project. |
6161

6262
### Architect Mode
6363

@@ -84,11 +84,11 @@ Four ways to switch modes:
8484
| Aspect | Details |
8585
|--------|---------|
8686
| **Name** | `🪃 Orchestrator` |
87-
| **Description** | A strategic workflow orchestrator (aka Boomerang Mode) that breaks down complex tasks and delegates them to specialized modes |
87+
| **Description** | A strategic workflow orchestrator (aka Boomerang Mode) that breaks down complex tasks and delegates them to specialized modes. Learn more about [Boomerang Tasks](/features/boomerang-tasks). |
8888
| **Tool Access** | Access to `read`, `browser`, `command`, `mcp`, and restricted `edit` (mode configuration files only: `.roomodes`, `custom_modes.json`) |
8989
| **Ideal For** | Managing multi-step projects, coordinating work across different modes, and automating complex workflows |
9090
| **Special Features** | Uses the [`new_task`](/advanced-usage/available-tools/new-task) tool to delegate subtasks to other modes. |
9191

92-
## Custom Modes
92+
## Customizing Modes
9393

94-
Create your own specialized assistants by defining tool access, file permissions, and behavior instructions. Custom modes help enforce team standards or create purpose-specific assistants. See [Custom Modes documentation](/features/custom-modes) for setup instructions.
94+
Tailor Roo Code's behavior by customizing existing modes or creating new specialized assistants. Define tool access, file permissions, and behavior instructions to enforce team standards or create purpose-specific assistants. See [Custom Modes documentation](/features/custom-modes) for setup instructions.

docs/features/custom-modes.md

Lines changed: 33 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -13,21 +13,22 @@ Each mode—including custom ones—features **Sticky Models**. This means Roo C
1313
* **Experimentation:** Safely experiment with different prompts and configurations without affecting other modes
1414
* **Team Collaboration:** Share custom modes with your team to standardize workflows
1515

16-
<img src="/img/custom-modes/custom-modes-1.png" alt="Overview of custom modes interface" width="400" />
16+
<img src="/img/custom-modes/custom-modes-3.png" alt="Overview of custom modes interface" width="500" />
1717

1818
*Roo Code's interface for creating and managing custom modes.*
1919

2020
## What's Included in a Custom Mode?
2121

2222
Custom modes are defined by several key properties. Understanding these concepts will help you tailor Roo's behavior effectively before diving into the JSON configuration.
2323

24-
| Property | Conceptual Description |
25-
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
26-
| `slug` | A **unique internal identifier** for the mode. It's used by Roo Code to reference the mode, especially for associating [mode-specific instruction files](#mode-specific-instructions-via-filesdirectories). |
27-
| `name` | The **display name** for the mode as it appears in the Roo Code user interface. This should be human-readable and descriptive. |
28-
| `roleDefinition` | The **core identity and expertise** of the mode. This text is placed at the beginning of the system prompt to define Roo's personality and primary function for this mode.<br />- **Critical First Sentence:** The first sentence (up to the first period `.`) is vital. It serves as a concise summary for Roo to understand the mode's purpose, even when it's not the active one. The entire definition is used when the mode is active. |
29-
| `groups` | Defines the **allowed toolsets and file access permissions** for the mode. You can specify which general categories of tools (like reading files, editing files, browsing, or executing commands) the mode can use. For editing, you can also specify restrictions on which file types are permissible. |
30-
| `customInstructions` | **Specific behavioral guidelines** or rules for the mode. These instructions are added near the end of the system prompt to further refine Roo's behavior beyond the `roleDefinition`. This can be provided directly in the configuration or via separate instruction files. |
24+
| UI Field / JSON Property | Conceptual Description |
25+
| ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
26+
| Slug (`slug`) | A **unique internal identifier** for the mode. It's used by Roo Code to reference the mode, especially for associating [mode-specific instruction files](#mode-specific-instructions-via-filesdirectories). |
27+
| Name (`name`) | The **display name** for the mode as it appears in the Roo Code user interface. This should be human-readable and descriptive. |
28+
| Role Definition (`roleDefinition`) | Defines the **core identity and expertise** of the mode. This text is placed at the beginning of the system prompt.<br />- Its primary function is to define Roo's personality and behavior when this mode is active.<br />- The **first sentence** (up to the first period `.`) serves as a default concise summary for Roo to understand the mode's general purpose. <br />- **However, if the `whenToUse` property is defined, `whenToUse` takes precedence** for summarizing the mode's function, especially in contexts like task orchestration or mode switching. In such cases, the first sentence of `roleDefinition` is less critical for this specific summarization task, though the entire `roleDefinition` is still used when the mode is active to guide its overall behavior. |
29+
| Available Tools (`groups`) | Defines the **allowed toolsets and file access permissions** for the mode.<br />- In the UI, this corresponds to selecting which general categories of tools (like reading files, editing files, browsing, or executing commands) the mode can use.<br />- File type restrictions for the "edit" group are typically managed via manual JSON configuration or by asking Roo to set them up, as detailed in the [JSON Property Details for `groups`](#groups). |
30+
| When to Use (optional) (`whenToUse`) | (Optional) Provides **guidance for Roo to understand the mode's purpose**, especially for automated decisions.<br />- This text is used by Roo, particularly the [`🪃 Orchestrator`](/basic-usage/using-modes#orchestrator-mode-aka-boomerang-mode) mode, for [orchestrating tasks](/features/boomerang-tasks) (e.g., via the [`new_task`](/advanced-usage/available-tools/new-task) tool).<br />- It also helps Roo decide which mode is appropriate when [switching modes](/basic-usage/using-modes#switching-between-modes) (e.g., via the [`switch_mode`](/advanced-usage/available-tools/switch-mode) tool).<br />- If populated, this description is used by Roo to understand the mode's function; otherwise, the first sentence of the `roleDefinition` is used by default. |
31+
| Custom Instructions (optional) (`customInstructions`) | **Specific behavioral guidelines** or rules for the mode.<br />- These instructions are added near the end of the system prompt to further refine Roo's behavior beyond the `roleDefinition`.<br />- This can be provided directly in the configuration or via separate instruction files. |
3132

3233
## Methods for Creating and Configuring Custom Modes
3334

@@ -47,10 +48,11 @@ Roo Code will guide you through the process, prompting for necessary information
4748
2. **Create New Mode:** Click the <Codicon name="add" /> button to the right of the Modes heading.
4849
3. **Fill in Fields:**
4950

50-
<img src="/img/custom-modes/custom-modes-2.png" alt="Custom mode creation interface in the Prompts tab" width="600" />
51-
*The custom mode creation interface showing fields for name, slug, save location, role definition, available tools, and custom instructions.*
51+
<img src="/img/custom-modes/custom-modes-4.png" alt="Custom mode creation interface in the Prompts tab" width="600" />
5252

53-
The interface provides fields for `Name`, `Slug`, `Save Location`, `Role Definition`, `Available Tools`, and `Custom Instructions`. After filling these, click the "Create Mode" button.
53+
*The custom mode creation interface showing fields for name, slug, save location, role definition, available tools, custom instructions.*
54+
55+
The interface provides fields for `Name`, `Slug`, `Save Location`, `Role Definition`, `When to Use (optional)`, `Available Tools`, and `Custom Instructions`. After filling these, click the "Create Mode" button.
5456

5557
*Refer to the [What's Included in a Custom Mode?](#whats-included-in-a-custom-mode) table for conceptual explanations of each property. File type restrictions for the "edit" tool group can be added by asking Roo or through manual JSON configuration.*
5658

@@ -70,11 +72,15 @@ Both files use the same JSON format. Each configuration file contains a `customM
7072
"slug": "mode-slug-example",
7173
"name": "Example Mode Display Name",
7274
"roleDefinition": "This mode's role and capabilities are defined here.",
75+
"whenToUse": "Describe when this mode is most appropriate here.",
76+
"customInstructions": "Additional guidelines for this example mode.",
7377
"groups": [
7478
"read",
75-
["edit", { "fileRegex": "\\.txt$", "description": "Text files only" }]
76-
],
77-
"customInstructions": "Additional guidelines for this example mode."
79+
"edit", // Can also be ["edit", { "fileRegex": "\\.md$", "description": "Markdown only" }]
80+
"browser",
81+
"command",
82+
"mcp"
83+
]
7884
}
7985
]
8086
}
@@ -97,7 +103,7 @@ Both files use the same JSON format. Each configuration file contains a `customM
97103
##### `roleDefinition`
98104
* **Purpose:** Detailed description of the mode's role, expertise, and personality.
99105
* **Placement:** This text is placed at the beginning of the system prompt when the mode is active.
100-
* **Critical First Sentence:** As noted in the table above, the first sentence is crucial for summarizing the mode's function.
106+
* **Important First Sentence:** The first sentence (up to the first period `.`) serves as a default concise summary for Roo to understand the mode's general purpose. **However, if the `whenToUse` property is defined, `whenToUse` takes precedence** for summarizing the mode's function, especially in contexts like task orchestration or mode selection. In such cases, the first sentence of `roleDefinition` is less critical for this specific summarization task, though the entire `roleDefinition` is still used when the mode is active to guide its overall behavior.
101107
* *JSON Example:* `"roleDefinition": "You are a technical writer specializing in clear documentation."`
102108

103109
##### `groups`
@@ -117,6 +123,12 @@ Both files use the same JSON format. Each configuration file contains a `customM
117123
]
118124
```
119125

126+
##### `whenToUse`
127+
* **Purpose:** (Optional) Provides guidance for Roo to understand what this mode does. This is primarily used by the [`🪃 Orchestrator`](/basic-usage/using-modes#orchestrator-mode-aka-boomerang-mode) mode for [orchestrating tasks](/features/boomerang-tasks) (e.g., via the [`new_task`](/advanced-usage/available-tools/new-task) tool) and for determining the appropriate mode when [switching modes](/basic-usage/using-modes#switching-between-modes) (e.g., via the [`switch_mode`](/advanced-usage/available-tools/switch-mode) tool).
128+
* **Format:** A string describing ideal scenarios or task types for this mode.
129+
* **Usage:** If populated, Roo uses this description to understand the mode's function. Otherwise, the first sentence of the `roleDefinition` is used by default.
130+
* **JSON Example:** `"whenToUse": "This mode is best for refactoring Python code to improve performance and readability."`
131+
120132
##### `customInstructions`
121133
* **Purpose:** A string containing additional behavioral guidelines for the mode.
122134
* **Placement:** This text is added near the end of the system prompt.
@@ -207,11 +219,12 @@ To customize a default mode across all your projects:
207219
"slug": "code", // Matches the default 'code' mode slug
208220
"name": "💻 Code (Global Override)", // Custom display name
209221
"roleDefinition": "You are a software engineer with global-specific constraints",
222+
"whenToUse": "This globally overridden code mode is for JS/TS tasks.",
223+
"customInstructions": "Focus on project-specific JS/TS development",
210224
"groups": [
211225
"read",
212226
["edit", { "fileRegex": "\\.(js|ts)$", "description": "JS/TS files only" }]
213-
],
214-
"customInstructions": "Focus on project-specific JS/TS development"
227+
]
215228
}]
216229
}
217230
```
@@ -233,11 +246,12 @@ To override a default mode for just one project:
233246
"slug": "code", // Matches the default 'code' mode slug
234247
"name": "💻 Code (Project-Specific)", // Custom display name
235248
"roleDefinition": "You are a software engineer with project-specific constraints",
249+
"whenToUse": "This project-specific code mode is for JS/TS tasks within this project.",
250+
"customInstructions": "Focus on project-specific JS/TS development",
236251
"groups": [
237252
"read",
238253
["edit", { "fileRegex": "\\.(js|ts)$", "description": "JS/TS files only" }]
239-
],
240-
"customInstructions": "Focus on project-specific JS/TS development"
254+
]
241255
}]
242256
}
243257
```
@@ -308,40 +322,5 @@ Before applying a regex pattern:
308322
2. Remember the double backslash rule for JSON.
309323
3. Start with simpler patterns and build complexity gradually.
310324

311-
## Example Configurations
312-
313-
Each example shows different aspects of mode configuration:
314-
315-
### Basic Documentation Writer
316-
```json
317-
{
318-
"customModes": [{
319-
"slug": "docs-writer",
320-
"name": "Documentation Writer",
321-
"roleDefinition": "You are a technical writer specializing in clear documentation",
322-
"groups": [
323-
"read",
324-
["edit", { "fileRegex": "\\.md$", "description": "Markdown files only" }]
325-
],
326-
"customInstructions": "Focus on clear explanations and examples"
327-
}]
328-
}
329-
```
330-
331-
### Test Engineer with File Restrictions
332-
```json
333-
{
334-
"customModes": [{
335-
"slug": "test-engineer",
336-
"name": "Test Engineer",
337-
"roleDefinition": "You are a test engineer focused on code quality",
338-
"groups": [
339-
"read",
340-
["edit", { "fileRegex": "\\.(test|spec)\\.(js|ts)$", "description": "Test files only" }]
341-
]
342-
}]
343-
}
344-
```
345-
346325
## Community Gallery
347326
Ready to explore more? Check out the [Custom Modes Gallery](/community/#custom-modes-gallery) section on the main community page to discover and share custom modes created by the community!

0 commit comments

Comments
 (0)