Claude-skill-registry frontend-quality

Runs frontend quality checks including TypeScript, ESLint, and tests. Use before commits, PRs, or when the user says "check frontend", "run frontend tests", "lint frontend".

install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/frontend-quality" ~/.claude/skills/majiayu000-claude-skill-registry-frontend-quality && rm -rf "$T"
manifest: skills/data/frontend-quality/SKILL.md
source content

Frontend Quality Checks

Runs TypeScript type checking, ESLint, and tests for the frontend.

Quick Check

cd front && pnpm type-check && pnpm lint

1. TypeScript Type Check

cd front && pnpm type-check

Checks all TypeScript files without emitting output.

Common Type Errors

Missing null check in page:

// Error: Build fails
export default function Page() {
  const { user } = useUser();
  return <Content userId={user.id} />; // user might be undefined!
}

// Fix: Add null check
export default function Page() {
  const { user } = useUser();
  if (!user) return null; // Required!
  return <Content userId={user.id} />;
}

API type mismatch:

# Regenerate types from backend
pnpm run generate:api

2. ESLint

Check:

cd front && pnpm lint

Auto-fix:

cd front && pnpm lint:fix

Common Lint Issues

Unused imports: Auto-fixed by

lint:fix

Missing dependencies in useEffect:

// Warning: Missing dependency
useEffect(() => {
  fetchData(userId);
}, []); // userId missing

// Fix: Add all dependencies
useEffect(() => {
  fetchData(userId);
}, [userId]);

3. Tests (Vitest)

All tests:

cd front && pnpm test

Watch mode:

cd front && pnpm test:watch

Specific file:

cd front && pnpm test src/lib/utils.test.ts

4. Build Check

Full production build (catches more errors):

cd front && pnpm build

Common Build Errors

Dynamic import issues:

  • Ensure client components have
    'use client'
    directive
  • Check for server-only code in client components

Environment variables:

  • NEXT_PUBLIC_*
    for client-side
  • Non-prefixed for server-side only

Pre-commit Checklist

cd front

# 1. Type check
pnpm type-check

# 2. Lint
pnpm lint

# 3. Run tests
pnpm test

# 4. (Optional) Full build
pnpm build

Configuration Files

FilePurpose
tsconfig.json
TypeScript configuration
eslint.config.mjs
ESLint rules
vitest.config.ts
Test configuration
next.config.ts
Next.js configuration