Install
$ agentstack add skill-tangledgroup-tangled-skills-duckdb-1-5-3 ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
duckdb 1.5.3
DuckDB is a high-performance analytical database system designed to be fast, reliable, portable, and easy to use. It provides an embedded SQL engine with rich dialect support including correlated subqueries, window functions, complex types (arrays, structs, maps), and seamless file-based data access.
Overview
- Version: 1.5.3 (Variegata)
- Architecture: Embedded library — no separate server process needed
- Primary use: Analytical queries on local files, in-memory datasets, and connected databases
- Key differentiator: Query CSV/Parquet/XLSX files directly via
SELECT * FROM 'file.csv'without explicit import - Extensions: Modular ecosystem covering filesystems, data formats, database connectors, and specialized functions
Quick Start
-- CLI: query a file directly
duckdb -c "SELECT * FROM 'data.csv' LIMIT 5"
-- Install and load an extension
INSTALL excel; LOAD excel;
SELECT * FROM read_xlsx('report.xlsx', header true);
-- Python API
import duckdb
con = duckdb.connect()
result = con.execute("SELECT * FROM 'data.parquet'").fetchall()
Usage
CLI
duckdb # Interactive shell
duckdb :memory: # In-memory mode (no persistence)
duckdb mydb.duckdb # Persistent database file
duckdb -c "SELECT 42" # One-shot query
duckdb --version # v1.5.3 (Variegata)
Python API
import duckdb
con = duckdb.connect() # In-memory
con = duckdb.connect('mydb.duckdb') # Persistent
result = con.execute("SELECT * FROM table").fetchall()
df = con.execute("SELECT * FROM table").fetchdf() # pandas DataFrame
Extension Management
-- List available extensions
SELECT * FROM duckdb_extensions();
-- Install and load
INSTALL excel; LOAD excel;
-- Autoload (extensions load on first use)
-- Default behavior — no explicit INSTALL/LOAD needed for common extensions
Gotchas
mode 'append'/mode 'replace'not available in v1.5.3 — The Excel extension bundled with DuckDB 1.5.3 (commitf4c72b5) does not support multi-sheet write modes. EachCOPY TO ... (FORMAT 'xlsx')creates a fresh single-sheet file, overwriting any existing file. Multi-sheet append/replace was added in later commits. Workaround: use Python'sopenpyxlorpandasfor multi-sheet writes, or build DuckDB from a newer Excel extension commit.- Excel formula cells read as computed values — DuckDB reads the result of formulas, not the formula expressions themselves. Formula cells are typed as
VARCHAR. There is no Excel formula evaluation engine in DuckDB. - Sheet discovery requires workarounds — No built-in
excel_sheets()function exists. Use Python'szipfile+xml.etreeto parse the xlsx (which is a zip archive), or trigger an error with a wrong sheet name to get suggestions from the error message. - Type inference from first data row —
read_xlsx()infers column types from the first non-header row. If that row has empty cells, columns may be inferred as the wrong type. Useall_varchar=truethen cast explicitly, or useempty_as_varchar=trueto handle sparse sheets. - Replacement scans auto-trigger on file extensions — Referencing
'file.csv','file.parquet', or'file.xlsx'in a FROM clause automatically triggers the corresponding scanner. No explicit function call needed. - Extension autoloading may mask missing INSTALL — Common extensions autoload on first use, which can hide the fact that an extension wasn't explicitly installed. Use
SELECT * FROM duckdb_extensions()to verify loaded state.
References
- [01-extensions-overview](references/01-extensions-overview.md) — Extension ecosystem, categories, installation patterns
- [02-excel-read](references/02-excel-read.md) — Reading XLSX files with read_xlsx(), options, type inference
- [03-excel-write](references/03-excel-write.md) — Writing XLSX files via COPY TO, type conversions, limitations in v1.5.3
- [04-excel-formatting](references/04-excel-formatting.md) — text() / excel_text() functions for Excel-compatible number formatting
- [05-excel-metadata](references/05-excel-metadata.md) — Sheet discovery, metadata extraction, formula cell handling, cell types
- [06-extensions-filesystem](references/06-extensions-filesystem.md) — httpfs, aws, azure, GCS filesystem extensions
- [07-extensions-data-formats](references/07-extensions-data-formats.md) — json, parquet, delta, iceberg, avro, lance format extensions
- [08-extensions-database-connectors](references/08-extensions-database-connectors.md) — postgresscanner, mysqlscanner, sqlitescanner, odbcscanner
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: tangledgroup
- Source: tangledgroup/tangled-skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.