@jjlabsio/claude-crew 0.1.37 → 0.1.39

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.37",
14
+ "version": "0.1.39",
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.37"
31
+ "version": "0.1.39"
32
32
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-crew",
3
- "version": "0.1.37",
3
+ "version": "0.1.39",
4
4
  "description": "1인 SaaS 개발자를 위한 멀티 에이전트 오케스트레이션 — 개발, 마케팅, 일정을 한 대화에서 통합 관리",
5
5
  "author": {
6
6
  "name": "Jaejin Song",
@@ -20,16 +20,18 @@
20
20
  { "id": "gpt-5.4", "reasoning": "medium", "status": "active" },
21
21
  { "id": "o3", "reasoning": "high", "status": "active" },
22
22
  { "id": "o3", "reasoning": "medium", "status": "active" },
23
- { "id": "gpt-5.5-mini", "reasoning": "medium", "status": "active" }
23
+ { "id": "gpt-5.5-mini", "reasoning": "medium", "status": "active" },
24
+ { "id": "gpt-5.3-codex-spark", "reasoning": "low", "status": "active" },
25
+ { "id": "gpt-5.4-mini", "reasoning": "high", "status": "active" }
24
26
  ]
25
27
  },
26
28
  "agent_defaults": {
27
- "pm": { "provider": "claude", "model": "opus" },
28
- "techlead": { "provider": "claude", "model": "opus" },
29
- "planner": { "provider": "claude", "model": "opus" },
29
+ "pm": { "provider": "codex", "model": "gpt-5.5", "reasoning": "medium" },
30
+ "techlead": { "provider": "codex", "model": "gpt-5.5", "reasoning": "medium" },
31
+ "planner": { "provider": "codex", "model": "gpt-5.5", "reasoning": "medium" },
30
32
  "plan-evaluator": { "provider": "claude", "model": "sonnet" },
31
- "explorer": { "provider": "claude", "model": "haiku" },
32
- "researcher": { "provider": "claude", "model": "sonnet" },
33
+ "explorer": { "provider": "codex", "model": "gpt-5.3-codex-spark", "reasoning": "low" },
34
+ "researcher": { "provider": "codex", "model": "gpt-5.4-mini", "reasoning": "high" },
33
35
  "qa": { "provider": "claude", "model": "sonnet" },
34
36
  "dev": { "provider": "codex", "model": "gpt-5.5", "reasoning": "medium" },
35
37
  "code-reviewer": { "provider": "codex", "model": "gpt-5.5", "reasoning": "medium" }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jjlabsio/claude-crew",
3
- "version": "0.1.37",
3
+ "version": "0.1.39",
4
4
  "description": "1인 SaaS 개발자를 위한 멀티 에이전트 오케스트레이션 — 개발, 마케팅, 일정을 한 대화에서 통합 관리",
5
5
  "author": "Jaejin Song <wowlxx28@gmail.com>",
6
6
  "license": "MIT",
@@ -48,6 +48,7 @@ provider 선택, 런타임 선택, AgentResult 반환 형식, 후속 입력 주
48
48
  - git commit 시 `--no-verify`를 생략하지 않는다. 호스트 프로젝트의 pre-commit hook 중복 실행을 방지하기 위함이다.
49
49
  - Dev가 자체 검증을 통과하지 못한 상태에서 검증 단계로 넘기지 않는다.
50
50
  - 에이전트가 허용된 산출물 범위를 넘어 `.crew/` 메타 파일을 탐색하거나 읽게 하지 않는다.
51
+ - `git worktree add`를 직접 실행하지 않는다. 워크트리는 `EnterWorktree` 도구만 사용한다.
51
52
 
52
53
  ---
53
54
 
@@ -103,24 +104,24 @@ inputs:
103
104
  output:
104
105
  - 해석된 역할별 provider/model/runtime 정책
105
106
  - 유효성이 확인된 ACTIVE `contract.md`
106
- - 신규 또는 기존 워크트리 선택 결과
107
+ - Claude 워크트리 `crew/{task-id}` 진입 결과
107
108
  - `contract.md` 상태 갱신
108
109
 
109
110
  role instructions:
110
111
  - **Phase 1a — provider 설정 해석**: 오케스트레이터는 provider 설정을 해석한다. 프로젝트 설정, 유저 설정, catalog 기본값 순으로 역할별 실행 정책을 결정하고 Phase 2, Phase 3에서 사용할 런타임 제약을 기록한다.
111
112
  - **Phase 1b — contract.md 검증**: `contract.md` 산출물을 읽는다. 파일 존재, `## 상태`의 ACTIVE 여부, `## 수용 기준`의 비어 있지 않음, `## 검증 시나리오` 존재를 확인한다.
112
- - **Phase 1c — 워크트리 결정**: `contract.md`의 `## 워크트리` 섹션을 우선 적용한다. 없으면 현재 디렉토리가 해당 task-id 워크트리인지 확인한다. 신규 워크트리는 기준 브랜치에서 준비하고, 기존 워크트리는 reset 없이 이어간다.
113
+ - **Phase 1c — 워크트리 진입**: 현재 세션이 이미 `crew/{task-id}` Claude 워크트리 안인지 확인한다. 워크트리 안이 아니면 `EnterWorktree(path: ".claude/worktrees/crew/{task-id}")`로 crew-interview/crew-plan이 생성한 기존 워크트리에 진입한다. 워크트리가 존재하지 않으면 `EnterWorktree(name: "crew/{task-id}")`로 새로 생성한다.
113
114
  - **Phase 1d — 상태 갱신**: `contract.md`의 `## 상태` 섹션을 `IN_PROGRESS`로 갱신한다.
114
115
 
115
116
  success gate:
116
117
  - provider 정책이 역할별로 해석되었다.
117
118
  - `contract.md`가 ACTIVE이며 필수 섹션을 가진다.
118
- - 이후 모든 작업이 수행될 워크트리가 결정되었다.
119
+ - Claude 워크트리 `crew/{task-id}`에 진입했다.
119
120
  - 상태가 `IN_PROGRESS`로 갱신되었다.
120
121
 
121
122
  failure handling:
122
123
  - `contract.md` 검증 실패 시 구체적 사유와 함께 사용자에게 선택지를 제시한다.
123
- - 워크트리 준비 실패 시 상태를 BLOCKED로 갱신하고 작업을 중단한다.
124
+ - Claude 워크트리 진입 실패 시 상태를 BLOCKED로 갱신하고 작업을 중단한다.
124
125
  - provider 해석 중 특정 provider를 사용할 수 없으면 runner 정책에 따라 fallback 또는 escalation을 적용한다.
125
126
 
126
127
  ### Phase 2 — US 단위 증분 루프
@@ -19,6 +19,7 @@ description: 유저 요구사항을 인터뷰하여 개발 가능한 수준의 s
19
19
  - 체크리스트가 전부 YES가 되기 전에 spec.md를 작성하지 않는다.
20
20
  - 유저 승인 없이 crew-plan으로 전환하지 않는다.
21
21
  - 추측으로 비즈니스 결정을 채우지 않는다.
22
+ - `git worktree add`를 직접 실행하지 않는다. 워크트리는 `EnterWorktree` 도구만 사용한다.
22
23
 
23
24
  ---
24
25
 
@@ -61,17 +62,20 @@ inputs:
61
62
  - 기존 `.crew/plans/` 상태
62
63
 
63
64
  output:
65
+ - Claude 워크트리 `crew/{task-id}` 생성 및 진입
64
66
  - `.crew/plans/{task-id}/brief.md`
65
67
  - Explorer 프로젝트 구조 요약
66
68
  - 최초 요구사항 체크리스트 평가
67
69
 
68
70
  role instructions:
69
71
  - PM은 요청 내용에서 키워드를 추출하여 kebab-case task-id를 생성한다.
72
+ - PM이 task-id를 반환하면 오케스트레이터가 `EnterWorktree(name: "crew/{task-id}")`를 호출하여 Claude 워크트리를 생성하고 진입한다. 이후 모든 파일 작업은 워크트리 안에서 수행된다.
70
73
  - 오케스트레이터가 유저 원본 요청을 `.crew/plans/{task-id}/brief.md`에 저장한다.
71
74
  - Explorer는 프로젝트 구조를 병렬로 파악하고, 결과를 파일로 저장하지 않고 인터뷰 컨텍스트로만 제공한다.
72
75
  - PM은 유저 요청과 Explorer 결과를 기반으로 체크리스트 5개 항목을 첫 평가한다.
73
76
 
74
77
  success gate:
78
+ - Claude 워크트리 `crew/{task-id}`에 진입했다.
75
79
  - `brief.md`가 생성되었다.
76
80
  - Explorer 결과에 기술 스택, 주요 모듈 구조, 관련 기존 코드/기능 유무, 기존 패턴이 포함되었다.
77
81
  - 체크리스트 각 항목이 YES / NO / 해당없음 중 하나로 판정되었다.
@@ -80,12 +84,13 @@ failure handling:
80
84
  - task-id 또는 `brief.md`를 만들 수 없으면 실패 사유와 필요한 사용자 입력을 반환한다.
81
85
  - Explorer가 충분한 구조 정보를 제공하지 못하면 누락 영역을 명시하고 추가 Explorer 탐색을 요청한다.
82
86
 
83
- **1b. task-id 생성 + brief.md 작성**
87
+ **1b. task-id 생성 + 워크트리 진입 + brief.md 작성**
84
88
 
85
- 유저 요청 원문을 `.crew/plans/{task-id}/brief.md`에 저장한다.
86
- task-id 요청 내용에서 키워드를 추출하여 kebab-case로 생성한다.
89
+ 1. task-id는 요청 내용에서 키워드를 추출하여 kebab-case로 생성한다.
90
+ 2. `EnterWorktree(name: "crew/{task-id}")`를 호출하여 Claude 워크트리를 생성하고 진입한다. 이미 해당 워크트리 안이면 이 단계를 건너뛴다.
91
+ 3. 유저 요청 원문을 `.crew/plans/{task-id}/brief.md`에 저장한다.
87
92
 
88
- **1c. Explorer 호출 (병렬)**
93
+ **1c. Explorer 호출 (병렬, 워크트리 진입 후)**
89
94
 
90
95
  Explorer는 중앙 runner를 통해 병렬 실행되어 프로젝트 구조를 파악한다.
91
96
 
@@ -433,7 +438,7 @@ spec.md를 작성했습니다. 검토해주세요.
433
438
  | 에이전트 | role | 용도 | 실행 시점 |
434
439
  |----------|------|------|----------|
435
440
  | PM | pm | 인터뷰 판단, 질문 생성, 스코프 정리, spec.md 결정화 | Phase 1-4 |
436
- | Explorer | explorer | 코드베이스 탐색 | Phase 1c 필수, Phase 2d 필요 시 |
441
+ | Explorer | explorer | 코드베이스 탐색 | Phase 1c 필수 (워크트리 진입 후), Phase 2d 필요 시 |
437
442
  | Researcher | researcher | 외부 조사 | Phase 2 중 필요 시 |
438
443
 
439
444
  모든 역할 실행, 사용자 질문 대기, 추가 에이전트 요청, 실패 처리는 중앙 `crew-agent-runner` 스킬의 상태 처리 규칙을 따른다.
@@ -447,7 +452,8 @@ spec.md를 작성했습니다. 검토해주세요.
447
452
  {
448
453
  "status": "COMPLETE",
449
454
  "task_id": "{task-id}",
450
- "spec_path": ".crew/plans/{task-id}/spec.md"
455
+ "spec_path": ".crew/plans/{task-id}/spec.md",
456
+ "worktree": "crew/{task-id}"
451
457
  }
452
458
  ```
453
459
 
@@ -18,6 +18,7 @@ crew-interview가 생성한 spec.md를 입력으로 받아 **HOW(어떻게 만
18
18
  - PlanEvaluator가 FAIL을 냈을 때 합리화하여 통과시키지 않는다.
19
19
  - brief.md를 Planner, PlanEvaluator에게 전달하지 않는다.
20
20
  - 오케스트레이터가 요구사항을 판단하거나 보완하지 않는다.
21
+ - `git worktree add`를 직접 실행하지 않는다. 워크트리는 `EnterWorktree` 도구만 사용한다.
21
22
 
22
23
  ---
23
24
 
@@ -55,6 +56,27 @@ crew-plan의 모든 에이전트 실행은 역할이나 step과 무관하게 아
55
56
  이 순서를 생략하고 직접 하위 에이전트를 호출하지 않는다.
56
57
  provider 선택, 런타임 선택, AgentResult 반환 형식, 후속 입력 주입, retry/fallback/escalate 판단은 모두 중앙 runner 계약을 따른다.
57
58
 
59
+ ### Step 0 — 워크트리 진입
60
+
61
+ role: orchestrator
62
+
63
+ inputs:
64
+ - task-id
65
+
66
+ role instructions:
67
+ - 현재 세션이 이미 `crew/{task-id}` Claude 워크트리 안인지 확인한다.
68
+ - 워크트리 안이 아니면 `.claude/worktrees/crew/{task-id}` 경로의 워크트리가 존재하는지 확인한다.
69
+ - 존재하면 `EnterWorktree(path: ".claude/worktrees/crew/{task-id}")`로 기존 워크트리에 진입한다.
70
+ - 존재하지 않으면 `EnterWorktree(name: "crew/{task-id}")`로 새로 생성한다.
71
+
72
+ success gate:
73
+ - 세션이 `crew/{task-id}` Claude 워크트리 안에서 동작 중이다.
74
+
75
+ failure handling:
76
+ - 워크트리 진입 실패 시 사유를 사용자에게 제시한다.
77
+
78
+ ---
79
+
58
80
  ### Step 1 — spec.md 검증
59
81
 
60
82
  role: orchestrator
@@ -247,7 +269,7 @@ output:
247
269
 
248
270
  role instructions:
249
271
  - review.md의 판정이 PASS인지 확인한다.
250
- - contract.md에는 목표, 수용 기준, 유저 플로우, UI 구조 및 주요 콘텐츠, 비즈니스 규칙, 가드레일, 테스트 전략, 검증 시나리오, 실행 검증, 참조 문서, 검증 이력, 워크트리, 상태를 포함한다.
272
+ - contract.md에는 목표, 수용 기준, 유저 플로우, UI 구조 및 주요 콘텐츠, 비즈니스 규칙, 가드레일, 테스트 전략, 검증 시나리오, 실행 검증, 참조 문서, 검증 이력, 상태를 포함한다. 워크트리는 Claude 워크트리 컨벤션(`crew/{task-id}`)으로 관리되므로 contract.md에 포함하지 않는다.
251
273
  - 목표와 수용 기준은 spec.md의 내용을 기준으로 한다.
252
274
  - 가드레일은 analysis.md의 Must/Must NOT을 기준으로 한다.
253
275
  - 검증 시나리오와 실행 검증은 plan.md의 해당 섹션을 기준으로 한다.
@@ -192,11 +192,33 @@ Step 3a에서 판별된 config 경로의 파일이 있으면 현재 설정을
192
192
 
193
193
  ```
194
194
  설정을 변경할 에이전트를 선택하세요 (쉼표 구분, 엔터 = 스킵):
195
+ 0. 권장 설정 전체 적용 (agent_defaults 기준)
195
196
  <data/agent-contracts.json의 role 목록을 contract 순서로 쉼표 구분 표시>
196
197
  ```
197
198
 
198
199
  - 사용자가 엔터만 누르거나 "없음"/"스킵"을 입력하면 Step 3를 종료한다.
199
200
  - 예시 입력: `planner`, `dev, code-reviewer`
201
+ - `0` 또는 `권장` 입력 시 → Step 3f-1으로 이동한다.
202
+
203
+ ### 3f-1. 권장 설정 일괄 적용
204
+
205
+ `provider-catalog.json`의 `agent_defaults`를 전 에이전트에 일괄 적용한다.
206
+
207
+ **기존 커스텀 설정이 있는 경우 경고:**
208
+
209
+ ```
210
+ ⚠️ 기존 커스텀 설정이 있습니다:
211
+ - planner: codex / gpt-5.4 high → codex / gpt-5.5 medium (덮어씀)
212
+ ...
213
+ 권장 설정으로 덮어씌우시겠습니까? (y/N):
214
+ ```
215
+
216
+ - `y` 입력 시: 모든 에이전트를 `agent_defaults` 값으로 저장하고 Step 3h로 이동한다.
217
+ - 그 외 입력 시: 취소하고 Step 3f로 돌아간다.
218
+
219
+ **기존 커스텀 설정이 없는 경우:** 경고 없이 바로 적용하고 Step 3h로 이동한다.
220
+
221
+ > **저장 규칙**: `agent_defaults`와 동일한 값은 저장하지 않는다 (3h 규칙 동일). 결과적으로 기존 커스텀 항목만 삭제되고 `providers` 객체는 비거나 빈 상태가 될 수 있다.
200
222
 
201
223
  ### 3g. 선택된 에이전트별 설정
202
224