Give LLMs validated, structured Markdown blocks. Render LLM output anywhere.
$ pnpm dlx contentbit@latest init
or read the 0.2.0 announcement, itself rendered by the library
01·The idea
Markdown in, components out
LLMs write directive blocks inside ordinary Markdown. The parser builds a source-mapped AST, the registry validates it, and your renderer of choice takes it from there. Below: the actual styled pack rendering live.
this is a fragment. read a complete post: 4 blocks, 3 render targets, 0 diagnostics
02·The safety net
Errors with line numbers, not broken pages
Validation runs before rendering: in your editor, your CI, or your LLM loop. Diagnostics carry a code, a position, and a fix hint, so an LLM can repair its own output.
03·The operator
Your LLM agent runs the loop
init installs skills and AGENTS.md instructions, so an LLM can fetch the live authoring guide, write a post, and validate until clean. The skills hold no schemas — they read everything from the CLI — so your custom blocks are picked up automatically.
works with Claude Code, Cursor, Codex, Copilot — see the LLM agents guide
04·The system
One definition, every surface
05·The generic pack
Eight blocks that work in any niche
Pick a block. The example is its real authoring guidance from the registry, the same text LLMs get, rendered live by the styled pack.
06·Styled pack
Install the components, own the code
The React pack ships through a shadcn registry. Components land in your app as editable source files: Tailwind, your tokens, your rules.
$ pnpm dlx shadcn@latest add @contentbit/generic-pack
registry: https://contentbit.dev/r/{name}.json