Vellum is a Markdown-first toolkit for expressive HTML documents. One repository owns the agent skill, ready-to-copy templates, browser-native ESM runtime, and public assets they share.
skills/vellum/guides agents and provides document starters.src/exposes composable Markdown and Ripple modules through jsDelivr.public/holds directly consumable CSS and other static assets.examples/smoke-tests the runtime without a build step.
This repository deliberately has no release or tag workflow. Consumers load the
current main branch through jsDelivr:
<script type="importmap">
{
"imports": {
"@celados/vellum": "https://cdn.jsdelivr.net/gh/celados/vellum@main/src/mod.js",
"@celados/vellum/": "https://cdn.jsdelivr.net/gh/celados/vellum@main/src/",
"marked": "https://esm.sh/marked@18.0.6",
"ripple": "https://esm.sh/ripple@0.3.97",
"ripple/": "https://esm.sh/ripple@0.3.97/"
}
}
</script>jsDelivr caches branch URLs for up to 12 hours. main remains the only source
of truth, but a pushed change is not guaranteed to appear at every CDN edge
immediately. Branch purge is not a reliable synchronization mechanism.
The Typeset stylesheet is available at:
https://cdn.jsdelivr.net/gh/celados/vellum@main/public/typeset.css
Use one call for the common document shapes:
import { bootMarkdownDocument } from "@celados/vellum/markdown.js";
await bootMarkdownDocument({
source: "./document.md",
target: "#markdown-content",
status: "#render-status",
islandSource: "#island-source",
islands: { counter: "CounterCard" },
});import { bootRippleDocument } from "@celados/vellum/ripple.js";
await bootRippleDocument({
source: "#document-source",
target: "#root",
});Use the focused src/markdown.js and src/ripple.js entrypoints in documents so
each surface loads only its own dependency graph. src/mod.js is the deliberate
complete interface for callers that need both domains.
renderTrustedMarkdownfetches authored Markdown, strips optional YAML frontmatter, renders GFM, and wraps wide tables.compileRippleModulecompiles TSRX, injects returned CSS, and imports the browser module through a short-lived Blob URL.mountRippleDocumentmounts one exported Ripple document.mountRippleIslandscompiles once and mounts named exports intodata-ripple-islandslots.
renderTrustedMarkdown intentionally permits authored HTML for island slots.
It is not a sanitizer and must not receive untrusted or user-submitted Markdown.
bun run checkThe repository ships authored ESM and assets directly. There is no generated
dist/ directory and no package publication step.
Serve the repository over HTTP and open examples/ for a browser smoke test of
both deep entrypoints.