From 70db387a699a5acabdca7d659547a006b1871896 Mon Sep 17 00:00:00 2001 From: Roo Code Date: Fri, 27 Feb 2026 22:14:43 +0000 Subject: [PATCH] fix: make content optional in RuleFile schema definition The content property in RuleFile is now optional, matching the defensive runtime check in CustomModesManager that handles missing content. Only relativePath remains required. --- schemas/roomodes.json | 2 +- src/utils/__tests__/roomodes-schema.spec.ts | 22 +++++++++++++++++++-- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/schemas/roomodes.json b/schemas/roomodes.json index 90b6f55fa0..593382f693 100644 --- a/schemas/roomodes.json +++ b/schemas/roomodes.json @@ -51,7 +51,7 @@ "RuleFile": { "type": "object", "description": "A rules file associated with a mode, used during import/export.", - "required": ["relativePath", "content"], + "required": ["relativePath"], "additionalProperties": false, "properties": { "relativePath": { diff --git a/src/utils/__tests__/roomodes-schema.spec.ts b/src/utils/__tests__/roomodes-schema.spec.ts index 52784ee430..335e400645 100644 --- a/src/utils/__tests__/roomodes-schema.spec.ts +++ b/src/utils/__tests__/roomodes-schema.spec.ts @@ -352,7 +352,25 @@ describe("roomodes JSON schema", () => { expect(valid).toBe(true) }) - it("should reject rulesFiles entries missing required fields", () => { + it("should accept rulesFiles entries with only relativePath (content is optional)", () => { + const config = { + customModes: [ + { + slug: "path-only-rules", + name: "Path Only Rules", + roleDefinition: "A mode with rules files that only have relativePath.", + groups: ["read"], + rulesFiles: [{ relativePath: "rule1.md" }], + }, + ], + } + + const valid = validate(config) + expect(validate.errors).toBeNull() + expect(valid).toBe(true) + }) + + it("should reject rulesFiles entries missing required relativePath", () => { const config = { customModes: [ { @@ -360,7 +378,7 @@ describe("roomodes JSON schema", () => { name: "Bad Rules", roleDefinition: "A mode with invalid rules files.", groups: ["read"], - rulesFiles: [{ relativePath: "rule1.md" }], + rulesFiles: [{ content: "some content" }], }, ], }