| name | migrate-create |
| description | Create a new sequentially numbered database migration with up/down SQL files |
| argument-hint | <name> |
| allowed-tools | Read Write Glob Bash mcp__claude-flow__memory_store mcp__claude-flow__memory_search mcp__claude-flow__agentdb_pattern-search |
Migrate Create
Generate a new database migration with sequential numbering and up/down SQL file pair.
When to use
When you need to create a new database migration for schema changes such as creating tables, adding columns, creating indexes, or modifying constraints.
Steps
- Determine next number -- use
Glob to scan the migrations directory for existing migration files and find the highest number, then increment by 1 (zero-pad to 3 digits)
- Select template -- based on the
<name>, choose the appropriate SQL template:
- Names starting with
create_ -> CREATE TABLE template
- Names starting with
add_ -> ALTER TABLE ADD COLUMN template
- Names starting with
drop_ -> DROP with safety checks
- Names containing
index -> CREATE INDEX template
- Other -> generic migration template with placeholder comments
- Generate up migration -- write
NNN_<name>.up.sql with the appropriate SQL using IF NOT EXISTS for idempotency
- Generate down migration -- write
NNN_<name>.down.sql with the reverse operation using IF EXISTS
- Search past patterns -- call
mcp__claude-flow__agentdb_pattern-search (ReasoningBank-routed; don't pass a namespace argument — pattern-* tools ignore it).
- Store metadata -- call
mcp__claude-flow__memory_store --namespace migrations to record the migration with number, name, status (pending), and file paths. The memory_* tool family routes by namespace; agentdb_hierarchical-* does NOT (it routes by tier working|episodic|semantic), so use memory_* here. See ruflo-agentdb ADR-0001 §"Namespace convention".
- Report -- display: migration number, file paths created, template used, any similar past migrations found
CLI alternative
npx @claude-flow/cli@latest memory store --namespace migrations --key "migration-NNN_NAME" --value '{"number": NNN, "name": "NAME", "status": "pending"}'