Write a recipe in one app, open it in another.
A CoffeeJSON document carries the dose, the water, the temperature, the grind and the timed pour schedule, together with the bean it was made from — as a file, a share link, or a QR code printed on the bag. Every measurement carries its unit and every category travels as a machine id, so a document written in one locale reads correctly in another. No server to call, no account to make.
{
"coffeejson": "1.0",
"recipes": [
{
"title": "Everyday V60",
"coffee": { "value": 15, "unit": "gram" },
"water": { "value": 250, "unit": "gram" }
}
]
}That is a whole valid document. Everything else is optional.
- coffeejson.org — what the format is, a validator, a document builder, and the showcase of what reads it today.
- The specification — seven chapters, the transport binding, and the JSON Schema.
- Integration guide — the consumer and producer checklists, in build order.
coffeejson is the format: spec prose, JSON Schema, conformance fixtures,
registries, the recipe corpus, and the TypeScript packages @coffeejson/core
and @coffeejson/react.
coffeejson-swift is the same core for Apple platforms, on Foundation alone.
skills is the agent skill set, one per relationship to the format: changing
it, adding it to a product, and turning a published source into a document.
npx skills add coffeejson-org/skills, or install the whole set as a Claude
Code plugin.
1.0, and early. The shape is settled. It stays open to change while implementations are few, and what you can rely on today says exactly which parts that covers.
So the format needs another implementation more than it needs another field. If you build a coffee app, a roaster's site, or a brewing service, open an issue on coffeejson — help writing the importer and the exporter is yours for the asking, and so is an argument about what the format gets wrong. CONTRIBUTING.md has the routes in: spec ambiguities, field proposals, registry entries.
The format — spec prose, JSON Schema, fixtures, registries — is CC0 1.0. Public domain, no attribution required, no conditions attached. The reference code is Apache-2.0.