Skip to main content

Modelith - Domain Model Tooling

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.

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 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.

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 engine the agent and CI run
GitHub ActionThe same checks in CI