Agent skill

Verify Changes

by h0x91b in h0x91b/dev-3.0

How to test and verify work in the dev-3.0 repo — which vitest config covers what, how to write a test that fits the house style, mocking Electrobun RPC and i18n providers, what coverage is actually…

Apache-2.0Auto-check passedTesting & QA

Install Verify Changes

skills CLI
$ npx skills add h0x91b/dev-3.0 --skill verify-changes -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install h0x91b/dev-3.0 verify-changes --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/h0x91b/dev-3.0.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/verify-changes .claude/skills/verify-changes && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
verify-changes
GitHub stars
307
Token cost
~1.7k tokens
SKILL.md length
816 words
Files
1
Skills in repo
4
Repo updated
First seen
Licence
Apache-2.0

At a glance

How to test and verify work in the dev-3.0 repo — which vitest config covers what, how to write a test that fits the house style, mocking Electrobun RPC and i18n providers, what coverage is actually…

  • Deciding what a change needs covered
  • SKILL.md covers Which config runs what, What to test, House style and Bug fixing — reproduce first, plus 2 more sections
  • Calls bun and bunx
  • Hitting a failing

What it does

Verify Changes is an agent skill from h0x91b/dev-3.0. How to test and verify work in the dev-3.0 repo — which vitest config covers what, how to write a test that fits the house style, mocking Electrobun RPC and i18n providers, what coverage is actually expected, and the browser QA hand-off. Use when writing or fixing tests, deciding what a change needs covered, hitting a failing or flaky suite, or preparing a change for review. Triggers — "write tests for this", "which config runs this", "how do I mock the RPC", "is this covered enough", "the suite is failing".

Its SKILL.md is about 1.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Testing & QA, covering Unit testing, Internationalization and Test generation. It works with Vitest and Git. The repository describes itself as: Mission control for the One Person Studio — run a fleet of AI coding agents in parallel without losing your mind. Kanban + git worktrees + tmux for Claude Code, Codex, Gemini… The licence is Apache-2.0.

When your agent uses it

  • Deciding what a change needs covered
  • Hitting a failing
  • Preparing a change for review
  • — write tests for this

Example prompts

  • “write tests for this”
  • “which config runs this”
  • “how do I mock the RPC”
  • “/verify-changes”

What it can do on your machine

Read from SKILL.md and the folder at commit e498d78. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • bun
    • bunx

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use bunx, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Verify Changes loads about 1.7k tokens when it runs. Until then it costs about 132 tokens; SKILL.md has 816 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~132
When it runs · the whole SKILL.md, loaded when a task matches
~1.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from h0x91b/dev-3.0 at commit e498d78, republished under its Apache-2.0 licence (© h0x91b). 816 words, ~1,673 tokens.

Download SKILL.mdSave it as .claude/skills/verify-changes/SKILL.md (or your agent's skills folder).
name
verify-changes
description
How to test and verify work in the dev-3.0 repo — which vitest config covers what, how to write a test that fits the house style, mocking Electrobun RPC and i18n providers, what coverage is actually expected, and the browser QA hand-off. Use when writing or fixing tests, deciding what a change needs covered, hitting a failing or flaky suite, or preparing a change for review. Triggers — "write tests for this", "which config runs this", "how do I mock the RPC", "is this covered enough", "the suite is failing".

verify-changes — testing and verification in dev-3.0

The two hard gates (lint + touched tests before push, full suite before a PR) live in AGENTS.md and apply whether or not you read this file. Everything here is the detail behind them: which runner covers what, how to write a test that fits, and what "enough" means.

Which config runs what

Vitest with happy-dom and React Testing Library. Three configs, three independent processes:

ConfigCoversScript
vitest.config.tsrenderer (src/mainview/)part of bun run test
vitest.config.bun.tsbackend (src/bun/)bun run test:bun
vitest.config.cli.tsCLI (src/cli/)bun run test:cli
bash
bun run test          # mainview + bun + cli in parallel, minus 3 slow e2e files (~6s)
bun run test:full     # everything incl. slow e2e (~42s) — CI/PR only
bun run test:watch    # watch mode

Running vitest directly (outside bun run): bunx vitest run, never npx.

Narrowing while iterating: bunx vitest run <path>, -t "<test name>", --repeat <n> for suspected flakes. Because the three configs are separate processes, a failure in one says nothing about the others — read which prefix ([mainview] / [bun] / [cli]) failed.

Local E2E policy: do not run the full E2E suite locally — bun run test:full and any equivalent unfiltered command are reserved for CI/PR validation. Investigating a specific behavior means running that one E2E file or test case.

What to test

  • Unit (mandatory) — state reducer actions and their edge cases, all pure functions/utils/parsers, every RPC handler (happy path plus 2-3 error cases), CLI commands (parsing, validation, output), data-layer CRUD plus corrupt-data handling, git operations with mocked spawn, i18n interpolation and pluralization for every locale.
  • Component (mandatory) — every major interactive component: board views, task cards, modals, settings panels.
  • E2E (CLI-based) — full lifecycle through the CLI plus Unix socket against a real app process in a tmpdir: task lifecycle (create → move statuses → complete), project CRUD, worktree creation and cleanup, notes CRUD, CLI context auto-detection, concurrent writes with no data corruption.

House style

  • One logical assertion per test; no dependencies between tests.
  • Always userEvent, never fireEvent. Test behavior, not implementation.
  • Mock only external boundaries — git, tmux, fs, Electrobun. Never mock internal modules.
  • No sleep and no timer juggling; use proper async/await.
  • Tests live in __tests__/ next to their module, e.g. src/mainview/components/__tests__/Dashboard.test.tsx.
  • Avoid the patterns that make a suite flake under CI load: index-based queries (getAllBy…[0]), structural traversal (.parentElement, .closest(…)), and assertions wedged between two userEvent interactions without an intervening waitFor.
Mocking Electrobun RPC and providers

Components importing api from rpc.ts need the Electrobun native module mocked:

ts
vi.mock("../../rpc", () => ({
	api: { request: { listDirectory: vi.fn(), addProject: vi.fn() /* … */ } },
}));

Components calling useT() must render inside <I18nProvider> (import from ../../i18n).

Handler tests mock the tmux singleton the same way they mock rpc.ts; the tmux client's own tests inject a fake spawn instead.

A test that reads a file as data is an untyped interface

Some tests consume something as data rather than importing it as code: workflow YAML parsed line by line, a fixture matched by a regex, a log line asserted on, a JSON shape read by string matching. Nothing type-checks that link, so reshaping the source breaks the test with the compiler silent.

The failure is worse than silent — it is misleading. When the test finally fails it describes the invariant ("every Bun-pinning workflow would ship an unproven pin"), not the missing source, so it reads as a real regression and someone spends an hour proving it is not.

Two rules:

  • Before deleting or reshaping anything, grep who reads it — not just who imports it. A YAML key, a fixture line shape, a log string.
  • If you write one of these, make its failure message name the cause and the fix — "the pinned string moved; update it in this test" — never just restate the invariant.
Show full SKILL.md (245 more words)Show less

Bug fixing — reproduce first

Write the failing test that reproduces the bug (red), then fix until it passes (green), and commit test and fix together. The rare exception is a bug that genuinely cannot be reproduced in a test (OS-specific timing, hardware, unmockable third-party behavior) — default to writing the test.

For a suspected flake, reproduce under load before theorising: --repeat, several concurrent vitest processes, and the file run together with its neighbours rather than alone (cross-test leakage vanishes in isolation). Never "fix" a flake with retry, skip, or a bumped timeout on its own.

Coverage — expectations, not a gate

Two numbers, no per-metric split: ~70% for normal code, ~85% for critical modules.

  • Critical modules (a silent regression here is expensive): state.ts, src/shared/types.ts helpers, src/mainview/i18n/, src/cli/, src/bun/data.ts, src/bun/git.ts, src/bun/tmux/, src/mainview/utils/.
  • Not expected to be covered (bootstrap/wrappers that only make sense in e2e): src/bun/index.ts, updater.ts, shell-env.ts, spawn.ts, src/mainview/rpc.ts, main.tsx.

No coverage provider is wired up — no coverage block in any vitest config, nothing installed, no CI gate. These are review-time expectations, so never cite a percentage as if a tool measured it. What gets rejected in review is a change that leaves its area, or a critical module, visibly less tested than before.

Visual surfaces

A change to anything the user sees is not verified by a green suite. Drive the running UI in a browser, screenshot it, read the console — the recipe (isolated browser session per task, streamer mode, serving the app) is the /debug-ui skill.

© h0x91b, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/verify-changes of h0x91b/dev-3.0.

Open the folder on GitHubat commit e498d78

Compare with similar skills

Verify Changes next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Verify Changes compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Verify Changes this skillh0x91b/dev-3.0307—~1.7kAutomated safety check: PassApache-2.0
Fantasia Arborvishiri/fantasia-archive409—~528Automated safety check: PassGPL-3.0
Concept Page Test Writerleonardomso/33-js-concepts67k—~5.5kAutomated safety check: PassMIT
Add UI Stringopenfootmanager/openfootmanager1.1k—~2.6kAutomated safety check: PassGPL-3.0
Caliber Testingcaliber-ai-org/ai-setup1.3k—~3.2kAutomated safety check: PassMIT
MoAI TDD Workflowmodu-ai/moai-adk1.2k—~3.1kAutomated safety check: PassApache-2.0

Similar skills

  • Fantasia Arbor

    vishiri/fantasia-archive

    Project Arbor MCP code graph: callers/callees, impact, map, file graph.

    409 GitHub stars~528 tokensUpdated 5 days ago
    Testing & QAAuto-check passed
  • Concept Page Test Writer

    leonardomso/33-js-concepts

    Generates Vitest tests for every runnable code example on a JavaScript concept documentation page, following a four-phase extraction and conversion process.

    67k GitHub stars~5.5k tokensUpdated 26 days ago
    Testing & QAAuto-check passed
  • Add UI String

    openfootmanager/openfootmanager

    Add or change any text a player can see, in every locale the game ships in.

    1.1k GitHub stars~2.6k tokensUpdated today
    Testing & QAAuto-check passed
  • Caliber Testing

    caliber-ai-org/ai-setup

    Writes Vitest tests following project patterns: tests/ directories, vi.mock() for module mocking with vi.hoisted() for test-time factories, global LLM mock from src/test/setup.ts, environment…

    1.3k GitHub stars~3.2k tokensUpdated 13 days ago
    Testing & QAAuto-check passed
  • MoAI TDD Workflow

    modu-ai/moai-adk

    Drives test-first development through the RED, GREEN, REFACTOR cycle, with a config switch that selects between TDD and a DDD workflow for existing code.

    1.2k GitHub stars~3.1k tokensUpdated today
    Testing & QAAuto-check passed
  • Gen Test

    Artexis10/endstate-gui

    Generate unit tests following project conventions. An agent skill from Artexis10/endstate-gui.

    116 GitHub stars~661 tokensUpdated today
    Testing & QAAuto-check passed

More from h0x91b/dev-3.0

  • UX Create Manifest

    h0x91b/dev-3.0

    Create the initial Product UX Bible for an existing web or full-screen web app by deeply auditing the repository, using sub-agents when available, and generating docs/ux manifests, schemas, budgets…

    307 GitHub stars~2.7k tokensUpdated yesterday
    Auto-check passed
  • UX Principal

    h0x91b/dev-3.0

    Principal UX architect skill for deciding WHERE a UI feature belongs, before it is implemented.

    307 GitHub stars~3k tokensUpdated yesterday
    Auto-check passed
  • Debug UI

    h0x91b/dev-3.0

    Drive and visually QA the dev-3.0 UI in a real browser (headless Chromium via agent-browser).

    307 GitHub stars~3.2k tokensUpdated yesterday
    Auto-check passed

Works with

Categories

Questions about Verify Changes

What does Verify Changes do?

How to test and verify work in the dev-3.0 repo — which vitest config covers what, how to write a test that fits the house style, mocking Electrobun RPC and i18n providers, what coverage is actually…. 0.0 repo — which vitest config covers what, how to write a test that fits the house style, mocking Electrobun RPC and i18n providers, what coverage is actually expected, and the browser QA hand-off.

When should I use Verify Changes?

Verify Changes fits situations like: deciding what a change needs covered; hitting a failing; preparing a change for review; — write tests for this.

How do I install Verify Changes in Claude Code?

Run `npx skills add h0x91b/dev-3.0 --skill verify-changes -a claude-code`. Or copy the skill folder (.claude/skills/verify-changes in h0x91b/dev-3.0) into .claude/skills/verify-changes in your project. Claude Code loads it when a task matches its description.

How do I install Verify Changes in Codex?

Run `npx skills add h0x91b/dev-3.0 --skill verify-changes -a codex`. Or copy the skill folder (.claude/skills/verify-changes in h0x91b/dev-3.0) into .agents/skills/verify-changes in your project. Codex loads it when a task matches its description.

Can I use Verify Changes in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add h0x91b/dev-3.0 --skill verify-changes -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/verify-changes, .gemini/skills/verify-changes, .github/skills/verify-changes and .opencode/skills/verify-changes in your project.

What does Verify Changes need to run?

Going by SKILL.md and its folder, Verify Changes needs the command-line tools its instructions call (bun and bunx).

Does Verify Changes access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Verify Changes safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Verify Changes use?

Verify Changes is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Verify Changes use?

About 1.7k tokens (SKILL.md is roughly 6.7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Verify Changes?

Skills that share tags, products or a category with Verify Changes: Fantasia Arbor (vishiri/fantasia-archive, 409 stars), Concept Page Test Writer (leonardomso/33-js-concepts, 67k stars), Add UI String (openfootmanager/openfootmanager, 1.1k stars) and Caliber Testing (caliber-ai-org/ai-setup, 1.3k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Verify Changes?

h0x91b (a GitHub user) maintains it in h0x91b/dev-3.0, which has 307 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on October 6, 2026.

Source: h0x91b/dev-3.0 on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.