Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/streamer45/streamkit/testing-web-capturenpx skills add streamer45/streamkit --skill testing-web-capturegit clone --depth 1 https://github.com/streamer45/streamkitWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00048 | $0.01676 |
| Opus 5 | $0.00024 | $0.00838 |
| Sonnet 5 | $0.00010 | $0.00335 |
| Haiku 4.5 | $0.00005 | $0.00168 |
Grade A, and why
testing-web-capture scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
- Live cast: `http://127.0.0.1:8080/cast/<target-url>` → WebM (vp9-sw). curl with `-H 'Accept: video/webm'` to grab raw stream. How it starts
The opening of the file, as written. The whole thing — 73 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Testing the web-capture gateway demo
Setup
- Go toolchain is required for the gateway (
/usr/local/go/bin/go); install from go.dev tarball if missing. - Build + deploy the servo plugin:
just build-plugin-native-servo && just copy-plugins-native.- Verify freshness:
md5sum target/plugins/release/libservo_web.so .plugins/native/servo/libservo_web.somust match and have a recent timestamp. Stale.sofiles are a known source of white frames / cross-request corruption. - skit loads plugins only at startup — restart
just skitafter copying.
- Verify freshness:
- Start backend:
just skit(127.0.0.1:4545; auth Auto disables auth on loopback, no token needed locally). - Start gateway:
cd examples/web-capture && go run ./cmd/gateway --listen :8080 --skit-url http://127.0.0.1:4545.--load-timeout-secs N/GATEWAY_LOAD_TIMEOUT_SECS(default 5) sets servo'sload_timeout_secsin both pipeline templates. It must stay below the gateway's hard-coded 8smseReadyTimeout, or cast viewers 503.- To test a non-default value, run a second gateway on another port (e.g.
--listen :8081 --load-timeout-secs 2); both can share one skit.
Endpoints
- Finite clip:
http://127.0.0.1:8080/clip/dur=20s,res=1280x720/<target-url>→ MP4 (h264-sw). - Live cast:
http://127.0.0.1:8080/cast/<target-url>→ WebM (vp9-sw). curl with-H 'Accept: video/webm'to grab raw stream. - SSRF guard blocks loopback/private targets — use public sites (streamkit.dev is dark-themed, example.com light-themed: a good high-contrast pair for leak checks).
Verifying frames (don't trust playback alone)
- Extract frames:
ffmpeg -i clip.mp4 -vf "select='eq(n,30)+eq(n,300)'" -vsync 0 f_%d.png - Live cast WebM files have no cues —
ffmpeg -ss/-sseofseeking silently returns the first frame. Extract frames withselect='eq(n,N)'full decodes instead, and beware lexicographic sorting of%d-numbered frame files. - Pixel stats with PIL: min/max grey and dark-pixel fraction distinguish blank white (min≈255), blank black/pre-paint (max≈0), and real content.
- Since the first-load gate (plugin >= 0.2.2), clips/casts should show page content from frame 0 (the node holds emission until the page is ready, capped by
load_timeout_secs, default 30s). Pre-0.2.2 builds may show all-black cold-start clips or blank lead-ins. - Since plugin >= 0.2.3, "ready" is load-complete OR ~2s after first paint — ad-heavy pages that never fire their load event no longer stall the full timeout. The gateway also caps
load_timeout_secsat 5s (GATEWAY_LOAD_TIMEOUT_SECS), so worst-case time-to-first-byte through the gateway is ~5s plus one GOP (~1s). - Some pages (e.g. streamkit.dev) may still show a single white first frame — the page's own pre-theme paint, not a gate failure.
- Testing the load-timeout expiry path via the gateway is hard: SSRF blocks local hanging servers and public "slow" endpoints (httpstat.us sleep, closed ports) fail fast rather than hang. In practice pages release via load-complete or the post-paint branch, so the expiry warn may never fire — say so rather than claiming that branch was covered.
- The gate branch that fired is visible in the skit log (plugin logs,
grep emission /tmp/skit.log):Initial page loaded; starting frame emission(load-complete),Initial page painted but load still pending after 2s; …(the >=0.2.3 post-paint branch — expect this on ad-heavy pages like cnn.com/theverge.com, ~2.2s after servo init), orPage did not finish loading within Ns; …(timeout cap).
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2d ago First seen · 73 lines · 48 tokens per session scan A de2bd9e68d3f
testing-web-capture is a skill published in the GitHub repository streamer45/streamkit (21 stars, last pushed 9d ago), licensed MPL-2.0. It adds 48 tokens to every session and 1,676 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
moq
Build live video, audio, and real-time data apps with Media over QUIC (MoQ). Use when adding live streaming, conferencing, voice AI, or real-time pub/sub to an app; when integrating the @moq/ npm packages, moq- Rust crates, or the Python/Kotlin/Swift/Go/C bindings; or when running a moq-relay server or a gateway…
qa-testing
Verify your work by actually operating the app or website you changed, instead of assuming it works. Strongly recommended whenever you build, modify, or debug a web app, website, or desktop GUI app. Drive real browsers with the agent-browser CLI and native desktop apps with the cua-driver CLI. These are installed on…
webapp-testing
Start/reuse a local app, wait for readiness, inspect rendered state/console/network, act from observed selectors, and verify with evidence.
p5js
Production pipeline for interactive and generative visual art using p5.js. Creates browser-based sketches, generative art, data visualizations, interactive experiences, 3D scenes, audio-reactive visuals, and motion graphics — exported as HTML, PNG, GIF, MP4, or SVG. Covers: 2D/3D rendering, noise and particle systems…
verify
Drive an engine app headlessly in a pty, record a video of the whole verification, and open a summary page (video + timeline + checks) with pixel open.
moli-webfetch
Fetch, inspect, crawl, and capture live, JavaScript-rendered websites with Moli. Use when Codex needs current web content, web research, fact lookup, link following, a bounded crawl, client-rendered or response-gated content, network diagnostics, or a standalone HTML, Markdown, JSON, semantic-tree, viewport or…