agentleFS
Evan-Kim2028Evan-Kim2028/agent-skills/skills/qa/quality-check/SKILL.md

quality-check

Skill1 starsChanged 3 months agoMITView on GitHub

QA routing hub for verification — TDD, diagnose, browser/visual proof, web-quality, doubt-driven review, check-work, PR review, ship checklists, data-semantic-quality, metric-gated closeout. Use when the QA path is unclear, when shipping or fixing consumer-facing regressions (search, filters, sticky chrome, URL/ debounce), or on "QA", "verify", "prove it", "e2e", "flaky", "don't ship bugs", "issue closed but the number didn't move". Prefer specialists directly when already clear (only tdd, only browser-verify). Prefer frontend-design when the work is still building/redesigning product UI (hand off here for proof). Do not use for pure product design exploration, marketing, issue filing alone (qa), or lakehouse design without verification intent (data).

10 other projects use a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

12 rules. 0 are common, 10 are distinctive, and 2 are very specific to this project.

  • 0

    Common

    Most of the 8 edited versions we read keep these.

  • 10

    Distinctive

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    When a specialist clearly fits, load it directly — skip re-reading this hub.

    line 24
  2. Very specific:

    Open that specialist’s SKILL.md now: before coding or claiming done.

    line 42
  3. Distinctive:

    If the skill is missing, use If specialist missing fallbacks below.

    line 43
  4. Distinctive:

    Stop only when Done criteria pass.

    line 45
  5. Distinctive:

    doubt-driven-development: if any sync invariant

    line 83
  6. Very specific:

    web-quality: if forms/focus/touch

    line 85
  7. Distinctive:

    Do not claim done after unit green alone on consumer typing/sticky surfaces.

    line 88
  8. Distinctive:

    If the change claims a live data/product number moved: principle 8 (metric-gated closeout)

    line 103
  9. Distinctive:

    If it did not move: the ticket is not closed — residual, not a new feature

    line 110
  10. Distinctive:

    If two features debounce the same URL param pattern, share one hook + one suite.

    line 141
  11. Distinctive:

    If review says “remove this ref,” require: replacement invariant + which race-matrix row proves it.

    line 145
  12. Distinctive:

    Do not invent a fake skill name.

    line 178

“Common” is measured: kept by at least 6 in 10 of the 8 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Quality-check — QA routing hub

Route first → open the specialist → do the work. This file is the router plus a few load-bearing rules. Deep workflows live in specialists.

When a specialist clearly fits, load it directly — skip re-reading this hub.

Portability

NeedWhere
Race matrix (debounce × URL)references/interaction-races.md
Companion install + creditreferences/companion-install.md
Short source tablereferences/sources.md
One-shot copy installscripts/install-companions.sh
  • Hub + browser-verify / web-quality / frontend-design / data-semantic-quality ship in Evan-Kim2028/agent-skills — clone is enough for FE proof paths.
  • Optional companions (tdd, diagnose, doubt-driven, ship, …) may come from Matt Pocock / Addy Osmani packs — see companion-install. Grok may already bundle check-work.
  • Missing specialist → If specialist missing (do not invent skill files).

How to use this hub

  1. Match the task in the routing table (one primary skill).
  2. Open that specialist’s SKILL.md now before coding or claiming done.
  3. If the skill is missing, use If specialist missing fallbacks below.
  4. For multi-step work, follow the matching pipeline (A–C).
  5. Stop only when Done criteria pass.

Load at most 1–3 specialists. Do not spray-load the whole table.

Routing table

One default name per row. Aliases only if that name is not installed.

Your taskDefault skillAlias / note
Failing tests first / red-greentddtest-driven-development
Prove bug before fixtddProve-It: fail first
Hard bug / flaky / unclear root causediagnosethen debugging-and-error-recovery
Non-trivial invariant / “is this safe?”doubt-driven-developmentbefore clever sync/fix
Browser proof (Playwright e2e / snapshots / axe / DevTools MCP)browser-verifywas visual-verify + browser-testing-with-devtools
A11y, focus, forms, touchweb-qualityship-quality pass
Self-verify this sessioncheck-workafter implement
PR / branch reviewreviewcode-review-and-quality
Until named suite greenimplement-until-greenCI loop
Pre-launch go/no-goshipping-and-launchship if that’s what’s installed
Full feature plan→PRship-featuredelivery loop
File bugs conversationallyqanot a fix path
Auth / secrets / threat modelsecurity-and-hardeningsecurity-sensitive
Row-truth / quality flagsdata-semantic-qualitypipelines
Estimate vs later realized truthdata-product-evaldata product release
Identity attach / unresolved keysdata-identity-resolutiongrowing NULLs
Issue/PR closed but live metric unchangedthis hub (principle 8) then the data specialist that owns the numberresidual
UI still being built/redesigned (not proof yet)frontend-designthen return here to prove
A11y checklist during ship (not full redesign)web-qualityafter build
Unclear multi-step QAstart herepipeline A or B

Pipelines

A — Consumer UI (search, filters, trade, chat, sticky)

  1. tdd — race-aware tests if URL/debounce/local sync
    → if debounce/URL: read references/interaction-races.md
  2. Implement
  3. doubt-driven-development if any sync invariant
  4. browser-verify (type/click ~2s; no input flicker)
  5. web-quality if forms/focus/touch
  6. check-work before “done”

Do not claim done after unit green alone on consumer typing/sticky surfaces.

B — Production bug / regression

  1. diagnose — reproduce, minimize
  2. tdd — test that fails on old behavior
  3. Fix root cause
  4. Browser/visual proof if user-visible
  5. Tag defect class: state-sync | mobile-chrome | search-language | deploy-trust | label-data

C — Ship feature

  1. tdd while building
  2. frontend-design if UI
  3. check-work → review → shipping-and-launch if production
  4. If the change claims a live data/product number moved: principle 8 (metric-gated closeout)

E — Residual / metric-gated closeout

  1. Name the live metric before the change (query prod, not a doc)
  2. Ship the code/data change
  3. Re-measure the same metric from the same path
  4. If it did not move: the ticket is not closed — residual, not a new feature
  5. Estimate/coverage metrics → data-product-eval; identity rates → data-identity-resolution

D — Human QA session (file only)

  1. qa — clarify and file issues
  2. triage / to-issues if already planned
bug → diagnose → tdd → fix → [doubt] → browser proof → check-work
feature → tdd → [frontend-design] → check-work → review → ship

Shared principles (hub-level only)

1. Prove where the user lives

Vitest green ≠ consumer green. Search/filter/sticky/share: open a real browser before “done.”

Test: Would a user typing for two seconds notice flicker, rewind, or empty flash?

2. Interaction races

Local input + debounce + URL (or other external) sync → must read references/interaction-races.md before implementing or reviewing. Do not invent dual useEffect sync without that matrix. Row “settle, then extend” is the usual miss.

3. One shared primitive

If two features debounce the same URL param pattern, share one hook + one suite.

4. Adversarial review ≠ delete safety

If review says “remove this ref,” require: replacement invariant + which race-matrix row proves it.

5. Red before green on regressions

User-facing fix ships a test that failed on the old code (journey-shaped when racey).

6. Defect classes

Tag escaped bugs; add one automated check that would have blocked the class.

7. Minimum proof by risk

RiskMinimum proof
Pure logicunit / TDD
Debounce / URL / local syncrace matrix + 30s browser type
Sticky / gesture / densitybrowser-verify multi-viewport
Auth / money / PIIsecurity-and-hardening + review
Data truth (row flags)data-semantic-quality + golden pack
Published estimate / markdata-product-eval freeze + before/after
Identity resolution ratedata-identity-resolution + unresolved-rate

8. Merge is not the metric

CI green and a merged PR are not evidence a live number moved. Before claiming done on a data-product or residual ticket: write the metric, the query/path, the before value, and the after value. If after ≈ before, you shipped a residual.

Test: can you show the same production query before and after? If you only have a merge commit, you did not close it.

If specialist missing

Do not invent a fake skill name. Run the fallback, then note the gap.

Default skillFallback when not installed
tddWrite failing test first in project runner; implement; re-run
diagnoseReproduce → minimize → one hypothesis → instrument → fix → regression test
browser-verifyProject Playwright/e2e if any; else headed browser or DevTools MCP: sample UI 2s
check-workDiff + build/test + re-read user ask; list gaps
reviewStandards + spec pass on the diff; no drive-by refactors
doubt-driven-developmentFresh-context “find issues” pass on the invariant only
qagh issue create with repro steps; no code paths in body

Hard anti-patterns

  • Consumer UI ship with only unit tests
  • “Race-proof” after removing lastSynced without race-matrix row 3
  • Fix prod bug with no regression test
  • Using qa (file issues) when user asked to fix
  • check-work alone as proof of no visual flicker
  • Loading >3 specialists for one task
  • Snapshot/assert weaken to silence failures
  • Closing a data ticket because CI passed while the live metric is unchanged

When not to use this hub

TaskUse instead
Build / redesign product UI (implement path)frontend-design
Craft / mobile UX / density polishproduct-design
Marketing narrativemarketing
Lakehouse / DuckDB / ingest without verify intentdata
Spec before codespec / spec-driven-development
Imagesimagine
Design docs / PR plansbundled design (docs)

Build vs prove (with frontend-design)

PhaseHub
Build / redesign product UIfrontend-design
Prove / regression / e2e / ship checklistquality-check (this hub)
Full featurefrontend-design while implementing → this hub before done

Attribution / install: references/companion-install.md, references/sources.md.

Done criteria

  • Routed to default specialist(s) and opened their SKILL.md (or used fallback)
  • User-visible failure has an automated oracle
  • Debounce/URL sync: race matrix applied (L3 read)
  • Browser/visual proof when typing/layout/gesture risk is non-trivial
  • Regression: defect class tagged
  • Repo lint/typecheck/tests green as required
  • Merge-bound: check-work or review done
  • If a live metric was the success criterion: before/after captured from the same path

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.