Managing Documentation Versions
SkillDocs & knowledgeCutting a new docs version, promoting next to a release, and managing versioned documentation content under docs/src/content/. Use when releasing a Golem version, backporting docs fixes, renaming a docs version, or changing the version selector.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Managing Documentation Versions skill
What this skill tells your AI
The instructions your AI receives, as published by golemcloud/golem in .agents/skills/managing-docs-versions/SKILL.md and read by ahel’s review.
Golem documentation is stored under docs/src/content/<version>/. Write new material in next; released directories are frozen snapshots.
Current wiring
docs/src/lib/versions.ts:VERSIONS, lifecycle status, andDEFAULT_VERSION.docs/src/app/[version]/page.tsx: version index (/<version>).docs/src/app/[version]/[...mdxPath]/page.tsx: non-index pages (/<version>/...). These are deliberately split; there is no optional-catch-all route.docs/src/app/[version]/layout.tsx: version-aware Nextra layout, selector, banner, and Pagefind filter.docs/src/app/page.tsx: root redirect.docs/src/proxy.ts: redirects eligible unversioned routes to the default version.docs/src/lib/version-manifest.tsanddocs/src/components/version-selector.tsx: same-page/nearest-parent switching between versions.docs/scripts/version-tool.ts:prefix,clone,rename, andcheck.docs/next.config.mjs: Next configuration and the place to add explicit redirects.
Link rules and checker scope
In prose MDX, use version-prefixed documentation links such as /next/quickstart or /v1.5/quickstart. Keep public assets such as /images/foo.png unprefixed.
Run from docs/:
bun run scripts/version-tool.ts check [<registered-version>]
Do not overstate this check. It checks registered version prefixes from VERSIONS and only the supported prose forms:
- Markdown destinations:
](/path)and](/path "title") - quoted JSX/HTML
hrefandtoattributes
It skips fenced code, public top-level paths, already registered version prefixes, relative links, and unsupported forms such as href={...}. It does not prove that a destination exists, that a cross-version link is desirable, or that an unregistered new slug is valid. check <slug> selects a content directory but does not register that slug; update versions.ts before relying on it.
Cut a release (next to vX.Y)
Run version-tool commands from docs/.
-
Move
nextand rewrite links inside the moved tree:bun run scripts/version-tool.ts rename next vX.Y -
Clone the release back to
next, rewriting links in the clone:bun run scripts/version-tool.ts clone vX.Y next -
Update
docs/src/lib/versions.ts: addvX.Yascurrent, demote the previous current version tolegacy, setDEFAULT_VERSION, and retainnextasunreleased. -
Regenerate the live sources of truth into
nextfrom the repository root:cargo make generate-docs-openapi cargo make generate-docs-skillsThe How-To generator replaces and generates all of these outputs:
docs/src/content/next/how-to-guides.mdx- skill pages under
docs/src/content/next/how-to-guides/<category>/ - category landing pages
docs/src/content/next/how-to-guides/<category>.mdx - top-level and per-category
_meta.jsfiles
-
Inspect the diff, especially the frozen release versus regenerated
next, then verify:# from docs/ bun run scripts/version-tool.ts check bun run build:check bun run build # from the repository root cargo make check-docs-openapi cargo make check-docs-skills -
Smoke-test
/, both version index routes, nested pages, version switching, and thenext/legacy banners.
Verify Pagefind without hardcoded filenames or slugs
bun run build runs Pagefind as postbuild and writes docs/public/_pagefind. Do not depend on compressed internal filenames, strings, a fixed filter count, or a hardcoded version list. Derive expected slugs from VERSIONS, then query the generated index through Pagefind's JavaScript API (or run the site and use the search UI) and verify that each registered version can be supplied as the version filter and returns results for known text in that version. Also confirm the build log contains no Pagefind errors and that public/_pagefind/pagefind.js and pagefind-entry.json exist.
Backport to a released version
Edit the frozen MDX directly, preserve that version's link prefix, and run:
cd docs
bun run scripts/version-tool.ts check vX.Y
bun run build:check
Generators accept --version vX.Y, but use that only when today's source inputs genuinely represent that release:
bun run openapi/gen-openapi.ts --version vX.Y
bun run skills/sync-skills.ts --local .. --version vX.Y
Rename, add, or retire a version
- Rename content with
bun run scripts/version-tool.ts rename <old> <new>, then updateversions.ts. The tool rewrites links only in the moved tree. - Add a page under
src/content/<version>/, register it in the nearest_meta.js, and use that version's prefix. - To retire content, remove its directory and registry entry. If old URLs should redirect, add an explicit redirect in
docs/next.config.mjs; removing content or changing the registry does not create one. Check redirect ordering alongsidesrc/proxy.tsand test both index and nested old URLs.
Editing cautions
- Do not hand-edit generated
next/rest-api/or any generated How-To output. Change its source and regenerate. prefixis an initial-migration helper, not routine formatting.cloneandrenamereject an existing destination.- Public assets remain unprefixed. Prefer same-version documentation links; the selector handles navigation across snapshots.
- If development state appears stale, clearing
.nextmay help, but do not claim that production builds are categorically unaffected by development-router or bundler problems. Verify the production build.
Signals
- GitHub stars
- 2k
- Forks
- 212
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
managing-docs-versions- Source
- github.com/golemcloud/golem