Skip to main content

A toolkit for working with spreadsheets from Claude Code

Project description

sheetwright

A toolkit that lets Claude Code work with spreadsheets the way it works with code: text-source files, git, TDD, diffs, and review.

.xlsx is treated as a build artifact compiled from text sources. You write Markdown tables and YAML sidecars; sheetwright produces the workbook and runs LibreOffice Calc in headless mode (the default, swappable calc engine) to evaluate every formula. From there you assert on outputs with ordinary Python tests, diff source against any other workbook, and snapshot calculated values for regression checks.

sheetwright also ships an MCP (Model Context Protocol) server, so Claude Code (or any MCP client) can drive a project end-to-end through typed tools that mirror the CLI.

Quick reference

sheetwright init my-model              # scaffold a fresh project
sheetwright import path/to/model.xlsx  # ingest an existing workbook (or re-import)
sheetwright build                      # compile sources -> build/<name>.xlsx
sheetwright recalc                     # run the calc engine, cache results
sheetwright test                       # run testsweet tests
sheetwright snapshot [--update]        # golden-file regression of outputs
sheetwright diff [--vs xlsx:<path>]    # semantic diff of source or vs an xlsx
sheetwright check                      # lint dangling refs, missing names, etc.
sheetwright mcp                        # run the MCP server on stdio

Installation

sheetwright uses uv for project management and Python 3.11.

git clone https://github.com/kaapstorm/sheetwright.git
cd sheetwright
uv sync
uv run sheetwright --help

LibreOffice must be on PATH for the default calc engine.

  • Debian/Ubuntu: apt install libreoffice
  • macOS: brew install --cask libreoffice
  • Windows (PowerShell): winget install --id TheDocumentFoundation.LibreOffice

Windows users new to the command line should start with the Windows setup primer.

Documentation

License

GPL-3.0-or-later.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sheetwright-0.1.0.tar.gz (178.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sheetwright-0.1.0-py3-none-any.whl (79.2 kB view details)

Uploaded Python 3

File details

Details for the file sheetwright-0.1.0.tar.gz.

File metadata

  • Download URL: sheetwright-0.1.0.tar.gz
  • Upload date:
  • Size: 178.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.10 {"installer":{"name":"uv","version":"0.11.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"openSUSE Tumbleweed","version":"20260507","id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for sheetwright-0.1.0.tar.gz
Algorithm Hash digest
SHA256 eb6dba0252c674410b12e986f41656ea40a0940a2a6bc0a992d5aed8d6ef241c
MD5 9356f15d1c047691bf46cad00f18c336
BLAKE2b-256 dfe37b79f01eba6b2b24c185e89dc24b8c7a2bf60313d6b79b0b5bf8a6e1cb0b

See more details on using hashes here.

File details

Details for the file sheetwright-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: sheetwright-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 79.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.10 {"installer":{"name":"uv","version":"0.11.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"openSUSE Tumbleweed","version":"20260507","id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for sheetwright-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 748a8687142dfd5f0f0051d48372f79681661fbb309c5678e5fa46452e96bda7
MD5 5a3770ad7b36c884117cd6be55e02798
BLAKE2b-256 6e316b19838ad362725a17acde8e109cb6485deda4debd61b0a8b1d5ded92631

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page