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,184 @@
1
+ ---
2
+ name: Coding
3
+ description: 모든 코드 작성 시 참조. SRP/결합도/응집도 판단 기준, 폴더 구조 설계 원칙, 삼항연산자/try-catch 가독성 규칙 제공.
4
+ keywords: [SRP, 단일책임, 결합도, 응집도, 설계원칙, 폴더구조, 아키텍처, 가독성, 삼항연산자, try-catch]
5
+ estimated_tokens: ~500
6
+ ---
7
+
8
+ # 공통 코딩 원칙
9
+
10
+ ## 단일 책임 원칙 (SRP)
11
+
12
+ > **하나의 모듈/컴포넌트는 하나의 책임만 가진다.**
13
+
14
+ ### 백엔드 레이어별 책임
15
+
16
+ | 레이어 | 책임 | 금지 |
17
+ |--------|------|------|
18
+ | **Entity** | 데이터 구조 정의 | 비즈니스 로직 |
19
+ | **Repository** | 데이터 접근 | 비즈니스 로직 |
20
+ | **Service** | 비즈니스 로직 | HTTP 의존 |
21
+ | **Controller** | 요청 라우팅 | 비즈니스 로직 |
22
+ | **DTO/Schema** | 데이터 전송 구조 | 로직 |
23
+
24
+ ### 프론트엔드 컴포넌트별 책임
25
+
26
+ | 유형 | 책임 | 금지 |
27
+ |------|------|------|
28
+ | **Page** | 레이아웃, 데이터 fetch | 복잡한 로직 |
29
+ | **Container** | 상태 관리, API 호출 | 과도한 UI |
30
+ | **Presentational** | UI 렌더링 | API 호출, 전역 상태 |
31
+ | **Hook** | 특정 로직 캡슐화 | 여러 책임 혼합 |
32
+ | **Store** | 전역 상태 | UI 로직 |
33
+
34
+ ---
35
+
36
+ ## 결합도 낮추기
37
+
38
+ > **모듈 간 의존성을 최소화한다.**
39
+
40
+ ### 공통 규칙
41
+
42
+ | 규칙 | 설명 |
43
+ |------|------|
44
+ | **순환 의존 금지** | A → B → A 형태 금지 |
45
+ | **상위 모듈 의존 금지** | shared는 도메인 모듈 의존 금지 |
46
+ | **인터페이스로 의존** | 구체 클래스 대신 추상화에 의존 |
47
+ | **공개 API 통해 접근** | index.ts를 통한 export만 사용 |
48
+
49
+ ### 백엔드
50
+
51
+ ```typescript
52
+ // 토큰 기반 주입 / 인터페이스 의존
53
+ @Inject(PRODUCT_REPOSITORY)
54
+ private readonly repository: IProductRepository
55
+
56
+ // 구체 클래스 직접 의존 금지
57
+ private readonly repository: ProductRepository
58
+ ```
59
+
60
+ ### 프론트엔드
61
+
62
+ ```typescript
63
+ // props로 의존성 전달
64
+ function ProductCard({ product, onAction }: Props) { ... }
65
+
66
+ // 전역 상태 직접 접근 (Presentational에서) 금지
67
+ const action = useStore(s => s.action);
68
+ ```
69
+
70
+ ---
71
+
72
+ ## 응집도 높이기
73
+
74
+ > **관련 있는 코드는 가까이 둔다.**
75
+
76
+ ### 폴더 구조 원칙
77
+
78
+ ```
79
+ 높은 응집도:
80
+ - 같은 도메인 파일은 같은 폴더에
81
+ - 컴포넌트와 관련 스타일은 같은 파일에
82
+ - 기능별 hook 분리
83
+
84
+ 낮은 응집도 (피해야 함):
85
+ - 관련 없는 기능을 한 파일에
86
+ - 모든 컴포넌트를 최상위에
87
+ - 여러 도메인을 한 모듈에서 처리
88
+ ```
89
+
90
+ ### 폴더 구조 예시
91
+
92
+ ```
93
+ src/
94
+ ├── module/
95
+ │ ├── domain/ # Entity (공유)
96
+ │ ├── product/ # 기능별 폴더
97
+ │ │ ├── product.controller.ts
98
+ │ │ ├── product.service.ts
99
+ │ │ ├── product.dto.ts
100
+ │ │ └── product.module.ts
101
+ │ └── order/
102
+ └── shared/ # 공통 (상위 의존 금지)
103
+ ```
104
+
105
+ ```
106
+ src/
107
+ ├── components/
108
+ │ ├── product/ # 도메인별 폴더
109
+ │ │ ├── ProductCard.tsx
110
+ │ │ ├── ProductList.tsx
111
+ │ │ └── index.ts
112
+ │ └── common/ # 공통 (도메인 의존 금지)
113
+ ├── hooks/ # 도메인별 hook
114
+ ├── store/ # 전역 상태
115
+ └── shared/ # 유틸리티
116
+ ```
117
+
118
+ ---
119
+
120
+ ## 가독성 규칙
121
+
122
+ ### try-catch vs then-catch
123
+
124
+ > **Promise 처리 시 `then-catch` 패턴을 사용한다.**
125
+
126
+ ```typescript
127
+ // ❌ try-catch (가독성 저하)
128
+ async function fetchUser(id: string) {
129
+ try {
130
+ const user = await userService.findById(id);
131
+ return user;
132
+ } catch (error) {
133
+ throw new NotFoundException('User not found');
134
+ }
135
+ }
136
+
137
+ // ✅ then-catch (가독성 향상)
138
+ function fetchUser(id: string) {
139
+ return userService.findById(id)
140
+ .then(user => user)
141
+ .catch(() => {
142
+ throw new NotFoundException('User not found');
143
+ });
144
+ }
145
+ ```
146
+
147
+ ### 삼항연산자 규칙
148
+
149
+ > **삼항연산자에서 인자가 2개 이상인 함수를 호출하지 않는다.**
150
+
151
+ ```typescript
152
+ // ❌ 삼항연산자 내 복잡한 함수 호출
153
+ const result = isAdmin
154
+ ? processAdminData(data, options, config)
155
+ : processUserData(data, options);
156
+
157
+ // ✅ 변수로 분리 후 사용
158
+ const processor = isAdmin ? processAdminData : processUserData;
159
+ const result = processor(data, options, config);
160
+
161
+ // ✅ 또는 if문 사용
162
+ let result;
163
+ if (isAdmin) {
164
+ result = processAdminData(data, options, config);
165
+ } else {
166
+ result = processUserData(data, options);
167
+ }
168
+ ```
169
+
170
+ **삼항연산자 허용 케이스:**
171
+ - 단순 값 선택: `const name = isKorean ? '홍길동' : 'John';`
172
+ - 인자 없는/1개 함수: `const value = isValid ? getValue() : getDefault();`
173
+
174
+ ---
175
+
176
+ ## 코드 작성 시 체크리스트
177
+
178
+ - [ ] 이 파일의 책임은 하나인가?
179
+ - [ ] 다른 모듈에 불필요하게 의존하고 있지 않은가?
180
+ - [ ] 관련 파일들이 같은 폴더에 있는가?
181
+ - [ ] 순환 의존이 발생하지 않는가?
182
+ - [ ] 공개 API(index.ts)를 통해 접근하는가?
183
+ - [ ] Promise 처리에 then-catch 패턴을 사용했는가?
184
+ - [ ] 삼항연산자에서 복잡한 함수 호출을 피했는가?
@@ -0,0 +1,290 @@
1
+ ---
2
+ name: Documentation
3
+ description: .claude 폴더 내 문서 생성/수정 시 사용. frontmatter 형식, Context/Skill/Agent 템플릿, 파일 분리 기준 제공.
4
+ keywords: [문서, 작성, CLAUDE.md, context, skill, agent, frontmatter, 템플릿]
5
+ estimated_tokens: ~800
6
+ ---
7
+
8
+ # .claude 문서 작성 스킬
9
+
10
+ ## 핵심 원칙
11
+
12
+ 1. **Context 압축**: 토큰 절약을 위해 최대한 압축
13
+ 2. **검색 가능성**: keywords로 정확한 매칭
14
+ 3. **독립성**: 각 파일이 단독으로 이해 가능
15
+ 4. **참조 명시**: 관련 문서 경로 항상 포함
16
+
17
+ ## 디렉토리 구조
18
+
19
+ ```
20
+ .claude/
21
+ ├── CLAUDE.md # 프로젝트 전체 가이드 (인덱스 역할)
22
+ ├── context/ # 사실/배경 정보 (읽기 전용)
23
+ │ ├── architecture.md
24
+ │ └── domain/
25
+ ├── skills/ # 방법/절차 가이드 (액션 지침)
26
+ │ ├── Coding/
27
+ │ │ └── SKILL.md
28
+ │ └── React/
29
+ │ ├── SKILL.md # 인덱스
30
+ │ └── sub-skill.md
31
+ ├── agents/ # Agent 정의
32
+ │ └── explore.md
33
+ └── hooks/ # 자동 실행 스크립트
34
+ └── pre-commit.sh
35
+ ```
36
+
37
+ ## 파일 유형 구분
38
+
39
+ | 유형 | 목적 | 위치 | 예시 |
40
+ |------|------|------|------|
41
+ | Context | 사실/배경 ("우리 프로젝트는 이렇다") | `context/` | 아키텍처, 도메인 지식 |
42
+ | Skill | 방법/절차 ("이렇게 해라") | `skills/` | 코딩 규칙, Git 규칙 |
43
+ | Agent | 역할/프로세스 ("이 Agent가 한다") | `agents/` | explore, code-writer |
44
+ | Hook | 자동 실행 ("이 시점에 실행") | `hooks/` | pre-commit, post-push |
45
+
46
+ ## Frontmatter 필수 작성
47
+
48
+ 모든 `.md` 파일은 YAML frontmatter로 시작합니다.
49
+
50
+ ### 공통 필드
51
+
52
+ ```yaml
53
+ ---
54
+ name: file-name # 파일 식별자 (kebab-case)
55
+ description: 한 줄 설명 # 파일 목적 (50자 이내)
56
+ keywords: [키워드1, 키워드2] # 검색/매칭용 (한글, 영문 혼용)
57
+ estimated_tokens: ~500 # 예상 토큰 수
58
+ ---
59
+ ```
60
+
61
+ ### Agent 전용 필드
62
+
63
+ ```yaml
64
+ ---
65
+ name: agent-name
66
+ description: Agent 역할 설명
67
+ keywords: [...]
68
+ model: opus # opus | sonnet | haiku
69
+ color: blue # UI 표시 색상
70
+ ---
71
+ ```
72
+
73
+ ### Skill 전용 필드
74
+
75
+ ```yaml
76
+ ---
77
+ name: skill-name
78
+ description: Skill 목적
79
+ keywords: [...]
80
+ user-invocable: true # 사용자가 /skill-name으로 호출 가능
81
+ ---
82
+ ```
83
+
84
+ ## 파일 길이 제한
85
+
86
+ | 상태 | 줄 수 | 조치 |
87
+ |------|-------|------|
88
+ | 권장 | ~500줄 | 이상적인 길이 |
89
+ | 허용 | ~1000줄 | 최대 한계 |
90
+ | 초과 | 1000줄+ | 반드시 파일 분리 |
91
+
92
+ **초과 시 분리 방법:**
93
+ - Skill: `SKILL.md` (인덱스) + `sub-skill.md` (상세)
94
+ - Context: `INDEX.md` (요약) + `detail.md` (상세)
95
+
96
+ ## 파일 유형별 템플릿
97
+
98
+ ### Context 템플릿
99
+
100
+ ```markdown
101
+ ---
102
+ name: context-name
103
+ description: 설명
104
+ keywords: [키워드1, 키워드2]
105
+ estimated_tokens: ~300
106
+ ---
107
+
108
+ # 제목
109
+
110
+ ## 핵심 정보
111
+
112
+ (테이블, 다이어그램으로 핵심만 요약)
113
+
114
+ | 항목 | 값 |
115
+ |------|-----|
116
+ | ... | ... |
117
+
118
+ ## 상세 구조
119
+
120
+ (필요시 코드 블록, 상세 설명)
121
+
122
+ ## 관련 파일
123
+
124
+ - `path/to/related.md` - 설명
125
+ - `src/module/` - 관련 소스 코드
126
+ ```
127
+
128
+ ### Skill 템플릿
129
+
130
+ ```markdown
131
+ ---
132
+ name: skill-name
133
+ description: 설명
134
+ keywords: [키워드1, 키워드2]
135
+ estimated_tokens: ~400
136
+ ---
137
+
138
+ # 스킬 제목
139
+
140
+ ## 핵심 역할
141
+
142
+ - 역할 1
143
+ - 역할 2
144
+
145
+ ## 필수 준수 사항
146
+
147
+ | 규칙 | 올바른 예 | 잘못된 예 |
148
+ |------|----------|----------|
149
+ | ... | ... | ... |
150
+
151
+ ## 코드 예제
152
+
153
+ \`\`\`typescript
154
+ // 올바른 패턴
155
+ \`\`\`
156
+
157
+ ## 체크리스트
158
+
159
+ - [ ] 확인 항목 1
160
+ - [ ] 확인 항목 2
161
+
162
+ ## 관련 문서
163
+
164
+ | 문서 | 설명 |
165
+ |------|------|
166
+ | `sub-skill.md` | 상세 내용 |
167
+ ```
168
+
169
+ ### Agent 템플릿
170
+
171
+ ```markdown
172
+ ---
173
+ name: agent-name
174
+ description: Agent 역할 설명
175
+ keywords: [키워드1, 키워드2]
176
+ model: sonnet
177
+ color: blue
178
+ ---
179
+
180
+ # Agent 이름
181
+
182
+ ## 역할
183
+
184
+ 1. 첫 번째 역할
185
+ 2. 두 번째 역할
186
+
187
+ ## 언제 사용하는가
188
+
189
+ - 사용 시점 1
190
+ - 사용 시점 2
191
+
192
+ ## 프로세스
193
+
194
+ ### Step 1: 준비
195
+ ...
196
+
197
+ ### Step 2: 실행
198
+ ...
199
+
200
+ ## 출력 형식
201
+
202
+ \`\`\`markdown
203
+ # 결과 제목
204
+
205
+ ## 요약
206
+ ...
207
+ \`\`\`
208
+ ```
209
+
210
+ ## 인덱스 파일 작성법
211
+
212
+ Skill이 여러 파일로 분리되면 `SKILL.md`가 인덱스 역할을 합니다.
213
+
214
+ ```markdown
215
+ ---
216
+ name: skill-name
217
+ description: 스킬 그룹 설명
218
+ keywords: [...]
219
+ ---
220
+
221
+ # 스킬 제목
222
+
223
+ ## 핵심 역할
224
+
225
+ (간단한 요약)
226
+
227
+ ## 관련 문서
228
+
229
+ | 문서 | 설명 |
230
+ |------|------|
231
+ | `sub-skill-1.md` | 세부 주제 1 |
232
+ | `sub-skill-2.md` | 세부 주제 2 |
233
+
234
+ (인덱스 파일에서는 상세 내용 작성하지 않음)
235
+ ```
236
+
237
+ ## Keywords 작성 가이드
238
+
239
+ 효과적인 검색을 위해 다양한 변형을 포함합니다.
240
+
241
+ ```yaml
242
+ keywords:
243
+ - React # 영문 정식 명칭
244
+ - 리액트 # 한글
245
+ - component # 관련 개념 (영문)
246
+ - 컴포넌트 # 관련 개념 (한글)
247
+ - hooks # 세부 기능
248
+ - useState # 구체적 API
249
+ ```
250
+
251
+ **포함할 것:**
252
+ - 정식 명칭 (영문/한글)
253
+ - 약어 (예: RHF for React Hook Form)
254
+ - 관련 개념
255
+ - 자주 검색하는 키워드
256
+
257
+ ## 작성 시 주의사항
258
+
259
+ ### DO (해야 할 것)
260
+
261
+ - 테이블로 정보 압축
262
+ - 코드 예제에 주석 최소화
263
+ - 한 파일에 하나의 주제
264
+ - 관련 문서 참조 명시
265
+ - 체크리스트로 검증 포인트 제공
266
+
267
+ ### DON'T (하지 말 것)
268
+
269
+ - 장황한 설명 (압축!)
270
+ - 중복된 내용 (참조로 대체)
271
+ - 1000줄 초과 (분리!)
272
+ - frontmatter 누락
273
+ - 모호한 keywords
274
+
275
+ ## 체크리스트
276
+
277
+ ### 새 파일 작성 시
278
+ - [ ] frontmatter가 올바르게 작성되었는가?
279
+ - [ ] keywords에 영문/한글 변형이 포함되었는가?
280
+ - [ ] 500줄 이하인가? (초과 시 분리 검토)
281
+ - [ ] 관련 문서 참조가 명시되었는가?
282
+
283
+ ### 인덱스 파일인 경우
284
+ - [ ] 관련 문서 테이블이 있는가?
285
+ - [ ] 상세 내용은 sub-file로 분리되었는가?
286
+
287
+ ### Agent 파일인 경우
288
+ - [ ] model 필드가 지정되었는가?
289
+ - [ ] 프로세스가 Step별로 명시되었는가?
290
+ - [ ] 출력 형식이 정의되었는가?
@@ -0,0 +1,45 @@
1
+ ---
2
+ name: Git
3
+ description: 커밋/PR/브랜치 작업 시 사용. FEAT/FIX/REFACTOR 메시지 규칙, PR 템플릿, 리뷰 체크리스트 인덱스 제공.
4
+ keywords: [커밋, PR, 브랜치, push, merge, FEAT, FIX, 코드리뷰, PR리뷰, 피드백]
5
+ estimated_tokens: ~100
6
+ ---
7
+
8
+ # Git 작업 스킬
9
+
10
+ ## 이 스킬이 필요할 때
11
+
12
+ - Git commit 메시지 작성
13
+ - Pull Request 생성
14
+ - PR/MR 코드 리뷰
15
+ - 리뷰 피드백 반영
16
+
17
+ ## 관련 문서
18
+
19
+ | 주제 | 위치 | 설명 |
20
+ |-----|------|------|
21
+ | Commit/PR 생성 | `git.md` | 메시지 형식, PR 작성법, 브랜치 전략, 안전 규칙 |
22
+ | PR 리뷰 | `pr-review.md` | 체크리스트 기반 코드 리뷰 워크플로우 |
23
+ | PR 피드백 적용 | `pr-apply.md` | 리뷰 피드백 분류 및 반영 방법 |
24
+
25
+ ## 빠른 참조
26
+
27
+ ### Commit PREFIX
28
+
29
+ | PREFIX | 용도 |
30
+ |--------|------|
31
+ | FEAT | 새로운 기능 |
32
+ | FIX | 버그 수정 |
33
+ | REFACTOR | 리팩토링 |
34
+ | CHORE | 빌드/설정 |
35
+ | DOCS | 문서 |
36
+
37
+ > 상세 형식 및 예시: `git.md`
38
+
39
+ ### PR 워크플로우
40
+
41
+ ```
42
+ 변경사항 분석 → 영향 분석 → PR 작성 → Self Review → 팀원 리뷰 → Merge
43
+ ```
44
+
45
+ > 상세 Step: `git.md`