SkillAgentSearch skills...

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.

Install / Use

npx skills add zenbu-labs/terminal-browser --skill verify

Installs into whichever agent you are using.

About this skill
📄

SKILL.md

Installable skill definition

Quality Score

84/100

Supported Platforms

Universal

Tags

Our assessment of verify

verify scores 84/100 on our quality scale, 516th of 814 Content & Media skills we index.

Its SKILL.md is 4.0 KB long, split into 3 sections with 2 code examples: a solid amount of guidance for an agent.

With 3,233 GitHub stars, it is one of the more widely adopted skills in the catalogue.

Substance
26/30
Structure
14/20
Description
15/15
Adoption
15/20
Freshness
15/15

Maintenance, license and trust

  • The repository was last updated 8 days ago, so verify is actively maintained.
  • It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
  • Its trust signals score 100/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.

Safety scan

No issues found

Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands.

Automated pattern scan on 2026-09-29. It catches known dangerous patterns, not every risk — read a skill before letting an agent act on it.

verify compared with similar skills

All 4 of these similar skills score higher than verify; compare them before choosing.

SkillScoreStarsUpdatedFormat
verify (this skill)by zenbu-labs843.2k8d agoSKILL.md
siyuanby siyuan-note10046.5ktodayMCP Server
algorithmic-artby anthropics100177.9k6d agoSKILL.md
pptxby anthropics100177.9k6d agoSKILL.md
designby nextlevelbuilder100130.2k7d agoSKILL.md

Frequently asked questions

How do I install verify?
Run npx skills add zenbu-labs/terminal-browser --skill verify. The install tabs above show the steps for each supported agent.
Which AI agents does verify work with?
It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
Is verify safe to use?
Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. It is MIT-licensed and scores 100/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
Is verify still maintained?
The repository was last updated 8 days ago, so verify is actively maintained.

name: verify description: 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.

Apps here render via the kitty graphics protocol, so they can be verified without a real terminal. Every verification is recorded: the harness in tools/verify-recorder/ captures every frame the app emits, overlays your inputs (click ripples, caption bar), encodes a video, and generates a summary page. Do not hand-roll one-off pty scripts that only dump PNGs.

Writing a verification

Write a driver script (in /tmp is fine) using the checked-in package:

import sys
sys.path.insert(0, "<repo>/tools/verify-recorder")
from driver import Driver
from recorder import Recorder

rec = Recorder("wheel-pan", title="Wheel pan keeps cursor anchored")
d = Driver(["<repo>/engine/target/debug/typing"], rec,
           cols=120, rows=32, xpixel=1200, ypixel=800)

d.pump(3.0)                                  # pump between actions so frames arrive
rec.check("app painted", d.frame_size is not None, f"{d.frame_size}")
w, h = d.frame_size                          # REAL framebuffer size — always use this

d.text("hello", "type into editor")          # every input takes a description
d.click(w // 2, h // 3, "select the note")   # mouse coords are pixels (1016 mode)
d.wheel(w // 2, h // 2, down=True, n=3, description="scroll content")
d.pump(1.0)
rec.check("scroll redrew", len(rec.frames) > 40, f"{len(rec.frames)} frames")
rec.still("after-scroll")                    # named snapshot for the summary page

d.stop("ctrl+c")                             # or "ctrl+q" depending on the app
rec.finish()                                 # composites markers, encodes mp4, writes summary
  • Driver spawns the argv in a pty (TERM=xterm-kitty, TIOCSWINSZ with pixel dims, answers the \x1b[?1016$p mouse probe), decodes kitty a=T,f=32,o=z frames, and feeds them to the recorder. Node apps: spawn ["npx", "tsx", "src/main.tsx", ...] with cwd= the package dir (tsx resolves tsconfig from cwd; a wrong cwd silently drops jsx config).
  • Input methods: key("enter"/"esc"/"ctrl+q"/"super+shift+z"), text, click, press/drag/release (a drag needs all three — click sends press+release together), move, wheel. Descriptions become the video caption bar and the summary timeline — write what the step is testing.
  • rec.check(name, ok, detail) for every assertion; rec.still(name) to pin the current frame into the summary.
  • Give checks real assertions (frame deltas, decoded pixel colors via recorder.png_read(rec.frames[-1]["path"])) — the summary shows pass/fail.

Ending a verification (required)

rec.finish() prints the run dir and summary path. Always end by opening the summary in a split:

pixel open file:///tmp/verify-runs/<name>-<stamp>/summary.html

That page is the deliverable: what was tested (clickable timeline that seeks the video), the checks table, the stills, and the video of the whole run. Watch out for FAIL rows before declaring the verification passed.

Gotchas

  • The engine rounds the window down to the cell grid, so the framebuffer can be narrower than the requested winsize. Take coordinates from d.frame_size, never from the requested pixels, or clicks land ~5% off.
  • Keep pumping after quit (d.stop does) or the exit is never observed.
  • Escape must be kitty CSI-u (d.key("esc") handles it); a bare \x1b makes the app swallow the next escape sequence as literal text.
  • If a press lands on a node without handlers, the engine dispatches the click at the release position — a missed drag can silently click something else.
  • Hover state only updates on move events; end interactions with a move if the screenshot should show hover styling.
  • Apps taking a file path argv need an ABSOLUTE path (their cwd is the package dir).
  • Run artifacts live in /tmp/verify-runs/<name>-<stamp>/: frames/, events.jsonl, run.json, verification.mp4, summary.html.

Related Skills

View on GitHub
GitHub Stars3.2k
CategoryContent
Updated8d ago
Forks153

Languages

TypeScript

Trust signals

100/100

From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.

No cautions