jun-claude-code 0.0.11 → 0.0.13

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.
Files changed (49) hide show
  1. package/README.md +122 -83
  2. package/dist/cli.js +40 -0
  3. package/dist/copy.js +92 -11
  4. package/dist/index.d.ts +1 -0
  5. package/dist/index.js +3 -1
  6. package/dist/init-context.d.ts +4 -0
  7. package/dist/init-context.js +143 -0
  8. package/dist/init-project.js +4 -4
  9. package/dist/validate.d.ts +4 -0
  10. package/dist/validate.js +105 -0
  11. package/package.json +2 -2
  12. package/{.claude → templates/global}/CLAUDE.md +50 -21
  13. package/{.claude → templates/global}/agents/architect.md +23 -11
  14. package/{.claude → templates/global}/agents/code-reviewer.md +17 -7
  15. package/{.claude → templates/global}/agents/code-writer.md +27 -15
  16. package/{.claude → templates/global}/agents/context-collector.md +11 -3
  17. package/{.claude → templates/global}/agents/context-manager.md +21 -9
  18. package/{.claude → templates/global}/agents/designer.md +32 -20
  19. package/{.claude → templates/global}/agents/director.md +43 -31
  20. package/{.claude → templates/global}/agents/explore.md +13 -5
  21. package/{.claude → templates/global}/agents/git-manager.md +39 -22
  22. package/{.claude → templates/global}/agents/impact-analyzer.md +17 -7
  23. package/{.claude → templates/global}/agents/qa-tester.md +22 -8
  24. package/{.claude → templates/global}/agents/simple-code-writer.md +13 -5
  25. package/{.claude → templates/global}/agents/task-planner.md +18 -10
  26. package/{.claude → templates/global}/hooks/skill-forced.sh +56 -56
  27. package/{.claude → templates/global}/hooks/workflow-enforced.sh +49 -31
  28. package/{.claude → templates/global}/skills/Backend/SKILL.md +38 -9
  29. package/{.claude → templates/global}/skills/Coding/SKILL.md +69 -29
  30. package/{.claude → templates/global}/skills/Director/SKILL.md +9 -5
  31. package/{.claude → templates/global}/skills/Documentation/SKILL.md +68 -1
  32. package/{.claude → templates/global}/skills/Git/SKILL.md +8 -4
  33. package/{.claude → templates/global}/skills/Git/git.md +60 -28
  34. package/{.claude → templates/global}/skills/Git/pr-apply.md +18 -6
  35. package/{.claude → templates/global}/skills/Git/pr-review.md +4 -0
  36. package/templates/global/skills/PromptStructuring/SKILL.md +67 -0
  37. package/templates/global/skills/PromptStructuring/positive-phrasing.md +206 -0
  38. package/templates/global/skills/PromptStructuring/xml-tags.md +330 -0
  39. package/{.claude → templates/global}/skills/React/SKILL.md +28 -8
  40. package/{.claude → templates/global}/skills/React/react-hook-form.md +20 -12
  41. package/{.claude → templates/global}/skills/React/tailwind-styled.md +29 -7
  42. package/{.claude → templates/global}/skills/React/tanstack-router.md +21 -9
  43. package/templates/project/agents/context-generator.md +66 -0
  44. package/{.claude → templates/project}/agents/project-task-manager.md +19 -7
  45. package/templates/project/skills/ContextGeneration/SKILL.md +160 -0
  46. package/templates/project/workflows/context-gen.yml +75 -0
  47. /package/{.claude → templates/global}/settings.json +0 -0
  48. /package/{.claude → templates/project}/hooks/task-loader.sh +0 -0
  49. /package/{.claude → templates/project}/project.env.example +0 -0
@@ -7,29 +7,31 @@ estimated_tokens: ~500
7
7
 
8
8
  # 공통 코딩 원칙
9
9
 
10
+ <rules>
11
+
10
12
  ## 단일 책임 원칙 (SRP)
11
13
 
12
14
  > **하나의 모듈/컴포넌트는 하나의 책임만 가진다.**
13
15
 
14
16
  ### 백엔드 레이어별 책임
15
17
 
16
- | 레이어 | 책임 | 금지 |
17
- |--------|------|------|
18
- | **Entity** | 데이터 구조 정의 | 비즈니스 로직 |
19
- | **Repository** | 데이터 접근 | 비즈니스 로직 |
20
- | **Service** | 비즈니스 로직 | HTTP 의존 |
21
- | **Controller** | 요청 라우팅 | 비즈니스 로직 |
22
- | **DTO/Schema** | 데이터 전송 구조 | 로직 |
18
+ | 레이어 | 책임 | 전담 영역 |
19
+ |--------|------|----------|
20
+ | **Entity** | 데이터 구조 정의 | 구조 정의에 집중 |
21
+ | **Repository** | 데이터 접근 | 데이터 접근에 집중 |
22
+ | **Service** | 비즈니스 로직 | 비즈니스 로직에 집중 |
23
+ | **Controller** | 요청 라우팅 | 요청/응답 처리에 집중 |
24
+ | **DTO/Schema** | 데이터 전송 구조 | 데이터 전송에 집중 |
23
25
 
24
26
  ### 프론트엔드 컴포넌트별 책임
25
27
 
26
- | 유형 | 책임 | 금지 |
27
- |------|------|------|
28
- | **Page** | 레이아웃, 데이터 fetch | 복잡한 로직 |
29
- | **Container** | 상태 관리, API 호출 | 과도한 UI |
30
- | **Presentational** | UI 렌더링 | API 호출, 전역 상태 |
31
- | **Hook** | 특정 로직 캡슐화 | 여러 책임 혼합 |
32
- | **Store** | 전역 상태 | UI 로직 |
28
+ | 유형 | 책임 | 전담 영역 |
29
+ |------|------|----------|
30
+ | **Page** | 레이아웃, 데이터 fetch | 레이아웃과 fetch에 집중 |
31
+ | **Container** | 상태 관리, API 호출 | 상태/API에 집중 |
32
+ | **Presentational** | UI 렌더링 | UI 렌더링에 집중 (props로 데이터 수신) |
33
+ | **Hook** | 특정 로직 캡슐화 | 단일 로직에 집중 |
34
+ | **Store** | 전역 상태 | 상태 관리에 집중 |
33
35
 
34
36
  ---
35
37
 
@@ -41,31 +43,45 @@ estimated_tokens: ~500
41
43
 
42
44
  | 규칙 | 설명 |
43
45
  |------|------|
44
- | **순환 의존 금지** | A → B A 형태 금지 |
45
- | **상위 모듈 의존 금지** | shared는 도메인 모듈 의존 금지 |
46
- | **인터페이스로 의존** | 구체 클래스 대신 추상화에 의존 |
46
+ | **단방향 의존 유지** | A → B 단방향으로 유지 (순환 구조 대신) |
47
+ | **상위 모듈은 독립적으로 유지** | shared는 도메인 모듈과 독립 유지 |
48
+ | **인터페이스에 의존** | 구체 클래스 대신 추상화에 의존 |
47
49
  | **공개 API 통해 접근** | index.ts를 통한 export만 사용 |
48
50
 
49
51
  ### 백엔드
50
52
 
53
+ <examples>
54
+ <example type="good">
51
55
  ```typescript
52
56
  // 토큰 기반 주입 / 인터페이스 의존
53
57
  @Inject(PRODUCT_REPOSITORY)
54
58
  private readonly repository: IProductRepository
55
-
56
- // 구체 클래스 직접 의존 금지
59
+ ```
60
+ </example>
61
+ <example type="bad">
62
+ ```typescript
63
+ // ❌ 구체 클래스 직접 의존
57
64
  private readonly repository: ProductRepository
58
65
  ```
66
+ </example>
67
+ </examples>
59
68
 
60
69
  ### 프론트엔드
61
70
 
71
+ <examples>
72
+ <example type="good">
62
73
  ```typescript
63
74
  // props로 의존성 전달
64
75
  function ProductCard({ product, onAction }: Props) { ... }
65
-
66
- // 전역 상태 직접 접근 (Presentational에서) 금지
76
+ ```
77
+ </example>
78
+ <example type="bad">
79
+ ```typescript
80
+ // ❌ Presentational에서 전역 상태 직접 접근
67
81
  const action = useStore(s => s.action);
68
82
  ```
83
+ </example>
84
+ </examples>
69
85
 
70
86
  ---
71
87
 
@@ -99,7 +115,7 @@ src/
99
115
  │ │ ├── product.dto.ts
100
116
  │ │ └── product.module.ts
101
117
  │ └── order/
102
- └── shared/ # 공통 (상위 의존 금지)
118
+ └── shared/ # 공통 (도메인 모듈과 독립 유지)
103
119
  ```
104
120
 
105
121
  ```
@@ -109,20 +125,26 @@ src/
109
125
  │ │ ├── ProductCard.tsx
110
126
  │ │ ├── ProductList.tsx
111
127
  │ │ └── index.ts
112
- │ └── common/ # 공통 (도메인 의존 금지)
128
+ │ └── common/ # 공통 (도메인과 독립 유지)
113
129
  ├── hooks/ # 도메인별 hook
114
130
  ├── store/ # 전역 상태
115
131
  └── shared/ # 유틸리티
116
132
  ```
117
133
 
134
+ </rules>
135
+
118
136
  ---
119
137
 
138
+ <rules>
139
+
120
140
  ## 가독성 규칙
121
141
 
122
142
  ### try-catch vs then-catch
123
143
 
124
144
  > **Promise 처리 시 `then-catch` 패턴을 사용한다.**
125
145
 
146
+ <examples>
147
+ <example type="bad">
126
148
  ```typescript
127
149
  // ❌ try-catch (가독성 저하)
128
150
  async function fetchUser(id: string) {
@@ -133,7 +155,10 @@ async function fetchUser(id: string) {
133
155
  throw new NotFoundException('User not found');
134
156
  }
135
157
  }
136
-
158
+ ```
159
+ </example>
160
+ <example type="good">
161
+ ```typescript
137
162
  // ✅ then-catch (가독성 향상)
138
163
  function fetchUser(id: string) {
139
164
  return userService.findById(id)
@@ -143,17 +168,24 @@ function fetchUser(id: string) {
143
168
  });
144
169
  }
145
170
  ```
171
+ </example>
172
+ </examples>
146
173
 
147
174
  ### 삼항연산자 규칙
148
175
 
149
- > **삼항연산자에서 인자가 2개 이상인 함수를 호출하지 않는다.**
176
+ > **삼항연산자에서 인자가 2개 이상인 함수 호출은 변수로 분리한다.**
150
177
 
178
+ <examples>
179
+ <example type="bad">
151
180
  ```typescript
152
181
  // ❌ 삼항연산자 내 복잡한 함수 호출
153
182
  const result = isAdmin
154
183
  ? processAdminData(data, options, config)
155
184
  : processUserData(data, options);
156
-
185
+ ```
186
+ </example>
187
+ <example type="good">
188
+ ```typescript
157
189
  // ✅ 변수로 분리 후 사용
158
190
  const processor = isAdmin ? processAdminData : processUserData;
159
191
  const result = processor(data, options, config);
@@ -166,19 +198,27 @@ if (isAdmin) {
166
198
  result = processUserData(data, options);
167
199
  }
168
200
  ```
201
+ </example>
202
+ </examples>
169
203
 
170
204
  **삼항연산자 허용 케이스:**
171
205
  - 단순 값 선택: `const name = isKorean ? '홍길동' : 'John';`
172
206
  - 인자 없는/1개 함수: `const value = isValid ? getValue() : getDefault();`
173
207
 
208
+ </rules>
209
+
174
210
  ---
175
211
 
212
+ <checklist>
213
+
176
214
  ## 코드 작성 시 체크리스트
177
215
 
178
216
  - [ ] 이 파일의 책임은 하나인가?
179
- - [ ] 다른 모듈에 불필요하게 의존하고 있지 않은가?
217
+ - [ ] 다른 모듈에 불필요한 의존이 있는가? (있다면 제거)
180
218
  - [ ] 관련 파일들이 같은 폴더에 있는가?
181
- - [ ] 순환 의존이 발생하지 않는가?
219
+ - [ ] 단방향 의존이 유지되는가?
182
220
  - [ ] 공개 API(index.ts)를 통해 접근하는가?
183
221
  - [ ] Promise 처리에 then-catch 패턴을 사용했는가?
184
- - [ ] 삼항연산자에서 복잡한 함수 호출을 피했는가?
222
+ - [ ] 삼항연산자에서 복잡한 함수 호출을 변수로 분리했는가?
223
+
224
+ </checklist>
@@ -74,14 +74,16 @@ keywords: [관련 키워드]
74
74
 
75
75
  | 축 | 검증 질문 | 예시 |
76
76
  |----|----------|------|
77
- | **기능 범위** | 기존 기능과 겹치거나 모순되지 않는가? | 결제 기능이 이미 존재하는데 별도 결제 모듈 추가 |
78
- | **비즈니스 규칙** | 기존 규칙과 충돌하는 조건이 없는가? | "주문 최소 금액 1만원" vs "0원 주문 허용" |
77
+ | **기능 범위** | 기존 기능과 겹치거나 모순되는 부분이 있는가? | 결제 기능이 이미 존재하는데 별도 결제 모듈 추가 |
78
+ | **비즈니스 규칙** | 기존 규칙과 충돌하는 조건이 있는가? | "주문 최소 금액 1만원" vs "0원 주문 허용" |
79
79
  | **데이터 모델** | 기존 모델 구조와 호환되는가? | 필수 필드 제거, 타입 변경 |
80
80
  | **UX 플로우** | 기존 사용자 플로우와 일관되는가? | 로그인 후 리다이렉트 경로 변경 |
81
- | **기술 제약** | 아키텍처/기술 스택 제약을 위반하지 않는가? | REST API에 GraphQL 엔드포인트 혼용 |
81
+ | **기술 제약** | 아키텍처/기술 스택 제약을 준수하는가? | REST API에 GraphQL 엔드포인트 혼용 |
82
82
 
83
83
  ---
84
84
 
85
+ <checklist>
86
+
85
87
  ## 충돌 탐지 체크리스트
86
88
 
87
89
  스펙 변경 시 아래 4가지 유형의 충돌을 확인합니다.
@@ -92,16 +94,18 @@ keywords: [관련 키워드]
92
94
 
93
95
  ### 2. 의존성 파괴
94
96
  - 변경이 다른 기능의 전제 조건을 깨뜨리는 경우
95
- - 예: 사용자 테이블 구조 변경 인증 모듈 파괴
97
+ - 예: 사용자 테이블 구조 변경 -> 인증 모듈 파괴
96
98
 
97
99
  ### 3. 암묵적 충돌
98
100
  - 명시되지 않았지만 전제가 변경되어 발생하는 충돌
99
- - 예: 응답 포맷 변경 프론트엔드 파싱 실패
101
+ - 예: 응답 포맷 변경 -> 프론트엔드 파싱 실패
100
102
 
101
103
  ### 4. 데이터 불일치
102
104
  - 같은 데이터를 다른 문서에서 다르게 정의
103
105
  - 예: A 문서에서 "status: string", B 문서에서 "status: enum"
104
106
 
107
+ </checklist>
108
+
105
109
  ---
106
110
 
107
111
  ## 심각도 분류
@@ -2,7 +2,7 @@
2
2
  name: Documentation
3
3
  description: .claude 폴더 내 문서 생성/수정 시 사용. frontmatter 형식, Context/Skill/Agent 템플릿, 파일 분리 기준 제공.
4
4
  keywords: [문서, 작성, CLAUDE.md, context, skill, agent, frontmatter, 템플릿]
5
- estimated_tokens: ~800
5
+ estimated_tokens: ~1200
6
6
  ---
7
7
 
8
8
  # .claude 문서 작성 스킬
@@ -119,10 +119,19 @@ estimated_tokens: ~300
119
119
 
120
120
  (필요시 코드 블록, 상세 설명)
121
121
 
122
+ ## 제약 사항
123
+
124
+ <constraints>
125
+ - 제약 1
126
+ - 제약 2
127
+ </constraints>
128
+
122
129
  ## 관련 파일
123
130
 
131
+ <reference>
124
132
  - `path/to/related.md` - 설명
125
133
  - `src/module/` - 관련 소스 코드
134
+ </reference>
126
135
  ```
127
136
 
128
137
  ### Skill 템플릿
@@ -139,25 +148,33 @@ estimated_tokens: ~400
139
148
 
140
149
  ## 핵심 역할
141
150
 
151
+ <instructions>
142
152
  - 역할 1
143
153
  - 역할 2
154
+ </instructions>
144
155
 
145
156
  ## 필수 준수 사항
146
157
 
158
+ <rules>
147
159
  | 규칙 | 올바른 예 | 잘못된 예 |
148
160
  |------|----------|----------|
149
161
  | ... | ... | ... |
162
+ </rules>
150
163
 
151
164
  ## 코드 예제
152
165
 
166
+ <examples>
153
167
  \`\`\`typescript
154
168
  // 올바른 패턴
155
169
  \`\`\`
170
+ </examples>
156
171
 
157
172
  ## 체크리스트
158
173
 
174
+ <checklist>
159
175
  - [ ] 확인 항목 1
160
176
  - [ ] 확인 항목 2
177
+ </checklist>
161
178
 
162
179
  ## 관련 문서
163
180
 
@@ -179,16 +196,19 @@ color: blue
179
196
 
180
197
  # Agent 이름
181
198
 
199
+ <role>
182
200
  ## 역할
183
201
 
184
202
  1. 첫 번째 역할
185
203
  2. 두 번째 역할
204
+ </role>
186
205
 
187
206
  ## 언제 사용하는가
188
207
 
189
208
  - 사용 시점 1
190
209
  - 사용 시점 2
191
210
 
211
+ <instructions>
192
212
  ## 프로세스
193
213
 
194
214
  ### Step 1: 준비
@@ -196,7 +216,16 @@ color: blue
196
216
 
197
217
  ### Step 2: 실행
198
218
  ...
219
+ </instructions>
220
+
221
+ <constraints>
222
+ ## 제약 사항
199
223
 
224
+ - 이 Agent는 A만 전담한다
225
+ - B 작업은 other-agent에 위임한다
226
+ </constraints>
227
+
228
+ <output_format>
200
229
  ## 출력 형식
201
230
 
202
231
  \`\`\`markdown
@@ -205,6 +234,7 @@ color: blue
205
234
  ## 요약
206
235
  ...
207
236
  \`\`\`
237
+ </output_format>
208
238
  ```
209
239
 
210
240
  ## 인덱스 파일 작성법
@@ -272,6 +302,43 @@ keywords:
272
302
  - frontmatter 누락
273
303
  - 모호한 keywords
274
304
 
305
+ ## 프롬프트 구조화 (XML 태그)
306
+
307
+ 문서에 XML 태그를 사용하면 Claude가 지시/규칙/제약을 정확히 구분하여 준수율이 높아집니다.
308
+
309
+ ### 파일 유형별 권장 XML 태그
310
+
311
+ | 파일 유형 | 필수 태그 | 선택 태그 |
312
+ |----------|----------|----------|
313
+ | Agent | `<role>`, `<instructions>`, `<constraints>`, `<output_format>` | `<rules>`, `<examples>`, `<reference>` |
314
+ | Skill | `<instructions>`, `<rules>`, `<checklist>` | `<examples>`, `<constraints>`, `<reference>` |
315
+ | CLAUDE.md | `<workflow>`, `<delegation_rules>`, `<constraints>` | `<rules>`, `<reference>` |
316
+ | Hook | `<phase name="...">`, `<checklist>` | `<delegation_rules>`, `<rules>` |
317
+
318
+ ### 긍정 표현 원칙
319
+
320
+ 프롬프트는 부정 표현 대신 긍정 표현으로 작성합니다.
321
+
322
+ | 부정 표현 (비권장) | 긍정 표현 (권장) |
323
+ |-------------------|-----------------|
324
+ | "직접 수정하지 마라" | "모든 수정은 code-writer가 전담한다" |
325
+ | "Git 명령어 실행 금지" | "Git 작업은 git-manager에 위임한다" |
326
+ | "3개 이상 파일 수정 금지" | "파일 수정은 2개 이하만 직접 수행한다" |
327
+
328
+ - 제약은 "~만 한다", "~전용", "~전담" 형태로 표현
329
+ - 대안 행동을 구체적으로 명시 (무엇을 대신 해야 하는지)
330
+
331
+ ### XML 태그 사용 규칙
332
+
333
+ 1. **섹션 경계를 명확히**: 태그는 논리적 블록 단위로 감싼다
334
+ 2. **중첩 최소화**: 2단계 이상 중첩은 지양한다
335
+ 3. **태그 이름 통일**: 위 테이블의 태그명을 일관되게 사용한다
336
+ 4. **Markdown과 병행**: 태그 안에서 Markdown 서식을 그대로 사용한다
337
+
338
+ > 상세 가이드: `.claude/skills/PromptStructuring/`
339
+
340
+ ---
341
+
275
342
  ## 체크리스트
276
343
 
277
344
  ### 새 파일 작성 시
@@ -14,6 +14,8 @@ estimated_tokens: ~100
14
14
  - PR/MR 코드 리뷰
15
15
  - 리뷰 피드백 반영
16
16
 
17
+ <reference>
18
+
17
19
  ## 관련 문서
18
20
 
19
21
  | 주제 | 위치 | 설명 |
@@ -22,6 +24,8 @@ estimated_tokens: ~100
22
24
  | PR 리뷰 | `pr-review.md` | 체크리스트 기반 코드 리뷰 워크플로우 |
23
25
  | PR 피드백 적용 | `pr-apply.md` | 리뷰 피드백 분류 및 반영 방법 |
24
26
 
27
+ </reference>
28
+
25
29
  ## 빠른 참조
26
30
 
27
31
  ### Commit PREFIX
@@ -45,10 +49,10 @@ estimated_tokens: ~100
45
49
 
46
50
  | 섹션 | 설명 |
47
51
  |------|------|
48
- | 📋 Summary | 핵심 변경 1-2문장 요약 |
49
- | 🔄 주요 변경사항 | 파일별 변경 내용 |
50
- | ⚠️ 사이드 이펙트 | 다른 영역 영향 분석 |
51
- | 🔀 변경 흐름 | mermaid 다이어그램 (선택) |
52
+ | Summary | 핵심 변경 1-2문장 요약 |
53
+ | 주요 변경사항 | 파일별 변경 내용 |
54
+ | 사이드 이펙트 | 다른 영역 영향 분석 |
55
+ | 변경 흐름 | mermaid 다이어그램 (선택) |
52
56
 
53
57
  ### PR 워크플로우
54
58
 
@@ -7,6 +7,8 @@ estimated_tokens: ~600
7
7
 
8
8
  # Git 작업 가이드
9
9
 
10
+ <rules>
11
+
10
12
  ## Commit 메시지
11
13
 
12
14
  ### 형식
@@ -34,7 +36,7 @@ Co-Authored-By: Claude <noreply@anthropic.com>
34
36
  ### 작성 원칙
35
37
 
36
38
  - **한글 사용**, 50자 이내
37
- - **현재형**: "추가함" "추가"
39
+ - **현재형**: "추가함" 대신 "추가"
38
40
  - **Why 중심**: 무엇보다 왜 변경했는지
39
41
 
40
42
  ### Commit 단위
@@ -43,6 +45,8 @@ Co-Authored-By: Claude <noreply@anthropic.com>
43
45
  - 각 커밋 후 빌드 에러 없음
44
46
  - 되돌리기 용이한 단위
45
47
 
48
+ </rules>
49
+
46
50
  ---
47
51
 
48
52
  ## 브랜치 전략
@@ -56,6 +60,8 @@ chore/{작업명} # 설정/빌드
56
60
 
57
61
  ---
58
62
 
63
+ <instructions>
64
+
59
65
  ## PR (Pull Request) 생성
60
66
 
61
67
  ### Step 1: 변경사항 분석
@@ -121,11 +127,11 @@ grep -r "import.*변경된함수명" --include="*.ts" --include="*.tsx"
121
127
  ### Step 4: PR 본문 작성
122
128
 
123
129
  ```markdown
124
- ## 📋 Summary
130
+ ## Summary
125
131
 
126
132
  > 이 PR이 해결하는 문제와 접근 방식을 1-2문장으로 설명
127
133
 
128
- ## 🔄 주요 변경사항
134
+ ## 주요 변경사항
129
135
 
130
136
  ### [변경 제목 1]
131
137
  **파일:** `path/to/file.ts`
@@ -135,7 +141,7 @@ grep -r "import.*변경된함수명" --include="*.ts" --include="*.tsx"
135
141
  **파일:** `path/to/file.ts`
136
142
  - 변경 내용 설명
137
143
 
138
- ## ⚠️ 사이드 이펙트
144
+ ## 사이드 이펙트
139
145
 
140
146
  > 이 변경으로 인해 다른 부분에 발생할 수 있는 영향
141
147
 
@@ -143,7 +149,7 @@ grep -r "import.*변경된함수명" --include="*.ts" --include="*.tsx"
143
149
  |---------------|----------|--------|
144
150
  | 없음 | - | - |
145
151
 
146
- ## 🔀 변경 흐름
152
+ ## 변경 흐름
147
153
 
148
154
  ```mermaid
149
155
  graph LR
@@ -166,20 +172,24 @@ EOF
166
172
  )"
167
173
  ```
168
174
 
175
+ </instructions>
176
+
169
177
  ---
170
178
 
171
- ## Git 명령어 주의사항
179
+ <rules>
172
180
 
173
- ### 금지
181
+ ## Git 명령어 안전 규칙
174
182
 
175
- | 명령어 | 이유 |
183
+ ### 사용 제한 명령어
184
+
185
+ | 명령어 | 대안 |
176
186
  |--------|------|
177
- | `git add -A`, `git add .` | 민감 파일 포함 위험 |
178
- | `git push --force` | 히스토리 손상 |
179
- | `git reset --hard` | 작업 손실 위험 |
180
- | `--no-verify` | hook 우회 금지 |
187
+ | `git add -A`, `git add .` | 파일을 지정하여 `git add path/to/file` 사용 |
188
+ | `git push --force` | `git push` 또는 `--force-with-lease` 사용 |
189
+ | `git reset --hard` | `git stash` 또는 `git checkout -- file` 사용 |
190
+ | `--no-verify` | hook 통과하도록 코드 수정 |
181
191
 
182
- ### 권장
192
+ ### 권장 패턴
183
193
 
184
194
  ```bash
185
195
  # 파일 지정하여 add
@@ -196,8 +206,12 @@ EOF
196
206
  )"
197
207
  ```
198
208
 
209
+ </rules>
210
+
199
211
  ---
200
212
 
213
+ <checklist>
214
+
201
215
  ## PR 생성 전 체크리스트
202
216
 
203
217
  - [ ] `lint` 통과
@@ -207,8 +221,12 @@ EOF
207
221
  - [ ] 영향 범위 분석 완료
208
222
  - [ ] Breaking change 명시 (해당시)
209
223
 
224
+ </checklist>
225
+
210
226
  ---
211
227
 
228
+ <instructions>
229
+
212
230
  ## PR 생성 후 워크플로우
213
231
 
214
232
  ### Step 6: Self PR Review
@@ -227,15 +245,19 @@ gh pr view <PR번호>
227
245
 
228
246
  | 항목 | 확인 |
229
247
  |------|------|
230
- | 불필요한 코드/주석 제거 | |
231
- | 디버그 코드 제거 (console.log 등) | |
232
- | 하드코딩된 값 없음 | |
233
- | 타입 안전성 확인 | |
234
- | 에러 핸들링 적절함 | |
235
- | 네이밍 컨벤션 준수 | |
248
+ | 불필요한 코드/주석 제거 | |
249
+ | 디버그 코드 제거 (console.log 등) | |
250
+ | 하드코딩된 값 확인 | |
251
+ | 타입 안전성 확인 | |
252
+ | 에러 핸들링 적절함 | |
253
+ | 네이밍 컨벤션 준수 | |
254
+
255
+ <reference>
236
256
 
237
257
  > 상세 체크리스트: `.claude/skills/Git/pr-review.md`
238
258
 
259
+ </reference>
260
+
239
261
  **Self Review 이슈 발견 시:**
240
262
 
241
263
  ```bash
@@ -287,30 +309,40 @@ git push
287
309
  gh pr comment <PR번호> --body "리뷰 피드백 반영 완료. 재확인 부탁드립니다."
288
310
  ```
289
311
 
312
+ <reference>
313
+
290
314
  > 상세 가이드: `.claude/skills/Git/pr-apply.md`
291
315
 
316
+ </reference>
317
+
318
+ </instructions>
319
+
292
320
  ---
293
321
 
294
322
  ## 전체 PR 워크플로우 요약
295
323
 
296
324
  ```mermaid
297
325
  graph TD
298
- A[📊 변경사항 분석] --> B[🔍 영향 범위 분석]
299
- B --> C[⚖️ 영향 판단]
300
- C --> D[✍️ PR 본문 작성]
301
- D --> E[🚀 PR 생성]
302
- E --> F[🔎 Self PR Review]
303
- F -->|이슈 발견| G[🔧 수정 & Push]
326
+ A[변경사항 분석] --> B[영향 범위 분석]
327
+ B --> C[영향 판단]
328
+ C --> D[PR 본문 작성]
329
+ D --> E[PR 생성]
330
+ E --> F[Self PR Review]
331
+ F -->|이슈 발견| G[수정 & Push]
304
332
  G --> F
305
- F -->|OK| H[👥 팀원 리뷰 대기]
306
- H -->|피드백| I[📝 PR Apply Mode]
333
+ F -->|OK| H[팀원 리뷰 대기]
334
+ H -->|피드백| I[PR Apply Mode]
307
335
  I --> H
308
- H -->|Approve| J[Merge]
336
+ H -->|Approve| J[Merge]
309
337
  ```
310
338
 
339
+ <reference>
340
+
311
341
  ### 관련 Skill 참조
312
342
 
313
343
  | 단계 | Skill |
314
344
  |------|-------|
315
345
  | PR Review | `.claude/skills/Git/pr-review.md` |
316
346
  | PR Apply | `.claude/skills/Git/pr-apply.md` |
347
+
348
+ </reference>
@@ -10,6 +10,8 @@ user-invocable: true
10
10
 
11
11
  PR 리뷰 피드백을 코드에 반영하는 가이드.
12
12
 
13
+ <instructions>
14
+
13
15
  ## Apply Workflow
14
16
 
15
17
  ### Step 1: 리뷰 피드백 확인
@@ -58,6 +60,10 @@ git push origin feature/branch-name
58
60
  gh pr comment <PR번호> --body "리뷰 피드백 반영 완료했습니다. 재확인 부탁드립니다."
59
61
  ```
60
62
 
63
+ </instructions>
64
+
65
+ <rules>
66
+
61
67
  ## 피드백 대응 원칙
62
68
 
63
69
  ### 수용할 때
@@ -77,11 +83,17 @@ gh pr comment <PR번호> --body "리뷰 피드백 반영 완료했습니다. 재
77
83
  - 해당 코멘트에 직접 답변
78
84
  - 필요시 코드에 주석 추가
79
85
 
86
+ </rules>
87
+
88
+ <checklist>
89
+
80
90
  ## 체크리스트
81
91
 
82
- - [ ] 모든 Critical 피드백 반영
83
- - [ ] Suggestion 검토 및 결정
84
- - [ ] Question 답변 완료
85
- - [ ] `lint` 통과
86
- - [ ] `build` 성공
87
- - [ ] 리뷰어에게 재확인 요청
92
+ - [ ] 모든 Critical 피드백을 반영했는가?
93
+ - [ ] Suggestion 검토하고 결정했는가?
94
+ - [ ] Question 답변을 완료했는가?
95
+ - [ ] `lint` 통과하는가?
96
+ - [ ] `build` 성공하는가?
97
+ - [ ] 리뷰어에게 재확인을 요청했는가?
98
+
99
+ </checklist>
@@ -10,6 +10,8 @@ user-invocable: true
10
10
 
11
11
  체크리스트 기반 Pull Request 리뷰.
12
12
 
13
+ <instructions>
14
+
13
15
  ## Review Workflow
14
16
 
15
17
  ### Step 1: Review Plan 작성
@@ -58,6 +60,8 @@ user-invocable: true
58
60
  ### Highlights (좋은 점)
59
61
  ```
60
62
 
63
+ </instructions>
64
+
61
65
  ## PR 타입별 Focus
62
66
 
63
67
  | Type | Focus Areas |