npx skills add ...
npx skills add cypress-io/ai-toolkit --skill cypress-tap
Drives a running Cypress open-mode session through `cypress tap` to run and rerun specs, wait for fresh results, inspect reporter and command logs, and query or rewind the app under test through DOM, accessibility, styles, and snapshots. Use when authoring or debugging Cypress e2e or component specs, discovering selectors, diagnosing failures, or verifying test behavior without GUI interaction. Not for one-shot headless runs. Requires Cypress 15.21+, a Chromium-family browser, and a running `cypress open` session.
npx skills add cypress-io/ai-toolkit --skill cypress-tap
cypress tapcypress tap controls an already-running cypress open session. Use it to iterate on specs,
inspect the reporter and command log, and read the app under test without GUI interaction.
Use cypress run instead for a one-shot headless batch.
tap. Do not use tap --help to probe an unknown older build; prereleases below the
version floor may attempt session discovery instead of printing help.cypress open and any configured baseUrl dev server must already be running.tap from a compatible checkout and pass
--session <pid> on every call.cypress run, not tap.Read only the references required for the current task.
sessions: reachable sessions, project roots, testing types, and browsers; JSON adds support
and renderer health.status: lifecycle stage, selected spec, run identity, counts, build error, and active pin.specs: runnable project-relative spec paths for the session's testing type.run <spec>: dispatches a spec and returns immediately.reporter: spec overview and test ids; with --test-id, the complete test attempt.command: one command-log row with network data, snapshots, and console properties.pin: rewinds the app frame to a command snapshot.dom, aria, inspect: read the settled app or currently pinned snapshot.All commands accept --session <pid>, --json, and --timeout <ms>. On a confirmed supported
build, use npx cypress tap <command> --help for command-specific flags.
run confirms dispatch, not execution, and returns before the new run starts. During that gap,
status and app reads can still return the previous run's plausible verdict and page.
For every explicit run:
startedAt.status --json response at a time.passed or failed for the expected spec with a non-empty, changed
startedAt. startedAt is null only when no run has ever started for that spec in the
session — a build failure on first selection. A build that fails on rerun or on a watcher
rebuild still advances startedAt, so it takes the normal path. Keep the null fallback
(a changed observable baseline, or a preceding loading/running observation) for the
first-selection case only.Saving the active spec triggers an automatic watcher run. After editing, either use that run or let it settle before taking a baseline and dispatching another. Never intentionally put two runs in flight.
Blank and partial payloads from a successful status call occur transiently. Treat missing
fields as "keep waiting," not as a state change. A nonzero status exit is a command failure,
not a partial read: stop polling and report it.
Only passed and failed are verdicts. A build failure is failed with the diagnostic in
status.error, possibly before any tests exist. status is the only surface that carries that
diagnostic — reporter renders a failed build as an empty spec.
sessions and pass --session <pid>. Auto-selection can choose another project or an
unresponsive session.npx resolution on every call. When the
project pins an older Cypress, run commands from a compatible checkout and pass
--session <pid>.1 and lists matches on stdout.Unknown command "tap" and usage text to stdout; redirecting it hides the cause.reporter --test-id --json and command --json can be
hundreds of kilobytes. Save them to a file and parse the file.dom and aria cap output. Narrow the
selector or raise the limit when (output truncated) appears.0. Confirm a
known app anchor. If the frame is blank, pin a snapshot from the last real command and read
that state instead.pin --clear; otherwise later app
reads continue to describe the pinned past. An exit-0 cleared:false result is a benign
no-op even if human output says FAILED TO CLEAR PIN.aria for current form-control values:
dom and inspect can show the initial HTML value attribute, and inspect may omit the
accessibility value. Use dom for exact live-region, toast, status, and label text because
aria may omit descendant text.--json is for parsing and may contain much more data.status exits 0 for known lifecycle stages, including not connected. Discovery,
compatibility, unsupported-browser, and renderer failures exit 1, sometimes with no stdout;
a poller must fail fast on that nonzero exit.dom, aria, and inspect require exactly one selected element. Ambiguity exits 1 with
candidate selectors. A miss is not a CLI failure: dom and inspect report found:false;
aria returns an empty tree both for a miss and for an element with no accessibility node.reporter --test-id read over one command call per row.sessions for rendererResponsive: false; restart a
wedged renderer instead of increasing --timeout.