Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .agents/skills/testing-web-capture/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ license: MPL-2.0

## 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`/`-sseof` seeking silently returns the first frame. Extract frames
with `select='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_secs` at 5s (GATEWAY_LOAD_TIMEOUT_SECS), so worst-case time-to-first-byte through the gateway is ~5s plus one GOP (~1s).
Expand Down Expand Up @@ -55,6 +57,12 @@ license: MPL-2.0
- Autoplay may land paused in this environment: click the play control, then compare `currentTime` across two views.
- A cast joined mid-session starts at a non-zero `currentTime` (live stream) — not a defect.

## Tuning a live cast's URL
- Build the CLI with `cargo build --release -p streamkit-client` (the package is `streamkit-client`, not `skit-cli`), then
`target/release/skit-cli tune <session-id> web url <new-url>` (sends a `TuneNode` request over the WebSocket
control plane; the value is parsed as YAML, so quote URLs with YAML-special characters). The embedded MCP endpoint is
disabled by default (`[mcp]` in `skit.toml`), so MCP tuning is not available out of the box.

## Cross-session leak checks
- Sequential: capture page A then page B; sampled B frames must contain no A pixels (use dark/light pages so pixel stats catch leaks).
- Concurrent: run a cast of A and a clip of B simultaneously (two curls with `&`); sample start/middle/end frames of both.
Expand Down
Loading