@jjlabsio/claude-crew 0.1.32 → 0.1.34
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/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +8 -7
- package/README.md +22 -0
- package/agents/code-reviewer.md +7 -0
- package/agents/dev.md +7 -0
- package/agents/explorer.md +7 -0
- package/agents/plan-evaluator.md +7 -0
- package/agents/planner.md +7 -0
- package/agents/pm.md +7 -0
- package/agents/qa.md +8 -1
- package/agents/researcher.md +7 -0
- package/agents/techlead.md +7 -0
- package/data/agent-contracts.json +350 -0
- package/data/agent-instructions/code-reviewer.md +47 -0
- package/data/agent-instructions/dev.md +48 -0
- package/data/agent-instructions/explorer.md +14 -0
- package/data/agent-instructions/plan-evaluator.md +68 -0
- package/data/agent-instructions/planner.md +73 -0
- package/data/agent-instructions/pm.md +47 -0
- package/data/agent-instructions/qa.md +65 -0
- package/data/agent-instructions/researcher.md +15 -0
- package/data/agent-instructions/techlead.md +66 -0
- package/package.json +8 -3
- package/scripts/crew-agent-runner.mjs +323 -0
- package/scripts/lib/build.mjs +213 -0
- package/scripts/lib/cli.mjs +30 -0
- package/scripts/lib/config.mjs +33 -0
- package/scripts/lib/contracts.mjs +146 -0
- package/scripts/lib/dispatch.mjs +241 -0
- package/scripts/lib/installHooks.mjs +136 -0
- package/scripts/lib/pluginRoot.mjs +10 -0
- package/scripts/lib/render.mjs +110 -0
- package/scripts/lib/renderFollowup.mjs +51 -0
- package/scripts/lib/resolve.mjs +72 -0
- package/scripts/lib/validate.mjs +100 -0
- package/skills/crew-agent-runner/SKILL.md +115 -0
- package/skills/crew-dev/SKILL.md +162 -780
- package/skills/crew-interview/SKILL.md +135 -44
- package/skills/crew-plan/SKILL.md +217 -414
- package/skills/crew-setup/SKILL.md +32 -19
|
@@ -34,26 +34,47 @@ description: 유저 요구사항을 인터뷰하여 개발 가능한 수준의 s
|
|
|
34
34
|
|
|
35
35
|
## 실행 순서
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
에이전트 실행은 모두 중앙 `crew-agent-runner` 스킬의 dispatch 절차로 실행한다. 이 문서는 어떤 런타임을 어떻게 호출하는지가 아니라, 각 Phase가 어떤 역할에게 어떤 입력을 주고 어떤 결과를 받아야 하는지만 정의한다.
|
|
38
38
|
|
|
39
|
-
|
|
40
|
-
- PM이 Codex provider이면 직접 질문하거나 `.crew/` 파일을 쓰지 않는다. 질문이 필요하면 `blocked_on_user`, 추가 탐색이 필요하면 `needs_agent`, 최종 spec은 `complete.artifact`로 반환한다.
|
|
41
|
-
- Codex PM의 `artifact`는 오케스트레이터가 `.crew/plans/{task-id}/spec.md`로 저장한다.
|
|
39
|
+
### Phase 1 — 초기화
|
|
42
40
|
|
|
43
|
-
|
|
41
|
+
중앙 `crew-agent-runner` 스킬의 dispatch 절차로 실행한다.
|
|
44
42
|
|
|
45
|
-
|
|
43
|
+
role: pm, Explorer
|
|
44
|
+
|
|
45
|
+
inputs:
|
|
46
|
+
- 유저 원본 요청
|
|
47
|
+
- 현재 프로젝트 루트
|
|
48
|
+
- 기존 `.crew/plans/` 상태
|
|
49
|
+
|
|
50
|
+
output:
|
|
51
|
+
- `.crew/plans/{task-id}/brief.md`
|
|
52
|
+
- Explorer 프로젝트 구조 요약
|
|
53
|
+
- 최초 요구사항 체크리스트 평가
|
|
54
|
+
|
|
55
|
+
role instructions:
|
|
56
|
+
- PM은 요청 내용에서 키워드를 추출하여 kebab-case task-id를 생성한다.
|
|
57
|
+
- 오케스트레이터가 유저 원본 요청을 `.crew/plans/{task-id}/brief.md`에 저장한다.
|
|
58
|
+
- Explorer는 프로젝트 구조를 병렬로 파악하고, 결과를 파일로 저장하지 않고 인터뷰 컨텍스트로만 제공한다.
|
|
59
|
+
- PM은 유저 요청과 Explorer 결과를 기반으로 체크리스트 5개 항목을 첫 평가한다.
|
|
60
|
+
|
|
61
|
+
success gate:
|
|
62
|
+
- `brief.md`가 생성되었다.
|
|
63
|
+
- Explorer 결과에 기술 스택, 주요 모듈 구조, 관련 기존 코드/기능 유무, 기존 패턴이 포함되었다.
|
|
64
|
+
- 체크리스트 각 항목이 YES / NO / 해당없음 중 하나로 판정되었다.
|
|
65
|
+
|
|
66
|
+
failure handling:
|
|
67
|
+
- task-id 또는 `brief.md`를 만들 수 없으면 실패 사유와 필요한 사용자 입력을 반환한다.
|
|
68
|
+
- Explorer가 충분한 구조 정보를 제공하지 못하면 누락 영역을 명시하고 추가 Explorer 탐색을 요청한다.
|
|
69
|
+
|
|
70
|
+
**1b. task-id 생성 + brief.md 작성**
|
|
46
71
|
|
|
47
72
|
유저 요청 원문을 `.crew/plans/{task-id}/brief.md`에 저장한다.
|
|
48
73
|
task-id는 요청 내용에서 키워드를 추출하여 kebab-case로 생성한다.
|
|
49
74
|
|
|
50
|
-
**
|
|
75
|
+
**1c. Explorer 호출 (병렬)**
|
|
51
76
|
|
|
52
|
-
Explorer
|
|
53
|
-
|
|
54
|
-
```
|
|
55
|
-
runAgent(role="explorer", description="프로젝트 구조 탐색", prompt="...")
|
|
56
|
-
```
|
|
77
|
+
Explorer는 중앙 runner를 통해 병렬 실행되어 프로젝트 구조를 파악한다.
|
|
57
78
|
|
|
58
79
|
탐색 목적:
|
|
59
80
|
- 프로젝트 기술 스택, 주요 모듈 구조
|
|
@@ -62,7 +83,7 @@ runAgent(role="explorer", description="프로젝트 구조 탐색", prompt="..."
|
|
|
62
83
|
|
|
63
84
|
탐색 결과는 오케스트레이터가 내부적으로 보유한다. 파일로 저장하지 않는다.
|
|
64
85
|
|
|
65
|
-
**
|
|
86
|
+
**1d. 체크리스트 첫 평가**
|
|
66
87
|
|
|
67
88
|
유저 요청 + Explorer 결과를 기반으로 체크리스트 5개 항목을 첫 평가한다.
|
|
68
89
|
|
|
@@ -85,6 +106,39 @@ runAgent(role="explorer", description="프로젝트 구조 탐색", prompt="..."
|
|
|
85
106
|
|
|
86
107
|
### Phase 2 — 인터뷰 루프
|
|
87
108
|
|
|
109
|
+
중앙 `crew-agent-runner` 스킬의 dispatch 절차로 실행한다.
|
|
110
|
+
|
|
111
|
+
role: pm, Explorer, Researcher
|
|
112
|
+
|
|
113
|
+
inputs:
|
|
114
|
+
- `.crew/plans/{task-id}/brief.md`
|
|
115
|
+
- Phase 1 Explorer 결과
|
|
116
|
+
- 현재까지 수집된 사용자 답변
|
|
117
|
+
- 필요 시 추가 Explorer/Researcher 결과
|
|
118
|
+
|
|
119
|
+
output:
|
|
120
|
+
- 체크리스트 YES / NO / 해당없음 상태
|
|
121
|
+
- 인터뷰 결정 사항
|
|
122
|
+
- 필요 시 큰 기획 갭 에스컬레이션
|
|
123
|
+
|
|
124
|
+
role instructions:
|
|
125
|
+
- PM은 체크리스트의 NO 항목 중 가장 선행되어야 할 항목을 선택한다.
|
|
126
|
+
- PM은 한 번에 질문 하나만 사용자에게 제시한다.
|
|
127
|
+
- PM은 객관식 2-3개를 우선 제시하고, 직접 입력을 보조 선택지로 둔다.
|
|
128
|
+
- Explorer는 사용자의 답변이 특정 코드 영역을 지칭할 때 심화 탐색을 수행한다.
|
|
129
|
+
- Researcher는 외부 정보가 요구사항 결정에 필요할 때만 조사 결과를 제공한다.
|
|
130
|
+
- PM은 답변 후 체크리스트를 재평가하고, 전부 YES 또는 해당없음이면 Phase 3으로 이동한다.
|
|
131
|
+
|
|
132
|
+
success gate:
|
|
133
|
+
- 모든 체크리스트 항목이 YES 또는 해당없음이거나, 조기 종료/하드캡 조건이 명시적으로 기록되었다.
|
|
134
|
+
- 질문과 답변이 스코프, 유저 플로우, UI/콘텐츠, 비즈니스 규칙, 수용 기준 중 어떤 항목을 해소하는지 추적 가능하다.
|
|
135
|
+
- 큰 기획 갭이 있으면 인터뷰를 중단하고 별도 기획 프롬프트를 제공했다.
|
|
136
|
+
|
|
137
|
+
failure handling:
|
|
138
|
+
- 사용자가 답변을 보류하면 남은 NO 항목과 현재 상태로 진행할 때의 위험을 설명하고 진행 여부를 묻는다.
|
|
139
|
+
- 추가 탐색이 실패하면 해당 코드/조사 영역을 미확인 항목으로 기록하고 사용자에게 대체 결정을 요청한다.
|
|
140
|
+
- 라운드 제한에 도달하면 남은 NO 항목을 경고로 유지한 채 Phase 3으로 이동한다.
|
|
141
|
+
|
|
88
142
|
매 턴 아래 사이클을 반복한다:
|
|
89
143
|
|
|
90
144
|
**2a. 체크리스트 평가**
|
|
@@ -129,9 +183,7 @@ NO 항목 중 **가장 선행되어야 할 것**을 선택한다.
|
|
|
129
183
|
유저 답변에서 언급된 구체적 영역의 코드를 추가 탐색해야 하면 Explorer를 병렬 호출한다.
|
|
130
184
|
예: 유저가 "기존 결제 로직에 추가"라고 답하면 결제 관련 코드를 탐색.
|
|
131
185
|
|
|
132
|
-
|
|
133
|
-
runAgent(role="explorer", description="결제 관련 코드 탐색", prompt="...")
|
|
134
|
-
```
|
|
186
|
+
외부 시장/정책/문서 정보가 요구사항 결정에 필요하면 Researcher를 실행하고, 결과를 다음 질문이나 체크리스트 재평가에 반영한다.
|
|
135
187
|
|
|
136
188
|
**2e. 유저 답변 수신 + 큰 기획 갭 감지**
|
|
137
189
|
|
|
@@ -182,6 +234,35 @@ runAgent(role="explorer", description="결제 관련 코드 탐색", prompt="...
|
|
|
182
234
|
|
|
183
235
|
### Phase 3 — Simplifier
|
|
184
236
|
|
|
237
|
+
중앙 `crew-agent-runner` 스킬의 dispatch 절차로 실행한다.
|
|
238
|
+
|
|
239
|
+
role: pm
|
|
240
|
+
|
|
241
|
+
inputs:
|
|
242
|
+
- Phase 2 인터뷰 결정 사항
|
|
243
|
+
- 체크리스트 최종 상태
|
|
244
|
+
- 조기 종료/하드캡 경고가 있으면 해당 목록
|
|
245
|
+
|
|
246
|
+
output:
|
|
247
|
+
- 확정 v1 스코프
|
|
248
|
+
- v2 이후로 미룰 항목 목록
|
|
249
|
+
- 사용자 스코프 결정
|
|
250
|
+
|
|
251
|
+
role instructions:
|
|
252
|
+
- PM은 지금까지 확정된 전체 스코프를 정리하여 사용자에게 보여준다.
|
|
253
|
+
- PM은 각 스코프 항목이 v1에 꼭 필요한지 판단한다.
|
|
254
|
+
- 빼도 되는 항목이 있으면 이유와 함께 사용자에게 선택지를 제시한다.
|
|
255
|
+
- 사용자의 결정을 반영하여 최종 스코프를 확정한다.
|
|
256
|
+
|
|
257
|
+
success gate:
|
|
258
|
+
- v1에 포함할 항목과 제외할 항목이 명확히 나뉘었다.
|
|
259
|
+
- 사용자가 Simplifier 제안에 대해 유지/연기/부분 연기 중 하나를 선택했다.
|
|
260
|
+
- Phase 4에서 spec.md로 결정화할 수 있는 수준의 스코프가 확보되었다.
|
|
261
|
+
|
|
262
|
+
failure handling:
|
|
263
|
+
- 사용자가 스코프 결정을 보류하면 보류 항목을 미해소 항목으로 기록하고 현재 상태로 spec 작성을 진행할지 묻는다.
|
|
264
|
+
- v1 스코프가 하루 작업을 초과하면 분리를 권고하고, 사용자의 진행 결정을 받는다.
|
|
265
|
+
|
|
185
266
|
체크리스트 전부 YES (또는 조기 종료/하드캡) 후 실행한다.
|
|
186
267
|
|
|
187
268
|
**3a. 스코프 정리**
|
|
@@ -215,6 +296,37 @@ runAgent(role="explorer", description="결제 관련 코드 탐색", prompt="...
|
|
|
215
296
|
|
|
216
297
|
### Phase 4 — spec 결정화 + 유저 승인
|
|
217
298
|
|
|
299
|
+
중앙 `crew-agent-runner` 스킬의 dispatch 절차로 실행한다.
|
|
300
|
+
|
|
301
|
+
role: pm
|
|
302
|
+
|
|
303
|
+
inputs:
|
|
304
|
+
- `.crew/plans/{task-id}/brief.md`
|
|
305
|
+
- Phase 2 인터뷰 결정 사항
|
|
306
|
+
- Phase 3 최종 스코프
|
|
307
|
+
- 미해소 항목과 경고 목록
|
|
308
|
+
|
|
309
|
+
output:
|
|
310
|
+
- `.crew/plans/{task-id}/spec.md`
|
|
311
|
+
- 사용자 승인 또는 수정 요청
|
|
312
|
+
- 승인 후 crew-plan 전환 여부
|
|
313
|
+
|
|
314
|
+
role instructions:
|
|
315
|
+
- PM은 인터뷰 결과를 구조화된 spec.md 초안으로 만든다.
|
|
316
|
+
- 오케스트레이터가 `.crew/plans/{task-id}/spec.md`에 저장한다.
|
|
317
|
+
- PM은 작성된 spec.md 전체를 사용자에게 제시하고 승인, 수정 요청, 거부 중 하나를 받는다.
|
|
318
|
+
- 승인 후 사용자가 원하면 `claude-crew:crew-plan` 스킬로 전환한다.
|
|
319
|
+
|
|
320
|
+
success gate:
|
|
321
|
+
- spec.md에 목표, 스코프 경계, 유저 플로우, UI/콘텐츠, 비즈니스 규칙, 수용 기준, 전제 조건 중 해당 섹션만 포함되었다.
|
|
322
|
+
- 수용 기준은 3-7개이며 검증 가능한 행동으로 작성되었다.
|
|
323
|
+
- 사용자가 spec.md를 승인했거나, 수정/거부 흐름으로 되돌아갈 다음 Phase가 명확하다.
|
|
324
|
+
|
|
325
|
+
failure handling:
|
|
326
|
+
- 사용자가 수정 요청을 하면 spec.md를 갱신하고 다시 승인 요청을 진행한다.
|
|
327
|
+
- 사용자가 거부하면 Phase 2로 돌아가 체크리스트를 재평가한다.
|
|
328
|
+
- 조기 종료/하드캡으로 진행한 경우 미해소 항목을 spec.md 최하단에 경고로 기록한다.
|
|
329
|
+
|
|
218
330
|
**4a. spec.md 작성**
|
|
219
331
|
|
|
220
332
|
인터뷰 결과를 `.crew/plans/{task-id}/spec.md`에 구조화하여 작성한다.
|
|
@@ -303,36 +415,15 @@ spec.md를 작성했습니다. 검토해주세요.
|
|
|
303
415
|
|
|
304
416
|
---
|
|
305
417
|
|
|
306
|
-
## 에이전트
|
|
307
|
-
|
|
308
|
-
오케스트레이터는 모든 에이전트를 `runAgent(role, prompt, providerConfig)` 규칙으로 호출한다.
|
|
309
|
-
|
|
310
|
-
- Claude provider: `Agent(subagent_type="{role}", model="{model}", description="...", prompt="...")`
|
|
311
|
-
- Codex provider: `node "${CLAUDE_PLUGIN_ROOT}/scripts/crew-codex-companion.mjs" task --json --expect-crew-result --model {model} --effort {reasoning} --prompt-file {promptFile}`
|
|
312
|
-
- `data/provider-catalog.json`의 `agent_runtime.{role}.codex_sandbox`가 `workspace-write`일 때만 `--write`를 붙인다. interview 단계 에이전트는 모두 read-only다.
|
|
313
|
-
- Codex provider는 `.crew/` 파일을 직접 읽거나 쓰지 않는다. 필요한 컨텍스트는 오케스트레이터가 프롬프트에 인라인 주입하고, 산출물은 `artifact`로 반환받아 오케스트레이터가 저장한다.
|
|
314
|
-
|
|
315
|
-
| 에이전트 | subagent_type | 기본 provider/model | 용도 | 호출 시점 |
|
|
316
|
-
|----------|--------------|------|------|----------|
|
|
317
|
-
| Explorer | explorer | `agent_defaults.explorer` | 코드베이스 탐색 (read-only) | Phase 1b (필수), Phase 2d (필요 시) |
|
|
318
|
-
| Researcher | researcher | `agent_defaults.researcher` | 외부 조사 (WebSearch) | Phase 2 중 필요 시 |
|
|
319
|
-
|
|
320
|
-
**중요**: provider/model은 `.crew/config.json`, `~/.claude/crew/config.json`, `data/provider-catalog.json`의 `agent_defaults` 순서로 해석한다.
|
|
418
|
+
## 에이전트 역할
|
|
321
419
|
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
"artifact": "최종 산출물 또는 결과",
|
|
328
|
-
"questions": [],
|
|
329
|
-
"requests": [],
|
|
330
|
-
"summary": "짧은 요약",
|
|
331
|
-
"error": null
|
|
332
|
-
}
|
|
333
|
-
```
|
|
420
|
+
| 에이전트 | role | 용도 | 실행 시점 |
|
|
421
|
+
|----------|------|------|----------|
|
|
422
|
+
| PM | pm | 인터뷰 판단, 질문 생성, 스코프 정리, spec.md 결정화 | Phase 1-4 |
|
|
423
|
+
| Explorer | explorer | 코드베이스 탐색 | Phase 1c 필수, Phase 2d 필요 시 |
|
|
424
|
+
| Researcher | researcher | 외부 조사 | Phase 2 중 필요 시 |
|
|
334
425
|
|
|
335
|
-
|
|
426
|
+
모든 역할 실행, 사용자 질문 대기, 추가 에이전트 요청, 실패 처리는 중앙 `crew-agent-runner` 스킬의 상태 처리 규칙을 따른다.
|
|
336
427
|
|
|
337
428
|
---
|
|
338
429
|
|