duckdb

duckdb is a skill for Claude Code, Codex from fmind/dot. It costs 47 tokens per session (975 once invoked), scanned A, original, MIT.

A command-line workflow for querying and converting CSV, Parquet, JSON, SQLite, and DuckDB files. DuckDB is a small database engine designed for analysis directly on local files.

In plain words
What is it for?
Use it to run SQL over files, inspect columns and statistics, convert CSV to Parquet, attach SQLite databases, and check an application's embedded database.
Why use it?
It avoids writing one-off scripts for common data inspection, filtering, summaries, conversions, and integrity checks.

Skill for Claude CodeCodex

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/fmind/dot/duckdb
Any agent
npx skills add fmind/dot --skill duckdb
Clone the repo
git clone --depth 1 https://github.com/fmind/dot

Made for: Claude Code, Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for duckdb

README.md
[![agentmods](https://agentmods.dev/badge/skills/fmind/dot/duckdb.svg)](https://agentmods.dev/skills/fmind/dot/duckdb)
Your own site
<a href="https://agentmods.dev/skills/fmind/dot/duckdb"><img src="https://agentmods.dev/badge/skills/fmind/dot/duckdb.svg" alt="Measured on agentmods" height="20"></a>
Per session 47 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 975 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00047 $0.00975
Opus 5 $0.00023 $0.00487
Sonnet 5 $0.00009 $0.00195
Haiku 4.5 $0.00005 $0.00097

Measured yesterday against content hash 3da31a76f7b4, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

duckdb scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

skills/duckdb/SKILL.md · 59 lines

How it starts

The opening of the file, as written. The whole thing — 59 lines — stays where its author put it; the contents beside it link to each section on GitHub.

DuckDB and SQLite

DuckDB is the default engine for local analysis: it reads CSV, Parquet, and JSON directly, attaches SQLite files, and writes any of them back. SQLite stays the embedded store for applications; DuckDB is the tool you point at data.

Commands

duckdb -c "SELECT name, score FROM 'people.csv' WHERE score > 80 ORDER BY score DESC"   # files are tables
duckdb -json -c "SELECT * FROM 'events/*.json'"                                          # JSON output for agents and jq
duckdb lab.duckdb -c "CREATE OR REPLACE TABLE people AS FROM 'people.csv'"               # persist into a database file
duckdb -c "COPY (FROM 'people.csv') TO 'people.parquet'"                                 # convert; Parquet is the durable format
duckdb -c "ATTACH 'app.sqlite' AS s (TYPE sqlite); SELECT count(*) FROM s.users"         # read an application database
duckdb -c "SUMMARIZE FROM 'people.parquet'"                                              # column stats in one call
sqlite3 app.sqlite ".schema" && sqlite3 app.sqlite "PRAGMA integrity_check"              # inspect the app store itself

The interactive shells load ~/.duckdbrc and ~/.sqliterc (box mode, headers, timer, for NULL); scripts pass -json, -csv, or -markdown explicitly so output does not depend on the rc file.

Workflow

  1. Look before querying: DESCRIBE FROM '<file>' and SUMMARIZE reveal types, nulls, and ranges; fix a wrong inference with read_csv('<file>', types={'id': 'BIGINT'}).
  2. Keep queries in files: duckdb < analysis.sql or duckdb -f analysis.sql for anything longer than one line, committed next to the data description.
  3. Persist derived data as Parquet: never commit .duckdb files (they change on every open); commit the SQL that rebuilds them.
  4. Check results: row counts before and after joins, count(*) FILTER (WHERE x IS NULL) on keys, and a spot check against the source.
  5. Export for the reader: -markdown for a report, -json for another tool, COPY ... TO 'out.csv' (HEADER) for a spreadsheet.

Read the full file on GitHub · 59 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. yesterday First seen · 59 lines · 47 tokens per session scan A 3da31a76f7b4

Subscribe to this mod's changes

duckdb is a skill published in the GitHub repository fmind/dot (4 stars, last pushed today), licensed MIT. It adds 47 tokens to every session and 975 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.