anthropics/skills180kwebapp-testing
Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.
浏览器自动化
Verify that every interactive control on a page can take keyboard focus and that its primary action fires from the keyboard rather than only the mouse, and say plainly that Tab order cannot be verified today. Use when a component was hand-tested with a mouse, a custom dropdown/modal/combobox was added, or an accessibility report flags an unreachable control.
把这段话发给 Claude Code、Codex 或 Cursor。智能体会先检查安全性,你确认后才安装。
读取 https://funcoding.ai/skills/reticlehq/reticle/verify-keyboard-access/install.md ,按里面的步骤帮我安装这个 Skill。
A <div onClick> styled to look like a button can look reachable (plenty of component libraries hand out tabindex="0" for free) and still do nothing when you press Enter on it. Being able to take focus proves a control is reachable, not that it works.
Reticle can drive both halves in the running app. Not installed? RETICLE_INSTALL_SOURCE=npx_skill npx @reticlehq/server@latest init, then the install-and-verify skill.
press always goes through a synthetic key event, and a synthetic Tab does not move focus. That is true in every mode, including reticle drive: there is no mode in which an agent can prove focus order. Do not go looking for one, and do not report a Tab-order result as passed or failed. Report it as unknown.
What this skill can prove is narrower: that each control can take focus, and that its primary action fires from the keyboard.
Confirm a live session exists for the page and can render and observe:
reticle_session({ action: "list" })
In a disconnected, hidden or throttled tab, a key press can be accepted while timers, rendering and later observation do not advance, so nothing you read back is trustworthy. Get a usable context first, for example a leased tab:
reticle_run({ tool: "reticle_lease", args: { action: "acquire", url } })
Pass refuseWhenThrottled: true on the action so a paused tab fails loudly instead of silently doing nothing. If you cannot get a healthy session, report the run as blocked, not passed, and do not keep retrying against it.
List every interactive control before touching the keyboard, or you will only test the ones you already knew about:
reticle_look({ sessionId, action: "page", mode: "interactive" })
For each control from that list, focus it and assert that it took focus:
reticle_act({ sessionId, ref, action: "focus" })
reticle_assert({
sessionId,
predicate: { kind: "element", query: { testid: "the-control" }, state: "focused" },
})
That proves the control can take focus. It does not prove the control sits in the Tab order (tabindex="-1" is focusable but skipped by Tab), so report it as focusable, not Tab-reachable. A <div onClick> with no tabindex will not take focus, and that is a real finding.
Focus is a precondition, not the check. Name the consequence, then activate with the keyboard:
reticle_act_and_wait({
sessionId,
ref,
action: "press",
args: { text: "Enter" },
until: { kind: "element", query: { testid: "expected-result" } },
})
Buttons and links take Enter. Checkboxes and native <select> take Space, plus arrow keys for the options. A synthetic Enter on a form control does submit its form, so Enter-to-submit is checkable here. A custom-styled combobox is the control most likely to fail: it looks identical to the native one and often only listens for click. Press the key. Do not substitute a click and assume the keyboard would behave the same.
An until can already be true before you act, and then already_true proves nothing about your key press. Check the consequence is absent first. If it is not, reset the app state and start again, or report the result as inconclusive. If the requirement is that text becomes visible, use a predicate that requires visibility, since a hidden element still satisfies a presence check. Load the exact fields with reticle_tools({ names: ["reticle_act_and_wait"] }) rather than guessing.
focus action and a state: "focused" assert.reticle_act_and_wait({ until }) naming a consequence that was not already true.Tab order and focus traps are not on this list. Neither can be verified today, so report both as unknown, never as passed.
Report each result as verified (Reticle returned a positive verdict for the exact condition), failed, blocked (no healthy session) or unknown. A verdict of verified: "unknown" or verified: "no-fault" is not a pass. unknown means Reticle could not tell what happened. Report either as it is, and never weaken a check to make it pass. Observed evidence is not a verified result, already_true is not proof your action caused the consequence, and a key press that was dispatched but never settled is not a completed interaction.
Finish with the controls found, which of them took focus, the key you pressed and the exact consequence you waited for, the verdict Reticle returned, that Tab order is unknown, and any throttling or timeout that limits the result.
Capability reference: curl https://docs.reticle.sh/capabilities.md. Everything else: curl https://docs.reticle.sh/llms.txt.
anthropics/skills180kToolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.
浏览器自动化
addyosmani/agent-skills103kTests in real browsers via Chrome DevTools MCP. Use when building or debugging anything that runs in a browser. Use when you need to inspect the DOM, capture console errors, analyze network requests, profile performance, or verify visual output with real runtime data. Requires the chrome-devtools MCP server to be configured.
浏览器自动化
ComposioHQ/awesome-claude-skills77kToolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.
浏览器自动化
code-yeongyu/oh-my-openagent70kDrives a real browser through the omowright library from the js eval kernel: sites the user is already signed into, forms and clicks, JS-rendered pages, screenshots, web QA, extension popups, a human handoff for login, CAPTCHA or OTP, and a browser you own for scraping, bot-scored targets, network capture and QA traces. Use for any interactive browser task; not for a plain search or an unblocked static fetch.
浏览器自动化
shanraisshan/claude-code-best-practice67kBrowser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to "open a website", "fill out a form", "click a button", "take a screenshot", "scrape data from a page", "test this web app", "login to a site", "automate browser actions", or any task requiring programmatic web interaction.
浏览器自动化
CherryHQ/cherry-studio52kRun Cherry Studio critical-path system regression tasks through the repository-owned Playwright E2E workflow. Use for full regression, release acceptance, development-branch system validation, or a named cherry-regression-test task on GitHub-hosted macOS and Windows runners.
浏览器自动化