V5 Breaking Changes
remotion-dev/remotion
Implement or review a Remotion 5 breaking change while the v4 and v5 release lines still share code.
One-time setup for /verify and /break. An agent skill from opslane/verify.
$ npx skills add opslane/verify --skill verify-setup -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install opslane/verify verify-setup --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/opslane/verify.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/verify-setup .claude/skills/verify-setup && rm -rf skills-srcUse ~/.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/
Install the "verify-setup" agent skill from https://github.com/opslane/verify/tree/main/skills/verify-setup into .claude/skills/verify-setup/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "verify-setup", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/opslane/verify/tree/main/skills/verify-setupType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add opslane/verify --skill verify-setup -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install opslane/verify verify-setup --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/opslane/verify.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/verify-setup .agents/skills/verify-setup && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "verify-setup" agent skill from https://github.com/opslane/verify/tree/main/skills/verify-setup into .agents/skills/verify-setup/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "verify-setup", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add opslane/verify --skill verify-setup -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install opslane/verify verify-setup --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/opslane/verify.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/verify-setup .cursor/skills/verify-setup && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "verify-setup" agent skill from https://github.com/opslane/verify/tree/main/skills/verify-setup into .cursor/skills/verify-setup/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "verify-setup", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/opslane/verify.git --path skills/verify-setup--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add opslane/verify --skill verify-setup -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install opslane/verify verify-setup --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/opslane/verify.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/verify-setup .gemini/skills/verify-setup && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "verify-setup" agent skill from https://github.com/opslane/verify/tree/main/skills/verify-setup into .gemini/skills/verify-setup/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "verify-setup", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install opslane/verify verify-setupInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add opslane/verify --skill verify-setup -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/opslane/verify.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/verify-setup .github/skills/verify-setup && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "verify-setup" agent skill from https://github.com/opslane/verify/tree/main/skills/verify-setup into .github/skills/verify-setup/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "verify-setup", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add opslane/verify --skill verify-setup -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install opslane/verify verify-setup --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/opslane/verify.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/verify-setup .opencode/skills/verify-setup && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "verify-setup" agent skill from https://github.com/opslane/verify/tree/main/skills/verify-setup into .opencode/skills/verify-setup/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "verify-setup", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
verify-setupOne-time setup for /verify and /break. An agent skill from opslane/verify.
Verify Setup is an agent skill from opslane/verify. One-time setup for /verify and /break. Sniffs the repo, confirms boot/seed/health with you, writes .verify/setup.json, captures auth if the app needs login, and builds .verify/profile.json, a model of how the app runs.
Its SKILL.md is about 3.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
The repository describes itself as: Verification Skill for Claude Code. The licence is MIT.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 25dc3a9. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
jqbashnpxgitdockercurlFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npx, git, docker and curl, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
ANTHROPIC_API_KEYOPENAI_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Verify Setup loads about 3.1k tokens when it runs. Until then it costs about 58 tokens; SKILL.md has 1,344 words of instructions outside code blocks.
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.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
repo's own local `.env` files, chosen by the user. If a user pastes a secret,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.
The full file from opslane/verify at commit 25dc3a9, republished under its MIT licence (© opslane). 1,344 words, ~3,091 tokens.
.claude/skills/verify-setup/SKILL.md (or your agent's skills folder).Run once per repo. Later /verify runs read .verify/setup.json and ask nothing.
Hard rule: never ask for or store passwords, API keys, or connection strings.
The one exception is captured browser session state (.verify/auth.json,
written by the auth step below): it holds reusable cookies for the app under
test, is gitignored, and deleting the file revokes it. Treat it like a logged-in
browser profile, not a secret store. No production
connection strings, no cloud keys. The most this file may reference is one of the
repo's own local .env files, chosen by the user. If a user pastes a secret,
refuse to write it and tell them to keep it in their environment.
grep -qxF ".verify/" .gitignore 2>/dev/null || echo ".verify/" >> .gitignore.verify/setup.json is the one file meant to be shared. After writing it, offer:
"Commit .verify/setup.json so your team skips this interview? (y/n)" — on yes,
git add -f .verify/setup.json and commit it.
The contract must work in every checkout and worktree of the repo, or the interview repeats forever. Two rules:
Ports and hosts go through environment variables. When the repo
documents per-worktree port variables (an AGENTS.md export block, a
.env.example), write http://localhost:${INGESTION_PORT:-8082} — the
repo's own variable name with the repo's default — never the number the
current worktree happens to use. URL fields (base_url, health_url)
support exactly ${VAR} and ${VAR:-default} — no nesting, no command
substitution — expanded identically by the scripts and the engine at run
time. Probes and boot are shell programs and expand everything the shell
does, for free.
Nothing run-scoped. A probe that names a specific run's container
(verify-20260901-042757-worker-1) is dead the moment that run ends. Key
probes to the compose service via the current run's project instead:
docker ps --filter "label=com.docker.compose.project=$(jq -r .project .verify/run-env.json)" \
--filter "label=com.docker.compose.service=worker" --format '{{.State}}' | grep -q runningBefore offering the commit, re-read the drafted contract and reject your own draft if any field contains a resolved port number that has a documented variable, or any name containing a run id.
VERIFY_SCRIPTS="${VERIFY_SCRIPTS:-$CLAUDE_PLUGIN_ROOT/scripts}"
bash "$VERIFY_SCRIPTS/sniff.sh" > /tmp/verify-sniff.json
cat /tmp/verify-sniff.jsonUse AskUserQuestion. Every option must come from the sniff output; the user corrects rather than authors. A single unambiguous candidate is taken silently and shown in the final summary.
.boot[] candidate (label with its cmd), plus
"it's already running (breaks isolation — not recommended)" which selects
"mode": "external". The chosen candidate's mode and compose_file
are copied into the contract — never mix a process boot with a compose
teardown. For "process" mode, health_url is required — do not write
the contract until the user supplies the URL to poll. For "compose"
mode, write teardown: "docker compose -f <file> down -v" — a throwaway
stack that keeps its volumes is not throwaway..seed[], plus "no seeding" and "I have a data file to load"
(if chosen, ask for the path and put it in seed_data_files; it is a plain
file the user produced themselves — how they made it is outside verify)..env_files[], plus "none". The chosen file is sourced
by the environment manager before boot, seeds, and probes.http://localhost:3000, or the value in the env file if
it names one.X-API-Key) and the env var name; or B)
no auth. The value itself is never written anywhere: the contract stores
only the header name and the env var name.worker, sink, storage, ask "is there a one-line
command that proves your <part> is alive? (leave blank to skip)". Explain:
a part with no probe still runs its criteria, but a failure on it will be
reported as possibly environmental rather than blamed on the change.
(api, browser, and db have built-in probes; don't ask about them.)If .has_stack is false: plain-command mode. Write the contract with
"mode": "none" and empty boot/teardown/health, and say: "No runnable stack
found; /verify will run criteria as plain commands."
Write .verify/setup.json. The shape (this example is load-bearing — a test
parses it):
{
"mode": "compose",
"compose_file": "compose.yaml",
"boot": "docker compose -f compose.yaml up -d --wait",
"teardown": "docker compose -f compose.yaml down -v",
"seed": ["scripts/seed-e2e.sql"],
"seed_data_files": [],
"health_url": "",
"base_url": "http://localhost:${APP_PORT:-3000}",
"auth": {"header": "", "value_env": ""},
"env_file": ".env.example",
"observe": {"db_url_env": "DATABASE_URL"},
"probes": {"worker": "", "sink": "", "storage": ""}
}Valid modes: "compose", "process" (health_url required), "external", "none".
Show the written file and the summary of silently-taken single candidates.
Keep authentication as Playwright storage state. It contains no password entry flow or credential capture by Verify; the user logs in directly in the browser.
Check whether the selected base URL is running:
VERIFY_SCRIPTS="${VERIFY_SCRIPTS:-$CLAUDE_PLUGIN_ROOT/scripts}"
BASE_URL=$(jq -r '.base_url' .verify/setup.json | bash "$VERIFY_SCRIPTS/expand.sh" --load-env .verify/setup.json)
curl -sf "$BASE_URL" > /dev/null 2>&1 || echo "⚠ Dev server not running at $BASE_URL. Start it before logging in."If the app requires login, open Playwright codegen and let the user authenticate:
VERIFY_SCRIPTS="${VERIFY_SCRIPTS:-$CLAUDE_PLUGIN_ROOT/scripts}"
BASE_URL=$(jq -r '.base_url' .verify/setup.json | bash "$VERIFY_SCRIPTS/expand.sh" --load-env .verify/setup.json)
mkdir -p .verify
echo "A browser will open. Log in, then close the browser window."
npx playwright codegen --save-storage=.verify/auth.json "$BASE_URL"
chmod 600 .verify/auth.jsonVerify the capture:
if [ -f .verify/auth.json ] && [ -s .verify/auth.json ]; then
COOKIE_COUNT=$(jq '.cookies | length' .verify/auth.json 2>/dev/null || echo 0)
echo "✓ Auth state captured: $COOKIE_COUNT cookies"
else
echo "✗ auth.json is empty. Log in when the browser opens, then close it."
exit 1
fiA git worktree gets the committed contract for free but not the gitignored files. Push them to the per-repo shared store so every worktree inherits them:
VERIFY_SCRIPTS="${VERIFY_SCRIPTS:-$CLAUDE_PLUGIN_ROOT/scripts}"
bash "$VERIFY_SCRIPTS/shared-store.sh" pushThis copies .verify/auth.json and the chosen env file to
~/.verify/<repo-slug>/ (permissions 700/600). Tell the user: deleting that
folder stops NEW worktrees inheriting the login; copies already pulled into
worktrees remain until their .verify/ is deleted. Run push again whenever auth is
recaptured or the env file changes.
/break attacks a change on a local copy of the app. To pick attacks that match how the
app really runs, it reads a profile of the app: what runs in the background, which
tables have statuses and what moves them, which outside services it calls, which
settings change behaviour when empty, and what sits in front of it in production.
Always build it; it is part of setup, not a question for the user. Build it from the
code alone: read the repo, do not boot anything, use no network. It takes a few minutes.
If it fails, say so in the summary and finish setup anyway: /break works without it.
Fill exactly this shape and write it to .verify/profile.json (this example is
load-bearing: a test checks it against the engine's validator):
{
"version": 1,
"services": [
{"name": "api", "kind": "api", "run": "compose service api", "source": "compose.yaml:3"}
],
"actors": [
{"name": "job-reaper", "kind": "reaper", "service": "worker", "interval_s": 60,
"interval_env": "REAPER_INTERVAL_MS", "touches": ["jobs"], "source": "worker/src/index.ts:191"}
],
"entities": [
{"table": "jobs", "status_field": "status", "statuses": ["pending", "claimed", "completed", "dead_letter"],
"transitions": [
{"from": "claimed", "to": "pending", "by": "job-reaper", "source": "worker/src/db.ts:1323"},
{"from": "any", "to": "pending", "by": "request:POST /api/jobs", "source": "api/handler/jobs.go:40"}
],
"source": "migrations/001_jobs.sql:5"}
],
"external": [
{"name": "anthropic", "kind": "llm", "env": ["ANTHROPIC_API_KEY"], "stubbable": "yes",
"stub_how": "ANTHROPIC_BASE_URL", "source": "worker/src/llm.ts:12"}
],
"config": [
{"name": "OPENAI_API_KEY", "default": null, "effect": "empty: no embeddings, duplicates are never merged",
"source": ".env.example:20"}
],
"edge": {"hops": ["cloudflare", "load_balancer"], "source": "answered by the user"}
}kind is one of api, worker, web, db, queue, storage, other.kind is one of scheduler,
poller, reaper, sweeper, consumer, boot_task, migration. touches lists
the tables or queues it writes; /break uses it to find the actors that matter for a
change.by is an actor name, request:<METHOD /path>, or unknown.stubbable says whether a local stand-in can
replace it and stub_how names the setting that points it elsewhere (or null).cloudflare, cdn, vercel, load_balancer, nginx_or_ingress, none,
unknown. Detect it from deploy files and docs when you can.Rules:
source as path:line in this repo. No source, no item."unknown", never a guess. Unknowns are fine: /break
tests both ways when that is cheap./break works them out
fresh for each change."source": "answered by the user".Check it with the engine and fix every error it reports:
VERIFY_PIPELINE="${VERIFY_PIPELINE:-$CLAUDE_PLUGIN_ROOT/pipeline}"
(cd "$VERIFY_PIPELINE" && npx --no-install tsx src/cli.ts profile-check --repo "$(pwd -P)")Show the user a short summary: counts per section, the edge chain, and the few config
settings with the biggest effect. Then offer: "Commit .verify/profile.json so your team
and future runs share it? (y/n)". On yes, git add -f .verify/profile.json and commit it.
Finish with: ✓ Setup complete. Run /verify before your next PR.
© opslane, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/verify-setup of opslane/verify.
Open the folder on GitHubat commit 25dc3a9
Verify Setup 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Verify Setup this skillopslane/verify | 115 | — | ~3.1k | Automated safety check: Notes | MIT | |
| V5 Breaking Changesremotion-dev/remotion | 62k | — | ~879 | Automated safety check: Pass | Custom licence | |
| Breaking Changeshashicorp/terraform-provider-aws | 11k | — | ~291 | Automated safety check: Pass | MPL-2.0 | |
| BreakJDArmy/BREAK | 386 | 1 repos | ~2.2k | Automated safety check: Notes | Apache-2.0 | |
| What Breakssuboss87/FDEOps | 954 | — | ~337 | Automated safety check: Pass | MIT | |
| Break AI Fix Loopssickn33/agentic-awesome-skills | 47k | 1 repos | ~3k | Automated safety check: Pass | MIT |
remotion-dev/remotion
Implement or review a Remotion 5 breaking change while the v4 and v5 release lines still share code.
hashicorp/terraform-provider-aws
Review a PR for possible breaking changes. An agent skill from hashicorp/terraform-provider-aws.
JDArmy/BREAK
BREAK 业务风险枚举与规避知识库 — 查询业务安全风险、规避手段、攻击工具、威胁行为者、行业术语和典型案例,或基于知识库回答业务安全问题
suboss87/FDEOps
Assess the impact of a proposed change on dependencies and shared infrastructure.
sickn33/agentic-awesome-skills
Stop ineffective AI coding repair loops with stable failure fingerprints, a three-attempt budget, real-path proof, negative controls, and tested rollback.
genex-games/genex-desktop
Renders a component you choose in every state and scenario on a temporary page and stress tests it.
opslane/verify
Try to break a change the way the real world will - network faults, restarts, two things at once, users doing things out of order - on a disposable local stack, and report what broke with a…
opslane/verify
Verify any change surface against approved acceptance criteria, run the real system, and preserve the report and test artifacts.
One-time setup for /verify and /break. An agent skill from opslane/verify. Verify Setup is an agent skill from opslane/verify. One-time setup for /verify and /break.
Run `npx skills add opslane/verify --skill verify-setup -a claude-code`. Or copy the skill folder (skills/verify-setup in opslane/verify) into .claude/skills/verify-setup in your project. Claude Code loads it when a task matches its description.
Run `npx skills add opslane/verify --skill verify-setup -a codex`. Or copy the skill folder (skills/verify-setup in opslane/verify) into .agents/skills/verify-setup in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add opslane/verify --skill verify-setup -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-setup, .gemini/skills/verify-setup, .github/skills/verify-setup and .opencode/skills/verify-setup in your project.
Going by SKILL.md and its folder, Verify Setup needs the command-line tools its instructions call (jq, bash, npx, git, docker and curl) and credentials named ANTHROPIC_API_KEY and OPENAI_API_KEY. Our summary lists: Node.js; Docker; A credential in ANTHROPIC_API_KEY; A credential in OPENAI_API_KEY.
SKILL.md contains no URLs. Its commands use npx, git, docker and curl, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Verify Setup is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.1k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Verify Setup: V5 Breaking Changes (remotion-dev/remotion, 62k stars), Breaking Changes (hashicorp/terraform-provider-aws, 11k stars), Break (JDArmy/BREAK, 386 stars) and What Breaks (suboss87/FDEOps, 954 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
opslane (a GitHub organization) maintains it in opslane/verify, which has 115 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on September 28, 2026.
Source: opslane/verify on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.