Add a theme
Scaffold a theme in your package — blank, or forked from an existing theme.Add a theme
Run integration add theme with a lowercase kebab-case slug. It writes a blank theme — a defineTheme skeleton and its descriptor — into a folder named after the slug.
bashnpx astryx integration add theme ocean
texttheme contribution added[ok] oceanDeclare theme root ./themes in astryx.integration.mjs.- themes/ocean/oceanTheme.ts- themes/ocean/oceanTheme.doc.mjs- package.json- astryx.integration.mjs
oceanTheme.ts exports oceanTheme, a defineTheme source. oceanTheme.doc.mjs describes it with type: 'theme', name, displayName, description, and maintained; theme list shows its name, description, and maintained. Every field is in astryx docs authoring.
The source ships in your package. An app installs the package and applies the theme — it is not copied; see astryx docs cli/integrations/building-blocks/themes/use-a-theme-in-an-app.
Start from an existing theme
To begin from an existing theme instead of a blank one, pass --from. It copies that theme as your starting point to diverge from — a fork, with no link back.
bashnpx astryx integration add theme ocean --from neutral
Use --from when you want to change a lot. For a small change that should stay linked to a base theme, use extends instead (astryx docs cli/integrations/building-blocks/themes/define-the-theme).
Ship several themes
A package can ship more than one theme. Run integration add theme once per slug; each theme gets its own folder and descriptor, and theme list shows them all.