Credits
Who builds Ascribe, the projects it’s built on, and where its ideas came from.
Who builds Ascribe
Made by Bryo Studio, which is Kyle Rollins, with Claude. Kyle Rollins maintains Ascribe, and Claude, Anthropic’s model, works on it through Claude Code. The maintainer decides what’s built and reads what ships. Most of the code, the tests, and the docs are written by Claude under those decisions.
What Ascribe is built on
The projects a reader would want to know about, and what Ascribe uses each for. The manifests in the repository list every dependency, with its version.
Inside the binary
Ascribe’s parser is a fork of comrak, a CommonMark parser written in Rust, taken at its release v0.55.0 and changed so that a directive line is a block of its own. comrak’s license travels with the fork, and every change to it is listed in the fork’s notes.
- clap reads the command line.
- ariadne draws a diagnostic under the source line it’s about.
- serde reads and writes the JSON, YAML, and TOML.
- toml reads
ascribe.toml. - schemars writes the JSON Schemas of what the commands print.
In the npm packages
- Astro is what
@ascribed/astrois an integration for. - Sätteri, Astro’s default Markdown processor, and unified, the other one the integration supports, carry its Markdown plugin.
- github-slugger works out a page’s entry id from its file’s name, as Astro does.
Programs Ascribe runs and doesn’t ship
You install these yourself, when you use the command that runs them.
- Vale checks the prose, for
ascribe vale. - lychee asks each external link whether it still works, for
ascribe report links. - afdocs, the Web Documentation Delivery Spec’s checker, checks what a built site publishes for AI agents, for
ascribe report delivery.
Building Ascribe and its site
- Pagefind indexes this site for its search, which needs no service.
- Playwright drives Chromium for the site’s tests, the element library’s, and the extension’s.
- Vitest runs the JavaScript tests.
- insta keeps the Rust tests’ snapshots, and proptest feeds the parser generated input.
- TypeScript, oxlint, and Prettier check the JavaScript packages.
- esbuild bundles the editor extension, and the script
ascribe diffputs in its HTML preview. - sharp and opentype.js draw the icons and social cards.
- axe-core checks the element library for accessibility.
Where its ideas came from
Each of these is said where Ascribe uses it, and linked here.
| From | What Ascribe took |
|---|---|
| CommonMark | The language everything else is added to. Every CommonMark document means the same in Ascribe, apart from a line that starts with a directive (the specification, §1.4). |
| Bluehawk | The tags that mark a region of a code file for @snippet, kept as they are, so code already tagged for it works (directives). |
| AsciiDoc | A title on its own line, above the directive it names (the specification’s rationale). |
Swift’s @available |
Lifecycle states named by the version they start at, so availability needs no ranges (the specification’s rationale). |
| HTML’s custom elements | A hyphen in a name marks a project’s own widgets (the specification’s rationale). |
| Elastic’s docs-builder | Links with empty text, filled from their target, and a large corpus to measure choices against (the specification’s rationale). |
| Ruby and Lua | A bare @end to close a container (the specification’s rationale). |
| The Web Documentation Delivery Spec | What a build publishes for AI agents: llms.txt, and each page’s Markdown at its address (the Astro guide). |
| The Good Docs Project | The page templates, once they’re built (the plan). |
| Steel threads, by Jade Rubick | How every plan’s phases are ordered: the first is the thinnest path through every layer, working and shipped (the skill). |