Contributing to the documentation
This page is the public editorial contract for docs/. It is not bundled into pdks docs. Product
behaviour stays in the guides and references; this page says how those files are kept.
Keep English and Korean paired
Section titled “Keep English and Korean paired”Every Markdown body under docs/ has an English file and a .ko.md mirror. Stage both sides of a
pair together. Vocabulary in Korean uses a translation plus an English gloss on first mention
(약속(covenant)), not a transliteration. Do not invent a Korean file only to satisfy a checker,
and do not leave one side of a pair unpublished.
Stable section IDs
Section titled “Stable section IDs”Section IDs are explicit HTML anchors, identical across languages:
<a id="section-id"></a>## HeadingIDs are lowercase ASCII kebab-case. Put the <a id> on its own line immediately before the heading.
Every H2/H3 that is independently retrievable gets a stable ID. H1 is the document title, not a
section. Automatic heading links may remain; do not rename an old heading without keeping its
previous slug or explicit id.
Catalog, bundle, and redirects
Section titled “Catalog, bundle, and redirects”docs/catalog.json is the single list. Every Markdown file under docs/ is a documents entry.
documentsentries carryid,category,order,bundled, anden/ko{path,title,summary}. Write titles and summaries as plain text. Markdown formatting such as backticks is displayed literally in website titles and navigation.bundled: truefiles are embedded in the executable forpdks docs.bundled: falsefiles appear in the repository and on the documentation website;pdks docsexcludes them. This page and the design explanation arebundled: false.
Do not add a docs/*.md file that the catalog does not name.
Documentation website
Section titled “Documentation website”packages/documentation builds the website from every catalog entry, including bundled: false.
Its sync-docs.mjs script creates the ignored src/content/docs/ tree and
src/generated/sidebar.json. Edit the originals under docs/; the next build replaces generated
files.
In the Reference sidebar, reference/cli/ and reference/packages/ form separate groups. Other
reference pages, including configuration and declaration language, remain direct links.
The sync step removes the document title and language switch, writes catalog metadata as
frontmatter, and converts Markdown links into site routes. English pages use /docs/, Korean pages
/ko/docs/. A link to .ko.md selects Korean; a link to .md selects English. Links outside
docs/ point to GitHub. Stable section anchors and dots in version filenames are preserved.
pnpm -F @polydeukes/documentation build runs sync and Astro. Vercel uses that command and
publishes packages/documentation/dist. Check rendered pages in both languages after changing the
transform.
Examples and check commands
Section titled “Examples and check commands”Copy-paste examples must be consumer-shaped: paths and patterns a reader can run in their own project. When an example is this repository’s live config, say so in the prose next to it.
Exercise a new declaration in an isolated example project, not by violating this repository’s
protected files. Prefer git diff HEAD | pdks covenant check --diff for file-backed examples and
the hook probe in the first-judgment tutorial for session writes.
TypeScript examples import only symbols a package contract exports. The umbrella publishes no
TypeScript entry point — it is reached as the pdks bin — so those symbols come from
@polydeukes/sdk-ts.
Before committing a docs change, run:
node scripts/check-docs.mjsThe checker requires bilingual pairs, catalog coverage, and that local Markdown links resolve to an existing file and, when they carry a fragment, to an existing heading slug or explicit id.
What to run
Section titled “What to run”| Command | What it checks |
|---|---|
node scripts/check-docs.mjs |
Pairs, catalog, local links and anchors |
pdks docs search <query> / pdks docs show <id> |
Installed bundle after rebuilding the executable |
pnpm -F @polydeukes/documentation build |
Generated content, routes, and static website build |