wcl.dev
features reference getting started
Heavy development — not production ready. The language, APIs, and wdoc output can change at any time without notice.
Typed configuration & schema language

One language for every shape of data.

WCL lets you express structured data the way it actually is — records, unions, interfaces, and decorators — gather it into a document model that validates itself, then project that single model into config, HTML, Markdown, books, and Claude skills.

Get started View source
Open source · built in the open by Wil Taylor
service.wcl document
@block("service")
type Service {
  @inline(0)   name: utf8     // service "web" → name = "web"
  @default(80) port: u32
  region: utf8
}

@document
type Config {
  @children("service") services: list<Service>
}

service "web" {
  region = "us-east-1"
}
service "api" {
  port   = 9090u32
  region = "eu-west-1"
}
A taste

A document is fields and blocks.
A schema is the rules they follow.

Declare your types with decorators that describe how raw syntax maps onto them — @inline, @default, @children. The data on the right reads like the thing it describes, and the document model validates the whole shape before anything downstream sees it.

Why WCL

Built to express data naturally — and keep it honest.

A small, typed core that scales from a single config file to a complete documented model.

Flexible structure

Map almost any data structure with a statically typed core — records, vectors and tensors, union types, interfaces, and decorators that bind surface syntax to your model. Express the shapes you actually have, checked before runtime.

Schemas

Declare a schema once and easily validate your data against it — types, required fields, and constraints all checked, so mistakes surface before anything downstream runs.

Natural, block-based syntax

Blocks and fields read like the thing you're describing — service "web" { … } — not a wall of nested brackets.

One format, multiple uses

The same WCL format is equally at home as typed application configuration and as the source for documentation — pages, sites, books, and Claude skills rendered with wdoc.

Data–presentation separation

Keep your data model separate from how it's shown. Project the same typed data structures into documentation — many views and layouts over one validated source, with no copy-paste.

Rich diagram support

wdoc draws diagrams straight from WCL — flowcharts, sequence and state diagrams, charts, timelines, trees, and class/DB tables — with automatic layout and edge routing, themed to match the page.

Reference

The manuals

Each reference is published as a wskill — a self-contained WCL model projected into both a readable book and a Claude Code skill.

wcl

The core language: records, unions, interfaces, decorators, and the document model that gathers and validates structured data.

Read the manual
wdoc

WCL's static-site and skill generator. Declare pages and sites in WCL, then render them to HTML, Markdown, a Claude skill folder, or PDF.

Read the manual
wskill

A WCL document format that captures a topic completely and projects it into both a human-readable book and a Claude Code skill.

Read the manual
Getting started

Install it and scaffold your first project.

Grab a prebuilt binary with the install script, then let wcl init scaffold a ready-to-build project — a book, a presentation deck, and more.

1
Install the CLI
$ curl -fsSL https://wcl.dev/install.sh | sh -s -- --pre
2
Scaffold a new book
$ wcl init book ./my-book
3
…or a presentation deck
$ wcl init presentation ./my-deck