{"$id":"https://cumulativewebinc.github.io/cwi-learn/skin/skin-schema.json","$schema":"https://json-schema.org/draft/2020-12/schema","description":"Authoring schema for a CWI-1 Signal Skin (cwi-skin/v1). Any third party can author a white-label skin as plain JSON; skins.json is the reference corpus. A skin reskins the Signal Boy presentation layer only — device logic is untouched.","format":"cwi-skin/v1","properties":{"background_treatment":{"additionalProperties":false,"properties":{"angle":{"type":"number"},"from":{"type":"string"},"style":{"enum":["solid","gradient","radial"],"type":"string"},"to":{"type":"string"}},"required":["style","from","to"],"type":"object"},"dpad_glow":{"additionalProperties":false,"properties":{"color":{"type":"string"},"intensity":{"enum":["soft","medium","strong"],"type":"string"},"pulse":{"type":"boolean"}},"required":["color","intensity","pulse"],"type":"object"},"inspired_by":{"description":"Optional free-text provenance for the skin's look (track, season, brand). Must be a verified fact — no invented claims.","type":"string"},"logo_lockup":{"additionalProperties":false,"properties":{"position":{"enum":["header","device-face"],"type":"string"},"treatment":{"enum":["circular-badge"],"type":"string"}},"required":["position","treatment"],"type":"object"},"palette":{"additionalProperties":false,"properties":{"accent":{"type":"string"},"accent_bright":{"type":"string"},"body":{"type":"string"},"body_dark":{"type":"string"},"logo_ring":{"type":"string"},"screen":{"type":"string"},"screen_text":{"type":"string"},"subtext":{"type":"string"},"text":{"type":"string"}},"required":["body","body_dark","screen","screen_text","accent","accent_bright","text","subtext","logo_ring"],"type":"object"},"season":{"type":"string"},"skin_id":{"pattern":"^[a-z0-9-]+$","type":"string"},"skin_name":{"type":"string"},"skin_version":{"pattern":"^\\d+\\.\\d+\\.\\d+$","type":"string"},"track_accent_treatment":{"additionalProperties":false,"properties":{"animation":{"enum":["none","pulse","scroll"],"type":"string"},"color":{"type":"string"},"style":{"enum":["neon-bar","tape-stripe","led-dots"],"type":"string"}},"required":["style","color","animation"],"type":"object"},"typography_accents":{"additionalProperties":false,"properties":{"display_font":{"type":"string"},"font_style":{"enum":["uppercase","condensed","wide"],"type":"string"},"label_case":{"enum":["upper","lower","title"],"type":"string"},"letter_spacing":{"type":"string"}},"required":["display_font","font_style","label_case","letter_spacing"],"type":"object"}},"required":["skin_id","skin_name","skin_version","season","palette","background_treatment","dpad_glow","track_accent_treatment","typography_accents","logo_lockup"],"title":"CWI-1 Signal Skin","type":"object"}