Skip to main content

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​

The pieces​

PieceWhat it does
Agent authoringThe Claude Code plugin and skills — how you actually build a model
SchemaThe JSON Schema that defines a valid model
modelith CLIThe lint, render, and deps commands the agent and CI run
GitHub ActionThe same checks in CI
VendoringReferencing a model that lives in another repository