AI skills for writing docs
Download an Agent Skill so Claude, Cursor, Codex, Gemini, or Copilot writes pages the same way this site renders them. The canonical instructions are the SKILL.md files below; the live syntax playground is Example Guide.
Download
Section titled “Download”Copy the write-docs-page folder into your project (keep that folder name).
| Agent | Skill file | Install path |
|---|---|---|
| Claude Code | SKILL.md | .claude/skills/write-docs-page/ |
| Cursor | SKILL.md | .cursor/skills/write-docs-page/ |
| OpenAI Codex | SKILL.md | .agents/skills/write-docs-page/ |
| Gemini CLI | SKILL.md | .gemini/skills/write-docs-page/ |
| GitHub Copilot | SKILL.md | .github/skills/write-docs-page/ |
Shared copies (same body):
Conventions the skill enforces
Section titled “Conventions the skill enforces”- Files go in
src/content/docs/<section>/<slug>.mdwith a lowercase path. - Frontmatter needs
title(and usuallydescription). Optionalsidebar.order/sidebar.label. - Public URLs drop
.mdand use a trailing slash. Internal links must match (/guides/example/, not.md). - Asides:
:::tip,:::note[Title],:::caution, plus site blocks:::success,:::warn,:::info. - Diagrams: Kroki fences (
plantuml,mermaid,c4,structurizr,diagramsnet,vega/vegalite, …). Rendered HTML/SVG uses```renderhtml, not```html. - Tabbed markdown:
:::::group-container+::::group-item[Title]{active}(outer fences use more colons). - Tabbed code:
:::grouparound fences withtitle="…". - Tables: wrap GFM tables in
:::data-table(optional{perPage=50},searchable=false, …). - Code meta: Expressive Code (
showLineNumbers,{2-3},ins/del,collapse,wrap,frame="terminal"). - Math: KaTeX
$inline$and$$block$$. - A new top-level docs folder also needs a sidebar
autogenerateentry inastro.config.mjs.
Supported diagrams
Section titled “Supported diagrams”Fence with the language. Full mapping: diagram types.
- Block →
blockdiag - Sequence →
plantuml,mermaid,seqdiag - Activity →
plantuml,mermaid,actdiag - Network →
nwdiag - Use case / class / state / object / deployment →
plantuml(class and state alsomermaid) - Timing →
plantuml,wavedrom - Entity relationship →
erd,plantuml,mermaid
- C4 context / container / component →
c4orc4plantuml - Structurizr DSL (landscape, context, container, component, dynamic, deployment) →
structurizr
- OO graph →
graphviz/dot,d2 - WBS / mind map / Gantt →
plantumland/ormermaid - Ditaa, packet, rack, BPMN, bytefield →
ditaa,packetdiag,rackdiag,bpmn,bytefield - Waveform →
wavedrom - HDL →
symbolator - Excalidraw, diagrams.net, WireViz, GoAT →
excalidraw,diagramsnet,wireviz,goat
Bar, line, area, circular, scatter, distributions, maps, trees, networks, heatmaps, word clouds, and beeswarm plots → vegalite or vega.
Show the language on the opening fence (these are source examples; they are not rendered here):
```plantuml@startumlAlice -> Bob: hello@enduml```
```c4@startuml!include <C4/C4_Context>Person(user, "User")System(app, "App")Rel(user, app, "Uses")@enduml```