Repository navigation
user-interface: offer to install and onboard a better design tool #6449
Description
Problem
/user-interface:design routes each concern to the best installed tool. When none is installed it answers from its own guidance and may only name a free tool (plugins/user-interface/skills/design/SKILL.md, "Combine routes and settle conflicts"). The deferred routes added in #6429 (Google Stitch MCP, Pencil, Subframe, Paper, Brilliant) need an install and a sign-in, so as things stand a user never reaches them.
Proposed
When a higher-ranked route for the concern is not installed, the skill offers it: the install command for this platform, at local scope, and the sign-in or key step its account needs. It installs only after the user says yes, and otherwise continues with the best present route.
Open questions, settled by the owner on 2026-10-12 (recorded 2026-10-13):
- Where the install command and sign-in step live → the row's existing
pointer(vendor setup page); no restated command in the skill body. - Whether the offer covers
paidrows → only when no free row covers the concern (already the rule atSKILL.md:81-83). - How a row moves from
deferredtoconfirmed→ after a recorded end-to-end onboarding test, withas_ofupdated.
Acceptance
- The offer appears only for an uninstalled, higher-ranked, non-deferred row, and never installs without the user's yes.
plugins/user-interface/skills/design/SKILL.mdoffers a route only when its row is uninstalled, higher-ranked and non-deferred, and a paid row only when no free row covers the concern; the install and sign-in step comes from the row'spointer; on decline the skill continues with the best present route. Check: the PR's CI runs the skill-quality check on the changed SKILL.md and it passes. - Evals cover offer, decline and accept: three cases in
plugins/user-interface/skills/design/evals/evals.json, using a fixture routing row markedconfirmed(every installable account-bound row on main isdeferred). The cases are written, not run. Check:plugins/skill-quality/scripts/check-evals-quality.shpasses. - A
.changes/user-interface/fragment exists. Check:scripts/new-changelog-fragment.sh, and the PR's CI runsscripts/check-changelog-fragments.sh --checkand it passes. - The lane does not fetch vendor setup pages: they are off its host list.
Split to #8987: at least one account-bound route onboarded end to end and marked confirmed, and the three evals run (paid).
Activity
github-actions commentedon Oct 5, 2026
Thanks for the report. Automated triage handed this issue to a maintainer.
Automated triage. A maintainer reviews it.
kyle-sexton commentedon Oct 13, 2026
Decision recorded. The owner approved applying independently verified recommendations on 2026-10-12.
Basis: .claude/rules/skill-bodies-state-current-rules.md (point at live upstream source); plugins/user-interface/reference/routing.json note ('every other row does [carry a pointer]')
Basis: plugins/user-interface/skills/design/SKILL.md 'Combine routes and settle conflicts' (cited in issue); judgment
Basis: plugins/user-interface/reference/routing.json (status, as_of fields); issue acceptance; judgment
Wants /user-interface:design to offer installing a higher-ranked uninstalled route, with sign-in, only on the user's yes, and to onboard one account-bound route end to end. The account-bound rows in routing.json are all
deferred, while the acceptance limits the offer to non-deferred rows, so nothing is offerable until one row is onboarded and confirmed.Verification notes:
Verified by an independent fresh-context check (confirmed, risk low): gh issue view 6449 (open, no owner decision); origin/main plugins/user-interface/reference/routing.json: version 2; every installable account-bound row (figma, subframe, supernova, stitch, magic, pencil, paper, brilliant, etc.) status deferred, with pointer and as_of 2026-10-04; origin/main design/SKILL.md:62-68 (installed, not deferred, paid only when no free row); docs/conventions/routing-as-data/README.md:61-62: version changes only when the row contract changes - assumption true; a new command field would be a contract change, which supports Q1
Admission to an agent lane stays with the work-class rules and owner ratification.