A SvelteKit-native documentation framework for edge-first docs.
svedocs is under active development. The first stable release has not shipped yet, so package APIs, templates, docs, and deployment defaults may still change before launch.
svedocs brings the moving parts of a modern docs site into one compact framework package: content discovery, Svelte-compatible Markdown rendering, navigation, search, Ask AI, SEO, sitemap and RSS generation, Open Graph images, Cloudflare helpers, and a polished default theme.
It is built for teams that want documentation to feel native to SvelteKit instead of bolted on through a separate renderer, theme package, search adapter graph, and deployment layer.
| Capability | What svedocs provides |
|---|---|
| Native SvelteKit docs | Markdown, .svx, and .mdx-style authoring compiled through the Svelte stack. |
| Unified content model | One manifest powers routes, sidebars, previous/next links, search records, SEO, sitemap and RSS entries, link checks, and OG routes. |
| Edge-first deployment | Cloudflare edge SSR is the default path, with static and SPA builds available when needed. |
| Search and Ask AI | Local MiniSearch for development, plus Algolia, Typesense, Cloudflare AI Search, Workers AI, and OpenAI-compatible providers. |
| Default theme | Tailwind CSS v4 theme with dark mode, command/search UI, Ask AI, ToC, locales, versions, code tools, and a pixel-style homepage. |
| Production CLI | Create projects, run dev/build/preview/check, generate search indexes and OG images, and deploy to Cloudflare Pages. |
Until the first official release is published, the most reliable way to try svedocs is from this workspace:
pnpm install
pnpm --filter @svedocs/site devAfter packages are published, create a project with:
pnpm create svedocs my-docs
cd my-docs
pnpm devTemplate variants:
pnpm create svedocs my-docs --template minimal
pnpm create svedocs my-docs --template docs
pnpm create svedocs my-docs --template cloudflareThe skills/ directory ships focused Agent Skills grounded in the current framework APIs and generated project structure:
| Skill | Use it for |
|---|---|
use-svedocs |
Create, integrate, maintain, and verify a svedocs site. |
configure-svedocs |
Change the typed project configuration and provider setup. |
customize-svedocs-theme |
Customize tokens, slots, components, and headless theme behavior. |
build-svedocs-landing |
Build the default or localized documentation landing experience. |
localize-svedocs |
Configure locales, translated content, links, search scope, and SEO alternates. |
Each skill includes Codex UI metadata and focused references for progressive loading. Agent Skills-compatible tools can load the individual folders directly from this repository. create-svedocs also installs the current set into every generated project's .agents/skills directory for automatic repository-level discovery.
Projects are configured with svedocs.config.ts:
import { defineConfig } from 'svedocs/config';
export default defineConfig({
site: {
name: 'My docs',
title: 'My docs',
description: 'Documentation built with svedocs'
},
theme: {
brand: {
label: 'My docs',
href: '/',
logo: '/favicon.svg'
}
},
search: {
enabled: true,
provider: 'local'
},
ai: false
});The Vite plugin loads the config by default:
import { sveltekit } from '@sveltejs/kit/vite';
import { svedocs } from 'svedocs/vite';
import { defineConfig } from 'vite';
export default defineConfig({
plugins: [svedocs(), sveltekit()]
});svedocs reads docs and pages from configured content roots:
content/
docs/
index.md
configuration.md
pages/
index.mdFrontmatter controls title, description, order, icon hints, locale, version, lifecycle status, and layout selection. The same parsed source drives rendering, navigation, search records, link checks, SEO metadata, sitemap and RSS entries, and Open Graph images.
The CLI lives in packages/cli and ships both svedocs and create-svedocs:
svedocs create
svedocs dev
svedocs build --mode edge
svedocs build --mode static
svedocs build --mode spa
svedocs ssg
svedocs preview
svedocs check
svedocs index
svedocs og
svedocs deploy cloudflare
svedocs deploy cloudflare setup --writeContent-aware commands load svedocs.config.* first, then apply command-line overrides.
This repository is intentionally compact:
| Path | Purpose |
|---|---|
packages/svedocs |
Integrated framework package: rendering, content, theme, Cloudflare, search, AI, SEO, and OG. |
packages/cli |
CLI implementation for svedocs and create-svedocs. |
packages/create-svedocs |
Thin package-manager compatibility shim that delegates to svedocs-cli. |
apps/site |
Private official site and live demo using the workspace svedocs package. |
Public imports stay small and stable:
svedocs/config
svedocs/core
svedocs/vite
svedocs/theme
svedocs/theme/styles.css
svedocs/cloudflare
svedocs/search
svedocs/ai
svedocs/og
svedocs/svelteCommon workspace commands:
pnpm install
pnpm build
pnpm check
pnpm test
pnpm lint
pnpm pack:dry-runFocused validation:
pnpm --filter svedocs check
pnpm --filter svedocs test
pnpm --filter svedocs build
pnpm --filter svedocs-cli check
pnpm --filter svedocs-cli test
pnpm --filter svedocs-cli build
pnpm --filter @svedocs/site check
pnpm --filter @svedocs/site buildBefore publishing packages, run:
pnpm release:checkSite deployments are manual operations. Authenticate Wrangler locally, validate the bundle, and deploy with:
pnpm deploy:site:dry-run
pnpm deploy:siteNo GitHub workflow deploys the site. npm packages publish through the manually dispatched Release npm packages workflow with trusted publishing and provenance. Stable releases also create a vX.Y.Z Git tag and GitHub Release with generated release notes and package archives; beta releases remain npm-only.
Generated templates have a heavier install/build smoke test:
pnpm test:templatessvedocs is currently useful for local development, framework validation, demos, and early integration work. Treat npm publishing and compatibility work as release preparation until the official stable line is announced.
Publishable packages keep MIT license metadata, package files and exports, and provenance-enabled public publishing:
{
"publishConfig": {
"access": "public",
"provenance": true
}
}