jun-claude-code 0.0.12 → 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 (41) hide show
  1. package/README.md +30 -12
  2. package/dist/cli.js +22 -0
  3. package/dist/init-context.js +25 -3
  4. package/dist/validate.d.ts +4 -0
  5. package/dist/validate.js +105 -0
  6. package/package.json +1 -1
  7. package/templates/global/CLAUDE.md +50 -21
  8. package/templates/global/agents/architect.md +23 -11
  9. package/templates/global/agents/code-reviewer.md +17 -7
  10. package/templates/global/agents/code-writer.md +27 -15
  11. package/templates/global/agents/context-collector.md +11 -3
  12. package/templates/global/agents/context-manager.md +20 -8
  13. package/templates/global/agents/designer.md +32 -20
  14. package/templates/global/agents/director.md +43 -31
  15. package/templates/global/agents/explore.md +12 -4
  16. package/templates/global/agents/git-manager.md +39 -22
  17. package/templates/global/agents/impact-analyzer.md +17 -7
  18. package/templates/global/agents/qa-tester.md +22 -8
  19. package/templates/global/agents/simple-code-writer.md +12 -4
  20. package/templates/global/agents/task-planner.md +18 -10
  21. package/templates/global/hooks/skill-forced.sh +49 -39
  22. package/templates/global/hooks/workflow-enforced.sh +49 -31
  23. package/templates/global/skills/Backend/SKILL.md +38 -9
  24. package/templates/global/skills/Coding/SKILL.md +69 -29
  25. package/templates/global/skills/Director/SKILL.md +9 -5
  26. package/templates/global/skills/Documentation/SKILL.md +68 -1
  27. package/templates/global/skills/Git/SKILL.md +8 -4
  28. package/templates/global/skills/Git/git.md +60 -28
  29. package/templates/global/skills/Git/pr-apply.md +18 -6
  30. package/templates/global/skills/Git/pr-review.md +4 -0
  31. package/templates/global/skills/PromptStructuring/SKILL.md +67 -0
  32. package/templates/global/skills/PromptStructuring/positive-phrasing.md +206 -0
  33. package/templates/global/skills/PromptStructuring/xml-tags.md +330 -0
  34. package/templates/global/skills/React/SKILL.md +28 -8
  35. package/templates/global/skills/React/react-hook-form.md +20 -12
  36. package/templates/global/skills/React/tailwind-styled.md +29 -7
  37. package/templates/global/skills/React/tanstack-router.md +21 -9
  38. package/templates/project/agents/project-task-manager.md +19 -7
  39. package/templates/{global → project}/skills/ContextGeneration/SKILL.md +20 -12
  40. package/templates/project/workflows/context-gen.yml +30 -7
  41. /package/templates/{global → project}/agents/context-generator.md +0 -0
@@ -7,6 +7,8 @@ estimated_tokens: ~400
7
7
 
8
8
  # 백엔드 개발 원칙
9
9
 
10
+ <rules>
11
+
10
12
  ## 레이어 간 객체 변환 규칙
11
13
 
12
14
  > **객체 변환은 필요한 시점에 해당 레이어에서 수행한다.**
@@ -15,12 +17,16 @@ estimated_tokens: ~400
15
17
 
16
18
  | 레이어 | 입력 | 출력 | 변환 책임 |
17
19
  |--------|------|------|----------|
18
- | **Controller** | Request DTO | Response DTO/Schema | Entity Response 변환 |
19
- | **Service** | DTO (그대로 사용) | Entity 또는 일반 객체 | DTO Entity 변환 (필요시) |
20
+ | **Controller** | Request DTO | Response DTO/Schema | Entity -> Response 변환 |
21
+ | **Service** | DTO (그대로 사용) | Entity 또는 일반 객체 | DTO -> Entity 변환 (필요시) |
20
22
  | **Repository** | Entity | Entity | 없음 |
21
23
 
22
- ### Controller → Service 호출
24
+ </rules>
25
+
26
+ ### Controller -> Service 호출
23
27
 
28
+ <examples>
29
+ <example type="bad">
24
30
  ```typescript
25
31
  // ❌ Controller에서 미리 Entity로 변환
26
32
  @Post()
@@ -30,13 +36,18 @@ async create(@Body() dto: CreateUserDto) {
30
36
  entity.email = dto.email;
31
37
  return this.userService.create(entity); // Entity 전달
32
38
  }
33
-
39
+ ```
40
+ </example>
41
+ <example type="good">
42
+ ```typescript
34
43
  // ✅ DTO 그대로 전달
35
44
  @Post()
36
45
  async create(@Body() dto: CreateUserDto) {
37
46
  return this.userService.create(dto); // DTO 전달
38
47
  }
39
48
  ```
49
+ </example>
50
+ </examples>
40
51
 
41
52
  ### Service 내부 처리
42
53
 
@@ -55,7 +66,7 @@ async create(dto: CreateUserDto) {
55
66
  }
56
67
  ```
57
68
 
58
- ### Service Controller 반환
69
+ ### Service -> Controller 반환
59
70
 
60
71
  ```typescript
61
72
  // ✅ Service: Entity 또는 일반 객체 반환
@@ -79,9 +90,11 @@ async findOne(@Param('id') id: number) {
79
90
 
80
91
  ---
81
92
 
93
+ <rules>
94
+
82
95
  ## TypeORM 사용 규칙
83
96
 
84
- > **find 메서드를 기본으로 사용하고, QueryBuilder는 필요한 경우에만 사용한다.**
97
+ > **find 메서드를 기본으로 사용하고, QueryBuilder는 필요한 경우에만 사용한다.**
85
98
 
86
99
  ### find 메서드 우선 사용
87
100
 
@@ -115,6 +128,10 @@ const users = await this.userRepository.find({
115
128
  | **복잡한 서브쿼리** | 중첩 쿼리 |
116
129
  | **복잡한 JOIN 조건** | ON 절 커스텀 |
117
130
 
131
+ </rules>
132
+
133
+ <examples>
134
+ <example type="good">
118
135
  ```typescript
119
136
  // ✅ QueryBuilder 허용: groupBy + getRawMany
120
137
  const stats = await this.orderRepository
@@ -124,24 +141,36 @@ const stats = await this.orderRepository
124
141
  .addSelect('SUM(order.amount)', 'total')
125
142
  .groupBy('order.status')
126
143
  .getRawMany();
127
-
144
+ ```
145
+ </example>
146
+ <example type="bad">
147
+ ```typescript
128
148
  // ❌ 불필요한 QueryBuilder 사용
129
149
  const user = await this.userRepository
130
150
  .createQueryBuilder('user')
131
151
  .where('user.id = :id', { id })
132
152
  .getOne();
133
-
153
+ ```
154
+ </example>
155
+ <example type="good">
156
+ ```typescript
134
157
  // ✅ find로 대체
135
158
  const user = await this.userRepository.findOneBy({ id });
136
159
  ```
160
+ </example>
161
+ </examples>
137
162
 
138
163
  ---
139
164
 
165
+ <checklist>
166
+
140
167
  ## 체크리스트
141
168
 
142
- - [ ] Controller에서 Entity로 변환하지 않고 DTO를 그대로 Service에 전달하는가?
169
+ - [ ] Controller에서 DTO를 그대로 Service에 전달하는가? (Entity 변환은 Service에서)
143
170
  - [ ] Service에서 Entity가 필요한 시점에 변환하는가?
144
171
  - [ ] Service의 return은 Entity 또는 일반 객체인가?
145
172
  - [ ] Controller에서 Response DTO/Schema로 변환하는가?
146
173
  - [ ] TypeORM find 메서드를 우선 사용하는가?
147
174
  - [ ] QueryBuilder는 groupBy, getRawMany 등 필요한 경우에만 사용하는가?
175
+
176
+ </checklist>
@@ -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