You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
user-interface: offer to install and onboard a better design tool #6449
/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 to settle in the issue:
Where the install command and sign-in step live (a routing.json field or the row's pointer), given that skill bodies must not restate volatile upstream specifics.
Whether the offer covers paid rows, or only when no free row covers the concern.
How a row moves from deferred to confirmed once its onboarding is tested.
Acceptance
The offer appears only for an uninstalled, higher-ranked, non-deferred row, and never installs without the user's yes.
At least one account-bound route is onboarded end to end and marked confirmed.
Decision recorded. The owner approved applying independently verified recommendations on 2026-10-12.
Where do the install command and sign-in step live? → the row's existing pointer (vendor setup page)
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]')
Does the offer cover paid rows? → only when no free row covers the concern
Basis: plugins/user-interface/skills/design/SKILL.md 'Combine routes and settle conflicts' (cited in issue); judgment
How does a row move from deferred to confirmed? → after a recorded end-to-end onboarding test, with as_of updated
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:
Minor: not every account-bound row is deferred. The built-in Artifact tool row (account login) is confirmed, but it is not installable, so the record's point holds for installable rows.
Q2 already matches main: design/SKILL.md:68 says a paid row is suggested only when no free row covers the concern.
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.
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.