From github-pages-astro
Write documentation that serves both human readers and AI agents using dual-audience conventions
How this skill is triggered — by the user, by Claude, or both
Slash command
/github-pages-astro:dual-docsThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Write documentation that serves both human readers and AI agents. Every content page is authored once but consumed two ways: rendered HTML for humans and raw Markdown for agents.
Write documentation that serves both human readers and AI agents. Every content page is authored once but consumed two ways: rendered HTML for humans and raw Markdown for agents.
Documentation pages in an Astro + Starlight site produce two outputs from a single source:
llms.txt standard. Generated at build time by the starlight-llms-txt plugin.The starlight-llms-txt plugin generates three files from content pages:
| File | Purpose | Size target |
|---|---|---|
llms.txt | Navigation index with links and descriptions | Small (fits any context window) |
llms-full.txt | Complete documentation concatenated into one Markdown file | Full corpus |
llms-small.txt | Ultra-compact version for constrained context windows | Minimal |
There is no separate content tree to maintain. The same .md/.mdx source files serve both audiences.
AI reads documentation as isolated chunks, not as a continuous document. Every section must be independently meaningful when extracted from its surrounding context.
Every section must make sense in isolation. Never use:
Instead, always name the thing explicitly:
<!-- Wrong -->
As mentioned above, the file uses YAML frontmatter.
<!-- Right -->
Ticket files use YAML frontmatter with required fields: type, project, created, priority.
Read the terminology map from .docs-config.json. The keys are canonical terms; the values are synonyms to avoid.
If the config lists "ticket": ["card", "item", "task"], always use "ticket" — never "card", "item", or "task" when referring to the same concept.
Avoid "it", "this", "these" when the antecedent could be ambiguous. Repeat the noun:
<!-- Wrong -->
It processes them and returns the result.
<!-- Right -->
The freshness checker processes source mappings and returns a FreshnessReport.
Do not assume the reader has read other pages. State prerequisites and definitions inline. If a concept is defined elsewhere, include a brief inline definition before linking:
Tickets (Markdown files named `<type>--<slug>.md` stored in kanban columns)
are moved between directories to change status. See the
[Ticket Format reference](/project/reference/ticket-format) for full details.
Every page starts with a 2-3 sentence summary that restates the full context: what this page covers, what system it is part of, and why it matters. This is the chunk agents are most likely to retrieve.
# Ticket Format
Kanban tickets in the dot-skills plugin are Markdown files with YAML frontmatter,
stored in column directories (`todo/`, `in-progress/`, `ready-to-review/`, `done/`).
This page documents the required and optional frontmatter fields, naming conventions,
and type prefixes used across all tickets.
Never skip heading levels. Every page follows H1 → H2 → H3 → H4. Agents build semantic maps from heading structure — skipping levels breaks the hierarchy.
Always use fenced code blocks with explicit language identifiers. Agents parse these for executable examples:
```typescript
const config = await readDocsConfig(projectDir);
```
Every content page must include these frontmatter fields beyond the standard Starlight fields:
---
title: Page Title
description: 1-2 sentence description optimized for search and retrieval
content-type: reference | guide | tutorial | overview
scope: module-or-component-name
ai-summary: >
3-5 sentence dense summary of the entire page content,
written for an agent that will not read the full page.
Include key facts, formats, and rules.
related:
- slug-of-related-page-1
- slug-of-related-page-2
---
| Field | Purpose |
|---|---|
content-type | Helps agents filter for the right kind of page (reference for lookups, guide for how-tos) |
scope | Which plugin, module, or component this page documents |
ai-summary | Pre-written chunk agents can use without parsing the full page |
related | Explicit link graph so agents can navigate to related topics |
A single dedicated page configured via agentDocs.quickReferencePage in .docs-config.json. This page:
CLAUDE.md but publicly accessibleAgents need reliable breadcrumbs to find documentation:
llms.txt at site root — primary entry point. Any agent that knows the site URL can fetch /llms.txt.CLAUDE.md / AGENTS.md in the repo — reference to the published docs URL and llms.txt location.When creating or updating documentation, verify these discovery paths exist and point to current URLs.
llms-small.txt ExclusionsThe agentDocs.llmsSmallExcludes field in .docs-config.json lists section slug prefixes to exclude from llms-small.txt. This keeps the compact version focused on core concepts for constrained context windows. Typically excludes design docs, changelogs, and other supplementary content.
npx claudepluginhub kormie/dot-skillsDrafts READMEs, API docs, tutorials, release notes, and reviews technical docs for clarity and structure. Activates on docs/ .md files and READMEs.
Generates documentation from code including API references, developer guides, READMEs, and architecture overviews. Matches existing styles and avoids overwriting in brownfield codebases.