qa
Test implemented features against their acceptance criteria, fix simple failures, and write a QA report.
Skill by RubenGlez
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/rubenglez-qa
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: documents, testing, writing
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/qa
What's inside
- Skill name
qa- Description
- Test implemented features against their acceptance criteria, fix simple failures, and write a QA report. Use after implement has finished a phase, or when you want to verify that implemented features work as specified.
- License
- MIT
- Instructions
- 112 lines in SKILL.md · view on GitHub
Before installing
- Instructions call the network
Files (2)
- REFERENCE.md
- SKILL.md
SKILL.md (first lines)
# 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.md` — acceptance criteria for every `done` feature - `.harness/product/ux.md` — core user workflows to validate end-to-end - `AGENTS.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 checks the response 3. **CLI with fixtures** — for CLI features, run the command with a known input and diff the output 4. **Headless browser** — for web features, Playwright with the shortest possible script 5. **Minimal harness** — write a 10-line script that exercises the specific behavior in isolation For each feature, decide which approach gives the clearest signal before proceeding to Step 3. If a criterion is flaky (non-deterministic): do not mark it as passing. Investigate the source of flakiness — it is almost always a real bug or missing synchronisation, not noise to ignore. ## Step 3: Run existing tests If a test suite exists, run it: ``` npm test / pytest / go test ./... / cargo test / bundle exec rspec ``` Record: total / passing / failing. Note which features each failing test relates to. Do not stop here — test suites rarely cover full acceptance criteria from a user perspective. ## Step 4: Test each feature Work through every `done` feature section in `.harness/engineering/features.md`. For each, verify every acceptance criterion using the feedback loop identified in Step 2. Criteria are phrased Given/When/Then: reproduce the *Given* as setup state, perform the *When* as the user would, and assert only the *Then* — the observable outcome. If an older spec has a criterion without this structure, test it as written; do not rewrite it mid-QA. **Web app — use Playwright:** - Start the app - Walk through the user flow from `.harness/product/ux.md` relevant to this feature - Verify behavior through the UI, not by inspecting internal state or database records directly - Check edge cases from the feature spec (empty states, error states, validation messages) **CLI — use shell:** - Run commands with the inputs described in the spec - Verify stdout/stderr matches expected output for both happy path and error paths - Do not test by reading internal files the user wouldn't access **REST API — use shell / curl:** - Make requests to each endpoint in the spec - Verify status codes, response shapes, and error responses through the API surface only - Do not verify by querying the database directly unless the feature's acceptance criterion explicitly requires it **Library — write and run a usage script:** - Exercise each public API in the spec through its public interface - Do not call private methods or inspect internal state For each criterion: record ✅ pass or ❌ fail with a one-line note on what was observed. ## Step 5: Fix simple failures For each ❌ failure: 1. Read the relevant source code 2. Identify the root cause 3. Apply a fix if ALL of these are true: - The fix touches fewer than ~30 lines - It's contained to one or two files - The cause is clear (wrong condition, missing null check, typo, off-by-one) 4. Re-run the specific test to confirm the fix works 5. If the fix is complex, cross-cutting, or requires design decisions: mark it `outstanding` **Never fix a failure by weakening an acceptance criterion or removing a test.** ## Step 6: Write the QA report Write `.harness/qa/report.md` (create directory if needed). The report is a STATUS document, not a history: keep exactly one dated run section — the latest — over a summary table with one row per run. When a new run is written, delete the previous run's detail section and add its summary row (git keeps the history). See [REFERENCE.md](REFERENCE.md) for the template. Commit the report (with any Step 5 fixes, or on its own): `git add .harness && git commit -m "docs: QA report"` — worktrees and future sessions only see committed `.harness/` content. The "Architectural gaps" section is the post-mortem. If multiple failures share a root cause (missing abstraction, tight coupling, untested seam), document it there so `/update-docs` can decide whether to open an ADR. ## Step 7: Recommend next step Outstanding failures (the ones Step 5 didn't fix) need an owning skill — don't leave them as a description for the user to act on. Route each by size: - **Outstanding failure, small and contained** (one feature, clear cause, no design decision): "Run /task to fix [failure]." `/task` verifies and re-syncs the spec; re-run /qa after. - **Outstanding failure, cross-cutting or needs design** (spans features, missing abstraction, ambiguous criterion): the feature spec is the problem, not just the code. "Re-spec [feature] via /dev-plan (or /evolve if the behavior itself is in question), then /implement it." Do not hand a vague failure straight to /implement — it will guess. - A failure never reaches /update-docs or /ship unfixed: shipping with open QA issues is a decision /ship forces you to make, not a default. Then the standard transitions: - **All criteria passing, no gaps**: "QA passed. Run /update-docs to wrap up." - **Failures fixed, none outstanding**: "Fixed [N] failures. Run /qa again to confirm." - **Architectural gaps found**: "Gaps documented in the report. Consider running /update-docs to record them as ADRs before proceeding."
From RubenGlez/harness, MIT.
More from RubenGlez/harness
- 0.552score
metrics
RubenGlez
Measure traction and discoverability across all non-archived GitHub repos and their publications (npm, App Store, Play Store, web properties), judge each…
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
task
RubenGlez
Make a small change to a shipped product — a bug fix, behavior tweak, or micro-feature — as one verified slice, syncing the affected feature spec on the way…
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
migrate-docs
RubenGlez
Discover all documentation in the repo, classify each file, transform content to match harness templates, and migrate everything to the correct location.
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
next-step
RubenGlez
Recommends the next harness skill to use by inspecting the repo, docs, git state, and recent work.
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
prototype
RubenGlez
Build throwaway code to answer a specific design question before committing to an implementation approach.
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
write-a-skill
RubenGlez
Create new harness skills with proper structure, progressive disclosure, and bundled resources.
SkillBFreshness: B★ 1Claude Code +9 - 0.544score
implement
RubenGlez
Classify planned features as autonomous or human-approval-required, then implement the current phase as parallel vertical slices — one subagent per feature.
SkillBFreshness: B★ 1Claude Code +9 - 0.544score
dev-plan
RubenGlez
Analyze product docs and the codebase to decide architecture, tech stack, and implementation approach, then generate a technical spec for every must-have…
SkillBFreshness: B★ 1Claude Code +9 - 0.544score
update-docs
RubenGlez
Update all project documentation to reflect the current state of the codebase.
SkillBFreshness: B★ 1Claude Code +9 - 0.544score
product-plan
RubenGlez
Define the full product vision — audience, positioning, features, roadmap, and UX direction — through a structured interview.
SkillBFreshness: B★ 1Claude Code +9 - 0.497score
address-cves
RubenGlez
Find and fix high and critical application dependency CVEs across all non-archived GitHub repositories available to the authenticated gh CLI user.
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
evolve
RubenGlez
Define what to add, change, or extend on an existing product through a product-level interview, then update the harness docs and hand off to dev-plan.
SkillCFreshness: C★ 1Claude Code +9
Signals
- Stars
- 1
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Sep 12, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/RubenGlez/harness
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from RubenGlez
- 0.552score
metrics
RubenGlez
Measure traction and discoverability across all non-archived GitHub repos and their publications (npm, App Store, Play Store, web properties), judge each…
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
task
RubenGlez
Make a small change to a shipped product — a bug fix, behavior tweak, or micro-feature — as one verified slice, syncing the affected feature spec on the way…
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
next-step
RubenGlez
Recommends the next harness skill to use by inspecting the repo, docs, git state, and recent work.
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
migrate-docs
RubenGlez
Discover all documentation in the repo, classify each file, transform content to match harness templates, and migrate everything to the correct location.
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
prototype
RubenGlez
Build throwaway code to answer a specific design question before committing to an implementation approach.
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
write-a-skill
RubenGlez
Create new harness skills with proper structure, progressive disclosure, and bundled resources.
SkillBFreshness: B★ 1Claude Code +9
Cite this page
qa skill. Agent Mart. https://agentmart.dev/skills/rubenglez-qa (last updated 2026-10-24)