jun-claude-code 0.2.4 → 0.3.0
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/package.json +1 -1
- package/templates/global/agents/context-collector.md +21 -7
- package/templates/global/hooks/dangerous-command-blocker.sh +4 -2
- package/templates/global/hooks/skill-forced-subagent.sh +4 -2
- package/templates/global/hooks/skill-forced.sh +4 -2
- package/templates/global/hooks/workflow-enforced.sh +8 -4
- package/templates/project/agents/context-generator.md +35 -10
- package/templates/project/skills/ContextGeneration/SKILL.md +82 -6
- package/templates/project/workflows/context-gen.yml +12 -5
package/package.json
CHANGED
|
@@ -28,19 +28,29 @@ color: blue
|
|
|
28
28
|
요청을 분석하여 코드 탐색 전략을 결정합니다.
|
|
29
29
|
|
|
30
30
|
- 요청의 핵심 키워드와 도메인 영역을 식별
|
|
31
|
-
- 탐색 대상: Skill/Agent 문서 → 소스 코드 순서로 진행
|
|
31
|
+
- 탐색 대상: context 문서 → Skill/Agent 문서 → 소스 코드 순서로 진행
|
|
32
32
|
- 탐색 범위를 판단하여 효율적으로 수집
|
|
33
33
|
|
|
34
|
-
### Step 2:
|
|
34
|
+
### Step 2: .claude/context/ 사전 확인
|
|
35
|
+
|
|
36
|
+
프로젝트 맥락을 먼저 파악합니다.
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
- .claude/context/ 하위 INDEX.md들을 읽어 프로젝트 전체 맥락 파악
|
|
40
|
+
- 요청과 관련된 상세 문서(codebase/, business/, architecture/)가 있으면 확인
|
|
41
|
+
- 이미 문서화된 내용은 소스 코드 탐색 범위에서 제외하여 효율화
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Step 3: Skill 및 Agent 탐색
|
|
35
45
|
|
|
36
46
|
```
|
|
37
47
|
- .claude/skills/ 에서 작업에 필요한 Skill 확인
|
|
38
48
|
- .claude/agents/ 에서 관련 Agent 확인
|
|
39
49
|
```
|
|
40
50
|
|
|
41
|
-
### Step
|
|
51
|
+
### Step 4: 소스 코드 DEEP 탐색
|
|
42
52
|
|
|
43
|
-
|
|
53
|
+
context 문서에서 파악한 맥락을 기반으로 더 정확하게 탐색합니다.
|
|
44
54
|
|
|
45
55
|
```
|
|
46
56
|
- 유사한 기존 구현 찾기 (Grep, Glob 활용)
|
|
@@ -51,7 +61,7 @@ color: blue
|
|
|
51
61
|
- import/export 관계 추적
|
|
52
62
|
```
|
|
53
63
|
|
|
54
|
-
### Step
|
|
64
|
+
### Step 5: Context 요약 출력
|
|
55
65
|
|
|
56
66
|
수집한 모든 정보를 output_format에 맞춰 정리합니다.
|
|
57
67
|
|
|
@@ -68,6 +78,10 @@ color: blue
|
|
|
68
78
|
- **탐색 범위**: (어떤 영역을 탐색했는지)
|
|
69
79
|
- **판단 근거**: (왜 이 범위를 탐색했는지)
|
|
70
80
|
|
|
81
|
+
## 0. 프로젝트 맥락 (context 문서 기반)
|
|
82
|
+
- **참조한 문서**: (확인한 .claude/context/ 문서 목록)
|
|
83
|
+
- **핵심 맥락**: (프로젝트 배경, 관련 도메인/모듈 정보)
|
|
84
|
+
|
|
71
85
|
## 1. 소스 코드 탐색 결과
|
|
72
86
|
| 파일 | 확인 내용 | 핵심 발견 |
|
|
73
87
|
|------|----------|----------|
|
|
@@ -97,7 +111,7 @@ color: blue
|
|
|
97
111
|
|
|
98
112
|
## 제약사항
|
|
99
113
|
|
|
100
|
-
- `.claude/context/`
|
|
101
|
-
-
|
|
114
|
+
- `.claude/context/` 문서를 사전 참조하여 프로젝트 맥락을 파악합니다.
|
|
115
|
+
- 상세한 프로젝트 배경 정보가 필요하면 project-context-collector Agent를 추가로 안내합니다.
|
|
102
116
|
|
|
103
117
|
</constraints>
|
|
@@ -6,8 +6,10 @@
|
|
|
6
6
|
|
|
7
7
|
# Dedup: project 우선, global은 project 버전 존재 시 양보
|
|
8
8
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
if [ -f "$SCRIPT_DIR/_dedup.sh" ]; then
|
|
10
|
+
source "$SCRIPT_DIR/_dedup.sh"
|
|
11
|
+
_hook_dedup_check "${BASH_SOURCE[0]}" || exit 0
|
|
12
|
+
fi
|
|
11
13
|
|
|
12
14
|
INPUT=$(cat)
|
|
13
15
|
|
|
@@ -10,8 +10,10 @@ GLOBAL_CLAUDE_DIR="$HOME/.claude"
|
|
|
10
10
|
PROJECT_CLAUDE_DIR="$(pwd)/.claude"
|
|
11
11
|
|
|
12
12
|
# Dedup: project 우선, global은 project 버전 존재 시 양보
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
if [ -f "$SCRIPT_DIR/_dedup.sh" ]; then
|
|
14
|
+
source "$SCRIPT_DIR/_dedup.sh"
|
|
15
|
+
_hook_dedup_check "${BASH_SOURCE[0]}" || exit 0
|
|
16
|
+
fi
|
|
15
17
|
|
|
16
18
|
echo "✅ [Hook] Subagent Skill 평가 프로토콜 실행됨"
|
|
17
19
|
|
|
@@ -10,8 +10,10 @@ GLOBAL_CLAUDE_DIR="$HOME/.claude"
|
|
|
10
10
|
PROJECT_CLAUDE_DIR="$(pwd)/.claude"
|
|
11
11
|
|
|
12
12
|
# Dedup: project 우선, global은 project 버전 존재 시 양보
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
if [ -f "$SCRIPT_DIR/_dedup.sh" ]; then
|
|
14
|
+
source "$SCRIPT_DIR/_dedup.sh"
|
|
15
|
+
_hook_dedup_check "${BASH_SOURCE[0]}" || exit 0
|
|
16
|
+
fi
|
|
15
17
|
|
|
16
18
|
echo "✅ [Hook] Skill/Agent 평가 프로토콜 실행됨"
|
|
17
19
|
|
|
@@ -10,8 +10,10 @@ GLOBAL_CLAUDE_DIR="$HOME/.claude"
|
|
|
10
10
|
PROJECT_CLAUDE_DIR="$(pwd)/.claude"
|
|
11
11
|
|
|
12
12
|
# Dedup: project 우선, global은 project 버전 존재 시 양보
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
if [ -f "$SCRIPT_DIR/_dedup.sh" ]; then
|
|
14
|
+
source "$SCRIPT_DIR/_dedup.sh"
|
|
15
|
+
_hook_dedup_check "${BASH_SOURCE[0]}" || exit 0
|
|
16
|
+
fi
|
|
15
17
|
|
|
16
18
|
echo "✅ [Hook] 워크플로우 순서 강제 프로토콜 실행됨"
|
|
17
19
|
|
|
@@ -39,9 +41,11 @@ Plan 파일의 Context 섹션에 위 내용을 명시하여 작업 목적이 희
|
|
|
39
41
|
### Step 1.2: Context 수집
|
|
40
42
|
|
|
41
43
|
- [ ] EnterPlanMode 진입 (복잡한 작업인 경우)
|
|
42
|
-
- [ ]
|
|
44
|
+
- [ ] **병렬 Context 수집 (정확도 향상)**:
|
|
45
|
+
- `project-context-collector` → .claude/context/ 문서에서 프로젝트 배경 수집
|
|
46
|
+
- `context-collector` → 소스 코드 + .claude/context/ 에서 패턴/구현 방식 수집
|
|
47
|
+
- 두 Agent를 병렬로 호출하여 작업 속도와 정확도를 높인다
|
|
43
48
|
- [ ] 필요한 Skill 활성화 (.claude/skills/)
|
|
44
|
-
- [ ] 기존 코드 탐색 (Explore Agent 또는 직접 탐색)
|
|
45
49
|
|
|
46
50
|
### Step 1.3: TaskList 생성
|
|
47
51
|
|
|
@@ -8,7 +8,7 @@ color: green
|
|
|
8
8
|
|
|
9
9
|
# Context Generator Agent
|
|
10
10
|
|
|
11
|
-
PR의 변경 내용을 분석하여 `.claude/context/` 하위에 codebase/business 문서를 자동 생성하고 업데이트합니다.
|
|
11
|
+
PR의 변경 내용을 분석하여 `.claude/context/` 하위에 codebase/business/architecture 문서를 자동 생성하고 업데이트합니다.
|
|
12
12
|
|
|
13
13
|
## 실행 조건
|
|
14
14
|
|
|
@@ -17,7 +17,14 @@ PR의 변경 내용을 분석하여 `.claude/context/` 하위에 codebase/busine
|
|
|
17
17
|
|
|
18
18
|
## 프로세스
|
|
19
19
|
|
|
20
|
-
### 1.
|
|
20
|
+
### 1. PR 정보 분석
|
|
21
|
+
|
|
22
|
+
PR title/body에서 변경의 의도와 기대효과를 파악합니다.
|
|
23
|
+
- PR 제목에서 핵심 변경 의도 추출
|
|
24
|
+
- PR 본문에서 배경, 기대효과, 관련 이슈 파악
|
|
25
|
+
- 이후 단계에서 context 문서 작성 시 반영
|
|
26
|
+
|
|
27
|
+
### 2. Diff 수집
|
|
21
28
|
|
|
22
29
|
```bash
|
|
23
30
|
git diff HEAD~1 --name-only
|
|
@@ -25,34 +32,52 @@ git diff HEAD~1 --name-only
|
|
|
25
32
|
|
|
26
33
|
변경된 파일 목록을 수집합니다.
|
|
27
34
|
|
|
28
|
-
###
|
|
35
|
+
### 3. 모듈 매핑
|
|
29
36
|
|
|
30
|
-
변경된 파일을
|
|
37
|
+
변경된 파일을 모듈/토픽 단위로 그룹화합니다.
|
|
31
38
|
- `src/cli.ts` → `cli` 모듈
|
|
32
39
|
- `src/copy.ts` → `copy-logic` 모듈
|
|
33
40
|
- `.claude/agents/*.md` → `agents` 모듈
|
|
41
|
+
- `Dockerfile` → `deployment` 토픽
|
|
42
|
+
- `.github/workflows/*.yml` → `ci-cd` 토픽
|
|
34
43
|
|
|
35
|
-
###
|
|
44
|
+
### 4. 기존 Context 확인
|
|
36
45
|
|
|
37
|
-
`.claude/context/codebase
|
|
46
|
+
`.claude/context/codebase/`, `.claude/context/business/`, `.claude/context/architecture/`에서 기존 문서를 확인합니다.
|
|
38
47
|
- 기존 문서가 있으면 → 업데이트
|
|
39
48
|
- 기존 문서가 없으면 → 새로 생성
|
|
40
49
|
|
|
41
|
-
###
|
|
50
|
+
### 5. Codebase Context 생성
|
|
42
51
|
|
|
43
52
|
[ContextGeneration Skill](../../skills/ContextGeneration/SKILL.md)의 Codebase 규칙에 따라:
|
|
44
|
-
- 모듈별 `.md` 파일 생성/업데이트
|
|
53
|
+
- PR 의도를 반영하여 모듈별 `.md` 파일 생성/업데이트
|
|
45
54
|
- 파일 경로와 함수명만 참조 (원본 코드 포함 금지)
|
|
46
55
|
- `codebase/INDEX.md` 업데이트
|
|
47
56
|
|
|
48
|
-
###
|
|
57
|
+
### 6. Business Context 생성
|
|
49
58
|
|
|
50
59
|
[ContextGeneration Skill](../../skills/ContextGeneration/SKILL.md)의 Business 규칙에 따라:
|
|
51
60
|
- 기술 용어를 비즈니스 관점으로 변환
|
|
61
|
+
- PR 기대효과를 "사용자 관점"에 반영
|
|
52
62
|
- 도메인별 `.md` 파일 생성/업데이트
|
|
53
63
|
- `business/INDEX.md` 업데이트
|
|
54
64
|
|
|
55
|
-
###
|
|
65
|
+
### 7. Architecture Context 생성
|
|
66
|
+
|
|
67
|
+
인프라/아키텍처 변경이 있는 경우에만 생성합니다.
|
|
68
|
+
|
|
69
|
+
**생성 조건**:
|
|
70
|
+
- `Dockerfile`, `docker-compose.yml` → `deployment.md`
|
|
71
|
+
- `.github/workflows/*.yml` → `ci-cd.md`
|
|
72
|
+
- 폴더 구조 대규모 변경 → `layer-structure.md`
|
|
73
|
+
- DB migration, schema 파일 → `database-schema.md`
|
|
74
|
+
- nginx, terraform, k8s 설정 → 해당 토픽
|
|
75
|
+
|
|
76
|
+
[ContextGeneration Skill](../../skills/ContextGeneration/SKILL.md)의 Architecture 규칙에 따라:
|
|
77
|
+
- 토픽별 `.md` 파일 생성/업데이트
|
|
78
|
+
- `architecture/INDEX.md` 업데이트
|
|
79
|
+
|
|
80
|
+
### 8. 반영
|
|
56
81
|
|
|
57
82
|
- 생성된 context 문서는 `{브랜치명}-generated-context` 브랜치에 push됩니다.
|
|
58
83
|
- 원본 PR 브랜치로 별도 PR이 생성되어 선택적으로 머지할 수 있습니다.
|
|
@@ -13,12 +13,15 @@ PR 변경 내용을 분석하여 `.claude/context/` 하위에 codebase/business
|
|
|
13
13
|
|
|
14
14
|
```
|
|
15
15
|
.claude/context/
|
|
16
|
-
├── codebase/
|
|
17
|
-
│ ├── INDEX.md
|
|
18
|
-
│ └── <module-name>.md
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
16
|
+
├── codebase/ # 모듈별 구현 참조
|
|
17
|
+
│ ├── INDEX.md
|
|
18
|
+
│ └── <module-name>.md
|
|
19
|
+
├── business/ # 비즈니스 레벨 요약
|
|
20
|
+
│ ├── INDEX.md
|
|
21
|
+
│ └── <domain-area>.md
|
|
22
|
+
└── architecture/ # 인프라 + 코드 아키텍처
|
|
23
|
+
├── INDEX.md
|
|
24
|
+
└── <topic>.md
|
|
22
25
|
```
|
|
23
26
|
|
|
24
27
|
<rules>
|
|
@@ -106,6 +109,62 @@ keywords: [비즈니스, 키워드]
|
|
|
106
109
|
- `mergeSettingsJson()` -> "기존 설정을 보존하면서 새 설정 적용"
|
|
107
110
|
- `copyClaudeFiles()` -> "템플릿 설정을 사용자 환경에 배포"
|
|
108
111
|
|
|
112
|
+
## Architecture Context 규칙
|
|
113
|
+
|
|
114
|
+
### 파일명
|
|
115
|
+
- **kebab-case** 사용 (예: `deployment.md`, `database-schema.md`, `layer-structure.md`)
|
|
116
|
+
- 아키텍처 토픽 단위로 분리
|
|
117
|
+
|
|
118
|
+
### 분류
|
|
119
|
+
|
|
120
|
+
| 분류 | 대상 | 파일명 예시 |
|
|
121
|
+
|------|------|-----------|
|
|
122
|
+
| 인프라 | 서버 배포, CI/CD, 클라우드 구성, 모니터링 | `deployment.md`, `ci-cd.md` |
|
|
123
|
+
| 코드 아키텍처 | 레이어 구조, 디자인 패턴, 모듈 관계 | `layer-structure.md`, `module-dependencies.md` |
|
|
124
|
+
| 데이터 | DB 스키마, 캐시 전략, 마이그레이션 | `database-schema.md`, `cache-strategy.md` |
|
|
125
|
+
|
|
126
|
+
### 필수 섹션
|
|
127
|
+
|
|
128
|
+
```markdown
|
|
129
|
+
---
|
|
130
|
+
name: <토픽명>
|
|
131
|
+
description: <한 줄 설명>
|
|
132
|
+
keywords: [관련, 키워드]
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
# <토픽명>
|
|
136
|
+
|
|
137
|
+
<2-3문장 개요>
|
|
138
|
+
|
|
139
|
+
## 구성 요소
|
|
140
|
+
|
|
141
|
+
| 요소 | 역할 | 설정 파일/경로 |
|
|
142
|
+
|------|------|--------------|
|
|
143
|
+
| ... | ... | ... |
|
|
144
|
+
|
|
145
|
+
## 다이어그램 (선택)
|
|
146
|
+
|
|
147
|
+
<텍스트 기반 다이어그램>
|
|
148
|
+
|
|
149
|
+
## 관련 Context
|
|
150
|
+
|
|
151
|
+
- [<모듈명>](../codebase/<module>.md)
|
|
152
|
+
- [<도메인명>](../business/<domain>.md)
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
## PR 내용 활용 규칙
|
|
156
|
+
|
|
157
|
+
Context 생성 시 PR 정보를 다음과 같이 활용합니다:
|
|
158
|
+
|
|
159
|
+
| PR 정보 | 활용 방법 |
|
|
160
|
+
|---------|----------|
|
|
161
|
+
| PR 제목 | 변경의 핵심 의도 파악 |
|
|
162
|
+
| PR 본문 | 기대효과, 배경, 관련 이슈 파악 |
|
|
163
|
+
| Diff | 실제 코드 변경 내용 분석 |
|
|
164
|
+
|
|
165
|
+
- PR 의도를 반영하여 context 문서의 "개요"와 "핵심 흐름"을 작성한다
|
|
166
|
+
- PR 본문의 기대효과를 Business Context의 "사용자 관점"에 반영한다
|
|
167
|
+
|
|
109
168
|
</rules>
|
|
110
169
|
|
|
111
170
|
## INDEX.md 작성 규칙
|
|
@@ -148,6 +207,23 @@ description: 비즈니스 도메인 참조 목록
|
|
|
148
207
|
| 설정 관리 | 사용자 설정 배포 및 관리 | [configuration-management.md](./configuration-management.md) |
|
|
149
208
|
```
|
|
150
209
|
|
|
210
|
+
### architecture/INDEX.md
|
|
211
|
+
|
|
212
|
+
```markdown
|
|
213
|
+
---
|
|
214
|
+
name: Architecture Index
|
|
215
|
+
description: 인프라/코드 아키텍처 참조 목록
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
# Architecture Context Index
|
|
219
|
+
|
|
220
|
+
## 토픽 목록
|
|
221
|
+
|
|
222
|
+
| 토픽 | 분류 | 설명 | 문서 |
|
|
223
|
+
|------|------|------|------|
|
|
224
|
+
| 배포 구성 | 인프라 | 서버 배포 방식 | [deployment.md](./deployment.md) |
|
|
225
|
+
```
|
|
226
|
+
|
|
151
227
|
## 증분 업데이트 원칙
|
|
152
228
|
|
|
153
229
|
<checklist>
|
|
@@ -42,6 +42,11 @@ jobs:
|
|
|
42
42
|
show_full_output: true
|
|
43
43
|
claude_args: '--model opus --allowedTools "Bash(git:*),Bash(ls:*),Bash(mkdir:*),Read,Write,Edit,Glob,Grep"'
|
|
44
44
|
prompt: |
|
|
45
|
+
# PR 정보
|
|
46
|
+
**제목**: ${{ github.event.pull_request.title }}
|
|
47
|
+
**본문**:
|
|
48
|
+
${{ github.event.pull_request.body }}
|
|
49
|
+
|
|
45
50
|
# 에이전트 정의
|
|
46
51
|
${{ steps.read-skills.outputs.agent_def }}
|
|
47
52
|
|
|
@@ -49,13 +54,15 @@ jobs:
|
|
|
49
54
|
${{ steps.read-skills.outputs.skill_guide }}
|
|
50
55
|
|
|
51
56
|
# 작업 지시
|
|
52
|
-
PR diff를 분석하고 .claude/context/ 아래에 컨텍스트 문서를 생성/업데이트하세요.
|
|
57
|
+
PR 정보와 diff를 분석하고 .claude/context/ 아래에 컨텍스트 문서를 생성/업데이트하세요.
|
|
53
58
|
|
|
54
59
|
단계:
|
|
55
|
-
1.
|
|
56
|
-
2.
|
|
57
|
-
3.
|
|
58
|
-
4.
|
|
60
|
+
1. PR 제목과 본문에서 변경 의도와 기대효과를 파악
|
|
61
|
+
2. `git diff HEAD~1 --name-only`로 변경된 파일 목록 가져오기
|
|
62
|
+
3. 변경된 코드의 기능 단위별로 .claude/context/codebase/<module>.md 생성/업데이트
|
|
63
|
+
4. 영향받는 비즈니스 도메인에 대해 .claude/context/business/<domain>.md 생성/업데이트
|
|
64
|
+
5. 인프라/아키텍처 변경이 있으면 .claude/context/architecture/<topic>.md 생성/업데이트
|
|
65
|
+
6. 각 디렉토리의 INDEX.md 파일 업데이트
|
|
59
66
|
|
|
60
67
|
중요사항:
|
|
61
68
|
- 컨텍스트 문서에 소스 코드를 포함하지 말고, 파일 경로와 함수 이름만 포함하세요
|