Skip to content
Data
Skill

/convert-file

Convert any data file to another format: CSV, Parquet, JSON, Excel, GeoJSON, and more. Use when the user says "convert to parquet", "save as xlsx", "export as JSON", "make this a CSV", "turn into parquet", or any variation of format-to-format conversion for data files. Also

From plugin
duckdb-skills
5279 skills
Install
$ npx -y skills add duckdb/duckdb-skills --skill convert-file --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/convert-file

Context preview

The summary Claude sees to decide when to auto-load this skill.

Convert any data file to another format: CSV, Parquet, JSON, Excel, GeoJSON, and more. Use when the user says "convert to parquet", "save as xlsx", "export as JSON", "make this a CSV", "turn into parquet", or any variation of format-to-format conversion for data files. Also

SKILL.md

convert-file.SKILL.md
name: convert-file
description: >
  Convert any data file to another format: CSV, Parquet, JSON, Excel, GeoJSON, and more.
  Use when the user says "convert to parquet", "save as xlsx", "export as JSON", "make this a CSV",
  "turn into parquet", or any variation of format-to-format conversion for data files.
  Also triggers when the user wants to write Parquet, Excel, or other binary formats that Claude cannot produce natively.
argument-hint: <input-file> [output-file]
allowed-tools: Bash

You are helping the user convert a data file from one format to another using DuckDB.

Input file: `$0` Output file: `${1:-}`

Step 1 — Resolve input and output

**Input**: `$0`. If it's a bare filename (no `/`), resolve to a full path with `find "$PWD" -name "$0" -not -path '*/.git/*' 2>/dev/null | head -1`.

**Output**: If `$1` is provided, use it as the output path. If not, default to the same stem as the input with a `.parquet` extension (e.g., `data.csv` → `data.parquet`).

Infer the output format from the output file extension:

| Extension | Format clause | |---|---| | `.parquet`, `.pq` | *(default, no clause needed)* | | `.csv` | `(FORMAT csv, HEADER)` | | `.tsv` | `(FORMAT csv, HEADER, DELIMITER '\t')` | | `.json` | `(FORMAT json, ARRAY true)` | | `.jsonl`, `.ndjson` | `(FORMAT json, ARRAY false)` | | `.xlsx` | `(FORMAT xlsx)` — requires `INSTALL excel; LOAD excel;` | | `.geojson` | `(FORMAT GDAL, DRIVER 'GeoJSON')` — requires `LOAD spatial;` | | `.gpkg` | `(FORMAT GDAL, DRIVER 'GPKG')` — requires `LOAD spatial;` | | `.shp` | `(FORMAT GDAL, DRIVER 'ESRI Shapefile')` — requires `LOAD spatial;` |

Step 2 — Convert

Run a single DuckDB command. Prepend extension loads as needed based on both the input and output formats.

duckdb -c "
<EXTENSION_LOADS>
COPY (FROM '<INPUT_PATH>') TO '<OUTPUT_PATH>' <FORMAT_CLAUSE>;
"

For remote inputs (`s3://`, `https://`, etc.), prepend the same protocol setup as `read-file`:

| Protocol | Prepend | |---|---| | `s3://` | `LOAD httpfs; CREATE SECRET (TYPE S3, PROVIDER credential_chain);` | | `gs://` / `gcs://` | `LOAD httpfs; CREATE SECRET (TYPE GCS, PROVIDER credential_chain);` | | `https://` / `http://` | `LOAD httpfs;` |

**If the user mentions partitioning** (e.g., "partition by year"), add `PARTITION_BY (col)` to the format clause. This only works with Parquet and CSV output.

**If the user mentions compression** (e.g., "use zstd"), add `CODEC 'zstd'` for Parquet output.

Step 3 — Report

On success, report:

  • Input file and detected format
  • Output file, format, and size (`ls -lh`)
  • Row count if quick to compute

On failure:

  • **`duckdb: command not found`** → delegate to `/duckdb-skills:install-duckdb`
  • **Missing extension** → install it and retry
  • **Input parse error** → suggest the user check the input format or try `/duckdb-skills:read-file` first to inspect it
Read more
Ships withduckdb-skills

A Claude Code plugin that adds DuckDB-powered skills for data exploration and session memory.

Get the whole plugin
Stats
527
Stars
26
Forks
Maintained
Maintenance
Shell
Language
MIT
License
3mo ago
Last commit
5mo ago
Created

Repo: duckdb/duckdb-skills