Enforces React-specific patterns: functional components with hooks, TypeScript prop interfaces, CSS Modules co-location, React Testing Library behavioral tests. Use when creating React components, writing custom hooks, structuring component folders, applying RTL test patterns, or wiring TypeScript prop types. Trigger terms: React, .tsx, component, hook, RTL, jsx, useState, useEffect, prop interface
77
96%
Does it follow best practices?
Impact
—
No eval scenarios have been run
Passed
No known issues
ComponentName.tsx in feature folder; co-locate ComponentName.module.scss, ComponentName.test.tsxComponentNameProps with TypeScript; destructure in function signatureinterface UserCardProps { name: string; role: string }
export function UserCard({ name, role }: UserCardProps) {
return (
<div data-testid="user-card">
<h3>{name}</h3>
<span>{role}</span>
</div>
);
}tsconfig.json. Generic constraints: <T extends Record<string, unknown>>. Discriminated unions for variant props. Avoid as casts..module.scss) co-located with components.import { render, screen } from '@testing-library/react';
import { UserCard } from './UserCard';
test('renders user info', () => {
render(<UserCard name="Alice" role="Admin" />);
expect(screen.getByText('Alice')).toBeInTheDocument();
expect(screen.getByTestId('user-card')).toBeInTheDocument();
});Run these as part of your PR validation pipeline or locally:
pnpm lint # fixable issues: pnpm lint --fix
pnpm typecheck # run `pnpm tsc --noEmit` if alias not present
pnpm test # rerun failing tests with `pnpm test -- -t <name>`
pnpm build # ensure production build succeedsIf lint fails: run pnpm lint --fix; re-run. If typecheck fails: inspect reported files; add missing types. If tests fail: run with --runInBand to collect stack traces; reproduce locally.
dompurify); never trust client validation alone — validate server-side. See api-patterns skill for server validation patterns.7a69a05
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.