open-design/skills/hyperframes
Tom Huang 6e473a4f77
feat(skills): teach hyperframes skill the HTML-in-Canvas API (#852)
* feat(skills): teach hyperframes skill the HTML-in-Canvas API

Vendored skill predates upstream v0.5.1, which added the drawElementImage
HTML-in-Canvas guide and the vfx-iphone-device / vfx-liquid-glass /
vfx-portal catalog blocks. Without that reference, agents asked to build
'live HTML on a 3D phone screen' compositions had no idea the API
existed and produced renders where the device screen was blank or static.

- Add references/html-in-canvas.md adapted from the upstream guide,
  with an OD-specific note about render-loop re-capture (the most
  common reason output 'looks dead' inside a generated composition).
- Cross-link the new reference from SKILL.md and add triggers for
  'html in canvas', 'drawElementImage', 'html shader', and the two
  most-requested vfx blocks.

Daemon render path is unchanged: 'npx hyperframes render' already
auto-enables --enable-features=CanvasDrawElement, and we always pull
the latest published hyperframes via npx, so no version pinning
needs to move.

* docs(skills): wait for canvas paint in hyperframes HTML-in-Canvas examples

The drawElementImage API only refreshes its element snapshot when the
canvas paints. Calling it during initial script evaluation can throw
because no snapshot exists yet, and calling it later from outside a
paint event silently reads the previous snapshot. On HyperFrames'
seek-driven renders that surfaces as a failed or stale first texture.

- Drive the basic capture example from canvas.onpaint and kick it off
  with requestPaint() instead of calling drawElementImage at script
  eval time.
- Rewrite the per-frame re-capture pattern to put drawElementImage
  inside onpaint and call requestPaint() from the render loop, so
  each frame sees a fresh snapshot rather than the previous one.
- Add a callout explaining the paint-event requirement so agents do
  not regress to the script-eval-time pattern.

Generated-By: looper 0.6.1 (runner=fixer, agent=claude-code)

* docs(skills): add vfx-portal trigger to hyperframes skill

The hyperframes skill's reference callout already names vfx-portal
alongside vfx-iphone-device and vfx-liquid-glass as effects that
should auto-load references/html-in-canvas.md, but the triggers list
only includes the other two. A prompt like "make a vfx-portal clip"
therefore misses the HTML-in-Canvas guidance the new reference adds.

- Add "vfx-portal" to triggers so the trigger surface matches the
  documented entry points.

Generated-By: looper 0.6.1 (runner=fixer, agent=claude-code)
2026-05-08 11:07:15 +08:00
..
palettes feat(media): port generation workflow onto main (#12) 2026-04-30 22:44:00 +08:00
references feat(skills): teach hyperframes skill the HTML-in-Canvas API (#852) 2026-05-08 11:07:15 +08:00
scripts feat(media): port generation workflow onto main (#12) 2026-04-30 22:44:00 +08:00
data-in-motion.md feat(media): port generation workflow onto main (#12) 2026-04-30 22:44:00 +08:00
house-style.md feat(media): port generation workflow onto main (#12) 2026-04-30 22:44:00 +08:00
patterns.md feat(media): port generation workflow onto main (#12) 2026-04-30 22:44:00 +08:00
SKILL.md feat(skills): teach hyperframes skill the HTML-in-Canvas API (#852) 2026-05-08 11:07:15 +08:00
visual-styles.md feat(media): port generation workflow onto main (#12) 2026-04-30 22:44:00 +08:00