Tooling for authoring, validating, and rendering domain models — the canonical, plain-language expression of what a system is: its concepts, how they relate, and the rules that govern them. One model, one source of truth: everyone reads from the same picture.
The model lives as a YAML file, but you rarely write that YAML by hand. You
author it by talking to an AI agent: you describe
concepts in plain language, the agent drafts and validates the YAML, and it
renders a Markdown version (with diagrams) that you commit alongside your code.
The modelith CLI is the engine the agent and CI run for you — it's there to
validate and render, not to be your starting point.
describe concepts in plain language
│
▼
Claude Code skill (author) ─▶ writes / updates the YAML
│
▼
model.modelith.yaml ─▶ canonical source (you edit this, via the agent)
│
├─▶ modelith lint : validate + completeness ─▶ CI gate
└─▶ modelith render : Markdown + Mermaid ─▶ model.modelith.md committed to the repo
The rendered Markdown is committed back next to the YAML so people and
agents read the model directly, without running anything. CI regenerates it and
fails on drift (modelith render --check) — like a generated-code check.