Skip to content

keryx theme add

Register a new theme in the catalog.

Usage

keryx theme add <keyword> --type <article|reel|portrait> [--from <keyword>] [--set key=value ...]

Flags

Flag Description Default Required
--type The theme's kind: article, reel or portrait yes
--from Clone an existing theme as the starting point
--set key=value, repeatable, dotted paths allowed

Without --type the command refuses: --type is required for add.

What --set accepts

Dotted paths into the theme, with values coerced to bool, int or float when they parse as one and kept as strings otherwise:

keryx theme add editorial --type reel \
  --set 'palette.charcoal=#1A1D21' \
  --set 'palette.cream=#F4F1EA' \
  --set 'card.mode=overlay' \
  --set 'music.gain=0.16' \
  --set 'voice.stability=0.6'

An argument that is not key=value is rejected with invalid set (want key=value). keyword and type are the catalog coordinates, not fields — --set keyword=x is ignored.

Which file it writes to

If the working directory is inside a project that has a .keryx.yaml, the theme is written there. Otherwise it goes to ~/.keryx/themes.yaml and is available to every project on the machine. Existing comments and key order in the target file are preserved.

Use theme pin to copy a user theme into a project, and theme promote to copy the other way.

The first theme of a type becomes its default

Keryx seeds no themes at all, so on a fresh install the catalog is empty and generation fails with no theme configured for this type. The first theme you add for a type is made that type's default automatically, and the command says so:

$ keryx theme add editorial --type reel --set 'palette.cream=#F4F1EA'
added reel theme "editorial"
set as the default reel theme (it was the first)

Later additions do not change the default; use theme use.

See also