Agent skill

QA Testing

by rampstackco in rampstackco/claude-skills

Run QA testing on a page, feature, or full site at one of three depth tiers (smoke, standard, full).

MITAuto-check passedTesting & QA

Install QA Testing

skills CLI
$ npx skills add rampstackco/claude-skills --skill qa-testing -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install rampstackco/claude-skills qa-testing --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/rampstackco/claude-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/qa-testing .claude/skills/qa-testing && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
qa-testing
GitHub stars
935
Token cost
~3.2k tokens
SKILL.md length
890 words
Files
3 (incl. references)
Skills in repo
103
Repo updated
First seen
Licence
MIT

At a glance

Run QA testing on a page, feature, or full site at one of three depth tiers (smoke, standard, full).

  • Works in 6 steps: Pick the tier. Smoke for routine… → Run the snippet. Paste the appropriate… → Note failures. Each failure either gets… → …
  • The user asks to QA a page
  • SKILL.md covers When to use, When NOT to use, Required inputs and The framework: 3 tiers, plus 6 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

QA Testing is an agent skill from rampstackco/claude-skills. Run QA testing on a page, feature, or full site at one of three depth tiers (smoke, standard, full). Use this skill whenever the user asks to QA a page or site, run a smoke test after a deploy, verify a page before launch, or run a regression sweep. Triggers on QA, QA sweep, smoke test, regression test, post-deploy check, pre-launch check, verify the deploy, test this page, does the page render, broken link, 404, image not loading. Also triggers proactively after a deploy or a new page launch where verification…

Its SKILL.md is about 3.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including reference files (for example `README.md` and `references/qa-report-template.md`).

It sits in Testing & QA, covering QA and bug reports and Accessibility. The repository describes itself as: Stack-agnostic Claude Skills covering the full website lifecycle: brand, design, content, SEO, dev, ops, growth, and research. Build, ship, audit, optimize. The licence is MIT.

When your agent uses it

  • The user asks to QA a page
  • Run a smoke test after a deploy
  • Verify a page before launch
  • Run a regression sweep

Example prompts

  • “/qa-testing”

Workflow steps

6 steps, taken from the first numbered list in SKILL.md.

  1. Pick the tier. Smoke for routine deploys. Standard for new work. Full for releases.
  2. Run the snippet. Paste the appropriate console snippet, review output.
  3. Note failures. Each failure either gets fixed before ship or filed as a known issue.
  4. For Standard tier, add: visual review at 375px, 768px, and 1440px. Standard deliberately skips 1024px; the Full tier picks it up with the…
  5. For Full tier, add: cross-browser testing, Lighthouse audit, schema validation, security headers, 404 handling.
  6. Document. Use the template in references/qa-report-template.md for full audits.

What it can do on your machine

Read from SKILL.md and the folder at commit 482c9bf. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are javascript).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

QA Testing loads about 3.2k tokens when it runs, and up to ~4.3k if it reads all its reference files. Until then it costs about 189 tokens; SKILL.md has 890 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~189
When it runs · the whole SKILL.md, loaded when a task matches
~3.2k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~4.3k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from rampstackco/claude-skills at commit 482c9bf, republished under its MIT licence (© rampstackco). 890 words, ~3,224 tokens.

Download SKILL.mdSave it as .claude/skills/qa-testing/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
qa-testing
description
Run QA testing on a page, feature, or full site at one of three depth tiers (smoke, standard, full). Use this skill whenever the user asks to QA a page or site, run a smoke test after a deploy, verify a page before launch, or run a regression sweep. Triggers on QA, QA sweep, smoke test, regression test, post-deploy check, pre-launch check, verify the deploy, test this page, does the page render, broken link, 404, image not loading. Also triggers proactively after a deploy or a new page launch where verification matters. Covers accessibility, performance, and SEO at the surface-signal level only: deep audits belong to `accessibility-audit`, `performance-optimization`, and `seo-technical`, and code-level debugging to `code-review-web`.
category
qa
catalog_summary
Pre-launch QA, regression testing, cross-browser checks
display_order
1

QA Testing

Verify that a page, feature, or site is working before declaring it shipped. Stack-agnostic. Console-snippet driven for speed.

This skill is faster than accessibility-audit (which goes deeper on WCAG) and performance-optimization (which goes deeper on Core Web Vitals). Use this skill for general QA. Use the specialists for deep audits.


When to use

  • After every deploy (smoke test)
  • After launching a new page or feature (standard audit)
  • Before a major release (full release matrix)
  • Investigating a "something looks off" report
  • Pre-launch verification of a site or section

When NOT to use

  • Deep accessibility compliance work (use accessibility-audit)
  • Deep performance investigation (use performance-optimization)
  • Code review or debugging (use code-review-web)
  • Initial site setup or technical SEO baseline (use seo-technical)

Required inputs

  • The page URL or site under test
  • The tier of QA needed (smoke, standard, or full)
  • Browser dev tools access
  • Any specific concerns to check beyond the standard tier

The framework: 3 tiers

QA scales with the stakes. Pick the tier that matches the context.

TierWhen to runTimeCoverage
SmokeAfter every deploy2 minutesCritical signals only
StandardNew page or feature10 minutesOn-page basics, accessibility, structure
FullMajor release, pre-launch30+ minutesComprehensive across all dimensions
Tier 1: Smoke test

The 2-minute "did the deploy break anything obvious?" check. Run after every deploy.

Console snippet (paste in browser dev tools):

javascript
const smoke = {
  title: document.title,
  titleLen: document.title.length,
  canonical: document.querySelector('link[rel="canonical"]')?.href,
  h1Count: document.querySelectorAll('h1').length,
  missingAlts: [...document.querySelectorAll('img')].filter(i => !i.hasAttribute('alt')).length,
  schema: [...document.querySelectorAll('script[type="application/ld+json"]')]
    .map(s => { try { return JSON.parse(s.innerText)['@type'] } catch(e) { return 'invalid' } }),
  brokenImages: [...document.querySelectorAll('img')].filter(i => !i.complete || i.naturalWidth === 0).length,
};
console.log(JSON.stringify(smoke, null, 2));

Pass criteria:

  • Title exists and is 30 to 60 characters
  • Canonical points at the production domain (never staging or preview URLs)
  • Exactly one H1
  • Zero images missing the alt attribute. An empty alt="" on a decorative image is correct markup and passes; only an absent attribute fails.
  • Zero broken images
  • Every schema block parses (no invalid entries in the snippet output). Whether the types are the right ones for the page is a Full-tier check, against the Rich Results Test.

If any of these fail, do not proceed with deeper testing until the smoke issue is fixed.

Tier 2: Standard page audit

The 10-minute new-page-or-feature audit. Covers the on-page basics plus accessibility and structure.

Console snippet:

javascript
const audit = {
  title: document.title,
  titleLen: document.title.length,
  canonical: document.querySelector('link[rel="canonical"]')?.href,
  metaDesc: document.querySelector('meta[name="description"]')?.content,
  metaDescLen: document.querySelector('meta[name="description"]')?.content?.length,
  ogImage: document.querySelector('meta[property="og:image"]')?.content,
  ogTitle: document.querySelector('meta[property="og:title"]')?.content,
  twitterCard: document.querySelector('meta[name="twitter:card"]')?.content,
  h1Count: document.querySelectorAll('h1').length,
  h1Text: document.querySelector('h1')?.innerText,
  h2Count: document.querySelectorAll('h2').length,
  h2s: [...document.querySelectorAll('h2')].map(h => h.innerText.trim().slice(0, 60)),
  totalImages: document.querySelectorAll('img').length,
  missingAlts: [...document.querySelectorAll('img')].filter(i => !i.hasAttribute('alt')).length,
  brokenImages: [...document.querySelectorAll('img')].filter(i => !i.complete || i.naturalWidth === 0).length,
  externalLinksWithoutNoopener: [...document.querySelectorAll('a[target="_blank"]')]
    .filter(a => !a.rel?.includes('noopener')).length,
  schema: [...document.querySelectorAll('script[type="application/ld+json"]')]
    .map(s => {
      try {
        const d = JSON.parse(s.innerText);
        return d['@graph'] ? d['@graph'].map(x => x['@type']) : d['@type'];
      } catch(e) { return 'invalid' }
    }),
  hasSkipLink: [...document.querySelectorAll('a[href^="#"]')].slice(0, 3)
    .some(a => /skip/i.test(a.textContent) && !!document.getElementById(a.getAttribute('href').slice(1))),
  pageLanguage: document.documentElement.lang || 'NOT SET',
  hasFavicon: !!document.querySelector('link[rel*="icon"]'),
};
console.log(JSON.stringify(audit, null, 2));

Pass criteria (in addition to smoke):

  • Meta description: 120 to 160 characters
  • og:image, og:title, twitter:card present
  • H2s present and descriptive
  • All external links with target="_blank" have rel="noopener"
  • Page language declared (lang attribute on <html>)
  • Favicon present
Tier 3: Full release matrix

The 30-minute pre-launch check. Cover all dimensions.

DimensionPass criteria
Smoke and standardAll pass
Accessibility (basic)Run browser audit tool (e.g., Lighthouse), score above 90
Performance (basic)Every threshold in the report template's Performance checklist, INP included
Mobile responsivenessEvery viewport in the report template's responsiveness checklist
Cross-browserTested in Chrome, Safari, Firefox (and Edge if relevant audience)
FormsAll forms submit successfully and validate correctly
Internal linksNo broken internal links (sample 20 random)
External linksAll return 200 (sample 10)
SitemapReturns 200, lists canonical URLs only
robots.txtAllows production crawlers, blocks staging if applicable
Security headersHSTS, X-Frame-Options, X-Content-Type-Options present
HTTPSAll resources load over HTTPS, no mixed content
404 handling404 pages return HTTP 404 (not soft 200)
Schema validationAll schema validates in Rich Results Test
AnalyticsEvents fire as expected on key user actions
Cache behaviorCache headers appropriate for page type

For headers, run:

javascript
fetch(window.location.origin, { method: 'HEAD' })
  .then(r => {
    const headers = {};
    for (const [k, v] of r.headers.entries()) headers[k] = v;
    console.log(JSON.stringify(headers, null, 2));
  });

Look for: strict-transport-security, x-frame-options, x-content-type-options.


Show full SKILL.md (350 more words)Show less

Specific QA snippets

Image audit
javascript
const imgs = [...document.querySelectorAll('img')].map(i => ({
  src: i.src.split('/').pop().split('?')[0].slice(0, 60),
  alt: i.hasAttribute('alt') ? (i.alt === '' ? 'DECORATIVE (empty alt)' : i.alt) : 'MISSING',
  width: i.naturalWidth,
  height: i.naturalHeight,
  loaded: i.complete && i.naturalWidth > 0,
}));
console.table(imgs);
console.log({
  total: imgs.length,
  broken: imgs.filter(i => !i.loaded).length,
  noAlt: imgs.filter(i => i.alt === 'MISSING').length,
  decorative: imgs.filter(i => i.alt.startsWith('DECORATIVE')).length,
});
Heading hierarchy check
javascript
const headings = [...document.querySelectorAll('h1, h2, h3, h4, h5, h6')].map(h => ({
  level: parseInt(h.tagName[1]),
  text: h.innerText.trim().slice(0, 80),
}));
console.table(headings);

// Check for skipped levels
const levels = headings.map(h => h.level);
let skipped = false;
for (let i = 1; i < levels.length; i++) {
  if (levels[i] > levels[i-1] + 1) {
    console.warn(`Skipped from H${levels[i-1]} to H${levels[i]}: "${headings[i].text}"`);
    skipped = true;
  }
}
if (!skipped) console.log('No skipped heading levels');
Contrast spot-check
javascript
function contrast(bg, fg) {
  function lum(hex) {
    return [hex.slice(1,3), hex.slice(3,5), hex.slice(5,7)]
      .map(h => parseInt(h, 16) / 255)
      .map(v => v <= 0.03928 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4))
      .reduce((a, v, i) => a + v * [0.2126, 0.7152, 0.0722][i], 0);
  }
  const [l1, l2] = [lum(bg), lum(fg)];
  const r = ((Math.max(l1, l2) + 0.05) / (Math.min(l1, l2) + 0.05)).toFixed(2);
  return r + ':1 ' + (parseFloat(r) >= 4.5 ? 'PASS body' : parseFloat(r) >= 3 ? 'PASS large only' : 'FAIL');
}

// Examples
contrast('#FFFFFF', '#4B5563'); // body color check
contrast('#FFFFFF', '#9CA3AF'); // verify gray choices
Form audit (per form)
javascript
[...document.querySelectorAll('form')].forEach((form, i) => {
  const fields = [...form.querySelectorAll('input, select, textarea')].map(field => ({
    type: field.type || field.tagName.toLowerCase(),
    name: field.name,
    hasLabel: !!form.querySelector(`label[for="${field.id}"]`) || !!field.closest('label'),
    required: field.required,
  }));
  console.log(`Form ${i + 1}:`);
  console.table(fields);
});
javascript
const externalLinks = [...document.querySelectorAll('a[href^="http"]')]
  .filter(a => !a.href.includes(window.location.host));
const issues = externalLinks.filter(a =>
  a.target === '_blank' && (!a.rel?.includes('noopener') || !a.rel?.includes('noreferrer'))
);
if (issues.length) {
  console.warn(`${issues.length} external links missing noopener/noreferrer:`);
  issues.forEach(a => console.warn(a.href));
} else {
  console.log(`All ${externalLinks.length} external links properly attributed`);
}

Workflow

  1. Pick the tier. Smoke for routine deploys. Standard for new work. Full for releases.
  2. Run the snippet. Paste the appropriate console snippet, review output.
  3. Note failures. Each failure either gets fixed before ship or filed as a known issue.
  4. For Standard tier, add: visual review at 375px, 768px, and 1440px. Standard deliberately skips 1024px; the Full tier picks it up with the rest of the template's responsiveness checklist. Test the primary user flow.
  5. For Full tier, add: cross-browser testing, Lighthouse audit, schema validation, security headers, 404 handling.
  6. Document. Use the template in references/qa-report-template.md for full audits.

Failure patterns

  • Skipping smoke tests on "small" deploys. Half of broken-production incidents start with a deploy that "looked safe."
  • Running snippets but not reading the output. The console snippet is a tool. The judgment is reading what it returns.
  • Visual-only QA. Eyeballing a page misses missing alt text, broken schema, missing canonical. Always run the snippet.
  • Single-browser testing. Mobile Safari and Chrome differ enough to surprise you. Test at least Chrome and Safari.
  • No mobile QA. The 375px viewport is where most users live. Test there or get burned later.
  • Pass-fail with no remediation. A failed QA must produce a fix or a known-issue ticket. Failed QA that ships unfixed is process theater.

Output format

For smoke tests: console output is the report.

For standard and full audits: a markdown report at qa-report-[date].md. Use the template in references/qa-report-template.md.


If required data is unavailable

This skill's output depends on data, measurements, or tool results it cannot generate on its own. When a required input, tool, or data source is unavailable or unverifiable, the sanctioned output is the deliverable with the gap stated: what was needed, what was actually obtained or verified, and which parts of the output are affected. Fabricating, estimating, or interpolating a required number to complete the deliverable is never sanctioned. A stated gap is a complete answer.


Reference files

© rampstackco, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 2 other files (references) in skills/qa-testing of rampstackco/claude-skills.

  • SKILL.md
  • README.md
  • references/qa-report-template.md

Open the folder on GitHubat commit 482c9bf

Compare with similar skills

QA Testing next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

QA Testing compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
QA Testing this skillrampstackco/claude-skills935—~3.2kAutomated safety check: PassMIT
Agentic Browser Testingpetrkindlmann/qa-skills163—~4.5kAutomated safety check: PassMIT
Scoutqa Testgithub/awesome-copilot40k1 repos~3.5kAutomated safety check: PassMIT
QA Testingespennilsen/pi122—~2.9kAutomated safety check: PassMIT
QA Engineerdralgorhythm/claude-agentic-framework124—~631Automated safety check: PassNone
Prowl UI Verificationonevcat/Prowl631—~3.3kAutomated safety check: PassCustom licence

Similar skills

  • Agentic Browser Testing

    petrkindlmann/qa-skills

    Goal-driven E2E testing where a browser agent (Playwright MCP / computer-use) reads a natural-language goal and explores the app via the accessibility tree to assert outcomes — no pre-written script.

    163 GitHub stars~4.5k tokensUpdated 3 mo ago
    Testing & QAAuto-check passed
  • Scoutqa Test

    github/awesome-copilot

    Official

    This skill should be used when the user asks to "test this website", "run exploratory testing", "check for accessibility issues", "verify the login flow works", "find bugs on this page", or requests…

    40k GitHub starsUsed in 1 repo~3.5k tokens
    Testing & QAAuto-check passed
  • QA Testing

    espennilsen/pi

    Perform QA testing on running web applications using cmuxbrowser.

    122 GitHub stars~2.9k tokensUpdated 16 days ago
    Testing & QAAuto-check passed
  • QA Engineer

    dralgorhythm/claude-agentic-framework

    Define test strategy and verify quality against WCAG and testing-pyramid criteria — a user-invoked QA Engineer workflow.

    124 GitHub stars~631 tokensUpdated 2 mo ago
    Testing & QAAuto-check passed
  • Drives and verifies the native macOS Prowl Debug UI through accessibility automation, proving behavior with before-and-after evidence instead of reasoning from code.

    631 GitHub stars~3.3k tokensUpdated yesterday
    Testing & QAAuto-check passed
  • Kb Testing Strategy

    Community-Access/accessibility-agents

    Reference data, not a reviewer. An agent skill from Community-Access/accessibility-agents.

    421 GitHub stars~1.4k tokensUpdated 14 days ago
    Testing & QAAuto-check passed

More from rampstackco/claude-skills

All 103 skills in this repo
  • After Action Report

    rampstackco/claude-skills

    Run a structured after-action review (postmortem, retrospective) on a launch, incident, or completed project to capture timeline, root cause analysis, contributing factors, and actionable lessons.

    935 GitHub starsUsed in 1 repo~2.5k tokens
    Auto-check passed
  • Analytics Strategy

    rampstackco/claude-skills

    Design measurement frameworks including event taxonomy, KPI hierarchy, dashboard architecture, attribution models, and analytics implementation strategy.

    935 GitHub starsUsed in 1 repo~2.4k tokens
    Auto-check passed
  • Brand Style Guide

    rampstackco/claude-skills

    Build or audit a comprehensive brand style guide that documents the full brand system including story, logo system, color, typography, imagery, voice, applications, and dos/don'ts.

    935 GitHub stars~2.1k tokensUpdated today
    Auto-check passed
  • Brand Voice

    rampstackco/claude-skills

    Develop or document a complete brand voice and tone system covering voice attributes, tone shifts by context, vocabulary preferences, grammar rules, and copy examples.

    935 GitHub stars~2.2k tokensUpdated today
    Auto-check passed
  • Content And Copy

    rampstackco/claude-skills

    Write or edit website copy, blog content, and editorial pieces with attention to voice, structure, and goal.

    935 GitHub stars~2.1k tokensUpdated today
    Auto-check passed
  • Content Strategy

    rampstackco/claude-skills

    Develop a content strategy covering editorial positioning, content pillars, formats, calendar, governance, and topical authority planning.

    935 GitHub stars~2.6k tokensUpdated today
    Auto-check passed

Questions about QA Testing

What does QA Testing do?

Run QA testing on a page, feature, or full site at one of three depth tiers (smoke, standard, full). QA Testing is an agent skill from rampstackco/claude-skills. Run QA testing on a page, feature, or full site at one of three depth tiers (smoke, standard, full).

When should I use QA Testing?

QA Testing fits situations like: the user asks to QA a page; run a smoke test after a deploy; verify a page before launch; run a regression sweep.

How do I install QA Testing in Claude Code?

Run `npx skills add rampstackco/claude-skills --skill qa-testing -a claude-code`. Or copy the skill folder (skills/qa-testing in rampstackco/claude-skills) into .claude/skills/qa-testing in your project. Claude Code loads it when a task matches its description.

How do I install QA Testing in Codex?

Run `npx skills add rampstackco/claude-skills --skill qa-testing -a codex`. Or copy the skill folder (skills/qa-testing in rampstackco/claude-skills) into .agents/skills/qa-testing in your project. Codex loads it when a task matches its description.

Can I use QA Testing in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add rampstackco/claude-skills --skill qa-testing -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/qa-testing, .gemini/skills/qa-testing, .github/skills/qa-testing and .opencode/skills/qa-testing in your project.

What does QA Testing need to run?

SKILL.md names no scripts, command-line tools or credentials: QA Testing is instructions for the agent only.

Does QA Testing access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is QA Testing safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does QA Testing use?

QA Testing is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does QA Testing use?

About 3.2k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.1k tokens, read only when the agent opens those files.

What are the alternatives to QA Testing?

Skills that share tags, products or a category with QA Testing: Agentic Browser Testing (petrkindlmann/qa-skills, 163 stars), Scoutqa Test (github/awesome-copilot, 40k stars), QA Testing (espennilsen/pi, 122 stars) and QA Engineer (dralgorhythm/claude-agentic-framework, 124 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains QA Testing?

rampstackco (a GitHub organization) maintains it in rampstackco/claude-skills, which has 935 GitHub stars. The repository holds 103 skills in this directory. The repository was last updated on October 7, 2026.

Source: rampstackco/claude-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.