Duvlify
GitHubGet started
ReferenceFrontmatter

Frontmatter

Every field a page can declare, what it controls, and which fields the build requires, as defined and enforced in src/content.config.ts.

A page declares only what it is. src/docs.config.ts controls where the page sits in the sidebar. That includes its category, its section label, and its neighbours. The page URL is its path under content/.

The schema is src/content.config.ts. The build enforces this schema. If frontmatter is invalid or incomplete, the build stops and reports the file at fault.

Required

FieldTypePurpose
titlestring, min 2Page title, browser title, and the # heading of the Markdown twin
descriptionstring, 10–170Introductory summary and meta description

Presentation

FieldTypePurpose
sidebarTitlestringShorter label for the sidebar when the title is long
iconstringIcon name, shown beside the sidebar label. See icons
badgestringSmall pill beside the sidebar label, e.g. New
rightRailtoc | customDefaults to toc. Set custom only when the page replaces the table of contents with rail-capable components

Publication

FieldTypePurpose
draftbooleanKeeps the page in the repository and out of every output. See Drafts
noindexbooleanPage stays reachable and in the sidebar, but out of search, the sitemap, the updates feed and the LLM corpus

These two fields are different. A draft page does not exist on the site. A noindex page exists, but the site never promotes it.

One file decides publication: src/lib/published.ts. Every part of the code that lists pages reads the collection through this file, instead of writing its own filter. This keeps the meaning of “published” consistent across all eleven places that check it.

Dates

FieldTypePurpose
updateddateOverrides the last-modified date, which otherwise comes from the file’s last commit
publisheddateFirst publication date, when it differs meaningfully from the last edit

Set updated when a change is substantial and the commit history does not show that. A typo fix should not reset a page’s freshness.

Social

FieldTypePurpose
imagestringReplaces the generated share card
imageAltstringAlt text, when a custom image is supplied

A page that sets neither still gets a full metadata set: a share card generated from its title, a canonical URL, and structured data.

API endpoint pages

Set these to render the three-column API reference layout for one operation in your OpenAPI document. Normal prose pages are unaffected.

FieldTypePurpose
pageTypeapi-endpointSelects the endpoint layout
apiMethodGET | POST | PUT | PATCH | DELETEMust match an operation in the spec
apiPathstringMust match that operation’s path
apiOperationIdstringOptional override
apiTagstringOptional override

Full walkthrough in API reference pages.

A complete example

YAML
---
title: Progressive rollout
sidebarTitle: Rollouts
description: Increase a flag's exposure in stages that halt themselves when a guard metric moves.
icon: activity
badge: New
updated: 2026-08-01
---

Use these docs with your AI tools

An AI agent can read this documentation directly. You do not need an account or an API key. Everything here is public and read-only.

Query these docs via MCP

Recommended

Add this server to Claude, Claude Code, Cursor, Mistral, or any tool that supports MCP. Your agent can then search Duvlify documentation and read it in full, instead of answering from memory.

https://duvlify.dev/mcp
  • searchFind the passages that answer a question.
  • fetchRead one page in full, as Markdown.
  • list_pagesSee every page in this documentation.

Query these docs over HTTP

The same tools also work as plain web requests. Use this for scripts, or for any tool that does not support MCP. There is one endpoint per tool. Arguments go in the query string, and the answer comes back as JSON.

https://duvlify.dev/api/docs/search?query=custom+domain

Read the OpenAPI description. It is built from the same definitions as the tools, so it always matches what the endpoints do.

Read these docs as Markdown

Add .md to any page URL to get its Markdown source. You can also send the headerAccept: text/markdown to the page URL itself.

To read the whole documentation in one file, open llms-full.txt. For a short index of every page, open llms.txt.