npx skills add ...
npx skills add openai/plugins --skill geistdocs
npx skills add openai/plugins --skill geistdocs
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.
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.
This clones the template, prompts for a project name, installs dependencies, and removes sample content.
| 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 |
Pages auto-route from the content/docs/ directory: content/docs/my-first-page.mdx becomes /docs/my-first-page.
geistdocs.tsx)The root config file exports these values:
Every MDX file requires frontmatter:
Language specification with special attributes:
| 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 |
Supports flowcharts, sequence diagrams, and architecture diagrams.
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.
Toast API: toast.success("msg"), toast.error("msg") via Sonner.
Set github in config → auto-generates edit links in the ToC sidebar. No env vars or API keys needed.
Interactive widget in ToC sidebar. Collects message, emotion emoji, name, email. Auto-creates structured GitHub Issues with labels.
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"]
Auto-generated at /rss.xml. Requires NEXT_PUBLIC_VERCEL_PROJECT_PRODUCTION_URL and title export. Customize via frontmatter lastModified: 2025-11-12.
Append .md or .mdx to any URL to get raw Markdown. Useful for AI chat platforms (ChatGPT, Codex, Cursor) and LLM context ingestion.
Endpoint at /llms.txt returns ALL documentation as plain Markdown in a single response. Follows the llms.txt standard.
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.
Button in ToC sidebar opens docs page in external AI platforms (Cursor, v0, ChatGPT, Codex).
pnpm build, Output: .nextAI_GATEWAY_API_KEY, NEXT_PUBLIC_VERCEL_PROJECT_PRODUCTION_URL)| Command | Description |
|---|---|
npx @vercel/geistdocs init | Create new project |
pnpm dev | Start dev server |
pnpm build | Production build |
pnpm translate | Auto-translate content |
import { BookHeartIcon } from "lucide-react";
// Header branding
export const Logo = () => (
<span className="flex items-center gap-2 font-semibold">
<BookHeartIcon className="size-5" />
My Docs
</span>
);
// Navigation links
export 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 prompt
export const prompt = "You are a helpful assistant for My Product documentation.";
// AI suggested prompts
export const suggestions = [
"How do I get started?",
"What features are available?",
];
// Edit on GitHub integration
export const github = { owner: "username", repo: "repo-name" };
// Internationalization
export const translations = {
en: { displayName: "English" },
cn: { displayName: "中文", search: "搜尋文檔" },
};---
title: My Page Title
description: A brief description of this page
---
Your content here...