.claude/skills/frontend-dev/SKILL.md
Frontend development agent for Resume Matcher. Handles Next.js pages, React components, Tailwind CSS with Swiss International Style, API integration, hooks, and i18n. Use when creating or modifying frontend code.
npx skillsauth add dankofly/Swing_B2B frontend-devInstall 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.
Use when creating or modifying Next.js pages, React components, Tailwind CSS styles, API integration, hooks, or i18n.
docs/agent/architecture/frontend-workflow.md for user flowdocs/agent/design/style-guide.md for Swiss International Style (REQUIRED)docs/agent/coding-standards.md for conventionsapps/frontend/components/ for patternsrounded-none everywhere - no rounded corners, evershadow-[4px_4px_0px_0px_#000000], never soft shadowsnpm run lint before committingnpm run format before committingapps/frontend/
├── app/ # Next.js pages
│ ├── dashboard/ # Main dashboard
│ ├── builder/ # Resume builder
│ ├── tailor/ # AI tailoring
│ ├── print/ # PDF print view
│ └── settings/ # User settings
├── components/ # Reusable UI components
├── lib/ # API client, utilities, i18n
├── hooks/ # Custom React hooks
└── messages/ # i18n translations (en, es, zh, ja)
| Element | Value |
|---------|-------|
| Canvas bg | #F0F0E8 / bg-[#F0F0E8] |
| Ink text | #000000 |
| Hyper Blue | #1D4ED8 / text-blue-700 |
| Signal Green | #15803D / text-green-700 |
| Alert Red | #DC2626 / text-red-600 |
| Headers | font-serif |
| Body | font-sans |
| Labels | font-mono text-sm uppercase tracking-wider |
| Borders | rounded-none border-2 border-black |
| Shadows | shadow-[4px_4px_0px_0px_#000000] |
| Hover | hover:translate-y-[1px] hover:translate-x-[1px] hover:shadow-none |
rounded-* (except rounded-none)'use client';
interface MyComponentProps {
title: string;
onAction: () => void;
}
export function MyComponent({ title, onAction }: MyComponentProps) {
return (
<div className="bg-white border-2 border-black shadow-[4px_4px_0px_0px_#000000] p-6">
<h3 className="font-serif text-xl mb-4">{title}</h3>
<button
onClick={onAction}
className="rounded-none border-2 border-black px-4 py-2 bg-blue-700 text-white shadow-[2px_2px_0px_0px_#000000] hover:translate-y-[1px] hover:translate-x-[1px] hover:shadow-none transition-all"
>
Action
</button>
</div>
);
}
const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {
if (e.key === 'Enter') e.stopPropagation();
};
<textarea
onKeyDown={handleKeyDown}
className="w-full rounded-none border-2 border-black p-3 font-sans"
/>
// Direct icon import (NOT barrel import)
import FileText from 'lucide-react/dist/esm/icons/file-text';
// Dynamic import for heavy components
import dynamic from 'next/dynamic';
const PDFViewer = dynamic(() => import('./PDFViewer'), { ssr: false });
import { api } from '@/lib/api';
async function loadResumes() {
// Use Promise.all for independent fetches
const [resumes, jobs] = await Promise.all([
api.get('/api/v1/resumes'),
api.get('/api/v1/jobs'),
]);
return { resumes, jobs };
}
import { useTranslations } from '@/lib/i18n';
export function MyComponent() {
const { t } = useTranslations();
return <h1>{t('dashboard.title')}</h1>;
}
npm run lint passesnpm run format runrounded-none on all elementsnext/dynamicPromise.all()tools
UI/UX design intelligence. 50 styles, 21 palettes, 50 font pairings, 20 charts, 9 stacks (React, Next.js, Vue, Svelte, SwiftUI, React Native, Flutter, Tailwind, shadcn/ui). Actions: plan, build, create, design, implement, review, fix, improve, optimize, enhance, refactor, check UI/UX code. Projects: website, landing page, dashboard, admin panel, e-commerce, SaaS, portfolio, blog, mobile app, .html, .tsx, .vue, .svelte. Elements: button, modal, navbar, sidebar, card, table, form, chart. Styles: glassmorphism, claymorphism, minimalism, brutalism, neumorphism, bento grid, dark mode, responsive, skeuomorphism, flat design. Topics: color palette, accessibility, animation, layout, typography, font pairing, spacing, hover, shadow, gradient. Integrations: shadcn/ui MCP for component search and examples.
development
Review UI changes against Swiss International Style design system. Checks colors, typography, borders, shadows, spacing, and anti-patterns. Use before committing any frontend UI changes.
development
Production-ready Tailwind CSS patterns for common website components: responsive layouts, cards, navigation, forms, buttons, and typography. Includes spacing scale, breakpoints, mobile-first patterns, and dark mode support. Use when building UI components, creating landing pages, styling forms, implementing navigation, or fixing responsive layouts.
development
Use when receiving code review feedback, before implementing suggestions, especially if feedback seems unclear or technically questionable - requires technical rigor and verification, not performative agreement or blind implementation