本文へ移動
cccskills
無料GitHub で公開

custom-hook

비대한 커스텀 훅을 스코프별 서브 훅으로 분리, composer 패턴 적용, 전용 서브디렉토리 구조화

インストール方法を見る

含まれるファイル(1)

  • SKILL.md3.6 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Custom Hook

비대한 커스텀 훅 로직의 스코프별 서브 훅 분리와 composer 훅 조합 구조 리팩터.

When to Activate

  • 단일 커스텀 훅이 여러 관심사(상태 머신, API 호출, 이펙트, 인증 등)를 포함할 때
  • 훅 내부에 독립적으로 테스트/재사용 가능한 로직 덩어리가 보일 때
  • $ARGUMENTS로 대상 훅 파일 경로가 주어질 때

Workflow

1단계: 분석

  1. 대상 훅 파일 읽기
  2. 해당 훅의 사용처 Grep 파악
  3. 내부 로직의 관심사 식별:
    • 상태 머신 (useState + 전이 함수)
    • API 호출 (fetch 함수 + 결과 처리)
    • 사이드 이펙트 (useEffect)
    • 외부 훅 래핑 (인증, 라우터 등)

2단계: 분리 설계

  1. 각 관심사를 독립된 서브 훅으로 매핑:
    • 상태 머신 → use-[name]-state.ts
    • 인증/외부 서비스 래핑 → use-[name]-auth.ts 등
    • 사이드 이펙트 → use-[name]-callback.ts 등
  2. 여러 관심사를 동시에 건드리는 글루 함수는 composer에 유지
  3. 단순 useState(false) 수준 상태 분리 금지 — 의미 있는 스코프만 추출

3단계: 서브 훅 생성

  1. 의존성 없는 서브 훅부터 생성 (leaf → root 순서)
  2. 서브 훅 단일 책임:
    • 상태 훅: 상태 + 전이 함수만 반환
    • 이펙트 훅: 콜백 파라미터로 외부 의존성 주입, 반환값 없음
    • 래핑 훅: 외부 훅 + 관련 핸들러 묶어서 반환
  3. 순수 async 함수(API 호출 등)는 일반 함수로 유지, composer 파일에 co-locate

4단계: Composer 훅 리팩터

  1. composer 훅은 서브 훅 조합과 글루 로직만 포함:
    const useComposer = (params) => {
      const state = useSubState(params);
      const auth = useSubAuth();
      useSubCallback({ onSuccess: ... });
    
      // 글루 로직: 여러 스코프를 연결하는 함수
      const handleResult = (result) => { ... };
    
      return { ...state, ...auth, handleResult };
    };
    
  2. 서브 훅으로 이동한 import 정리
  3. 타입/인터페이스는 사용 파일에 co-locate

5단계: 디렉토리 구조화

  1. 컴포넌트 서브디렉토리 내부 훅은 _hooks/ 폴더에 배치:
    component/
      _hooks/
        use-action.ts
    
  2. composer 훅 전용 서브 훅은 동명 서브디렉토리로 이동:
    _hooks/
      use-hero-action.ts
      use-hero-action/
        use-card-state.ts
        use-hero-auth.ts
        use-rso-callback.ts
    
  3. 다른 곳에서도 사용되는 범용 훅은 @/hooks/에 유지
  4. import 경로 업데이트

6단계: 검증

  1. pnpm build 성공 확인
  2. pnpm lint 통과 확인
  3. 기존 동작 변경 없음 확인

Constraints

  • useMemo, useCallback 사용 금지 (React Compiler 환경)
  • 프로젝트 코드 규칙 준수 (CLAUDE.md 참조): arrow function, named export, async/await 등
  • 이펙트 훅의 JSDoc 설명 필수
  • 글루 함수(여러 스코프를 건드리는 함수)는 composer에 유지 — 억지 분리 금지
  • 단순 boolean 토글 등 trivial 상태의 별도 훅 분리 금지

Success Criteria

  • composer 훅의 서브 훅 호출 + 글루 로직만 포함
  • 각 서브 훅의 단일 책임
  • 전용 서브 훅의 하위 디렉토리 격리
  • 빌드/린트 통과
  • 기존 동작 변경 없음

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

commit

無料

커밋 생성. 변경사항 분석 후 .claude/skills/commit 기준 커밋 메시지 작성과 커밋 실행

日本語の概要は準備中です。原文の説明を表示しています。

OU9999/codex-webtoon142026年7月1日 更新

비대한 React 컴포넌트의 스코프별 서브 컴포넌트 분리. .claude/skills/custom-component 기준

日本語の概要は準備中です。原文の説明を表示しています。

OU9999/codex-webtoon142026年7月1日 更新

비대한 React 컴포넌트를 스코프별 서브 컴포넌트로 분리, 시맨틱 HTML 적용, 전용 서브디렉토리 구조화

日本語の概要は準備中です。原文の説明を表示しています。

OU9999/codex-webtoon142026年7月1日 更新

비대한 커스텀 훅의 스코프별 서브 훅 분리. .claude/skills/custom-hook 기준

日本語の概要は準備中です。原文の説明を表示しています。

OU9999/codex-webtoon142026年7月1日 更新

deploy

無料

배포. release 브랜치 main 반영, 빌드 검증, push 실행. .claude/skills/deploy 기준

日本語の概要は準備中です。原文の説明を表示しています。

OU9999/codex-webtoon142026年7月1日 更新

Automates browser interactions for web testing, form filling, screenshots, and data extraction. Use when the user needs to navigate websites, interact with web pages, fill forms, take screenshots, test web applications, or extract information from web pages.

日本語の概要は準備中です。原文の説明を表示しています。

OU9999/codex-webtoon142026年7月1日 更新

OU9999 のスキルをすべて見る

このスキルの問題を報告する