---
name: frontend-quality
description: 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".
allowed-tools: Bash(pnpm type-check), Bash(pnpm lint:*), Bash(pnpm lint), Bash(pnpm test:*), Bash(pnpm test), Bash(pnpm build)
---
# Frontend Quality Checks
Runs TypeScript type checking, ESLint, and tests for the frontend.
## Quick Check
```bash
cd front && pnpm type-check && pnpm lint
```
## 1. TypeScript Type Check
```bash
cd front && pnpm type-check
```
Checks all TypeScript files without emitting output.
### Common Type Errors
**Missing null check in page**:
```typescript
// Error: Build fails
export default function Page() {
const { user } = useUser();
return ; // user might be undefined!
}
// Fix: Add null check
export default function Page() {
const { user } = useUser();
if (!user) return null; // Required!
return ;
}
```
**API type mismatch**:
```bash
# Regenerate types from backend
pnpm run generate:api
```
## 2. ESLint
Check:
```bash
cd front && pnpm lint
```
Auto-fix:
```bash
cd front && pnpm lint:fix
```
### Common Lint Issues
**Unused imports**: Auto-fixed by `lint:fix`
**Missing dependencies in useEffect**:
```typescript
// Warning: Missing dependency
useEffect(() => {
fetchData(userId);
}, []); // userId missing
// Fix: Add all dependencies
useEffect(() => {
fetchData(userId);
}, [userId]);
```
## 3. Tests (Vitest)
All tests:
```bash
cd front && pnpm test
```
Watch mode:
```bash
cd front && pnpm test:watch
```
Specific file:
```bash
cd front && pnpm test src/lib/utils.test.ts
```
## 4. Build Check
Full production build (catches more errors):
```bash
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
```bash
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
| File | Purpose |
|------|---------|
| `tsconfig.json` | TypeScript configuration |
| `eslint.config.mjs` | ESLint rules |
| `vitest.config.ts` | Test configuration |
| `next.config.ts` | Next.js configuration |