---
name: repo-website-guide-create
description: Create conceptual documentation and tutorial pages for the Valibot website at website/src/routes/guides/. Use when adding guides about schemas, pipelines, async validation, migration, or other topics. Covers directory structure, MDX templates, frontmatter, and content guidelines.
---
# Adding Guides to Website
Guide for creating conceptual documentation at `website/src/routes/guides/`.
## Directory Structure
```
website/src/routes/guides/
├── menu.md # Navigation menu
├── (get-started)/ # Intro, installation, quick start
├── (main-concepts)/ # Schemas, pipelines, parsing
├── (schemas)/ # Objects, arrays, unions
├── (advanced)/ # Async, i18n, JSON Schema
├── (migration)/ # Version upgrades, Zod migration
└── (category)/guide-slug/
└── index.mdx # Guide content
```
Note: Category folders use parentheses (Qwik route grouping).
## Process
1. Review 2-3 existing guides in the target category to understand style
2. Choose category from existing or create new
3. Create folder: `(category)/guide-slug/`
4. Create `index.mdx` with content
5. Update `menu.md`
## index.mdx Template
```mdx
---
title: Guide Title
description: >-
A concise description of what this guide covers.
contributors:
- github-username
---
import { ApiList, Link } from '~/components';
# Guide Title
Opening paragraph explaining what the reader will learn.
## Section Heading
Content with clear, concise language.
\`\`\`ts
import \* as v from 'valibot';
const Schema = v.object({
name: v.string(),
email: v.pipe(v.string(), v.email()),
});
\`\`\`
## Another Section
Continue with additional sections as needed.
Use \`pipe\` for internal links.
```
## Frontmatter
Required fields:
- **title**: Page title and navigation label
- **description**: SEO description (use `>-` for multi-line)
- **contributors**: Array of GitHub usernames
## Content Guidelines
### Code Examples
- Use TypeScript (`ts` language)
- Import as `import * as v from 'valibot';`
- Include comments for complex code
### Links
Internal links use the `Link` component:
```mdx
schemas guide
\`pipe\`
```
### Components
```mdx
```
### Formatting
- `inline code` for API names, variables, file names
- **bold** for genuine emphasis only — not as inline section labels
- Proper heading hierarchy (h1 title, h2 sections, h3 subsections)
### Writing tone
- Write conversational prose, not terse reference-doc style
- Use first-person plural: "we recommend" not "you should"
- Do not use bold as inline section labels (e.g. avoid `**Label:** content`). Use a proper subheading instead
- Do not prefix blockquotes with bold labels (e.g. avoid `> **Note:** ...`). A plain `>` is correct
- Bullet list items do not need a bold prefix on each item
### Images
Place images in the same folder as `index.mdx`:
```mdx

```
Consider light/dark theme variants if applicable (e.g., `diagram-light.jpg`, `diagram-dark.jpg`).
## Update menu.md
Add to `/website/src/routes/guides/menu.md`:
```markdown
## Category Name
- [Existing Guide](/guides/existing/)
- [New Guide Title](/guides/guide-slug/)
```
Maintain logical ordering within categories.
## Checklist
- [ ] Reviewed existing guides in the same category
- [ ] Folder structure: `(category)/guide-slug/index.mdx`
- [ ] Frontmatter: title, description, contributors
- [ ] Internal links use `Link` component
- [ ] Code examples use `import * as v from 'valibot';`
- [ ] Added to `menu.md`
- [ ] Style matches existing guides