jun-claude-code 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,323 @@
1
+ ---
2
+ name: git
3
+ description: Git 작업 가이드. Commit 메시지 작성법, PR 작성법, 브랜치 전략, 안전 규칙.
4
+ keywords: [커밋, PR, 브랜치, push, merge, FEAT, FIX, REFACTOR, CHORE, DOCS, GitHub, 풀리퀘스트]
5
+ estimated_tokens: ~600
6
+ ---
7
+
8
+ # Git 작업 가이드
9
+
10
+ ## Commit 메시지
11
+
12
+ ### 형식
13
+
14
+ ```
15
+ <PREFIX>: <간결한 요약 (한글)>
16
+
17
+ <본문 (선택)>
18
+
19
+ Co-Authored-By: Claude <noreply@anthropic.com>
20
+ ```
21
+
22
+ ### PREFIX
23
+
24
+ | PREFIX | 용도 | 예시 |
25
+ |--------|------|------|
26
+ | FEAT | 새로운 기능 | `FEAT: 결제 완료 후 주문 저장 구현` |
27
+ | FIX | 버그 수정 | `FIX: 로그인 세션 만료 오류 수정` |
28
+ | REFACTOR | 리팩토링 | `REFACTOR: Order Entity 패턴 적용` |
29
+ | CHORE | 빌드/설정 | `CHORE: ESLint 설정 업데이트` |
30
+ | DOCS | 문서 | `DOCS: README 설치 가이드 추가` |
31
+ | STYLE | 포맷팅 | `STYLE: ESLint 경고 수정` |
32
+ | TEST | 테스트 | `TEST: 주문 생성 단위 테스트 추가` |
33
+
34
+ ### 작성 원칙
35
+
36
+ - **한글 사용**, 50자 이내
37
+ - **현재형**: "추가함" → "추가"
38
+ - **Why 중심**: 무엇보다 왜 변경했는지
39
+
40
+ ### Commit 단위
41
+
42
+ - 한 커밋 = 한 가지 목적
43
+ - 각 커밋 후 빌드 에러 없음
44
+ - 되돌리기 용이한 단위
45
+
46
+ ---
47
+
48
+ ## 브랜치 전략
49
+
50
+ ```
51
+ feature/{기능명} # 새 기능
52
+ fix/{버그명} # 버그 수정
53
+ refactor/{대상} # 리팩토링
54
+ chore/{작업명} # 설정/빌드
55
+ ```
56
+
57
+ ---
58
+
59
+ ## PR (Pull Request) 생성
60
+
61
+ ### Step 1: 변경사항 분석
62
+
63
+ ```bash
64
+ git status # 변경된 파일
65
+ git diff main...HEAD # main 대비 전체 변경
66
+ git log main..HEAD --oneline # 커밋 히스토리
67
+ ```
68
+
69
+ ### Step 2: 영향 범위 분석
70
+
71
+ **필수: PR 작성 전 다른 코드에 미치는 영향 분석**
72
+
73
+ | 변경 유형 | 확인 사항 |
74
+ |----------|----------|
75
+ | API Output 변경 | 프론트엔드 호출 코드 |
76
+ | API Input 변경 | mutation/query 사용처 |
77
+ | 공유 타입 변경 | 타입 패키지 사용처 |
78
+ | Entity 컬럼 변경 | Repository, Service, Migration |
79
+ | 컴포넌트 Props 변경 | import하는 모든 파일 |
80
+ | 유틸 함수 시그니처 변경 | 함수 호출처 |
81
+ | 환경 변수 추가 | `.env.example`, 배포 설정 |
82
+
83
+ ```bash
84
+ # 변경된 export 사용처 검색
85
+ grep -r "import.*변경된함수명" --include="*.ts" --include="*.tsx"
86
+ ```
87
+
88
+ ### Step 3: 영향 판단
89
+
90
+ **필수: 변경사항이 시스템에 미치는 영향 분석**
91
+
92
+ #### Code Flow 분석
93
+
94
+ ```
95
+ 변경된 함수/컴포넌트 → 호출하는 곳 → 그 호출자의 호출자 → ...
96
+ ```
97
+
98
+ - 변경된 코드를 호출하는 모든 경로 추적
99
+ - 데이터 흐름 변경 시 downstream 영향 확인
100
+ - 에러 전파 경로 확인
101
+
102
+ #### User Flow 분석
103
+
104
+ | 질문 | 확인 |
105
+ |------|------|
106
+ | 어떤 페이지/기능에 영향? | 영향받는 화면 목록 |
107
+ | 사용자 동선 변경? | 기존 UX 유지 여부 |
108
+ | 에러 시 사용자 경험? | 에러 메시지, 폴백 처리 |
109
+
110
+ #### Breaking Change 판단
111
+
112
+ ```markdown
113
+ ## Breaking Change 여부: 없음 / 있음
114
+
115
+ ### 있다면:
116
+ - **무엇이**: 변경된 인터페이스/동작
117
+ - **어디에 영향**: 영향받는 코드 목록
118
+ - **마이그레이션**: 필요한 수정 작업
119
+ ```
120
+
121
+ ### Step 4: PR 본문 작성
122
+
123
+ ```markdown
124
+ ## Summary
125
+
126
+ - **핵심 변경 1**: 설명
127
+ - **핵심 변경 2**: 설명
128
+
129
+ ## 주요 변경사항
130
+
131
+ ### Backend API (해당시)
132
+ **엔드포인트명:**
133
+ ```typescript
134
+ // Input
135
+ { field: type }
136
+ // Output
137
+ { field: type }
138
+ ```
139
+
140
+ ### Frontend (해당시)
141
+ **컴포넌트/페이지:**
142
+ - 주요 기능 1
143
+ - 주요 기능 2
144
+
145
+ ## 변경된 파일
146
+ - `path/to/file1.ts` - 변경 내용
147
+ - `path/to/file2.tsx` - 변경 내용
148
+
149
+ ## 영향 범위
150
+
151
+ ### Breaking Changes (해당시)
152
+ - 변경된 API/타입과 영향받는 코드
153
+
154
+ ### 사이드이펙트 검토
155
+ - 영향받는 기능 없음 / 또는 영향 목록
156
+
157
+ ## 테스트 (해당시)
158
+ - [ ] 단위 테스트
159
+ - [ ] 통합 테스트
160
+ - [ ] 수동 테스트
161
+
162
+ Generated with [Claude Code](https://claude.com/claude-code)
163
+ ```
164
+
165
+ ### Step 5: PR 생성
166
+
167
+ ```bash
168
+ git push -u origin feature/branch-name
169
+
170
+ gh pr create --base main --title "TYPE: 제목" --body "$(cat <<'EOF'
171
+ ## Summary
172
+ ...
173
+ EOF
174
+ )"
175
+ ```
176
+
177
+ ---
178
+
179
+ ## Git 명령어 주의사항
180
+
181
+ ### 금지
182
+
183
+ | 명령어 | 이유 |
184
+ |--------|------|
185
+ | `git add -A`, `git add .` | 민감 파일 포함 위험 |
186
+ | `git push --force` | 히스토리 손상 |
187
+ | `git reset --hard` | 작업 손실 위험 |
188
+ | `--no-verify` | hook 우회 금지 |
189
+
190
+ ### 권장
191
+
192
+ ```bash
193
+ # 파일 지정하여 add
194
+ git add path/to/file1.ts path/to/file2.ts
195
+
196
+ # HEREDOC으로 커밋
197
+ git commit -m "$(cat <<'EOF'
198
+ FEAT: 기능 설명
199
+
200
+ 상세 내용
201
+
202
+ Co-Authored-By: Claude <noreply@anthropic.com>
203
+ EOF
204
+ )"
205
+ ```
206
+
207
+ ---
208
+
209
+ ## PR 생성 전 체크리스트
210
+
211
+ - [ ] `lint` 통과
212
+ - [ ] `build` 성공
213
+ - [ ] 커밋 메시지 규칙 준수
214
+ - [ ] Summary가 변경 내용을 명확히 설명
215
+ - [ ] 영향 범위 분석 완료
216
+ - [ ] Breaking change 명시 (해당시)
217
+
218
+ ---
219
+
220
+ ## PR 생성 후 워크플로우
221
+
222
+ ### Step 6: Self PR Review
223
+
224
+ PR 생성 직후 본인이 먼저 리뷰합니다.
225
+
226
+ ```bash
227
+ # PR diff 확인
228
+ gh pr diff <PR번호>
229
+
230
+ # PR 상세 확인
231
+ gh pr view <PR번호>
232
+ ```
233
+
234
+ **Self Review 체크리스트:**
235
+
236
+ | 항목 | 확인 |
237
+ |------|------|
238
+ | 불필요한 코드/주석 제거 | ☐ |
239
+ | 디버그 코드 제거 (console.log 등) | ☐ |
240
+ | 하드코딩된 값 없음 | ☐ |
241
+ | 타입 안전성 확인 | ☐ |
242
+ | 에러 핸들링 적절함 | ☐ |
243
+ | 네이밍 컨벤션 준수 | ☐ |
244
+
245
+ > 상세 체크리스트: `.claude/skills/Git/pr-review.md`
246
+
247
+ **Self Review 이슈 발견 시:**
248
+
249
+ ```bash
250
+ # 수정 후 추가 커밋
251
+ git add <수정파일>
252
+ git commit -m "$(cat <<'EOF'
253
+ FIX: Self review 피드백 반영
254
+
255
+ - 수정 내용 1
256
+ - 수정 내용 2
257
+
258
+ Co-Authored-By: Claude <noreply@anthropic.com>
259
+ EOF
260
+ )"
261
+ git push
262
+ ```
263
+
264
+ ### Step 7: PR Apply Mode (리뷰 피드백 적용)
265
+
266
+ 팀원 리뷰 후 피드백이 있으면 pr-apply 모드로 진입합니다.
267
+
268
+ ```bash
269
+ # 리뷰 코멘트 확인
270
+ gh pr view <PR번호> --comments
271
+
272
+ # 피드백 분류
273
+ # Critical - 반드시 수정
274
+ # Suggestion - 검토 후 결정
275
+ # Question - 답변 필요
276
+ ```
277
+
278
+ **피드백 반영:**
279
+
280
+ ```bash
281
+ # 코드 수정 후 커밋
282
+ git add <수정파일>
283
+ git commit -m "$(cat <<'EOF'
284
+ FIX: PR 리뷰 피드백 반영
285
+
286
+ - [Critical] 피드백1 반영
287
+ - [Suggestion] 피드백2 반영
288
+
289
+ Co-Authored-By: Claude <noreply@anthropic.com>
290
+ EOF
291
+ )"
292
+ git push
293
+
294
+ # 리뷰어에게 알림
295
+ gh pr comment <PR번호> --body "리뷰 피드백 반영 완료. 재확인 부탁드립니다."
296
+ ```
297
+
298
+ > 상세 가이드: `.claude/skills/Git/pr-apply.md`
299
+
300
+ ---
301
+
302
+ ## 전체 PR 워크플로우 요약
303
+
304
+ ```
305
+ ┌─────────────────────────────────────────────────────────────┐
306
+ │ 1. 변경사항 분석 → 2. 영향 범위 분석 → 3. 영향 판단 │
307
+ │ ↓ │
308
+ │ 4. PR 본문 작성 → 5. PR 생성 (gh pr create) │
309
+ │ ↓ │
310
+ │ 6. Self PR Review → 이슈 발견 시 수정 → push │
311
+ │ ↓ │
312
+ │ 7. 팀원 리뷰 대기 → 피드백 있으면 PR Apply Mode │
313
+ │ ↓ │
314
+ │ 8. Approve → Merge │
315
+ └─────────────────────────────────────────────────────────────┘
316
+ ```
317
+
318
+ ### 관련 Skill 참조
319
+
320
+ | 단계 | Skill |
321
+ |------|-------|
322
+ | PR Review | `.claude/skills/Git/pr-review.md` |
323
+ | PR Apply | `.claude/skills/Git/pr-apply.md` |
@@ -0,0 +1,87 @@
1
+ ---
2
+ name: pr-apply
3
+ description: PR 리뷰 피드백 적용 스킬. 리뷰 코멘트 확인, 코드 수정, 커밋 생성.
4
+ keywords: [PR피드백, 리뷰적용, 코드수정, 코멘트, 변경요청, 재커밋]
5
+ estimated_tokens: ~250
6
+ user-invocable: true
7
+ ---
8
+
9
+ # PR Apply Skill
10
+
11
+ PR 리뷰 피드백을 코드에 반영하는 가이드.
12
+
13
+ ## Apply Workflow
14
+
15
+ ### Step 1: 리뷰 피드백 확인
16
+
17
+ ```bash
18
+ # PR 코멘트 조회
19
+ gh pr view <PR번호> --comments
20
+
21
+ # PR diff 확인
22
+ gh pr diff <PR번호>
23
+ ```
24
+
25
+ ### Step 2: 피드백 분류
26
+
27
+ | 분류 | 대응 |
28
+ |------|------|
29
+ | Critical | 반드시 수정 |
30
+ | Suggestion | 검토 후 적용 여부 결정 |
31
+ | Question | 답변 코멘트 작성 |
32
+
33
+ ### Step 3: 코드 수정
34
+
35
+ ```bash
36
+ # 현재 브랜치에서 수정
37
+ git checkout feature/branch-name
38
+
39
+ # 수정 후 커밋 (리뷰 반영임을 명시)
40
+ git commit -m "$(cat <<'EOF'
41
+ FIX: PR 리뷰 피드백 반영
42
+
43
+ - 피드백 1 반영 내용
44
+ - 피드백 2 반영 내용
45
+
46
+ Co-Authored-By: Claude <noreply@anthropic.com>
47
+ EOF
48
+ )"
49
+ ```
50
+
51
+ ### Step 4: PR 업데이트
52
+
53
+ ```bash
54
+ # 변경사항 push
55
+ git push origin feature/branch-name
56
+
57
+ # 리뷰어에게 수정 완료 알림 (선택)
58
+ gh pr comment <PR번호> --body "리뷰 피드백 반영 완료했습니다. 재확인 부탁드립니다."
59
+ ```
60
+
61
+ ## 피드백 대응 원칙
62
+
63
+ ### 수용할 때
64
+
65
+ - 코드 수정 후 커밋
66
+ - 복잡한 변경은 별도 커밋으로 분리
67
+ - 수정 완료 후 리뷰어에게 알림
68
+
69
+ ### 반대 의견이 있을 때
70
+
71
+ - PR 코멘트로 이유 설명
72
+ - 대안 제시
73
+ - 합의 후 진행
74
+
75
+ ### 질문에 답변할 때
76
+
77
+ - 해당 코멘트에 직접 답변
78
+ - 필요시 코드에 주석 추가
79
+
80
+ ## 체크리스트
81
+
82
+ - [ ] 모든 Critical 피드백 반영
83
+ - [ ] Suggestion 검토 및 결정
84
+ - [ ] Question 답변 완료
85
+ - [ ] `lint` 통과
86
+ - [ ] `build` 성공
87
+ - [ ] 리뷰어에게 재확인 요청
@@ -0,0 +1,69 @@
1
+ ---
2
+ name: pr-review
3
+ description: PR 코드 리뷰 스킬. 체크리스트 기반 구조적 리뷰 수행.
4
+ keywords: [PR리뷰, 코드리뷰, MR, 머지리퀘스트, 체크리스트, Critical, Warning, Approved]
5
+ estimated_tokens: ~300
6
+ user-invocable: true
7
+ ---
8
+
9
+ # PR Review Skill
10
+
11
+ 체크리스트 기반 Pull Request 리뷰.
12
+
13
+ ## Review Workflow
14
+
15
+ ### Step 1: Review Plan 작성
16
+
17
+ ```markdown
18
+ ## PR Review Plan
19
+
20
+ - [ ] **PR 범위 파악**
21
+ - 목적:
22
+ - 예상 동작 변경:
23
+
24
+ - [ ] **파일별 리뷰**
25
+ - [ ] `file1.ts` - 설명
26
+ - [ ] `file2.tsx` - 설명
27
+
28
+ - [ ] **구현 품질**
29
+ - [ ] 로직 정확성
30
+ - [ ] 에러 처리
31
+ - [ ] 엣지 케이스
32
+ - [ ] 타입 안전성
33
+
34
+ - [ ] **Best Practices**
35
+ - [ ] 유지보수성
36
+ - [ ] 성능
37
+ - [ ] 보안
38
+
39
+ - [ ] **통합**
40
+ - [ ] Breaking changes
41
+ - [ ] API 계약
42
+ ```
43
+
44
+ ### Step 2: 리뷰 실행
45
+
46
+ - 완료 항목 `[x]` 체크
47
+ - 이슈에 인라인 코멘트
48
+ - 심각도별 분류
49
+
50
+ ### Step 3: 결과 요약
51
+
52
+ ```markdown
53
+ ## Summary: Approved / Changes Requested / Blocked
54
+
55
+ ### Critical (필수 수정)
56
+ ### Suggestions (권장)
57
+ ### Questions (질문)
58
+ ### Highlights (좋은 점)
59
+ ```
60
+
61
+ ## PR 타입별 Focus
62
+
63
+ | Type | Focus Areas |
64
+ |------|-------------|
65
+ | Feature | 로직, 테스트, 문서 |
66
+ | Bugfix | 근본 원인, 회귀 방지 |
67
+ | Refactor | 동작 보존, 성능 |
68
+ | Config | 보안, 환경 호환성 |
69
+ | Dependency | Breaking changes, 보안 취약점 |
@@ -0,0 +1,159 @@
1
+ ---
2
+ name: React
3
+ description: React 컴포넌트 작성 시 사용. 파일/폴더 구조, useState/useEffect 규칙, props 설계, 렌더링 최적화 기법 제공.
4
+ keywords: [React, 컴포넌트, useState, useEffect, 훅, props, 상태관리, 렌더링, 최적화]
5
+ estimated_tokens: ~600
6
+ ---
7
+
8
+ # React 개발 스킬
9
+
10
+ ## 핵심 역할
11
+
12
+ - React 컴포넌트 설계 및 구현 가이드
13
+ - 상태 관리 패턴 적용
14
+ - 성능 최적화 기법 적용
15
+
16
+ ## 컴포넌트 설계 원칙
17
+
18
+ ### 파일/폴더 구조
19
+
20
+ ```
21
+ src/
22
+ ├── components/ # 재사용 가능한 공통 컴포넌트
23
+ │ └── Button/
24
+ │ ├── Button.tsx
25
+ │ ├── Button.styles.ts
26
+ │ └── index.ts
27
+ ├── features/ # 기능별 모듈
28
+ │ └── auth/
29
+ │ ├── components/
30
+ │ ├── hooks/
31
+ │ └── utils/
32
+ ├── hooks/ # 공통 커스텀 훅
33
+ ├── utils/ # 유틸리티 함수
34
+ └── types/ # 공통 타입 정의
35
+ ```
36
+
37
+ ### 컴포넌트 분류
38
+
39
+ | 유형 | 설명 | 예시 |
40
+ |------|------|------|
41
+ | Presentational | UI만 담당, props로 데이터 수신 | Button, Card, Input |
42
+ | Container | 로직/상태 관리, 데이터 fetch | UserListContainer |
43
+ | Layout | 페이지 레이아웃 구조 | Header, Sidebar, Footer |
44
+ | Page | 라우트에 매핑되는 페이지 | HomePage, LoginPage |
45
+
46
+ ## 필수 준수 사항
47
+
48
+ ### 컴포넌트 작성
49
+
50
+ | 규칙 | 올바른 예 | 잘못된 예 |
51
+ |------|----------|----------|
52
+ | 함수형 컴포넌트 사용 | `function Button() {}` | `class Button extends React.Component` |
53
+ | Props 타입 명시 | `interface ButtonProps { ... }` | `props: any` |
54
+ | 단일 책임 원칙 | 하나의 역할만 담당 | 여러 기능 혼합 |
55
+ | 적절한 컴포넌트 분리 | 100줄 이하 권장 | 500줄 이상의 거대 컴포넌트 |
56
+
57
+ ### 상태 관리
58
+
59
+ | 규칙 | 설명 |
60
+ |------|------|
61
+ | 상태 최소화 | 파생 가능한 값은 상태로 두지 않음 |
62
+ | 상태 위치 | 필요한 가장 가까운 공통 조상에 배치 |
63
+ | 불변성 유지 | 상태 직접 수정 금지, 새 객체/배열 생성 |
64
+ | 복잡한 상태 | useReducer 또는 상태 관리 라이브러리 사용 |
65
+
66
+ ### Hooks 규칙
67
+
68
+ | 규칙 | 설명 |
69
+ |------|------|
70
+ | 최상위에서만 호출 | 조건문, 반복문 내부에서 호출 금지 |
71
+ | 의존성 배열 정확히 | useEffect, useMemo, useCallback의 deps 누락 금지 |
72
+ | 커스텀 훅 추출 | 재사용 가능한 로직은 커스텀 훅으로 분리 |
73
+ | 훅 네이밍 | `use` 접두사 필수 (예: `useAuth`, `useFetch`) |
74
+
75
+ ## 성능 최적화
76
+
77
+ ### 메모이제이션
78
+
79
+ ```typescript
80
+ // 컴포넌트 메모이제이션
81
+ const MemoizedComponent = React.memo(Component);
82
+
83
+ // 값 메모이제이션
84
+ const expensiveValue = useMemo(() => computeExpensive(a, b), [a, b]);
85
+
86
+ // 함수 메모이제이션
87
+ const handleClick = useCallback(() => doSomething(id), [id]);
88
+ ```
89
+
90
+ ### 최적화 적용 기준
91
+
92
+ | 상황 | 적용 |
93
+ |------|------|
94
+ | 리스트 렌더링 | `key` prop 필수, 안정적인 ID 사용 |
95
+ | 자주 리렌더링되는 컴포넌트 | `React.memo` 적용 검토 |
96
+ | 비용이 큰 계산 | `useMemo` 사용 |
97
+ | 자식에게 전달하는 콜백 | `useCallback` 사용 |
98
+
99
+ ### 불필요한 최적화 금지
100
+
101
+ - 모든 컴포넌트에 무조건 memo 적용 금지
102
+ - 측정 없이 최적화하지 않음 (React DevTools Profiler 사용)
103
+
104
+ ## useEffect 패턴
105
+
106
+ ### 올바른 사용
107
+
108
+ ```typescript
109
+ // 데이터 fetch
110
+ useEffect(() => {
111
+ const controller = new AbortController();
112
+ fetchData(controller.signal);
113
+ return () => controller.abort();
114
+ }, [dependency]);
115
+
116
+ // 이벤트 구독
117
+ useEffect(() => {
118
+ window.addEventListener('resize', handleResize);
119
+ return () => window.removeEventListener('resize', handleResize);
120
+ }, []);
121
+ ```
122
+
123
+ ### 피해야 할 패턴
124
+
125
+ | 안티패턴 | 대안 |
126
+ |----------|------|
127
+ | props를 state로 복사 | props 직접 사용 |
128
+ | 렌더링 중 상태 업데이트 | 조건부 렌더링 또는 useMemo |
129
+ | 불필요한 Effect | 이벤트 핸들러로 처리 |
130
+
131
+ ## 체크리스트
132
+
133
+ ### 컴포넌트 작성 시
134
+ - [ ] Props 타입이 명시되어 있는가?
135
+ - [ ] 컴포넌트가 단일 책임을 가지는가?
136
+ - [ ] 적절한 크기로 분리되어 있는가?
137
+
138
+ ### 상태 관리
139
+ - [ ] 상태가 최소화되어 있는가?
140
+ - [ ] 상태 위치가 적절한가?
141
+ - [ ] 불변성이 유지되는가?
142
+
143
+ ### Hooks
144
+ - [ ] 의존성 배열이 정확한가?
145
+ - [ ] cleanup 함수가 필요한 경우 작성되었는가?
146
+ - [ ] 커스텀 훅으로 분리할 로직이 있는가?
147
+
148
+ ### 성능
149
+ - [ ] 리스트에 적절한 key가 사용되었는가?
150
+ - [ ] 불필요한 리렌더링이 없는가?
151
+ - [ ] 메모이제이션이 적절히 사용되었는가?
152
+
153
+ ## 관련 문서
154
+
155
+ | 문서 | 설명 |
156
+ |------|------|
157
+ | `tanstack-router.md` | TanStack Router 파일 기반 라우팅 패턴 |
158
+ | `react-hook-form.md` | React Hook Form + Zod 폼 검증 패턴 |
159
+ | `tailwind-styled.md` | tailwind-styled-components DOM depth 최소화 |