A set of 8 global skills for Claude Code that enforce disciplined, test-driven agentic development. Install once, use in any project.
FAQ
e2e-testing is a Claude Code plugin with 9 hand-picked skills for testing work, indexed on Flowy. Install it with the command on its page. It includes brainstorming-and-planning, code-review, e2e-playwright. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
$ npx -y skills add burhankhatri/e2e-testing --agent claude-code
Repo: burhankhatri/e2e-testing
A set of 8 global skills for Claude Code that enforce disciplined, test-driven agentic development. Install once, use in any project.
Without skills, AI coding agents write tutorial-quality code. They use brittle CSS selectors, skip tests, claim "done" without evidence, and guess at bug fixes. These skills fix that.
| Problem | What the skills do |
|---|---|
Agent writes fragile page.locator('.btn') selectors | Forces getByRole() locators that survive redesigns |
| Agent skips E2E tests ("unit tests already cover this") | /start makes Playwright E2E mandatory โ literally cannot skip it |
| Agent claims "done" after writing code | /verify-done requires fresh test output as proof |
| Agent guesses at fixes and goes in circles | /debug forces 4-phase root cause analysis before any fix |
| No visual regression testing | toHaveScreenshot() with baselines, masking, CI font rendering |
| Tests break in CI but pass locally | CI pipeline patterns with sharding, artifacts, Docker for consistency |
| Agent writes "page loads" smoke tests and calls it coverage | Quality gates reject smoke-only coverage โ demands real user workflow tests |
Agent test.skips its way to green | Skipped tests count as failures โ gates + a CI grep reject permanently-skipped tests |
Agent fakes auth (.or(signIn) assertions, skip-guards) | Real storage-state auth or stop-and-ask โ feature tests must run signed in |
| Rules obeyed only while the prompt is on screen | /start scaffolds GitHub Actions CI on day one โ the suite runs even when nobody remembers |
| Having to invoke a skill every single time | Opt-in hooks put the rules in every prompt automatically, and run your tests before "done" is allowed |
| No screenshots or traces for debugging | Screenshots every test, video on failure, traces on retry โ all automatic |
| Skill | Command | What it does |
|---|---|---|
| Start | /start | Master orchestrator โ routes tasks through the full pipeline with guaranteed test infrastructure and E2E coverage. |
| TDD | /tdd | Enforces strict red-green-refactor. No production code without a failing test first. |
| Systematic Debugging | /debug | 4-phase root cause investigation before any fix attempt. |
| Verification | /verify-done | Requires fresh evidence before any completion claim. |
| Brainstorming & Planning | /brainstorm-and-plan | Design-first workflow with specs and implementation plans. |
| E2E Playwright | /e2e-playwright | Battle-tested Playwright patterns, locators, fixtures, and debugging. |
| Test Automation Loop | /test-loop | Autonomous test-fix iteration โ write tests, let the agent loop until green. |
| Code Review | /code-review | Two-stage review: spec compliance, then code quality. |
git clone https://github.com/burhankhatri/e2e-testing.git
cd e2e-testing
bash install.sh
This installs all skills globally to ~/.claude/skills/ and sets up the orchestrator CLAUDE.md at ~/.claude/CLAUDE.md.
If you already have a ~/.claude/CLAUDE.md, the installer offers to append
just the rules and routing tree (about 20 lines, from
claude-md-essentials.md) to the end of it โ your
existing content is never changed or removed, and a backup is written first.
Say no and it prints the one-line command to do it later.
Don't skip this part. CLAUDE.md loads in every session with nothing to invoke,
so it's what actually routes work into the skills; without it they rarely fire on
their own.
Skills are prompts โ they only apply when they load, and the model grades itself
against them. Hooks are run by the harness instead, so they hold even when nobody
remembers to invoke anything. The installer copies two into ~/.claude/hooks/ and
asks before enabling them:
| Hook | Event | What it does |
|---|---|---|
tdd-remind.sh | UserPromptSubmit | Carries the TDD rules into every prompt, so you never have to type a command to get them |
tdd-verify.sh | Stop | Runs your test suite before work can be called done. Failing or skipped tests send the agent back to fix them |
Both stay silent when no code changed and when a project has no runnable suite, so
ordinary conversation costs nothing. Enabling them merges into ~/.claude/settings.json
(backed up first, never overwritten) and needs jq.
Re-run bash install.sh any time to turn them on later; running it twice won't
duplicate anything.
Turning them off:
bash ~/.claude/hooks/toggle.sh off # switch off โ nothing is deleted
bash ~/.claude/hooks/toggle.sh on # switch back on
bash ~/.claude/hooks/toggle.sh status # check which it currently is
This works even after the repo itself is gone โ it just drops a marker file in
~/.claude/hooks/ that both scripts check before doing anything else, so toggling
never touches settings.json and can't corrupt it. off is instant and total: no
reminder, and Claude is never blocked from finishing, no matter what your tests say.
If you already have a
~/.claude/CLAUDE.md, the installer will warn you and skip overwriting it. You can merge manually or replace it.
Once installed, skills are available in any project:
/start <task description>
That's it. /start handles everything โ it routes your task through the correct skill chain, creates testing.md if it doesn't exist, guarantees Playwright E2E tests, and won't claim done without verification.
/start doestesting.md + CI โ auto-detects your project's test setup, writes a testing guide, and scaffolds a GitHub Actions workflow so the suite runs on every push (if they don't exist)You can also invoke skills directly:
/brainstorm-and-plan then /tdd/debug then /tdd/tdd (tests for existing behavior first, then refactor)/e2e-playwright/test-loop/code-review/verify-doneThe /start skill orchestrates the full pipeline:
/start <task> โ testing.md โ Route โ TDD โ E2E โ Verify
Routing examples:
/start add user auth โ brainstorm โ tdd โ e2e โ verify/start fix login loop โ debug โ tdd โ e2e โ verify/start extract auth middleware โ tdd (existing behavior) โ refactor โ e2e โ verify/start add checkout e2e tests โ e2e โ verifyMIT
.gitignore
claude-md-essentials.md
CLAUDE.md
hooks/
tdd-remind.sh
tdd-verify.sh
install.sh
README.md
skills/
brainstorming-and-planning/
SKILL.md
code-review/
SKILL.md
e2e-playwright/
references/
api-testing-deep-dive.md
authentication-deep-dive.md
ci-pipeline-deep-dive.md
clock-and-time-mocking-deep-dive.md
common-pitfalls.md
debugging-deep-dive.md
fixtures-deep-dive.md
flaky-tests-deep-dive.md
iframes-and-shadow-dom-deep-dive.md
locators-deep-dive.md
mocking-deep-dive.md
nextjs-deep-dive.md
page-object-model-deep-dive.md
screenshots-and-media-deep-dive.md
test-data-management-deep-dive.md
test-organization-deep-dive.md
visual-regression-deep-dive.md
SKILL.md
start/
SKILL.md
systematic-debugging/
SKILL.md
tdd/
deep-modules.md
interface-design.md
mocking.md
refactoring.md
SKILL.md
tests.md
test-automation-loop/
SKILL.md
toggle-tdd/
SKILL.md
verification/
SKILL.md
toggle.shยฉ 2026 Flowy ยท Free and open source
Built for Claude Code ยท Not affiliated with Anthropic