jun-claude-code 0.0.13 → 0.0.15
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 +26 -1
- package/package.json +1 -1
- package/templates/global/CLAUDE.md +4 -1
- package/templates/global/agents/context-collector.md +43 -34
- package/templates/global/agents/explore.md +20 -11
- package/templates/global/hooks/skill-forced.sh +67 -6
- package/templates/global/skills/Git/git.md +13 -13
- package/templates/project/agents/context-generator.md +5 -6
- package/templates/project/agents/project-context-collector.md +146 -0
- package/templates/project/workflows/context-gen.yml +31 -4
package/README.md
CHANGED
|
@@ -21,7 +21,7 @@ Claude Code 설정 템플릿 CLI. 미리 정의된 Agents, Skills, Hooks, Workfl
|
|
|
21
21
|
| `architect` | 아키텍처 설계 |
|
|
22
22
|
| `designer` | UI/UX 스타일링 |
|
|
23
23
|
| `director` | 작업 총괄 디렉터 |
|
|
24
|
-
| `context-collector` | Context 수집 |
|
|
24
|
+
| `context-collector` | 소스 코드 기반 Context 수집 |
|
|
25
25
|
| `context-manager` | Context 문서 관리 |
|
|
26
26
|
|
|
27
27
|
### Skills (`templates/global/skills/`)
|
|
@@ -50,6 +50,7 @@ Claude Code 설정 템플릿 CLI. 미리 정의된 Agents, Skills, Hooks, Workfl
|
|
|
50
50
|
|-------|------|
|
|
51
51
|
| `project-task-manager` | GitHub Project 태스크 관리 |
|
|
52
52
|
| `context-generator` | Context 자동 생성 |
|
|
53
|
+
| `project-context-collector` | .claude/context/ 문서 기반 프로젝트 배경 수집 |
|
|
53
54
|
|
|
54
55
|
### Project Skills (`templates/project/skills/`)
|
|
55
56
|
|
|
@@ -73,6 +74,14 @@ npm install -g jun-claude-code
|
|
|
73
74
|
|
|
74
75
|
## 사용법
|
|
75
76
|
|
|
77
|
+
### 명령어 미리보기
|
|
78
|
+
|
|
79
|
+
| 명령어 | 설명 | 활성화되는 기능 |
|
|
80
|
+
|--------|------|----------------|
|
|
81
|
+
| `jun-claude-code` | 전역 설정 (`~/.claude/`) 설치 | Agents 13종, Skills 6종, Hooks 2종, Workflow |
|
|
82
|
+
| `jun-claude-code init-project` | GitHub Project 연동 | 세션 시작 시 태스크 자동 로드, 태스크 관리 Agent |
|
|
83
|
+
| `jun-claude-code init-context` | Context 자동 생성 설정 | PR 기반 Context 자동 생성, Codebase/Business 문서화, 별도 브랜치 PR |
|
|
84
|
+
|
|
76
85
|
### 기본 명령어: 설정 복사
|
|
77
86
|
|
|
78
87
|
`templates/global` 설정 파일을 `~/.claude`로 복사합니다.
|
|
@@ -99,6 +108,13 @@ jun-claude-code init-project
|
|
|
99
108
|
- Project Number
|
|
100
109
|
- Repository (owner/repo 형식)
|
|
101
110
|
|
|
111
|
+
**활성화되는 기능:**
|
|
112
|
+
|
|
113
|
+
| 기능 | 설명 |
|
|
114
|
+
|------|------|
|
|
115
|
+
| 세션 시작 시 태스크 자동 로드 | Claude Code 시작 시 `task-loader.sh`가 GitHub Project에서 할당된 태스크를 조회 |
|
|
116
|
+
| 태스크 관리 Agent | `project-task-manager` Agent를 통해 태스크 상태 변경, 코멘트 추가 가능 |
|
|
117
|
+
|
|
102
118
|
설정 후 생성되는 파일:
|
|
103
119
|
|
|
104
120
|
```
|
|
@@ -121,6 +137,15 @@ GitHub Actions를 통한 Context 문서 자동 생성을 설정합니다.
|
|
|
121
137
|
jun-claude-code init-context
|
|
122
138
|
```
|
|
123
139
|
|
|
140
|
+
**활성화되는 기능:**
|
|
141
|
+
|
|
142
|
+
| 기능 | 설명 |
|
|
143
|
+
|------|------|
|
|
144
|
+
| PR 기반 Context 자동 생성 | PR이 생성/업데이트되면 GitHub Actions가 코드 변경을 분석하여 Context 문서 생성 |
|
|
145
|
+
| Codebase Context | 모듈별 파일 경로, 함수명, 의존 관계를 `.claude/context/codebase/`에 정리 |
|
|
146
|
+
| Business Context | 기술 변경을 비즈니스 관점으로 변환하여 `.claude/context/business/`에 정리 |
|
|
147
|
+
| 별도 브랜치 PR 방식 | 생성된 Context를 `{브랜치명}-generated-context` 브랜치로 분리하여 선택적 머지 가능 |
|
|
148
|
+
|
|
124
149
|
설정 후 생성되는 파일:
|
|
125
150
|
|
|
126
151
|
```
|
package/package.json
CHANGED
|
@@ -13,7 +13,8 @@ Main Agent의 Context Window는 제한적입니다.
|
|
|
13
13
|
|------|-------|------|
|
|
14
14
|
| 코드베이스 탐색/검색 | `explore` | 파일 내용이 Main Context에 쌓이지 않음 |
|
|
15
15
|
| 여러 파일 읽기 | `explore`, `context-collector` | 탐색 결과만 요약해서 받음 |
|
|
16
|
-
|
|
|
16
|
+
| .claude/context/ 문서 수집 | `project-context-collector` | 프로젝트 배경 정보만 요약해서 받음 |
|
|
17
|
+
| 코드 패턴/구조 파악 | `context-collector` | 분석 결과만 받음 |
|
|
17
18
|
| 복잡한 계획 수립 | `task-planner` | 계획 결과만 받음 |
|
|
18
19
|
| 영향 분석 | `impact-analyzer` | 분석 결과만 받음 |
|
|
19
20
|
| 코드 리뷰 | `code-reviewer` | 리뷰 결과만 받음 |
|
|
@@ -30,6 +31,8 @@ Main Agent의 Context Window는 제한적입니다.
|
|
|
30
31
|
| 작업 | 전담 Agent |
|
|
31
32
|
|------|-----------|
|
|
32
33
|
| 파일 탐색 (Glob/Grep) | explore Agent가 전담 |
|
|
34
|
+
| .claude/context/ 문서 탐색 | project-context-collector가 전담 |
|
|
35
|
+
| 소스 코드 패턴/구조 파악 | context-collector가 전담 |
|
|
33
36
|
| 2개 이상 파일 읽기 | explore/context-collector가 전담 |
|
|
34
37
|
| 복잡한 분석/계획 | task-planner에 위임 |
|
|
35
38
|
| 파일 수정 | code-writer가 전담 |
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: context-collector
|
|
3
|
-
description:
|
|
4
|
-
keywords: [
|
|
5
|
-
model:
|
|
3
|
+
description: 실제 소스 코드에서 패턴/구현 방식/도메인 지식을 수집. Skill/Agent 식별, 코드 DEEP 탐색 전문.
|
|
4
|
+
keywords: [코드탐색, 패턴파악, Skill식별, 도메인지식, 아키텍처분석, DEEP탐색, 소스코드]
|
|
5
|
+
model: opus
|
|
6
6
|
color: blue
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -10,10 +10,10 @@ color: blue
|
|
|
10
10
|
|
|
11
11
|
<role>
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
소스 코드에서 패턴, 구현 방식, 도메인 지식을 수집하는 전문 Agent입니다.
|
|
14
14
|
|
|
15
|
-
1. **
|
|
16
|
-
2. **
|
|
15
|
+
1. **Skill 식별**: `.claude/skills/` 에서 필요한 Skill 확인
|
|
16
|
+
2. **Agent 식별**: `.claude/agents/` 에서 관련 Agent 확인
|
|
17
17
|
3. **코드 패턴 파악**: 기존 코드에서 유사한 구현 패턴 탐색
|
|
18
18
|
4. **도메인 지식 수집**: 관련 Entity, Service, Flow 파악
|
|
19
19
|
|
|
@@ -23,55 +23,54 @@ color: blue
|
|
|
23
23
|
|
|
24
24
|
## 수집 프로세스
|
|
25
25
|
|
|
26
|
-
### Step 1: 요청 분석
|
|
26
|
+
### Step 1: 요청 분석 및 탐색 전략 결정
|
|
27
|
+
|
|
28
|
+
요청을 분석하여 코드 탐색 전략을 결정합니다.
|
|
29
|
+
|
|
30
|
+
- 요청의 핵심 키워드와 도메인 영역을 식별
|
|
31
|
+
- 탐색 대상: Skill/Agent 문서 → 소스 코드 순서로 진행
|
|
32
|
+
- 탐색 범위를 판단하여 효율적으로 수집
|
|
33
|
+
|
|
34
|
+
### Step 2: Skill 및 Agent 탐색
|
|
27
35
|
|
|
28
36
|
```
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
- DB 변경이 필요한가? → database context 확인
|
|
32
|
-
- 도메인 로직인가? → domain context 확인
|
|
37
|
+
- .claude/skills/ 에서 작업에 필요한 Skill 확인
|
|
38
|
+
- .claude/agents/ 에서 관련 Agent 확인
|
|
33
39
|
```
|
|
34
40
|
|
|
35
|
-
### Step
|
|
41
|
+
### Step 3: 소스 코드 DEEP 탐색
|
|
42
|
+
|
|
43
|
+
실제 소스 코드를 직접 탐색하여 패턴과 구현 방식을 파악합니다.
|
|
36
44
|
|
|
37
45
|
```
|
|
38
46
|
- 유사한 기존 구현 찾기 (Grep, Glob 활용)
|
|
39
47
|
- Entity 구조 파악
|
|
40
48
|
- Service 패턴 확인
|
|
41
49
|
- Controller 구조 확인
|
|
50
|
+
- 함수명, 클래스명으로 사용처 검색
|
|
51
|
+
- import/export 관계 추적
|
|
42
52
|
```
|
|
43
53
|
|
|
44
|
-
### Step
|
|
45
|
-
|
|
46
|
-
```markdown
|
|
47
|
-
## 수집된 Context
|
|
48
|
-
|
|
49
|
-
### 관련 문서
|
|
50
|
-
- [ ] `.claude/context/xxx.md` - 관련 이유
|
|
51
|
-
|
|
52
|
-
### 활성화할 Skill
|
|
53
|
-
- [ ] `skill-name` - 필요 이유
|
|
54
|
+
### Step 4: Context 요약 출력
|
|
54
55
|
|
|
55
|
-
|
|
56
|
-
- `path/to/file.ts` - 유사 패턴 설명
|
|
57
|
-
|
|
58
|
-
### 도메인 지식
|
|
59
|
-
- 관련 Entity: ...
|
|
60
|
-
- 비즈니스 로직: ...
|
|
61
|
-
```
|
|
56
|
+
수집한 모든 정보를 output_format에 맞춰 정리합니다.
|
|
62
57
|
|
|
63
58
|
</instructions>
|
|
64
59
|
|
|
65
60
|
<output_format>
|
|
66
61
|
|
|
67
|
-
|
|
62
|
+
아래 형식으로 Context 수집 결과를 출력합니다:
|
|
68
63
|
|
|
69
64
|
```markdown
|
|
70
65
|
# Context 수집 결과
|
|
71
66
|
|
|
72
|
-
##
|
|
73
|
-
|
|
74
|
-
|
|
67
|
+
## 탐색 전략
|
|
68
|
+
- **탐색 범위**: (어떤 영역을 탐색했는지)
|
|
69
|
+
- **판단 근거**: (왜 이 범위를 탐색했는지)
|
|
70
|
+
|
|
71
|
+
## 1. 소스 코드 탐색 결과
|
|
72
|
+
| 파일 | 확인 내용 | 핵심 발견 |
|
|
73
|
+
|------|----------|----------|
|
|
75
74
|
| ... | ... | ... |
|
|
76
75
|
|
|
77
76
|
## 2. 필요한 Skill
|
|
@@ -79,7 +78,7 @@ color: blue
|
|
|
79
78
|
|-------|------|
|
|
80
79
|
| ... | ... |
|
|
81
80
|
|
|
82
|
-
## 3. 참고 코드
|
|
81
|
+
## 3. 참고 코드 패턴
|
|
83
82
|
| 파일 | 패턴 | 참고 이유 |
|
|
84
83
|
|------|------|----------|
|
|
85
84
|
| ... | ... | ... |
|
|
@@ -89,6 +88,16 @@ color: blue
|
|
|
89
88
|
|
|
90
89
|
## 5. 다음 단계 권장사항
|
|
91
90
|
- task-planner Agent로 TaskList 생성 권장
|
|
91
|
+
- 프로젝트 배경 정보가 필요하면 project-context-collector Agent 사용을 권장합니다.
|
|
92
92
|
```
|
|
93
93
|
|
|
94
94
|
</output_format>
|
|
95
|
+
|
|
96
|
+
<constraints>
|
|
97
|
+
|
|
98
|
+
## 제약사항
|
|
99
|
+
|
|
100
|
+
- `.claude/context/` 문서는 탐색하지 않습니다. 프로젝트 배경 정보가 필요하면 project-context-collector Agent를 안내합니다.
|
|
101
|
+
- 실제 소스 코드와 `.claude/skills/`, `.claude/agents/` 문서만 탐색합니다.
|
|
102
|
+
|
|
103
|
+
</constraints>
|
|
@@ -39,13 +39,21 @@ color: gray
|
|
|
39
39
|
- "~패턴의 파일들 목록"
|
|
40
40
|
```
|
|
41
41
|
|
|
42
|
-
###
|
|
42
|
+
### 다른 Agent가 적합한 경우
|
|
43
43
|
|
|
44
|
+
**project-context-collector** (프로젝트 배경 정보):
|
|
45
|
+
```
|
|
46
|
+
- .claude/context/ 문서에서 배경 정보 수집
|
|
47
|
+
- 비즈니스 규칙/도메인 용어 확인
|
|
48
|
+
- 모듈 구조/아키텍처 개요 파악
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
**context-collector** (소스 코드 DEEP 탐색):
|
|
44
52
|
```
|
|
45
53
|
- 깊은 코드 분석 필요
|
|
46
|
-
- 비즈니스 로직 이해 필요
|
|
47
54
|
- 여러 파일 간 관계 파악
|
|
48
|
-
-
|
|
55
|
+
- Skill/Agent 식별
|
|
56
|
+
- 코드 패턴/구현 방식 분석
|
|
49
57
|
```
|
|
50
58
|
|
|
51
59
|
---
|
|
@@ -124,12 +132,13 @@ Glob: "src/module/*/index.ts"
|
|
|
124
132
|
|
|
125
133
|
---
|
|
126
134
|
|
|
127
|
-
##
|
|
135
|
+
## 관련 Agent 비교
|
|
128
136
|
|
|
129
|
-
| 항목 | explore | context-collector |
|
|
130
|
-
|
|
131
|
-
| 모델 | Haiku | Sonnet |
|
|
132
|
-
| 속도 | 빠름 | 보통 |
|
|
133
|
-
| 깊이 | 얕음 (위치만) | 깊음 (분석
|
|
134
|
-
| 비용 | 낮음 | 보통 |
|
|
135
|
-
|
|
|
137
|
+
| 항목 | explore | project-context-collector | context-collector |
|
|
138
|
+
|------|---------|--------------------------|-------------------|
|
|
139
|
+
| 모델 | Haiku | Sonnet | Opus |
|
|
140
|
+
| 속도 | 빠름 | 보통 | 느림 |
|
|
141
|
+
| 깊이 | 얕음 (위치만) | 중간 (문서 분석) | 깊음 (코드 분석) |
|
|
142
|
+
| 비용 | 낮음 | 보통 | 높음 |
|
|
143
|
+
| 대상 | 소스 코드 | .claude/context/ 문서 | 소스 코드 + Skill/Agent |
|
|
144
|
+
| 용도 | "어디 있지?" | "프로젝트 배경이 뭐지?" | "어떻게 동작하지?" |
|
|
@@ -33,6 +33,8 @@ Main Agent의 Context Window는 제한적입니다.
|
|
|
33
33
|
| 작업 | 전담 Agent |
|
|
34
34
|
|------|-----------|
|
|
35
35
|
| 파일 탐색 (Glob/Grep) | explore Agent가 전담 |
|
|
36
|
+
| .claude/context/ 문서 탐색 | project-context-collector가 전담 |
|
|
37
|
+
| 소스 코드 패턴/구조 파악 | context-collector가 전담 |
|
|
36
38
|
| 2개 이상 파일 읽기 | explore/context-collector가 전담 |
|
|
37
39
|
| 복잡한 분석/계획 | task-planner에 위임 |
|
|
38
40
|
| 파일 수정 (3개 이상) | code-writer가 전담 |
|
|
@@ -126,14 +128,73 @@ cat << 'EOF'
|
|
|
126
128
|
|
|
127
129
|
<phase name="Context 확인">
|
|
128
130
|
|
|
129
|
-
## PART 1.5: CONTEXT
|
|
131
|
+
## PART 1.5: PROJECT CONTEXT (프로젝트 배경 정보)
|
|
130
132
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
+
아래는 이 프로젝트의 배경 정보입니다. 작업 판단 시 참고하세요.
|
|
134
|
+
상세 분석이 필요하면 아래 Agent에 위임하세요.
|
|
133
135
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
136
|
+
| 필요한 정보 | Agent | 호출 예시 |
|
|
137
|
+
|------------|-------|----------|
|
|
138
|
+
| 프로젝트 배경/도메인 지식 | project-context-collector | \`Task(subagent_type="project-context-collector", prompt="[작업]에 필요한 프로젝트 배경 정보를 수집해줘")\` |
|
|
139
|
+
| 소스 코드 패턴/구현 방식 | context-collector | \`Task(subagent_type="context-collector", prompt="[작업]에 필요한 코드 패턴을 수집해줘")\` |
|
|
140
|
+
|
|
141
|
+
두 Agent를 순차적으로 사용하면 가장 포괄적인 Context를 수집할 수 있습니다:
|
|
142
|
+
\`\`\`
|
|
143
|
+
1. project-context-collector → 프로젝트 배경 수집
|
|
144
|
+
2. context-collector → 소스 코드 패턴 수집
|
|
145
|
+
\`\`\`
|
|
146
|
+
|
|
147
|
+
EOF
|
|
148
|
+
|
|
149
|
+
# context 디렉토리에서 business/codebase context 동적 탐색
|
|
150
|
+
# 프로젝트 .claude/context/ 만 탐색 (글로벌 ~/.claude/context/는 탐색하지 않음)
|
|
151
|
+
CONTEXT_BASE_DIR="$PROJECT_CLAUDE_DIR/context"
|
|
152
|
+
HAS_CONTEXT=false
|
|
153
|
+
|
|
154
|
+
for context_type in "business" "codebase"; do
|
|
155
|
+
context_dir="$CONTEXT_BASE_DIR/$context_type"
|
|
156
|
+
if [ -d "$context_dir" ]; then
|
|
157
|
+
HAS_CONTEXT=true
|
|
158
|
+
|
|
159
|
+
# 헤더 출력
|
|
160
|
+
if [ "$context_type" = "business" ]; then
|
|
161
|
+
echo "---"
|
|
162
|
+
echo ""
|
|
163
|
+
echo "### Business Context"
|
|
164
|
+
echo ""
|
|
165
|
+
else
|
|
166
|
+
echo "---"
|
|
167
|
+
echo ""
|
|
168
|
+
echo "### Codebase Context"
|
|
169
|
+
echo ""
|
|
170
|
+
fi
|
|
171
|
+
|
|
172
|
+
# INDEX.md가 있으면 내용 출력
|
|
173
|
+
if [ -f "$context_dir/INDEX.md" ]; then
|
|
174
|
+
cat "$context_dir/INDEX.md"
|
|
175
|
+
echo ""
|
|
176
|
+
fi
|
|
177
|
+
|
|
178
|
+
# INDEX.md 외의 .md 파일 목록을 상세 문서로 표시
|
|
179
|
+
has_detail_docs=false
|
|
180
|
+
for md_file in "$context_dir"/*.md; do
|
|
181
|
+
if [ -f "$md_file" ] && [ "$(basename "$md_file")" != "INDEX.md" ]; then
|
|
182
|
+
if [ "$has_detail_docs" = false ]; then
|
|
183
|
+
has_detail_docs=true
|
|
184
|
+
fi
|
|
185
|
+
echo "상세 문서: \`$(basename "$md_file")\`"
|
|
186
|
+
fi
|
|
187
|
+
done
|
|
188
|
+
echo ""
|
|
189
|
+
fi
|
|
190
|
+
done
|
|
191
|
+
|
|
192
|
+
if [ "$HAS_CONTEXT" = false ]; then
|
|
193
|
+
echo "프로젝트 context가 없습니다. (.claude/context/business/ 또는 .claude/context/codebase/ 디렉토리가 없음)"
|
|
194
|
+
echo ""
|
|
195
|
+
fi
|
|
196
|
+
|
|
197
|
+
cat << 'EOF'
|
|
137
198
|
|
|
138
199
|
</phase>
|
|
139
200
|
|
|
@@ -127,11 +127,11 @@ grep -r "import.*변경된함수명" --include="*.ts" --include="*.tsx"
|
|
|
127
127
|
### Step 4: PR 본문 작성
|
|
128
128
|
|
|
129
129
|
```markdown
|
|
130
|
-
## Summary
|
|
130
|
+
## 📋 Summary
|
|
131
131
|
|
|
132
132
|
> 이 PR이 해결하는 문제와 접근 방식을 1-2문장으로 설명
|
|
133
133
|
|
|
134
|
-
## 주요 변경사항
|
|
134
|
+
## 🔄 주요 변경사항
|
|
135
135
|
|
|
136
136
|
### [변경 제목 1]
|
|
137
137
|
**파일:** `path/to/file.ts`
|
|
@@ -141,7 +141,7 @@ grep -r "import.*변경된함수명" --include="*.ts" --include="*.tsx"
|
|
|
141
141
|
**파일:** `path/to/file.ts`
|
|
142
142
|
- 변경 내용 설명
|
|
143
143
|
|
|
144
|
-
## 사이드 이펙트
|
|
144
|
+
## ⚠️ 사이드 이펙트
|
|
145
145
|
|
|
146
146
|
> 이 변경으로 인해 다른 부분에 발생할 수 있는 영향
|
|
147
147
|
|
|
@@ -149,7 +149,7 @@ grep -r "import.*변경된함수명" --include="*.ts" --include="*.tsx"
|
|
|
149
149
|
|---------------|----------|--------|
|
|
150
150
|
| 없음 | - | - |
|
|
151
151
|
|
|
152
|
-
## 변경 흐름
|
|
152
|
+
## 🔀 변경 흐름
|
|
153
153
|
|
|
154
154
|
```mermaid
|
|
155
155
|
graph LR
|
|
@@ -323,17 +323,17 @@ gh pr comment <PR번호> --body "리뷰 피드백 반영 완료. 재확인 부
|
|
|
323
323
|
|
|
324
324
|
```mermaid
|
|
325
325
|
graph TD
|
|
326
|
-
A[변경사항 분석] --> B[영향 범위 분석]
|
|
327
|
-
B --> C[영향 판단]
|
|
328
|
-
C --> D[PR 본문 작성]
|
|
329
|
-
D --> E[PR 생성]
|
|
330
|
-
E --> F[Self PR Review]
|
|
331
|
-
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]
|
|
332
332
|
G --> F
|
|
333
|
-
F -->|OK| H[팀원 리뷰 대기]
|
|
334
|
-
H -->|피드백| I[PR Apply Mode]
|
|
333
|
+
F -->|OK| H[👥 팀원 리뷰 대기]
|
|
334
|
+
H -->|피드백| I[📝 PR Apply Mode]
|
|
335
335
|
I --> H
|
|
336
|
-
H -->|Approve| J[Merge]
|
|
336
|
+
H -->|Approve| J[✅ Merge]
|
|
337
337
|
```
|
|
338
338
|
|
|
339
339
|
<reference>
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: context-generator
|
|
3
3
|
description: GitHub Action에서 PR diff 기반으로 .claude/context/ 문서를 자동 생성/업데이트 (CI 전용)
|
|
4
4
|
keywords: [context, PR, diff, codebase, business, 문서생성]
|
|
5
|
-
model:
|
|
5
|
+
model: opus
|
|
6
6
|
color: green
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -52,12 +52,11 @@ git diff HEAD~1 --name-only
|
|
|
52
52
|
- 도메인별 `.md` 파일 생성/업데이트
|
|
53
53
|
- `business/INDEX.md` 업데이트
|
|
54
54
|
|
|
55
|
-
### 6.
|
|
55
|
+
### 6. 반영
|
|
56
56
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
```
|
|
57
|
+
- 생성된 context 문서는 `{브랜치명}-generated-context` 브랜치에 push됩니다.
|
|
58
|
+
- 원본 PR 브랜치로 별도 PR이 생성되어 선택적으로 머지할 수 있습니다.
|
|
59
|
+
- PR이 re-sync되면 context 브랜치가 force push로 업데이트됩니다.
|
|
61
60
|
|
|
62
61
|
## 제약사항
|
|
63
62
|
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: project-context-collector
|
|
3
|
+
description: 프로젝트 배경 정보 수집 시 호출. .claude/context/의 business/codebase 문서에서 도메인 지식, 아키텍처 정보를 수집하여 요약 제공.
|
|
4
|
+
keywords: [프로젝트배경, 문서탐색, business-context, codebase-context, 도메인지식, INDEX]
|
|
5
|
+
model: sonnet
|
|
6
|
+
color: blue
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Project Context Collector Agent
|
|
10
|
+
|
|
11
|
+
<role>
|
|
12
|
+
|
|
13
|
+
프로젝트의 `.claude/context/` 문서에서 배경 정보를 수집하는 전문 Agent입니다.
|
|
14
|
+
|
|
15
|
+
1. **Business Context 탐색**: `.claude/context/business/` 에서 도메인 규칙, 비즈니스 로직 파악
|
|
16
|
+
2. **Codebase Context 탐색**: `.claude/context/codebase/` 에서 모듈 구조, 아키텍처 파악
|
|
17
|
+
3. **INDEX 기반 탐색**: INDEX.md를 기점으로 관련 상세 문서를 단계적으로 확인
|
|
18
|
+
4. **요약 제공**: 수집한 배경 정보를 구조화하여 반환
|
|
19
|
+
|
|
20
|
+
</role>
|
|
21
|
+
|
|
22
|
+
## 특징
|
|
23
|
+
|
|
24
|
+
- **Sonnet 모델**: 문서 이해와 요약에 적합
|
|
25
|
+
- **문서 전용**: `.claude/context/` 디렉토리만 탐색, 소스 코드 탐색은 수행하지 않음
|
|
26
|
+
- **빠른 배경 파악**: INDEX.md 기반으로 필요한 문서만 선택적으로 확인
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## 사용 시점
|
|
31
|
+
|
|
32
|
+
### 적합한 경우
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
- 프로젝트 배경 이해가 필요한 경우
|
|
36
|
+
- 도메인 규칙/비즈니스 로직 확인
|
|
37
|
+
- 모듈 구조/아키텍처 개요 파악
|
|
38
|
+
- 작업 시작 전 프로젝트 컨텍스트 수집
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### context-collector가 적합한 경우
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
- 실제 소스 코드 확인이 필요한 경우
|
|
45
|
+
- 코드 패턴/구현 방식 분석
|
|
46
|
+
- Skill/Agent 문서 식별
|
|
47
|
+
- 파일 간 의존성/호출 관계 추적
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
<instructions>
|
|
53
|
+
|
|
54
|
+
## 수집 프로세스
|
|
55
|
+
|
|
56
|
+
### Step 1: 요청 분석 및 탐색 카테고리 결정
|
|
57
|
+
|
|
58
|
+
요청을 분석하여 **탐색 카테고리**와 **탐색 깊이**를 결정합니다.
|
|
59
|
+
|
|
60
|
+
**탐색 카테고리 판단:**
|
|
61
|
+
|
|
62
|
+
| 요청 유형 | 우선 탐색 대상 | 예시 |
|
|
63
|
+
|----------|--------------|------|
|
|
64
|
+
| 도메인/비즈니스 규칙 관련 | `business/` | 결제 로직, 사용자 권한, 정책 |
|
|
65
|
+
| 코드 구조/기술 관련 | `codebase/` | 모듈 구조, API 설계, DB 스키마 |
|
|
66
|
+
| 기능 구현 (양쪽 모두 필요) | `business/` → `codebase/` | 새 기능 개발, 리팩토링 |
|
|
67
|
+
|
|
68
|
+
**탐색 깊이 판단:**
|
|
69
|
+
|
|
70
|
+
| 깊이 | 조건 | 설명 |
|
|
71
|
+
|------|------|------|
|
|
72
|
+
| Quick | 전체 개요만 필요 | INDEX.md만 확인 (빠른 오버뷰) |
|
|
73
|
+
| Standard | 특정 도메인/모듈 이해 필요 | INDEX.md → 관련 상세 문서 확인 |
|
|
74
|
+
|
|
75
|
+
### Step 2: INDEX.md 확인
|
|
76
|
+
|
|
77
|
+
`.claude/context/` 디렉토리가 존재하면 INDEX.md부터 확인합니다.
|
|
78
|
+
디렉토리가 존재하지 않으면 "프로젝트 Context 문서가 없습니다"를 반환합니다.
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
.claude/context/business/INDEX.md → 프로젝트 개요, 도메인 목록, 비즈니스 규칙 요약
|
|
82
|
+
.claude/context/codebase/INDEX.md → 모듈 구조, 기술 스택, 아키텍처 요약
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
- INDEX.md에서 요청과 관련된 섹션/키워드를 식별
|
|
86
|
+
- 관련 상세 문서 경로를 추출
|
|
87
|
+
- Quick 깊이면 여기서 종료
|
|
88
|
+
|
|
89
|
+
### Step 3: 상세 문서 확인 (Standard 깊이)
|
|
90
|
+
|
|
91
|
+
INDEX.md에서 식별한 관련 문서를 읽습니다.
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
.claude/context/business/*.md → 비즈니스 규칙, 사용자 흐름, 도메인 용어
|
|
95
|
+
.claude/context/codebase/*.md → 모듈 관계, 핵심 워크플로우, API 명세
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
- 상세 문서에서 핵심 정보 추출
|
|
99
|
+
- 요청과 관련도가 높은 내용 우선 수집
|
|
100
|
+
|
|
101
|
+
### Step 4: Context 요약 출력
|
|
102
|
+
|
|
103
|
+
수집한 모든 정보를 output_format에 맞춰 정리합니다.
|
|
104
|
+
|
|
105
|
+
</instructions>
|
|
106
|
+
|
|
107
|
+
<output_format>
|
|
108
|
+
|
|
109
|
+
아래 형식으로 Context 수집 결과를 출력합니다:
|
|
110
|
+
|
|
111
|
+
```markdown
|
|
112
|
+
# Project Context 수집 결과
|
|
113
|
+
|
|
114
|
+
## 탐색 전략
|
|
115
|
+
- **카테고리**: business / codebase / 양쪽 모두
|
|
116
|
+
- **탐색 깊이**: Quick / Standard
|
|
117
|
+
- **판단 근거**: (왜 이 깊이까지 탐색했는지)
|
|
118
|
+
|
|
119
|
+
## 1. Business Context (해당시)
|
|
120
|
+
| 문서 | 관련성 | 핵심 내용 |
|
|
121
|
+
|------|--------|----------|
|
|
122
|
+
| ... | ... | ... |
|
|
123
|
+
|
|
124
|
+
## 2. Codebase Context (해당시)
|
|
125
|
+
| 문서 | 관련성 | 핵심 내용 |
|
|
126
|
+
|------|--------|----------|
|
|
127
|
+
| ... | ... | ... |
|
|
128
|
+
|
|
129
|
+
## 3. 핵심 요약
|
|
130
|
+
- ...
|
|
131
|
+
|
|
132
|
+
## 4. 다음 단계 권장사항
|
|
133
|
+
- 실제 코드 확인이 필요하면 context-collector Agent 사용을 권장합니다.
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
</output_format>
|
|
137
|
+
|
|
138
|
+
<constraints>
|
|
139
|
+
|
|
140
|
+
## 제약사항
|
|
141
|
+
|
|
142
|
+
- `.claude/context/` 디렉토리의 문서만 탐색합니다.
|
|
143
|
+
- 실제 소스 코드(`src/`, `lib/` 등)는 탐색하지 않습니다. 소스 코드 확인이 필요하면 context-collector Agent를 안내합니다.
|
|
144
|
+
- `.claude/skills/`나 `.claude/agents/` 문서는 탐색하지 않습니다. Skill/Agent 식별이 필요하면 context-collector Agent를 안내합니다.
|
|
145
|
+
|
|
146
|
+
</constraints>
|
|
@@ -40,7 +40,7 @@ jobs:
|
|
|
40
40
|
with:
|
|
41
41
|
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
|
|
42
42
|
show_full_output: true
|
|
43
|
-
claude_args: '--allowedTools "Bash(git:*),Bash(ls:*),Bash(mkdir:*),Read,Write,Edit,Glob,Grep"'
|
|
43
|
+
claude_args: '--model opus --allowedTools "Bash(git:*),Bash(ls:*),Bash(mkdir:*),Read,Write,Edit,Glob,Grep"'
|
|
44
44
|
prompt: |
|
|
45
45
|
# 에이전트 정의
|
|
46
46
|
${{ steps.read-skills.outputs.agent_def }}
|
|
@@ -63,13 +63,40 @@ jobs:
|
|
|
63
63
|
- 위 스킬 가이드에 명시된 정확한 형식 따르기
|
|
64
64
|
- 커밋하지 마세요. 파일 생성/수정만 하세요.
|
|
65
65
|
|
|
66
|
-
- name: Push context
|
|
66
|
+
- name: Push context to separate branch and create PR
|
|
67
67
|
run: |
|
|
68
68
|
git config user.name "github-actions[bot]"
|
|
69
69
|
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
70
70
|
git remote set-url origin "https://x-access-token:${GITHUB_TOKEN}@github.com/${{ github.repository }}.git"
|
|
71
|
+
|
|
71
72
|
git add .claude/context/
|
|
72
|
-
git diff --staged --quiet
|
|
73
|
-
|
|
73
|
+
if git diff --staged --quiet; then
|
|
74
|
+
echo "No context changes detected"
|
|
75
|
+
exit 0
|
|
76
|
+
fi
|
|
77
|
+
|
|
78
|
+
CONTEXT_BRANCH="${{ github.head_ref }}-generated-context"
|
|
79
|
+
git commit -m "docs: context 문서 자동 업데이트"
|
|
80
|
+
git push --force origin HEAD:refs/heads/${CONTEXT_BRANCH}
|
|
81
|
+
|
|
82
|
+
# 기존 PR이 있으면 스킵, 없으면 생성
|
|
83
|
+
EXISTING_PR=$(gh pr list --head "${CONTEXT_BRANCH}" --base "${{ github.head_ref }}" --json number --jq '.[0].number')
|
|
84
|
+
if [ -z "$EXISTING_PR" ]; then
|
|
85
|
+
gh pr create \
|
|
86
|
+
--head "${CONTEXT_BRANCH}" \
|
|
87
|
+
--base "${{ github.head_ref }}" \
|
|
88
|
+
--title "docs: context 문서 자동 업데이트" \
|
|
89
|
+
--body "$(cat <<'PREOF'
|
|
90
|
+
## Auto-generated Context
|
|
91
|
+
|
|
92
|
+
PR의 코드 변경을 분석하여 자동 생성된 context 문서입니다.
|
|
93
|
+
선택적으로 머지하여 반영할 수 있습니다.
|
|
94
|
+
|
|
95
|
+
> 이 PR은 re-sync 시 force push로 업데이트됩니다.
|
|
96
|
+
PREOF
|
|
97
|
+
)"
|
|
98
|
+
else
|
|
99
|
+
echo "PR #${EXISTING_PR} already exists, force-pushed updates"
|
|
100
|
+
fi
|
|
74
101
|
env:
|
|
75
102
|
GITHUB_TOKEN: ${{ github.token }}
|