In-UI help system
The UI surfaces inline help via <Help>, a Svelte component that pairs each helpable concept in the UI with exactly one page in these docs.
How it works
- Each helpable page under
./docs/declareshelp_topic: <id>in its YAML frontmatter and ahelp_summary:multiline string with the short prose surfaced in the UI. scripts/extract-help-topics.mjswalks./docs/**/*.md, reads frontmatter, and writes./src/web/generated/help-topics.json— a map{ [topicId]: { title, summary, href } }.- The UI imports that JSON bundle and
<Help topic="lever.reviewer_mode" />looks up the topic and renders a?icon. - Clicking
?opens a modal with the summary and an "Open full docs ↗" link pointing to the same page on this site. scripts/check-help-sync.mjsruns in CI; it grep-scans./src/web/**fortopic="..."references and fails the build if any id is missing from the generated map.
Using it
svelte
<Help topic="lever.reviewer_mode" />
<!-- Inline variant with a visible label -->
<Help topic="lever.reviewer_mode" variant="inline" label="Reviewer mode" />A missing topic renders a ? in warning color and surfaces the missing-id message in the modal — you see it at dev time, and CI fails before merge.
Naming conventions
| Prefix | Meaning |
|---|---|
lever.<name> | A named lever. |
subsystem.<name> | One of the ./src/* subsystems. |
web.<page> | A web UI surface. |
guide.<topic> | A concept introduced in the guide section. |
See the scripts/extract-help-topics.mjs source for validation rules.