@jjlabsio/claude-crew 0.1.23 → 0.1.25
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.
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"name": "claude-crew",
|
|
12
12
|
"source": "./",
|
|
13
13
|
"description": "오케스트레이터 + PM, 플래너, 개발, QA, 마케팅 에이전트 팀으로 단일 제품의 개발과 마케팅을 통합 관리",
|
|
14
|
-
"version": "0.1.
|
|
14
|
+
"version": "0.1.25",
|
|
15
15
|
"author": {
|
|
16
16
|
"name": "Jaejin Song",
|
|
17
17
|
"email": "wowlxx28@gmail.com"
|
|
@@ -28,5 +28,5 @@
|
|
|
28
28
|
"category": "workflow"
|
|
29
29
|
}
|
|
30
30
|
],
|
|
31
|
-
"version": "0.1.
|
|
31
|
+
"version": "0.1.25"
|
|
32
32
|
}
|
package/hud/index.mjs
CHANGED
|
@@ -664,18 +664,21 @@ async function main() {
|
|
|
664
664
|
|
|
665
665
|
const transcript = parseTranscript(stdin.transcript_path);
|
|
666
666
|
|
|
667
|
-
// In worktrees, merge
|
|
667
|
+
// In worktrees, merge data from the original project transcript.
|
|
668
668
|
// The worktree transcript only has events after EnterWorktree, so todos
|
|
669
|
-
// created before are missing. The original transcript has the
|
|
670
|
-
// If the worktree transcript
|
|
671
|
-
//
|
|
672
|
-
if (transcript.todos.length === 0) {
|
|
669
|
+
// and agents created before are missing. The original transcript has the
|
|
670
|
+
// full history. If the worktree transcript already has its own data
|
|
671
|
+
// (created after worktree entry), prefer the worktree's version.
|
|
672
|
+
if (transcript.todos.length === 0 || transcript.agents.length === 0) {
|
|
673
673
|
const originalPath = resolveOriginalTranscriptPath(stdin.transcript_path, cwd);
|
|
674
674
|
if (originalPath) {
|
|
675
675
|
const originalTranscript = parseTranscript(originalPath);
|
|
676
|
-
if (originalTranscript.todos.length > 0) {
|
|
676
|
+
if (transcript.todos.length === 0 && originalTranscript.todos.length > 0) {
|
|
677
677
|
transcript.todos = originalTranscript.todos;
|
|
678
678
|
}
|
|
679
|
+
if (transcript.agents.length === 0 && originalTranscript.agents.length > 0) {
|
|
680
|
+
transcript.agents = originalTranscript.agents;
|
|
681
|
+
}
|
|
679
682
|
}
|
|
680
683
|
}
|
|
681
684
|
|
package/package.json
CHANGED
package/skills/crew-dev/SKILL.md
CHANGED
|
@@ -16,15 +16,16 @@ description: contract.md를 입력으로 받아 Dev + CodeReviewer + QA 파이
|
|
|
16
16
|
|
|
17
17
|
## Multi-Provider 지원
|
|
18
18
|
|
|
19
|
-
에이전트별로 claude 또는 codex provider를 사용할 수 있다. `/crew-setup`에서 설정한
|
|
19
|
+
에이전트별로 claude 또는 codex provider를 사용할 수 있다. `/crew-setup`에서 설정한 config를 기반으로 디스패치한다.
|
|
20
20
|
|
|
21
21
|
### Provider 설정 해석
|
|
22
22
|
|
|
23
|
-
오케스트레이터는 Phase 1에서
|
|
23
|
+
오케스트레이터는 Phase 1에서 config 파일과 `data/provider-catalog.json`을 읽어 각 에이전트의 provider 설정을 결정한다.
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
1.
|
|
27
|
-
2.
|
|
25
|
+
**config 해석 우선순위 (cascading):**
|
|
26
|
+
1. `{projectRoot}/.crew/config.json`의 `providers.{role}` — 프로젝트 오버라이드 (최우선)
|
|
27
|
+
2. `~/.claude/crew/config.json`의 `providers.{role}` — 유저 레벨 기본값
|
|
28
|
+
3. `data/provider-catalog.json`의 `agent_defaults.{role}` — 하드코딩 폴백
|
|
28
29
|
|
|
29
30
|
**해석된 설정 예시:**
|
|
30
31
|
```json
|
|
@@ -108,8 +109,9 @@ Bash("codex exec --model {model} -c model_reasoning_effort=\"{reasoning}\" --dan
|
|
|
108
109
|
**1a. Provider 설정 로드**
|
|
109
110
|
|
|
110
111
|
1. `data/provider-catalog.json`을 읽어 `agent_defaults`를 로드한다.
|
|
111
|
-
2.
|
|
112
|
-
3.
|
|
112
|
+
2. `~/.claude/crew/config.json`이 있으면 `providers` 필드를 읽어 `agent_defaults`를 오버라이드한다 (유저 레벨).
|
|
113
|
+
3. `{projectRoot}/.crew/config.json`이 있으면 `providers` 필드를 읽어 다시 오버라이드한다 (프로젝트 레벨, 최우선).
|
|
114
|
+
4. codex provider가 하나라도 설정되어 있으면 `which codex`로 가용성을 확인한다.
|
|
113
115
|
- codex가 없으면 경고를 출력하고 해당 에이전트를 기본값(claude)으로 폴백한다.
|
|
114
116
|
|
|
115
117
|
해석된 설정을 Phase 2, 3에서 ��용한다.
|
|
@@ -35,11 +35,42 @@ claude-crew 플러그인의 초기 설정을 수행한다:
|
|
|
35
35
|
|
|
36
36
|
에이전트별로 어떤 provider(claude/codex)와 model을 사용할지 설정한다.
|
|
37
37
|
|
|
38
|
-
### 2a.
|
|
38
|
+
### 2a. 설치 스코프 판별
|
|
39
|
+
|
|
40
|
+
`~/.claude/plugins/installed_plugins.json`을 읽어 현재 프로젝트의 설치 스코프를 판별한다.
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
# 현재 프로젝트 루트 (워크트리 대응)
|
|
44
|
+
git rev-parse --show-toplevel
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**판별 로직:**
|
|
48
|
+
1. `installed_plugins.json`의 `plugins["claude-crew@claude-crew"]` 배열을 순회한다.
|
|
49
|
+
2. `projectPath`가 현재 프로젝트 루트와 일치하는 항목이 있으면 → **프로젝트 레벨 설치**
|
|
50
|
+
3. 없으면 `scope === "user"` 항목이 있는지 확인 → **유저 레벨 설치**
|
|
51
|
+
4. 둘 다 없으면 → dev 환경 (프로젝트 레벨로 취급)
|
|
52
|
+
|
|
53
|
+
**스코프별 config 경로:**
|
|
54
|
+
|
|
55
|
+
| 설치 스코프 | config 경로 | 적용 범위 |
|
|
56
|
+
|---|---|---|
|
|
57
|
+
| 프로젝트 레벨 | `{projectRoot}/.crew/config.json` | 해당 프로젝트만 |
|
|
58
|
+
| 유저 레벨 | `~/.claude/crew/config.json` | 모든 프로젝트 (기본값) |
|
|
59
|
+
|
|
60
|
+
판별된 스코프를 사용자에게 알린다:
|
|
61
|
+
```
|
|
62
|
+
설치 스코프: 유저 레벨 → 설정이 ~/.claude/crew/config.json에 저장됩니다 (모든 프로젝트 공유)
|
|
63
|
+
```
|
|
64
|
+
또는:
|
|
65
|
+
```
|
|
66
|
+
설치 스코프: 프로젝트 레벨 → 설정이 .crew/config.json에 저장됩니다 (이 프로젝트만)
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### 2b. 카탈로그 로드
|
|
39
70
|
|
|
40
71
|
`data/provider-catalog.json`을 읽어 사용 가능한 provider와 model 목록을 로드한다.
|
|
41
72
|
|
|
42
|
-
###
|
|
73
|
+
### 2c. Codex CLI 가용성 확인
|
|
43
74
|
|
|
44
75
|
```bash
|
|
45
76
|
which codex
|
|
@@ -48,9 +79,9 @@ which codex
|
|
|
48
79
|
- codex가 없으면: "Codex CLI가 설치되어 있지 않습니다. 모든 에이전트가 Claude를 사용합니다." 안내 후 Step 2를 스킵한다.
|
|
49
80
|
- codex가 있으면: 계속 진행한다.
|
|
50
81
|
|
|
51
|
-
###
|
|
82
|
+
### 2d. 기존 설정 표시
|
|
52
83
|
|
|
53
|
-
|
|
84
|
+
Step 2a에서 판별된 config 경로의 파일이 있으면 현재 설정을 표시한다. 없으면 기본값을 표시한다.
|
|
54
85
|
|
|
55
86
|
```
|
|
56
87
|
현재 에이전트 설정:
|
|
@@ -59,7 +90,7 @@ which codex
|
|
|
59
90
|
- qa: claude / sonnet (기본값)
|
|
60
91
|
```
|
|
61
92
|
|
|
62
|
-
###
|
|
93
|
+
### 2e. 설정할 에이전트 선택
|
|
63
94
|
|
|
64
95
|
사용자에게 설정을 변경할 에이전트를 선택하게 한다.
|
|
65
96
|
|
|
@@ -71,7 +102,7 @@ which codex
|
|
|
71
102
|
- 사용자가 엔터만 누르거나 "없음"/"스킵"을 입력하면 Step 2를 종료한다.
|
|
72
103
|
- 예시 입력: `dev`, `dev, code-reviewer`
|
|
73
104
|
|
|
74
|
-
###
|
|
105
|
+
### 2f. 선택된 에이전트별 설정
|
|
75
106
|
|
|
76
107
|
선택된 각 에이전트에 대해 순차적으로:
|
|
77
108
|
|
|
@@ -106,15 +137,18 @@ Model:
|
|
|
106
137
|
[6] GPT-5.4 Mini — 최저 비용
|
|
107
138
|
```
|
|
108
139
|
|
|
109
|
-
###
|
|
140
|
+
### 2g. 설정 저장
|
|
141
|
+
|
|
142
|
+
선택 결과를 Step 2a에서 판별된 config 경로에 저장한다.
|
|
110
143
|
|
|
111
|
-
|
|
144
|
+
- 프로젝트 레벨: `{projectRoot}/.crew/config.json`
|
|
145
|
+
- 유저 레벨: `~/.claude/crew/config.json`
|
|
112
146
|
|
|
113
147
|
**규칙:**
|
|
114
148
|
- 기본값과 동일한 설정은 저장하지 않는다 (기본값은 `agent_defaults` 참조).
|
|
115
149
|
- 기본값과 다른 설정만 `providers` 객체에 기록한다.
|
|
116
|
-
- 기존
|
|
117
|
-
- `.crew/`
|
|
150
|
+
- 기존 config 파일이 있으면 `providers` 필드만 머지한다 (다른 필드 보존).
|
|
151
|
+
- 디렉토리가 없으면 생성한다 (`.crew/` 또는 `~/.claude/crew/`).
|
|
118
152
|
|
|
119
153
|
**저장 형식:**
|
|
120
154
|
|
|
@@ -129,7 +163,7 @@ Model:
|
|
|
129
163
|
- claude provider일 때: `reasoning` 필드 생략
|
|
130
164
|
- codex provider일 때: 카탈로그의 `reasoning` 값 포함 (`null`이면 생략)
|
|
131
165
|
|
|
132
|
-
###
|
|
166
|
+
### 2h. 확인 메시지
|
|
133
167
|
|
|
134
168
|
```
|
|
135
169
|
✓ Provider 설정 완료:
|
|
@@ -137,5 +171,9 @@ Model:
|
|
|
137
171
|
- code-reviewer: claude / opus (기본값)
|
|
138
172
|
- qa: claude / sonnet (기본값)
|
|
139
173
|
|
|
140
|
-
설정 파일:
|
|
174
|
+
설정 파일: ~/.claude/crew/config.json (유저 레벨 — 모든 프로젝트 공유)
|
|
175
|
+
```
|
|
176
|
+
또는:
|
|
177
|
+
```
|
|
178
|
+
설정 파일: .crew/config.json (프로젝트 레벨)
|
|
141
179
|
```
|