Skill v1.0.0
currentTrusted Publisher100/100version: "1.0.0" name: geistdocs description: Expert guidance for Geistdocs, Vercel's documentation template built with Next.js and Fumadocs — MDX authoring, configuration, AI chat, i18n, feedback, deployment. Use when creating documentation sites, configuring geistdocs, writing MDX content, or setting up docs infrastructure. metadata: priority: 5 docs:
- "https://preview.geistdocs.com/docs"
- "https://preview.geistdocs.com/docs/getting-started"
- "https://preview.geistdocs.com/docs/configuration"
- "https://preview.geistdocs.com/docs/syntax"
- "https://github.com/vercel/geistdocs"
sitemap: "https://preview.geistdocs.com/sitemap.xml" pathPatterns:
- 'geistdocs.tsx'
- 'content/docs/**/*.mdx'
- 'content/docs/**/*.md'
- 'apps/*/geistdocs.tsx'
- 'apps/*/content/docs/**/*.mdx'
- 'apps/*/content/docs/**/*.md'
importPatterns:
- '@vercel/geistdocs'
- 'fumadocs-core'
- 'fumadocs-ui'
- 'fumadocs-mdx'
bashPatterns:
- '\bnpx\s+@vercel/geistdocs\s+init\b'
- '\bnpm\s+(install|i|add)\s+[^\n]*\bfumadocs\b'
- '\bpnpm\s+(install|i|add)\s+[^\n]*\bfumadocs\b'
- '\bbun\s+(install|i|add)\s+[^\n]*\bfumadocs\b'
- '\byarn\s+add\s+[^\n]*\bfumadocs\b'
- '\bpnpm\s+translate\b'
promptSignals: phrases:
- "geistdocs"
- "documentation site"
- "documentation template"
- "docs site"
- "docs page"
- "fumadocs"
- "llms.txt"
allOf:
- [docs, mdx]
- [docs, template]
- [documentation, vercel]
- [docs, i18n]
- [docs, feedback]
anyOf:
- "documentation"
- "docs"
- "mdx content"
- "ask ai"
- "rss feed"
- "edit on github"
- "internationalization"
noneOf:
- "api reference generator"
- "storybook"
- "docusaurus"
minScore: 6
Geistdocs — Vercel Documentation Template
You are an expert in Geistdocs, Vercel's production-ready documentation template built with Next.js 16 and Fumadocs. It provides MDX authoring, AI-powered chat, i18n, feedback collection, search, GitHub integration, and RSS out of the box. Currently in beta.
Getting Started
Prerequisites
- Node.js 18+, pnpm, GitHub account
- Familiarity with MDX, Next.js, React
Create a New Project
npx @vercel/geistdocs init
This clones the template, prompts for a project name, installs dependencies, and removes sample content.
Environment Setup
cp .env.example .env.localpnpm dev
| Variable | Description | |
|---|---|---|
AI_GATEWAY_API_KEY | Powers AI chat; auto-configured on Vercel deployments | |
NEXT_PUBLIC_VERCEL_PROJECT_PRODUCTION_URL | Production domain (format: localhost:3000, no protocol prefix); auto-set by Vercel |
Project Structure
geistdocs.tsx # Root config — Logo, nav, title, prompt, suggestions, github, translationscontent/docs/ # MDX documentation contentgetting-started.mdx # → /docs/getting-startedmy-page.mdx # → /docs/my-pagemy-page.cn.mdx # → /cn/docs/my-page (i18n).env.local # Environment variables
Pages auto-route from the content/docs/ directory: content/docs/my-first-page.mdx becomes /docs/my-first-page.
Configuration (geistdocs.tsx)
The root config file exports these values:
import { BookHeartIcon } from "lucide-react";// Header brandingexport const Logo = () => (<span className="flex items-center gap-2 font-semibold"><BookHeartIcon className="size-5" />My Docs</span>);// Navigation linksexport const nav = [{ label: "Blog", href: "/blog" },{ label: "GitHub", href: "https://github.com/org/repo" },];// Site title (used in RSS, metadata)export const title = "My Documentation";// AI assistant system promptexport const prompt = "You are a helpful assistant for My Product documentation.";// AI suggested promptsexport const suggestions = ["How do I get started?","What features are available?",];// Edit on GitHub integrationexport const github = { owner: "username", repo: "repo-name" };// Internationalizationexport const translations = {en: { displayName: "English" },cn: { displayName: "中文", search: "搜尋文檔" },};
MDX Syntax & Frontmatter
Every MDX file requires frontmatter:
---title: My Page Titledescription: A brief description of this page---Your content here...
Supported Syntax
- Text: Bold, italic, strikethrough, inline code
- Headings: H1–H6 with auto anchor links
- Lists: Ordered, unordered, nested, task lists (GFM)
- Tables: GFM tables
- Links, Images, Blockquotes: Standard markdown
Code Blocks
Language specification with special attributes:
export default function Page() { return <h1>Hello</h1> // [!code highlight] }
| Attribute | Effect | |
|---|---|---|
title="filename" | File path header | |
lineNumbers | Show line numbers | |
[!code highlight] | Highlight line | |
[!code word:term] | Highlight term | |
[!code ++] / [!code --] | Diff additions/deletions | |
[!code focus] | Focus line |
Mermaid Diagrams
graph TD A[Start] --> B[Process] B --> C[End]
Supports flowcharts, sequence diagrams, and architecture diagrams.
GeistdocsProvider
Root-level wrapper extending Fumadocs' RootProvider. Provides toast notifications (Sonner), Vercel Analytics, and search dialog. The AI sidebar auto-adds padding on desktop; mobile uses a drawer.
import { GeistdocsProvider } from "./components/provider";export default function RootLayout({ children }) {return (<html><body><GeistdocsProvider>{children}</GeistdocsProvider></body></html>);}
Toast API: toast.success("msg"), toast.error("msg") via Sonner.
Features
Edit on GitHub
Set github in config → auto-generates edit links in the ToC sidebar. No env vars or API keys needed.
Feedback Widget
Interactive widget in ToC sidebar. Collects message, emotion emoji, name, email. Auto-creates structured GitHub Issues with labels.
Internationalization (i18n)
Uses Fumadocs' language-aware routing with [lang] URL segments. Default language has no prefix; others get prefix (e.g., /cn/docs/getting-started).
File naming: getting-started.mdx (en), getting-started.cn.mdx (cn), getting-started.fr.mdx (fr).
Auto-translate: pnpm translate [--pattern "path/**/*.mdx"] [--config file.tsx] [--url "api-url"]
RSS Feed
Auto-generated at /rss.xml. Requires NEXT_PUBLIC_VERCEL_PROJECT_PRODUCTION_URL and title export. Customize via frontmatter lastModified: 2025-11-12.
.md Extension (Raw Markdown)
Append .md or .mdx to any URL to get raw Markdown. Useful for AI chat platforms (ChatGPT, Codex, Cursor) and LLM context ingestion.
llms.txt
Endpoint at /llms.txt returns ALL documentation as plain Markdown in a single response. Follows the llms.txt standard.
Ask AI
AI chat assistant using openai/gpt-4.1-mini via Vercel AI Gateway. Features: search_docs tool, source citations, IndexedDB chat history, suggested prompts, file/image upload, Markdown rendering. Access via navbar button or ⌘I / Ctrl+I.
Open in Chat
Button in ToC sidebar opens docs page in external AI platforms (Cursor, v0, ChatGPT, Codex).
Deployment
- Push to GitHub
- Import at vercel.com/new → select repo
- Framework: Next.js (auto-detected), Build:
pnpm build, Output:.next - Add environment variables (
AI_GATEWAY_API_KEY,NEXT_PUBLIC_VERCEL_PROJECT_PRODUCTION_URL) - Deploy
Key Commands
| Command | Description | |
|---|---|---|
npx @vercel/geistdocs init | Create new project | |
pnpm dev | Start dev server | |
pnpm build | Production build | |
pnpm translate | Auto-translate content |