Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Vellum

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.

Repository layout

  • 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.

Load from main

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

Focused entrypoints

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",
});

Atomic interfaces

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.

  • renderTrustedMarkdown fetches authored Markdown, strips optional YAML frontmatter, renders GFM, and wraps wide tables.
  • compileRippleModule compiles TSRX, injects returned CSS, and imports the browser module through a short-lived Blob URL.
  • mountRippleDocument mounts one exported Ripple document.
  • mountRippleIslands compiles once and mounts named exports into data-ripple-island slots.

renderTrustedMarkdown intentionally permits authored HTML for island slots. It is not a sanitizer and must not receive untrusted or user-submitted Markdown.

Development

bun run check

The 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.

About

Markdown-first interactive HTML documents for humans and agents

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages