Skip to content

Commit 9de5de9

Browse files
3.16.x (#190)
* docs: Update update notes for versions 3.16.4, 3.16.5, 3.16.6, and 3.17 * docs: Update documentation for experimental features and add new images for context management and power steering * docs: Update links in release notes for improved navigation and clarity * docs: Update update notes for versions 3.16.4, 3.16.5, 3.16.6, and 3.17 * docs: Update documentation for experimental features and add new images for context management and power steering * docs: Update links in release notes for improved navigation and clarity * docs: Update image path in release notes for v3.17 and v3.17.0
1 parent ff7d034 commit 9de5de9

File tree

21 files changed

+395
-89
lines changed

21 files changed

+395
-89
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.mdx

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

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

3636
*Roo Code's interface for creating and managing custom modes.*
3737

3838
## What's Included in a Custom Mode?
3939

4040
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.
4141

42-
| Property | Conceptual Description |
43-
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
44-
| `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). |
45-
| `name` | The **display name** for the mode as it appears in the Roo Code user interface. This should be human-readable and descriptive. |
46-
| `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. |
47-
| `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. |
48-
| `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. |
42+
| UI Field / JSON Property | Conceptual Description |
43+
| ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
44+
| 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). |
45+
| Name (`name`) | The **display name** for the mode as it appears in the Roo Code user interface. This should be human-readable and descriptive. |
46+
| 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. |
47+
| 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). |
48+
| 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. |
49+
| 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. |
4950

5051
## Methods for Creating and Configuring Custom Modes
5152

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

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

71-
The interface provides fields for `Name`, `Slug`, `Save Location`, `Role Definition`, `Available Tools`, and `Custom Instructions`. After filling these, click the "Create Mode" button.
71+
*The custom mode creation interface showing fields for name, slug, save location, role definition, available tools, custom instructions.*
72+
73+
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.
7274

7375
*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.*
7476

@@ -88,11 +90,15 @@ Both files use the same JSON format. Each configuration file contains a `customM
8890
"slug": "mode-slug-example",
8991
"name": "Example Mode Display Name",
9092
"roleDefinition": "This mode's role and capabilities are defined here.",
93+
"whenToUse": "Describe when this mode is most appropriate here.",
94+
"customInstructions": "Additional guidelines for this example mode.",
9195
"groups": [
9296
"read",
93-
["edit", { "fileRegex": "\\.txt$", "description": "Text files only" }]
94-
],
95-
"customInstructions": "Additional guidelines for this example mode."
97+
"edit", // Can also be ["edit", { "fileRegex": "\\.md$", "description": "Markdown only" }]
98+
"browser",
99+
"command",
100+
"mcp"
101+
]
96102
}
97103
]
98104
}
@@ -115,7 +121,7 @@ Both files use the same JSON format. Each configuration file contains a `customM
115121
##### `roleDefinition`
116122
* **Purpose:** Detailed description of the mode's role, expertise, and personality.
117123
* **Placement:** This text is placed at the beginning of the system prompt when the mode is active.
118-
* **Critical First Sentence:** As noted in the table above, the first sentence is crucial for summarizing the mode's function.
124+
* **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.
119125
* *JSON Example:* `"roleDefinition": "You are a technical writer specializing in clear documentation."`
120126

121127
##### `groups`
@@ -135,6 +141,12 @@ Both files use the same JSON format. Each configuration file contains a `customM
135141
]
136142
```
137143

144+
##### `whenToUse`
145+
* **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).
146+
* **Format:** A string describing ideal scenarios or task types for this mode.
147+
* **Usage:** If populated, Roo uses this description to understand the mode's function. Otherwise, the first sentence of the `roleDefinition` is used by default.
148+
* **JSON Example:** `"whenToUse": "This mode is best for refactoring Python code to improve performance and readability."`
149+
138150
##### `customInstructions`
139151
* **Purpose:** A string containing additional behavioral guidelines for the mode.
140152
* **Placement:** This text is added near the end of the system prompt.
@@ -225,11 +237,12 @@ To customize a default mode across all your projects:
225237
"slug": "code", // Matches the default 'code' mode slug
226238
"name": "💻 Code (Global Override)", // Custom display name
227239
"roleDefinition": "You are a software engineer with global-specific constraints",
240+
"whenToUse": "This globally overridden code mode is for JS/TS tasks.",
241+
"customInstructions": "Focus on project-specific JS/TS development",
228242
"groups": [
229243
"read",
230244
["edit", { "fileRegex": "\\.(js|ts)$", "description": "JS/TS files only" }]
231-
],
232-
"customInstructions": "Focus on project-specific JS/TS development"
245+
]
233246
}]
234247
}
235248
```
@@ -251,11 +264,12 @@ To override a default mode for just one project:
251264
"slug": "code", // Matches the default 'code' mode slug
252265
"name": "💻 Code (Project-Specific)", // Custom display name
253266
"roleDefinition": "You are a software engineer with project-specific constraints",
267+
"whenToUse": "This project-specific code mode is for JS/TS tasks within this project.",
268+
"customInstructions": "Focus on project-specific JS/TS development",
254269
"groups": [
255270
"read",
256271
["edit", { "fileRegex": "\\.(js|ts)$", "description": "JS/TS files only" }]
257-
],
258-
"customInstructions": "Focus on project-specific JS/TS development"
272+
]
259273
}]
260274
}
261275
```
@@ -326,40 +340,5 @@ Before applying a regex pattern:
326340
2. Remember the double backslash rule for JSON.
327341
3. Start with simpler patterns and build complexity gradually.
328342

329-
## Example Configurations
330-
331-
Each example shows different aspects of mode configuration:
332-
333-
### Basic Documentation Writer
334-
```json
335-
{
336-
"customModes": [{
337-
"slug": "docs-writer",
338-
"name": "Documentation Writer",
339-
"roleDefinition": "You are a technical writer specializing in clear documentation",
340-
"groups": [
341-
"read",
342-
["edit", { "fileRegex": "\\.md$", "description": "Markdown files only" }]
343-
],
344-
"customInstructions": "Focus on clear explanations and examples"
345-
}]
346-
}
347-
```
348-
349-
### Test Engineer with File Restrictions
350-
```json
351-
{
352-
"customModes": [{
353-
"slug": "test-engineer",
354-
"name": "Test Engineer",
355-
"roleDefinition": "You are a test engineer focused on code quality",
356-
"groups": [
357-
"read",
358-
["edit", { "fileRegex": "\\.(test|spec)\\.(js|ts)$", "description": "Test files only" }]
359-
]
360-
}]
361-
}
362-
```
363-
364343
## Community Gallery
365344
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)