silo-docs-synclisted
Install: claude install-skill silo-code/silo
# Keep docs in sync AS YOU BUILD
The API reference is **generated from the source**, so documentation is not a
separate chore — it's part of changing the code. Whenever you touch the public
extension surface, do the documentation in the same change.
**The public surface** is the `@silo-code/sdk` barrel `packages/sdk/src/index.ts`
and everything it re-exports (`types.ts` + the `*-service.ts` type contracts +
`context-keys.ts`, all under `packages/sdk/src/`).
The docs site has two layers (see `apps/docs/`):
- **Hand-authored, member-centric pages** — the navigable narrative organized by
what you do with `ctx`: `apps/docs/api/index.md` (overview + shape diagram), then
one subdirectory per `ctx` domain (`apps/docs/api/registration/`,
`apps/docs/api/editors/`, `apps/docs/api/state/`, `apps/docs/api/storage/`,
`apps/docs/api/other/`, …), one page per `ctx` member. The `apiSidebar` in
`apps/docs/.vitepress/config.ts` is the source of truth for the current set of
domains.
- **Generated type leaves** — TypeDoc renders the SDK types into
`apps/docs/api/types/` (drill-down targets, linked from the member pages).
When you **add or change a public symbol** (a new `ctx` method, a new type, a new
field):
1. **Write TSDoc** on it — a summary plus per-member docs. Use `{@link Other}`
to cross-reference. Mandatory: every exported public symbol must be documented.
2. **Tag it.** Add exactly one of `@public` / `@internal`, and a `@category`
(one of: `Extension Contract`