Skip to content

TDD 0071: /ux-author skill + ux-reviewer critique agent - #196

Merged
cahenesy merged 5 commits into
masterfrom
build/20261006-220142/0071-ux-author-skill
Oct 8, 2026
Merged

cahenesy merged 5 commits into
masterfrom
build/20261006-220142/0071-ux-author-skill

Conversation

@cahenesy

@cahenesy cahenesy commented Oct 7, 2026

Copy link
Copy Markdown
Owner

Implements TDD 0071: the /ux-author skill and its independent ux-reviewer critique agent (PRD FR-90–FR-100, FR-22, FR-79, FR-81, FR-86, FR-87, NFR-1, NFR-3; ADR 0017). Plugin 3.52.0 → 3.53.0.

Stacked on #194 (TDD 0070). Merge #194 first; with auto-delete on, this PR retargets to master.

What it adds

  • skills/ux-author/SKILL.md (steps 0–11):
    • resume and FR-86 checks (the tl:fr86-check block is byte-identical to the other skills');
    • tl:ux-preflight, which runs the merged-PRD check and the delta, prints the no-UI line, then shows a draft screen plan first;
    • the interview and rubric, applying /prd-author's rules by reference;
    • delegate discovery by role: design, design-system, critique, accessibility; you pick when more than one fits;
    • a design system: reuse the merged tokens.css, derive it from code, or establish it with an ADR;
    • optional live capture (reference only), then mocks built by read-merge-write, with tl:ux-validate and tl:ux-render given explicit screen ids;
    • an in-session review loop, then a fresh-worker critique;
    • a docs/ux/<slug> PR (never merged) whose body lists assumptions, the critique, delegates and fidelity, requirement gaps, approved screen sets and screenshots.
  • agents/ux-reviewer.md: validates first, computes unmapped [UI] ids with tl_ux_delta, treats delegates as self-reported, writes its report to the dispatched path, and ends UX_REVIEW: PASS|BLOCK.
  • README /ux-author subsection; plugin.json description.
  • ux-author is added to the FR-81 harness-language scan and the FR-86 parent-check eval.

Gates

Gate Result
test-first PASS: test(failing) 19c1b88 precedes feat ef85e7e
ci-checks PASS: 14 suites, 1063 passed, 0 failed
runtime-verify PASS: obs 1–10 driven mechanically. obs 11 is a scripted live /ux-author run in a scratch repo (degraded, no-delegate path, skip-git): real-Chrome render 6/6, index.json with delegates: [] and fidelity: mid, design-system ADR + tokens.css, all PR-body sections, PRD unchanged. Its critique was dispatched by the parent and returned UX_REVIEW: PASS. obs 12: the critique on a fixture with no screen for FR-2 returned UX_REVIEW: BLOCK unmapped — FR-2
review PASS (security lens): no injection path; all 9 skill-text ambiguities non-blocking

Deviations (accepted in review)

  • tests/implement-gate.test.sh registers the new eval, and releases.json gets the 3.53.0 entry. Both files are outside the declared Touched files.
  • The preflight calls _tl_integration_ref from verdicts.sh, which has no public wrapper.
  • The test harness's no-browser PATH gained base64 after the test(failing) commit. No assertion changed.

Non-blocking follow-ups (candidate gap-closure)

  • A2: step 8 should list the index.json field values: fidelity, baseline strings, state shapes, flow, and the repo-relative adr. Validate already rejects invalid values; this fixes semantic mislabels.
  • Step 11 order: delete the critique report file after writing the PR body, which embeds the critique.
  • Integration ref: add a public tl_ux_integration_ref wrapper (fixes A1 and the underscore call).
  • Quoting: quote <url> in the tl_ux_capture template.
  • PR body: create it with gh pr create --body-file, since it embeds untrusted text. /tdd-author has the same gap.
  • ux-reviewer nits: it must run from the repo root, and it has no Write tool, so it writes the report through Bash.
  • Wording polish for A3–A8.

🤖 Generated with Claude Code

https://claude.ai/code/session_01NpGG21Y2VGGhTQaFr4oshB

cahenesy and others added 5 commits October 7, 2026 10:42
…1/FR-86 scans

tests/ux-author-skill.test.sh extracts tl:ux-preflight / ux-validate /
ux-render from skills/ux-author/SKILL.md and runs them under env -i in temp
repos (obs 1-3, 3b, 6-9). parent-session-check NAMES and plugin-root [K]
gain ux-author. Red: the skill and agent do not exist yet.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01NpGG21Y2VGGhTQaFr4oshB
skills/ux-author/SKILL.md: steps 0-11 with the byte-identical
tl:fr86-check block and the tl:ux-preflight / ux-validate / ux-render
blocks over scripts/lib/ux.sh (TDD 0070). Interrogator and rubric rules
are read from /prd-author by reference; mocks are delegated by role with
an honest degrade. agents/ux-reviewer.md: fresh-worker critique, model
inherit, validate first, report-file last line UX_REVIEW: PASS|BLOCK.
README gains a /ux-author Workflow subsection; plugin.json description
names the phase. The eval's no-browser PATH also links base64 (the stub
browser needs it).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01NpGG21Y2VGGhTQaFr4oshB
ci-checks runs only the aggregator, so an unregistered eval never gates.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01NpGG21Y2VGGhTQaFr4oshB
Base automatically changed from build/20261006-220142/0070-ux-record-lib to master October 8, 2026 00:13
@cahenesy
cahenesy merged commit 876d92c into master Oct 8, 2026
@cahenesy
cahenesy deleted the build/20261006-220142/0071-ux-author-skill branch October 8, 2026 00:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant