cd /news/ai-tools/json-schema-and-reference-doc-coveri… · home topics ai-tools article
[ARTICLE · art-14574] src=gist.github.com pub= topic=ai-tools verified=true sentiment=· neutral

JSON Schema and reference doc covering all 69 color tokens for ~/.claude/themes/*.json (Claude Code v2.1.x).

A developer has reverse-engineered the Claude Code v2.1.126 binary to produce a JSON Schema and reference document covering all 69 color tokens for `~/.claude/themes/*.json` theme files. While only about 35 tokens are officially documented, the remaining internal tokens remain reachable through overrides, and the schema provides strict validation to catch typos in editors since invalid values are silently ignored at runtime.

read10 min publishedMay 3, 2026

| { | | "$schema": "https://json-schema.org/draft/2020-12/schema", | | "title": "Claude Code Theme", | | "description": "Schema for Claude Code custom themes (~/.claude/themes/.json). Requires Claude Code v2.1.118 or later. Token list reverse-engineered from the 2.1.126 binary; ~35 tokens are officially documented at https://code.claude.com/docs/en/terminal-config#color-token-reference and the rest are internal but reachable via overrides. Unknown tokens and invalid color values are silently ignored at runtime, so a typo cannot break rendering — but this schema flags them so you catch typos in your editor.", | | "type": "object", | | "additionalProperties": false, | | "properties": { | | "$schema": { | | "type": "string", | | "description": "Reference to this schema for editor autocomplete and validation." | | }, | | "name": { | | "type": "string", | | "description": "Display label shown in /theme. Defaults to the filename slug." | | }, | | "base": { | | "type": "string", | | "default": "dark", | | "description": "Built-in preset the theme starts from. Tokens not listed in overrides fall through to the base preset. Defaults to dark.", | | "enum": [ | | "dark", | | "light", | | "dark-daltonized", | | "light-daltonized", | | "dark-ansi", | | "light-ansi" | | ] | | }, | | "overrides": { | | "type": "object", | | "description": "Map of color token names to color values. Tokens not listed fall through to the base preset.", | | "additionalProperties": false, | | "properties": { | | "claude": { | | "$ref": "#/$defs/colorValue", | | "description": "Documented. Primary brand accent, used for the spinner and assistant label." | | }, | | "claudeShimmer": { | | "$ref": "#/$defs/colorValue", | | "description": "Documented. Lighter color paired with claude in the spinner's animated gradient." | | }, | | "claudeBlue_FOR_SYSTEM_SPINNER": { | | "$ref": "#/$defs/colorValue", | | "description": "Internal. Blue variant of the brand accent used by the system spinner; pairs with claudeBlueShimmer_FOR_SYSTEM_SPINNER." | | }, | | "claudeBlueShimmer_FOR_SYSTEM_SPINNER": { | | "$ref": "#/$defs/colorValue", | | "description": "Internal. Lighter shimmer paired with claudeBlue_FOR_SYSTEM_SPINNER." | | }, | | "text": { | | "$ref": "#/$defs/colorValue", | | "description": "Documented. Default foreground text." | | }, | | "inverseText": { | | "$ref": "#/$defs/colorValue", | | "description": "Documented. Text drawn on top of a colored background, such as status badges." | | }, | | "inactive": { | | "$ref": "#/$defs/colorValue", | | "description": "Documented. Secondary text such as hints, timestamps, and disabled items." | | }, | | "inactiveShimmer": { | | "$ref": "#/$defs/colorValue", | | "description": "Internal. Shimmer variant of inactive for animated gradients." | | }, | | "subtle": { | | "$ref": "#/$defs/colorValue", | | "description": "Documented. Faint borders and de-emphasized secondary text." | | }, | | "permission": { | | "$ref": "#/$defs/colorValue", | | "description": "Documented. Dialog borders, including permission prompts and pickers." | | }, | | "permissionShimmer": { | | "$ref": "#/$defs/colorValue", | | "description": "Internal. Shimmer variant of permission for animated gradients." | | }, | | "remember": { | | "$ref": "#/$defs/colorValue", | | "description": "Documented. Memory and CLAUDE.md indicators." | | }, | | "suggestion": { | | "$ref": "#/$defs/colorValue", | | "description": "Internal. Suggestion-tier UI accents (autocomplete prompts, hint banners)." | | }, | | "background": { | | "$ref": "#/$defs/colorValue", | | "description": "Internal. General background fill for surfaces that opt into a color (rare)." | | }, | | "success": { | | "$ref": "#/$defs/colorValue", | | "description": "Documented. Success messages and passing checks." | | }, | | "error": { | | "$ref": "#/$defs/colorValue", | | "description": "Documented. Error messages and failures." | | }, | | "warning": { | | "$ref": "#/$defs/colorValue", | | "description": "Documented. Warnings, caution messages, and the auto mode border." | | }, | | "warningShimmer": { | | "$ref": "#/$defs/colorValue", | | "description": "Documented. Lighter color paired with warning in animated gradients." | | }, | | "merged": { | | "$ref": "#/$defs/colorValue", | | "description": "Documented. Merged pull request status." | | }, | | "promptBorder": { | | "$ref": "#/$defs/colorValue", | | "description": "Documented. Input box border in the default permission mode." | | }, | | "promptBorderShimmer": { | | "$ref": "#/$defs/colorValue", | | "description": "Internal. Shimmer variant of promptBorder for animated gradients." | | }, | | "planMode": { | | "$ref": "#/$defs/colorValue", | | "description": "Documented. Plan mode accent and border." | | }, | | "autoAccept": { | | "$ref": "#/$defs/colorValue", | | "description": "Documented. Accept-edits mode accent and border." | | }, | | "bashBorder": { | | "$ref": "#/$defs/colorValue", | | "description": "Documented. Input box border when entering a ! shell command." | | }, | | "ide": { | | "$ref": "#/$defs/colorValue", | | "description": "Documented. IDE connection indicator." | | }, | | "fastMode": { | | "$ref": "#/$defs/colorValue", | | "description": "Documented. Fast mode indicator." | | }, | | "fastModeShimmer": { | | "$ref": "#/$defs/colorValue", | | "description": "Internal. Shimmer variant of fastMode for animated gradients." | | }, | | "diffAdded": { | | "$ref": "#/$defs/colorValue", | | "description": "Documented. Background of added lines." | | }, | | "diffRemoved": { | | "$ref": "#/$defs/colorValue", | | "description": "Documented. Background of removed lines." | | }, | | "diffAddedDimmed": { | | "$ref": "#/$defs/colorValue", | | "description": "Documented. Background of unchanged context near added lines." | | }, | | "diffRemovedDimmed": { | | "$ref": "#/$defs/colorValue", | | "description": "Documented. Background of unchanged context near removed lines." | | }, | | "diffAddedWord": { | | "$ref": "#/$defs/colorValue", | | "description": "Documented. Word-level highlight within an added line." | | }, | | "diffRemovedWord": { | | "$ref": "#/$defs/colorValue", | | "description": "Documented. Word-level highlight within a removed line." | | }, | | "userMessageBackground": { | | "$ref": "#/$defs/colorValue", | | "description": "Documented (fullscreen mode only). Background behind your messages in the transcript." | | }, | | "userMessageBackgroundHover": { | | "$ref": "#/$defs/colorValue", | | "description": "Internal. Hover-state variant of userMessageBackground." | | }, | | "messageActionsBackground": { | | "$ref": "#/$defs/colorValue", | | "description": "Internal. Background fill behind per-message action affordances." | | }, | | "selectionBg": { | | "$ref": "#/$defs/colorValue", | | "description": "Documented (fullscreen mode only). Background of text selected with the mouse." | | }, | | "bashMessageBackgroundColor": { | | "$ref": "#/$defs/colorValue", | | "description": "Internal. Background fill for shell-command (!) messages in fullscreen mode." | | }, | | "memoryBackgroundColor": { | | "$ref": "#/$defs/colorValue", | | "description": "Internal. Background fill for memory / CLAUDE.md annotations in fullscreen mode." | | }, | | "rate_limit_fill": { | | "$ref": "#/$defs/colorValue", | | "description": "Internal. Filled portion of the rate-limit usage bar." | | }, | | "rate_limit_empty": { | | "$ref": "#/$defs/colorValue", | | "description": "Internal. Empty portion of the rate-limit usage bar." | | }, | | "briefLabelYou": { | | "$ref": "#/$defs/colorValue", | | "description": "Internal. "You" label color in brief / compact transcript mode." | | }, | | "briefLabelClaude": { | | "$ref": "#/$defs/colorValue", | | "description": "Internal. "Claude" label color in brief / compact transcript mode." | | }, | | "professionalBlue": { | | "$ref": "#/$defs/colorValue", | | "description": "Internal. Anthropic-blue brand accent used in marketing surfaces (login screens, billing UI)." | | }, | | "chromeYellow": { | | "$ref": "#/$defs/colorValue", | | "description": "Internal. Yellow accent used in marketing surfaces." | | }, | | "clawd_body": { | | "$ref": "#/$defs/colorValue", | | "description": "Internal. Body color for the Clawd mascot easter-egg art." | | }, | | "clawd_background": { | | "$ref": "#/$defs/colorValue", | | "description": "Internal. Background color behind the Clawd mascot easter-egg art." | | }, | | "rainbow_red": { | | "$ref": "#/$defs/colorValue", | | "description": "Internal. Red stop in the rainbow palette (animated celebration sequences)." | | }, | | "rainbow_orange": { | | "$ref": "#/$defs/colorValue", | | "description": "Internal. Orange stop in the rainbow palette." | | }, | | "rainbow_yellow": { | | "$ref": "#/$defs/colorValue", | | "description": "Internal. Yellow stop in the rainbow palette." | | }, | | "rainbow_green": { | | "$ref": "#/$defs/colorValue", | | "description": "Internal. Green stop in the rainbow palette." | | }, | | "rainbow_blue": { | | "$ref": "#/$defs/colorValue", | | "description": "Internal. Blue stop in the rainbow palette." | | }, | | "rainbow_indigo": { | | "$ref": "#/$defs/colorValue", | | "description": "Internal. Indigo stop in the rainbow palette." | | }, | | "rainbow_violet": { | | "$ref": "#/$defs/colorValue", | | "description": "Internal. Violet stop in the rainbow palette." | | }, | | "rainbow_red_shimmer": { | | "$ref": "#/$defs/colorValue", | | "description": "Internal. Shimmer paired with rainbow_red." | | }, | | "rainbow_orange_shimmer": { | | "$ref": "#/$defs/colorValue", | | "description": "Internal. Shimmer paired with rainbow_orange." | | }, | | "rainbow_yellow_shimmer": { | | "$ref": "#/$defs/colorValue", | | "description": "Internal. Shimmer paired with rainbow_yellow." | | }, | | "rainbow_green_shimmer": { | | "$ref": "#/$defs/colorValue", | | "description": "Internal. Shimmer paired with rainbow_green." | | }, | | "rainbow_blue_shimmer": { | | "$ref": "#/$defs/colorValue", | | "description": "Internal. Shimmer paired with rainbow_blue." | | }, | | "rainbow_indigo_shimmer": { | | "$ref": "#/$defs/colorValue", | | "description": "Internal. Shimmer paired with rainbow_indigo." | | }, | | "rainbow_violet_shimmer": { | | "$ref": "#/$defs/colorValue", | | "description": "Internal. Shimmer paired with rainbow_violet." | | }, | | "red_FOR_SUBAGENTS_ONLY": { | | "$ref": "#/$defs/colorValue", | | "description": "Documented. Color drawn for subagents declared with color: red. See https://code.claude.com/docs/en/sub-agents." | | }, | | "blue_FOR_SUBAGENTS_ONLY": { | | "$ref": "#/$defs/colorValue", | | "description": "Documented. Color drawn for subagents declared with color: blue." | | }, | | "green_FOR_SUBAGENTS_ONLY": { | | "$ref": "#/$defs/colorValue", | | "description": "Documented. Color drawn for subagents declared with color: green." | | }, | | "yellow_FOR_SUBAGENTS_ONLY": { | | "$ref": "#/$defs/colorValue", | | "description": "Documented. Color drawn for subagents declared with color: yellow." | | }, | | "purple_FOR_SUBAGENTS_ONLY": { | | "$ref": "#/$defs/colorValue", | | "description": "Documented. Color drawn for subagents declared with color: purple." | | }, | | "orange_FOR_SUBAGENTS_ONLY": { | | "$ref": "#/$defs/colorValue", | | "description": "Documented. Color drawn for subagents declared with color: orange." | | }, | | "pink_FOR_SUBAGENTS_ONLY": { | | "$ref": "#/$defs/colorValue", | | "description": "Documented. Color drawn for subagents declared with color: pink." | | }, | | "cyan_FOR_SUBAGENTS_ONLY": { | | "$ref": "#/$defs/colorValue", | | "description": "Documented. Color drawn for subagents declared with color: cyan." | | } | | } | | } | | }, | | "$defs": { | | "colorValue": { | | "type": "string", | | "description": "A color in one of: #rrggbb, #rgb, rgb(r,g,b), ansi256(n) (n = 0–255), or ansi:<name> where <name> is one of the 16 standard ANSI names (red, green, blue, yellow, magenta, cyan, white, black, plus their Bright variants).", | | "oneOf": [ | | { | | "pattern": "^#[0-9a-fA-F]{6}$", | | "description": "Hex RGB, e.g. #a89278." | | }, | | { | | "pattern": "^#[0-9a-fA-F]{3}$", | | "description": "Short hex RGB, e.g. #a87." | | }, | | { | | "pattern": "^rgb\(\s(0|[1-9]\d?|1\d\d|2[0-4]\d|25[0-5])\s*,\s*(0|[1-9]\d?|1\d\d|2[0-4]\d|25[0-5])\s*,\s*(0|[1-9]\d?|1\d\d|2[0-4]\d|25[0-5])\s*\)$", | | "description": "Functional RGB, e.g. rgb(168, 146, 120)." | | }, | | { | | "pattern": "^ansi256\((0|[1-9]\d?|1\d\d|2[0-4]\d|25[0-5])\)$", | | "description": "256-color ANSI palette index, e.g. ansi256(180)." | | }, | | { | | "pattern": "^ansi:(red|green|blue|yellow|magenta|cyan|white|black)(Bright)?$", | | "description": "Named ANSI color, e.g. ansi:cyanBright." | | } | | ] | | } | | } | | } |

── more in #ai-tools 4 stories · sorted by recency
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/json-schema-and-refe…] indexed:0 read:10min 2026-05-03 ·