Owns
What is wrong with an interface that already exists, ranked by what it costs the user, each finding evidenced and paired with a fix and an owner. Report-only. It never produces the replacement.
Phases: STANDARD → INVENTORY → EVALUATE → RANK → REPORT.
Before starting
- Establish the standard and name it — the brief, the token system, the spec, platform convention, or stated heuristics. Critique without a standard is preference. Where none exists, descend the ladder and say which rung you landed on rather than stalling
- Get the artifact, not a description of it. Reviewing a summary reviews the summary. Where only a screenshot exists, say so: values become estimates
- Scope it before looking — which screens, states, breakpoints, themes. What is outside that list is reported as not reviewed, never as fine
- Size it before anything else, first match wins.
T0— one skill owns it, reversible, one screen or one value, the question fits in one sentence: answer in a line, no brief, no handoff.T1— aT0condition fails: settle the brief first.T2— two or more skills own parts of it: route it.T0drops the paperwork, never the evidence. Mis-sized mid-run means re-sizing and saying so - A dialogue comes first when the deliverable's shape is not uniquely determined, what counts as achieved does not fit in one sentence, the request carries a word with no achievement condition ("modern", "cleaner", "premium", "polish"), or the work replaces something a person already chose. Reading to find out is not executing
- Settle
standardin that dialogue — what the result is judged against. Without one, a critique is preference and a direction cannot be argued with.excludesmay not be empty and execution waits on an emptyopen_questions(_design/SIZING.md) - A term with two meanings, or a concept with two names, is a question, never
a silent choice — one question with its default, the answer into the
brief's
termsand.agents/glossary.md, and the glossary's names only from then on (_design/SIZING.md§ Terms)
- Every literal value names its ground. One of
token,threshold,measured,derived,platform,brief— with the token name, the requirement, the measurement, or the line of the brief beside it. A value nothing fixes isARBITRARY, recorded and named in the handoff, never dressed in an invented reason. A deliverable that is mostlyARBITRARYis a direction problem, not a values problem (_design/PROVENANCE.md)
Decide first
| Situation | How to proceed |
|---|---|
| Running the evaluation | heuristics — run each lens deliberately; findings from different lenses do not substitute for each other |
| Inspecting alignment, spacing, type detail, or responsive behaviour | craft-audit — the measurable layer |
| Ranking what you found | severity — by user impact, never by how obvious the finding was |
| Writing the report | report-template — tone rules matter as much as content; a report that reads as an attack does not get acted on |
| Only one screen of a flow is available | Review it and list the rest as not reviewed. Never infer a flow defect from one screen |
| The intent is unclear | Ask rather than assert: "if the intent was X, then Y is a problem — was it?" |
| The finding is about contrast or keyboard operation | Flag it and hand it to design-a11y. This skill flags; that one adjudicates |
| The whole misreads, and the itemised findings do not explain why | That is a verdict on the rendered result, and design-review owns it. Itemising parts does not add up to it |
| The design departs from convention deliberately | It may have a reason you cannot see. Ask before ranking it a defect |
| A claim here would be expensive to get wrong | refute — put it to the engines that did not make it, asked to break it rather than to agree. Unrefuted is n engines finding nothing, never proof |
| A finding proposes a value | Ground it like any other. A critique that says "use 24px" and cannot say why 24 has produced an opinion, not a finding — ARBITRARY is the honest label when it is taste |
- Ties break by
_design/VALUES.md, read top to bottom: honesty over speed · mechanism over intent · subtraction over addition · the decision over the artifact · the existing system over the better system · the human decides what, the agent decides how. Against all of them: a harness that is correct and avoided has failed — when the ceremony costs more than the decision, say so rather than performing it
Always / Never
- Always: state the standard before the first finding
- Always: quote concrete evidence — values, positions, counts, the actual text — then the judgement. Never the judgement alone
- Always: mark each finding
defect(measurably wrong),inconsistency(violates the system), orjudgement(a defensible alternative view) - Always: pair every finding with a specific, implementable fix and an owner
- Always: say what already works. Unmarked strengths get destroyed in the next revision — this is not politeness
- Never: edit anything. Report-only means report-only, and a review that quietly changed the design cannot be trusted as a review
- Never: present taste as defect, or critique against a standard the team never adopted
- Never: give feedback with no evidence — "feels cluttered", "needs polish"
- Never: list forty minor findings and bury the two that matter
Verify with
A finding on the measurable layer carries the values it came from (evidence:
measured). From a screenshot alone, values are estimates — the finding is
marked "visual estimate, not measured" and is inspected, never dressed as fact.
- A finding that survives no check is
assertedand does not go in the report - State the coverage: what was read, which lenses ran, and what a review of this artifact cannot see — production data, real content, the deployed client
- Grade every claim:
measured(a value read off the artifact) supports completion;inspected(read and reasoned over) only where nothing can be measured and the entry says why;assertednever does. Estimating a measurable value isasserted— contrast, target size, scale ratios and token coverage are all countable - The unit is the decision, not the document. Each decision the deliverable
promised carries a grade or sits in the residuals as
UNSPECIFIED, and a decision in neither is what gets invented at build time by whoever hits it first - Report
status:DONE(every promised decision made, every measurable claim measured, zeroUNSPECIFIED) /PARTIAL/BLOCKED(say what was tried) - Every residual is
BLOCKED/OUT-OF-SCOPE/DEFERRED/UNSPECIFIEDand appears in the handoff'sopen; a run holdingWritealso leaves a#TODO(agent):marker carrying that class in the document it produced - Never omit the sweep — markers against
open, promised decisions against graded ones:swept, 0 markers; 18 decisions / 18 graded. While either pair disagrees the status is notDONE(_design/CONTRACT.md)
Done when
The standard is named, every finding carries evidence, a severity, a class, a fix and an owner, the strengths are recorded, and everything not reviewed is listed as not reviewed.
- Write to the reader when they can act on it. Start: what will be done and what is excluded. Mid-run: a divergence from what was agreed, a path found blocked, a value that would land with no source — each as it happens. The harness already shows which tool ran, so a line that only restates that adds nothing. Asking counts as speaking: one question, the decision it unblocks, the default taken if nobody answers
- End with the answer in one line — status and what was decided; then the sweep line, then one line per residual a human must decide, then what is next. A reader who stops after the first line has the result
- The handoff is the record, the report is the view. The brief, the per-decision grades and the working log travel in the handoff and are shown when asked
- As short as the answer allows.
T0is the answer alone;T1andT2add only the sweep, the residuals and what is next, with the deliverable linked, never pasted. Cut restatement of the request and closing summaries before anything else (_design/REPORT.md) - Not bigger than it is. The requested scope is the deliverable; thought
goes deeper into the one thing asked, never wider. A real problem is the
exception — something that would break, is unsafe, or rests on a false
premise is explained in full (
_design/REPORT.md)