Skip to content
Agent Orchestration
Skill

/migration-review

SQLite migration assessment for items with the needs-migration-review trait. Evaluates schema changes, table recreation patterns, data migration strategy, and Flyway migration correctness. Invoked via skillPointer when filling migration-assessment notes.

BOOST
From plugin
task-orchestrator
20929 skills4 agents2 commands
Install
$ npx -y skills add jpicklyk/task-orchestrator --skill migration-review --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/migration-review

Context preview

The summary Claude sees to decide when to auto-load this skill.

SQLite migration assessment for items with the needs-migration-review trait. Evaluates schema changes, table recreation patterns, data migration strategy, and Flyway migration correctness. Invoked via skillPointer when filling migration-assessment notes.

SKILL.md

migration-review.SKILL.md
name: migration-review
description: SQLite migration assessment for items with the needs-migration-review trait. Evaluates schema changes, table recreation patterns, data migration strategy, and Flyway migration correctness. Invoked via skillPointer when filling migration-assessment notes.
user-invocable: false

Migration Review Framework

Evaluate database migration safety for SQLite-specific constraints. This project uses Flyway migrations with SQLite, which has significant limitations compared to PostgreSQL/MySQL.

Step 1: Identify Schema Changes

Read the changed files and migration SQL to determine:

  • **New columns** — `ALTER TABLE ADD COLUMN` works in SQLite
  • **Modified columns** — SQLite has NO `ALTER COLUMN`. Requires table recreation:

1. Create new table with desired schema 2. Copy data from old table 3. Drop old table 4. Rename new table

  • **New tables** — check foreign key ordering in `DirectDatabaseSchemaManager`
  • **Index changes** — `CREATE INDEX` / `DROP INDEX` work normally

Step 2: SQLite Constraint Check

Verify against known SQLite limitations:

  • [ ] No `ALTER COLUMN` — if modifying existing columns, table recreation pattern is used
  • [ ] No `DROP COLUMN` in older SQLite versions — check if the Docker image's SQLite supports it
  • [ ] Foreign key constraints — new tables must be inserted in correct order in `DirectDatabaseSchemaManager`
  • [ ] `TEXT` affinity — SQLite stores all strings as TEXT regardless of declared type
  • [ ] No concurrent write transactions — migrations must be sequential

Step 3: Data Migration Strategy

For migrations that modify existing data:

  • [ ] Existing rows handled — default values for new columns, or explicit data migration
  • [ ] Null safety — new NOT NULL columns require a DEFAULT or data backfill
  • [ ] Large table performance — SQLite locks the entire database during writes
  • [ ] Runtime-dependent guarantees are probed, not assumed — see below

**Guarantees that rest on engine runtime behavior need a multi-row probe.** When the assessment claims an at-rest, security, or data-integrity guarantee that depends on a specific runtime/engine behavior (e.g. SQLite `PRAGMA secure_delete`, `VACUUM` page reuse, WAL checkpoint timing, FTS5 shadow-table residue), the assessment MUST specify a multi-row/multi-write empirical probe as part of the required test strategy — not a single-row assertion, which can read clean whether or not the mechanism works. It MUST NOT phrase the guarantee as absolute ("scrubbed", "removed") when only a probabilistic or partial mechanism is available ("reduces residue", "partial scrub"); once the probe exists, state the measured bound (e.g. "3–14 of 200 rows survive with the pragma, 200+ without").

Step 4: Flyway Integration

  • [ ] Migration file follows naming: `V{N}__{Description}.sql`
  • [ ] Version number is sequential (no gaps, no conflicts with existing migrations)
  • [ ] Migration is idempotent where possible
  • [ ] `DirectDatabaseSchemaManager` updated if new tables are added (insert in FK dependency order)

Step 5: Rollback Considerations

  • [ ] Can the migration be reversed manually if needed?
  • [ ] Is the schema change backward compatible with the previous application version?
  • [ ] Docker volume data survives container restarts — migration is permanent

Output

Compose the `migration-assessment` note with findings from each step. Flag any SQLite-specific risks. Reference `.claude/skills/spec-quality/references/project-concerns.md` for additional codebase constraints.

Read more
Ships withtask-orchestrator

Server-enforced workflow discipline for AI agents. Prompt-based frameworks hope the LLM follows instructions. This one blocks the call if it doesn't.

Get the whole plugin

Other skills on task-orchestrator.