<kebab>.yml declares type: "design". It carries your design system (React components, hooks, icons, fonts, styles, and front-end utilities) and is shared across applications. Unlike a normal module, a design module is not registered into AppModule or SharedModule; nothing imports it as a runtime feature. Its src/ is not scaffolded from a generator either. It comes from the upstream skeleton-design repository, so the layout below is fixed and canonical.
Layout
A design module lives undermodules/<kebab-name>/. It keeps the base module files but drops the runtime <Pascal>Module.ts, and its src/ is organized by asset kind:
Module-level files
These live at the module root, the same as any module. See Module structure for the shared conventions.
Unlike a normal module, there is no
<Pascal>Module.ts (and no matching spec). A design module has no runtime entry class to register, so the scaffolded module file is removed: the src/ content comes from skeleton-design, not from local generation.
The src/ folders
Each folder under src/ holds one kind of asset. Stay within these conventions when adding to a design module.
The component-variant pattern
A component folder groups a primitive with its variants. Thebutton/ folder, for example, holds the base Button.tsx alongside variants like ButtonSave.tsx:
Next steps
- Design system overview: what a design module is and where it comes from.
- Using a design module: depending on
@module/<kebab>and consuming its assets. - Creating a design module: pulling
skeleton-designinto a new module. - Module structure: the shared module-level conventions.
- SPA overview: where these components are rendered.