Markbook

Agent-first, markdown-first. A static-site engine that ships with first-class agent skills for setup, theming, and bundling — plus a React adapter for component stories when you need them.

pnpm add -D @doidor/markbook @doidor/markbook-core

Agent-first by default

Markbook ships six built-in agent skills for Claude Code, Codex, OpenCode, Cursor, and any agent CLI that auto-discovers skills. Copy this prompt into your agent at the root of your project to get started.

Try it in your project

Set up Markbook documentation in this project.
First run npx @doidor/markbook skills install, then read and follow the installed SKILL.md files.
Install the required @doidor/markbook packages using this project's package manager.
Create a markdown-first docs site. If the project uses React, document its existing components with props tables and live stories.
Preserve existing files, run the docs build to verify the result, and tell me how to preview it.

Explore the six agent skills →

What it is

Markbook turns a directory of markdown files into a static HTML site, with built-in search, dark mode, llms.txt, sitemap, and OG tags. A thin React adapter lets you mount component stories into the same pages — turning the same engine into a Storybook alternative when you need one. (Vue and web-component adapters are on the roadmap.) And this very site is itself a Markbook build — markdown pages plus a single custom landing layout, no bespoke glue code.

Markbook is a Storybook alternative when you need one — the same engine renders a live component showcase with stories, props tables, "show code" disclosures, and full-text search. Open the Pixie demo →

📄

Markdown is the source of truth

Every page is a `.md` file. HTML and llms.txt are two views of one AST. No MDX, no JSON sidecars, no JS templates to learn.

🧩

Component stories, optional

Drop a :::story directive in any page to mount a React component story. Skip the directive — and the adapter — for pure docs sites. See the live Pixie demo →

🔍

Search + SEO by default

Pagefind builds a full-text index at build time. Canonical, Open Graph, Twitter Card, sitemap.xml, and robots.txt are emitted automatically.

🎨

Four layers of customization

Token overrides → opt-out of base CSS → swap the HTML shell with your own layouts → post-process the final HTML. Each layer is opt-in.

📦

Portable stories

markbook bundle produces self-contained ESM embeds or publishable npm packages — stories that work anywhere, not just inside your docs site.

⚡

Fast dev loop

Vite under the hood. ~80ms regeneration on a 5-page site, including a full Pagefind re-index. Hot reload across markdown, CSS, layouts, and story files.

Pick a starting point

What you don't need

Markbook is small on purpose. No MDX (use a story directive — your component file stays a regular .tsx). No theme engine (customize via CSS tokens or replace the shell — no provider hierarchy, no plugin framework). No bundled UI framework (the engine is plain HTML + minified IIFE boot scripts; bring React for stories if you want them).