motherduck-query
Write, execute, or optimize analytical DuckDB SQL against MotherDuck data.
By motherduckdb · 352 installs
npx skills add motherduckdb/agent-skills --skill motherduck-query
Source repository · Upstream listing
Query MotherDuck
Prerequisites
An established MotherDuck connection (or an active MotherDuck MCP server)
Target database and tables identified
Default Posture
When MotherDuck MCP is available and the SQL answers a business question, call get query guide first, then read only the relevant Guide topics and validate their claims against the live schema.
Write DuckDB SQL, not PostgreSQL SQL, even when using the PG endpoint.
Prefer fully qualified "database"."schema"."table" names; they are required once more than one database or share is attached.
Preserve result grain and check join cardinality before optimizing or materializing a query.
Filter early, aggregate early, and prefer serving tables or summaries for repeated reads.
Keep SQL obvious, multi line, and explicit about grain, filters, and output shape.
Treat DDL, DML, ATTACH , DETACH , recovery commands such as CREATE SNAPSHOT , ALTER DATABASE ... SET SNAPSHOT , UNDROP DATABASE , and lifecycle commands such as SHUTDOWN as writes. Use the MotherDuck MCP query rw tool when the user's change request authorizes the write. Ask for confirmation only when the action is destructive, externally visible, or outside the stated scope.
Tag long lived integrations with custom user agent when the connection path supports it; the tag appears per query in the Duckling Overview and in query history.
For classification, scoring, routing, or yes/no judgments over text or images, use prompt jev() : it returns typed probabilities and labels, bills input tokens only, and batches rows. Use prompt() for generated text or open extraction with struct or json schema . Both are per row billable calls: test on a small LIMIT , store results in a table, and rerun only NULL rows.
Workflow
1. Confirm the actual tables, columns, and grain before writing SQL.
2. Load relevant Guide context when MCP is available, without treating it as a substitute for schema inspection.
3. Write the query in SQL first, then wrap it in Python or TypeScript only if needed.
4. Use DuckDB native patterns when they simplify the query; a simple lookup does not need a CTE or a materialization.
5. Verify result shape and key aggregates. When performance is part of the request or execution shows a problem, check EXPLAIN ANALYZE and md information schema.query history ( wait time , bytes spilled to disk , instance type ) before changing the query or the Duckling size.
6. Materialize expensive repeated queries into serving tables or light views when warranted.
References
Read only the reference sections needed for the current task.
Read references/QUERY PLAYBOOK.md for DuckDB query patterns, exploration SQL, performance rules, common analytical shapes, and common mistakes
Read references/AI FUNCTIONS.md when a query calls prompt jev() , prompt() , or embedding()
Read references/PERFORMANCE.md when a query is slow, spills, runs out of memory, or a Duckling looks undersized
Related Skills
Load related skills only for missing capabilities; reuse established context.
motherduck connect for session setup
motherduck duckdb sql for syntax and function reference
motherduck explore for understanding the source schema before writing queries
motherduck manage guides when semantic definitions or reusable query rules need to be read or maintained