/motherduck-ducklake
Decide when DuckLake is the right MotherDuck storage pattern versus native MotherDuck storage (the default). Use when evaluating lakehouse or open table format storage, Iceberg-style requirements, fully managed DuckLake, BYOB buckets, own-compute DuckLake access, data inlining,
$ npx -y skills add motherduckdb/agent-skills --skill motherduck-ducklake --agent claude-codeHow 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.
- You can call itInvoke it directly when you want it.
- Slash command
/motherduck-ducklake
Context preview
The summary Claude sees to decide when to auto-load this skill.
Decide when DuckLake is the right MotherDuck storage pattern versus native MotherDuck storage (the default). Use when evaluating lakehouse or open table format storage, Iceberg-style requirements, fully managed DuckLake, BYOB buckets, own-compute DuckLake access, data inlining,
SKILL.md
motherduck-ducklake.SKILL.mdname: motherduck-ducklake
description: Decide when DuckLake is the right MotherDuck storage pattern versus native MotherDuck storage (the default). Use when evaluating lakehouse or open table format storage, Iceberg-style requirements, fully managed DuckLake, BYOB buckets, own-compute DuckLake access, data inlining, time travel, object-storage layout, or file-aware compaction and maintenance.
license: MIT
Use DuckLake on MotherDuck
Use this skill when the storage decision is genuinely about open table format and object-store behavior, not just about where to put another analytical table.
Source Of Truth
- Prefer current MotherDuck DuckLake docs first.
- Use the upstream DuckLake and DuckDB extension docs only to clarify extension-level behavior that MotherDuck docs reference.
- Keep the guidance aligned with the documented product posture:
- native MotherDuck first
- MotherDuck's DuckLake docs define the supported product surface and lifecycle/compatibility limits; verify the current DuckDB/DuckLake version matrix instead of preserving an upstream version or product status in the prompt
- fully managed, BYOB, and own-compute paths are distinct
- maintenance and compaction are explicit operations, not background magic
Default Posture
- Start with native MotherDuck storage unless there is a concrete DuckLake requirement.
- Reach for DuckLake when you need open-table-format semantics, object storage as the source of truth, BYOB, or file-aware maintenance.
- Do not recommend DuckLake just because a workload is "large"; MotherDuck's docs explicitly note native storage is often faster for reads.
- Choose the operating mode deliberately: fully managed for easiest evaluation, BYOB for customer bucket ownership, own compute only when the compute boundary matters too.
- Document the fallback to native MotherDuck storage if the DuckLake requirement is weak, unverified, or only about future portability.
- For data inlining, sorted tables, bucket partitioning, deletion vectors, or extension behavior, verify the current MotherDuck DuckLake docs and DuckDB/DuckLake version matrix before giving syntax guarantees.
- Do not infer MotherDuck client/runtime support from upstream DuckDB release notes alone; check the MotherDuck lifecycle docs when the exact DuckDB version matters.
- Keep the MotherDuck product surface separate from raw DuckLake-extension assumptions.
Workflow
1. Confirm why native MotherDuck storage is insufficient. 2. Pick the operating mode: fully managed, BYOB with MotherDuck compute, or BYOB with own compute. 3. Verify regional and bucket constraints before proposing BYOB. 4. Define the ingestion and maintenance posture up front, including data inlining, file compaction, and cleanup expectations. 5. Validate who will query the data and from which compute surface before finalizing the architecture.
Open Next
- Read `references/DUCKLAKE_PLAYBOOK.md` for the mode decision matrix, MotherDuck-specific SQL patterns, BYOB constraints, data-inlining behavior, maintenance functions, and common DuckLake mistakes
Related Skills
- `motherduck-connect` for choosing native DuckDB versus Postgres-endpoint access paths
- `motherduck-load-data` when the real issue is ingestion rather than storage format
- `motherduck-model-data` when the user still needs analytical table design after the storage decision
- `motherduck-build-data-pipeline` when DuckLake is just one part of a broader ingestion-to-serving workflow
Read more
name: motherduck-ducklake description: Decide when DuckLake is the right MotherDuck storage pattern versus native MotherDuck storage (the default). Use when evaluating lakehouse or open table format storage, Iceberg-style requirements, fully managed DuckLake, BYOB buckets, own-compute DuckLake access, data inlining, time travel, object-storage layout, or file-aware compaction and maintenance. license: MIT
Use DuckLake on MotherDuck
Use this skill when the storage decision is genuinely about open table format and object-store behavior, not just about where to put another analytical table.
Source Of Truth
- Prefer current MotherDuck DuckLake docs first.
- Use the upstream DuckLake and DuckDB extension docs only to clarify extension-level behavior that MotherDuck docs reference.
- Keep the guidance aligned with the documented product posture:
- native MotherDuck first
- MotherDuck's DuckLake docs define the supported product surface and lifecycle/compatibility limits; verify the current DuckDB/DuckLake version matrix instead of preserving an upstream version or product status in the prompt
- fully managed, BYOB, and own-compute paths are distinct
- maintenance and compaction are explicit operations, not background magic
Default Posture
- Start with native MotherDuck storage unless there is a concrete DuckLake requirement.
- Reach for DuckLake when you need open-table-format semantics, object storage as the source of truth, BYOB, or file-aware maintenance.
- Do not recommend DuckLake just because a workload is "large"; MotherDuck's docs explicitly note native storage is often faster for reads.
- Choose the operating mode deliberately: fully managed for easiest evaluation, BYOB for customer bucket ownership, own compute only when the compute boundary matters too.
- Document the fallback to native MotherDuck storage if the DuckLake requirement is weak, unverified, or only about future portability.
- For data inlining, sorted tables, bucket partitioning, deletion vectors, or extension behavior, verify the current MotherDuck DuckLake docs and DuckDB/DuckLake version matrix before giving syntax guarantees.
- Do not infer MotherDuck client/runtime support from upstream DuckDB release notes alone; check the MotherDuck lifecycle docs when the exact DuckDB version matters.
- Keep the MotherDuck product surface separate from raw DuckLake-extension assumptions.
Workflow
1. Confirm why native MotherDuck storage is insufficient. 2. Pick the operating mode: fully managed, BYOB with MotherDuck compute, or BYOB with own compute. 3. Verify regional and bucket constraints before proposing BYOB. 4. Define the ingestion and maintenance posture up front, including data inlining, file compaction, and cleanup expectations. 5. Validate who will query the data and from which compute surface before finalizing the architecture.
Open Next
- Read `references/DUCKLAKE_PLAYBOOK.md` for the mode decision matrix, MotherDuck-specific SQL patterns, BYOB constraints, data-inlining behavior, maintenance functions, and common DuckLake mistakes
Related Skills
- `motherduck-connect` for choosing native DuckDB versus Postgres-endpoint access paths
- `motherduck-load-data` when the real issue is ingestion rather than storage format
- `motherduck-model-data` when the user still needs analytical table design after the storage decision
- `motherduck-build-data-pipeline` when DuckLake is just one part of a broader ingestion-to-serving workflow
Opinionated AI agent skills for building applications with MotherDuck
Other skills on motherduckdb-agent-skills.
- /motherduck-build-cfa-app
Design a MotherDuck-backed customer-facing analytics app. Use for embedded analytics, multi-tenant SaaS reporting, or product analytics for external users -- whenever the decision depends on per-customer isolation, backend routing, service-account boundaries, read scaling, or
Open skill - /motherduck-build-dashboard
Build a live MotherDuck dashboard as a Dive. Use when composing one shareable KPI, trend, and breakdown story over existing MotherDuck data, especially when the result should stay a saved workspace artifact rather than a full application.
Open skill - /motherduck-build-data-pipeline
Design an end-to-end MotherDuck data pipeline. Use for ETL/ELT workflows -- choosing raw, staging, and analytics boundaries, bulk ingestion paths, transformation sequencing, dlt/dbt integration, publication targets, or whether DuckLake is actually required.
Open skill - /motherduck-connect
Connect to MotherDuck from any application. Use when setting up database connectivity via the Postgres endpoint (recommended), pg_duckdb, native DuckDB API, or JDBC. Covers connection strings, authentication, SSL, and environment variable configuration.
Open skill - /motherduck-create-dive
Create, edit, manage, share, or embed MotherDuck Dives — live React + SQL dashboards, charts, and data apps saved in the workspace. Use for any dashboard, chart, KPI display, or data visualization over MotherDuck data, and for Dive authoring mechanics such as get_dive_guide,
Open skill - /motherduck-create-flight
Create, schedule, run, and debug MotherDuck Flights — Python jobs that run on MotherDuck compute. Use whenever someone wants to create a flight, schedule a Python script or recurring job on MotherDuck, set up scheduled ingestion from Postgres, dlt sources, S3, BigQuery,
Open skill

