Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/yharby-duckdb
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: backend, data, productivity
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Node.js package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/duckdb
What's inside
- Skill name
duckdb- Description
- DuckDB v1.5 spatial/GIS analytics with 155+ ST_* functions. Use this skill for DuckDB, spatial queries, GeoParquet, geometry data, or geospatial analytics. Workflow: Discovery → Understanding → Analysis (Phase 1: glob/DESCRIBE/ST_Read_Meta, Phase 2: SUMMARIZE/parquet_metadata/CRS detection, Phase 3: targeted queries). Query profiling with EXPLAIN ANALYZE for troubleshooting. Spatial: CRS/EPSG transforms, automatic R-Tree indexes, distance/area calculations, spatial joins, H3/A5/S2 indexing, QUADBIN tiling, geometry shredding (3x compression), core GEOMETRY type (no extension), GeoParquet (v1/v2/BOTH), GDAL formats (Shapefile, GeoJSON, GeoPackage, FlatGeobuf, OSM). Data sources: Overture Maps (6 themes), DuckLake lakehouse, Apache Iceberg (REST catalogs, time travel), BigQuery connector, raster (RaQuet, raquet-io CLI), VARIANT type. Also: BM25/FTS, HNSW vector search, friendly SQL, Python API, v1.5 breaking changes, common pitfalls.
- License
- MIT
- Instructions
- 608 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Agent Skills spec issues
- name: "duckdb" does not match folder "duckdb-skill"
- body: 608 lines (spec recommends under 500)
Files (39)
- marketplace.json · .claude-plugin/
- plugin.json · .claude-plugin/
- LICENSE
- README.md
- SKILL.md
- detect.md · commands/
- hooks.json · hooks/
- post-bash-check.js · hooks/
- a5.md · refs/
- autocomplete.md · refs/
- bigquery.md · refs/
- ducklake.md · refs/
- explain-analyze.md · refs/
- fts.md · refs/
- gdal-formats.md · refs/
- h3.md · refs/
- iceberg.md · refs/
- overture-maps.md · refs/
- python-api.md · refs/
- raster-tiling.md · refs/
- spatial-indexes.md · refs/
- a5-s2.md · refs/spatial/
- accessors.md · refs/spatial/
- aggregates.md · refs/spatial/
- conversion-io.md · refs/spatial/
- core-v15.md · refs/spatial/
- coverage-tiling.md · refs/spatial/
- creation.md · refs/spatial/
- index.md · refs/spatial/
- linear-ref.md · refs/spatial/
- macros.md · refs/spatial/
- measurement.md · refs/spatial/
- predicates.md · refs/spatial/
- table-functions.md · refs/spatial/
- transforms.md · refs/spatial/
- summarize.md · refs/
- vss.md · refs/
- wasm-patterns.md · refs/
- settings.json
SKILL.md (first lines)
# DuckDB v1.5 Skill
> DuckDB v1.5.0 "Variegata" — Released 2026-03-09.
## How to Think: Discovery → Understanding → Analysis
The most common mistake is jumping straight to queries. Instead, follow this workflow — it prevents wrong assumptions, bad joins, and wasted work.
### Phase 1: Discover the Data
Before writing any analytical query, find out what you're working with.
**Local files — use glob patterns to find them:**
```sql
-- Find what files exist (Parquet, CSV, JSON, GeoJSON, etc.)
FROM glob('data/*.parquet');
FROM glob('**/*.csv');
FROM glob('/path/to/project/**/*.geojson');
```
**Remote files — always load httpfs first, then probe:**
```sql
INSTALL httpfs; LOAD httpfs;
-- For S3, also set the region:
SET s3_region = 'us-west-2';
-- Remote Parquet (only reads metadata, not full file)
DESCRIBE FROM 'https://example.com/data.parquet';
-- S3 / Azure / GCS
DESCRIBE FROM 's3://bucket/path/file.parquet';
-- S3 buckets with dots in the name (e.g., source.coop) need path-style URLs,
-- because virtual-hosted style breaks SSL certificate validation:
SET s3_url_style = 'path';
DESCRIBE FROM 's3://us-west-2.opendata.source.coop/repo/data.parquet';
-- Hive-partitioned datasets — check partition structure
FROM parquet_metadata('s3://bucket/dataset/**/*.parquet') LIMIT 5;
```
**Databases — inspect what's available:**
```sql
-- Attached databases
SHOW ALL TABLES;
DESCRIBE table_name;
-- External DuckDB files (new in v1.5 — no ATTACH needed)
FROM read_duckdb('other.duckdb', table_name := 'my_table');
-- External databases via ODBC (new in v1.5, requires INSTALL odbc_scanner)
-- odbc_connect(conn_str) + odbc_query(conn, sql)
```
**Discover functions from DuckDB itself** — when unsure about a function signature:
```sql
-- Search for functions by name pattern
SELECT function_name, parameters, return_type
FROM duckdb_functions() WHERE function_name LIKE 'ST_Coverage%';
-- List all extensions and their status
FROM duckdb_extensions();
-- List all settings
FROM duckdb_settings() WHERE name LIKE '%geometry%';
```
**Geospatial files — check layers and metadata:**
```sql
LOAD spatial;
SELECT * FROM ST_Read_Meta('data.gpkg'); -- layers, CRS, field schemas
SELECT * FROM ST_Read_Meta('data.gdb'); -- ESRI File Geodatabase
```
### Phase 2: Understand the Shape
Once you know WHAT files exist, understand their structure before querying.
```sql
-- Schema: column names and types (instant, reads only metadata)
DESCRIBE FROM 'data.parquet';
DESCRIBE FROM 'data.csv';
-- Stats: min, max, approx_unique, avg, std, quartiles, nulls (scans full data)
SUMMARIZE FROM 'data.parquet';
SUMMARIZE FROM 'data.csv';
-- Quick sample: see actual values (avoids scanning everything)
FROM 'data.parquet' LIMIT 10;
FROM 'data.csv' LIMIT 10;
-- Row count estimate (fast for Parquet — reads metadata only)
SELECT count(*) FROM 'data.parquet';
-- For Parquet: row group structure, column statistics, file-level metadata
FROM parquet_metadata('data.parquet');
FROM parquet_schema('data.parquet');
FROM parquet_kv_metadata('data.parquet'); -- GeoParquet metadata lives here
```
This phase is critical because:
- DESCRIBE tells you column types — you'll know if geometry is WKB blob vs native GEOMETRY
- SUMMARIZE reveals data quality issues (null percentages, unexpected ranges, cardinality)
- A quick LIMIT sample shows actual values — field naming conventions, coordinate order, encoding
- For spatial data: you need to know the CRS before any spatial operations
### Detecting the CRS
Knowing the CRS is essential before any spatial operation. The method depends on how geometry is stored:
**Step 1: Identify the format.** Run DESCRIBE first — the column type tells you which case you're in:
| Column type | Format | CRS location |
|---|---|---|From yharby/duckdb-skill, MIT.
Signals
- Stars
- 8
- Forks
- 0
- Open issues
- 0
- Last commit
- Mar 19, 2026 (7 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/yharby/duckdb-skill
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
Cite this page
duckdb skill. Agent Mart. https://agentmart.dev/skills/yharby-duckdb (last updated 2026-10-24)