Skip to content

Search docs

Search Cortex documentation pages and headings.

Theme Development

Theme Manifest

Define a community theme family, display metadata, and safe light and dark stylesheet paths.

On this page

Every community theme needs a root manifest.json.

Shape

{	"id": "warm-notes",	"name": "warm-notes",	"displayName": "Warm Notes",	"author": "Your Name",	"authorUrl": "https://example.com",	"version": "0.1.0",	"minAppVersion": "0.1.0",	"colorschemes": {		"light": "light.css",		"dark": "dark.css"	}}
FieldRequiredNotes
idYesTheme install id. Reviewed listings must match this id.
nameYesTheme family slug. Must match ^[a-z0-9][a-z0-9-]*$.
displayNameYesUser-facing family name.
authorYesDisplayed in theme and reviewed listing surfaces.
authorUrlNoValid URL for the author or organization.
versionYesUse semver for update comparisons.
minAppVersionNoMinimum Cortex version expected by the theme.
colorschemes.lightYesSafe relative path to the light CSS file.
colorschemes.darkYesSafe relative path to the dark CSS file.

Safe Stylesheet Paths

Stylesheet paths must be relative to the theme folder. Cortex rejects:

  • Empty paths.
  • Absolute paths.
  • Windows drive-letter paths.
  • Paths containing ...

Good:

{ "light": "light.css", "dark": "schemes/dark.css" }

Bad:

{ "light": "../light.css", "dark": "/tmp/dark.css" }

Runtime Theme Names

For a manifest with "name": "warm-notes", Cortex registers:

  • warm-notes-light
  • warm-notes-dark

The active runtime theme is applied to the body as:

<body class="theme-warm-notes-light" data-theme-scheme="light">

Write CSS selectors against those runtime body classes.