module-scaffolding
Installation
SKILL.md
Module scaffolding
Every feature lives under app/<mod>/ as a self-contained module. There is no autoloader — preloads, import aliases, migration paths, tsconfig includes, and event listener mounts are all wired explicitly. Miss any of these and the module simply won't load, its rows won't migrate, or its event types won't typecheck.
Quick start — make:module
Do not wire by hand unless you have to. The generator creates the skeleton and injects every touchpoint idempotently:
node ace make:module <mod> # routes + controller + ui page + smoke test
node ace make:module <mod> --db --i18n --events
--db— addsdatabase/migrations/and registers its path inconfig/database.ts.--i18n— addsresources/lang/{en,fr,pt}/<mod>.jsonand registers the i18n loader.--events— addsstart/events.ts+types/events.ts, preloads events, and adds thetypes/**glob to the core tsconfig (skip that and theEventsListmerge breaks the client typecheck).
Always wired: the #<mod>/* alias, the #<mod>/routes preload, and the ui/** tsconfig include. After running it, pnpm dev (or any node ace) regenerates route/page types, then pnpm typecheck. The rest of this skill is what the command does under the hood — use it to add a piece later or to wire a module by hand.