{"id":"a4ed92ea-d460-4817-bd2b-e233e0a9d4fd","shortId":"BT36CC","kind":"skill","title":"stably-verify","tagline":"Verify that an application works correctly using `stably verify`. Use when\nan AI agent has made code changes and needs to validate the feature works\nin a real browser. The command describes expected behavior in plain English\nand reports a PASS/FAIL/INCONCLUSIVE verdict — no test ","description":"# Verify App Behavior with stably verify\n\n`stably verify` checks whether your application works correctly by describing expected behavior in plain English. It launches an AI agent that navigates your app in a real browser, interacts with it, takes screenshots, and reports a structured **PASS / FAIL / INCONCLUSIVE** verdict. No test files are generated.\n\n## Pre-flight\n\n**Always run `stably --version` first.** If not found, install with `npm install -g stably` or use `npx stably`. Requires Node.js 20+ and a [Stably account](https://app.stably.ai).\n\n```bash\nstably --version\necho \"STABLY_API_KEY: ${STABLY_API_KEY:+set}\"\necho \"STABLY_PROJECT_ID: ${STABLY_PROJECT_ID:+set}\"\n```\n\n## Usage\n\n```bash\n# Verify a feature works\nstably verify \"the login form accepts email and password and redirects to /dashboard\"\n\n# With a specific starting URL\nstably verify \"the pricing page shows 3 tiers\" --url http://localhost:3000/pricing\n\n# Set a budget cap (default: $5)\nstably verify \"checkout flow completes successfully\" --max-budget 10\n\n# Non-interactive mode (for CI or background agents)\nstably verify \"checkout flow completes\" --no-interactive\n\n# Use cloud browser instead of local\nstably verify \"login works\" --browser cloud\n```\n\n### Options\n\n| Option | Description |\n|--------|-------------|\n| `-u, --url <url>` | Starting URL (auto-detected from localhost if omitted) |\n| `--max-budget <dollars>` | Budget cap in USD (default: `5`) |\n| `--no-interactive` | Skip preflight prompts |\n| `--browser <type>` | Browser type: `local` or `cloud` (default: `local`). Also settable via `STABLY_CLOUD_BROWSER=1` |\n\n### Exit Codes\n\n| Code | Verdict | Meaning |\n|------|---------|---------|\n| `0` | PASS | All requirements verified |\n| `1` | FAIL | One or more requirements not met |\n| `2` | INCONCLUSIVE | Cannot determine (app unreachable, auth wall, etc.) |\n\n## Iteration Loop\n\nAfter making code changes, use `stably verify` to check the feature:\n\n1. **Run verify** — `stably verify \"description of expected behavior\"`\n2. **If FAIL** — Read the failure reason and evidence from the output\n3. **Fix code** — Modify your application code based on the failure\n4. **Re-verify** — Run the same `stably verify` command again\n5. **Repeat** until PASS\n\n`stably verify` does not create or modify any files. It only observes and reports. Fix the code yourself based on its findings.\n\n## Composing in Scripts\n\n```bash\n# Gate on verification\nstably verify \"login works\" && echo \"Feature verified!\"\n\n# Handle all three outcomes\nstably verify \"checkout completes\" ; code=$?\nif [ $code -eq 0 ]; then echo \"PASS\";\nelif [ $code -eq 1 ]; then echo \"FAIL\";\nelse echo \"INCONCLUSIVE\"; fi\n```\n\n## Long-Running Commands (AI Agents)\n\n`stably verify` is AI-powered and can take **several minutes** depending on complexity.\n\n| Agent | Configuration |\n|-------|--------------|\n| **Claude Code** | `timeout: 600000` on Bash tool |\n| **Cursor** | `block_until_ms: 900000` |\n\n## Links\n\n[Docs](https://docs.stably.ai) · [Verify Guide](https://docs.stably.ai/use-cases/verify-with-ai-agents) · [CLI Quickstart](https://docs.stably.ai/stably-cli/quickstart) · [Dashboard](https://app.stably.ai)","tags":["stably","verify","agent","skills","stablyai","agent-skills"],"capabilities":["skill","source-stablyai","skill-stably-verify","topic-agent-skills"],"categories":["agent-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/stablyai/agent-skills/stably-verify","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add stablyai/agent-skills","source_repo":"https://github.com/stablyai/agent-skills","install_from":"skills.sh"}},"qualityScore":"0.453","qualityRationale":"deterministic score 0.45 from registry signals: · indexed on github topic:agent-skills · 6 github stars · SKILL.md body (3,149 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:15:07.459Z","embedding":null,"createdAt":"2026-05-18T13:22:56.406Z","updatedAt":"2026-05-18T19:15:07.459Z","lastSeenAt":"2026-05-18T19:15:07.459Z","tsv":"'/dashboard':166 '/stably-cli/quickstart)':468 '/use-cases/verify-with-ai-agents)':463 '0':277,407 '1':271,282,312,414 '10':198 '2':290,321 '20':123 '3':178,333 '3000/pricing':182 '4':344 '5':188,250,355 '600000':447 '900000':455 'accept':159 'account':127 'agent':17,73,207,427,442 'ai':16,72,426,432 'ai-pow':431 'also':265 'alway':103 'api':134,137 'app':49,77,294 'app.stably.ai':128,470 'applic':7,59,338 'auth':296 'auto':236 'auto-detect':235 'background':206 'base':340,377 'bash':129,149,384,449 'behavior':37,50,65,320 'block':452 'browser':32,81,218,226,257,258,270 'budget':185,197,244,245 'cannot':292 'cap':186,246 'chang':21,304 'check':56,309 'checkout':191,210,401 'ci':204 'claud':444 'cli':464 'cloud':217,227,262,269 'code':20,273,274,303,335,339,375,403,405,412,445 'command':34,353,425 'complet':193,212,402 'complex':441 'compos':381 'configur':443 'correct':9,61 'creat':363 'cursor':451 'dashboard':469 'default':187,249,263 'depend':439 'describ':35,63 'descript':230,317 'detect':237 'determin':293 'doc':457 'docs.stably.ai':458,462,467 'docs.stably.ai/stably-cli/quickstart)':466 'docs.stably.ai/use-cases/verify-with-ai-agents)':461 'echo':132,140,392,409,416,419 'elif':411 'els':418 'email':160 'english':40,68 'eq':406,413 'etc':298 'evid':329 'exit':272 'expect':36,64,319 'fail':92,283,323,417 'failur':326,343 'featur':27,152,311,393 'fi':421 'file':97,367 'find':380 'first':107 'fix':334,373 'flight':102 'flow':192,211 'form':158 'found':110 'g':115 'gate':385 'generat':99 'guid':460 'handl':395 'id':143,146 'inconclus':93,291,420 'instal':111,114 'instead':219 'interact':82,201,215,253 'iter':299 'key':135,138 'launch':70 'link':456 'local':221,260,264 'localhost':181,239 'login':157,224,390 'long':423 'long-run':422 'loop':300 'made':19 'make':302 'max':196,243 'max-budget':195,242 'mean':276 'met':289 'minut':438 'mode':202 'modifi':336,365 'ms':454 'navig':75 'need':23 'no-interact':213,251 'node.js':122 'non':200 'non-interact':199 'npm':113 'npx':119 'observ':370 'omit':241 'one':284 'option':228,229 'outcom':398 'output':332 'page':176 'pass':91,278,358,410 'pass/fail/inconclusive':44 'password':162 'plain':39,67 'power':433 'pre':101 'pre-flight':100 'preflight':255 'price':175 'project':142,145 'prompt':256 'quickstart':465 're':346 're-verifi':345 'read':324 'real':31,80 'reason':327 'redirect':164 'repeat':356 'report':42,88,372 'requir':121,280,287 'run':104,313,348,424 'screenshot':86 'script':383 'set':139,147,183 'settabl':266 'sever':437 'show':177 'skill' 'skill-stably-verify' 'skip':254 'source-stablyai' 'specif':169 'stabli':2,11,52,54,105,116,120,126,130,133,136,141,144,154,172,189,208,222,268,306,315,351,359,388,399,428 'stably-verifi':1 'start':170,233 'structur':90 'success':194 'take':85,436 'test':47,96 'three':397 'tier':179 'timeout':446 'tool':450 'topic-agent-skills' 'type':259 'u':231 'unreach':295 'url':171,180,232,234 'usag':148 'usd':248 'use':10,13,118,216,305 'valid':25 'verdict':45,94,275 'verif':387 'verifi':3,4,12,48,53,55,150,155,173,190,209,223,281,307,314,316,347,352,360,389,394,400,429,459 'version':106,131 'via':267 'wall':297 'whether':57 'work':8,28,60,153,225,391","prices":[{"id":"a2a89db7-e25a-4eb2-ad73-86bd0d491441","listingId":"a4ed92ea-d460-4817-bd2b-e233e0a9d4fd","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"stablyai","category":"agent-skills","install_from":"skills.sh"},"createdAt":"2026-05-18T13:22:56.406Z"}],"sources":[{"listingId":"a4ed92ea-d460-4817-bd2b-e233e0a9d4fd","source":"github","sourceId":"stablyai/agent-skills/stably-verify","sourceUrl":"https://github.com/stablyai/agent-skills/tree/main/skills/stably-verify","isPrimary":false,"firstSeenAt":"2026-05-18T13:22:56.406Z","lastSeenAt":"2026-05-18T19:15:07.459Z"}],"details":{"listingId":"a4ed92ea-d460-4817-bd2b-e233e0a9d4fd","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"stablyai","slug":"stably-verify","github":{"repo":"stablyai/agent-skills","stars":6,"topics":["agent-skills"],"license":null,"html_url":"https://github.com/stablyai/agent-skills","pushed_at":"2026-04-15T08:16:48Z","description":"AI agent skills for the Stably Playwright SDK.","skill_md_sha":"5a18655edcd8ad5ba07b557dd3959dd3ec398e42","skill_md_path":"skills/stably-verify/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/stablyai/agent-skills/tree/main/skills/stably-verify"},"layout":"multi","source":"github","category":"agent-skills","frontmatter":{"name":"stably-verify","license":"MIT","description":"Verify that an application works correctly using `stably verify`. Use when\nan AI agent has made code changes and needs to validate the feature works\nin a real browser. The command describes expected behavior in plain English\nand reports a PASS/FAIL/INCONCLUSIVE verdict — no test files generated.\nTriggers on: \"verify this works\", \"stably verify\", \"check if this works\",\n\"validate my changes\", \"verify my feature\", \"does this work\",\n\"check the app\", \"verify the feature\"."},"skills_sh_url":"https://skills.sh/stablyai/agent-skills/stably-verify"},"updatedAt":"2026-05-18T19:15:07.459Z"}}