Skip to content

[BUG] .roomodes doesn't align with published JSON schema #11790

@algorhythm85

Description

@algorhythm85

Problem (one or two sentences)

When I add # yaml-language-server: $schema=https://www.schemastore.org/roomodes.json to the top of a .roomodes file, the documented structure does not validate against it. If I modify the file to conform to the schema, Roo no longer seems to understand it.

Context (who is affected and when)

Developers who want to declare a schema with which to validate their configuration.

Reproduction steps

  1. Export a built-in Roo mode (e.g. architect-export.yaml)

  2. In VSCode, add the following at the top of the file:

    # yaml-language-server: $schema=https://www.schemastore.org/roomodes.json
    ---
  3. Observe validation errors

    # yaml-language-server: $schema=https://www.schemastore.org/roomodes.json
    ---
    customModes:
      - slug: architect
        name: 🏗️ Architect
        # ...
        # Property description is not allowed. 
        description: Plan and design before implementation
        # ...
        groups:
          - read
          # Incorrect type. Expected "string | Edit Permission with Path Restrictions".
          # Value is not accepted. Valid values: "read", "edit", "browser", "command", "mcp".
          - - edit
            - fileRegex: \.md$
              description: Markdown files only
          - mcp
        # Property source is not allowed.
        source: project

According to the schema, a valid groups: configuration should look something like:

    groups:
      - read
      - type: edit
        allowedPaths: [\.md$]
      - mcp

Expected result

The configuration structure validates against the JSON schema without errors.

Actual result

There are multiple validation errors.

Variations tried (optional)

No response

App Version

v3.50.4

API Provider (optional)

None

Model Used (optional)

No response

Roo Code Task Links (optional)

No response

Relevant logs or errors (optional)

<details>
<summary>VSCode Problems Export</summary>


[{
	"resource": "<project path>/architect-export.yaml",
	"owner": "_generated_diagnostic_collection_name_#0",
	"code": "513",
	"severity": 8,
	"message": "Property description is not allowed.",
	"source": "yaml-schema: Custom Mode",
	"startLineNumber": 15,
	"startColumn": 5,
	"endLineNumber": 15,
	"endColumn": 16,
	"modelVersionId": 3,
	"origin": "extHost2"
},{
	"resource": "<project path>/architect-export.yaml",
	"owner": "_generated_diagnostic_collection_name_#0",
	"severity": 8,
	"message": "Incorrect type. Expected \"string | Edit Permission with Path Restrictions\".",
	"source": "yaml-schema: Simple Permission | Edit Permission with Path Restrictions",
	"startLineNumber": 74,
	"startColumn": 9,
	"endLineNumber": 77,
	"endColumn": 1,
	"modelVersionId": 3,
	"origin": "extHost2"
},{
	"resource": "<project path>/architect-export.yaml",
	"owner": "_generated_diagnostic_collection_name_#0",
	"code": "1",
	"severity": 8,
	"message": "Value is not accepted. Valid values: \"read\", \"edit\", \"browser\", \"command\", \"mcp\".",
	"source": "yaml-schema: Simple Permission",
	"startLineNumber": 74,
	"startColumn": 9,
	"endLineNumber": 77,
	"endColumn": 1,
	"modelVersionId": 3,
	"origin": "extHost2"
},{
	"resource": "<project path>/architect-export.yaml",
	"owner": "_generated_diagnostic_collection_name_#0",
	"code": "513",
	"severity": 8,
	"message": "Property source is not allowed.",
	"source": "yaml-schema: Custom Mode",
	"startLineNumber": 78,
	"startColumn": 5,
	"endLineNumber": 78,
	"endColumn": 11,
	"modelVersionId": 3,
	"origin": "extHost2"
}]


</details>

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions