Agent skill
dbmate
Managing database migrations with dbmate
Install this agent skill to your Project
npx add-skill https://github.com/kalbasit/ncps/tree/main/.agent/skills/dbmate
SKILL.md
dbmate Skill
This skill provides comprehensive instructions for managing database migrations in this project using dbmate.
Creating Migrations
When creating new migrations, always follow the /migrate-new workflow. The primary tool for creating a migration is:
dbmate --migrations-dir db/migrations/<engine> new "migration_name"
Replace <engine> with sqlite, postgres, or mysql.
Writing Migrations
Migrations are stored in db/migrations/<engine>/ as .sql files. They follow a specific format:
Structure
Each migration file MUST have two sections:
-- migrate:up
-- SQL statements to apply the change
-- migrate:down
-- SQL statements to reverse the change
Transaction Handling
[!IMPORTANT] DO NOT wrap your SQL in
BEGIN/COMMITblocks.dbmateautomatically wraps each migration in a transaction. Adding manual transaction blocks will cause errors and may lead to inconsistent database states.
SQL Guidelines
- Idempotency: Use
IF NOT EXISTSor similar where possible to make migrations safer (e.g.,CREATE TABLE IF NOT EXISTS ...). - Schema Files: NEVER edit files in
db/schema/manually. They are auto-generated. - Engine-Specifics: Ensure you tailor the SQL for the specific database engine.
- PostgreSQL: Use appropriate types (e.g.,
TEXT,JSONB). - MySQL: Use compatible types (e.g.,
LONGTEXTfor JSON-like data). - SQLite: Be mindful of limited
ALTER TABLEsupport.
- PostgreSQL: Use appropriate types (e.g.,
Applying Migrations
For development, use ./dev-scripts/migrate-all.py. This script:
- Applies migrations for all engines (PostgreSQL, MySQL, SQLite).
- Updates the schema files in
db/schema/.
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
openspec-propose
Propose a new change with all artifacts generated in one step. Use when the user wants to quickly describe what they want to build and get a complete proposal with design, specs, and tasks ready for implementation.
openspec-archive-change
Archive a completed change in the experimental workflow. Use when the user wants to finalize and archive a change after implementation is complete.
openspec-explore
Enter explore mode - a thinking partner for exploring ideas, investigating problems, and clarifying requirements. Use when the user wants to think through something before or during a change.
openspec-apply-change
Implement tasks from an OpenSpec change. Use when the user wants to start implementing, continue implementation, or work through tasks.
openspec-ff-change
Fast-forward through OpenSpec artifact creation. Use when the user wants to quickly create all artifacts needed for implementation without stepping through each one individually.
openspec-continue-change
Continue working on an OpenSpec change by creating the next artifact. Use when the user wants to progress their change, create the next artifact, or continue their workflow.
Didn't find tool you were looking for?