Skip to main content

site-infra

The documentation site, docs.capsem.org. Use when writing or editing docs, adding pages, or working with Astro Starlight.

Quellinformationen

Repository
google/capsem
Letzte Quellaktivität
25. September 2026 um 00:49
Erkannte Sprache von SKILL.md
Englisch
Sterne
79
Forks
15

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

Datei-Explorer
2 Dateien

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
site-infra
description
The documentation site, docs.capsem.org. Use when writing or editing docs, adding pages, or working with Astro Starlight.
# Documentation Site The detailed documentation source for docs.capsem.org is authored for [Astro Starlight](https://starlight.astro.build/) and lives in `web/docs/src/content/docs/` as Markdown/MDX files. During the Capsem 0.6 pre-release, the production Astro build deliberately does not register the Starlight integration: it publishes `web/docs/src/pages/index.astro` as the root holding page and derives a noindex holding tombstone for every former detailed route while every source file remains checked in. ## Dev workflow ```bash cd web/docs && pnpm run dev # Holding surface at localhost:4321 cd web/docs && pnpm run build # Build and verify the exact production artifact graph ``` ## CI and deploy rail `ci.yaml` runs the merge-blocking `docs-build` job under `pr-gate`. `docs.yaml` deploys only on every push to `main` and smokes `https://docs.capsem.org/`, then requires the warmed `/getting-started/` tombstone markers while rejecting its old guide/install content. This deploy rail is independent from binary releases, manual VM asset releases, and the `release.capsem.org` asset-channel workflow. ## Capsem 0.6 holding boundary - Do not delete or rewrite the detailed manual to produce the holding page. - `web/docs/src/pages/[...slug].astro` derives one static noindex tombstone from every detailed Markdown/MDX source except the root `index.mdx`. A removed path is not enough: Cloudflare can continue serving a warmed old asset after deletion, so each former URL must be replaced explicitly. - `web/docs/public-holding/_headers` applies no-store browser/CDN policy and an `X-Robots-Tag` to the complete qualification surface. - `build_system/scripts/web/check-docs-holding-build.py` independently derives the exact tombstone inventory from the manual sources. It permits only those files, the root holding page, a top-level `404.html`, and `_headers`; it rejects unexpected artifacts and old Starlight, installation, release, or deep-doc content. - The holding page must say that 0.6 is in pre-release qualification and must not offer installation instructions or release downloads. - Restoring detailed routes is a separate publication decision: register Starlight again only when the 0.6 documentation is approved for release. ## Writing style Tight and to the point, like a manual. One topic per page. No filler, no marketing language. Tables over prose when listing configs or test cases. Code examples only when they clarify usage. Diagrams in mermaid. ## Frontmatter Every doc page must include `title` and `description`. Starlight handles `lastUpdated` from git history automatically. No `layout:` field -- Starlight provides its own. ```markdown --- title: Page Title description: One-line summary for SEO and sidebar tooltips. sidebar: order: 10 --- ``` ## Site structure ``` web/docs/src/content/docs/ getting-started.md architecture/ hypervisor.md Hypervisor abstraction, Apple VZ + KVM backends (5 mermaid diagrams) settings.md Settings grammar, value resolution, presets, IPC, boot injection build-system.md capsem-builder architecture, TOML configs, Jinja, multi-arch custom-images.md Corporate image customization guide settings-schema.md Two-node schema, JSON Schema, Pydantic, cross-language conformance security/ overview.md Security model overview network-isolation.md Air-gapped networking, domain policy virtualization.md VM isolation guarantees build-verification.md Build reproducibility, checksums kernel-hardening.md Custom kernel, allnoconfig, minimal attack surface benchmarks/ results.md Current performance results (boot, disk, CLI, HTTP) debugging/ capsem-doctor.md In-VM diagnostic suite troubleshooting.md Common issues and solutions development/ benchmarking.md How to run and extend capsem-bench getting-started.md Dev environment setup (stub) skills.md AI agent skills system releases/ 0-8.md through 0-14.md One page per minor version ``` ## Sidebar Configured in `web/docs/astro.config.mjs` under `starlight({ sidebar: [...] })`. Uses `autogenerate: { directory: '<category>' }` for each section. Page ordering within a section uses `sidebar: { order: N }` in frontmatter. ## Adding a new doc page 1. Create `web/docs/src/content/docs/<category>/<topic>.md` with frontmatter 2. It auto-appears in the sidebar via `autogenerate` 3. Set `sidebar: { order: N }` to control position (lower = higher in list) ## Adding a new category 1. Create the directory under `web/docs/src/content/docs/` 2. Add a sidebar entry in `web/docs/astro.config.mjs`: ```js { label: 'Category Name', autogenerate: { directory: 'category-slug' } } ``` ## Release pages - Path: `web/docs/src/content/docs/releases/<major>-<minor>.md` (hyphens, not dots) - Each page consolidates all patch releases for that minor version - Higher `sidebar.order` = newer = listed first (reverse-chrono) - When bumping to a new minor, create a new page ## Mermaid diagrams The site uses `astro-mermaid` for rendering. Use fenced code blocks: ````markdown ```mermaid graph LR A --> B --> C ``` ```` ## Astro reference Read `references/astro.md` for Astro framework patterns (components, content collections, SSR, CLI). From the official Astro team. ## Theme Custom CSS in `web/docs/src/styles/custom.css`. Accent colors and fonts. Logo at `web/docs/src/assets/logo.svg`. ## Graphics and icons Source of truth for all icons: `web/graphics/`. ``` web/graphics/ icon/ Brand icon in multiple sizes and variants icon-mainfile.ai Illustrator source file 22w/ 22px (menu bar) 1x/ 726px (standard) 2x/ 1450px (retina) 3x/ 2176px 4x/ 2900px 1024w/ 1024px (app store, high-res) Variants: capsem-logo-{black,color,grey,white}.png tauri/ Pre-built Tauri app icon set 32x32.png, 128x128.png, 128x128@2x.png icon.icns, icon.ico, icon.svg ``` Site favicons in `web/docs/public/` are generated from `web/graphics/icon/1024w/capsem-logo-color.png`. To regenerate: ```bash sips -z 16 16 web/graphics/icon/1024w/capsem-logo-color.png --out web/docs/public/favicon-16x16.png sips -z 32 32 web/graphics/icon/1024w/capsem-logo-color.png --out web/docs/public/favicon-32x32.png sips -z 180 180 web/graphics/icon/1024w/capsem-logo-color.png --out web/docs/public/apple-touch-icon.png sips -z 192 192 web/graphics/icon/1024w/capsem-logo-color.png --out web/docs/public/android-chrome-192x192.png sips -z 512 512 web/graphics/icon/1024w/capsem-logo-color.png --out web/docs/public/android-chrome-512x512.png ``` ## Custom images The maintained custom-image documentation lives at `web/docs/src/content/docs/architecture/custom-images.md`. ## Page scope boundaries - **`development/getting-started.md`** is strictly about environment setup: prerequisites, clone, bootstrap, build-assets, codesign, first run. Troubleshooting in this page must be limited to setup failures (doctor, codesign, build-assets OOM/clock, missing assets). Runtime issues (disk full, boot hangs, cross-compile errors, network problems) belong in `debugging/troubleshooting.md` -- link there instead of duplicating. - **`debugging/troubleshooting.md`** is the catch-all for runtime issues. New troubleshooting entries go here unless they are specifically about first-time env setup. ## Keep docs in sync When features change (settings, CLI flags, MCP tools, security invariants, benchmarks), update the corresponding doc page. When cutting a new minor release, create a new release page. Most pages are still stubs -- fill them in as features stabilize.
Auf GitHub ansehen