Documentation Strategy
Goal
Use documentation as a real product asset from day one, for both humans and agents.
Why Docusaurus
- serves repo-root markdown through a browsable docs site
- supports separate public, developer, and engineering sections
- keeps docs easy for humans to browse and agents to cite
- fits the current in-repo source-of-truth model
Recommended split
Public docs
Purpose:
- product docs
- user guides
- trust and privacy explanations
- current user-facing behavior
Suggested route:
/docs/public
Developer docs
Purpose:
- public API docs
- partner integration docs
- self-hosting and deployment docs
- provider variable names and recreation paths
- agent-facing integration contracts such as portable skills and MCP read tools
Suggested route:
/docs/developers
Engineering docs
Purpose:
- engineering decisions
- alternatives considered
- moderation playbooks
- rollout plans
- AI/operator notes
- integration negotiations and implementation notes
Suggested route:
/docs/engineering
Important caveat
Docusaurus can organize docs into public, developer, and engineering sections, but it does not magically make a route private.
For actual privacy, use one of these:
- separate internal deployment
- app-layer auth in front of internal docs
- keep some docs in-repo but not deployed publicly
Best practical setup
Recommended default:
- same repo
- Docusaurus for canonical docs
- public and developer docs deployed publicly when they describe stable current behavior
- engineering docs may be deployed publicly only when safe; excluding or auth-gating them needs an owning issue, ADR, or deployment decision
Agent strategy
Skills should stay thin.
Good pattern:
- skill points agent to canonical docs page(s)
- docs hold the evolving truth
- skill provides workflow framing, not duplicated content
- Docusaurus-visible docs are the canonical review surface for skill content that humans should maintain
This keeps humans and agents on the same source of truth.
Cross-linking matters: service pages, API pages, deployment pages, skill pages, and implementation notes should link to adjacent docs whenever behavior crosses boundaries.
Future Work Link Rule
Any docs statement that says work is deferred, planned, future, or blocked on something that will be implemented later should link to an issue, ADR, project decision, or owning docs page.
Examples:
planned S3 private asset bucket ([#115](https://github.com/BASIC-BIT/VRDex/issues/115))public API route once the v0 API issue lands ([#39](https://github.com/BASIC-BIT/VRDex/issues/39))
If there is no owning artifact, either create one or rewrite the sentence so it is clearly an uncommitted candidate direction rather than a silent obligation.
Docs Faux Pas To Avoid
- Do not write generic hosted-vs-self-hosted platitudes such as "hosted can move faster" or "self-hosted should be able to reproduce the product shape." Say what is supported now, what configuration is required, and which issue owns the gap.
- Do not use
Not Yet Promisedlaundry lists. UseOut of scope for <issue/doc>only when the boundary helps readers avoid a concrete misunderstanding. - Do not add broad warnings such as "do not hard-code secrets" as filler. Tie them to exact variables, config files, provider objects, or tests.
- Do not leave canonical guidance in hidden tool folders when humans should review it. Docusaurus-visible docs are the canonical source; tool files should point back to them.
- Do not use
eventually,later,future,not yet, oronce implementedunless the sentence links to the owning issue, ADR, or decision artifact. - Do not mix public product claims with implementation caveats. Put current user-facing behavior in public docs, external contracts in developer docs, and alternatives or constraints in engineering docs.
- Do not duplicate the same policy across pages. Prefer one canonical page and cross-link it from adjacent docs.
Good internal doc categories
- product requirements
- design system rules
- data model decisions
- verification policy
- moderation policy
- integration contracts
- rollout and launch notes
- prompt and evaluation notes for AI-assisted features
Recommendation
Start with Docusaurus on day one.
Even if internal docs are not private at first, the structure is still worth it. Privacy or access-control changes need an owning issue, ADR, or deployment decision before they become implementation claims.
Current Scaffold
Locked decision:
- canonical markdown stays under repo-root
docs/ - the Docusaurus app lives under
apps/docs apps/docsreads../../docsdirectly instead of duplicating content into a second docs tree
Current recommendation:
- treat Docusaurus as the browse/build shell
- use
docs/public/,docs/developers/, anddocs/engineering/as the durable audience lanes - keep legacy product planning, backend, testing, and agentic decisions in
docs/until they are promoted into a lane - add public/private deployment controls only after an owning issue, ADR, or deployment decision exists; route organization is not access control
- use
pnpm dev:docsfor local browsing andpnpm build:docsfor static build verification
This satisfies the first docs scaffold and seed-content direction without claiming a separate internal deployment or auth-gated docs surface exists today.