Getting it into your agent
It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.
git clone --depth 1 https://github.com/stefan-stepzero/shipkitnpx agentmods add skills/stefan-stepzero/shipkit/shipkit-qa-visualWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/stefan-stepzero/shipkit/shipkit-qa-visual)<a href="https://agentmods.dev/skills/stefan-stepzero/shipkit/shipkit-qa-visual"><img src="https://agentmods.dev/badge/skills/stefan-stepzero/shipkit/shipkit-qa-visual/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/stefan-stepzero/shipkit/shipkit-qa-visual"><img src="https://agentmods.dev/badge/skills/stefan-stepzero/shipkit/shipkit-qa-visual.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00045 | $0.02787 |
| Opus 5.5 | $0.00018 | $0.01115 |
| Sonnet 5.5 | $0.00009 | $0.00557 |
| Haiku 4.5 | $0.00005 | $0.00279 |
Grade A, and why
shipkit-qa-visual scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
2. Probe common ports: `curl -s -o /dev/null -w "%{http_code}" http://localhost:3000` (try 3000, 5173, 4321, 8080, 6847) How it starts
The opening of the file, as written. The whole thing — 328 lines — stays where its author put it; the contents beside it link to each section on GitHub.
shipkit-qa-visual
Visual QA for SaaS apps using Playwright as a lightweight browser automation library — not a test framework. Write an inline script, run it, screenshot meaningful states, read the screenshots, report against UI goals.
Modes
Parse $ARGUMENTS to determine mode:
--setup→ Run the Setup flow (one-time per project)- Anything else (or empty) → Run the Visual QA flow
Setup Mode (--setup)
One-time project setup. Walk through each step, skip any that are already done.
1. Install Playwright
Check if playwright is in package.json devDependencies. If not:
npm install -D @playwright/test playwright
Then install Chromium (warn user about ~200MB download):
npx playwright install chromium
2. Create playwright.config.ts
Only if it doesn't exist at the project root. Detect the app's base URL first:
- Check
$ARGUMENTSfor a URL - Probe common ports:
curl -s -o /dev/null -w "%{http_code}" http://localhost:3000(try 3000, 5173, 4321, 8080, 6847) - Check
package.jsonscripts for port hints - Ask the user if none found
import { defineConfig, devices } from '@playwright/test';
export default defineConfig({
testDir: './e2e',
fullyParallel: false,
retries: 0,
timeout: 120_000,
expect: { timeout: 30_000 },
use: {
baseURL: '<detected-url>',
trace: 'on-first-retry',
screenshot: 'only-on-failure',
},
projects: [
{ name: 'chromium', use: { ...devices['Desktop Chrome'] } },
],
});
3. Create directories
mkdir -p screenshots e2e
Add screenshots/ to .gitignore if not already there.
4. Create UI Goals
This is the interactive step. The goals document grounds all future visual feedback.
Scan the codebase for routes/pages:
- Next.js: glob
app/**/page.{tsx,ts,jsx,js}andpages/**/*.{tsx,ts,jsx,js}(exclude_app,_document,api/) - React Router: grep for
<RouteorcreateBrowserRouter - Other: grep for route definitions
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago First seen · 328 lines · 45 tokens per session scan A e2556a0ef011
shipkit-qa-visual is a skill published in the GitHub repository stefan-stepzero/shipkit (1 stars, last pushed 3mo ago), licensed MIT. It adds 45 tokens to every session and 2,787 once invoked, about $0.0002 per session on Opus 5.5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
browser-test-loop
Use to actually verify a web change in a real browser instead of assuming it works — click through a flow, catch console errors, check a form submits, confirm a fix on the page. Trigger when a UI change needs proof, a bug only reproduces in the browser, or the user asks to test, check, or screenshot the running app.
playwright
Playwright end-to-end testing best practices for web applications, covering test design, locator strategies, and assertion patterns.
playwright-cursor-rules
Expert guidance for Playwright end-to-end testing with TypeScript and JavaScript best practices.
agent-e2e-test-specialist
Specialist subagent: Playwright, Cypress, and visual regression testing specialist. Use only when the user explicitly asks for E2E tests, browser test automation, or visual regression testing. Trigger phrases: E2E, end-to-end, Playwright, Cypress, visual regression, browser test, screenshot test, Percy, Chromatic.
cypress-ops
Cypress end-to-end and component testing operations - selector/retry-ability strategy, cy.intercept network stubbing, cy.session auth, component vs e2e, flake diagnosis, CI, Test Replay. Use for: cypress, e2e test, component test, cy.get, cy.intercept, cy.session, data-cy, data-test, retry-ability, flake, flaky test…
playwright-ops
Playwright end-to-end testing operations - selectors, fixtures, network mocking, auth, parallelism, CI, visual regression, flake hunting. Use for: playwright, e2e test, end-to-end testing, browser test, getByRole, page object, storageState, trace viewer, flaky test, test sharding, visual regression, toHaveScreenshot…