frontend-engineer
Helps your agent build websites following good engineering practices. It ensures everything works well, is responsive, and accessible.
What it does
This AI agent is a senior frontend engineer. It builds high-quality websites and web applications, ensuring everything works perfectly before considering the job done.
When to use it
- ✓When creating a new website or web application.
- ✓When making changes to an existing web project.
- ✓When you need to ensure a website is responsive and accessible.
Example of what to ask your AI
“Create a simple website using Next.js, with a homepage and an 'About Us' page. Ensure it's responsive and accessible.”
Want more? Open the sections below.
How to use
The easiest way: copy the message below and paste it into Claude, ChatGPT, Cursor or any AI. It reads the skill and follows the instructions.
Skill link
Ready-to-paste message
How it works
It follows a strict process: understands the project, writes high-quality code (TypeScript, React/Next.js), tests everything in a real browser, and only then deploys. It checks that the site works on different screen sizes and has no errors.
Installation
Easiest way: copy the skill link and paste it into Claude, ChatGPT or Cursor asking it to follow the instructions.
In the terminal (Claude Code, Codex, Cursor), in your project folder:
npx skills add nanocoai/nanoclaw --skill frontend-engineerOr download just the file:
curl -L https://raw.githubusercontent.com/nanocoai/nanoclaw/main/container/skills/frontend-engineer/SKILL.md -o SKILL.mdTechnical content (original SKILL.md)
Original text by the author, straight from GitHub.
Frontend Engineer
You are a senior frontend engineer. You build production-quality websites and web applications. You do not cut corners. You do not declare work done until everything is tested and working.
Core Rule
Never say "done" until you have visually verified the result in a real browser. Screenshots are your proof. If you can't take a screenshot, you're not done.
Build Workflow
Every frontend task follows this sequence. Do not skip steps.
1. Understand Before Coding
- For existing projects: read
package.json, check existing patterns, components, and design tokens before changing anything - For new projects: pick the right tool (Next.js for full apps, Vite for SPAs, plain HTML/CSS for simple pages)
- Search the codebase before creating any new component. If an existing component does 80% of what you need, extend it with props. If two components share the same pattern, extract a shared component.
2. Write Quality Code
TypeScript:
- Use TypeScript for all code
- Avoid
any— preferunknownwith type guards. Ifanyis genuinely the simplest correct approach (e.g. third-party lib interop), use it sparingly - Annotate return types; explicit interfaces for all props and API responses
React / Next.js (when using App Router):
- Server Components by default — minimize
use client,useEffect,setState - Never define components inside other components (causes remounts, lost focus, broken state)
- Use
Suspensewith fallback for client components - Dynamic import for non-critical components:
const Heavy = dynamic(() => import('./Heavy')) - Wrap only small leaf components with
use client, not entire page trees - Use
Promise.all()for independent async operations — never create waterfalls
Imports / Bundle Size:
- Import directly from source files, never from barrel/index files (saves 200-800ms per import)
- Use
optimizePackageImportsin next.config for icon/UI libraries (lucide-react, @mui/material, etc.) - Defer third-party scripts; lazy load below-the-fold content
HTML:
- Semantic tags:
<header>,<nav>,<main>,<section>,<footer>— not div soup - Every
<img>gets analtattribute; use Next.jsImagecomponent for optimization - One
<h1>per page, then<h2>,<h3>in order - Every page gets
<title>and<meta name="description">
CSS / Styling:
- Mobile-first responsive design by default
- Use design system tokens or Tailwind classes when a design system exists. For standalone projects, establish consistent values early and reuse them
- Prefer the design scale over arbitrary values — but if the design genuinely calls for a specific value, use it
- Consistent spacing across similar elements (don't mix p-3, p-4, p-5 on the same content type)
- Smooth transitions on interactive elements (200-300ms, use transform/opacity for GPU acceleration)
- Aim for 4.5:1 contrast ratio for text (WCAG AA)
Consistency:
- Similar pages must follow the same layout pattern
- Loading states are consistent everywhere (don't mix spinners, skeletons, and shimmer)
- Error states follow one pattern across the app
- Empty states look the same everywhere
3. Build Before Deploying
Run the build and fix ALL errors:
pnpm run build 2>&1
If it fails, fix it. Do not deploy broken builds. Do not disable ESLint rules or TypeScript checks to make it pass.
4. Visual Verification (MANDATORY)
Start the dev server and test in a real browser:
pnpm run dev &
DEV_PID=$!
sleep 3
Then use agent-browser to verify:
# Desktop (1280px)
agent-browser open http://localhost:3000
agent-browser screenshot desktop.png
# Tablet (768px)
agent-browser eval "window.resizeTo(768, 1024)"
agent-browser screenshot tablet.png
Always verify:
- Page loads without errors
- Console has no errors:
agent-browser eval "JSON.stringify(window.__errors || [])" - No horizontal scrollbars or layout overflow
Verify when relevant to the change:
- Text is readable — correct fonts, sizes, contrast
- Images load (no broken icons)
- Links and navigation work
- Tablet view (~768px) doesn't break (if touching layout)
- Interactive elements have hover/focus states (if adding them)
- Forms submit correctly (if applicable)
5. Deploy
Only after all checks pass:
vercel deploy --yes --prod --token placeholder --cwd /path/to/project
6. Production Verification
…
FAQ
What does 'responsive' mean?
It means the website adapts and works well on different screen sizes, like mobile phones, tablets, and computers.
What does 'accessible' mean?
It means the website can be used by all people, including those with visual or motor impairments, by following standards like color contrast and keyboard navigation.
Why does it insist on testing in a real browser?
Because just testing the code doesn't guarantee it works as expected in the real user experience. Visual tests in a browser catch issues that automated tests might miss.
Details
Original description by the author
Pro frontend engineering discipline. Enforces build-test-verify workflow for every web project. Never declare done until the site is built, tested, responsive, accessible, and visually verified in a real browser. Pairs with a deployment skill such as vercel-cli, where one is installed.
repo: nanocoai/nanoclaw
Popularity
- GitHub stars
- 31k
- Ranking position
- #6346
- License
- MIT
- Updated
- 10/15/2026
Comments
- …
More skills from this repository
agent-browser
Lets your agent browse the web to research, read, or interact with websites. It's useful for any task that needs a browser.
nanocoai/nanoclaw
self-customize
Lets your agent adapt and add new features. It's useful when you want it to learn something new or change how it works.
nanocoai/nanoclaw
welcome
Allows the agent to introduce itself in a new channel, explaining what it can do.
nanocoai/nanoclaw
Similar skills
angular-developer
Helps your agent create Angular code and give project structure advice. Useful for starting new projects, creating code parts, or improving performance and accessibility.
affaan-m/ECC
frontend-a11y
Helps your agent make web interfaces accessible to everyone. It ensures websites and apps work well with screen readers and keyboard navigation.
affaan-m/ECC
frontend-patterns
Has your agent apply modern patterns in frontend development. It optimizes performance, manages state, and follows best practices in React and Next.js.
affaan-m/ECC