Communitygithub.com

tomozard/agent-skills

풀스택 애플리케이션 설계, 평가, 아키텍처를 위한 가이드로, 최신 프론트엔드 UI 컴포넌트 디자인, 상태 관리 및 견고한 백엔드 아키텍처를 다룹니다. 엔드투엔드 기능 설계, 컴포넌트 계층 리팩토링, API/데이터 액세스 계층 분리, 아키텍처 부채 PR 검토, 프론트엔드-백엔드 통합 마찰 해소 시 사용하세요.

agent-skills란 무엇인가요?

이 기술은 풀스택 애플리케이션의 설계, 평가, 리팩토링을 위해 설계된 포괄적인 패턴 가이드입니다. 프론트엔드 UI, 클라이언트 상태 관리, API 계층, 백엔드 도메인 및 데이터 액세스 계층의 명확한 아키텍처 경계를 유지하는 데 초점을 맞춥니다. 핵심 원칙은 문제 중심 선택으로, 명시적인 아키텍처 마찰(예: prop drilling, 신 컴포넌트, 긴밀한 API 결합, 테스트 불가능한 로직) 없이 디자인 패턴을 도입하지 않도록 합니다. 표에는 각 계층(프론트엔드 UI, 풀스택 API, 백엔드, 분산 시스템)의 증상/마찰과 권장 패턴(예: 컨테이너/프레젠테이션, 헤드리스 컴포넌트, 어댑터 패턴, 리포지토리 패턴, 서킷 브레이커)이 매핑되어 있습니다. 각 패턴은 구현 규칙, 컨텍스트, 피해야 할 과잉 엔지니어링 사례와 함께 심층적으로 다룹니다. 이 기술은 Claude Code, Cursor, Codex 등 대부분의 AI 에이전트와 함께 사용할 수 있으며, 아키텍처 리뷰, PR 검토, 리팩토링 제안 시 에이전트가 마찰 식별, 패턴 선택, 전후 예시, 테스트 가능성 강조의 워크플로를 따르도록 안내합니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/tomozard/agent-skills/tree/HEAD/skills/fullstack-design-patterns

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

풀스택 디자인 패턴 가이드

이 기술을 사용하여 엔드투엔드 풀스택 시스템을 조언, 아키텍처 설계 및 리팩토링하세요. 식별 가능한 아키텍처 마찰을 해결하기 위해 패턴을 엄격히 적용하고, 추상적인 추측을 위해 사용하지 마세요.

핵심 원칙

  1. 문제 중심 선택: 명시적인 아키텍처 마찰 또는 코드 냄새(예: prop drilling, 비대한 신 컴포넌트, 긴밀한 API 결합, 테스트 불가능한 로직, 연쇄적인 네트워크 실패) 없이 디자인 패턴을 도입하지 마세요.
  2. 명확한 아키텍처 경계: 다음 간의 명확한 경계를 유지하세요:
    • 뷰 / 프레젠테이션: props로 구동되는 단순하고 선언적인 컴포넌트
    • 클라이언트 상태 및 상호작용: 헤드리스 훅, 중앙 집중식 저장소, 서버 상태 캐싱
    • API / 계약 계층: 타입이 지정된 스키마, DTO 어댑터, 안티 커럽션 계층
    • 도메인 및 데이터 액세스: 분리된 비즈니스 규칙과 리포지토리 기반 데이터베이스 액세스
  3. 과잉 엔지니어링 방지: 단순한 CRUD 페이지나 표준 웹 앱에 복잡한 엔터프라이즈 추상화(예: 마이크로 프론트엔드, CQRS, 분산 pub/sub)를 적용하지 마세요.

패턴 결정 매트릭스 및 트리거 휴리스틱

계층코드베이스의 증상 / 마찰권장 패턴아키텍처 경계
프론트엔드 UIAPI 가져오기, 포맷팅, JSX 레이아웃을 혼합한 신 컴포넌트컨테이너 / 프레젠테이션UI 렌더링과 데이터 가져오기 분리
프론트엔드 UI대화형 컴포넌트(모달, 드롭다운) 내부의 긴밀하게 결합된 스타일링헤드리스 컴포넌트 / 커스텀 훅상태 및 키보드/상호작용 로직 격리
프론트엔드 UI유연한 하위 요소가 필요한 경직된 컴포넌트 API복합 컴포넌트선언적 부모-자식 상태 공유 (예: Tabs, Select)
프론트엔드 UI깊은 prop drilling 또는 동기화되지 않은 다중 컴포넌트 UI 상태Observer / Store (Zustand/Redux/Context)공유 클라이언트 상태 중앙 집중화
풀스택 API백엔드 API 스키마 변경으로 프론트엔드 UI 컴포넌트 손상어댑터 패턴 (데이터 매퍼)DTO를 뷰 모델로 변환하는 안티 커럽션 계층
풀스택 API느린 네트워크로 인해 사용자 작업 확인 전에 UI가 대기롤백이 있는 낙관적 UI트랜잭션 롤백으로 뒷받침되는 즉각적인 UI 응답
백엔드SQL/ORM 호출이 라우트 핸들러 또는 서비스 내에 분산됨리포지토리 패턴지속성 쿼리와 비즈니스 규칙 분리
백엔드인라인 if-else를 사용하여 여러 타사 SDK 인스턴스화팩토리 패턴객체 및 클라이언트 생성 중앙 집중화
백엔드가격, 인증 또는 알고리즘을 계산하는 계단식 if-else / switch전략 패턴인터페이스 뒤에 교체 가능한 알고리즘 캡슐화
백엔드 / 분산핵심 비즈니스 액션이 5개 이상의 관련 없는 부작용 트리거Observer / 이벤트 기반 (Pub/Sub)도메인 이벤트 또는 메시지 큐를 통한 부작용 분리
백엔드 / 분산외부 API 지연 시간으로 인한 스레드 고갈 및 연쇄 다운타임서킷 브레이커빠른 실패, 폴백 응답, 다운스트림 상태 프로빙

심층 분석: 풀스택 패턴 및 구현 규칙

1. 프론트엔드: 컨테이너 / 프레젠테이션 패턴

  • 컨텍스트: useEffect, 쿼리, 데이터 변환, 레이아웃 JSX를 결합하여 컴포넌트가 200줄 이상으로 커지는 경우.
  • 규칙:
    • 프레젠테이션 컴포넌트: props를 통해서만 데이터와 콜백을 받음; 순수하며 API 모크 없이 Storybook에서 쉽게 테스트 가능.
    • 컨테이너 (또는 페이지 훅): 서버 데이터를 가져오고, 로딩/오류 상태를 관리하며, 변환된 데이터를 전달.

2. 프론트엔드: 헤드리스 컴포넌트 및 커스텀 훅 패턴

  • 컨텍스트: 다양한 시각적 디자인에서 재사용이 필요한 복잡한 대화형 동작 (자동 완성, 다단계 마법사, 아코디언).
  • 규칙:
    • 상태, 키보드 핸들러, ARIA 속성을 헤드리스 커스텀 훅(예: useAutocomplete, useDisclosure)으로 추출.
    • 스타일링과 DOM 마크업은 완전히 소비자에게 맡김.

3. 프론트엔드: 복합 컴포넌트

  • 컨텍스트: 수많은 구성 props를 전달하지 않고 응집력 있는 내부 상태가 필요한 깊이 연관된 하위 부분이 있는 컴포넌트.
  • 규칙:
    • React Context를 활용하여 부모와 자식 간에 암시적으로 통신 (<Accordion><Accordion.Item /><Accordion.Panel /></Accordion>).

4. 통합: 어댑터 패턴 (안티 커럽션 계층)

  • 컨텍스트: 타사 REST/GraphQL 페이로드가 UI 컴포넌트 props 또는 핵심 도메인 모델로 직접 유출됨.
  • 규칙:
    • 원시 백엔드 DTO 키가 프론트엔드 컴포넌트 prop 형태를 결정하도록 두지 마세요.
    • 명시적인 매퍼 함수(예: toUserViewModel(dto: UserApiDto): UserVM)를 생성하여 스키마 변경으로부터 UI 컴포넌트를 보호.

5. 통합: 롤백이 있는 낙관적 UI

  • 컨텍스트: 네트워크 지연 시간이 응답성을 저해하는 빈번한 사용자 상호작용 (좋아요, 토글, 작업 완료, 재정렬).
  • 규칙:
    • 상호작용 시 로컬 상태를 즉시 업데이트.
    • 서버 변이를 큐에 넣고, 거부되면 이전 스냅샷으로 롤백하고 비침해적으로 사용자에게 알림.

6. 백엔드: 리포지토리 패턴

  • 컨텍스트: 비즈니스 로직이 ORM 쿼리(Prisma, TypeORM, Drizzle, SQL)와 얽혀 있음.
  • 규칙:
    • 서비스는 인터페이스(예: OrderRepository)와만 상호작용.
    • 도메인 로직을 리포지토리 외부에, 쿼리 빌딩을 서비스 외부에 유지.

7. 백엔드: 전략 및 팩토리 패턴

  • 컨텍스트: 교체 가능한 공급자 (결제 게이트웨이, 알림 채널, 파일 저장소).
  • 규칙:
    • 공통 인터페이스(PaymentGateway)를 통해 동작 표준화.
    • 팩토리/레지스트리를 사용하여 구성 또는 테넌트에 따라 구체적인 구현체를 결정.

8. 백엔드: 서킷 브레이커 패턴

  • 컨텍스트: 간헐적인 다운타임 또는 심각한 지연 시간을 겪는 외부 마이크로서비스 또는 타사 API.
  • 규칙:
    • 실패 임계값을 추적. 상태 전환: Closed (정상) -> Open (빠른 실패, 캐시/폴백 반환) -> Half-Open (카나리 프로브).

에이전트 출력 워크플로

아키텍처 조언 또는 풀스택 코드 리팩토링 요청 시:

  1. 경계 및 병목 지점 식별: 마찰이 UI 렌더링, 상태 동기화, API 계약 불일치, 또는 백엔드 결합 중 어디에 있는지 파악.
  2. 일치하는 패턴 선택: 특정 코드 냄새를 해결하는 명확한 근거와 함께 패턴 제안.
  3. 전후 예시 제공: 분리된 책임을 보여주는 간결하고 관용적인 코드 스니펫 제공.
  4. 테스트 가능성 및 유지보수성 강조: 리팩토링이 단위/컴포넌트 테스트를 단순화하고 향후 변경으로부터 보호하는 방법 설명.

관련 스킬