tobihagemann/exploratory-test
Execute multi-level exploratory testing of the app covering basic functionality, complex operations, adversarial testing, and cross-cutting scenarios, plus usability observations through a UX lens reported separately from defects. Deeper than /smoke-test. Use when the user asks to \"exploratory test\", \"test thoroughly\", \"test all scenarios\", \"deep test\", \"test edge cases\", \"test everything\", \"break it\", \"find bugs by testing\", \"test usability\", or \"check the UX while testing\".
npx skills add https://github.com/tobihagemann/turbo --skill exploratory-test
Execute multi-level exploratory testing that goes beyond smoke testing to actively find bugs through escalating test scenarios.
At the start, use TaskCreate to create a task for each step:
/user-experience skill (when user-facing)Resolve the test plan using these rules in order:
.turbo/test-plans/<slug>.md.turbo/test-plans/<that-slug>.md when that file exists.turbo/test-plans/*.md. If exactly one file exists, use it.turbo/test-plan.md if .turbo/test-plans/ does not exist/create-test-plan skill first, then use the plan it writesIf multiple test plans exist and the most-recent choice is non-obvious, use AskUserQuestion to let the user pick from the candidates.
Read the resolved test plan and state its path. If the user specifies a narrower scope, filter the plan to relevant scenarios rather than executing all of them.
Use the approach specified in the test plan. If the plan does not specify one, determine it using the same logic as /create-test-plan Step 3.
/user-experience Skill (When User-Facing)If the app has a user-facing surface (UI, screens, commands, messages, or any behavior a user sees or does), run the /user-experience skill to load the UX lens before executing tests, so usability concerns surface while interacting with the app. When it is unclear whether the surface is user-facing, use AskUserQuestion to ask rather than skipping silently. Skip this step for test targets with no user-facing behavior (internal library or infrastructure).
Work through each level sequentially. Complete all tests in a level before moving to the next.
AskUserQuestion to ask whether to continue. Basic failures may indicate the feature is too broken for deeper testing.If a project-specific testing skill or MCP tool was identified in Step 2, use that. The paths below are fallbacks.
Start the dev server if not already running. Wait for it to be ready. If /agent-browser is available, run the /agent-browser skill. Otherwise, use claude-in-chrome MCP to interact with the app.
Launch the app. Use computer-use MCP to interact with the UI.
Run commands directly.
Present results organized by level:
Exploratory Test Results:
## Level 1: Basic Functionality (X/Y passed)
- [PASS] Test name: description
- [FAIL] Test name: description — [what went wrong]
## Level 2: Complex Operations (X/Y passed)
- [PASS] Test name: description
- [FAIL] Test name: description — [what went wrong]
## Level 3: Adversarial Testing (X/Y passed)
- [PASS] Test name: description
- [FAIL] Test name: description — [what went wrong]
## Level 4: Cross-Cutting Scenarios (X/Y passed)
- [PASS] Test name: description
- [FAIL] Test name: description — [what went wrong]
Overall: X/Y passed across all levels
Report usability observations from the UX lens below the level results, separately from the PASS/FAIL defects. A scenario can pass every functional check and still surface a usability concern.
## Usability Observations
- [UX] <observation> — names the UX context it touches (Understanding, Bridging, or Flowing) and the goal mismatch or friction it creates
For each failure, include the relevant screenshot, output, or state observation.
Update the resolved test plan file by checking off completed tests and annotating results.
Then use the TaskList tool and proceed to any remaining task.
tmux -L <name>), and write screenshots and other scratch state to absolute paths under a unique scratch directory outside the repository under test./investigate skill on the test report.Take tobihagemann/exploratory-test from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.