Use when invoking the `smpy` CLI for a simple_module_python project — starting a new app, scaffolding a host or a publishable module, bumping simple_module_* dependencies to their latest PyPI versions, regenerating the Inertia page manifest, importing settings overrides from env, creating an admin user, or installing the bundled agent skills. Triggers on "smpy new", "smpy create-host", "smpy create-module", "smpy package-update", "smpy host gen-pages", "smpy users create-admin", "smpy skills add", or any unfamiliar `smpy` subcommand.
Use when writing or reviewing code inside modules/ in a simple_module_python codebase, hitting type-check or lint failures in module code, or unsure which base class / settings prefix / file structure to use. Triggers on "add a model", "where do settings go", "why is doctor warning", or any edit under modules/.
Use when adding a new feature package to a simple_module_python app. Triggers on "create a new module", "add a module", "scaffold a feature", or when an empty module directory under modules/ needs to be filled in.
Use when adding SQLModel tables to a simple_module_python module, deciding whether to inherit a mixin, or debugging session/transaction behavior. Triggers on "add a table", "audit fields", "soft delete", "tenant scoping", "why is this commit firing twice", or any edit involving create_module_base, AuditMixin, SoftDeleteMixin, MultiTenantMixin, VersionedMixin, or get_db.
Use when interpreting a simple_module_python diagnostic code (SM001–SM021) printed at boot or by the diagnostics runner — what the code means, whether it's blocking, and the concrete fix. Triggers on any "SMnnn" code in logs, "InvalidModuleError", "module silently doesn't load", or "production failed boot".
Use when adding or debugging an Inertia.js page in a simple_module_python module — TSX file naming, the inertia.render() namespace, shared props (auth, menus, i18n), or why a page renders blank or fires SM003/SM004. Triggers on "inertia.render", "page not found", "auth.user is null", "InertiaDep", or any edit involving pages/*.tsx in a module.
Use when adding or debugging i18n in a simple_module_python module — declaring `locale_dirs()`, naming JSON files, picking a namespace, writing CLDR-pluralized keys, or fixing SM013–SM016. Triggers on "translations", "locales", "useT", "i18n", "missing locale", "non-string leaf", "first-render-locale freeze", or any edit under `<module>/locales/`.
Use when generating, applying, or reviewing Alembic migrations in a simple_module_python host project, especially after installing or upgrading a module package. Triggers on "alembic revision", "autogenerate", "branch labels", "downgrade", "SM010", "SM011", or "migration drift".