Repository navigation
Make first-shot designs clickable, the cheapest way the host offers - #224
Conversation
…l-design's critical rules Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Staging Workspace Sync SuccessfulSuccessfully synced changes to staging workspace Sync Details |
…ke, Pret Button and arrow handler in the example, single-card builds, playbook paragraph after the framing Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…d the cheapest way the host offers Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
lucaslyl
left a comment
There was a problem hiding this comment.
[Claude Code 🤖]
This review covers the API names, paths, anchors and cross-links in the four changed skill files against boxel main and boxel-skills main, plus the UI-snippet check (the new section carries template snippets, so Burcu's boxel-ui-guidelines procedure was run on them). It did not assess the eval numbers in the PR body.
Bottom line: no blocking issues. Every API and link named checks out; three non-blocking wording asks.
Non-blocking:
critical-rules.mdL82:'edit'opens the edit view in a new stack item; the text reads as if a form renders inside the row.critical-rules.mdL88: the@context.canInvokegate has no call form, and the sibling skill's example hides on=== false.critical-rules.mdL75: the section names "a button" but not the Pret UI control to use for it.
Verified: viewCard signature and openCardInRightMostStack (packages/base/card-api.gts ViewCardFn, packages/host/app/components/operator-mode/interact-submode.gts); Format includes edit (packages/runtime-common/formats.ts); operations() (packages/base/operations.ts); delegated-rendering.md → Using the viewCard API exists on boxel-skills main; card-operations-authoring/SKILL.md exists and is linked correctly from boxel-design/references/; the design-playbook.md and glossary.md anchors resolve.
… and show the canInvoke call Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Why
A first-shot design draws controls that do nothing: rows with a chevron or a hover cue, tabs, filters and buttons with no handler, and a main action with no way to run it. The host already offers cheap ways to make each of them work, and main documents the API (
boxel/references/delegated-rendering.md→ Using the viewCard API), but no rule tells the builder to use them in the first build.What changes
One section in
skills/boxel-design/references/critical-rules.md, First-shot designs are clickable. It applies to the first build only; later builds wire controls fully.<@fields.x />, which the host opens;<a href>, never an invented one;this.args.viewCard?.(card, 'isolated' | 'edit', { openCardInRightMostStack: true }), with the row drawn as clickable only when@viewCardis there;@trackedvalue over rows already on screen.@operationthroughoperations(), and the only@operationin the first build. Its control is hidden only when@context.canInvokeanswersfalse.Button(IconButtonfor icon-only). No drawer or dialog inside the card, and no "coming soon" buttons.Also one sentence in the design-playbook's Stage 1 pointing to the rule, the
boxel-design/SKILL.mdreference line, and one glossary entry.Testing
claude plugin eval, headless and text-only, 2 runs each on main and on this branch:viewCard, guarded by@viewCardAfter naming Pret UI's
Button, the edit view's stack item and thecanInvokecall, the first four cases re-ran at 2/2, 1/2, 2/2 and 2/2. The failing branch runs followed the rule (an@operationfor attendance; a disabled Book button with its note). The judges marked them down, but I have not confirmed why. The last two cases check that the rule does not reach past its purpose: no invented write workflow on a read-only site, and a given URL used as is.No new conflicts with open PRs touching these files (checked with
git merge-tree).Not verified
🤖 Generated with Claude Code