plugins/frontend/skills/frontend-design/SKILL.md
Create distinctive, production-grade frontend interfaces with visual verification. Use this skill when the user asks to build web components, pages, landing pages, dashboards, React/Vue/Svelte components, HTML/CSS layouts, or any web UI that needs to look polished. Also activates when styling, beautifying, redesigning, or doing visual refresh of existing UI. Covers the full loop: design thinking, code generation, and browser-based visual verification to iterate until the result actually looks right. Use this skill even if the user doesn't explicitly say 'design' — any request to build or improve a web interface benefits from this skill's aesthetic guidance and verification workflow.
npx skillsauth add anton-abyzov/vskill frontend-designInstall 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.
Build distinctive, production-grade frontend interfaces — then verify they actually look right in a real browser. This skill closes the gap between "generate code" and "ship something beautiful" by combining bold design thinking with a browser-based verification loop.
Writing frontend code without seeing the result is like painting blindfolded. Generic AI-generated UIs happen because the model never sees what it produced — it can't catch misaligned layouts, clashing colors, or broken animations. This skill ensures you always close the loop: generate code, open it in a browser, see what it looks like, and iterate until it's genuinely good.
Before writing any code, commit to a clear aesthetic direction. The goal is intentionality — bold maximalism and refined minimalism both work when executed with precision.
Pick a strong conceptual direction and execute it consistently:
Font choice is the single biggest design signal. Generic fonts (Inter, Roboto, Arial, system defaults) immediately signal "AI-generated."
Animation creates delight when used with intention. One well-orchestrated page load with staggered reveals creates more impact than scattered micro-interactions everywhere.
animation-delay), scroll-triggered transitions, hover states that surpriseprefers-reduced-motion — wrap animations in a media queryBreak out of the grid occasionally. Unexpected layouts — asymmetry, overlap, diagonal flow, grid-breaking hero elements — create visual interest. Balance generous negative space with controlled density depending on the aesthetic direction.
Create atmosphere and depth rather than defaulting to solid colors. Gradient meshes, noise textures, geometric patterns, layered transparencies, dramatic shadows, decorative borders, custom cursors, and grain overlays all contribute to a distinctive feel.
Generate working code (HTML/CSS/JS, React, Vue, Svelte, etc.) that is production-grade, visually striking, and cohesive.
Check the project for its tech stack before generating code:
package.json with react / next → React/Next.js (JSX + CSS Modules or Tailwind)package.json with vue → Vue SFCpackage.json with svelte → Svelte componentstailwind.config.* → Use Tailwind utility classesEvery image slot must show something — never leave empty placeholders:
https://i.pravatar.cc/150?u={unique-id}https://picsum.photos/seed/{slug}/{width}/{height}Intl.NumberFormat for prices, Intl.DateTimeFormat for dates — showing $NaN or Invalid Date is a critical visual bug:focus-visible)<nav>, <main>, <article>, <button> over generic <div>prefers-reduced-motion media query wrapping all animationsThis is the key differentiator. After generating code, verify it visually and iterate.
Check which browser tools are available, in order of preference:
1. Chrome Extension (best for interactive development)
If mcp__claude_in_chrome__* tools are available — the Chrome extension is connected. This gives you direct access to the user's real browser with their login state, live DOM inspection, and console error reading.
2. Playwright MCP (best for automated/headless verification)
If mcp__playwright__* tools are available — the Playwright MCP server is configured. This gives you programmatic browser control with screenshots, accessibility tree snapshots, and console message capture. Works headless for CI/CD.
3. Playwright CLI (fallback)
If neither MCP is available but the project has @playwright/test in package.json or a playwright.config.* file, you can run npx playwright test for basic E2E verification.
4. No browser tools available
Generate the code using design principles only. Suggest the user set up browser verification — read references/browser-verification-setup.md for instructions and share the relevant setup steps.
Regardless of which browser tool is available, follow this loop:
1. Generate/update the frontend code
2. Ensure the dev server is running (or open the HTML file)
3. Open the page in the browser
4. Take a screenshot or visually inspect the rendered result
5. Evaluate against the design intent:
- Does the layout match the intended composition?
- Are fonts rendering correctly (not falling back to system fonts)?
- Do colors feel cohesive and intentional?
- Are animations smooth and purposeful?
- Is the page responsive at different viewport widths?
- Are there any console errors?
6. If something is off → fix the code and go back to step 2
7. If it looks right → move on
- Navigate to the dev server URL (e.g., http://localhost:3000)
- Visually inspect the page — you can see it directly
- Check the console for errors or warnings
- Test interactions: hover states, click handlers, form flows
- If the user is logged in, test authenticated views
- Resize the viewport to check responsive behavior
- Iterate: fix issues in code, refresh, re-verify
- browser_navigate to the dev server URL
- browser_take_screenshot to capture the current state
- browser_snapshot to get the accessibility tree (semantic structure check)
- browser_console_messages to catch JavaScript errors
- browser_evaluate to test dynamic behavior
- browser_resize to check responsive layouts
- browser_take_screenshot again after each fix to confirm improvement
The verification loop should run at least once for every meaningful UI change. Don't generate a massive component and hope it works — build incrementally:
These patterns immediately signal "AI-generated UI" — avoid them:
figma-connect skill for design extraction, then use this skill's verification loop to confirm the implementation matchessw:e2e) can be generated to lock in the verified behavior for CI/CDtools
Hand off your in-flight work to ANY other AI coding tool so you can continue exactly where you left off — works in 8+ tools (Claude Code, Codex, OpenCode, Gemini, Antigravity, Cursor, Aider, Cline/Roo, Windsurf). Writes one portable, secret-scrubbed handoff document plus a full diff of your uncommitted edits, then prints the absolute path, a clickable link, and a copy-paste resume prompt. Use this skill whenever the user is running out of subscription tokens, wants to switch tools mid-task, says 'handoff', 'continue elsewhere', 'continue on another machine', 'switch to Codex/OpenCode/Gemini/Cursor', or 'I'm out of tokens'. Self-contained: needs only git and a shell; uses 'specweave handoff' as an optional accelerator if it is on PATH.
tools
Bootstrap or update project AI-agent instruction files (AGENTS.md for Codex, CLAUDE.md for Claude Code, or both) from the current project's structure. Triggers on: write AGENTS.md, write CLAUDE.md, generate AGENTS.md, agent instructions, project conventions for AI, bootstrap agent docs, set up project memory for Codex/Claude, document dev/test/build commands for AI coding tools, single-source project instructions for any AI agent.
development
This skill should be used whenever the user asks Claude to perform any action, task, or operation — including "create X", "fix Y", "run Z", "build", "edit", "search", "deploy", or any other request involving Claude taking an action. Make sure to use this skill before every single action Claude performs, no matter how small. Activate on every action request without exception.
development
Meta-skill for creating new skills from natural language. Trigger phrases: "new skill", "create a skill", "build a skill", "make a skill", "generate a skill", "author a skill", "skill builder".