Help us improve
Share bugs, ideas, or general feedback.
From ralphharness
Load this skill suite for any spec that involves end-to-end testing, browser automation, Playwright, MCP browser tools, VE tasks, user flow verification, UI testing, or integration tests that drive a real browser. Covers session lifecycle, environment setup, navigation anti-patterns, stable-state detection, auth flows, selector stability, and cleanup guarantees.
npx claudepluginhub informatico-madrid/ralph-harness --plugin ralphharnessHow this skill is triggered — by the user, by Claude, or both
Slash command
/ralphharness:e2eThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This is the entry point for the E2E skill suite. It does not contain implementation
Mandates invoking relevant skills via tools before any response in coding sessions. Covers access, priorities, and adaptations for Claude Code, Copilot CLI, Gemini CLI.
Share bugs, ideas, or general feedback.
This is the entry point for the E2E skill suite. It does not contain implementation details — it delegates to the sub-skills listed below, each covering a distinct concern.
Load order is mandatory. Each sub-skill depends on state written by the previous one.
Load this suite whenever the spec involves any of the following:
[VERIFY] tasks that use browser toolsbrowser_*)If any of the above applies: load all sub-skills before writing any browser code.
playwright-env.skill.mdPurpose: Resolves the browser execution context — app URL, auth mode, credentials
references, browser config, safety limits. Writes playwrightEnv to .ralph-state.json.
Load when: Always first, before any other E2E skill.
Read: ${CLAUDE_PLUGIN_ROOT}/skills/e2e/playwright-env.skill.md
mcp-playwright.skill.mdPurpose: Validates MCP server availability, handles lock recovery, and emits
ESCALATE if the server is unreachable. Writes mcpPlaywright to .ralph-state.json.
Load when: Always second, after playwright-env.
Read: ${CLAUDE_PLUGIN_ROOT}/skills/e2e/mcp-playwright.skill.md
playwright-session.skill.mdPurpose: Governs session lifecycle — start, navigation, stable-state detection, auth flows, context isolation, unexpected page recovery, and cleanup guarantee.
CRITICAL sections (read before writing any browser interaction):
page.goto() on internal routes breaks SPA routingLoad when: Always third, after mcp-playwright.
Read: ${CLAUDE_PLUGIN_ROOT}/skills/e2e/playwright-session.skill.md
ui-map-init.skill.mdPurpose: Builds or updates ui-map.local.md — the authoritative selector map for
the spec. Sub-skills and tasks use selectors from this file; they never invent selectors.
Load when: VE0 tasks, or when ui-map.local.md is missing or stale.
Read: ${CLAUDE_PLUGIN_ROOT}/skills/e2e/ui-map-init.skill.md
selector-map.skill.mdPurpose: Governs how to read and write selector maps — entry format, confidence levels, broken selector protocol, and incremental update rules.
Load when: Any task that reads ui-map.local.md or adds new selectors to it.
Read: ${CLAUDE_PLUGIN_ROOT}/skills/e2e/selector-map.skill.md
For platform-specific navigation patterns and selector conventions, see the examples/
directory. These are reference implementations for developers — they show how the
above skills apply to concrete platforms. The task-planner writes the relevant skill
paths directly into VE task bodies after research.
${CLAUDE_PLUGIN_ROOT}/skills/e2e/examples/
The canonical E2E anti-pattern list lives at:
${CLAUDE_PLUGIN_ROOT}/references/e2e-anti-patterns.md
Read it before writing any browser code. The Navigation section is the highest-priority.