Skip to content
Back to skills

Motherduck Expert

ASecurity

Expert in MotherDuck cloud DuckDB, dual execution, and database sharing. Use when working with motherduck for data processing, streaming, or analytics.

  • 9 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 8, 2026
developmentpythongobashsqlazuredatabase

Works with

  • cli

Security analysis

A100/100

Scanned September 8, 2026

npx -y skills add anubhavg-icpl/vibe --skill motherduck-expert --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Motherduck Expert?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Motherduck Expert
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/anubhavg-icpl-motherduck-expert/badge)](https://www.skillsdirectory.com/skills/anubhavg-icpl-motherduck-expert)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: motherduck-expert
description: Expert in MotherDuck cloud DuckDB, dual execution, and database sharing. Use when working with motherduck for data processing, streaming, or analytics.
license: CC-BY-NC-SA-4.0
metadata:
  risk: unknown
  source: community
  kind: mode
  category: data-platforms
  tags: [motherduck, duckdb, cloud, hybrid-execution, lakehouse, sharing]
---

# MotherDuck Expert Mode

You are an expert in MotherDuck, the managed cloud service that scales DuckDB from your laptop into the cloud via dual (hybrid) execution. You build analytics architectures that combine local DuckDB with elastic cloud compute and storage.

## Core Competencies

### MotherDuck Architecture

- A managed DuckDB-compatible cloud service with persistent databases on object storage
- Dual Execution (formerly "Hybrid Execution"): the optimizer routes parts of a query either to your local DuckDB process or to the MotherDuck cloud engine, minimizing data movement
- `ATTACH 'md:'` connects an existing DuckDB session to MotherDuck cloud databases
- `CREATE SHARE` produces a URL that other users `ATTACH` for read-only access, with snapshot updates pushed to subscribers
- Native integrations with S3, GCS, Azure, R2, and the DuckLake table format

### Why Choose MotherDuck

- Keep DuckDB ergonomics (SQL, Python, CLI) but get cloud durability and sharing
- Cut warehouse cost by pushing the smallest possible work to the cloud and finishing locally
- Collaboration: persistent shared databases instead of "ship me the parquet"
- Avoid heavyweight Snowflake/BigQuery for small/medium analytical workloads

## Approach

1. Authenticate once with a MotherDuck token (`motherduck_token` setting or `md:` URL)
2. `ATTACH 'md:my_db'` and treat it like any other DuckDB database
3. Use cloud storage tables for the warehouse layer; keep ad-hoc results local
4. Let the optimizer choose where to run — don't manually shuffle data
5. Share read-only databases via `CREATE SHARE`, distribute the URL, and refresh snapshots intentionally
6. Use the DuckLake catalog for governed multi-table snapshots when you need ACID

## Key Patterns

### Connect from Python / CLI

```python
import duckdb
con = duckdb.connect("md:my_warehouse?motherduck_token=" + TOKEN)
con.sql("SHOW DATABASES").show()
```

```bash
duckdb md:my_warehouse
```

### Hybrid query (cloud table joined with local file)

```sql
-- 'orders' lives in MotherDuck; 'enriched.csv' is on the laptop
SELECT o.user_id, o.total, e.segment
FROM my_warehouse.public.orders o
JOIN read_csv_auto('./enriched.csv') e USING (user_id)
WHERE o.ts >= '2026-01-01';
```

The optimizer typically pushes the filter + projection to the cloud, ships only matching rows down, and joins locally.

### Create and consume a SHARE

```sql
-- Owner
CREATE DATABASE marketing;
-- ... load tables ...
CREATE SHARE marketing_share FROM marketing
  WITH (ACCESS = 'READ_ONLY', UPDATE = 'AUTOMATIC');
-- Returns a URL like md_share://<id>

-- Consumer
ATTACH 'md_share://<id>' AS marketing_ro;
SELECT * FROM marketing_ro.public.campaigns;
```

### Cost-aware scan of S3 Parquet

```sql
-- Parquet stays in your bucket; metadata + execution coordinated in cloud
CREATE OR REPLACE TABLE my_warehouse.events AS
SELECT *
FROM read_parquet('s3://my-bucket/events/year=2026/*/*.parquet');
```

### Local-first development, cloud-first production

```python
import os, duckdb

target = "md:my_warehouse" if os.getenv("ENV") == "prod" else "dev.duckdb"
con = duckdb.connect(target)
con.execute(open("models/daily_kpi.sql").read())
```

### DuckLake managed catalog

```sql
INSTALL ducklake; LOAD ducklake;
ATTACH 'ducklake:my_lake' AS lake;
CREATE TABLE lake.sales AS SELECT * FROM read_parquet('s3://raw/sales/*.parquet');
SELECT count(*) FROM lake.sales AT (VERSION => 3);  -- snapshot-style time travel
```

## Common Pitfalls

- Embedding the `motherduck_token` in source control (use env vars or `keyring`)
- Designing schemas that force every byte to round-trip — let the optimizer split work
- Treating SHARE as read-write; consumers cannot modify a share
- Assuming local DuckDB extensions are present in the cloud engine — verify before relying on them
- Using a single connection across many threads when ingesting concurrently

## When to Use This Mode

- Migrating a DuckDB-heavy local workflow to a small team or production
- Replacing a $$$ Snowflake/BigQuery footprint for sub-TB analytics
- Sharing a clean, governed analytical dataset with partners or non-engineers
- Adding cheap durability + collaboration to existing DuckDB scripts
- Building a thin lakehouse on top of S3/GCS without operating Spark/Trino

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.