@kood/claude-code 0.1.12 → 0.1.14

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 (58) hide show
  1. package/dist/index.js +20 -31
  2. package/package.json +1 -1
  3. package/templates/.claude/commands/feedback.md +189 -0
  4. package/templates/.claude/commands/version-update.md +88 -0
  5. package/templates/npx/docs/commands/docs-creator.md +0 -239
  6. package/templates/npx/docs/commands/docs-refactor.md +0 -168
  7. package/templates/npx/docs/commands/git-all.md +0 -83
  8. package/templates/npx/docs/commands/git-session.md +0 -91
  9. package/templates/npx/docs/commands/git.md +0 -86
  10. package/templates/npx/docs/commands/lint-fix.md +0 -170
  11. package/templates/npx/docs/commands/lint-init.md +0 -300
  12. package/templates/npx/docs/commands/ts-fix.md +0 -176
  13. package/templates/npx/docs/skills/command-creator/LICENSE.txt +0 -202
  14. package/templates/npx/docs/skills/command-creator/SKILL.md +0 -245
  15. package/templates/npx/docs/skills/command-creator/scripts/init_command.py +0 -244
  16. package/templates/npx/docs/skills/command-creator/scripts/package_command.py +0 -125
  17. package/templates/npx/docs/skills/command-creator/scripts/quick_validate.py +0 -143
  18. package/templates/npx/docs/skills/skill-creator/LICENSE.txt +0 -202
  19. package/templates/npx/docs/skills/skill-creator/SKILL.md +0 -184
  20. package/templates/npx/docs/skills/skill-creator/scripts/init_skill.py +0 -303
  21. package/templates/npx/docs/skills/skill-creator/scripts/package_skill.py +0 -110
  22. package/templates/npx/docs/skills/skill-creator/scripts/quick_validate.py +0 -65
  23. package/templates/tanstack-start/docs/commands/docs-creator.md +0 -239
  24. package/templates/tanstack-start/docs/commands/docs-refactor.md +0 -168
  25. package/templates/tanstack-start/docs/commands/git-all.md +0 -83
  26. package/templates/tanstack-start/docs/commands/git-session.md +0 -91
  27. package/templates/tanstack-start/docs/commands/git.md +0 -86
  28. package/templates/tanstack-start/docs/commands/lint-fix.md +0 -170
  29. package/templates/tanstack-start/docs/commands/lint-init.md +0 -300
  30. package/templates/tanstack-start/docs/commands/ts-fix.md +0 -176
  31. package/templates/tanstack-start/docs/skills/command-creator/LICENSE.txt +0 -202
  32. package/templates/tanstack-start/docs/skills/command-creator/SKILL.md +0 -245
  33. package/templates/tanstack-start/docs/skills/command-creator/scripts/init_command.py +0 -244
  34. package/templates/tanstack-start/docs/skills/command-creator/scripts/package_command.py +0 -125
  35. package/templates/tanstack-start/docs/skills/command-creator/scripts/quick_validate.py +0 -143
  36. package/templates/tanstack-start/docs/skills/skill-creator/LICENSE.txt +0 -202
  37. package/templates/tanstack-start/docs/skills/skill-creator/SKILL.md +0 -184
  38. package/templates/tanstack-start/docs/skills/skill-creator/scripts/init_skill.py +0 -303
  39. package/templates/tanstack-start/docs/skills/skill-creator/scripts/package_skill.py +0 -110
  40. package/templates/tanstack-start/docs/skills/skill-creator/scripts/quick_validate.py +0 -65
  41. /package/templates/{hono/docs → .claude}/commands/docs-creator.md +0 -0
  42. /package/templates/{hono/docs → .claude}/commands/docs-refactor.md +0 -0
  43. /package/templates/{hono/docs → .claude}/commands/git-all.md +0 -0
  44. /package/templates/{hono/docs → .claude}/commands/git-session.md +0 -0
  45. /package/templates/{hono/docs → .claude}/commands/git.md +0 -0
  46. /package/templates/{hono/docs → .claude}/commands/lint-fix.md +0 -0
  47. /package/templates/{hono/docs → .claude}/commands/lint-init.md +0 -0
  48. /package/templates/{hono/docs → .claude}/commands/ts-fix.md +0 -0
  49. /package/templates/{hono/docs → .claude}/skills/command-creator/LICENSE.txt +0 -0
  50. /package/templates/{hono/docs → .claude}/skills/command-creator/SKILL.md +0 -0
  51. /package/templates/{hono/docs → .claude}/skills/command-creator/scripts/init_command.py +0 -0
  52. /package/templates/{hono/docs → .claude}/skills/command-creator/scripts/package_command.py +0 -0
  53. /package/templates/{hono/docs → .claude}/skills/command-creator/scripts/quick_validate.py +0 -0
  54. /package/templates/{hono/docs → .claude}/skills/skill-creator/LICENSE.txt +0 -0
  55. /package/templates/{hono/docs → .claude}/skills/skill-creator/SKILL.md +0 -0
  56. /package/templates/{hono/docs → .claude}/skills/skill-creator/scripts/init_skill.py +0 -0
  57. /package/templates/{hono/docs → .claude}/skills/skill-creator/scripts/package_skill.py +0 -0
  58. /package/templates/{hono/docs → .claude}/skills/skill-creator/scripts/quick_validate.py +0 -0
package/dist/index.js CHANGED
@@ -128,6 +128,9 @@ var listAvailableTemplates = async () => {
128
128
  const items = await fs.readdir(templatesDir);
129
129
  const templates = [];
130
130
  for (const item of items) {
131
+ if (item.startsWith(".")) {
132
+ continue;
133
+ }
131
134
  const itemPath = path.join(templatesDir, item);
132
135
  const stat = await fs.stat(itemPath);
133
136
  if (stat.isDirectory()) {
@@ -136,46 +139,32 @@ var listAvailableTemplates = async () => {
136
139
  }
137
140
  return templates;
138
141
  };
139
- var copySkills = async (templates, targetDir) => {
142
+ var copySkills = async (_templates, targetDir) => {
140
143
  const counter = { files: 0, directories: 0 };
141
144
  const targetSkillsDir = path.join(targetDir, ".claude", "skills");
142
- for (const template of templates) {
143
- const templatePath = getTemplatePath(template);
144
- const skillsSrc = path.join(templatePath, "docs", "skills");
145
- if (await fs.pathExists(skillsSrc)) {
146
- await fs.ensureDir(targetSkillsDir);
147
- await copyRecursive(skillsSrc, targetSkillsDir, counter);
148
- }
145
+ const skillsSrc = path.join(getTemplatesDir(), ".claude", "skills");
146
+ if (await fs.pathExists(skillsSrc)) {
147
+ await fs.ensureDir(targetSkillsDir);
148
+ await copyRecursive(skillsSrc, targetSkillsDir, counter);
149
149
  }
150
150
  return counter;
151
151
  };
152
- var copyCommands = async (templates, targetDir) => {
152
+ var copyCommands = async (_templates, targetDir) => {
153
153
  const counter = { files: 0, directories: 0 };
154
154
  const targetCommandsDir = path.join(targetDir, ".claude", "commands");
155
- for (const template of templates) {
156
- const templatePath = getTemplatePath(template);
157
- const commandsSrc = path.join(templatePath, "docs", "commands");
158
- if (await fs.pathExists(commandsSrc)) {
159
- await fs.ensureDir(targetCommandsDir);
160
- await copyRecursive(commandsSrc, targetCommandsDir, counter);
161
- }
155
+ const commandsSrc = path.join(getTemplatesDir(), ".claude", "commands");
156
+ if (await fs.pathExists(commandsSrc)) {
157
+ await fs.ensureDir(targetCommandsDir);
158
+ await copyRecursive(commandsSrc, targetCommandsDir, counter);
162
159
  }
163
160
  return counter;
164
161
  };
165
- var checkSkillsAndCommandsExist = async (templates) => {
166
- let hasSkills = false;
167
- let hasCommands = false;
168
- for (const template of templates) {
169
- const templatePath = getTemplatePath(template);
170
- const skillsSrc = path.join(templatePath, "docs", "skills");
171
- const commandsSrc = path.join(templatePath, "docs", "commands");
172
- if (await fs.pathExists(skillsSrc)) {
173
- hasSkills = true;
174
- }
175
- if (await fs.pathExists(commandsSrc)) {
176
- hasCommands = true;
177
- }
178
- }
162
+ var checkSkillsAndCommandsExist = async (_templates) => {
163
+ const claudeDir = path.join(getTemplatesDir(), ".claude");
164
+ const skillsSrc = path.join(claudeDir, "skills");
165
+ const commandsSrc = path.join(claudeDir, "commands");
166
+ const hasSkills = await fs.pathExists(skillsSrc);
167
+ const hasCommands = await fs.pathExists(commandsSrc);
179
168
  return { hasSkills, hasCommands };
180
169
  };
181
170
  var checkExistingClaudeFiles = async (targetDir) => {
@@ -372,7 +361,7 @@ var init = async (options) => {
372
361
 
373
362
  // src/index.ts
374
363
  var program = new Command();
375
- program.name("claude-code").description("Claude Code documentation installer for projects").version("0.1.12");
364
+ program.name("claude-code").description("Claude Code documentation installer for projects").version("0.1.14");
376
365
  program.option(
377
366
  "-t, --template <names>",
378
367
  "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.12",
3
+ "version": "0.1.14",
4
4
  "description": "Claude Code documentation installer for projects",
5
5
  "type": "module",
6
6
  "bin": "./dist/index.js",
@@ -0,0 +1,189 @@
1
+ ---
2
+ description: 피드백 기반 코드 위치 탐색 및 수정. ultrathink + sequential thinking 10+ + subagent 필수.
3
+ allowed-tools: Read, Edit, Glob, Grep, Bash(git:*, ast-grep:*), Task, mcp__sequential-thinking__sequentialthinking
4
+ argument-hint: <피드백 내용>
5
+ ---
6
+
7
+ # Feedback Command
8
+
9
+ 피드백을 분석하여 관련 코드를 찾고 수정하는 커맨드.
10
+
11
+ ## CRITICAL: 필수 요구사항
12
+
13
+ | 요구사항 | 설명 |
14
+ |----------|------|
15
+ | **ARGUMENT 필수** | 피드백 내용 없이 실행 시 되물음 |
16
+ | **Ultrathink** | 깊은 사고로 피드백 분석 |
17
+ | **Sequential Thinking 10+** | 최소 10단계 사고 과정 필수 |
18
+ | **Subagent (Task)** | 코드 탐색에 Task 도구 활용 |
19
+
20
+ ## ARGUMENT 확인
21
+
22
+ ```
23
+ $ARGUMENTS 없음 → 즉시 질문:
24
+ "어떤 피드백을 수정해야 하나요? 구체적으로 알려주세요."
25
+
26
+ $ARGUMENTS 있음 → 다음 단계 진행
27
+ ```
28
+
29
+ **피드백 내용**: $ARGUMENTS
30
+
31
+ ## 실행 흐름
32
+
33
+ ```
34
+ 1. ARGUMENT 확인 (없으면 되물음)
35
+ 2. Sequential Thinking 10+로 피드백 분석
36
+ - 피드백 의도 파악
37
+ - 키워드 추출
38
+ - 수정 대상 추론
39
+ 3. Task subagent로 코드 위치 탐색
40
+ 4. 후보 위치 정리
41
+ - 확실 → 수정 계획 제시
42
+ - 불확실 → 2~3개 후보 제시 → 컨펌 요청
43
+ 5. 사용자 컨펌
44
+ - Y → 수정 진행
45
+ - N → 더 찾기 반복
46
+ 6. 수정 완료 → git add <파일> && git commit
47
+ ```
48
+
49
+ ## Sequential Thinking 가이드
50
+
51
+ **피드백 분석 시 최소 10단계:**
52
+
53
+ ```
54
+ thought 1: 피드백 원문 분석 - 무엇을 수정하라는 것인가?
55
+ thought 2: 핵심 키워드 추출 (기능명, 변수명, 컴포넌트명 등)
56
+ thought 3: 피드백 유형 분류 (버그, UI, 로직, 성능 등)
57
+ thought 4: 예상 파일 위치 추론 (디렉토리, 파일 패턴)
58
+ thought 5: 검색 전략 수립 (ast-grep vs grep vs glob)
59
+ thought 6: 첫 번째 탐색 결과 분석
60
+ thought 7: 추가 탐색 필요 여부 판단
61
+ thought 8: 후보 위치 정리 및 우선순위
62
+ thought 9: 수정 방안 초안 작성
63
+ thought 10: 수정 영향 범위 분석
64
+ thought 11+: 필요시 추가 분석
65
+ ```
66
+
67
+ ## Task Subagent 활용
68
+
69
+ **코드 탐색 시 Task 도구 사용:**
70
+
71
+ | subagent_type | 용도 |
72
+ |---------------|------|
73
+ | `Explore` | 코드베이스 전반 탐색, 파일 구조 파악 |
74
+ | `general-purpose` | 복잡한 로직 분석, 다중 파일 연관 관계 파악 |
75
+
76
+ **Task 호출 예시:**
77
+
78
+ ```
79
+ Task: "피드백 '[버튼 클릭 시 에러 발생]' 관련 코드 위치 탐색"
80
+ subagent_type: Explore
81
+ prompt: "버튼 클릭 핸들러, onClick 이벤트, 관련 컴포넌트 탐색.
82
+ 에러 발생 가능 위치와 수정 대상 파일 목록 제시."
83
+ ```
84
+
85
+ **병렬 탐색:**
86
+
87
+ ```
88
+ 여러 가능성 있을 때:
89
+ Task 1: "컴포넌트 레벨 탐색" (Explore)
90
+ Task 2: "API 호출 레벨 탐색" (Explore)
91
+ Task 3: "상태 관리 레벨 탐색" (Explore)
92
+
93
+ → 단일 메시지에 다중 Task 호출
94
+ → 결과 취합 후 후보 정리
95
+ ```
96
+
97
+ ## 후보 제시 및 컨펌
98
+
99
+ **확실한 경우 (1개):**
100
+
101
+ ```
102
+ 수정 대상: src/components/Button.tsx:42
103
+
104
+ 수정 계획:
105
+ - onClick 핸들러에서 null 체크 추가
106
+ - 에러 바운더리 적용
107
+
108
+ 이대로 수정할까요? (Y/N)
109
+ ```
110
+
111
+ **불확실한 경우 (2~3개):**
112
+
113
+ ```
114
+ 후보 위치를 찾았습니다:
115
+
116
+ 1. src/components/Button.tsx:42
117
+ - onClick 핸들러 내 API 호출 부분
118
+
119
+ 2. src/hooks/useSubmit.ts:28
120
+ - submit 함수의 에러 처리 부분
121
+
122
+ 3. src/api/client.ts:15
123
+ - API 클라이언트 에러 핸들링
124
+
125
+ 어느 위치를 수정할까요? (1/2/3/N)
126
+ - 숫자: 해당 위치 수정
127
+ - N: 다른 위치 더 탐색
128
+ ```
129
+
130
+ **N 선택 시:**
131
+
132
+ ```
133
+ → 추가 탐색 시작
134
+ → 다른 키워드/패턴으로 재검색
135
+ → 새로운 후보 제시
136
+ → 반복
137
+ ```
138
+
139
+ ## Git 커밋 규칙
140
+
141
+ **수정 완료 후 커밋:**
142
+
143
+ ```bash
144
+ # 수정한 파일만 add
145
+ git add <수정된 파일>
146
+
147
+ # 커밋 (한 줄, prefix 필수, 마침표 없음)
148
+ git commit -m "fix: <피드백 요약>"
149
+ ```
150
+
151
+ **커밋 메시지 예시:**
152
+
153
+ ```bash
154
+ # ✅ 올바른
155
+ git add src/components/Button.tsx
156
+ git commit -m "fix: 버튼 클릭 시 null 체크 추가"
157
+
158
+ git add src/hooks/useSubmit.ts
159
+ git commit -m "fix: submit 에러 핸들링 개선"
160
+
161
+ # ❌ 잘못된
162
+ git commit -m "fix: 버튼 수정." # 마침표
163
+ git commit -m "피드백 반영" # prefix 없음
164
+ git commit -m "fix: 여러 파일 수정" # 구체적이지 않음
165
+ ```
166
+
167
+ **prefix 선택 기준:**
168
+
169
+ | 피드백 유형 | prefix |
170
+ |-------------|--------|
171
+ | 버그 수정 | fix |
172
+ | 기능 개선 | feat |
173
+ | UI 수정 | style |
174
+ | 성능 개선 | perf |
175
+ | 코드 정리 | refactor |
176
+
177
+ ## CRITICAL: 절대 금지
178
+
179
+ | 금지 항목 |
180
+ |----------|
181
+ | ARGUMENT 없이 수정 시작 |
182
+ | Sequential Thinking 10단계 미만 |
183
+ | 코드 탐색 없이 추측으로 수정 |
184
+ | 사용자 컨펌 없이 수정 |
185
+ | "Generated with Claude Code" 포함 |
186
+ | "🤖" 또는 AI 관련 이모지 |
187
+ | "Co-Authored-By:" 헤더 |
188
+ | 여러 줄 커밋 메시지 |
189
+ | 커밋 메시지에 마침표(.) |
@@ -0,0 +1,88 @@
1
+ ---
2
+ description: 프로젝트 버전 업데이트 및 커밋
3
+ allowed-tools: Bash(git:*), Read, Edit
4
+ argument-hint: <new-version | +1>
5
+ ---
6
+
7
+ 프로젝트 전체 버전을 업데이트하고 커밋.
8
+
9
+ **인수**: `$ARGUMENTS`
10
+
11
+ ## 인수 처리
12
+
13
+ | 인수 | 동작 | 예시 |
14
+ |------|------|------|
15
+ | `+1` | patch 버전 +1 | 0.1.13 → 0.1.14 |
16
+ | `+minor` | minor 버전 +1 | 0.1.13 → 0.2.0 |
17
+ | `+major` | major 버전 +1 | 0.1.13 → 1.0.0 |
18
+ | `x.x.x` | 해당 버전으로 설정 | 0.1.13 → 2.0.0 |
19
+
20
+ ## 실행 흐름
21
+
22
+ ```
23
+ 1. 현재 버전 확인 (병렬로 버전 파일들 읽기)
24
+ 2. 인수에 따라 새 버전 계산
25
+ 3. 모든 버전 파일 업데이트
26
+ 4. git add + git commit
27
+ ```
28
+
29
+ ## 버전 파일 목록
30
+
31
+ | 파일 | 필드 |
32
+ |------|------|
33
+ | `packages/claude-code/package.json` | `"version": "x.x.x"` |
34
+ | `packages/claude-code/src/index.ts` | `.version('x.x.x')` |
35
+
36
+ ## 병렬 실행
37
+
38
+ **초기 확인 단계에서 병렬 실행 필수:**
39
+
40
+ ```
41
+ Read: packages/claude-code/package.json
42
+ Read: packages/claude-code/src/index.ts
43
+ ```
44
+
45
+ ## 업데이트 절차
46
+
47
+ 1. **버전 검증**: semver 형식 확인 (예: 0.1.14, 1.0.0)
48
+ 2. **Edit 도구로 각 파일 수정**:
49
+ - `package.json`: `"version": "이전버전"` → `"version": "새버전"`
50
+ - `index.ts`: `.version('이전버전')` → `.version('새버전')`
51
+ 3. **git add + git commit**
52
+
53
+ ## 커밋 규칙
54
+
55
+ **형식**: `chore: 버전 X.X.X로 업데이트`
56
+
57
+ ## CRITICAL: 절대 금지
58
+
59
+ | 금지 항목 |
60
+ |----------|
61
+ | "Generated with Claude Code" 포함 |
62
+ | "🤖" 또는 AI 관련 이모지 |
63
+ | "Co-Authored-By:" 헤더 |
64
+ | AI/봇 작성 표시 일체 |
65
+ | 여러 줄 커밋 메시지 |
66
+ | 커밋 메시지에 마침표(.) |
67
+
68
+ ## 예시
69
+
70
+ ```bash
71
+ # patch 버전 증가 (가장 일반적)
72
+ /version-update +1
73
+ # 0.1.13 → 0.1.14
74
+
75
+ # minor 버전 증가
76
+ /version-update +minor
77
+ # 0.1.13 → 0.2.0
78
+
79
+ # major 버전 증가
80
+ /version-update +major
81
+ # 0.1.13 → 1.0.0
82
+
83
+ # 직접 버전 지정
84
+ /version-update 2.0.0
85
+
86
+ # 커밋 결과
87
+ chore: 버전 0.1.14로 업데이트
88
+ ```
@@ -1,239 +0,0 @@
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)