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.
- package/README.md +122 -83
- package/dist/cli.js +40 -0
- package/dist/copy.js +92 -11
- package/dist/index.d.ts +1 -0
- package/dist/index.js +3 -1
- package/dist/init-context.d.ts +4 -0
- package/dist/init-context.js +143 -0
- package/dist/init-project.js +4 -4
- package/dist/validate.d.ts +4 -0
- package/dist/validate.js +105 -0
- package/package.json +2 -2
- package/{.claude → templates/global}/CLAUDE.md +50 -21
- package/{.claude → templates/global}/agents/architect.md +23 -11
- package/{.claude → templates/global}/agents/code-reviewer.md +17 -7
- package/{.claude → templates/global}/agents/code-writer.md +27 -15
- package/{.claude → templates/global}/agents/context-collector.md +11 -3
- package/{.claude → templates/global}/agents/context-manager.md +21 -9
- package/{.claude → templates/global}/agents/designer.md +32 -20
- package/{.claude → templates/global}/agents/director.md +43 -31
- package/{.claude → templates/global}/agents/explore.md +13 -5
- package/{.claude → templates/global}/agents/git-manager.md +39 -22
- package/{.claude → templates/global}/agents/impact-analyzer.md +17 -7
- package/{.claude → templates/global}/agents/qa-tester.md +22 -8
- package/{.claude → templates/global}/agents/simple-code-writer.md +13 -5
- package/{.claude → templates/global}/agents/task-planner.md +18 -10
- package/{.claude → templates/global}/hooks/skill-forced.sh +56 -56
- package/{.claude → templates/global}/hooks/workflow-enforced.sh +49 -31
- package/{.claude → templates/global}/skills/Backend/SKILL.md +38 -9
- package/{.claude → templates/global}/skills/Coding/SKILL.md +69 -29
- package/{.claude → templates/global}/skills/Director/SKILL.md +9 -5
- package/{.claude → templates/global}/skills/Documentation/SKILL.md +68 -1
- package/{.claude → templates/global}/skills/Git/SKILL.md +8 -4
- package/{.claude → templates/global}/skills/Git/git.md +60 -28
- package/{.claude → templates/global}/skills/Git/pr-apply.md +18 -6
- package/{.claude → templates/global}/skills/Git/pr-review.md +4 -0
- package/templates/global/skills/PromptStructuring/SKILL.md +67 -0
- package/templates/global/skills/PromptStructuring/positive-phrasing.md +206 -0
- package/templates/global/skills/PromptStructuring/xml-tags.md +330 -0
- package/{.claude → templates/global}/skills/React/SKILL.md +28 -8
- package/{.claude → templates/global}/skills/React/react-hook-form.md +20 -12
- package/{.claude → templates/global}/skills/React/tailwind-styled.md +29 -7
- package/{.claude → templates/global}/skills/React/tanstack-router.md +21 -9
- package/templates/project/agents/context-generator.md +66 -0
- package/{.claude → templates/project}/agents/project-task-manager.md +19 -7
- package/templates/project/skills/ContextGeneration/SKILL.md +160 -0
- package/templates/project/workflows/context-gen.yml +75 -0
- /package/{.claude → templates/global}/settings.json +0 -0
- /package/{.claude → templates/project}/hooks/task-loader.sh +0 -0
- /package/{.claude → templates/project}/project.env.example +0 -0
package/dist/validate.js
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.validateTemplates = validateTemplates;
|
|
40
|
+
const fs = __importStar(require("fs"));
|
|
41
|
+
const path = __importStar(require("path"));
|
|
42
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
43
|
+
/**
|
|
44
|
+
* Get the templates directory path (from package installation)
|
|
45
|
+
*/
|
|
46
|
+
function getTemplatesDir() {
|
|
47
|
+
return path.resolve(__dirname, '..', 'templates');
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Validate that all required items exist in a template directory
|
|
51
|
+
*/
|
|
52
|
+
function validateTemplate(rule) {
|
|
53
|
+
const missing = [];
|
|
54
|
+
const baseDir = path.join(getTemplatesDir(), rule.dir);
|
|
55
|
+
for (const item of rule.required) {
|
|
56
|
+
const itemPath = path.join(baseDir, item);
|
|
57
|
+
if (!fs.existsSync(itemPath)) {
|
|
58
|
+
missing.push(item);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return missing;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Validate template directory structure
|
|
65
|
+
*/
|
|
66
|
+
async function validateTemplates() {
|
|
67
|
+
const templatesDir = getTemplatesDir();
|
|
68
|
+
console.log(chalk_1.default.cyan('\nValidating template directory structure...\n'));
|
|
69
|
+
if (!fs.existsSync(templatesDir)) {
|
|
70
|
+
console.error(chalk_1.default.red('Error:'), 'templates/ directory not found');
|
|
71
|
+
process.exit(1);
|
|
72
|
+
}
|
|
73
|
+
const rules = [
|
|
74
|
+
{
|
|
75
|
+
name: 'Global',
|
|
76
|
+
dir: 'global',
|
|
77
|
+
required: ['CLAUDE.md', 'settings.json', 'agents', 'skills'],
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
name: 'Project',
|
|
81
|
+
dir: 'project',
|
|
82
|
+
required: ['workflows'],
|
|
83
|
+
},
|
|
84
|
+
];
|
|
85
|
+
let hasErrors = false;
|
|
86
|
+
for (const rule of rules) {
|
|
87
|
+
const missing = validateTemplate(rule);
|
|
88
|
+
if (missing.length === 0) {
|
|
89
|
+
console.log(chalk_1.default.green(` [PASS] ${rule.name} template (templates/${rule.dir}/)`));
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
hasErrors = true;
|
|
93
|
+
console.log(chalk_1.default.red(` [FAIL] ${rule.name} template (templates/${rule.dir}/)`));
|
|
94
|
+
for (const item of missing) {
|
|
95
|
+
console.log(chalk_1.default.yellow(` - missing: ${item}`));
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
console.log();
|
|
100
|
+
if (hasErrors) {
|
|
101
|
+
console.error(chalk_1.default.red('Validation failed: some required items are missing.'));
|
|
102
|
+
process.exit(1);
|
|
103
|
+
}
|
|
104
|
+
console.log(chalk_1.default.green('All templates are valid.'));
|
|
105
|
+
}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jun-claude-code",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.13",
|
|
4
4
|
"description": "Claude Code configuration template - copy .claude settings to your project",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": "dist/cli.js",
|
|
7
7
|
"files": [
|
|
8
8
|
"dist",
|
|
9
|
-
"
|
|
9
|
+
"templates"
|
|
10
10
|
],
|
|
11
11
|
"scripts": {
|
|
12
12
|
"build": "tsc",
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
이 파일은 Claude Code의 작업 워크플로우와 규칙을 정의합니다.
|
|
4
4
|
|
|
5
|
-
## Context 절약 원칙 (최우선
|
|
5
|
+
## Context 절약 원칙 (최우선)
|
|
6
6
|
|
|
7
7
|
Main Agent의 Context Window는 제한적입니다.
|
|
8
|
-
**Subagent가 할 수 있는 작업은
|
|
8
|
+
**Subagent가 할 수 있는 작업은 Subagent에 위임하세요.**
|
|
9
9
|
|
|
10
|
-
### 필수 위임 작업 (
|
|
10
|
+
### 필수 위임 작업 (Subagent 전담)
|
|
11
11
|
|
|
12
12
|
| 작업 | Agent | 이유 |
|
|
13
13
|
|------|-------|------|
|
|
@@ -18,40 +18,45 @@ Main Agent의 Context Window는 제한적입니다.
|
|
|
18
18
|
| 영향 분석 | `impact-analyzer` | 분석 결과만 받음 |
|
|
19
19
|
| 코드 리뷰 | `code-reviewer` | 리뷰 결과만 받음 |
|
|
20
20
|
| 테스트/빌드 검증 | `qa-tester` | 검증 결과만 받음 |
|
|
21
|
-
| 단순 수정 (lint/build 오류, 오타, 설정값) | `simple-code-writer` | Main
|
|
21
|
+
| 단순 수정 (lint/build 오류, 오타, 설정값) | `simple-code-writer` | Main Context 보존 |
|
|
22
22
|
| 여러 파일 코드 작성 | `code-writer` | 구현 결과만 받음 |
|
|
23
23
|
| Git 작업 | `git-manager` | 커밋/PR 결과만 받음 |
|
|
24
24
|
| Context 문서 정리 | `context-manager` | 파일 분리, 토큰 최적화 |
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
<delegation_rules>
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
- Main Agent에서 직접 여러 파일 Read (2개 이상)
|
|
30
|
-
- Main Agent에서 복잡한 분석/계획 수행
|
|
31
|
-
- Main Agent에서 3개 이상 파일 수정
|
|
32
|
-
- **Main Agent에서 직접 Git 명령어 실행 (git add, commit, push 등)**
|
|
33
|
-
- **Main Agent에서 직접 코드 수정 (Edit/Write로 코드 파일 수정)**
|
|
28
|
+
### Subagent 전용 작업
|
|
34
29
|
|
|
35
|
-
|
|
30
|
+
| 작업 | 전담 Agent |
|
|
31
|
+
|------|-----------|
|
|
32
|
+
| 파일 탐색 (Glob/Grep) | explore Agent가 전담 |
|
|
33
|
+
| 2개 이상 파일 읽기 | explore/context-collector가 전담 |
|
|
34
|
+
| 복잡한 분석/계획 | task-planner에 위임 |
|
|
35
|
+
| 파일 수정 | code-writer가 전담 |
|
|
36
|
+
| Git 명령어 실행 (git add, commit, push 등) | git-manager에 위임 |
|
|
37
|
+
| 코드 수정 (Edit/Write) | code-writer/simple-code-writer에 위임 |
|
|
38
|
+
|
|
39
|
+
### Main Agent 전담 작업
|
|
36
40
|
|
|
37
41
|
- 사용자와 대화/질문 응답
|
|
38
42
|
- Task 흐름 관리 (TaskCreate, TaskUpdate, TaskList)
|
|
39
43
|
- Subagent 호출 및 결과 전달
|
|
40
|
-
- 단순 명령 실행 (Bash) -
|
|
44
|
+
- 단순 명령 실행 (Bash) - **Git/코드수정은 Subagent 전담**
|
|
45
|
+
|
|
46
|
+
</delegation_rules>
|
|
41
47
|
|
|
42
|
-
###
|
|
48
|
+
### 코드 수정 위임 규칙
|
|
43
49
|
|
|
44
|
-
|
|
45
|
-
모든 코드 수정은 Subagent에 위임하세요.
|
|
50
|
+
모든 코드 수정은 Subagent가 전담합니다.
|
|
46
51
|
|
|
47
52
|
| 수정 유형 | Agent | 모델 |
|
|
48
53
|
|----------|-------|------|
|
|
49
54
|
| lint/build 오류 수정, 오타, 설정값 변경 등 단순 수정 | `simple-code-writer` | haiku |
|
|
50
55
|
| 로직 작성, 기능 구현, 리팩토링 (파일 수 무관) | `code-writer` | opus |
|
|
51
56
|
|
|
52
|
-
### Git 작업은
|
|
57
|
+
### Git 작업은 Subagent 전담
|
|
53
58
|
|
|
54
|
-
**모든 Git 작업은 `git-manager` Agent에
|
|
59
|
+
**모든 Git 작업은 `git-manager` Agent에 위임하세요.**
|
|
55
60
|
|
|
56
61
|
```
|
|
57
62
|
Task(subagent_type="git-manager", prompt="현재 변경사항을 커밋해줘")
|
|
@@ -72,10 +77,14 @@ Task(subagent_type="git-manager", prompt="PR을 생성해줘")
|
|
|
72
77
|
| lint/build 오류, 오타, 설정값 등 단순 수정 | `simple-code-writer` Agent에 위임 |
|
|
73
78
|
| 로직 작성, 기능 구현, 리팩토링 | `code-writer` Agent에 위임 |
|
|
74
79
|
|
|
80
|
+
<workflow>
|
|
81
|
+
|
|
75
82
|
## 작업 워크플로우 (필수)
|
|
76
83
|
|
|
77
84
|
모든 코드 작업은 아래 순서를 따릅니다:
|
|
78
85
|
|
|
86
|
+
<phase name="계획">
|
|
87
|
+
|
|
79
88
|
### Phase 1: 계획 (Planning)
|
|
80
89
|
|
|
81
90
|
```
|
|
@@ -98,6 +107,10 @@ Task(subagent_type="git-manager", prompt="PR을 생성해줘")
|
|
|
98
107
|
4. 작성된 내용을 사용자에게 Confirm 받음 **필수**
|
|
99
108
|
```
|
|
100
109
|
|
|
110
|
+
</phase>
|
|
111
|
+
|
|
112
|
+
<phase name="검증">
|
|
113
|
+
|
|
101
114
|
### Phase 2: 검증 (Validation)
|
|
102
115
|
|
|
103
116
|
```
|
|
@@ -107,20 +120,28 @@ Task(subagent_type="git-manager", prompt="PR을 생성해줘")
|
|
|
107
120
|
- Breaking Change 여부 확인
|
|
108
121
|
```
|
|
109
122
|
|
|
123
|
+
</phase>
|
|
124
|
+
|
|
125
|
+
<phase name="구현">
|
|
126
|
+
|
|
110
127
|
### Phase 3: 구현 (Implementation)
|
|
111
128
|
|
|
112
129
|
```
|
|
113
130
|
5. 작은 단위로 코드 수정
|
|
114
131
|
- 독립적으로 빌드 가능한 단위로 작업
|
|
115
132
|
- 한 번에 하나의 기능/수정만 진행
|
|
116
|
-
- 빌드
|
|
133
|
+
- 빌드 가능 상태를 유지
|
|
117
134
|
|
|
118
135
|
6. 단위별 커밋
|
|
119
|
-
- 수정한 파일만
|
|
136
|
+
- 수정한 파일만 개별 지정하여 git add
|
|
120
137
|
- 명확한 커밋 메시지 작성
|
|
121
138
|
- 커밋 단위: 하나의 논리적 변경
|
|
122
139
|
```
|
|
123
140
|
|
|
141
|
+
</phase>
|
|
142
|
+
|
|
143
|
+
<phase name="리뷰">
|
|
144
|
+
|
|
124
145
|
### Phase 4: 리뷰 (Review)
|
|
125
146
|
|
|
126
147
|
```
|
|
@@ -131,9 +152,11 @@ Task(subagent_type="git-manager", prompt="PR을 생성해줘")
|
|
|
131
152
|
8. Task 완료 검증
|
|
132
153
|
- 원래 요청사항이 모두 충족되었는지 확인
|
|
133
154
|
- 예상한 동작이 구현되었는지 확인
|
|
134
|
-
-
|
|
155
|
+
- 모든 엣지케이스가 처리되었는지 점검
|
|
135
156
|
```
|
|
136
157
|
|
|
158
|
+
</phase>
|
|
159
|
+
|
|
137
160
|
### 워크플로우 요약
|
|
138
161
|
|
|
139
162
|
```
|
|
@@ -148,8 +171,12 @@ Task(subagent_type="git-manager", prompt="PR을 생성해줘")
|
|
|
148
171
|
└─────────────────────────────────────────────────────────────┘
|
|
149
172
|
```
|
|
150
173
|
|
|
174
|
+
</workflow>
|
|
175
|
+
|
|
151
176
|
## 문서 참조
|
|
152
177
|
|
|
178
|
+
<reference>
|
|
179
|
+
|
|
153
180
|
### Context (사실/배경) - "우리 프로젝트는 이렇다"
|
|
154
181
|
|
|
155
182
|
프로젝트별로 `.claude/context/` 에 작성
|
|
@@ -163,6 +190,8 @@ Task(subagent_type="git-manager", prompt="PR을 생성해줘")
|
|
|
163
190
|
| PR 리뷰 | `.claude/skills/Git/pr-review.md` |
|
|
164
191
|
| PR 피드백 적용 | `.claude/skills/Git/pr-apply.md` |
|
|
165
192
|
|
|
193
|
+
</reference>
|
|
194
|
+
|
|
166
195
|
---
|
|
167
196
|
|
|
168
197
|
## .claude 문서 작성 가이드
|
|
@@ -8,21 +8,25 @@ color: red
|
|
|
8
8
|
|
|
9
9
|
# Architect Agent
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
<role>
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
시스템 아키텍처 설계와 복잡한 디버깅을 담당하는 전문 Agent입니다.
|
|
14
14
|
|
|
15
15
|
1. **아키텍처 설계**: 새로운 기능/모듈의 구조 설계
|
|
16
16
|
2. **복잡한 디버깅**: 여러 레이어에 걸친 버그 추적
|
|
17
17
|
3. **기술 부채 분석**: 리팩토링 대상 식별 및 계획
|
|
18
18
|
4. **설계 검토**: 기존 설계의 문제점 분석 및 개선안 제시
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
</role>
|
|
21
|
+
|
|
22
|
+
<reference>
|
|
21
23
|
|
|
22
24
|
> **필수 참조**:
|
|
23
25
|
> - `.claude/context/architecture/` - 시스템 아키텍처
|
|
24
26
|
> - `.claude/context/` - 프로젝트 컨텍스트
|
|
25
27
|
|
|
28
|
+
</reference>
|
|
29
|
+
|
|
26
30
|
---
|
|
27
31
|
|
|
28
32
|
## 사용 시점
|
|
@@ -38,16 +42,18 @@ color: red
|
|
|
38
42
|
- DB 스키마 설계 검토
|
|
39
43
|
```
|
|
40
44
|
|
|
41
|
-
###
|
|
45
|
+
### 다른 Agent가 적합한 경우
|
|
42
46
|
|
|
43
47
|
```
|
|
44
|
-
- 단순 CRUD 구현
|
|
45
|
-
- UI 컴포넌트 설계
|
|
46
|
-
- 일반적인 코드 탐색
|
|
48
|
+
- 단순 CRUD 구현 → code-writer 사용
|
|
49
|
+
- UI 컴포넌트 설계 → designer 사용
|
|
50
|
+
- 일반적인 코드 탐색 → explore 사용
|
|
47
51
|
```
|
|
48
52
|
|
|
49
53
|
---
|
|
50
54
|
|
|
55
|
+
<instructions>
|
|
56
|
+
|
|
51
57
|
## 분석 프로세스
|
|
52
58
|
|
|
53
59
|
### Step 1: 현재 아키텍처 파악
|
|
@@ -77,9 +83,11 @@ color: red
|
|
|
77
83
|
4. 구현 로드맵 제시
|
|
78
84
|
```
|
|
79
85
|
|
|
86
|
+
</instructions>
|
|
87
|
+
|
|
80
88
|
---
|
|
81
89
|
|
|
82
|
-
|
|
90
|
+
<output_format>
|
|
83
91
|
|
|
84
92
|
### 아키텍처 분석
|
|
85
93
|
|
|
@@ -153,11 +161,15 @@ color: red
|
|
|
153
161
|
- ...
|
|
154
162
|
```
|
|
155
163
|
|
|
164
|
+
</output_format>
|
|
165
|
+
|
|
156
166
|
---
|
|
157
167
|
|
|
158
|
-
|
|
168
|
+
<constraints>
|
|
159
169
|
|
|
160
|
-
-
|
|
170
|
+
- **현재 필요한 만큼만 설계**: 미래 요구사항 예측보다 현재 문제 해결에 집중
|
|
161
171
|
- **기존 패턴 존중**: 프로젝트 컨벤션 따르기
|
|
162
|
-
- **점진적 개선**: 빅뱅 리팩토링보다
|
|
172
|
+
- **점진적 개선**: 빅뱅 리팩토링보다 단계별 개선 우선
|
|
163
173
|
- **근거 명시**: 모든 설계 결정에 이유 설명
|
|
174
|
+
|
|
175
|
+
</constraints>
|
|
@@ -8,24 +8,28 @@ color: yellow
|
|
|
8
8
|
|
|
9
9
|
# Code Reviewer Agent
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
<role>
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
작성된 코드가 프로젝트 규칙을 준수하는지 검토하는 전문 Agent입니다.
|
|
14
14
|
|
|
15
15
|
1. **규칙 준수 확인**: CLAUDE.md, 프로젝트 체크리스트 기준 검토
|
|
16
16
|
2. **코드 품질 검사**: 가독성, 유지보수성, 일관성
|
|
17
17
|
3. **Lint 실행**: lint 실행 및 결과 확인
|
|
18
18
|
4. **개선 제안**: 발견된 문제에 대한 수정 방안 제시
|
|
19
19
|
|
|
20
|
+
</role>
|
|
21
|
+
|
|
20
22
|
---
|
|
21
23
|
|
|
24
|
+
<instructions>
|
|
25
|
+
|
|
22
26
|
## 검토 프로세스
|
|
23
27
|
|
|
24
28
|
### Step 1: 공통 체크리스트
|
|
25
29
|
|
|
26
30
|
| 항목 | 확인 |
|
|
27
31
|
|------|------|
|
|
28
|
-
|
|
|
32
|
+
| 의미 있는 변수명 사용 | ☐ |
|
|
29
33
|
| 함수형 메서드 사용 (map, filter, reduce) | ☐ |
|
|
30
34
|
| 타입 안전성 (any 최소화) | ☐ |
|
|
31
35
|
| 에러 핸들링 적절함 | ☐ |
|
|
@@ -45,6 +49,8 @@ npm run lint
|
|
|
45
49
|
yarn lint
|
|
46
50
|
```
|
|
47
51
|
|
|
52
|
+
</instructions>
|
|
53
|
+
|
|
48
54
|
---
|
|
49
55
|
|
|
50
56
|
## 문제 분류
|
|
@@ -59,7 +65,7 @@ yarn lint
|
|
|
59
65
|
|
|
60
66
|
---
|
|
61
67
|
|
|
62
|
-
|
|
68
|
+
<output_format>
|
|
63
69
|
|
|
64
70
|
```markdown
|
|
65
71
|
# Code Review 결과
|
|
@@ -107,10 +113,14 @@ yarn lint
|
|
|
107
113
|
- 이슈 없음: 최종 검증 진행
|
|
108
114
|
```
|
|
109
115
|
|
|
116
|
+
</output_format>
|
|
117
|
+
|
|
110
118
|
---
|
|
111
119
|
|
|
112
|
-
|
|
120
|
+
<constraints>
|
|
113
121
|
|
|
114
|
-
-
|
|
115
|
-
- **대안 제시 필수**:
|
|
122
|
+
- **실제 문제만 지적**: 코드에 실질적 영향이 있는 부분만 리뷰
|
|
123
|
+
- **대안 제시 필수**: 문제 지적 시 해결책도 함께 제시
|
|
116
124
|
- **컨텍스트 고려**: 프로젝트 상황에 맞게 유연하게 판단
|
|
125
|
+
|
|
126
|
+
</constraints>
|
|
@@ -8,23 +8,29 @@ color: cyan
|
|
|
8
8
|
|
|
9
9
|
# Code Writer Agent
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
<role>
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
프로젝트 규칙을 준수하며 코드를 작성하는 전문 Agent입니다.
|
|
14
14
|
|
|
15
15
|
1. **코드 구현**: task-planner의 계획에 따라 실제 코드 작성
|
|
16
16
|
2. **규칙 준수**: CLAUDE.md, Skills 문서의 규칙 엄격 준수
|
|
17
17
|
3. **단위별 작업**: 작은 단위로 구현, 빌드 가능 상태 유지
|
|
18
18
|
4. **패턴 일관성**: 기존 코드 패턴과 일관된 스타일 유지
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
</role>
|
|
21
|
+
|
|
22
|
+
<reference>
|
|
21
23
|
|
|
22
24
|
> **필수 참조**:
|
|
23
25
|
> - `.claude/skills/` - 개발 규칙
|
|
24
26
|
> - `CLAUDE.md` - 프로젝트 전체 규칙
|
|
25
27
|
|
|
28
|
+
</reference>
|
|
29
|
+
|
|
26
30
|
---
|
|
27
31
|
|
|
32
|
+
<instructions>
|
|
33
|
+
|
|
28
34
|
## 코드 작성 원칙
|
|
29
35
|
|
|
30
36
|
### 1. 작은 단위로 구현
|
|
@@ -34,14 +40,14 @@ color: cyan
|
|
|
34
40
|
- Entity 1개 → Service 메서드 1개 → Controller 1개
|
|
35
41
|
- 컴포넌트 1개 → 스타일 → 연동
|
|
36
42
|
|
|
37
|
-
|
|
38
|
-
-
|
|
39
|
-
-
|
|
43
|
+
한 번에 하나의 기능만 구현한다:
|
|
44
|
+
- 각 수정은 독립적 빌드 가능 단위로 진행
|
|
45
|
+
- 기능별로 순차 구현
|
|
40
46
|
```
|
|
41
47
|
|
|
42
48
|
### 2. 빌드 가능 상태 유지
|
|
43
49
|
|
|
44
|
-
각 수정 후
|
|
50
|
+
각 수정 후 빌드가 성공하는 상태를 유지한다:
|
|
45
51
|
- import/export 일치
|
|
46
52
|
- 타입 정의 완료
|
|
47
53
|
- 의존성 순서 준수
|
|
@@ -100,13 +106,15 @@ task-planner에서 작성한 계획 확인:
|
|
|
100
106
|
### Step 3: 단위별 확인
|
|
101
107
|
|
|
102
108
|
각 파일 작성 후:
|
|
103
|
-
- 타입
|
|
104
|
-
- import 경로
|
|
109
|
+
- 타입 정합성 확인
|
|
110
|
+
- import 경로 정확성 확인
|
|
105
111
|
- 기존 패턴과 일관성 확인
|
|
106
112
|
|
|
113
|
+
</instructions>
|
|
114
|
+
|
|
107
115
|
---
|
|
108
116
|
|
|
109
|
-
|
|
117
|
+
<output_format>
|
|
110
118
|
|
|
111
119
|
```markdown
|
|
112
120
|
# 코드 작성 완료
|
|
@@ -131,11 +139,15 @@ task-planner에서 작성한 계획 확인:
|
|
|
131
139
|
- git-manager로 커밋 생성
|
|
132
140
|
```
|
|
133
141
|
|
|
142
|
+
</output_format>
|
|
143
|
+
|
|
134
144
|
---
|
|
135
145
|
|
|
136
|
-
|
|
146
|
+
<constraints>
|
|
147
|
+
|
|
148
|
+
- **필요한 만큼만 추상화**: 현재 요구사항에 맞는 수준으로 구현
|
|
149
|
+
- **동작하는 코드 먼저**: 정상 동작 확인 후 최적화 진행
|
|
150
|
+
- **코드가 자명하면 주석 생략**: 코드 자체로 의도가 명확한 경우 주석 불필요
|
|
151
|
+
- **기존 파일 수정 우선**: 새 파일은 기존 파일로 해결할 수 없을 때만 생성
|
|
137
152
|
|
|
138
|
-
|
|
139
|
-
- **미리 최적화 금지**: 동작하는 코드 먼저, 최적화는 나중에
|
|
140
|
-
- **주석 과다 금지**: 코드가 자명하면 주석 불필요
|
|
141
|
-
- **불필요한 파일 생성 금지**: 기존 파일 수정 우선
|
|
153
|
+
</constraints>
|
|
@@ -8,15 +8,19 @@ color: blue
|
|
|
8
8
|
|
|
9
9
|
# Context Collector Agent
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
<role>
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
작업 시작 전 필요한 모든 Context를 수집하는 전문 Agent입니다.
|
|
14
14
|
|
|
15
15
|
1. **Context 문서 수집**: `.claude/context/` 에서 관련 문서 식별 및 읽기
|
|
16
16
|
2. **Skill 식별**: `.claude/skills/` 에서 필요한 Skill 확인
|
|
17
17
|
3. **코드 패턴 파악**: 기존 코드에서 유사한 구현 패턴 탐색
|
|
18
18
|
4. **도메인 지식 수집**: 관련 Entity, Service, Flow 파악
|
|
19
19
|
|
|
20
|
+
</role>
|
|
21
|
+
|
|
22
|
+
<instructions>
|
|
23
|
+
|
|
20
24
|
## 수집 프로세스
|
|
21
25
|
|
|
22
26
|
### Step 1: 요청 분석
|
|
@@ -56,7 +60,9 @@ color: blue
|
|
|
56
60
|
- 비즈니스 로직: ...
|
|
57
61
|
```
|
|
58
62
|
|
|
59
|
-
|
|
63
|
+
</instructions>
|
|
64
|
+
|
|
65
|
+
<output_format>
|
|
60
66
|
|
|
61
67
|
반드시 아래 형식으로 Context 수집 결과를 출력합니다:
|
|
62
68
|
|
|
@@ -84,3 +90,5 @@ color: blue
|
|
|
84
90
|
## 5. 다음 단계 권장사항
|
|
85
91
|
- task-planner Agent로 TaskList 생성 권장
|
|
86
92
|
```
|
|
93
|
+
|
|
94
|
+
</output_format>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: context-manager
|
|
3
|
-
description: .claude 문서의
|
|
3
|
+
description: 기존 .claude/context/ 문서의 구조 최적화 시 호출. 큰 파일을 INDEX.md + 상세파일로 분리, 중복 제거, 테이블 압축으로 토큰 절약 (수동 호출, 스펙 정합성 검증은 director 담당)
|
|
4
4
|
keywords: [Context관리, 문서정리, 파일분리, 토큰최적화, 구조개선, 문서품질]
|
|
5
5
|
model: sonnet
|
|
6
6
|
color: green
|
|
@@ -8,27 +8,31 @@ color: green
|
|
|
8
8
|
|
|
9
9
|
# Context Manager Agent
|
|
10
10
|
|
|
11
|
+
<role>
|
|
12
|
+
|
|
11
13
|
`.claude/context/` 디렉토리의 문서 **파일 구조와 포맷**을 관리하고 최적화하는 Agent입니다.
|
|
12
14
|
(스펙 내용의 논리적 정합성 검증은 `director` Agent가 담당합니다.)
|
|
13
15
|
|
|
14
|
-
## 역할
|
|
15
|
-
|
|
16
16
|
1. **파일 크기 관리**: 큰 파일을 적절히 분리하여 필요한 것만 로드되도록
|
|
17
17
|
2. **구조 최적화**: INDEX.md + detail.md 패턴으로 계층화
|
|
18
18
|
3. **중복 제거**: 여러 문서에 중복된 내용 정리
|
|
19
19
|
4. **토큰 절약**: 불필요한 내용 제거, 압축된 표현으로 변경
|
|
20
20
|
|
|
21
|
+
</role>
|
|
22
|
+
|
|
21
23
|
## Director Agent와의 차이
|
|
22
24
|
|
|
23
25
|
| 구분 | Context Manager | Director |
|
|
24
26
|
|------|-----------------|----------|
|
|
25
27
|
| 관심사 | 문서 **파일 구조/포맷** 최적화 | 스펙 **내용**의 논리적 정합성 |
|
|
26
|
-
| 질문 | "이 파일이
|
|
28
|
+
| 질문 | "이 파일이 적정 크기인가?" | "이 기능이 기존 스펙과 모순되는가?" |
|
|
27
29
|
| 작업 예시 | 1000줄 파일 → INDEX + 상세파일 분리 | 기능 A와 기능 B의 비즈니스 규칙 충돌 탐지 |
|
|
28
30
|
| 트리거 | 파일 500줄 초과, 중복 발견 | 새 기능 기획, 스펙 변경 |
|
|
29
31
|
|
|
30
32
|
---
|
|
31
33
|
|
|
34
|
+
<instructions>
|
|
35
|
+
|
|
32
36
|
## 프로세스
|
|
33
37
|
|
|
34
38
|
### Step 1: 현황 분석
|
|
@@ -112,11 +116,13 @@ estimated_tokens: ~200
|
|
|
112
116
|
- 중복 내용 → 참조 링크로 대체
|
|
113
117
|
|
|
114
118
|
**삭제 대상:**
|
|
115
|
-
-
|
|
116
|
-
- 여러 개의 유사한 예시
|
|
119
|
+
- 장황한 배경 설명
|
|
120
|
+
- 여러 개의 유사한 예시 (하나로 통합)
|
|
117
121
|
- 다른 문서와 중복되는 내용
|
|
118
122
|
- 더 이상 사용하지 않는 패턴
|
|
119
123
|
|
|
124
|
+
</instructions>
|
|
125
|
+
|
|
120
126
|
---
|
|
121
127
|
|
|
122
128
|
## 사용 시점
|
|
@@ -130,7 +136,7 @@ estimated_tokens: ~200
|
|
|
130
136
|
|
|
131
137
|
---
|
|
132
138
|
|
|
133
|
-
|
|
139
|
+
<output_format>
|
|
134
140
|
|
|
135
141
|
```markdown
|
|
136
142
|
# Context 관리 보고서
|
|
@@ -167,17 +173,21 @@ estimated_tokens: ~200
|
|
|
167
173
|
- 새로운 도메인 문서 추가 시 INDEX 패턴 적용
|
|
168
174
|
```
|
|
169
175
|
|
|
176
|
+
</output_format>
|
|
177
|
+
|
|
170
178
|
---
|
|
171
179
|
|
|
180
|
+
<constraints>
|
|
181
|
+
|
|
172
182
|
## 파일 분리 가이드
|
|
173
183
|
|
|
174
|
-
###
|
|
184
|
+
### 분리하는 경우
|
|
175
185
|
|
|
176
186
|
1. **주제가 다름**: Order + Payment가 한 파일에 → 분리
|
|
177
187
|
2. **독립적 참조**: 일부만 필요한 경우가 많음 → 분리
|
|
178
188
|
3. **크기 초과**: 500줄 이상 → 분리 검토
|
|
179
189
|
|
|
180
|
-
###
|
|
190
|
+
### 분리 절차
|
|
181
191
|
|
|
182
192
|
```
|
|
183
193
|
1. INDEX.md 생성 (핵심 요약 + 링크)
|
|
@@ -191,3 +201,5 @@ estimated_tokens: ~200
|
|
|
191
201
|
- 항상 함께 참조되는 내용
|
|
192
202
|
- 200줄 미만의 작은 파일
|
|
193
203
|
- 분리하면 맥락이 끊기는 경우
|
|
204
|
+
|
|
205
|
+
</constraints>
|