Style contract for all docs in this repository. Enforcement is partially executable — test/doc-parity.test.ts pins catalog counts, tool counts, auth labels, repo-path references, markdown links, npm scripts, and package metadata.
- Fast onboarding for first-time users.
- Precise references for maintainers and automation users.
- Stable wording for tools, commands, flags, paths, and version policy.
- Consistent structure across user and maintainer docs.
- High-confidence discoverability without keyword stuffing or unsupported ranking claims.
User-facing docs should generally follow:
- Title and one-line lead.
- Quick path commands.
- Core operational workflow.
- Troubleshooting or failure handling.
- Related links.
Use short sections and scan-friendly tables where they improve clarity. Simple ASCII diagrams are welcome for request/storage flows — keep them inside fenced text blocks.
- Prefer direct, actionable language.
- Use runnable command examples.
- Explain expected outcomes after critical commands.
- Keep terminology consistent with runtime names (
account pool,rotation,flagged account,quota,warm,V1 plugin,V2 adapter). - Avoid speculative language when behavior is deterministic; mark advisory/best-effort behavior (health scores, quota figures, auto-refresh) explicitly instead of overstating guarantees.
- Put the user problem in the first paragraph before implementation detail.
- Cite real module paths (
lib/rotation.ts) in maintainer docs so claims stay greppable.
- Table separator rows use the spaced
| --- |form. - User-facing docs end with a
## Relatedsection listing filename-labeled links ([tools-and-cli.md](tools-and-cli.md)), not descriptive titles. - Admonitions use GitHub alert syntax (
[!NOTE],[!CAUTION]), not blockquote-bold emulations. - Index/portal tables link to filenames as the link label; descriptive labels are acceptable inline in prose.
- Root README and docs landing pages should naturally include
OpenCode,ChatGPT Plus/Pro OAuth,multi-account rotation,account switching,quota,diagnostics, andrecoverywhen those topics are in scope. - Use descriptive page titles such as
oc-codex-multi-auth Tools and CLIinstead of generic titles on public docs. - Do not promise search rankings. Improve discoverability through accurate titles, first paragraphs, package metadata, internal links, and GitHub topics.
- Do not repeat keyword lists in every section. Search terms should appear only where they help a developer understand the page.
- Keep the repository description, package description, README lead, and
docs/development/GITHUB_DISCOVERABILITY.mdaligned.
- Canonical package name is
oc-codex-multi-auth— always as one hyphenated word, in prose and in examples. The standalone CLI uses the same name. - The in-session surface is the 25
codex-*tool names — always lowercase with thecodex-prefix (codex-status, notCodex Status). OpenCode V2 normalizes them tocodex_statusform inside the host; describe that normalization only where V2 behavior is the topic. - Canonical runtime state root is
~/.opencode; OpenCode host config lives under~/.config/opencode, and the OAuth host token at~/.local/share/opencode/auth.json($XDG_DATA_HOME/opencode/auth.json). - OpenCode compatibility claims: the V1 plugin supports OpenCode 1.18.29+; the V2 adapter requires OpenCode 2.0.16+.
- Retired package names (
oc-chatgpt-multi-auth,opencode-openai-codex-auth-*) belong only in migration and rename-history contexts (README.mdcallout,upgrade.md,faq.md,troubleshooting.md,CHANGELOG.mdhistory). - Keep tool names and flags aligned with
lib/tools/and the standalone CLI help inscripts/install-oc-codex-multi-auth-core.js— the parity test derives catalog counts and auth labels from source. - Account numbering: in-session tool inputs and tool JSON
index/activeIndexare 1-based; standalone CLI[N]labels and--jsonindexare raw 0-based storage positions. Document this distinction wherever numbering is mentioned.
- Behavior changes must update docs and tests together.
- New tools, config keys, or environment variables must be reflected in
docs/tools-and-cli.md,docs/configuration.md, ordocs/development/CONFIG_FIELDS.md— the parity test extracts documented names and checks them against source. - Migration-impacting changes must update
docs/upgrade.md. - Governance-impacting changes must review
SECURITY.mdandCONTRIBUTING.md. - Keep PR/issue templates aligned with validation gates.
- Historical snapshots (archived plans, dated audits) are append-only; correct them with new artifacts, not rewrites.
Avoid:
- non-runnable command snippets
- conflicting path guidance across docs
- legacy-name-first onboarding language
- undocumented behavior drift between runtime and docs
- absolute claims about advisory behavior (health scores are heuristics, quota figures are estimates; say so)
- naming the package in any form besides
oc-codex-multi-authoutside the allowed rename-history scopes above