Minimal reproduction for HyperFrames issue: the canonical SKILL.md "Video and Audio" two-element pattern triggers a StaticGuard invalid-contract warning when both <video> and <audio> use the same src.
npx hyperframes init . --non-interactive --example blank
# 5-second muxed test clip (blue 1920x1080 + 440 Hz sine), generated for determinism:
ffmpeg -y -f lavfi -i "color=c=blue:s=1920x1080:r=30:d=5" \
-f lavfi -i "sine=f=440:duration=5" \
-c:v libx264 -pix_fmt yuv420p -c:a aac -shortest video.mp4Then index.html was edited to drop the placeholder comment and paste the canonical
<video> + <audio> pair from skills/hyperframes/SKILL.md §"Video and Audio"
verbatim, with src="video.mp4" on both elements.
npx hyperframes validateExpected output (clean):
◆ Validating my-video in headless Chrome
◇ No console errors
Actual output:
◆ Validating my-video in headless Chrome
[StaticGuard] Invalid HyperFrame contract: <video id="el-v"> declares data-has-audio="true" but also has muted. Studio preview will silence the video audio.
◇ No console errors
Adding data-has-audio="false" to the <video> element silences the warning. The
attribute is documented in packages/cli/src/docs/data-attributes.md (and
npx hyperframes docs data-attributes) but not in SKILL.md, so an agent following
the skill canon literally cannot discover it.
hyperframes0.4.41- Windows 11, Node 20.x
See linked issue for full analysis and suggested fixes.