Skip to content

standalone packages

Packages

Every tool here is one implementation reached six different ways. Which one you want depends on what you are doing: sending a colleague a single file, importing a function, typing a command, calling it from another language, handing it to an agent, or letting Claude read the skill. None of those should require a different tool.

Each package is BSD-3-Clause, local-first, and independently versioned. All ten are published on PyPI, so a plain pip install is enough.

Six ways in

The rule is that these are surfaces, never re-implementations. A route, a tool description and a command line all call the same function; when they disagree, one of them is a bug rather than a variant. Five of these six are the contract every package holds — library, command line, HTTP, agent tools, skill. The zip kit is a way of delivering one, not a sixth implementation.

zip

A single self-contained kit

One folder that runs on a machine with nothing installed: the generator, the drawing engine in one file, the data, a page that opens the result, and a README. No network, no clone, no account. This is the form you can attach to an email.

library

Python functions

Import them and call them. Typed, documented, and free of any plotting or charting dependency: the SVG is written directly, so the only thing you install is the thing you asked for.

cli

Two command lines over one engine

Every package ships an argparse front door and a Click twin — make-a11y and sprezzature-accessibility, make-colors and sprezzature-colors, and so on. argparse because it is in the standard library and therefore always there; Click because the people using it expect it. Where a package has several tools the two doors read one catalogue, so neither can offer a command the other is missing. Where Click is not already needed it is an optional extra and the import is guarded: a package whose audit runs on the standard library alone stays that way.

api

HTTP, via FastAPI

The same functions over HTTP, so any language that can make a request can use them. Comes with OpenAPI docs at /docs, which is also how the argument names stay honest: they are generated from the signatures, not written by hand.

mcp

Agent tools, via FastAPI MCP

The HTTP routes republished as Model Context Protocol tools, so an assistant calls them as first-class tools rather than by guessing at a shell command. Deliberately a wrapper over the existing routes: a hand-written MCP server would be a second copy of the surface, free to drift from it.

skills

Skills, for Claude and for OpenCode

The judgement that is not in the code: when to reach for a chart type, what makes a title honest, which check to run before shipping. MCP gives an agent the ability; a skill gives it the taste. Both runtimes read the same source material.

Where each surface actually exists

Five surfaces is the contract, and all ten packages hold it. Every one has an HTTP API and an MCP surface over its library: the same functions, never a second copy. The zip is the sixth door and is not owed by the contract — five packages ship a toolbox kit (accessibility, cli-gui, colors, maps, ux-laws), figures ships one per figure instead (160 of them) and maps twelve plates besides its own; audio, publish and ui have none yet. The skills need no second version for OpenCode: both runtimes read the same SKILL.md.

Package Zip Library CLI API MCP Claude skill OpenCode skill
sprezzature-figures161 kitsyesyesyesyesyesyes
sprezzature-maps1 kityesyesyesyesyesyes
sprezzature-colors1 kityesyesyesyesyesyes
sprezzature-accessibility1 kityesyesyesyesyesyes
sprezzature-audionot yetyesyesyesyesyesyes
sprezzature-cli-gui1 kityesyesyesyesyesyes
sprezzature-ux-laws1 kityesyesyesyesyesyes
sprezzature-uinot yetyesyesyesyesyesyes
sprezzature-publishnot yetyesyesyesyesyesyes
sprezzature-videono kityesyesyesyesyesyes

Every row is on PyPI, and pip install sprezzature, with no extra to choose, installs all ten. Each package needs Python 3.10 or later; the hub and the packages whose dependencies cap the version stop at Python 3.13. sprezzature-ui and sprezzature-publish were the last two to get there, on 19 October 2026.

Deterministic tools

sprezzature-figures

Figures

+150 hand-authored SVG chart types, plus the Ralph Eyeball Loop, explainability, and causal DAGs.

pip install sprezzature-figures
Repository →

sprezzature-maps

Maps

Hand-authored SVG cartography split out of sprezzature-figures: an Equal Earth choropleth with an OKLCH ramp, and layered Lambert Conformal Conic situation maps, both with a real-elevation warm/cool relief.

pip install sprezzature-maps
Repository →

sprezzature-colors

Colors

WCAG contrast auditing with OKLCH-neighbour fixes, colour-vision-deficiency simulation, a curated palette, and Tailwind export.

pip install sprezzature-colors
Repository →

sprezzature-accessibility

Accessibility

A static HTML accessibility linter: source-decidable WCAG/WAI rules, no browser, no runtime DOM. A fast pre-commit gate.

pip install sprezzature-accessibility
Repository →

sprezzature-cli-gui

CLI → web GUI

Auto-generate a single-file HTML GUI from any Python CLI: it introspects argparse, Click, or Typer, with no build step.

pip install sprezzature-cli-gui
Repository →

sprezzature-ux-laws

Laws of UX

A static Laws-of-UX auditor for HTML: Hick, Miller, Fitts, Jakob, Tesler and more, decidable from source.

pip install sprezzature-ux-laws
Repository →

sprezzature-audio

Audio

Local captions (whisper.cpp), speaker diarization and who-is-who, narration and translation. ML backends are optional extras.

pip install sprezzature-audio
Repository →

sprezzature-publish

Publish

A folder of Markdown becomes a site somebody can find: pages, meta tags, favicons, the indexes crawlers and language models look for — and a narrated track with a read-along that highlights the sentence being spoken.

pip install sprezzature-publish
Repository →

sprezzature-ui

UI

The deterministic half of a frontend skill: find the strings that belong in a translation catalogue, and scaffold the catalogue they belong in. Writing the interface is the model's work.

pip install sprezzature-ui
Repository →

sprezzature-video

Video claims

Checks what a film says against the code it describes: declared claims verified, undeclared numbers caught, captions from the measured audio.

pip install sprezzature-video
Repository →

Looking for the agent skills instead? The SKILL.md layer ships together as the skills bundle on the Getting started section.

Frequently asked questions

Do I have to install all ten sprezzature packages?

No: each sprezzature package installs on its own, for example pip install sprezzature-colors, with no extra to choose. pip install sprezzature is the shortcut that installs all ten at once, plus the sprezzature-skills command.

How do I install the sprezzature skills for my agent?

Install the sprezzature hub with pip install sprezzature, then run sprezzature-skills --install to copy the skills into ~/.claude/skills for Claude Code, or sprezzature-skills --install --agent opencode for OpenCode.

How do I update sprezzature?

Update every sprezzature package at once with pip install --upgrade sprezzature, then run sprezzature-skills --install again so the copies your agent reads match the installed packages.

Can I call a sprezzature package from an agent that is not Claude Code?

Yes: every sprezzature package ships an MCP server, such as sprezzature-figures-mcp, so any client that speaks the Model Context Protocol can call its tools. Each package also has a Python library, a command line and an HTTP API with a Docker image.

Where is the source code of each sprezzature package?

Each sprezzature package has its own repository on GitHub, linked from its row in the table on this page, under the BSD 3-Clause licence.