WCL

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.

Open source · built in the open by Wil Taylor

service.wclwcl
@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 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. The wdoc Reference book documents the documentation generator's blocks.

wcl

A typed configuration and schema language: records, unions, interfaces, decorators, and a document model that gathers and validates structured data.

Read the manual · deck · course

wdoc

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

Read the manual · deck · course

wskill

A WCL document designed to hold complete set of knowledge on a topic and expose it in multiple views for multiple audiences.

Read the manual · deck · course

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