autonomous-ai / web
Build and verify interactive HTML experiences in Web Studio's live, sandboxed preview.
Web Studio
index.html is the entry point. Local JS, CSS, images and ES modules work through the shared viewer;
use relative URLs. No bundler is required. Prefer local assets for a reliable first open.
Field's starter uses WebGL2 with a Canvas 2D fallback. Its geometry, palette and controls are all
editable. Keep GPU resources and geometry buffers reusable; coalesce continuous updates in rAF.
Pause animation when hidden and respect reduced motion. Controls must still work when paused.
A new visual direction can replace the starter entirely when that serves the user's request.
Verify the experience
Keep proof.json aligned with the current page. Each action names a CSS selector, followed byclick: true, fill or select; assertions use exact text orattribute: {"name":"aria-pressed","value":"true"}. Include a state change and its meaningful result.
node "$WEB_SKILLS/web/scripts/screenshot.mjs" "$HARNESS_WORKSPACE/index.html"
node "$WEB_SKILLS/web/scripts/perf.mjs" "$HARNESS_WORKSPACE/index.html"The proof runs the real sandboxed HTTP viewer, checks the actions and browser errors, saves.harness/last.png and a dependency-hashed browser-proof.json, and refreshes the verdict.
Inspect the image and test a narrow viewport as well as desktop.
The performance probe drives those controls while measuring rAF delays and long tasks, rather than
measuring an idle page. Target ≥55 fps and <2% slow frames. Record the hardware/renderer and dataset;
a software WebGL renderer is not a measurement of the user's GPU. PLAYWRIGHT_CHANNEL=chrome can
measure installed Chrome. Do not label an unmeasured or failing page “60 fps.”
Helpers need Playwright plus Chromium, installed in the shared isolated-web-viewer package or addressed byPLAYWRIGHT_MODULE (absolute path to playwright/index.mjs). Missing tooling is a failed proof,
not permission to report success. The preview itself needs only Node 20+.