Tools & Libraries

Implementations of ExCSV. Both implement v0.6, including notes and links (#note, link=, #link), and both run the shared fixture corpus. Need a quick text ↔ JSON conversion? Use the browser converter — nothing leaves your machine. This list is curated — if you ship a library or CLI, open an issue on the spec repo.

excsv-golang

Go · CLI + library · Reference implementation · CLI 0.0.6

v0.6

Reference command-line tool and Go library for ExCSV. Supports plain (.excsv, .extsv), row-ZIP (.excsv.zip, .extsv.zip), and pack (.excsv.pack.zip) storage forms.

  • Parse, validate, fix, and serialize ExCSV documents
  • Header, metadata, rows, and conversion commands
  • Computed columns (formula=): materialize / dematerialize
  • Notes and links: note add|list|remove, link set|list|remove|check — unsafe schemes and unresolved anchors reported
  • column rename rewrites every reference — formula=, #chart, #note/#link, link= placeholders, pack #fk
  • Chart suggestions (#chart, #chart-vega): parse, validate, JSON mirror (library)
  • ZIP wrap / unwrap / peek with original-size checks
  • Pack create and multi-table table list
  • Fixture-driven tests against the shared fixtures/ corpus

Install

go install github.com/boligolov/excsv-golang/cmd/excsv@latest

Quick start

excsv data.excsv validate
excsv data.excsv info
excsv data.excsv note add --row 2 --col amount --text "Refund pending"
excsv data.excsv link check
excsv data.excsv.zip zip unwrap -o data.excsv
excsv data.excsv pack create -o data.excsv.pack.zip

excsv-python

Python 3.10+ · Library only · Alpha · 0.6.0

v0.6

Python reference implementation of ExCSV, ported from excsv-golang with matching module layout and error taxonomy. Supports plain (.excsv, .ecsv, .extsv sidecars), JSON (.excsv.json), row ZIP (.excsv.zip, .ecsv.zip), and pack (.excsv.pack.zip). The package version follows the spec: 0.6.0 implements v0.6. Pre-1.0 — pin a version and check release notes before upgrading.

  • Parse, validate, fix, and serialize ExCSV documents
  • CSV/TSV import, JSON and CSVW export
  • Computed columns (formula=): materialize / dematerialize
  • Chart suggestions (#chart, #chart-vega): checks, add / remove, JSON mirror
  • Notes and links: resolve row=/key= anchors, build each cell's final URL with the scheme check, add notes and links
  • rename_column rewrites every by-name reference, sidecar-safe
  • Row ZIP and pack containers, with optional AES-256 password support via pyzipper
  • Fixture-driven tests against the shared fixtures/ corpus

Install

pip install "excsv @ git+https://github.com/boligolov/excsv-python@v0.6.0"

# or, for development:
git clone https://github.com/boligolov/excsv-python
cd excsv-python
pip install -e .            # core library, stdlib only
pip install -e ".[crypto]"  # + AES-256 zip password support

Quick start

import excsv

res = excsv.parse_file("data.excsv", excsv.strict_options())
doc = res.doc
print(doc.row_count(), doc.header.delim_name)

for n in doc.resolve_notes():            # #note lines, in file order
    print(n.target.value, n.row, n.col_name, n.text)
print(doc.resolve_links().cell_link(0, "order_id"))   # final URL, or None

Agent skill

Claude Code, Codex, Cursor, … · Instructions only · No dependencies

v0.6

A SKILL.md that teaches a coding agent to read ExCSV meta first: answer from rows=, #%, #@grain and #column before touching rows, load the data in the declared dialect, and respect role=/agg=, computed columns and notes.

  • Loads rows correctly with pandas or DuckDB: quote=none, nulls, # inside values, leading zeros
  • Knows that #% values are positional and that virtual formula= columns have no data
  • Never sums an id or a balance across time, and weights ratios
  • Covers sidecars, row ZIP, pack and the JSON form, plus rules for writing and editing files

Install

curl -LO https://excsv.dev/skills/excsv.zip
mkdir -p ~/.claude/skills               # or your agent's skills folder
unzip excsv.zip -d ~/.claude/skills/

# or
npx skills add boligolov/excsv

Planned