Repo-owned DuckDB refreshes from checked-in SQL
Skiff gives a repository one repeatable data-refresh contract: SQL Server sources, reviewed query files, fixed validation checks, and a DuckDB destination. Run one command to build and publish the next complete generation.
What Skiff does
Skiff discovers the nearest skiff.toml, validates every referenced file, connects with the credentials named by the manifest, and loads the configured SQL Server queries into DuckDB.
Each refresh builds privately. Skiff applies row and time limits, runs checked-in DuckDB checks, checkpoints the result, and only then replaces the published file. If loading or validation fails, the existing DuckDB remains untouched.
The operating model
- A database administrator grants each source login
SELECTaccess to only the required tables or views. - A maintainer reviews
skiff.toml, the query files, and optional checks in source control. - A refresh process receives the passwords through environment variables.
- Consumers open the published DuckDB read-only.
skiff check
skiff refresh
Sources load in parallel. Queries within one source run in manifest order and can share a SQL Server snapshot when that source sets snapshot = true.
What Skiff does not do
Skiff is not a hosted service, scheduler, secrets manager, database-permission system, or DuckDB encryption layer. The output is plaintext. Use database grants, operating-system permissions, full-disk encryption, and a process supervisor appropriate to your environment.
Skiff also assumes it is the only writer of its destination. Other processes should treat the output as read-only.
Choose your next step
- New project: follow Getting started.
- Multiple databases or credentials: configure sources and credentials.
- Large or late-arriving tables: use incremental loads and backfills.
- Agent-triggered refreshes: read Refresh with MCP and the security model.
- Exact command and manifest fields: open the CLI reference.