skills/visual-qa-pipeline/SKILL.md
Screenshot every page with Playwright, feed to visual QA agent for design evaluation, report results to Slack. Use after every build phase to verify UI matches the chosen design preset. Integrates with the Playwright skill and the website-creation preset system.
npx skillsauth add Cheggin/skill-chain visual-qa-pipelineInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Capture screenshots of every page, evaluate them against the design preset, report to Slack.
1. Start dev server (npm run dev)
2. Playwright captures full-page screenshots of every route
3. Each screenshot fed to visual QA agent (Claude vision)
4. Agent evaluates against the chosen design preset rules
5. Results posted to Slack with screenshots attached
6. PASS/FAIL verdict per page
npm install -D @playwright/test
npx playwright install chromium
Create playwright.config.ts:
import { defineConfig } from '@playwright/test';
export default defineConfig({
testDir: './e2e',
use: {
baseURL: 'http://localhost:3000',
screenshot: 'on',
viewport: { width: 1280, height: 720 },
},
webServer: {
command: 'npm run dev',
port: 3000,
reuseExistingServer: true,
},
});
For every route in the app, create an e2e test that:
e2e/screenshots/// e2e/screenshots.spec.ts
import { test } from '@playwright/test';
const routes = ['/', '/pricing', '/blog', '/legal/terms', '/legal/privacy'];
for (const route of routes) {
test(`screenshot ${route}`, async ({ page }) => {
await page.goto(route);
await page.waitForLoadState('networkidle');
const name = route === '/' ? 'home' : route.slice(1).replace(/\//g, '-');
await page.screenshot({
path: `e2e/screenshots/${name}.png`,
fullPage: true
});
});
}
After screenshots are captured, the visual QA agent evaluates each one.
The agent reads the screenshot (Claude vision / multimodal) and checks against the chosen design preset from the website-creation skill:
Each check: PASS (1) or FAIL (0). Total score out of 9.
After evaluation, post to Slack:
Visual QA Results — [Project Name]
Route: / (home)
Score: 8/9
- PASS: Hierarchy, Color, Typography, Spacing, Preset, Anti-patterns, Layout, Content
- FAIL: Mobile (hero text may overflow on 375px)
Screenshot: [attached]
For failures, include specific fix instructions.
# Capture screenshots
npx playwright test e2e/screenshots.spec.ts
# Screenshots saved to e2e/screenshots/
# Feed to visual QA agent for evaluation
The visual QA pipeline runs AFTER:
next build succeedsIt's Gate 3 in the quality pipeline: Tests → Build → Visual QA → Deploy
development
Design engineering principles for making interfaces feel polished. Use when building UI components, reviewing frontend code, implementing animations, hover states, shadows, borders, typography, micro-interactions, enter/exit animations, or any visual detail work. Triggers on UI polish, design details, "make it feel better", "feels off", stagger animations, border radius, optical alignment, font smoothing, tabular numbers, image outlines, box shadows.
documentation
Agentic memory system for writers - track characters, relationships, scenes, and themes
documentation
LLM Wiki — persistent markdown knowledge base that compounds across sessions (Karpathy model)
development
Build production-quality SaaS websites with opinionated design presets. Use when creating any startup website. The user MUST pick a design style before building. Enforces shadcn/ui, Figma design principles, specific CSS values per style, and anti-AI-writing. Load alongside anti-ai-writing skill. LIGHT MODE ONLY.