User guide usability practices
This note is the research record for the usability pass. Each practice names a source and the change on this site.
Human practices
- Task-first path. Say what the page is, who it is for, and the next step before the detail. Source: Diátaxis. Site: every guide page opens with a page-orientation block (title, description, next link). The landing page leads with the user guide.
- Lead with the answer. Put the conclusion in the first lines. Source: Nielsen Norman Group, Inverted Pyramid. Site: landing hero states what SHAFT is and points at the guide; orientation blocks repeat the page description first.
- Scannable headings. Short sections with real headings, not walls of prose. Source: Nielsen Norman Group, How Users Read on the Web. Site: existing heading outline kept; dependency and reporting facts are separate terms in definition lists.
- One term per concept. Do not rename the product or the engine mid-page. Source: Microsoft Writing Style Guide, Use simple words and sentences. Site: pages say SHAFT for the framework and
shaft-enginefor the Maven artifact. The orientation line uses that pair. - Examples a reader can copy. Source: Google developer documentation style guide, Code samples. Site: the docs quality check still requires a fenced sample on every public page. Boundary pages keep their Java and XML samples next to the lists.
- Reflow on a phone. Two-dimensional scrolling is for real data tables, not prose. Source: WCAG 2.2, Understanding 1.4.10 Reflow. Site: issue #1085 lists are definition lists. Property matrices stay in a named scroll region because they are columnar data.
- One primary action. Source: Nielsen Norman Group, Visual Hierarchy. Site: the landing hero states one path into the guide, “Read the user guide”, and keeps a single filled button for creating a project.
- Link text says where it goes. Source: WCAG 2.2, Understanding 2.4.4 Link Purpose. Site: the existing content check rejects “click here”. Orientation links use the next page title.
- Chunk related facts. Source: Nielsen Norman Group, Chunking. Site: each former table row is one term and one definition, not a stretched row.
- Stay inside one design language. Source: Nielsen Norman Group, Maintain Consistency and Adhere to Standards. Site: buttons, type, and color stay on the existing landing and Infima tokens. No new palette.
Agent practices
- A small
llms.txtindex. Source: llms.txt. Site:scripts/build-llms-txt.mjswritesstatic/llms.txtduring the production build. - A Markdown form of each page. Source: llms.txt, Markdown versions. Site: the same script writes
static/md/<route>.mdand the index links there. - Keep the index to one fetch. Source: llms.txt. Site: descriptions in the index are capped at 140 characters. Full text stays in
llms-full.txtand the per-page Markdown files. - Same-origin links. Source: llms.txt. Site: index URLs use the
siteUrlandbaseUrlfromdocusaurus.config.js. - An in-page pointer. Source: llms.txt. Site: the orientation block links
/llms.txtand the Markdown URL for that page. - Sections that do not depend on “above”. Source: Google developer documentation style guide, Cross-references. Site: the IntelliJ upgrade step names the prerequisites sequence instead of “see above”. The pointer tells agents to cite heading anchors.
- Stable heading anchors. Source: Docusaurus, Heading IDs. Site: the restructured sections keep the previous heading text, so the existing ids remain.
- Front matter a tool can read. Source: Docusaurus Markdown front matter. Site: the index uses
title,description, and slug from front matter. The orientation block prints the same description. - Text, not pictures, carries the facts. Source: WCAG 2.2, Understanding 1.1.1 Non-text Content. Site: the Markdown export is the docs-loader text, and the landing evidence images keep text alternatives.
- State the canonical HTML URL inside the Markdown file. Source: llms.txt. Site: each generated Markdown file starts with
Canonical HTML:andGuide index:.
Scroll-region exception
These pages were restructured so the named lists do not scroll horizontally at 390px, including the reporting quick reference at 1440px:
/docs/start/upgrade/reference(methods that requireshaft-visual, functionality that remains inshaft-engine, BrowserStack SDK rows)/docs/start/upgrade/run(missing-provider troubleshooting)/docs/reference/reporting(All Reporting Properties)
Other tables, including the properties catalog, stay in .table-scroll. They are columnar data. The wrapper is a named, keyboard-reachable region from the earlier wide-table work.