plugins/src/expo/skills/e2e-coverage-gaps/SKILL.md
Playwright/e2e coverage-gap explorer that FEEDS THE LIFECYCLE. Use when asked to find paths the automated end-to-end suite does NOT cover — routes with no test at all, or flows that are only happy-path tested (missing error, validation, permission, empty, loading, and edge states). It inventories the app's routes and the existing Playwright tests, explores the running app to confirm each uncovered or under-covered path is real and reachable, and files one build-ready missing-test ticket per gap via lisa-tracker-write. For human usability/experience issues (confusing, cramped, or broken UI), use the lisa-exploratory-qa skill instead.
npx skillsauth add codyswanngt/lisa e2e-coverage-gapsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
Security scan pending...
This skill is queued for security scanning. Results will appear when the scan completes.
Find where the automated end-to-end (Playwright) suite is blind: routes with no test at all, and flows that only assert the happy path while ignoring error, permission, empty, loading, and edge cases. Inventory the app's routes and the existing tests, explore the running app to confirm each gap is real and reachable, then file each gap as a build-ready missing-test work item so it enters the Lisa lifecycle.
This skill is purely about automated-coverage gaps. It does not judge whether the UI is confusing
or pretty — for human usability findings, use the lisa-exploratory-qa skill.
target-url | env (first positional) — the app to inventory and explore.ready=true|false — build-ready state for the missing-test tickets (default true). Adding
missing coverage is safe to queue, so these default to build-ready; pass ready=false to leave them
in the backlog for human triage.ready flag
(default true).tracker from
.lisa.config.json (local overrides global). If it is unset, stop and report that the tracker must
be configured (via /lisa:setup:jira / :github / :linear) before gaps can be filed.Map routes/flows against existing coverage and classify each gap:
Each confirmed gap becomes a leaf missing-test work item created via lisa-tracker-write (the
vendor-neutral writer — it dispatches to the configured tracker and runs the validation gate; never
call a vendor *-write-* skill directly), issue_type: Task, build-ready per the ready flag
(default true). Pass build_ready explicitly on every create. Each ticket MUST specify:
Before creating a ticket, search the tracker for an open ticket carrying a stable marker
[lisa-e2e-coverage-gaps] <gap-key> in its body (the <gap-key> is a stable slug of route + missing
scenario, e.g. checkout/payment-declined or dashboard/empty-state@mobile). If one exists, reference
it instead of duplicating. Match by the marker, never by title. A closed prior ticket does not
suppress a genuine new gap.
No report file. Emit a concise in-session summary:
lisa-exploratory-qa.tools
Configure the official SonarQube plugin + MCP as Lisa's single Sonar substrate across every supported coding agent. Installs/updates the SonarQube CLI, authenticates (browser login on a dev machine, or SONARQUBE_CLI_TOKEN headless), selects the Test Manager target, runs `sonar integrate <agent>` for each supported agent (Claude, Codex, Cursor, Copilot, Antigravity) and wires the MCP for OpenCode, then writes only non-secret policy to .lisa.config.json. Separate from the CI SonarCloud scan gate, which is unchanged.
tools
Configure the official SonarQube plugin + MCP as Lisa's single Sonar substrate across every supported coding agent. Installs/updates the SonarQube CLI, authenticates (browser login on a dev machine, or SONARQUBE_CLI_TOKEN headless), selects the Test Manager target, runs `sonar integrate <agent>` for each supported agent (Claude, Codex, Cursor, Copilot, Antigravity) and wires the MCP for OpenCode, then writes only non-secret policy to .lisa.config.json. Separate from the CI SonarCloud scan gate, which is unchanged.
tools
Configure the official SonarQube plugin + MCP as Lisa's single Sonar substrate across every supported coding agent. Installs/updates the SonarQube CLI, authenticates (browser login on a dev machine, or SONARQUBE_CLI_TOKEN headless), selects the Test Manager target, runs `sonar integrate <agent>` for each supported agent (Claude, Codex, Cursor, Copilot, Antigravity) and wires the MCP for OpenCode, then writes only non-secret policy to .lisa.config.json. Separate from the CI SonarCloud scan gate, which is unchanged.
tools
Configure the official SonarQube plugin + MCP as Lisa's single Sonar substrate across every supported coding agent. Installs/updates the SonarQube CLI, authenticates (browser login on a dev machine, or SONARQUBE_CLI_TOKEN headless), selects the Test Manager target, runs `sonar integrate <agent>` for each supported agent (Claude, Codex, Cursor, Copilot, Antigravity) and wires the MCP for OpenCode, then writes only non-secret policy to .lisa.config.json. Separate from the CI SonarCloud scan gate, which is unchanged.