## What
Fixes three classes of invalid inline HTML in hand-written docs, all of
which
render incorrectly (or only render by accident) today. Found via a
systematic,
markdown-aware audit of every `.md` under `docs/` (ignores code blocks,
inline
code, comments, and autolinks), so this is a complete sweep of the
hand-written
surface, not a spot fix.
## Changes
1. **`<kdb>` → `<kbd>` (72 tags).** The keyboard element is `<kbd>`;
`<kdb>` is
a typo that is not a real element, so renderers drop/mangle it and the
keystrokes lose their styling. Corrected across the IDE access guides
(`cursor.md`, `windsurf.md`, `antigravity.md`). The correct `<kbd>` is
already used in the JetBrains Gateway guide.
2. **Unclosed `<div class="tabs">` in `docs/admin/users/idp-sync.md`.**
The
"Provider-Specific Guides" section opened a `.tabs` container (rendered
as
the `DocsTabs` component) that was never closed, so the wrapper leaked
over
the rest of the page. Added the missing `</div>` before `## Next Steps`,
matching the three other tab sections in the same file.
3. **`<Image>` → `<img>` (6 tags).** `<Image>` is not a registered docs
component — it renders only because the HTML5 parser rewrites the legacy
`<image>` tag to `<img>`. Converted to lowercase `<img>` for correctness
and
clarity; rendering is unchanged. (`organizations.md`, `idp-sync.md`,
`add-envbuilder.md`.)
## Scope / what is intentionally not here
- **Generated reference docs.** The audit also found swallowed
placeholders in
generated pages (`<server>` in `reference/api/{chats,schemas}.md`;
`<glob>`/`<host>` in `agent-firewall`; `<region>` in `server`). Those
are
fixed at the generator source (codersdk comments / CLI flag help) and
tracked
in DOCS-551.
- **`<b>Resource<b>`** in the generated audit-logs table was fixed
separately in
#27293 (merged) and is not duplicated here.
- **`<children></children>`** is an intentional, renderer-implemented
docs
component (child-page card grid) with no HTML equivalent, so it is left
as-is.
It is well-formed; a follow-up CI checker will still verify its
open/close
balance.
A follow-up adds CI enforcement so invalid inline HTML can't regress.
<details>
<summary>Verification</summary>
Run against the changed files:
- `markdownlint-cli2` — 0 errors
- `markdown-table-formatter --check` — no changes needed
- `typos --config .github/workflows/typos.toml` — clean
- Re-running the audit scanner: hand-written `unclosed`, `<kdb>`, and
capitalized-component findings all drop to 0 (only the generated-doc
placeholders tracked in DOCS-551 remain).
</details>
## Linear
DOCS-581:
https://linear.app/codercom/issue/DOCS-581/audit-and-fix-all-invalid-html-across-the-docs
> This PR was created with AI assistance (Coder Agents).
2.1 KiB
Cursor
Cursor is a modern IDE built on top of VS Code with enhanced AI capabilities.
Follow this guide to use Cursor to access your Coder workspaces.
If your team uses Cursor regularly, ask your Coder administrator to add a Cursor module to your template.
Install Cursor
Cursor can connect to a Coder workspace using the Coder extension:
-
Install Cursor on your local machine.
-
Open Cursor and log in or create a Cursor account if you don't have one already.
Install the Coder extension
-
You can install the Coder extension through the Marketplace built in to Cursor or manually.
Extension Marketplace
-
Search for Coder from the Extensions Pane and select Install.
-
Coder Remote uses the Remote - SSH extension to connect.
You can find it in the Extension Pack tab of the Coder extension.
Manually
-
Download the latest vscode-coder extension
.vsixfile. -
Drag the
.vsixfile into the extensions pane of Cursor.Alternatively:
-
Open the Command Palette (Ctrl+Shift+P or Cmd+Shift+P) and search for
vsix. -
Select Extensions: Install from VSIX and select the vscode-coder extension you downloaded.
-
-
-
Coder Remote uses the Remote - SSH extension to connect.
You can find it in the Extension Pack tab of the Coder extension.
Open a workspace in Cursor
-
From the Cursor Command Palette (Ctrl+Shift+P or Cmd+Shift+P), enter
coderand select Coder: Login. -
Follow the prompts to login and copy your session token.
Paste the session token in the Paste your API key box in Cursor.
-
Select Open Workspace or use the Command Palette to run Coder: Open Workspace.