What problem does it solve? Adding a new table to a NestJS/TypeORM codebase involves many coordinated steps — the entity class, a repository, module wiring, and a migration — and it is easy to lose database-level invariants (CHECK constraints, partial unique indexes, enum types) when relying on generated migrations. This Skill walks through the full workflow so the schema, entity, and module stay consistent. ## Core Features & Use Cases - Entity scaffolding with project conventions: snake_case table and column names, prefixed string ids, timestamptz timestamps, bigint transformers, and enum columns created exactly as the codebase expects. - Transaction-safe repository pattern: repositories accept an EntityManager for mutation writes, use conditional updates or SELECT FOR UPDATE for balance rows, and never expose the raw Repository to services. - Hand-written migrations with invariants: raw SQL migrations carrying CHECK constraints, named indexes, enum types, and exact up/down reversal, cross-checked against the entity via a throwaway generated migration. - Use Case: Ask to add a WasteRecord entity to the holdings module and receive the entity file, repository, updated module registration, and a pending migration with non-negativity CHECK constraints, ready for review before running. ## Quick Start Add a WasteRecord entity to the holdings module with its repository and migration.