Agent-skills motherduck-migrate-to-motherduck
Plan a migration onto MotherDuck. Use when moving from Snowflake, Redshift, PostgreSQL, dbt-heavy stacks, or lakehouse tooling and the key decisions are target pattern, cutover slices, validation, rollback, and native-versus-DuckLake posture.
git clone https://github.com/motherduckdb/agent-skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/motherduckdb/agent-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/plugins/motherduck-skills-claude/skills/motherduck-migrate-to-motherduck" ~/.claude/skills/motherduckdb-agent-skills-motherduck-migrate-to-motherduck && rm -rf "$T"
plugins/motherduck-skills-claude/skills/motherduck-migrate-to-motherduck/SKILL.mdMigrate to MotherDuck
Use this skill when the user needs a migration plan from another warehouse, PostgreSQL estate, or mixed analytics stack onto MotherDuck.
This is a use-case skill. It orchestrates
motherduck-connect, motherduck-explore, motherduck-load-data, motherduck-model-data, motherduck-query, and motherduck-ducklake.
Start Here: Is a MotherDuck Server Active?
Always determine this before writing a migration plan.
- If a remote MotherDuck MCP server or local MotherDuck server is active, use it.
- Ask which MotherDuck database or workspace will receive the migration if the user has not specified it.
- Explore the live target side first when available:
- existing databases and schemas
- current landing zones
- current analytical tables
- naming conventions
- any partial migration already in place
Also capture the source-side shape:
- source platform
- source table grain
- key metrics
- validation keys
- serving workloads after cutover
If no server is active, ask for representative source and target schemas before finalizing the migration plan.
Use This Skill When
- The user is moving from Snowflake, Redshift, Postgres, or similar.
- The user needs cutover sequencing and validation.
- The user needs to decide between native MotherDuck,
, or DuckLake.pg_duckdb - The migration plan needs rollback, not just a list of copy commands.
Migration Defaults
- native MotherDuck storage first
when extending an existing PostgreSQL estate is the least disruptive pathpg_duckdb- validate before cutover
- phased cutover over big-bang replacement
Workflow
- Confirm whether live MotherDuck discovery is available.
- Classify the source system and the target serving pattern.
- Inspect the target-side MotherDuck layout if available.
- Pick the connection and ingestion path.
- Rebuild the analytical model in DuckDB SQL.
- Run source-vs-target validation.
- Cut over one workload at a time.
When this skill produces a native DuckDB (
md:) connection, watermark it with custom_user_agent=agent-skills/<latest-available-skills-version>(harness-<harness>;llm-<llm>). If metadata is missing, fall back to harness-unknown and llm-unknown.
Output
The output of this skill should be:
- the target pattern
- the migration sequence
- the validation plan
- the rollback path
- the first cutover slice
If the caller explicitly asks for structured JSON, return raw JSON only with no Markdown fences or prose before/after it. This is mainly for automated tests, regression checks, or downstream tooling that needs a stable machine-readable shape. Normal human-facing use of the skill can stay in prose unless JSON is explicitly requested.
Use this exact top-level shape when JSON is requested:
{ "summary": {}, "assumptions": [], "implementation_plan": [], "validation_plan": [], "risks": [] }
References
-- preserved detailed migration guidance that used to live in this skillreferences/MIGRATION_PLAYBOOK.md
-- validation checks and comparison helpersreferences/MIGRATION_VALIDATION.md
Runnable Artifact
-- MotherDuck-backed Python example for source-vs-target validation and variance reportingartifacts/migration_validation_example.py
-- TypeScript companion artifact with the same validation output contractartifacts/migration_validation_example.ts
Run it with:
uv run --with duckdb python skills/motherduck-migrate-to-motherduck/artifacts/migration_validation_example.py
Run the same validation flow against temporary MotherDuck databases:
MOTHERDUCK_ARTIFACT_USE_MOTHERDUCK=1 \ uv run --with duckdb python skills/motherduck-migrate-to-motherduck/artifacts/migration_validation_example.py
Validate the TypeScript companion artifact:
uv run scripts/test_typescript_artifacts.py
Related Skills
-- choose the connection path for the target systemmotherduck-connect
-- inspect the target-side MotherDuck workspacemotherduck-explore
-- bulk movement and raw landing patternsmotherduck-load-data
-- shape the target analytical modelmotherduck-model-data
-- port and validate critical SQLmotherduck-query
-- only when open-table-format requirements are explicitmotherduck-ducklake