Phase 1b: Rename all ~94 commands across 12 plugins to /<noun> <action> sub-command pattern. Git-flow consolidated from 8→5 commands (commit variants absorbed into --push/--merge/--sync flags). Dispatch files, name: frontmatter, and cross-reference updates for all plugins. Phase 2: Design documents for 8 new plugins in docs/designs/. Phase 3: Scaffold 8 new plugins — saas-api-platform, saas-db-migrate, saas-react-platform, saas-test-pilot, data-seed, ops-release-manager, ops-deploy-pipeline, debug-mcp. Each with plugin.json, commands, agents, skills, README, and claude-md-integration. Marketplace grows from 12→20. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
3.3 KiB
3.3 KiB
name, description
| name | description |
|---|---|
| naming-conventions | Migration file naming rules — timestamp prefixes, descriptive suffixes, ordering |
Naming Conventions
Purpose
Defines standard naming patterns for migration files across all supported tools. This skill ensures consistent, descriptive, and correctly ordered migration files.
General Rules
- Use lowercase with underscores for descriptions (snake_case)
- Be descriptive but concise: Describe WHAT changes, not WHY
- Use verb prefixes:
add_,drop_,rename_,alter_,create_,remove_ - Include the table name when the migration affects a single table
- Never use generic names like
migration_1,update,fix
Tool-Specific Patterns
Alembic
Format: {revision_hash}_{description}.py
The revision hash is auto-generated by Alembic. The description is provided by the user.
| Example | Description |
|---|---|
a1b2c3d4_create_users_table.py |
Initial table creation |
e5f6g7h8_add_email_to_users.py |
Add column |
i9j0k1l2_drop_legacy_users_columns.py |
Remove columns |
m3n4o5p6_rename_orders_total_to_amount.py |
Rename column |
q7r8s9t0_add_index_on_orders_user_id.py |
Add index |
Description rules for Alembic:
- Max 60 characters for the description portion
- No spaces (use underscores)
- Alembic auto-generates the revision hash
Prisma
Format: {YYYYMMDDHHMMSS}_{description}/migration.sql
| Example | Description |
|---|---|
20240115120000_create_users_table/migration.sql |
Initial table |
20240120093000_add_email_to_users/migration.sql |
Add column |
20240201110000_add_orders_table/migration.sql |
New table |
Description rules for Prisma:
- Prisma generates the timestamp automatically with
prisma migrate dev - Description is the
--nameargument - Use snake_case, no spaces
Raw SQL
Format: {NNN}_{description}.sql
Sequential numbering with zero-padded prefix:
| Example | Description |
|---|---|
001_create_users_table.sql |
First migration |
002_add_email_to_users.sql |
Second migration |
003_create_orders_table.sql |
Third migration |
Numbering rules:
- Zero-pad to 3 digits minimum (001, 002, ..., 999)
- If project exceeds 999, use 4 digits (0001, 0002, ...)
- Never reuse numbers, even for deleted migrations
- Gaps in sequence are acceptable (001, 002, 005 is fine)
Description Verb Prefixes
| Prefix | Use When |
|---|---|
create_ |
New table |
add_ |
New column, index, or constraint to existing table |
drop_ |
Remove table |
remove_ |
Remove column, index, or constraint |
rename_ |
Rename table or column |
alter_ |
Change column type or constraint |
backfill_ |
Data-only migration (populate column values) |
merge_ |
Combine tables or columns |
split_ |
Separate table or column into multiple |
Anti-Patterns
| Bad Name | Problem | Better Name |
|---|---|---|
migration_1.py |
Not descriptive | create_users_table.py |
update.sql |
Too vague | add_status_to_orders.sql |
fix_bug.py |
Describes why, not what | alter_email_column_length.py |
changes.sql |
Not descriptive | add_index_on_users_email.sql |
final_migration.py |
Nothing is ever final | remove_deprecated_columns.py |