Documentation Guide¶
This guide explains how the Shipyard documentation site is structured,
authored, and built. Shipyard is the Naftiko Fleet's documentation hub — and
this site is Shipyard. It's generated by Zensical
from the Markdown files in this repository's docs/ folder.
Source layout¶
shipyard-docs/
├── zensical.toml # site config and navigation
├── docs/
│ ├── index.md
│ ├── getting-started/
│ ├── concepts/
│ ├── tutorials/
│ ├── fleet/
│ │ ├── index.md
│ │ ├── editions.md
│ │ ├── getting-started/
│ │ ├── ikanos/
│ │ ├── polychro/
│ │ ├── crafter/
│ │ ├── warden/
│ │ ├── skipper/
│ │ └── shipyard/
│ ├── contributing/
└── overrides/ # custom templates
Each top-level section corresponds to a tab in the site navigation.
Components live directly under fleet/ and share a uniform sub-tree
(purpose, features, roadmap, faq, releases, license).
Authoring conventions¶
File naming¶
- All files are kebab-case Markdown (
my-page.md) index.mdis the section landing page- File names match the visible page title in slugified form
Front matter¶
Optional — Zensical reads top-of-file YAML if present:
Headings¶
- One
# Titleper file (matchestitle:in front matter, if present) - Use
## Section,### Subsectionfor hierarchy - Don't skip levels (don't jump from
##to####)
Admonitions¶
Use Zensical-compatible admonition syntax:
!!! tip "Tip title"
Helpful tip body.
!!! warning "Watch out"
Warning body.
!!! info "Coming soon"
Used on draft pages for planned components.
Tabbed content¶
=== "macOS / Linux"
```bash
polychro lint .
```
=== "Windows (PowerShell)"
```powershell
polychro lint .
```
Code blocks¶
- Always declare the language (
```yaml,```bash,```java, …) - Wrap long lines for readability over horizontal scrolling
- Reflect the current schema version in YAML samples (currently
1.0.0-alpha3)
Cross-references¶
- Use relative paths between files
- From
docs/concepts/x.mdtodocs/fleet/ikanos/y.md:[Y page](../fleet/ikanos/y.md) - From
docs/fleet/ikanos/y.mdtodocs/fleet/ikanos/schema/z.md:[Z page](schema/z.md) - Don't link to
.html— Zensical handles that during build
Tables over prose¶
When listing options, fields, or features, prefer tables. Three reasons:
- Scannable for human readers
- Stable structure for LLM-assisted maintenance
- Diff-friendly in PRs
Building locally¶
# From shipyard-docs/
zensical serve # live-reload dev server on http://localhost:8000
zensical build # produces ./site/
Navigation¶
Navigation is defined in zensical.toml under [[nav]]. Add a new page by:
- Creating the Markdown file in
docs/ - Adding an entry under the appropriate section in
zensical.toml - Running
zensical serveto verify
Hierarchical navigation supports up to three levels (tab → section → page).
Voice and tone¶
- Direct and concise — short sentences, active voice
- Reader-aware — assume technical readers; don't over-explain primitives, do explain Fleet-specific concepts
- Show, don't just tell — every concept gets a YAML or code example
- No marketing language — features are described by what they do
Submitting changes¶
Documentation changes follow the standard contribution flow:
- Open an issue describing the change
- Open a PR against
main - CI runs Polychro against any new YAML samples and validates Markdown
- A reviewer merges after approval
See Component Contribution Guide for the broader flow.