CLAUDE.md@docs · git:20261009.ede55f7 · 2026-10-09 · sha256 81ef073710bf2426

CLAUDE.md@docs git:20261009.ede55f7A

Immutable. This exact content never changes and is served at /api/v1/blob/81ef073710bf2426.

<!-- generated_by: slashforge@5.1.1 generated_at: 2026-10-08T22:04:35.424Z -->

# slashforge-docs

The documentation site for SlashForge — a standalone **Astro** workspace nested in
the kit repo. It has its own dependencies, build, and CI checks, separate from the
root CLI. See the repo root `CLAUDE.md` for the kit as a whole.

## Agent orchestration

| When the user says... | Invoke |
|---|---|
| "investigate", "reproduce this", "root-cause" | `/slashforge-investigate` |
| "build", "add a page", "change the docs", "fix Y" | `/slashforge-code` |
| "small change", "tiny fix", "one-liner" | `/slashforge-code -quick` |
| "docs page", "component", "styling", "build the site" (mid-task) | `docs-developer` |
| anything else | `developer` |

`git` and `code-reviewer` are global agents at the repo root and are inherited — do not re-list them here.

## Project References

| Type | File |
|---|---|
| Rule | `docs/.claude/rules/astro-docs.md` |
| Agent | `docs/.claude/agents/docs-developer.md` |

## Tech stack

| Concern | Choice |
|---|---|
| Framework | Astro 7 (`astro`) |
| Module system | ESM (`"type": "module"`) |
| Search | pagefind |
| Fonts | `@fontsource-variable/archivo`, `@fontsource-variable/jetbrains-mono` |
| Markdown | `@astrojs/markdown-remark`, `remark-directive`, `unist-util-visit` |
| Node | 24 (Astro 7 needs ≥ 22.12) |

## Commands (run from `docs/`)

```bash
npm ci            # install (CI uses this)
npm run dev       # dev server (runs sync:changelog first)
npm run build     # production build (sync:changelog → astro build → pagefind)
npm run preview   # preview the built site
```

Doc-check scripts (run from `docs/` after a build):

```bash
node ../.github/scripts/check-docs-links.mjs
node ../.github/scripts/check-docs-targets.mjs
node ../.github/scripts/check-docs-width.mjs
node ../.github/scripts/check-docs-a11y.mjs
node ../.github/scripts/check-docs-facts.mjs
```

## Project structure

```
docs/
├─ astro.config.mjs        # Astro config
├─ src/
│  ├─ content/             # doc pages (changelog.md is GENERATED — don't edit)
│  ├─ components/          # UI components
│  ├─ plugins/             # build-time remark/rehype plugins (clear .astro cache after edits)
│  ├─ layouts/  pages/  styles/  assets/  scripts/
├─ scripts/                # sync-changelog.mjs, root-redirect.mjs
└─ public/                 # static assets
```

## Non-negotiable rules

- The changelog page is generated from the repo-root `CHANGELOG.md` at build time — never edit or commit `docs/src/content/docs/changelog.md`.
- Never hand-write the version into a page; it's derived from `package.json` (`check-docs-facts.mjs`).
- Don't commit a macOS-only `package-lock.json` — CI's `npm ci` needs the Linux optional deps. See `docs/.claude/rules/astro-docs.md`.
- After editing `src/plugins/`, clear `docs/node_modules/.astro` and `docs/.astro` if the change doesn't take effect.
- Keep the site passing every `check-docs-*` script — Astro won't fail a dead in-page link on its own.