@kood/claude-code 0.1.9 → 0.1.11

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 (56) hide show
  1. package/dist/index.js +54 -35
  2. package/package.json +1 -1
  3. package/templates/hono/docs/commands/docs-creator.md +239 -0
  4. package/templates/hono/docs/commands/docs-refactor.md +168 -0
  5. package/templates/hono/docs/commands/git-all.md +83 -0
  6. package/templates/hono/docs/commands/git-session.md +91 -0
  7. package/templates/hono/docs/commands/git.md +86 -0
  8. package/templates/hono/docs/commands/lint-fix.md +170 -0
  9. package/templates/hono/docs/commands/lint-init.md +300 -0
  10. package/templates/hono/docs/commands/ts-fix.md +176 -0
  11. package/templates/hono/docs/skills/command-creator/LICENSE.txt +202 -0
  12. package/templates/hono/docs/skills/command-creator/SKILL.md +245 -0
  13. package/templates/hono/docs/skills/command-creator/scripts/init_command.py +244 -0
  14. package/templates/hono/docs/skills/command-creator/scripts/package_command.py +125 -0
  15. package/templates/hono/docs/skills/command-creator/scripts/quick_validate.py +143 -0
  16. package/templates/hono/docs/skills/skill-creator/LICENSE.txt +202 -0
  17. package/templates/hono/docs/skills/skill-creator/SKILL.md +184 -0
  18. package/templates/hono/docs/skills/skill-creator/scripts/init_skill.py +303 -0
  19. package/templates/hono/docs/skills/skill-creator/scripts/package_skill.py +110 -0
  20. package/templates/hono/docs/skills/skill-creator/scripts/quick_validate.py +65 -0
  21. package/templates/npx/docs/commands/docs-creator.md +239 -0
  22. package/templates/npx/docs/commands/docs-refactor.md +168 -0
  23. package/templates/npx/docs/commands/git-all.md +83 -0
  24. package/templates/npx/docs/commands/git-session.md +91 -0
  25. package/templates/npx/docs/commands/git.md +86 -0
  26. package/templates/npx/docs/commands/lint-fix.md +170 -0
  27. package/templates/npx/docs/commands/lint-init.md +300 -0
  28. package/templates/npx/docs/commands/ts-fix.md +176 -0
  29. package/templates/npx/docs/skills/command-creator/LICENSE.txt +202 -0
  30. package/templates/npx/docs/skills/command-creator/SKILL.md +245 -0
  31. package/templates/npx/docs/skills/command-creator/scripts/init_command.py +244 -0
  32. package/templates/npx/docs/skills/command-creator/scripts/package_command.py +125 -0
  33. package/templates/npx/docs/skills/command-creator/scripts/quick_validate.py +143 -0
  34. package/templates/npx/docs/skills/skill-creator/LICENSE.txt +202 -0
  35. package/templates/npx/docs/skills/skill-creator/SKILL.md +184 -0
  36. package/templates/npx/docs/skills/skill-creator/scripts/init_skill.py +303 -0
  37. package/templates/npx/docs/skills/skill-creator/scripts/package_skill.py +110 -0
  38. package/templates/npx/docs/skills/skill-creator/scripts/quick_validate.py +65 -0
  39. package/templates/tanstack-start/docs/commands/docs-creator.md +239 -0
  40. package/templates/tanstack-start/docs/commands/docs-refactor.md +168 -0
  41. package/templates/tanstack-start/docs/commands/git-all.md +83 -0
  42. package/templates/tanstack-start/docs/commands/git-session.md +91 -0
  43. package/templates/tanstack-start/docs/commands/git.md +86 -0
  44. package/templates/tanstack-start/docs/commands/lint-fix.md +170 -0
  45. package/templates/tanstack-start/docs/commands/lint-init.md +300 -0
  46. package/templates/tanstack-start/docs/commands/ts-fix.md +176 -0
  47. package/templates/tanstack-start/docs/skills/command-creator/LICENSE.txt +202 -0
  48. package/templates/tanstack-start/docs/skills/command-creator/SKILL.md +245 -0
  49. package/templates/tanstack-start/docs/skills/command-creator/scripts/init_command.py +244 -0
  50. package/templates/tanstack-start/docs/skills/command-creator/scripts/package_command.py +125 -0
  51. package/templates/tanstack-start/docs/skills/command-creator/scripts/quick_validate.py +143 -0
  52. package/templates/tanstack-start/docs/skills/skill-creator/LICENSE.txt +202 -0
  53. package/templates/tanstack-start/docs/skills/skill-creator/SKILL.md +184 -0
  54. package/templates/tanstack-start/docs/skills/skill-creator/scripts/init_skill.py +303 -0
  55. package/templates/tanstack-start/docs/skills/skill-creator/scripts/package_skill.py +110 -0
  56. package/templates/tanstack-start/docs/skills/skill-creator/scripts/quick_validate.py +65 -0
package/dist/index.js CHANGED
@@ -281,8 +281,31 @@ var init = async (options) => {
281
281
  }
282
282
  logger.blank();
283
283
  logger.success(`Total: ${totalFiles} files, ${totalDirectories} directories`);
284
- if (options.skills || options.commands) {
285
- const { hasSkills, hasCommands } = await checkSkillsAndCommandsExist(templates);
284
+ const { hasSkills, hasCommands } = await checkSkillsAndCommandsExist(templates);
285
+ let installSkills = options.skills ?? false;
286
+ let installCommands = options.commands ?? false;
287
+ if (!options.skills && !options.commands && (hasSkills || hasCommands)) {
288
+ logger.blank();
289
+ if (hasSkills) {
290
+ const skillsResponse = await prompts({
291
+ type: "confirm",
292
+ name: "install",
293
+ message: "Install skills to .claude/skills/?",
294
+ initial: true
295
+ });
296
+ installSkills = skillsResponse.install ?? false;
297
+ }
298
+ if (hasCommands) {
299
+ const commandsResponse = await prompts({
300
+ type: "confirm",
301
+ name: "install",
302
+ message: "Install commands to .claude/commands/?",
303
+ initial: true
304
+ });
305
+ installCommands = commandsResponse.install ?? false;
306
+ }
307
+ }
308
+ if (installSkills || installCommands) {
286
309
  const existingClaudeFiles = await checkExistingClaudeFiles(targetDir);
287
310
  if (existingClaudeFiles.length > 0 && !options.force) {
288
311
  logger.warn("The following .claude files/folders already exist:");
@@ -296,37 +319,33 @@ var init = async (options) => {
296
319
  });
297
320
  if (!response.overwrite) {
298
321
  logger.info("Skipping skills/commands installation.");
299
- } else {
300
- await installSkillsAndCommands();
322
+ installSkills = false;
323
+ installCommands = false;
301
324
  }
302
- } else {
303
- await installSkillsAndCommands();
304
325
  }
305
- async function installSkillsAndCommands() {
306
- if (options.skills && hasSkills) {
307
- logger.blank();
308
- logger.info("Installing skills...");
309
- const skillsResult = await copySkills(templates, targetDir);
310
- totalFiles += skillsResult.files;
311
- totalDirectories += skillsResult.directories;
312
- logger.success(
313
- `Skills: ${skillsResult.files} files, ${skillsResult.directories} directories`
314
- );
315
- } else if (options.skills && !hasSkills) {
316
- logger.warn("No skills found in selected templates.");
317
- }
318
- if (options.commands && hasCommands) {
319
- logger.blank();
320
- logger.info("Installing commands...");
321
- const commandsResult = await copyCommands(templates, targetDir);
322
- totalFiles += commandsResult.files;
323
- totalDirectories += commandsResult.directories;
324
- logger.success(
325
- `Commands: ${commandsResult.files} files, ${commandsResult.directories} directories`
326
- );
327
- } else if (options.commands && !hasCommands) {
328
- logger.warn("No commands found in selected templates.");
329
- }
326
+ if (installSkills && hasSkills) {
327
+ logger.blank();
328
+ logger.info("Installing skills...");
329
+ const skillsResult = await copySkills(templates, targetDir);
330
+ totalFiles += skillsResult.files;
331
+ totalDirectories += skillsResult.directories;
332
+ logger.success(
333
+ `Skills: ${skillsResult.files} files, ${skillsResult.directories} directories`
334
+ );
335
+ } else if (installSkills && !hasSkills) {
336
+ logger.warn("No skills found in selected templates.");
337
+ }
338
+ if (installCommands && hasCommands) {
339
+ logger.blank();
340
+ logger.info("Installing commands...");
341
+ const commandsResult = await copyCommands(templates, targetDir);
342
+ totalFiles += commandsResult.files;
343
+ totalDirectories += commandsResult.directories;
344
+ logger.success(
345
+ `Commands: ${commandsResult.files} files, ${commandsResult.directories} directories`
346
+ );
347
+ } else if (installCommands && !hasCommands) {
348
+ logger.warn("No commands found in selected templates.");
330
349
  }
331
350
  }
332
351
  logger.blank();
@@ -334,13 +353,13 @@ var init = async (options) => {
334
353
  logger.blank();
335
354
  logger.info("Installed templates:");
336
355
  templates.forEach((t) => logger.step(t));
337
- if (options.skills || options.commands) {
356
+ if (installSkills || installCommands) {
338
357
  logger.blank();
339
358
  logger.info("Installed extras:");
340
- if (options.skills) {
359
+ if (installSkills) {
341
360
  logger.step("Skills \u2192 .claude/skills/");
342
361
  }
343
- if (options.commands) {
362
+ if (installCommands) {
344
363
  logger.step("Commands \u2192 .claude/commands/");
345
364
  }
346
365
  }
@@ -353,7 +372,7 @@ var init = async (options) => {
353
372
 
354
373
  // src/index.ts
355
374
  var program = new Command();
356
- program.name("claude-code").description("Claude Code documentation installer for projects").version("0.1.9");
375
+ program.name("claude-code").description("Claude Code documentation installer for projects").version("0.1.11");
357
376
  program.option(
358
377
  "-t, --template <names>",
359
378
  "template names (comma-separated: tanstack-start,hono)"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kood/claude-code",
3
- "version": "0.1.9",
3
+ "version": "0.1.11",
4
4
  "description": "Claude Code documentation installer for projects",
5
5
  "type": "module",
6
6
  "bin": "./dist/index.js",
@@ -0,0 +1,239 @@
1
+ ---
2
+ description: Claude Code 문서 작성 가이드. CLAUDE.md, SKILL.md 등 효과적인 문서 작성 시 사용.
3
+ ---
4
+
5
+ # Docs Creator
6
+
7
+ Claude Code 문서 작성 베스트 프랙티스 가이드.
8
+
9
+ ## 핵심 원칙
10
+
11
+ | 원칙 | 설명 |
12
+ |------|------|
13
+ | **간결함** | 컨텍스트 윈도우는 공공재. 모든 토큰이 비용 |
14
+ | **점진적 공개** | 핵심만 메인 파일에, 상세는 참조 파일로 분리 |
15
+ | **보편적 적용** | 모든 세션에 필요한 정보만 포함 |
16
+
17
+ ## 문서 유형별 가이드
18
+
19
+ | 문서 | 권장 길이 | 용도 |
20
+ |------|----------|------|
21
+ | CLAUDE.md | 60-200줄 | 프로젝트 전역 설정, 컨벤션 |
22
+ | SKILL.md | 500줄 이하 | 특화 워크플로우, 도구 사용법 |
23
+ | references/ | 무제한 | 상세 API 문서, 스키마 등 |
24
+
25
+ **지침 개수 한계**: 150-200개 (Claude Code 자체 ~50개 사용)
26
+
27
+ ## 구조 템플릿
28
+
29
+ ### CLAUDE.md
30
+
31
+ ```markdown
32
+ # 프로젝트명
33
+
34
+ ## 개요
35
+ 프로젝트 목적 (1-2문장)
36
+
37
+ ## 기술 스택
38
+ - 프레임워크: X
39
+ - 언어: Y
40
+ - DB: Z
41
+
42
+ ## 명령어
43
+ | 명령 | 설명 |
44
+ |------|------|
45
+ | `yarn dev` | 개발 서버 |
46
+ | `yarn test` | 테스트 실행 |
47
+
48
+ ## 컨벤션
49
+ - 파일명: kebab-case
50
+ - 함수: const 화살표 함수
51
+ - 타입: interface (객체), type (유니온)
52
+
53
+ ## 워크플로우
54
+ 기능 추가 → 테스트 → 린트 → 커밋
55
+ ```
56
+
57
+ ### SKILL.md
58
+
59
+ ```markdown
60
+ ---
61
+ name: skill-name
62
+ description: 무엇을 하는지 + 언제 사용하는지. (scope)
63
+ ---
64
+
65
+ # Skill Name
66
+
67
+ 스킬 목적 (2-3문장)
68
+
69
+ ## 사용 시점
70
+ - 조건 1
71
+ - 조건 2
72
+
73
+ ## 사용 방법
74
+
75
+ ### 기본 워크플로우
76
+ 1. 단계 1
77
+ 2. 단계 2
78
+
79
+ ### 참조
80
+ - 상세 API: [references/api.md](references/api.md)
81
+ - 스키마: [references/schema.md](references/schema.md)
82
+ ```
83
+
84
+ ## Progressive Disclosure
85
+
86
+ ```
87
+ project/
88
+ ├── CLAUDE.md # 핵심만 (60-200줄)
89
+ ├── docs/
90
+ │ ├── api.md # API 상세
91
+ │ └── architecture.md # 아키텍처
92
+ └── .claude/skills/
93
+ └── my-skill/
94
+ ├── SKILL.md # 개요 (<500줄)
95
+ └── references/ # 상세 정보
96
+ ```
97
+
98
+ **토큰 로드 단계:**
99
+
100
+ | 단계 | 내용 | 크기 |
101
+ |------|------|------|
102
+ | 1. 메타데이터 | name + description | 30-50 토큰 |
103
+ | 2. 활성화 | SKILL.md 본문 | <5k 단어 |
104
+ | 3. 참조 | 번들 리소스 | 필요 시만 |
105
+
106
+ ## 작성 규칙
107
+
108
+ ### DO
109
+
110
+ - 불릿 포인트 + 짧은 문장
111
+ - 코드 예시 중심
112
+ - 표로 정보 구조화
113
+ - 강조: `IMPORTANT:`, `YOU MUST:`
114
+ - 1단계 깊이 참조 (A→B ✅, A→B→C ❌)
115
+
116
+ ### DON'T
117
+
118
+ - 긴 서술형 문단
119
+ - Claude가 아는 것 설명
120
+ - 린터 역할 강요 (도구 사용)
121
+ - 시간 의존적 정보
122
+ - /init 자동 생성 의존
123
+
124
+ ## Description 작성
125
+
126
+ SKILL.md의 description은 스킬 발견에 핵심.
127
+
128
+ ```yaml
129
+ # Good - 구체적 + 트리거 포함
130
+ description: PDF에서 텍스트/표 추출, 폼 작성. PDF 작업 시 사용.
131
+
132
+ # Bad - 모호함
133
+ description: 문서 처리
134
+ ```
135
+
136
+ **규칙:**
137
+ - 3인칭 작성 (시스템 프롬프트에 주입됨)
138
+ - 무엇을 하는지 + 언제 사용하는지
139
+ - 구체적 키워드 포함
140
+
141
+ ## Context 관리
142
+
143
+ | 명령어 | 용도 | 시점 |
144
+ |--------|------|------|
145
+ | `/compact` | 컨텍스트 요약 | 70% 도달 |
146
+ | `/clear` | 세션 초기화 | 새 기능 시작 |
147
+ | `/resume` | 세션 복원 | 작업 재개 |
148
+
149
+ **주의:** 마지막 20%는 복잡한 작업 피할 것
150
+
151
+ ## Subagent 활용
152
+
153
+ 문서 작성 시 subagent를 적극 활용하여 메인 컨텍스트 보호.
154
+
155
+ ### Subagent 종류
156
+
157
+ | 타입 | 용도 | 문서 작성 활용 |
158
+ |------|------|---------------|
159
+ | `Explore` | 코드베이스 탐색 | 프로젝트 구조 파악, 패턴 분석 |
160
+ | `Plan` | 구현 계획 수립 | 문서 구조 설계, 섹션 계획 |
161
+ | `general-purpose` | 범용 조사 | 베스트 프랙티스 조사, 예시 수집 |
162
+
163
+ ### 활용 시점
164
+
165
+ **CLAUDE.md 작성 시:**
166
+ ```
167
+ 1. Explore agent → 프로젝트 구조/기술 스택 파악
168
+ 2. Explore agent → 기존 컨벤션/패턴 분석
169
+ 3. 메인 에이전트 → 요약 기반 문서 작성
170
+ ```
171
+
172
+ **SKILL.md 작성 시:**
173
+ ```
174
+ 1. Explore agent → 관련 코드/워크플로우 분석
175
+ 2. Plan agent → 스킬 구조 설계
176
+ 3. 메인 에이전트 → 설계 기반 작성
177
+ ```
178
+
179
+ ### 효과
180
+
181
+ | 방식 | 컨텍스트 사용 |
182
+ |------|--------------|
183
+ | 직접 탐색 | 전체 파일 내용 로드 |
184
+ | Subagent | 요약만 반환 → 90%+ 절약 |
185
+
186
+ ### 프롬프트 예시
187
+
188
+ ```
189
+ Explore agent에게:
190
+ "프로젝트 구조와 기술 스택을 분석하고,
191
+ CLAUDE.md에 포함할 핵심 정보만 요약해줘.
192
+ - 디렉토리 구조
193
+ - 주요 의존성
194
+ - 빌드/테스트 명령어
195
+ - 코드 컨벤션"
196
+ ```
197
+
198
+ ```
199
+ Plan agent에게:
200
+ "이 스킬의 SKILL.md 구조를 설계해줘.
201
+ - 스킬 목적
202
+ - 주요 섹션
203
+ - 참조 파일 분리 계획
204
+ - 워크플로우 단계"
205
+ ```
206
+
207
+ ## 체크리스트
208
+
209
+ ### CLAUDE.md
210
+
211
+ - [ ] 60-200줄 이내
212
+ - [ ] 기술 스택 명시
213
+ - [ ] 주요 명령어 포함
214
+ - [ ] 컨벤션 정리
215
+ - [ ] 민감 정보 제외
216
+
217
+ ### SKILL.md
218
+
219
+ - [ ] 500줄 이하
220
+ - [ ] description 구체적 (무엇 + 언제)
221
+ - [ ] 3인칭 작성
222
+ - [ ] 참조 1단계 깊이
223
+ - [ ] 100줄+ 파일은 목차 포함
224
+ - [ ] 워크플로우에 체크리스트
225
+
226
+ ### 공통
227
+
228
+ - [ ] 간결한 작성
229
+ - [ ] 코드 예시 포함
230
+ - [ ] 표로 구조화
231
+ - [ ] 시간 의존 정보 없음
232
+ - [ ] Subagent로 사전 조사 완료
233
+ - [ ] 테스트 완료
234
+
235
+ ## 참조
236
+
237
+ - [Claude Code Best Practices](https://www.anthropic.com/engineering/claude-code-best-practices)
238
+ - [Using CLAUDE.MD files](https://claude.com/blog/using-claude-md-files)
239
+ - [Skill Best Practices](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/best-practices)
@@ -0,0 +1,168 @@
1
+ ---
2
+ description: Claude Code 문서 리팩토링 가이드. 기존 CLAUDE.md, SKILL.md 개선 시 사용.
3
+ ---
4
+
5
+ # Docs Refactor
6
+
7
+ 기존 Claude Code 문서를 베스트 프랙티스에 맞게 개선하는 가이드.
8
+
9
+ ## 리팩토링 필요 신호
10
+
11
+ | 신호 | 문제 | 우선순위 |
12
+ |------|------|---------|
13
+ | 200줄+ CLAUDE.md | 컨텍스트 과부하 | 높음 |
14
+ | 500줄+ SKILL.md | 로딩 지연, 품질 저하 | 높음 |
15
+ | Claude가 지침 무시 | 과도한 지침 (150+개) | 높음 |
16
+ | 중첩 참조 (A→B→C) | 불완전한 파일 읽기 | 중간 |
17
+ | 코드 스타일 지침 | 린터 역할 강요 | 중간 |
18
+ | 시간 의존 정보 | 오래된 지침 | 낮음 |
19
+
20
+ ## 분석 워크플로우
21
+
22
+ ### 1단계: Subagent로 현황 분석
23
+
24
+ ```
25
+ Explore agent에게:
26
+ "현재 CLAUDE.md/SKILL.md를 분석하고 보고해줘:
27
+ - 총 줄 수
28
+ - 섹션별 줄 수
29
+ - 지침 개수 (명령형 문장)
30
+ - 중첩 참조 깊이
31
+ - 린터 역할 지침 여부
32
+ - 시간 의존 정보 여부"
33
+ ```
34
+
35
+ ### 2단계: 개선 계획 수립
36
+
37
+ ```
38
+ Plan agent에게:
39
+ "분석 결과를 바탕으로 리팩토링 계획 수립:
40
+ - 삭제할 내용
41
+ - 분리할 내용 (references/)
42
+ - 병합할 섹션
43
+ - 추가할 내용"
44
+ ```
45
+
46
+ ### 3단계: 리팩토링 실행
47
+
48
+ 메인 에이전트가 계획 기반으로 문서 수정.
49
+
50
+ ## 안티패턴 → 개선 패턴
51
+
52
+ ### 길이 문제
53
+
54
+ | Before | After |
55
+ |--------|-------|
56
+ | 300줄 CLAUDE.md | 60-200줄 + docs/ 분리 |
57
+ | 800줄 SKILL.md | 500줄 이하 + references/ 분리 |
58
+
59
+ **분리 기준:**
60
+ - 모든 세션에 필요 → 메인 파일
61
+ - 특정 작업에만 필요 → 참조 파일
62
+
63
+ ### 구조 문제
64
+
65
+ | Before | After |
66
+ |--------|-------|
67
+ | 긴 서술형 문단 | 불릿 포인트 + 짧은 문장 |
68
+ | 중첩 참조 (A→B→C) | 1단계 깊이 (A→B) |
69
+ | 목차 없는 100줄+ 파일 | 상단에 목차 추가 |
70
+
71
+ ### 내용 문제
72
+
73
+ | Before | After |
74
+ |--------|-------|
75
+ | 코드 스타일 가이드 | 삭제 (Biome/ESLint 사용) |
76
+ | Claude가 아는 설명 | 삭제 |
77
+ | 시간 의존 정보 | "old patterns" 섹션으로 이동 |
78
+ | 너무 많은 옵션 | 기본값 + 대안 1개 |
79
+
80
+ **삭제 예시:**
81
+ ```markdown
82
+ # Before - 불필요한 설명
83
+ PDF (Portable Document Format)는 Adobe에서 개발한
84
+ 문서 형식으로, 텍스트와 이미지를 포함할 수 있습니다...
85
+
86
+ # After - 핵심만
87
+ PDF 텍스트 추출: `pdfplumber.open("file.pdf")`
88
+ ```
89
+
90
+ ### Description 문제
91
+
92
+ | Before | After |
93
+ |--------|-------|
94
+ | `description: 문서 처리` | `description: PDF 텍스트/표 추출. PDF 작업 시 사용.` |
95
+ | 1인칭/2인칭 | 3인칭 작성 |
96
+ | 트리거 없음 | 구체적 트리거 포함 |
97
+
98
+ ## 분리 전략
99
+
100
+ ### 참조 파일로 분리할 내용
101
+
102
+ | 내용 | 분리 위치 |
103
+ |------|----------|
104
+ | API 상세 문서 | `references/api.md` |
105
+ | 스키마 정의 | `references/schema.md` |
106
+ | 예시 모음 | `references/examples.md` |
107
+ | 도메인별 가이드 | `references/{domain}.md` |
108
+
109
+ ### 분리 후 메인 파일 참조
110
+
111
+ ```markdown
112
+ ## API 사용
113
+
114
+ 기본 호출: `api.call(params)`
115
+
116
+ **상세 API 문서**: [references/api.md](references/api.md)
117
+ ```
118
+
119
+ ## Subagent 활용
120
+
121
+ | 단계 | Agent | 작업 |
122
+ |------|-------|------|
123
+ | 분석 | Explore | 현황 파악, 문제점 식별 |
124
+ | 계획 | Plan | 리팩토링 전략 수립 |
125
+ | 검증 | Explore | 개선 결과 확인 |
126
+
127
+ ### 검증 프롬프트
128
+
129
+ ```
130
+ Explore agent에게:
131
+ "리팩토링된 문서 검증:
132
+ - 줄 수 목표 달성?
133
+ - 지침 개수 150개 이하?
134
+ - 중첩 참조 1단계?
135
+ - 필수 정보 누락 없음?"
136
+ ```
137
+
138
+ ## 체크리스트
139
+
140
+ ### 분석 단계
141
+
142
+ - [ ] Subagent로 현황 분석 완료
143
+ - [ ] 문제점 목록 작성
144
+ - [ ] 개선 우선순위 결정
145
+
146
+ ### 리팩토링 단계
147
+
148
+ - [ ] 불필요한 설명 삭제
149
+ - [ ] 코드 스타일 지침 삭제
150
+ - [ ] 긴 내용 참조 파일로 분리
151
+ - [ ] 중첩 참조 1단계로 평탄화
152
+ - [ ] 100줄+ 파일에 목차 추가
153
+ - [ ] Description 개선 (3인칭, 트리거)
154
+
155
+ ### 검증 단계
156
+
157
+ - [ ] CLAUDE.md 60-200줄
158
+ - [ ] SKILL.md 500줄 이하
159
+ - [ ] 지침 개수 150개 이하
160
+ - [ ] 참조 1단계 깊이
161
+ - [ ] 필수 정보 유지 확인
162
+ - [ ] 테스트 완료
163
+
164
+ ## 참조
165
+
166
+ - [Claude Code Best Practices](https://www.anthropic.com/engineering/claude-code-best-practices)
167
+ - [Using CLAUDE.MD files](https://claude.com/blog/using-claude-md-files)
168
+ - [Skill Best Practices](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/best-practices)
@@ -0,0 +1,83 @@
1
+ ---
2
+ description: 모든 변경사항 커밋 후 푸시
3
+ allowed-tools: Bash(git:*)
4
+ ---
5
+
6
+ 모든 변경사항을 논리적 단위로 분리하여 전부 커밋 후 푸시.
7
+
8
+ ## 실행 흐름
9
+
10
+ ```
11
+ 1. git status + git diff (병렬 실행)
12
+ 2. 논리적 단위로 분리하여 git add + git commit (반복)
13
+ 3. git status (완료 확인 - 남은 변경 없어야 함)
14
+ 4. git push
15
+ ```
16
+
17
+ ## 병렬 실행
18
+
19
+ **초기 분석 단계에서 병렬 실행 필수:**
20
+
21
+ ```bash
22
+ # 동시에 실행 (두 Bash 호출을 하나의 응답에서)
23
+ git status
24
+ git diff
25
+ ```
26
+
27
+ ## CRITICAL: 절대 금지
28
+
29
+ | 금지 항목 |
30
+ |----------|
31
+ | "Generated with Claude Code" 포함 |
32
+ | "🤖" 또는 AI 관련 이모지 |
33
+ | "Co-Authored-By:" 헤더 |
34
+ | AI/봇 작성 표시 일체 |
35
+ | 여러 줄 커밋 메시지 |
36
+ | 커밋 메시지에 마침표(.) |
37
+ | 여러 작업 하나로 퉁치기 |
38
+ | 변경사항 남겨두기 |
39
+
40
+ ## 커밋 규칙
41
+
42
+ **형식**: `<prefix>: <설명>` (한 줄, 본문/푸터 없음)
43
+
44
+ **핵심 원칙**: 하나의 커밋 = 하나의 논리적 변경
45
+
46
+ ### Prefix
47
+
48
+ | Prefix | 용도 |
49
+ |--------|------|
50
+ | feat | 새 기능 |
51
+ | fix | 버그 수정 |
52
+ | refactor | 리팩토링 |
53
+ | style | 코드 스타일 |
54
+ | docs | 문서 수정 |
55
+ | test | 테스트 |
56
+ | chore | 빌드/설정 |
57
+ | perf | 성능 개선 |
58
+ | ci | CI/CD |
59
+
60
+ ### 분리 기준
61
+
62
+ | 분리 필요 | 묶어도 됨 |
63
+ |----------|----------|
64
+ | 서로 다른 기능 | 동일 기능의 관련 파일들 |
65
+ | 버그 수정 + 새 기능 | 동일 기능의 타입 + 구현 |
66
+ | 코드 변경 + 문서 변경 | |
67
+ | 리팩토링 + 기능 추가 | |
68
+
69
+ ## 예시
70
+
71
+ ```bash
72
+ # ✅ 올바른
73
+ feat: 사용자 로그인 기능 추가
74
+ fix: 세션 만료 오류 수정
75
+ refactor: 서비스 클래스 구조 개선
76
+
77
+ # ❌ 잘못된
78
+ 사용자 인증 기능 추가함 # prefix 없음
79
+ feat: 사용자 인증 추가. # 마침표
80
+ FEAT: 사용자 인증 추가 # 대문자
81
+ feat(auth): 인증 추가 # scope 불필요
82
+ feat: 로그인, 회원가입, 프로필 # 여러 작업 퉁침
83
+ ```