From 17d812c6a673e63137bcddc9fb56ad5d9582c96d Mon Sep 17 00:00:00 2001 From: JunghwanNA <70629228+shaun0927@users.noreply.github.com> Date: Fri, 17 Apr 2026 00:43:15 +0900 Subject: [PATCH] Point the .roomodes schema identity at the actual JSON document The generated schema currently advertises a GitHub blob page as its $id, which returns HTML rather than the schema document itself. This updates the source-of-truth generator and checked-in schema to use a JSON-serving raw URL, and adds a regression assertion for the canonical metadata value. Constraint: Must keep the checked-in schema aligned with the generator output Rejected: Leave the blob URL in place | Schema consumers dereferencing $id receive HTML Confidence: high Scope-risk: narrow Reversibility: clean Directive: If the schema is moved in the future, keep $id pointing at a JSON-serving canonical URL Tested: pnpm --dir packages/types exec vitest run src/__tests__/roomodes-schema.spec.ts src/__tests__/roomodes-schema-sync.spec.ts Not-tested: External IDE/schema consumer end-to-end dereference behavior --- packages/types/src/__tests__/roomodes-schema.spec.ts | 4 ++++ packages/types/src/roomodes-schema.ts | 2 +- schemas/roomodes.json | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/types/src/__tests__/roomodes-schema.spec.ts b/packages/types/src/__tests__/roomodes-schema.spec.ts index f3530a225d2..128fc26987f 100644 --- a/packages/types/src/__tests__/roomodes-schema.spec.ts +++ b/packages/types/src/__tests__/roomodes-schema.spec.ts @@ -28,6 +28,10 @@ describe("roomodes JSON schema", () => { expect(validate).toBeDefined() }) + it("should advertise a JSON-serving canonical $id", () => { + expect(schema["$id"]).toBe("https://raw.githubusercontent.com/RooCodeInc/Roo-Code/main/schemas/roomodes.json") + }) + it("should accept a minimal valid .roomodes config", () => { const config = { customModes: [ diff --git a/packages/types/src/roomodes-schema.ts b/packages/types/src/roomodes-schema.ts index 62833956867..54e2ef7833b 100644 --- a/packages/types/src/roomodes-schema.ts +++ b/packages/types/src/roomodes-schema.ts @@ -50,7 +50,7 @@ export function generateRoomodesJsonSchema(): Record { target: "jsonSchema7", }) as Record - jsonSchema["$id"] = "https://github.com/RooCodeInc/Roo-Code/blob/main/schemas/roomodes.json" + jsonSchema["$id"] = "https://raw.githubusercontent.com/RooCodeInc/Roo-Code/main/schemas/roomodes.json" jsonSchema["title"] = "Roo Code Custom Modes" jsonSchema["description"] = "Schema for .roomodes configuration files used by Roo Code to define custom modes." diff --git a/schemas/roomodes.json b/schemas/roomodes.json index 2b4349afcbc..233dd9f8346 100644 --- a/schemas/roomodes.json +++ b/schemas/roomodes.json @@ -90,7 +90,7 @@ "required": ["customModes"], "additionalProperties": false, "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://github.com/RooCodeInc/Roo-Code/blob/main/schemas/roomodes.json", + "$id": "https://raw.githubusercontent.com/RooCodeInc/Roo-Code/main/schemas/roomodes.json", "title": "Roo Code Custom Modes", "description": "Schema for .roomodes configuration files used by Roo Code to define custom modes." }