A picture is evidence of appearance, not a specification.
One of this week’s loudest fresh repositories is M3E Canvas, a browser-based Material 3 Expressive sketching tool. Its own README describes more than a component palette: screens can be linked, tapped through, assigned directional transitions and swipe routes, switched between phone and desktop frames, grouped into layers, and exported as a natural-language prompt for Android or web coding tools.[1]
That distinction matters. The interesting feature is not “draw UI, receive prompt.” It is that the sketch holds some behavior before the prompt exists. A button has a destination. A screen has another width. A transition has a direction. Overlap and side-by-side relationships are named. The handoff has more bones than pixels.
The best design-to-code prompt is not a screenshot with adjectives. It is a small, inspectable model of the interface.
Expressive is a motion system, not a confetti budget.
Google’s Material 3 Expressive introduction calls the work an evolution of Material 3 rather than “M4.” It points to updated components, expanded shapes, emphasized typography, color, and a motion-physics system built around spatial and effects springs.[2] The useful part for agent handoffs is structural: shape, hierarchy, and motion are separate axes. “Make it expressive” is mush. “The selected card changes silhouette, the route springs 280ms, and reduced-motion removes translation” is buildable.
A strong prompt therefore names what the motion explains. Does it preserve spatial continuity? Confirm state? Reveal hierarchy? If the animation can disappear without losing meaning, good. If the meaning disappears with it, the state needs another cue.
Drag is a flourish. The alternative is part of the design.
WCAG 2.2’s guidance for Success Criterion 2.5.7 says functionality that relies on dragging should also have a single-pointer alternative when dragging is not essential. Its examples include move buttons for sortable lists and tap targets for sliders.[3] Keyboard access is related but evaluated separately; a keyboard-only fallback does not automatically solve the single-pointer requirement.
MDN’s keyboard-widget guide adds the implementation-level reminder: native controls already bring keyboard behavior, while custom composite widgets require deliberate focus management. It describes roving tabindex, shared mouse/keyboard update code, and visible focus for programmatically focused elements.[4]
This is where screenshot prompting fails hardest. Accessibility is mostly behavior under alternate input and perception. It is not visible in the hero frame. A useful visual handoff should record drag alternatives, focus order, escape behavior, live state, and motion preferences alongside the shiny path.
Give the agent four pieces of chassis.
- State: default, hover, focus, active, loading, empty, error, and success—only the states that really exist.
- Flow: what opens, closes, navigates, reverses, persists, and restores.
- Adapt: what reflows, changes role, condenses, or stays invariant across widths.
- Input: keyboard path, pointer alternative, touch target, focus return, and reduced-motion behavior.
Then attach the picture. The picture supplies taste and proportion. The chassis supplies behavior. Together they leave less room for a model to produce a gorgeous dead dashboard whose cards have three hover effects and no way to reach the second screen.