Modelith - Domain Model Tooling
Modelith helps you author, validate, and render domain models: a plain-language expression of a system's concepts, relationships, and governing rules. Keep one model as the source of truth so everyone works 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 validates,
renders, and manages vendored models; it is not your starting point.
The workflow
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 next to the YAML so people and agents can
read the model without running anything. Configure modelith render --check in
CI to fail on drift, like a generated-code check. The GitHub Action enables that
check by default.
Where to start
- Authoring a model for the first time? → Getting Started — install the CLI and authoring skills, then build a model by conversation.
- Want to understand a model someone produced? → Understanding Your Model and Reading the Diagrams.
- See it all come together? → the Parking Garage worked example builds a real model from nothing.
The pieces
| Piece | What it does |
|---|---|
| Agent authoring | The Claude Code plugin and skills — how you actually build a model |
| Schema | The JSON Schema that defines a valid model |
modelith CLI | The lint, render, and deps commands the agent and CI run |
| GitHub Action | The same checks in CI |
| Vendoring | Referencing a model that lives in another repository |