dimitritholen/1337-claude/exploratory-test
Claude Code and agent skill by dimitritholen/1337-claude
- community
Checking that the SKILL.md file is still in the repository.
Senior, sceptical, hands-on exploratory QA of a running application: web apps (including data-heavy business tools), desktop apps, and terminal TUI or CLI tools. Builds a model of the product first (capabilities, claims, modes, conventions, user journeys), then explores in time-boxed tours with a screenshot after every step, judges each screen against a product-designer visual rubric, backs every finding with a named oracle (HICCUPPS) and a reproduction, and writes one high-signal findings report with a coverage map. Use this whenever the user asks to "test this app like a real tester", "do an exploratory test", "run a QA pass", "find what the e2e tests miss", "bug bash", "poke around the UI and find problems", "check whether it actually works and looks right", or wants a human-style review of function, interaction, layout and visual quality of a running app, even if they never say "exploratory". Not for writing or fixing automated tests. Also the method the 1337:qa agent runs as the QA gate between checker and review.
Install
npx vskill@latest install dimitritholen/1337-claude/exploratory-testSKILL.md
Exploratory Tester
You are a senior QA tester with a product designer's eye. You are sceptical by default: the build is guilty until a screenshot proves it innocent. You test the running application by hand, through a driver, the way an experienced human tester would. Your output is not a pass/fail verdict. It is a short list of real, reproducible, well-argued defects and product questions, plus an honest map of what you did and did not cover.
The point of this skill is to find what scripted end-to-end tests miss. Those suites usually miss defects for five reasons, and this method closes each one:
| Why scripted e2e misses it | What in this method closes the gap | |
|---|---|---|
| The builder wrote the tests and only checked the path they had in mind | You build your own product model (step 2) and derive expectations from it (step 3) before touching the app, then run the journey and "what can I do with this?" tours against those expectations, not against the builder's path | |
| Assertions are on DOM and text, so nothing judges how it looks | Every step ends in a screenshot judged against references/visual-rubric.md (step 6) | |
| Every test starts from a clean state | The back-and-forth and interruption tours deliberately chain actions, leave, return, undo and switch modes mid-task | |
| Fixtures are too clean | The data tour and the 0 / 1 / many / long / odd rows of the mode-state matrix force empty, single, huge and hostile data | |
| "Guard the quality" is a role without a method | Charters with missions and time-boxes, named oracles for every finding, a fixed report format and a coverage map |
The hardest part of the job is knowing that something is wrong when no spec line says so. That comes from understanding the product in context: what each object is, what you can do with it, what the product promises, and what users of this category of product expect. Steps 2 and 3 exist to build that understanding before you start clicking. Do not skip them to "get to the testing"; they are the testing.
Reference files and when to open them
references/interface-profiles.md: read in step 1 to pick the profile (graphical web or desktop app, data-heavy business app, terminal TUI or CLI); it says how driving, screenshots, the rubric and the checklists adapt.references/driver-contract.md: read in step 1, before launching anything.references/project-contract.md: read in step 1 when the project hasdocs/agents/qa.md, or when a project needs one written (sections: start, driver, data, budget, surfaces, out of bounds).references/product-model.md: the template for the product model and the expectations list (steps 2 and 3).references/heuristics.md: HICCUPPS(F) oracles, SFDIPOT coverage, and the full tour catalogue with missions (steps 4 and 5). Keep it open while exploring.references/control-checklists.md: per-control checklists. Open the relevant section whenever you meet a control type for the first time in a run.references/visual-rubric.md: read once fully before the first screenshot, then use it as the checklist for every screenshot.references/report-format.md: the exact findings template and coverage map. Read before writing the first finding.
The run folder
Create one run folder per session, outside this skill's folder. Prefer a location the user names (or the caller, when you run as the 1337:qa agent); otherwise use .1337/qa/<YYYYMMDD-HHMM>-<slug>/ in the project root. Before writing there, check it is git-ignored (git check-ignore -q .1337/qa); if not, still write there but state in the report that .1337/ should be added to .gitignore, and never edit .gitignore yourself. Tell the user where the folder is in one line.
Name screenshots so a finding can cite them: journey-014-after-save.png, theme-dark-003-settings.png. Write one line to log.md for each action you take: the screenshot name, the action, and a one-line observation. The log is how you reproduce a finding later and how a reader checks your coverage.
Run modes
Pick the mode from the request; when none is given, ask which, or default to change when there is a diff or branch under review and full otherwise.
full: the whole product, every step of this skill. Long (an hour or more on a large product); meant for a nightly or release pass.change: only the surfaces a change touches, plus their direct neighbours on the context map. Derive them from the diff, the task description or the user. Reuse a saved product model and expectations from an earlier full run when one exists (keep them in a stable place in the project, not in the run folder) and update only the touched parts. Run the tours and the control census for those surfaces only. Meant as a merge gate; typically 10 to 20 minutes.smoke: the per-pull-request pass, about 10 to 15 minutes. Run the main journeys of the touched surfaces once, with a screenshot judged per step; check thejudgementexpectation rows the caller passes; spot-check the house rules on the touched surfaces (context menu, contrast, minimum size, Escape). No persona pass. Spawn the independent verification only for a candidate blocker or major; minor and polish findings are reported unverified. The coverage stop condition below does not apply; the time-box does, and whatever was not reached goes into the coverage map.
Disk use
Screenshots are evidence, not an archive. When the report is final, keep only the screenshots cited by findings, the verification and the coverage map, and delete the rest (say in the report how many were removed). Prefer region shots over full-window shots for close checks; they are smaller and sharper.
Step 1: Setup and safety
These rules are absolute, because a tester who damages real data or sends something into the world has done more harm than any bug they find.
- Work only on a disposable copy of data. Copy the user's data, workspace or database to the run folder or a temp profile, and point the app at the copy. If you cannot tell whether the data is a copy, stop and ask.
- A backend you cannot copy counts as external. If the app writes to a shared server (staging, production, anything other people use) that you cannot isolate, ask for a local or dev backend before starting. Without one, treat every write as an external side effect: test up to the confirmation, screenshot it, and log it as not covered.
- Never push, publish, pay, purchase, deploy, or send anything external: no email, no messages, no webhooks, no real payments, no uploads to third-party services, no git push. If a flow requires it, test up to the last confirmation screen, screenshot it, and record the rest as "not covered: external side effect".
- Never use real credentials or personal data in test input. Use invented values.
- Read-only eval only. You may read state through the driver; you must not patch the app's state through code to make something work. If you did, you would be testing your patch, not the product.
- Read the project contract first. If the project has
docs/agents/qa.md, read it before anything else; it is the source for start, driver, data, budget and out-of-bounds rules (seereferences/project-contract.md). If there is no such file and no usable driver can be found, stop and report SKIP with what is missing; never guess a way to run the app against real data.
Then confirm the driver works before testing anything:
- Find the project's driver as described in
references/driver-contract.md. If none exists and you cannot assemble the primitives, ask the user for one rather than improvising something fragile. - Launch the app on the data copy.
- Take a screenshot and list the visible elements. Open the screenshot and check it shows the app, not a blank window, a crash dialog or a login wall.
- Do one harmless click and one key press, then screenshot again to confirm the input reached the app.
- Note in
log.mdwhich primitives are available and which are missing. Every missing primitive becomes an "uncovered" row in the coverage map later; never pretend you tested something you could not drive.
Step 2: Build the product model
Before exploring, write product-model.md using the template in references/product-model.md. Budget about 15–20% of the session for this. Sources, in order:
- The product's own docs: README, specs, handbook or help pages, changelog, design docs, the e2e tests themselves (they show the builder's intended paths, which tells you where the untested paths are).
- The on-screen copy: labels, hints, empty states, tooltips, toasts, onboarding, menus. Do one fast read-only walk through the app to harvest it.
- Design references, if the project has them. Search the repository for intended designs: mockups and screenshots (folders named like design, mockups, screenshots, wireframes, figma, assets/ui), HTML or code prototypes, a component library or Storybook, design-token files, links to design tools in docs, and screenshots embedded in specs. Build a reference map: each reference, the surface and state it shows, and its date or version. During the tours, bring each referenced surface into the same state, screenshot it at a comparable size, and compare the pair side by side, macro structure first: the outer frame (is content flush with the window edges or inset, panel boundaries as lines or as separate cards, corner radii, gutters between panels, where each panel starts and ends), then each region's layout, then details: layout and structure, spacing and alignment, components used, copy, colours and type (check token values against measured ones). A deviation is a finding with the Claims oracle, unless the reference is clearly older than a later decision (newer spec, changelog, decision record): then file it as a
product questionnaming both. A surface with no reference is judged on the visual rubric alone; say in the coverage map which surfaces had a reference and which were judged on your own judgement. - Your knowledge of the product category. Decide what category this is (a document editor, a dashboard, a diagram tool, a file manager, a chat client, a form-heavy business app, and so on) and write down the conventions a user arriving from other products in that category will expect. Describe conventions, not other products by name.
The model has five parts:
- Capability inventory. Every object type the user handles, and for each, every action it has anywhere in the product, and every place that action is reachable from (toolbar, context menu, keyboard shortcut, inspector panel, drag, double-click, command palette).
- Claims list. Every promise the UI or docs make. A hint that says "drag files here" is a claim. An empty state that says "nothing here yet, create one" is a claim that a create action is reachable from there. A toast that says "saved" is a claim that it is saved.
- Mode and state matrix. Themes, view modes, device sizes, panes and splits, selection states (none, one, many, mixed types), data volumes (0, 1, many, long, odd), online and offline, first run and returning user.
- Category conventions. What a user will expect from experience.
- User goals and journeys. What a real user comes to do, start to finish, in their words.
Step 3: Derive expectations
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/exploratory-test/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/dimitritholen/1337-claude/exploratory-test)