| name | qa |
| description | Use when completing any task (final validation step), running audits, preparing for deployment, or when ESLint/TypeScript/build errors occur. |
QA Skill
Canonical Sources
This skill references the following globals — read them BEFORE starting work:
system/globals/responsiveness.md — Breakpoints, test order, anti-patterns
Domain
Testing, Validation, Code Quality, Launch Readiness
KPIs
| Metric | Target | Measurement |
|---|
| Lighthouse Best Practices | >90 | Lighthouse JSON → categories.best-practices.score * 100 |
| ESLint Errors | 0 | npm run lint -- --format json |
| ESLint Warnings | 0 | npm run lint -- --format json |
| Formatting Issues | 0 | npm run format:check |
| HTML Validation Errors | 0 | npx html-validate dist/ |
Rules
Build Pipeline
npm run check:kpis
npm run lint
npm run format:check
npx tsc --noEmit
npm run build
Pre-Launch Checklist
Content
Branding
Legal
Analytics & Forms
Performance
Lighthouse Targets
| Category | Minimum | Ideal |
|---|
| Performance | 90 | 95+ |
| Accessibility | 90 | 95+ |
| Best Practices | 90 | 95+ |
| SEO | 90 | 95+ |
Dark Mode Testing
Cross-Browser
Non-Negotiable
These rules always apply — even under time pressure, even for "just a small update":
- No commit without
npm run build. "I only changed text" — content changes can also break the build (missing frontmatter fields, broken links).
- No ESLint ignore without comment.
// eslint-disable-next-line is allowed, but only with an explanation of why the rule doesn't apply here.
- No skipping the QA pipeline. "It's urgent" is not an exception. The pipeline (
lint → format → tsc → build) takes under 30 seconds.
- Lighthouse always all 4 categories. Never measure only performance and ignore the rest. A score drop in any category is a blocker.
- Responsive test is part of QA. "Looks good on my monitor" doesn't count. At minimum, 375px and 1280px must be checked.
Before Applying
Read LEARNINGS.md in this directory to avoid known anti-patterns.