quick-quack-quest is a Go CLI (Cobra) to validate data files and run parameterized DuckDB queries from a CUE configuration.
Install with Homebrew (Flarebyte tap):
brew install flarebyte/tap/quick-quack-questRun the CLI:
quack version --format jsonFrom a user perspective, the CLI lets you:
- Declare datasets (CSV, JSON, NDJSON, Parquet), schema fields, compression, and optional homepage/source metadata.
- Validate datasets against declared structure with either:
duckdbenginenativeengine
- Run reusable DuckDB queries with parameters.
- Control large workloads with sampling, streaming, progress, and safety limits.
The source of truth is CUE config under doc/design-meta/examples/config/:
cli-config.cue: example runtime and dataset/query configcli-config.schema.cue: config schema
Design and command catalogs are documented under:
doc/design/duckdb-cli-spec.md
Use these minimal snippets to get started quickly.
package designmeta
cliSpec: {
validation: {
engine: "duckdb"
}
datasets: [{
id: "sales_daily"
name: "Sales Daily"
format: "csv"
layout: "single_file"
path: "./data/sales.csv"
compression: "none"
fields: [
{name: "sale_date", type: "DATE", nullable: false},
{name: "country", type: "VARCHAR", nullable: false},
{name: "revenue", type: "DOUBLE", nullable: false},
]
}]
queries: [{
id: "sales_by_country"
name: "Sales by Country"
required_datasets: ["sales_daily"]
parameters: [
{name: "start_date", type: "DATE", required: true},
{name: "end_date", type: "DATE", required: true},
]
sql: """
SELECT country, SUM(revenue) AS total_revenue
FROM sales_daily
WHERE sale_date BETWEEN $start_date AND $end_date
GROUP BY country
ORDER BY total_revenue DESC
"""
}]
}Run with a custom config path:
quack config validate --config ./path/to/cli-config.cue
quack dataset validate sales_daily --config ./path/to/cli-config.cue --format json
quack query run sales_by_country --config ./path/to/cli-config.cue --param start_date=2026-01-01 --param end_date=2026-01-31 --format tablePlanned command surface:
dataset listdataset validate <dataset-id>dataset validate-alldataset inspect <dataset-id>query listquery run <query-id>query explain <query-id>config validateversion
- Update dataset/query definitions in CUE config.
- Run config validation.
- Run dataset validation (
duckdbornativeengine). - Execute queries with parameters and output format (
table,json,jsonl,csv).
