scalar-docs
Original:🇺🇸 English
Translated
Skill for writing and updating scalar.config.json — Scalar Docs configuration reference for users and LLMs.
2installs
Sourcescalar/scalar
Added on
NPX Install
npx skill4agent add scalar/scalar scalar-docsTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →Scalar Docs Configuration Skill — scalar.config.json
Reference for writing and updating , the central configuration file for Scalar Docs. Use this when creating, editing, or validating Docs configuration for any project.
scalar.config.jsonOverview
- File: (or
scalar.config.json)scalar.config.json5 - Location: Repository root by default; path can be overridden in Scalar Dashboard
- Schema: — enables autocomplete in VS Code/Cursor when
https://registry.scalar.com/@scalar/schemas/configis truejson.schemaDownload.enable - Version: Use for the latest format
"scalar": "2.0.0"
Quick Start
Create a minimal config:
bash
npx @scalar/cli project initMinimal structure:
json
{
"$schema": "https://registry.scalar.com/@scalar/schemas/config",
"scalar": "2.0.0",
"info": {
"title": "My Documentation",
"description": "The best documentation you've read today"
},
"navigation": {
"routes": {
"/": {
"title": "Introduction",
"type": "page",
"filepath": "docs/introduction.md"
}
}
}
}Validate config:
npx @scalar/cli project check-configRoot Properties
| Property | Type | Description |
|---|---|---|
| | JSON Schema URL for editor autocomplete and validation |
| | Configuration version. Use |
| | Project metadata (title, description) |
| | Navigation structure (header, routes, sidebar, tabs) |
| | Site-level settings (domain, theme, head, logo, routing) |
| | Relative path to assets folder from config root |
info
Project metadata displayed across the site:
json
{
"info": {
"title": "My Documentation",
"description": "Comprehensive guides for our API"
}
}navigation
All navigation is in . Each route key is the URL path; the value is a config object.
navigation.routesnavigation.header
Links in the top bar. Use to push items before it left and after it right.
type: "spacer"json
"header": [
{ "type": "link", "title": "Home", "to": "/" },
{ "type": "spacer" },
{ "type": "link", "title": "Log in", "to": "https://dashboard.example.com/login", "newTab": true },
{ "type": "link", "title": "Register", "style": "button", "icon": "phosphor/regular/user-plus", "to": "https://...", "newTab": true }
]Properties: , ( | ), , ( | ), ,
titletype"link""spacer"tostyle"button""link"iconnewTabnavigation.sidebar
Links at the bottom of the sidebar:
json
"sidebar": [
{ "title": "Log in", "url": "https://...", "style": "button", "newTab": true }
]navigation.tabs
Tabs for quick access to sections:
json
"tabs": [
{ "title": "API", "path": "/api", "icon": "phosphor/regular/plug" }
]Route Types
Page (type: "page"
)
type: "page"Markdown/MDX content from a file:
json
"/getting-started": {
"type": "page",
"title": "Getting Started",
"filepath": "docs/getting-started.md",
"description": "Optional SEO description",
"icon": "phosphor/regular/rocket",
"showInSidebar": true,
"layout": { "toc": true, "sidebar": true }
}Layout: (default ), (default ).
toctruesidebartrueHidden pages: Set to hide a page from the sidebar while keeping it accessible via its direct URL.
showInSidebar: falseOpenAPI (type: "openapi"
)
type: "openapi"API reference from file, Registry, or URL:
File:
json
"/api": {
"type": "openapi",
"title": "My API",
"filepath": "docs/api-reference/openapi.yaml",
"icon": "phosphor/regular/plug"
}Registry:
json
"/api": {
"type": "openapi",
"title": "My API",
"namespace": "my-organization",
"slug": "your-api"
}URL:
json
"/api": {
"type": "openapi",
"title": "My API",
"url": "https://example.com/openapi.json"
}Display modes: (default), , .
folderflatnestedAPI Reference options (authentication, theme, etc.) go in a object — same options as the API Reference configuration.
configGroup (type: "group"
)
type: "group"Collapsible section with children:
json
"/products": {
"type": "group",
"title": "Products",
"mode": "flat",
"icon": "phosphor/regular/package",
"children": {
"/docs": { "type": "page", "title": "Documentation", "filepath": "docs/documentation.md" },
"/api": { "type": "openapi", "title": "API Reference", "filepath": "openapi.yaml" }
}
}Modes: , , (default).
flatnestedfolderLink (type: "link"
)
type: "link"External URL:
json
"/github": {
"type": "link",
"title": "GitHub",
"url": "https://github.com/org/repo",
"icon": "phosphor/regular/github-logo"
}siteConfig
branding
Logo — single URL or per mode:
json
"logo": "https://example.com/logo.svg"
// or
"logo": {
"darkMode": "https://example.com/logo-dark.svg",
"lightMode": "https://example.com/logo-light.svg"
}Theme — one of: , , , , , , , , , , ,
defaultalternatemoonpurplesolarizedbluePlanetdeepSpacesaturnkeplermarslaserwavenonejson
"theme": "purple"domain
Subdomain (free):
https://<subdomain>.apidocumentation.comjson
"subdomain": "your-docs"Custom domain (Pro):
https://docs.example.comjson
"customDomain": "docs.example.com"Subpath — for multiple projects on same domain:
json
"subpath": "/guides"layout
json
"layout": {
"toc": true,
"header": true
}head
Inject scripts, styles, meta tags, and links:
json
"head": {
"title": "My Documentation",
"meta": [
{ "name": "description", "content": "API documentation" },
{ "property": "og:image", "content": "https://example.com/og.png" }
],
"styles": [{ "path": "docs/assets/custom.css", "tagPosition": "head" }],
"scripts": [{ "path": "docs/assets/analytics.js", "tagPosition": "bodyClose" }],
"links": [{ "rel": "icon", "href": "/favicon.png" }]
}For and : path relative to config root. For (favicon): root-relative ().
scriptsstyleslinks/favicon.pngtagPosition"head""bodyOpen""bodyClose"footer
json
"footer": {
"filepath": "docs/footer.html",
"belowSidebar": true
}routing
Redirects:
json
"routing": {
"redirects": [
{ "from": "/old-path", "to": "/new-path" },
{ "from": "/old-path/:wildcard", "to": "/new-path" },
{ "from": "/old-path/:pathMatch(.*)*", "to": "/new-path" }
]
}Path patterns:
json
"routing": {
"guidePathPattern": "/docs/:slug",
"referencePathPattern": "/api/:slug"
}assetsDir
Relative path to assets folder. Assets are served from site root.
json
"assetsDir": "docs/assets"In Markdown: or .
In : use full path relative to config root for scripts/styles; root-relative for links.
siteConfig.headMigration from Docs 1.0
Docs 1.0 used and arrays. Docs 2.0 uses .
guidesreferencesnavigation.routesUpgrade:
bash
npx @scalar/cli project upgradeCheck result:
bash
npx @scalar/cli project previewCLI Commands
| Command | Description |
|---|---|
| Create scalar.config.json |
| Validate config |
| Local preview (port 7971) |
| Publish from local files |
| Publish from linked GitHub repo |
| Migrate from Docs 1.0 |
Common Patterns
Multi-project on same domain: Same or , different per repo.
customDomainsubdomainsubpathMDX: Use extension in ; same structure as Markdown pages.
.mdxfilepathHide TOC on a page: on that route.
"layout": { "toc": false }API Reference auth: Add under the openapi route with (same options as API Reference config).
configauthenticationCustom domain DNS: CNAME host → (DNS-only, no proxy).
docsdns.scalar.com