Agent skill
frontend-core
Build React components, pages, forms, and state management with TypeScript and TanStack Query. Use for frontend development, component creation, routing, and data fetching.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/other/frontend-core
SKILL.md
Frontend Core Skill
When to Use
- Creating React components or pages
- Implementing forms with validation
- Setting up data fetching or state management
- Working with routing (/c, /o, /t)
- Working with files under
frontend/
CRITICAL: Irreversible Action Confirmation (MANDATORY)
Redeem Flow
Customer screen shows "사용 처리" button → Trigger 2-step modal:
Modal Content:
- Title: "되돌릴 수 없는 작업입니다"
- Body: "매장 직원이 확인 후 눌러주세요"
- Buttons: [취소] (easy to hit) / [확인]
TTL Enforcement:
- If modal not confirmed within 30-60s → auto-expire
- Show "요청이 만료되었습니다" → retry CTA
Why This Matters:
- Prevents accidental customer-only redemption
- Forces store-side confirmation
- Abuse mitigation (no auto-click scripts)
Stack
Default (popular) stack:
- React + TypeScript + Vite
- Tailwind CSS
- React Router
- TanStack Query
- Axios
- React Hook Form + Zod
Libraries Policy
- Use the existing stack first
- Adding a new library requires:
- clear benefit
- small footprint
- at least one example usage
Architecture
User Types & Viewports
- Customer Wallet: mobile-first
- Owner Backoffice: desktop-first
- Store Terminal: always-on approval screen
Component Composition Pattern
Page (route-level)
└─ Container (data fetch + state)
└─ View (presentational)
File Organization
src/components/- Common UI elementssrc/features/<feature>/components/- Feature-specific UI
Code Style
Base: Airbnb JavaScript Style Guide, with these overrides:
- Indentation: 4 spaces
- Max line length: 120 characters
- Semicolons: false
Naming Conventions
| Type | Convention | Example |
|---|---|---|
| Components/Files | PascalCase | UserProfile.tsx |
| Variables/Functions/Hooks | camelCase | const isOpen = useState() |
| Constants | SCREAMING_SNAKE_CASE | const MAX_RETRY_COUNT = 3 |
No Abbreviations:
// bad
const idx = 0
// good
const index = 0
Boolean Naming:
- Use prefixes:
is,has,can,should - Event handlers:
handle*for functions,on*for props
// good
const handleOpen = () => {}
<Button onClick={handleOpen} />
Component Internal Order
- State declarations (
useState) - Memoization (
useMemo,useCallback) - Side effects (
useEffect) - Event handlers
- JSX Rendering
TypeScript Rules
- Never use
any(useunknownif uncertain) interfacefor objects (Props, API responses)typefor unions/aliases- Use
as constinstead of enums:
const ROLES = {
ADMIN: "ADMIN",
USER: "USER",
} as const
type Role = (typeof ROLES)[keyof typeof ROLES]
Prettier Config
{
"semi": false,
"singleQuote": true,
"tabWidth": 4,
"trailingComma": "es5",
"printWidth": 120,
"plugins": ["prettier-plugin-tailwindcss"]
}
State Branching (REQUIRED)
Every page MUST handle:
- Loading state
- Empty state
- Error state (with retry CTA)
Error Handling
- Show user-friendly message
- Provide a recovery action (retry / back)
State & Data Fetching
TanStack Query Patterns
useQueryfor readsuseMutationfor writes- Invalidate queries on mutation success
Polling (MVP REQUIRED)
Issuance approval status and terminal lists must support polling:
- Default interval: 2-3 seconds
- Stop when: status is final OR TTL expires
Routing & Navigation
Use React Router.
Route Grouping
/c/*- customer/o/*- owner/backoffice/t/*- store terminal
Navigation Rules
- Keep route params explicit (e.g.,
storeId,stampCardId) - Avoid deep nesting unless it improves clarity
Forms & Validation
- Use
react-hook-formfor forms - Use
zodschemas for validation
UX Requirements
- Display field errors near the field
- Disable submit while loading
- Prevent double submits
Import Rules
Use Absolute Paths
Use @/ prefix for major directories (components/, hooks/, etc.)
Import Sorting Order
- React core libraries
- Third-party libraries
- Global/Common components
- Domain-specific components
- Hooks, Utils, Types
- Assets (images, css)
Control Flow & Depth
- Braces Required: Do not omit
{}even for single-lineif - Depth Limit: Maintain depth of 1 or less (max 2)
- Actively use early returns
Linting & Formatting
Tools:
- ESLint: Code quality, accessibility (a11y), import sorting
- Prettier: Code formatting and Tailwind class sorting
- Husky & lint-staged: Automated verification before
git commit
PR Checklist
- Loading/Empty/Error states exist
- Keyboard navigation works
- Mobile-first layout checked
- No unnecessary re-renders / infinite loops
- API errors are handled
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?