# docshtmlcheck `docshtmlcheck` fails CI when Markdown under `docs/` contains invalid inline HTML that the documentation site's renderer silently drops or mangles. It runs as `make lint/docs-html` (part of `make lint`). ## What it catches - **Swallowed angle-bracket placeholders.** An unwrapped placeholder such as `` or `__` is parsed as an unknown HTML tag and stripped from the rendered page, so readers see broken text. Wrap placeholders in backticks so they render as inline code (see [`docs/about/contributing/documentation.md`](../../docs/about/contributing/documentation.md#placeholders-in-angle-brackets)). This also covers CLI `--help` strings and Swagger annotations, whose text is generated into `docs/reference/**`. - **Void-element end tags** such as `
`. Void elements like `
`, ``, and `
` have no end tag. - **Capitalized or unregistered component tags** such as `` or ``. The docs renderer reads a capitalized tag as a component reference and drops it unless the component is registered (only the lowercase `` directive is). Any name outside the standard HTML5 element set is reported the same way. - **Unclosed container tags**, for example a `
` that is never closed and leaks its wrapper over the rest of the page. ## How it works Each file is parsed with [goldmark](https://github.com/yuin/goldmark) and only raw-HTML nodes are inspected, so angle brackets inside fenced code blocks, inline code spans, HTML comments, and `` / `` autolinks are ignored. Each raw-HTML node is tokenized as a whole with `golang.org/x/net/html`, so a tag whose attributes wrap across lines is not torn in half. A tag whose raw name is capitalized is reported as a component reference; otherwise any name outside the standard HTML5 element set (plus the intentional `` renderer component, which is still balance-checked) is reported. Inline SVG and MathML are intentionally **not** in the allowed set (no docs page uses them); add the element to `allowedElements` in `main.go` if that changes. A finding on a generated page under `docs/reference/**` also prints a note pointing at the generator source, since edits to the generated file do not persist. ## Limitations A few gaps are accepted because no docs page hits them today: - A placeholder whose name is itself a real HTML element (``, `