Agent skill

Frontend Verify

by ucsandman in ucsandman/marketing-studio

Verify frontend changes end to end after editing a web app, instead of manually clicking through pages.

MITAuto-check passedTesting & QA

Install Frontend Verify

skills CLI
$ npx skills add ucsandman/marketing-studio --skill frontend-verify -a claude-code

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

GitHub CLI
$ gh skill install ucsandman/marketing-studio frontend-verify --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/ucsandman/marketing-studio.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/frontend-verify .claude/skills/frontend-verify && 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
frontend-verify
GitHub stars
251
Token cost
~2.4k tokens
SKILL.md length
1,166 words
Files
3 (incl. scripts, references)
Skills in repo
13
Repo updated
First seen
Licence
MIT

At a glance

Verify frontend changes end to end after editing a web app, instead of manually clicking through pages.

  • Works in 8 steps: Find what changed → Derive the affected routes → Make sure the dev server is running → …
  • Tasks that involve QA and bug reports
  • SKILL.md covers What this replaces, The one principle that matters, When to take a screenshot and Setup check, plus 7 more sections
  • Runs JavaScript scripts from its folder; calls git, npm and node

What it does

Frontend Verify is an agent skill from ucsandman/marketing-studio. Verify frontend changes end to end after editing a web app, instead of manually clicking through pages. Use this whenever you have changed UI code and need to confirm nothing broke: "verify my frontend", "check the site after these edits", "did my UI break", "did my changes break anything", "make sure these routes still work", "smoke test the app", "check for console errors", "validate the pages I touched". Works with Next.js (app and pages router), React, Vite, and any local dev server. Built to be token cheap…

Its SKILL.md is about 2.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 4 other files, including scripts and reference files (for example `references/playwright-cli-cheatsheet.md`).

It sits in Testing & QA, covering QA and bug reports. It works with Next.js, Vite and React. The repository describes itself as: Create product launch assets with Remotion, then review and distribute them through guarded, dry-run-first workflows. The licence is MIT.

When your agent uses it

  • Tasks that involve QA and bug reports

Example prompts

  • “verify my frontend”
  • “check the site after these edits”
  • “did my UI break”
  • “/frontend-verify”

Requirements

  • Node.js

Workflow steps

8 steps, taken from the step headings in SKILL.md.

  1. Find what changed
  2. Derive the affected routes
  3. Make sure the dev server is running
  4. Write a config and run
  5. Read the summary, not the world
  6. Drill in only when flagged
  7. Decide on a screenshot
  8. Report

What it can do on your machine

Read from SKILL.md and the folder at commit 66cd1c3. 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

    Ships 1 file in scripts/ (JavaScript), which the agent can run.

    Shell commands in SKILL.md call:

    • git
    • npm
    • node

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

  • Network

    No URLs in SKILL.md. Its commands use git and npm, which can reach the network depending on how they are called.

    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

Frontend Verify loads about 2.4k tokens when it runs, and up to ~3.5k if it reads all its reference files. Until then it costs about 190 tokens; SKILL.md has 1,166 words of instructions outside code blocks.

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

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); the scripts in this folder are not scanned.

SKILL.md

The full file from ucsandman/marketing-studio at commit 66cd1c3, republished under its MIT licence (© ucsandman). 1,166 words, ~2,448 tokens.

Download SKILL.mdSave it as .claude/skills/frontend-verify/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
frontend-verify
description
Verify frontend changes end to end after editing a web app, instead of manually clicking through pages. Use this whenever you have changed UI code and need to confirm nothing broke: "verify my frontend", "check the site after these edits", "did my UI break", "did my changes break anything", "make sure these routes still work", "smoke test the app", "check for console errors", "validate the pages I touched". Works with Next.js (app and pages router), React, Vite, and any local dev server. Built to be token cheap: it reads console errors and failed network requests first and writes full page state to disk, so it only pulls a snapshot or a screenshot into context when a route actually fails. Use it before saying a frontend change is done.

Frontend Verify

What this replaces

The slow loop is: edit code, start the dev server, open a browser, click each page, watch the console, eyeball the layout, repeat. This skill does that pass programmatically with @playwright/cli running headless, and it does it without dumping every page state into the model context.

The one principle that matters

Reading a full accessibility snapshot or a screenshot into context on every route is the expensive part, not running the browser. So the order of operations is always cheapest signal first:

  1. Console errors and failed network requests. Tiny text, catches most real breakage (crashed component, bad fetch, 500 from an API route).
  2. Targeted text assertions. Ask the page "is the word Dashboard on screen", not "give me the whole DOM".
  3. A snapshot written to disk, read back only for a route that already failed.
  4. A screenshot, only as a last resort.

verify-routes.mjs runs steps 1 and 2 across all changed routes in one browser pass, writes the detail to disk, and prints a compact PASS / WARN / FAIL table. You read the table, then open detail files for flagged routes only. Do not read detail for routes that passed.

When to take a screenshot

Almost never. Reach for one only when:

  • A route is canvas, WebGL, or PixiJS. The accessibility tree is blind to pixels drawn on a canvas, so text and console checks cannot see the actual render.
  • You are chasing a visual or layout regression (overlap, spacing, z-index, styling) that text cannot describe.
  • The user explicitly asks to see the page.

For everything else, the console plus a text assertion tells you whether the page works. A screenshot tells you how it looks, which is a different and more expensive question.

Setup check

Confirm the CLI is installed before running anything:

playwright-cli --help

If that fails, the user installs it once with (PowerShell):

npm install -g @playwright/cli@latest
playwright-cli install-browser chrome-for-testing

It runs headless by default, so no window opens during a verify run.

The flow

1. Find what changed
git diff --name-only
git diff --name-only --staged

Keep the files under the frontend (for Next.js that is app/, pages/, components/, src/). Ignore server only, config, and test files unless they back a route you are checking.

2. Derive the affected routes

This is the judgment step. Map changed files to URLs:

  • Next.js app router: app/dashboard/page.tsx serves /dashboard. app/page.tsx serves /. Strip route groups in parentheses, so app/(marketing)/pricing/page.tsx serves /pricing. A [slug] segment needs a real value, so pick one that exists (for example /blog/hello-world).
  • Next.js pages router: pages/about.tsx serves /about, pages/index.tsx serves /.
  • A changed shared component does not map to a route on its own. Find the pages that import it and check those:
    git grep -l "PricingCard" -- "*.tsx" "*.jsx"
    Then map those importing files to routes the same way. Walk up until you reach files that are actual routes.

If the route set is unclear, ask the user which routes the change should affect rather than crawling the whole site. Verify only what changed.

3. Make sure the dev server is running

The config points at a base URL like http://localhost:3000. If nothing is serving there, start the dev server (for example npm run dev) in a separate terminal first, or ask the user to. verify-routes.mjs will report a navigation failure if the server is down, which is the signal to start it.

4. Write a config and run

Create a small JSON config (shape below) listing the affected routes, then:

node <skill-path>/scripts/verify-routes.mjs verify.json

The script exits non zero if any route fails, so it slots into a chain that should stop on failure.

5. Read the summary, not the world

The script prints something like:

[PASS] /
[FAIL] /pricing    2 JS console error(s); 1 request failure(s)
[WARN] /play       canvas route: accessibility tree is blind

That table plus report.json is usually all you need. Only open .frontend-verify/<route>/detail.json for a route marked FAIL or WARN. That file has the exact error lines and the failed request log. console.txt and requests.txt sit next to it if you want the raw capture.

6. Drill in only when flagged

For a failing route, after reading its detail.json:

  • Need to see the rendered structure: write a snapshot to disk and read that one file, do not stream it inline.
    playwright-cli -s=fe-verify goto http://localhost:3000/pricing
    playwright-cli -s=fe-verify snapshot --filename snap.yml
  • Need one specific value: use a targeted eval instead of a whole snapshot.
    playwright-cli -s=fe-verify --raw eval "document.querySelector('h1')?.innerText"
Show full SKILL.md (483 more words)Show less
7. Decide on a screenshot

Apply the rule above. If the route is canvas or PixiJS, or the bug is visual, take one screenshot and look. Otherwise stop, you already know if it works.

8. Report

State, per route, PASS or FAIL and the reason, then a one line verdict. Do not restate passing detail. See the report template at the end.

Config shape

json
{
  "baseUrl": "http://localhost:3000",
  "session": "fe-verify",
  "settleMs": 800,
  "apiFilter": "/api/",
  "checkWarnings": false,
  "outDir": ".frontend-verify",
  "routes": [
    {
      "path": "/",
      "expectText": ["Dashboard"],
      "expectNoText": ["NaN", "undefined"]
    },
    {
      "path": "/pricing",
      "waitForText": "Pro plan"
    },
    {
      "path": "/play",
      "canvas": true
    }
  ]
}

Field notes:

  • expectText: substrings that must appear in the page body. Missing one is a FAIL.
  • expectNoText: substrings that must not appear. "NaN" and "undefined" are cheap catches for broken data binding.
  • waitForText: for async or client rendered routes, poll until this text shows before checking. Use it when content arrives after a fetch.
  • canvas: marks a canvas / WebGL / PixiJS route so a clean text pass is reported as WARN, not a false PASS, since the checks cannot see the canvas.
  • settleMs: pause after load so client side fetches fire and failed API calls register. Raise it for slow pages.
  • apiFilter: regex, only list requests whose URL matches. /api/ keeps the request log focused on your own calls.
  • checkWarnings: set true to surface console warnings as WARN. Off by default so warning noise does not bury real failures.

Auth protected routes

Log in once and save the browser state, then point the config at it:

playwright-cli -s=fe-verify open
playwright-cli -s=fe-verify goto http://localhost:3000/login
# drive the login with find / form_input / eval, then:
playwright-cli -s=fe-verify state-save auth.json

Add "stateFile": "auth.json" to the config. The script loads it before visiting routes, so protected pages render as a logged in user.

Token rules

Do:

  • Run verify-routes.mjs once over the changed routes and read the summary.
  • Open detail files only for flagged routes.
  • Use --filter on requests and targeted eval to pull single values.
  • Write snapshots and screenshots to disk; read a file back only when needed.

Do not:

  • Crawl or verify routes the change did not touch.
  • Read a full snapshot or screenshot into context just to confirm a page loaded.
  • Screenshot a route the console and text checks already cleared.
  • Re-snapshot a route on every small edit when the console is already clean.

Caveats

  • Canvas, WebGL, and PixiJS render to pixels the accessibility tree cannot read. Verify those by evaluating app state on window (for example a game store or a ready flag) or by taking one screenshot.
  • Web components using shadow DOM can hide content from the snapshot. Standard Next.js, React, and Tailwind are not affected. If a Lit or web component route reads empty, fall back to a screenshot.
  • playwright-cli goto exits 0 even when navigation fails (connection refused, DNS error). The script already detects this from the command output, so trust its navigation-failed result over a raw exit code if you run goto yourself.

Report template

Frontend verify: <branch or change summary>

[PASS] /                ok
[FAIL] /pricing         2 JS console errors, 1 failed /api/plans (500)
[WARN] /play            canvas route, screenshot checked: renders correctly

Verdict: 1 route broken. /pricing throws in PricingCard and its plans
fetch returns 500. Fix before shipping.

Files

  • scripts/verify-routes.mjs: the verification driver. Reads a JSON config, runs one headless pass, writes detail to disk, prints the summary, exits non zero on any failure.
  • references/playwright-cli-cheatsheet.md: the verification focused command list and the output-format gotchas. Read it before driving playwright-cli by hand.

© ucsandman, 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 (scripts, references) in skills/frontend-verify of ucsandman/marketing-studio.

  • SKILL.md
  • references/playwright-cli-cheatsheet.md
  • scripts/verify-routes.mjs

Open the folder on GitHubat commit 66cd1c3

Compare with similar skills

Frontend Verify 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.

Frontend Verify compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Frontend Verify this skillucsandman/marketing-studio251—~2.4kAutomated safety check: PassMIT
Senior QAnicepkg/auto-company1943 repos~1.1kAutomated safety check: NotesNone
Convex Self Hostingwaynesutton/markdown-site628—~1.4kAutomated safety check: PassMIT
Add React Analyticsgotempsh/temps828—~2.7kAutomated safety check: PassApache-2.0
Vercel Geist Design Systemsyhily/kobato114—~3.3kAutomated safety check: PassMIT
Workos Widgetsusenotra/notra256—~2kAutomated safety check: PassAGPL-3.0

Similar skills

  • Senior QA

    nicepkg/auto-company

    Comprehensive QA and testing skill for quality assurance, test automation, and testing strategies for ReactJS, NextJS, NodeJS applications.

    194 GitHub starsUsed in 3 repos~1.1k tokens
    Testing & QAAuto-check: notes
  • Convex Self Hosting

    waynesutton/markdown-site

    Integrate Convex static self hosting into existing apps using the latest upstream instructions from get-convex/self-hosting every time.

    628 GitHub stars~1.4k tokensUpdated 4 mo ago
    DevOps & CloudAuto-check passed
  • Add React Analytics

    gotempsh/temps

    Add Temps analytics to React applications with comprehensive tracking capabilities including page views, custom events, scroll tracking, engagement monitoring, session recording, and Web Vitals…

    828 GitHub stars~2.7k tokensUpdated today
    DevOps & CloudAuto-check passed
  • Community skill for applying the Geist design system to Vercel-inspired rendered frontend UI across React/Next.js/Vite/Astro/Svelte/Vue/HTML/CSS, Tailwind, shadcn, and Radix.

    114 GitHub stars~3.3k tokensUpdated 9 days ago
    Frontend & DesignAuto-check passed
  • Workos Widgets

    usenotra/notra

    A skill your agent uses when the user is implementing, embedding, or debugging a WorkOS Widget — specifically the User Management, User Profile, Admin Portal SSO Connection, or Admin Portal Domain…

    256 GitHub stars~2k tokensUpdated today
    AI & LLM EngineeringAuto-check passed
  • React performance optimization guidelines from Vercel Engineering (vercel-labs/agent-skills).

    1.3k GitHub stars~2k tokensUpdated today
    Frontend & DesignAuto-check passed

More from ucsandman/marketing-studio

All 13 skills in this repo
  • Launch

    ucsandman/marketing-studio

    Take a developed project end-to-end through launch — domain, hosting, payments, email infra, algorithm-researched copy, and multi-platform distribution — with zero copy-paste.

    251 GitHub stars~2.2k tokensUpdated 1 mo ago
    Auto-check: notes
  • Announce

    ucsandman/marketing-studio

    A skill your agent uses when a product or feature is ready to go public — after shipping, when the user says "announce it", "go live", "tell people about it", or wants a release marketed end to end.

    251 GitHub stars~1.5k tokensUpdated 1 mo ago
    Auto-check passed
  • Audio Track

    ucsandman/marketing-studio

    A skill your agent uses when the user wants music, voiceover, narration, or a soundtrack added to a video asset, OR wants standalone generated audio for any purpose (e.g.

    251 GitHub stars~1.1k tokensUpdated 1 mo ago
    Auto-check: notes
  • Launch Video

    ucsandman/marketing-studio

    A skill your agent uses when the user wants a full launch video, hero video, or 20–60s product film combining product proof, brand, narration, music, and authored motion.

    251 GitHub stars~980 tokensUpdated 1 mo ago
    Auto-check passed
  • Marketing

    ucsandman/marketing-studio

    A skill your agent uses when the user wants the complete marketing asset suite for a product in one run — "/marketing", "build all the marketing assets", "generate everything for the launch", "all…

    251 GitHub stars~5.5k tokensUpdated 1 mo ago
    Auto-check passed
  • Marketing Studio

    ucsandman/marketing-studio

    A skill your agent uses when generating any brand video, animation, image, or audio asset (logo reveal, social clip, product demo, launch video, OG image, README GIF, music, voiceover) for any…

    251 GitHub stars~1k tokensUpdated 1 mo ago
    Auto-check passed

Questions about Frontend Verify

What does Frontend Verify do?

Verify frontend changes end to end after editing a web app, instead of manually clicking through pages. Frontend Verify is an agent skill from ucsandman/marketing-studio. Verify frontend changes end to end after editing a web app, instead of manually clicking through pages.

When should I use Frontend Verify?

Frontend Verify fits situations like: tasks that involve QA and bug reports.

How do I install Frontend Verify in Claude Code?

Run `npx skills add ucsandman/marketing-studio --skill frontend-verify -a claude-code`. Or copy the skill folder (skills/frontend-verify in ucsandman/marketing-studio) into .claude/skills/frontend-verify in your project. Claude Code loads it when a task matches its description.

How do I install Frontend Verify in Codex?

Run `npx skills add ucsandman/marketing-studio --skill frontend-verify -a codex`. Or copy the skill folder (skills/frontend-verify in ucsandman/marketing-studio) into .agents/skills/frontend-verify in your project. Codex loads it when a task matches its description.

Can I use Frontend Verify 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 ucsandman/marketing-studio --skill frontend-verify -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/frontend-verify, .gemini/skills/frontend-verify, .github/skills/frontend-verify and .opencode/skills/frontend-verify in your project.

What does Frontend Verify need to run?

Going by SKILL.md and its folder, Frontend Verify needs JavaScript for the scripts in its folder and the command-line tools its instructions call (git, npm and node). Our summary lists: Node.js.

Does Frontend Verify access the network?

SKILL.md contains no URLs. Its commands use git and npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Frontend Verify 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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Frontend Verify use?

Frontend Verify 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 Frontend Verify use?

About 2.4k tokens (SKILL.md is roughly 9.8k 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 1k tokens, read only when the agent opens those files.

What are the alternatives to Frontend Verify?

Skills that share tags, products or a category with Frontend Verify: Senior QA (nicepkg/auto-company, 194 stars), Convex Self Hosting (waynesutton/markdown-site, 628 stars), Add React Analytics (gotempsh/temps, 828 stars) and Vercel Geist Design System (syhily/kobato, 114 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Frontend Verify?

ucsandman (a GitHub user) maintains it in ucsandman/marketing-studio, which has 251 GitHub stars. The repository holds 13 skills in this directory. The repository was last updated on September 6, 2026.

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