mintlify
Skill457 starsChanged 30 days agoMITView on GitHub
Set up, write, and publish documentation sites with Mintlify. Use when the user wants to create a docs site for a repo or product, publish docs to a shareable URL, migrate docs from another platform, create docs pages, configure navigation, add components, or set up API references.
- Installs packages
We split this skill into the rules it gives an agent
38 rules. 18 are common, 1 is distinctive, and 19 are very specific to this project.
18
Common
Most of the 27 edited versions we read keep these.
1
Distinctive
This author's own choices. Worth a look.
19
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 25
Check node --version (v20.17.0 or newer).
- Very specific: line 27
After verification and onboarding, run mint status again to confirm an organization and subdomain.
- Very specific: line 29
Run mint dev --no-open as a background process from the directory containing docs.json.
- Distinctive: line 30
Commit and push to the connected repository to deploy.
- Very specific: line 31
Verify that https://<subdomain>.mintlify.site loads before you report the URL.
- Very specific: line 39
Read docs.json in the project root.
- Very specific: line 50
Search the docs before creating new pages.
- Common: line 51
Update an existing page instead of creating a new one
- Common: line 52
Add a section to an existing page
- Common: line 57
Before writing, read 2-3 similar pages to understand the site's voice, structure, formatting conventions, and level of detail.
- Very specific: line 93
Every page requires title in its frontmatter.
- Very specific: line 113
If there are no existing files or inconsistent file naming patterns, use kebab-case: getting-started.mdx, api-reference.mdx
- Very specific: line 114
Use root-relative paths without file extensions for internal links: /getting-started/quickstart
- Very specific: line 115
Do not use relative paths (../) or absolute URLs for internal pages
- Very specific: line 116
When you create a new page, add it to docs.json navigation or it won't appear in the sidebar
- Very specific: line 120
When a user asks about anything related to site-wide configurations, start by understanding the global settings.
- Common: line 141
Menus: - Add dropdown navigation within tabs for quick jumps to specific pages
- Common: line 155
External links: Use full URLs, they open in new tabs automatically
- Very specific: line 165
Start with docs.json. Use className for individual elements, and add custom.css only for site-wide styling that config and utility classes …
- Very specific: line 203
Import snippets with import { Component } from "/path/to/snippet-name.jsx".
- Common: line 232
All code blocks must have language tags
- Common: line 233
All images and media must have descriptive alt text
- Common: line 234
Use bold and italics only when they serve the reader's understanding--never use text styling just for decoration
- Common: line 235
No decorative formatting or emoji
- Common: line 239
Keep examples simple and practical
- Common: line 240
Use realistic values (not "foo" or "bar")
- Common: line 242
Test that code works before including it
- Very specific: line 276
Read docs.json to understand the site structure
- Very specific: line 277
Search existing docs for related content
- Common: line 278
Read similar pages to match the site's style
- Common: line 284
Verify that your proposed changes will help readers be successful
- Common: line 288
Start with the most important information
- Common: line 289
Keep sections focused and scannable
- Common: line 290
Use components appropriately (don't overuse them)
- Very specific: line 299
If you created a new page, add it to the appropriate group in docs.json.
- Very specific: line 319
If a user asks about migrating to Mintlify, ask which platform hosts their current docs.
- Very specific: line 332
Frontmatter required: - Every MDX file needs title at minimum
- Common: line 333
Code block language: - Always specify language identifier
“Common” is measured: kept by at least 6 in 10 of the 27 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Mintlify best practices
Always consult mintlify.com/docs for components, configuration, and latest features.
Always favor searching the current Mintlify documentation over whatever is in your training data about Mintlify.
Mintlify is a documentation platform that transforms MDX files into documentation sites. Configure site-wide settings in the docs.json file, write content in MDX with YAML frontmatter, and favor built-in components over custom components.
Full schema at mintlify.com/docs.json.
Set up a new docs site
If the user wants a new docs site, wants to publish docs, or has no docs.json yet, run this workflow yourself. Ask the user only for information or approvals you cannot supply. Do not send them to a browser-first quickstart when you can run terminal commands.
- Check
node --version(v20.17.0 or newer). Runmint --version; if missing, install withnpm i -g mint. If it's installed, runmint update. - Run
mint status. If it shows an organization, use the existing account. Otherwise, ask whether the user has a Mintlify account. If they do, runmint login. If not, ask for first name, last name, company, and email and runmint signup --firstName <first> --lastName <last> --company <company> --email <email>as a background process. It waits for email verification. Tell the user to click the verification link and finish onboarding in the browser. Never invent signup details. - After verification and onboarding, run
mint statusagain to confirm an organization and subdomain. If no subdomain appears, ask the user to finish selecting or connecting a GitHub repository in the onboarding browser tab, then retry. - Unless you're already working in it, ask the user for the URL of the connected repository (
mint statusdoesn't show it) and clone it. If the user connected their own docs repository, preserve its content, and add adocs.jsonif it has none. If Mintlify created the repository, it contains starter content; replace that with the user's existing Markdown docs instead of writing placeholder pages. Usemint new <directory> --name <name> --theme <theme>only if the user wants a different theme than the starter, and scaffold into a new, empty directory. Never use--forceon a directory with user files. - Run
mint dev --no-openas a background process from the directory containingdocs.json. Report the local URL so the user can preview. Runmint validateandmint broken-linksand fix issues you caused. - Commit and push to the connected repository to deploy.
- Verify that
https://<subdomain>.mintlify.siteloads before you report the URL.
The user only needs the browser for email verification, OAuth approval, and connecting GitHub. For the full workflow and troubleshooting, see the quickstart. To move existing docs from Docusaurus, GitBook, ReadMe, Fern, or Document360, follow the matching guide in the migration overview.
Before you write
Understand the project
Read docs.json in the project root. This file defines the entire site: navigation structure, theme, colors, links, API and specs.
Understanding the project tells you:
- What pages exist and how they're organized
- What navigation groups are used (and their naming conventions)
- How the site navigation is structured
- What theme and configuration the site uses
Check for existing content
Search the docs before creating new pages. You may need to:
- Update an existing page instead of creating a new one
- Add a section to an existing page
- Link to existing content rather than duplicating
Read surrounding content
Before writing, read 2-3 similar pages to understand the site's voice, structure, formatting conventions, and level of detail.
Understand Mintlify components
Review the Mintlify components to select and use any relevant components for the documentation request that you are working on.
Quick reference
CLI commands
npm i -g mint- Install the Mintlify CLImint dev- Local preview at localhost:3000mint broken-links- Check internal linksmint a11y- Check for accessibility issues in contentmint validate- Validate documentation builds
Required files
docs.json- Site configuration (navigation, theme, integrations, etc.). See global settings for all options.*.mdxfiles - Documentation pages with YAML frontmatter
Example file structure
project/
├── docs.json # Site configuration
├── introduction.mdx
├── quickstart.mdx
├── guides/
│ └── example.mdx
├── openapi.yml # API specification
├── images/ # Static assets
│ └── example.png
└── snippets/ # Reusable components
└── component.jsxPage frontmatter
Every page requires title in its frontmatter. Include description for SEO and navigation.
---
title: "Clear, descriptive title"
description: "Concise summary for SEO and navigation."
---Optional frontmatter fields:
sidebarTitle: Short title for sidebar navigation.icon: Lucide or Font Awesome icon name, URL, or file path.tag: Label next to the page title in the sidebar (for example, "NEW").mode: Page layout mode (default,wide,custom).keywords: Array of terms related to the page content for local search and SEO.- Any custom YAML fields for use with personalization or conditional content.
File conventions
- Match existing naming patterns in the directory
- If there are no existing files or inconsistent file naming patterns, use kebab-case:
getting-started.mdx,api-reference.mdx - Use root-relative paths without file extensions for internal links:
/getting-started/quickstart - Do not use relative paths (
../) or absolute URLs for internal pages - When you create a new page, add it to
docs.jsonnavigation or it won't appear in the sidebar
Organize content
When a user asks about anything related to site-wide configurations, start by understanding the global settings. See if a setting in the docs.json file can be updated to achieve what the user wants.
Navigation
The navigation property in docs.json controls site structure. Choose one primary pattern at the root level, then nest others within it.
Choose your primary pattern:
| Pattern | When to use |
| Groups | Default. Single audience, straightforward hierarchy |
| Tabs | Distinct sections with different audiences (Guides vs API Reference) or content types |
| Anchors | Want persistent section links at sidebar top. Good for separating docs from external resources |
| Dropdowns | Multiple doc sections users switch between, but not distinct enough for tabs |
| Products | Multi-product company with separate documentation per product |
| Versions | Maintaining docs for multiple API/product versions simultaneously |
| Languages | Localized content |
Within your primary pattern:
- Groups - Organize related pages. Can nest groups within groups, but keep hierarchy shallow
- Menus - Add dropdown navigation within tabs for quick jumps to specific pages
expanded: false- Collapse nested groups by default. Use for reference sections users browse selectivelyopenapi- Auto-generate pages from OpenAPI spec. Add at group/tab level to inherit
Common combinations:
- Tabs containing groups (most common for docs with API reference)
- Products containing tabs (multi-product SaaS)
- Versions containing tabs (versioned API docs)
- Anchors containing groups (simple docs with external resource links)
Links and paths
- Internal links: Root-relative, no extension:
/getting-started/quickstart - Images: Store in
/images, reference as/images/example.png - External links: Use full URLs, they open in new tabs automatically
Customize docs sites
What to customize where:
- Brand colors, fonts, logo →
docs.json. See global settings - One-off component or layout tweaks →
classNamewith Tailwind CSS classes on the component. See style components - Site-wide styling →
custom.cssat project root - Dark mode → Enabled by default. Only disable with
"appearance": "light"indocs.jsonif brand requires it
Start with docs.json. Use className for individual elements, and add custom.css only for site-wide styling that config and utility classes don't cover.
Write content
Components
The components overview organizes all components by purpose: structure content, draw attention, show/hide content, document APIs, link to pages, and add visual context. Start there to find the right component.
Common decision points:
| Need | Use |
| Hide optional details | <Accordion> |
| Long code examples | <Expandable> |
| User chooses one option | <Tabs> |
| Linked navigation cards | <Card> in <Columns> |
| Sequential instructions | <Steps> |
| Code in multiple languages | <CodeGroup> |
| API parameters | <ParamField> |
| API response fields | <ResponseField> |
Callouts by severity:
<Note>- Supplementary info, safe to skip<Info>- Helpful context such as permissions<Tip>- Recommendations or best practices<Warning>- Potentially destructive actions<Check>- Success confirmation
Reusable content
When to use snippets:
- Exact content appears on more than one page
- Complex components you want to maintain in one place
- Shared content across teams/repos
When NOT to use snippets:
- Slight variations needed per page (leads to complex props)
Import snippets with import { Component } from "/path/to/snippet-name.jsx".
Writing standards
Voice and structure
- Second-person voice ("you")
- Active voice, direct language
- Sentence case for headings ("Getting started", not "Getting Started")
- Sentence case for code block titles ("Expandable example", not "Expandable Example")
- Lead with context: explain what something is before how to use it
- Prerequisites at the start of procedural content
What to avoid
Never use:
- Marketing language ("powerful", "seamless", "robust", "cutting-edge")
- Filler phrases ("it's important to note", "in order to")
- Excessive conjunctions ("moreover", "furthermore", "additionally")
- Editorializing ("obviously", "simply", "just", "easily")
Watch for AI-typical patterns:
- Overly formal or stilted phrasing
- Unnecessary repetition of concepts
- Generic introductions that don't add value
- Concluding summaries that restate what was just said
Formatting
- All code blocks must have language tags
- All images and media must have descriptive alt text
- Use bold and italics only when they serve the reader's understanding--never use text styling just for decoration
- No decorative formatting or emoji
Code examples
- Keep examples simple and practical
- Use realistic values (not "foo" or "bar")
- One clear example is better than multiple variations
- Test that code works before including it
Document APIs
Choose your approach:
- Have an OpenAPI spec? → Add to
docs.jsonwith"openapi": ["openapi.yaml"]. Pages auto-generate. Reference in navigation asGET /endpoint - No spec? → Write endpoints manually with
api: "POST /users"in frontmatter. More work but full control - Hybrid → Use OpenAPI for most endpoints, manual pages for complex workflows
Encourage users to generate endpoint pages from an OpenAPI spec. It is the most efficient and easiest to maintain option.
Deploy
Mintlify deploys automatically when changes are pushed to the connected Git repository.
What agents can configure:
- Redirects → Add to
docs.jsonwith"redirects": [{"source": "/old", "destination": "/new"}] - SEO indexing → Control with
"seo": {"indexing": "all"}to include hidden pages in search
Requires dashboard setup (human task):
- Custom domains and subdomains
- Preview deployment settings
- DNS configuration
For /docs subpath hosting with Vercel or Cloudflare, agents can help configure rewrite rules. See /docs subpath.
Workflow
1. Understand the task
Identify what needs to be documented, which pages are affected, and what the reader should accomplish afterward. If any of these are unclear, ask.
2. Research
- Read
docs.jsonto understand the site structure - Search existing docs for related content
- Read similar pages to match the site's style
3. Plan
- Synthesize what the reader should accomplish after reading the docs and the current content
- Propose any updates or new content
- Verify that your proposed changes will help readers be successful
4. Write
- Start with the most important information
- Keep sections focused and scannable
- Use components appropriately (don't overuse them)
- Mark anything uncertain with a TODO comment:
{/* TODO: Verify the default timeout value */}5. Update navigation
If you created a new page, add it to the appropriate group in docs.json.
6. Verify
Before submitting:
- Frontmatter includes title and description
- All code blocks have language tags
- Internal links use root-relative paths without file extensions
- New pages are added to
docs.jsonnavigation - Content matches the style of surrounding pages
- No marketing language or filler phrases
- TODOs are clearly marked for anything uncertain
- Run
mint broken-linksto check links - Run
mint validateto find any errors
Edge cases
Migrations
If a user asks about migrating to Mintlify, ask which platform hosts their current docs. For Docusaurus, GitBook, ReadMe, Fern, or Document360, follow the matching guide in the migration overview. For any other platform, follow the manual migration guide.
Hidden pages
Any page that is not included in the docs.json navigation is hidden. Use hidden pages for content that should be accessible by URL or indexed for the assistant or search, but not discoverable through the sidebar navigation.
Exclude pages
The .mintignore file is used to exclude files from a documentation repository from being processed.
Common gotchas
- Component imports - JSX components need explicit import, MDX components don't
- Frontmatter required - Every MDX file needs
titleat minimum - Code block language - Always specify language identifier
- Never use
mint.json-mint.jsonis deprecated. Only ever usedocs.json
Resources
Other versions27 projects use a version of this.
Word for word · 0
None found.
Edited · 23
- QuivrHQ/quivr★ 40k91% same
- activepieces/activepieces★ 25k93% same
- FailproofAI/failproofai★ 7.2k92% same
- exospherehost/failproofai★ 5.7k92% same
- GlitterKill/sdl-mcp★ 49291% same
- lampac-nextgen/lampac★ 36191% same
- autobrr/mkbrr★ 35490% same
- theexperiencecompany/gaia★ 32491% same
- jacred-fdb/jacred★ 12891% same
- WebMCP-org/npm-packages★ 10492% same
13 more not listed
Wrote their own version · 4
- Arize-ai/phoenix★ 12ksame name
- cline/skills★ 35same name
- miketromba/skills★ 2same name
- docaohieu2808/claude-skills★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
Used alongsideProjects with it also use ponytail, vercel-react-best-practices and 3 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
GoogleSkillponytail
Forces the laziest solution that actually works, simplest, shortest, most minimal. Channels a senior dev who has seen everything: question whether the task needs to exist at all (YAGNI), reach for the standard library before custom code, native platform features before dependencies, one line before fifty. Supports intensity levels: lite, full (default), ultra. Use on ANY coding task: writing, adding, refactoring, fixing, reviewing, or designing code, and choosing libraries or dependencies. Also use whenever the user says "ponytail", "be lazy", "lazy mode", "simplest solution", "minimal solution", "yagni", "do less", or "shortest path", or complains about over-engineering, bloat, boilerplate, or unnecessary dependencies. Do NOT use for non-coding requests (general knowledge, prose, translation, summaries, recipes).
Also in 3 projects that use this
VercelSkillvercel-react-best-practices
React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.
Also in 4 projects that use this
VercelSkillagent-browser
Automates browser interactions for web testing, form filling, screenshots, and data extraction. Use when the user needs to navigate websites, interact with web pages, fill forms, take screenshots, test web applications, or extract information from web pages.
Also in 3 projects that use this
MicrosoftSkillmcp-builder
Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP) or Node/TypeScript (MCP SDK).
Also in 3 projects that use this
VercelSkillfind-skills
Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.
Also in 3 projects that use this
In this repository8 other files it gives its agents.
- .mintlify/AGENTS.mdAGENTS.md
- .claude/CLAUDE.mdCLAUDE.md
- .cursor/rules/component-reference.mdcCursor rule
- .cursor/rules/writing-standards.mdcCursor rule
- doc-authorSkill
- doc-readerSkill
- mintlifySkill
- mintlify-apiSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

