skills/documentation/astro-starlight/skills/starlight-base/SKILL.md
Set up a new Astro Starlight documentation site from scratch. Use when creating a new Starlight project, adding Starlight to an existing Astro project, or configuring core options like sidebar, logo, social links, and page layout.
npx skillsauth add pantheon-org/tekhne starlight-baseInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Starlight is a full-featured documentation theme built on Astro. It ships with routing, search, dark mode, i18n, and accessibility — configure features rather than build them.
starlight-theme insteadstarlight-custom-component insteadStarlight = Astro integration + file-based routing + content collections.
starlight({}) in astro.config.mjs. No separate config file..md / .mdx under src/content/docs/ becomes a URL. File path = URL route.autogenerate.npm create astro@latest -- --template starlight
npm run dev
To add Starlight to an existing Astro project:
npx astro add starlight
All options live inside starlight({}). See configuration-reference.md for the full option table.
import { defineConfig } from 'astro/config';
import starlight from '@astrojs/starlight';
export default defineConfig({
site: 'https://mydocs.example.com', // Required for sitemap
integrations: [
starlight({
title: 'My Docs',
logo: { src: './src/assets/logo.svg' },
social: [
{ icon: 'github', label: 'GitHub', href: 'https://github.com/my-org/repo' },
],
sidebar: [
{
label: 'Guides',
items: [
{ label: 'Getting Started', slug: 'guides/getting-started' },
],
},
{ label: 'Reference', autogenerate: { directory: 'reference' } },
],
editLink: { baseUrl: 'https://github.com/my-org/repo/edit/main/docs/' },
customCss: ['./src/styles/custom.css'],
}),
],
});
Create .md or .mdx files under src/content/docs/:
---
title: My Page Title
description: A short description for SEO.
---
Content goes here.
Use template: splash for landing pages, draft: true to exclude from builds:
---
title: Home
template: splash
hero:
tagline: Welcome to my docs
---
src/content/docs/WHY: Starlight's routing only picks up files inside src/content/docs/. Consequence: Pages silently won't appear.
BAD: Create .md in src/pages/.
GOOD: Create .md in src/content/docs/.
src inside logo alongside light/darkWHY: Mutually exclusive. src is for a single logo; light/dark are for variants. Consequence: Config error.
BAD: logo: { src: './logo.svg', light: './light.svg' }
GOOD:
logo: { light: './src/assets/light-logo.svg', dark: './src/assets/dark-logo.svg' }
WHY: Slugs map to paths under src/content/docs/ — no leading slash, no .md extension. Consequence: Sidebar links 404.
BAD: slug: '/guides/setup.md'
GOOD: slug: 'guides/setup'
site inside starlight({}) for sitemapWHY: Sitemap generation requires site at the defineConfig level. Consequence: Sitemap not generated.
BAD: starlight({ site: 'https://...' })
GOOD: defineConfig({ site: 'https://...' })
autogenerate with items in the same sidebar groupWHY: A group uses either items or autogenerate, not both. Consequence: Build error.
BAD: { label: 'Guides', items: [...], autogenerate: { directory: 'guides' } }
GOOD: Choose one approach per group.
tools
A skill that produces warnings but no errors.
testing
A well-formed example skill for testing the validator.
development
A skill with code blocks and imperative instructions for testing content and contamination analysis.
tools