All News
NewsSaturday documentation sweep

OpenClaw's Documentation Was Full of Broken Links — and the Tool That Should Have Caught Them Was Broken Too

Twelve documentation pages across channels, plugins, install guides, and provider references had dead anchors, wrong image paths, and misrouted cross-references. The link audit script that was supposed to catch these failures couldn't even run correctly — localized docs were contaminating the English validation, and a circular import was freezing the test suite.

March 30, 20265 min read|14 files · 12 docs pages fixed

12 Documentation Pages With Dead Links

Channels, install guides, plugin SDK references, and provider docs — all had anchors that pointed nowhere

The Links That Led Nowhere

If you tried to follow an internal link in OpenClaw's English documentation over the past few weeks, there was a decent chance you landed on a broken anchor. The Feishu channel guide had seven image references pointing to relative paths that no longer resolved. The Qwen provider page linked to /providers/modelstudio — a URL that doesn't exist. The correct path is /providers/qwen_modelstudio.

Across the install guides, security reference, FAQ, plugin SDK docs, and dashboard guide, anchor targets were simply missing. Sections that other pages linked to had no corresponding <a id="..."> tag. The links rendered fine — blue, underlined, clickable — but clicking them scrolled to the top of the page instead of the intended section.

The affected pages span the full breadth of the docs: the Groups channel guide, the gateway security index, the installer and Podman setup pages, both plugin SDK references, and the web dashboard guide. Not a single corner of the documentation was untouched.

The Audit Tool Was Blind

Localized docs contaminated validation. A circular import froze the test runner. The safety net had holes.

Why Nobody Caught It Sooner

OpenClaw has a link audit script — docs-link-audit.mjs — that is supposed to crawl the documentation tree and flag broken internal references. It should have caught every one of these failures. It didn't, because it had its own problems.

The script was running against the full docs directory, which includes machine-generated localized translations. These translated pages introduced anchors, paths, and cross-references that don't exist in the English source. The validator couldn't distinguish between a broken English link and a valid localized one. False positives drowned out real failures. Eventually, the noise made the tool useless.

Making it worse: a circular import in the Tlon channel's configuration schema was crashing the test suite. The config schema imported from plugin-sdk/core, which triggered a bundled metadata scan, which loaded the Tlon config schema again. An infinite loop. The Vitest worker would hang indefinitely, and since the link audit tests lived in the same suite, they never ran.

The documentation could accumulate broken links for weeks and the CI pipeline would never notice.

The Fix: Isolate, Sanitize, Narrow

English-only validation, a single narrowed import, and 12 pages with new anchor targets

What Changed

The audit script now creates a temporary docs directory, strips out all localized subdirectories, and sanitizes the configuration file to English-only content before running validation. Localized pages can no longer mask or distort English-source checks.

The circular import was resolved by narrowing the Tlon config schema's import path. Instead of pulling from the broad plugin-sdk/core barrel export, it now imports buildChannelConfigSchema directly from plugin-sdk/channel-config-schema. The dependency chain stops there. The test suite runs again.

With the tooling restored, the actual docs fixes are straightforward: missing anchor IDs added to 10 pages, image paths corrected in the Feishu guide from relative to absolute references, and the Qwen Model Studio cross-reference updated to the correct URL. New unit tests cover the sanitization logic, temporary directory handling, and cleanup.

Pages That Were Fixed

channels/feishu.md

7 image paths corrected from relative to absolute

channels/groups.md

2 missing anchor IDs added

gateway/configuration-reference.md

1 missing anchor ID added

gateway/security/index.md

1 missing anchor ID added

help/faq.md

Anchor tag repositioned, link label added

install/installer.md

3 missing anchor IDs added

install/podman.md

1 missing anchor ID added

plugins/sdk-channel-plugins.md

1 missing anchor ID added

plugins/sdk-provider-plugins.md

2 missing anchor IDs added

providers/qwen.md

2 broken cross-references corrected

web/dashboard.md

1 missing anchor ID added

The Bigger Problem

Broken docs links are mundane. Every project has them. What makes this interesting is the failure mode: OpenClaw had a tool specifically designed to prevent this, and that tool was silently failing. The localization layer — a feature — was actively undermining the quality check. And a circular import in an unrelated channel extension was taking down the entire test suite that hosted the link audit tests.

This is the kind of compound failure that open-source projects accumulate quietly. No single change broke the docs. No single change broke the audit tool. The localization feature was added months ago. The Tlon import cycle could have existed since the channel was first integrated. The broken links accumulated one page at a time, each one individually too small to notice, all of them collectively making the documentation unreliable for anyone trying to self-host.

The fix is solid. The tooling now works. The question is how long the gap lasted — and how many users hit a dead link and just gave up.

Documentation that actually works.

DeployClaw keeps your OpenClaw instance updated automatically — including the docs fixes you never have to chase down yourself.

DeployClaw News · Reported by Carlos Simpson

DeployClaw hosts OpenClaw instances and ships upstream fixes automatically. This publication covers development independently.