Repository navigation
The four-pillar roadmap: library, templates, experience metrics, versions, walkthroughs, studio, and the experiment - #5
Merged
Conversation
…at read them The level projection's path-to-next-level sentences, the plan's blocked reasons, the measurement outcome, the packet's blocked note and the retained-fixture reasons were Vietnamese while every other card line is English. Translated, with the four pair suites that match on them updated to the same words. Test inputs (alert texts, a prose mustNotMatch, the context quote pair) translated so each pair still tests what it named. Left as is: "Tiếng Việt" in the focus-visible fixtures and the run clip, which is a language picker naming the language in its own words. Not touched: uxcli.context.json and test/fixtures/crm/ — signed quotes and a fixture product, a decision for the owner. level, model, report and run pairs still cannot run here: they read .claude/specs/design/uxcli-data-v0.1/, which is gitignored. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011TUCUpbzmTpBE6ND7eHfzx
… the code now says The gate's own-pages check failed on main: the map's `na` flag set --dim #6b7380 on --well #eef1f5, 4.22:1. --dim is now #5f6774, which keeps the hue and holds 4.8:1 or better on every light surface the page paints (white, well, bg, canvas, accent-soft). Dark theme untouched. The computed sentences in examples/crm/ and test/fixtures/runs/ (blocked notes, plan reasons, level path, measurement outcomes, retained-fixture reasons) are rewritten with the same English the code prints since the previous commit, so run and level pairs reproduce the example again. Authored text (journeys, insights, actors) is untouched. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011TUCUpbzmTpBE6ND7eHfzx
…searches the field uxcli template [show <id> | apply <id> [dir]] with three templates — workspace (CRMs, admin, back-offices), shop, landing. Each carries the screens such products usually have and the lens each is read against, the journeys worth walking first with what to watch on them, the questions research must answer about the people and the field, and the sources research starts from. A template states no fact about anyone's users: every actor line and research line must end in a question mark, and `apply` writes the questions into an actor's unknowns[] and nothing else, creating only. references/research.md is the protocol: start from the template, look in the order the evidence can carry (the project's own data, regulations, published research, design systems, products people already use, community practice as folklore), come back with the field's words, its rules, the work, the conventions and the open questions, and write each down as an insight with its source. Gate: template-pairs — every template parses, fits its schema and its brief; a fact for a question, a journey through a missing screen or actor, an unknown lens and an unknown key are refused; apply creates one schema-valid actor per actor, a second apply and an actor somebody wrote are left byte for byte. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011TUCUpbzmTpBE6ND7eHfzx
…uxcli is now Four viewpoint pools researched from the source repositories of public design systems and the W3C, every quote fetched in the session and checked verbatim against the raw file: colour (10 — WCAG 1.4.1 and 1.4.11, GOV.UK, USWDS, Carbon, Primer, Polaris), writing and microcopy (10 — GOV.UK, Carbon, Primer, Polaris, Mailchimp), data display (12 — Primer, GOV.UK, USWDS, Carbon, Polaris, W3C WAI tables) and forms (12 — GOV.UK, USWDS, Primer, WCAG 1.3.5). Where sources disagree the pool records both and the check tests only what they agree on; numbers a source does not give are labelled in exceptions as uxcli's starting point. build-lenses.mjs folds them into the six lenses: 167 viewpoints, lenses from 39 to 63 picks. docs/lenses/README.md says how they were made. VISION, PRODUCT, the README's opening and ROADMAP are rewritten around the owner's direction of 2026-10-03: an agent that designs like a designer who did the research — knowledge, process, evidence and versions, and experience validation at the centre — keeping the line between what is measured (may block) and what is believed (may only inform). The repository's own installed skill is refreshed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011TUCUpbzmTpBE6ND7eHfzx
…a walk
`uxcli experience [dir|run] [--page] [--json]` reads each journey's
last run packet and reports, per workflow (a journey's workflows are
alternatives, so each is totalled on its own): steps, clicks, fields
and characters typed, scrolls, each step's settle time in Nielsen's
bands (100 ms / 1 s / 10 s), and a keystroke-level estimate of the time
a practised user needs (Card, Moran & Newell; each scroll counted as
one pointing operator, said so). It reports a wait past one second, a
control the step needs that is below the fold, an answer typed twice in
one workflow, and a step that did not reach its state — each a finding
with the source of its threshold, never a fail. With an older walk on
disk it names what moved and which findings came and went.
--page writes .uxcli/experience/index.html: one card per step with the
screenshot it was taken at and each finding pinned where the browser
found the element, a dashed bar at the bottom edge when it was below
the fold.
The runner records a typed value as { chars, value: sha1_8 } — enough
to estimate typing and to see an answer asked for twice, never the
value itself.
On the CRM fixture, walked live, it reports the call button two
scrolls away at 390x844 (the defect C-001 is signed against) and the
server-error path that clears the email the person typed.
Gate: experience-pairs — a clean walk is silent; a 2.4 s and a 12 s
wait, a button two scrolls down, an email asked for again, a step that
does not arrive and an extra step each speak; a second workflow is not
added to the first; the comparison names what moved both ways; the
example project's walk reports C-001's button; the page pins the
finding on its step's screenshot. Skill, README and CHANGELOG updated.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011TUCUpbzmTpBE6ND7eHfzx
…two, propose a redesign Recovery. After a step the server answers with an error (4xx, 5xx or an intercepted failure), `uxcli experience` reports a typed answer the page no longer holds — a password excepted, the security convention — and an error nothing on the page announced in text. Consistency: within a workflow, a navigation landmark whose shared items change order (3.2.3). The runner records, per typed field, whether it still held the value afterwards and whether it is a password (never the value), the visible announcement roles after each action, and each navigation landmark's items; the observer reads input type and landmarks. Walked live on the CRM fixture it now reports exactly the planted defect on the server-error path (the email is cleared) and nothing on the wrong-password path. Versions. `uxcli version save <journey> <name> [--note --run --proposal]` names one walk: .uxcli/versions/<journey>/<name>.json, one file per version, created and never rewritten, schema version.schema.json; the run it names is pinned against pruning. `uxcli experience --journey=<id> --from=<a> --to=<b> [--page]` compares two versions step by step, with both pictures of each step side by side. Proposals take `kind: redesign`, citing the walk in evidence[]; references/versions.md is the loop. The CRM example carries v1 and v2. Gate: experience-pairs (30 checks) gains recovery and consistency pairs; version-pairs (22) — refused shapes, create-only save, a walk of another journey or of none refused, pruning keeps only what a version names, the example's v1→v2 comparison and its side-by-side page. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011TUCUpbzmTpBE6ND7eHfzx
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Eleven commits on top of
main(5fffe80). They get the gate passing again and implement the roadmap set on 2026-10-03: knowledge, process, evidence and versions, and experience validation at the centre. The last part is an experiment that scores agents on the walk.Stabilise
main.Knowledge
uxcli templateforworkspace,shop,landing,contentandmobile-app. Every actor line and research line is a question.applyonly ever creates files and records which template was used.context shownow names the template, the lens for each kind of screen, and which lens each screen was reviewed against. It also shows, per screen, whether it has been drawn and picked yet.references/research.md: how to research a product's field before designing for it.Experience validation
uxcli experience [--page]reports, per workflow:Every item is a finding with the source of its threshold, pinned on the step's screenshot.
Observer change: the observer now measures the first visible change after an action. If nothing has changed, it waits up to 2.5 s for one instead of calling the page settled at 0 ms. During a wait longer than 1 s it records whether a progress signal was shown.
Privacy: a typed value is stored only as its length and hash. Schemas
traceandexperienceenforce this.Evidence and versions
uxcli version save <journey> <name>names one walk. It creates a file and never rewrites one, and the walk is pinned so pruning keeps it.uxcli experience --from=<a> --to=<b>compares two versions step by step.redesign, citing the walk as evidence.Walkthrough
uxcli walkthrough <journey> [--as=<actor>] | checkruns the four questions of Wharton, Rieman, Lewis & Polson (1994) at every step:checkrefuses a yes that the walk contradicts.Studio
uxcli studio [--serve] [--shot]shows the project as a board laid out like a design file:redesignproposal. The page refreshes as files change and serves nothing outside.uxcli/.The experiment
Ten fresh Sonnet sessions per arm, scored with one instrument:
uxcli run <url>now names the journey a screen belongs to and points tocontext show.context showstarted printingBEFORE YOU BUILD.Validation
uxcli gatepasses locally.template,experience,version,walkthrough,studio(this one also runs the page probes on the board), plus additions tobrief.Known limits
🤖 Generated with Claude Code
https://claude.ai/code/session_011TUCUpbzmTpBE6ND7eHfzx