Launch and test the flash-card application locally to verify UI changes and auth workflows.
Install
mkdir -p .claude/skills/verify-achiermann && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/19066" && unzip -o skill.zip -d .claude/skills/verify-achiermann && rm skill.zipInstalls to .claude/skills/verify-achiermann
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Build, run and drive the flash-cards app locally to verify UI changes end-to-end (mobile + desktop viewports).Key capabilities
- →Build and launch the flash-cards app locally
- →Mint JWT tokens for local authentication without a password
- →Drive the UI using Playwright for end-to-end testing
- →Test UI changes across mobile and desktop viewports
- →Simulate user interactions like taps and swipes
How it works
This skill builds and launches the flash-cards app locally, provides a method to mint JWT tokens for authentication, and uses Playwright to drive the UI for end-to-end verification across different viewports.
Inputs & outputs
When to use verify
- →Verifying UI updates
- →Testing mobile responsive layouts
- →Validating auth states
About this skill
Verify flash-cards changes
Build / launch
npm run lintandnpm run buildfrom the repo root (warnings in Conjugator.js are pre-existing).- Dev server:
npx next dev -p 3111(avoid 3000 in case the user runs their own dev server). Ready in ~3s.
Auth handle (local only)
The app is behind custom JWT auth (auth_token httpOnly cookie, signed with
JWT_SECRET from .env.local). To drive it without a password, mint a token
with the project's own jsonwebtoken:
- Fetch one user row (read-only) from Supabase REST:
GET {NEXT_PUBLIC_SUPABASE_URL}/rest/v1/userdata?select=id,username&limit=1withapikey/Authorization: Bearer {SUPABASE_SERVICE_ROLE_KEY}andAccept-Profile: flash_cards(tables live in theflash_cardsschema, notpublic). jwt.sign({ id, username }, JWT_SECRET, { expiresIn: '1h' })→ set as theauth_tokencookie forhttp://localhost:3111.
Never print the env secrets; print only the token.
Drive
- Playwright library (no bundled browsers needed):
chromium.launch({ channel: 'chrome', headless: true })uses the installed system Chrome. Installplaywrightin a scratch dir, never in the repo (protected lockfile). - Mobile = viewport ≤768px wide (e.g. 390×844,
hasTouch: true, isMobile: true); desktop e.g. 1280×800. - Gotcha (cold profile): the home sets list won't render on the first visit of a fresh browser profile —
SetsControlcallsgetFilteredSets()without subscribing tosets, so it only shows data after the zustandpersistlocalStorage exists. Visit/, wait ~1.5s, thenpage.reload(). - Desktop selects a set by clicking
.set-item .set-content; mobile auto-selects the centered carousel card. - Swipes: dispatch synthetic
TouchEvents (touchstart/move/end withTouchobjects) on the element — React's root listeners pick them up.
Data safety
.env.local points at the user's real Supabase project. Keep runs read-only:
navigation, taps, swipes, scrolling. Do NOT submit add-word forms, click
Learned/archive/delete, or create sets (these PATCH/POST the real DB).
When not to use it
- →When performing write operations to the Supabase database
- →When installing Playwright directly into the repository
- →When the home sets list needs to render on the first visit of a fresh browser profile without a reload
Limitations
- →Runs must be read-only to avoid modifying the real Supabase DB
- →Playwright must be installed in a scratch directory, not the repo
- →The home sets list won't render on the first visit of a fresh browser profile without a `page.reload()`
How it compares
This workflow provides a specific method for local authentication using JWT and Playwright for UI driving, unlike a generic approach that might require manual login or different testing tools.
Compared to similar skills
verify side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| verify (this skill) | 0 | 13d | Review | Intermediate |
| epic-forms | 1 | 5mo | No flags | Intermediate |
| implementing-figma-ui-tempad-dev | 0 | 4mo | No flags | Intermediate |
| frontend-design-zh | 0 | 4mo | Review | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
epic-forms
epicweb-dev
Guide on forms with Conform and validation with Zod for Epic Stack
implementing-figma-ui-tempad-dev
ecomfe
Implement integration-ready UI code from a Figma selection or a provided nodeId using TemPad Dev MCP as the only source of design evidence (code snapshot, structure, screenshot, assets, tokens, codegen config). Detect the target repo stack and conventions first, then translate TemPad Dev’s Tailwind-like JSX/Vue IR into project-native code without adding new dependencies. Never guess key styles or measurements; avoid screenshot tuning loops. If required evidence is missing/contradictory or assets cannot be handled under repo policy, stop or ship a safe base with explicit warnings and omissions.
frontend-design-zh
L-LesterYu
使用 React、Tailwind CSS 和 shadcn/ui 创建独特、生产级的静态网站——无需设计稿。从纯文本需求生成大胆、令人难忘的设计,具备反AI套路美学、移动优先响应式模式和单文件打包功能。适用于构建落地页、营销网站、作品集、仪表盘或任何静态Web界面。支持 Vite(纯静态)和 Next.js(Vercel部署)两种工作流。
shadcn
Rain-kl
Manages shadcn components and projects — adding, searching, fixing, debugging, styling, and composing UI. Provides project context, component docs, and usage examples. Applies when working with shadcn/ui, component registries, presets, --preset codes, or any project with a components.json file. Also
nextjs-developer
zenobi-us
Expert Next.js developer mastering Next.js 14+ with App Router and full-stack features. Specializes in server components, server actions, performance optimization, and production deployment with focus on building fast, SEO-friendly applications.
shadcn-ui-setup
maneeshanif
Install and configure Shadcn/ui component library with Radix UI primitives, Aceternity UI effects, set up components, and manage the component registry. Use when adding Shadcn/ui to a Next.js project or installing specific UI components for Phase 2.