sqb playground
Creates a self-contained waffle shop project with DuckDB. No warehouse credentials, no git clone, no external data - just a working project you can compile, build, test, and explore immediately.Usage
sqlbuild-playground). The template is chosen with --template (default waffle_shop).
Templates
| Template | Description |
|---|---|
waffle_shop | Default. DuckDB-backed project with models, tests, scenarios, and macros. |
dagster | Waffle shop project plus a dagster/ directory with a ready-to-run definitions.py. |
rivers | Waffle shop project plus a rivers_pipeline/ directory with a Rivers repository definition. |
virtual | Waffle shop with virtual environments enabled, a local DuckDB state store, loaders, and the full virtual lifecycle (build, promote, rollback). |
python_nodes | A small DuckDB project demonstrating Python nodes: a task feeding a loader, a model read by a Python asset through ctx.relation(model(...)), a soft-skip fan-in, materialized=False, and a Python check. |
What it creates
A complete DuckDB-backed project with:- Staging views, fact/dimension tables, and incremental models
- Sources with inline expression data (no external setup)
- Seeds, SQL functions, and a custom materialization
- Built-in and custom audits
- SQL unit tests including chain tests
- E2E scenario tests
- Python macros
- AI agent skill files (auto-installed for OpenCode, Claude Code, and other agents)
dagster template adds:
dagster/definitions.py- Dagster definitions withsqlbuild_assets,sqlbuild_scenario_checks, andSqlBuildCliResourcedagster/README.md- Setup instructions
python_nodes template instead creates a focused Python-nodes project:
tasks/orders.py,loaders/orders.py,assets/orders_export.py,checks/orders_export.py- A
fact_ordersSQL model over a managedraw_orderssource - Examples of the SQL boundary,
ctx.relation(model(...)), soft-skip fan-in, and a Python check
Examples
Notes
- The target directory must not already exist
- DuckDB is included as a core dependency - no extra installation needed
- The local DuckDB database file is created on the first build
- The Dagster template uses
prepare_if_dev()to auto-generate the DAG artifact when Dagster starts in dev mode

