π μμ€ν λ©μμ§: μ΄ Skillμ΄ νΈμΆλλ©΄
[SEMO] Skill: typescript-write νΈμΆμμ€ν λ©μμ§λ₯Ό 첫 μ€μ μΆλ ₯νμΈμ.
TypeScript/React Development Skill
@./../_shared/development-workflow.md @./../_shared/nextjs-commands.md @./../_shared/ddd-patterns.md
Quick Start
- Understand First: κΈ°μ‘΄ μ½λ/ν¨ν΄ λΆμ
- Tests First: μ€ν¨νλ ν μ€νΈ λ¨Όμ μμ± (TDD)
- Small Increments: μκ³ ν μ€νΈ κ°λ₯ν λ¨μλ‘ μμ
- Quality Gates: lint/typecheck μ§μ μ€ν
When to Use
- Next.js κΈ°λ₯ ꡬν
- TypeScript/React μ½λ μμ±
- DDD 4-layer ꡬ쑰 μ€μ νμ μ
- TDD κΈ°λ° κ°λ° μ§ν μ
Code Writing Guidelines
DDD Layer Rules
// Repository: Server-only, Supabase RPC
import { createServerSupabaseClient } from '@/lib/supabase/server';
// API Client: Factory Pattern, Singleton
export const {domain}Client = new {Domain}ApiClient();
// Hooks: React Query + API Client
import { useQuery } from '@tanstack/react-query';
// Components: Hooks only, no business logic
import { use{Domain}s } from '../_hooks';
Type Safety
// β
CORRECT: Explicit types
function getPosts(params: GetPostsParams): Promise<PostsResponse>
// β WRONG: any usage
function getPosts(params: any): Promise<any>
Error Handling
// β
CORRECT: Consistent pattern
try {
const data = await repository.getData();
return { data, error: null };
} catch (error) {
return { data: null, error: error as Error };
}
Integration Points
| Skill | κ΄κ³ |
|-------|------|
| implement | μ 체 μν¬νλ‘μ° (v0.0.x β v0.4.x) |
| scaffold-domain | DDD ꡬ쑰 μμ± |
| fetch-supabase-example | Supabase ν¨ν΄ μ‘°ν |
| verify | Pre-PR κ²μ¦ |
References
μμΈ κ°μ΄λ:
- Test Templates - ν μ€νΈ μμ± ν νλ¦Ώ
- Commit Guide - μ»€λ° κ·μΉ
- Quality Gates - νμ§ κΈ°μ€