| id | dillylang::readme | |||
|---|---|---|---|---|
| description | Public introduction to the Dillylang reasoning vocabulary | |||
| tags |
|
|||
| created | 2026-05-11 | |||
| status | active |
A formal vocabulary for reasoning about thought processes — a typed vocabulary of orthogonal thinking moves (operators), composable into recipes runnable by a human, a model, or a pipeline.
Status: early. The vocabulary is the product; substrates (Python, Claude Code skills) are implementation details. Interfaces may shift.
Not an agent framework — no loops, no tool use. Recipes are deliberate compositions of pure-ish operators. Every run emits an inspectable trace; budgets are enforced.
refine = pipe(decompose, parallel(invert, rotate), synthesize)
result = refine.run({"problem": "..."})The design principle:
Maximize coverage of orthogonal axes of thought, subject to a depth budget.
Nine transformers across six axes:
| Axis | Operators |
|---|---|
| Compositionality | decompose, synthesize |
| Negation | invert |
| Frame | rotate |
| Analogy | analogize |
| Abstraction | abstract, concretize |
| Constraint | constrain, relax |
Plus judges (evaluate, classify, compare, rank) and
meta-skills (translate, canonize, …).
Combinators: pipe, parallel, map, filter.
A worked self-application: designing the canonize recipe (which
decides what exploratory prose deserves to enter the canonical spec)
using the vocabulary itself. The pipeline decompose → invert → synthesize → apply → evaluate produced three structural changes to
spec §8 that were applied in the same session.
See examples/canonize-recipe-analysis.md.
spec/PRIMER.md— operational reference (start here)spec/INDEX.md— full spec with rationaledocs/decisions/— ADRs (001–010)skills/— operator implementations as Claude Code skillsexamples/— captured pipeline traces
The directory skills/ is the canonical source for the
markdown skill packages. Agent runtimes can install them with:
npx skills add https://github.com/roobie/dillylang
# or
bunx skills add https://github.com/roobie/dillylangDon't edit installed copies — they're populated from this directory.
Discussions welcome; PRs not yet accepted. See CONTRIBUTING.md.
The invert operator is named after the discipline Charlie Munger
popularized — "Invert, always invert" — which he in turn credited
to Carl Gustav Jacob Jacobi (man muss immer umkehren). The
vocabulary owes its bias toward inverting questions to both.
@software{roberg_dillylang_2026,
author = {Roberg, Björn},
title = {Dillylang: a formal vocabulary for reasoning about thought processes},
year = {2026},
url = {https://github.com/roobie/dillylang},
note = {Pre-1.0; interfaces may change. DOI pending.}
}Dual-licensed. Code is Apache-2.0; docs and spec are CC BY 4.0.
See LICENSING.md for the per-path mapping, and
LICENSE.apache20.txt /
LICENSE.ccby40.txt for the legal codes.
Copyright © 2026 Björn Roberg