← ClaudeAtlas

qalisted

Test implemented features against their acceptance criteria using available tools (Playwright for web apps, shell for CLI/API, test runner for libraries). Builds a fast feedback loop first, fixes simple failures, and documents results plus any architectural gaps in .harness/qa/report.md. Use after implement has finished a phase.
RubenGlez/harness · ★ 0 · Testing & QA · score 75
Install: claude install-skill RubenGlez/harness
# QA ## Core principle Tests verify behavior through public interfaces, not implementation details. Code can be refactored entirely; tests should not break unless behavior changes. If a test breaks when you rename an internal function but the user-facing behavior is unchanged, the test was wrong. When writing test steps or evaluating failures, always ask: "Is this testing what the user experiences, or what the code looks like inside?" ## Step 1: Read the context Read: - `.harness/engineering/features/` — acceptance criteria for every `done` feature - `.harness/product/ux.md` — core user workflows to validate end-to-end - `CLAUDE.md` and `README.md` — how to install and run the project - `package.json` / `pyproject.toml` / `Makefile` / `go.mod` — available test and run commands Determine: - **Project type**: web app, CLI, REST API, library, mobile - **How to start the app**: the exact command(s) - **What testing tools are available**: existing test suite, Playwright MCP, shell ## Step 2: Build a feedback loop Before running any test, identify the fastest, most deterministic signal for each feature. A good feedback loop is: fast (seconds, not minutes), deterministic (same result every run), and sharp (clearly signals pass or fail). Work through this list in order — use the first approach that fits: 1. **Failing test** — does an existing test already cover this criterion? Run it. 2. **curl / HTTP script** — for API features, a one-liner that hits the endpoint and check