
An attempt to build my own DSL: a declarative language for 3D modeling and scene composition, with reusable components and a live solve-as-you-type preview. The repo is a monorepo - the language and its geometry kernel binding, an MCP server that writes .forma files, a browser editor, a landing page, and the reference manual - all published from one place.
hclparam height { type = number default = 20 min = 8 max = 40 } model "riser" { part "body" { color = "#6f7d8c" difference { extrude { height = var.height rounded_rect { size = [40, 20] radius = 4 center = true } } translate { offset = [0, 0, 3] cylinder { radius = 5 height = var.height } } } } }
forma-dsl-mcp) that lets an AI assistant write and solve .forma files directly over stdioforma-dsl, forma-dsl-mcp) published via npm's OIDC trusted publishing, versioned together from the same tagPurpose: figuring out what a small, typed, declarative modeling language should look like - parsing, evaluation, a geometry kernel, and the tooling around all three - end to end.
Technologies Used