@jjlabsio/claude-crew 0.1.8 → 0.1.9
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.9",
|
|
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.9"
|
|
32
32
|
}
|
package/hud/index.mjs
CHANGED
|
@@ -281,13 +281,14 @@ function renderAgentsMultiLine(agents, maxLines = 5) {
|
|
|
281
281
|
const isLast = index === displayCount - 1 && sorted.length <= maxLines;
|
|
282
282
|
const prefix = isLast ? '\u2514\u2500' : '\u251c\u2500';
|
|
283
283
|
|
|
284
|
-
const
|
|
284
|
+
const rawType = a.type.includes(':') ? a.type.split(':').pop() : a.type;
|
|
285
|
+
const name = rawType.padEnd(7);
|
|
285
286
|
const model = shortModelName(a.model).padEnd(8);
|
|
286
287
|
const duration = formatAgentDuration(a.startTime).padStart(4);
|
|
287
288
|
const desc = a.description.length > 40 ? a.description.slice(0, 37) + '...' : a.description;
|
|
288
289
|
|
|
289
290
|
detailLines.push(
|
|
290
|
-
`${dim(prefix)} ${cyan(name)}${model}${dim(duration)} ${desc}`
|
|
291
|
+
`${dim(prefix)} ${cyan(name)} ${model}${dim(duration)} ${desc}`
|
|
291
292
|
);
|
|
292
293
|
});
|
|
293
294
|
|
package/package.json
CHANGED
package/skills/crew-dev/SKILL.md
CHANGED
|
@@ -21,6 +21,7 @@ description: contract.md를 입력으로 받아 Dev + CodeReviewer + QA 파이
|
|
|
21
21
|
- brief.md를 어떤 에이전트에게도 전달하지 않는다.
|
|
22
22
|
- contract.md를 CodeReviewer에게 전달하지 않는다 (가드레일만 인라인 주입).
|
|
23
23
|
- plan.md를 CodeReviewer에게 전달하지 않는다.
|
|
24
|
+
- git commit 시 `--no-verify`를 생략하지 않는다 (호스트 프로젝트의 pre-commit hook 중복 실행 방지).
|
|
24
25
|
- Dev가 자체 검증을 통과하지 못한 상태에서 검증 단계로 넘기지 않는다.
|
|
25
26
|
|
|
26
27
|
---
|
|
@@ -52,7 +53,7 @@ description: contract.md를 입력으로 받아 Dev + CodeReviewer + QA 파이
|
|
|
52
53
|
| 에이전트 | subagent_type | 볼 수 있는 것 | 차단 | 차단 근거 |
|
|
53
54
|
|----------|--------------|-------------|------|----------|
|
|
54
55
|
| **Dev** | dev | plan.md, contract.md | brief.md, spec.md, analysis.md | 의도 추측 방지, plan+contract에 필요 정보 포함 |
|
|
55
|
-
| **CodeReviewer** | code-reviewer | git diff, 가드레일(인라인) | contract.md, plan.md, brief.md, spec.md, dev-log.md | 수용 기준 체리피킹 방지 |
|
|
56
|
+
| **CodeReviewer** | code-reviewer | git diff(직접 실행), 가드레일(인라인) | contract.md, plan.md, brief.md, spec.md, dev-log.md | 수용 기준 체리피킹 방지 (.crew/는 .gitignore 대상이므로 diff에 노출되지 않음) |
|
|
56
57
|
| **QA** | qa | plan.md | contract.md, brief.md, spec.md | 검증 편향 방지 |
|
|
57
58
|
|
|
58
59
|
**중요**: 모든 에이전트 호출 시 반드시 `subagent_type` 파라미터를 지정해야 한다. HUD에서 에이전트 타입을 식별하는 데 사용된다.
|
|
@@ -128,6 +129,7 @@ brief.md, spec.md, analysis.md는 읽지 않는다.
|
|
|
128
129
|
- 린트 통과 확인
|
|
129
130
|
- 타입 체크 통과 확인
|
|
130
131
|
- 기존 테스트 스위트 통과 확인
|
|
132
|
+
- lint-staged 검증: `npx lint-staged --dry-run` 실행 (설정이 있는 경우에만)
|
|
131
133
|
6. 자체 검증이 모두 통과하면 완료를 선언한다.
|
|
132
134
|
자체 검증이 실패하면 직접 수정하여 통과시킨다.
|
|
133
135
|
|
|
@@ -136,7 +138,7 @@ brief.md, spec.md, analysis.md는 읽지 않는다.
|
|
|
136
138
|
|
|
137
139
|
## 규칙
|
|
138
140
|
- plan.md에 없는 것을 구현하지 않는다 (스코프 크리프 금지).
|
|
139
|
-
- 자체 검증
|
|
141
|
+
- 자체 검증 5개(빌드/린트/타입/테스트/lint-staged) 모두 PASS 해야 완료를 선언할 수 있다.
|
|
140
142
|
- 기존 코드베이스의 컨벤션을 따른다.
|
|
141
143
|
```
|
|
142
144
|
|
|
@@ -159,11 +161,11 @@ brief.md, spec.md, analysis.md는 읽지 않는다.
|
|
|
159
161
|
1. 피드백에서 FAIL 항목을 모두 파악한다.
|
|
160
162
|
2. 각 FAIL 항목에 대해 수정을 수행한다.
|
|
161
163
|
3. dev-log.md를 갱신한다 (최상단에 "수정 이력 (retry {n})" 섹션 추가).
|
|
162
|
-
4. 자체 검증
|
|
164
|
+
4. 자체 검증 5개를 모두 다시 실행한다.
|
|
163
165
|
|
|
164
166
|
## 규칙
|
|
165
167
|
- 피드백에서 지적하지 않은 부분을 추가로 변경하지 않는다.
|
|
166
|
-
- 자체 검증
|
|
168
|
+
- 자체 검증 5개 모두 PASS 해야 완료를 선언할 수 있다.
|
|
167
169
|
```
|
|
168
170
|
|
|
169
171
|
**Phase 2 실패 조건**: Dev 에이전트가 자체 검증을 통과하지 못한 채 완료를 선언하면 에스컬레이션.
|
|
@@ -181,9 +183,8 @@ CodeReviewer와 QA를 **동시에** Agent tool 2개로 호출한다.
|
|
|
181
183
|
에이전트 호출 시 반드시 `subagent_type: "code-reviewer"`를 지정한다.
|
|
182
184
|
|
|
183
185
|
오케스트레이터가 해야 할 사전 작업:
|
|
184
|
-
1.
|
|
185
|
-
2.
|
|
186
|
-
3. 둘 다 CodeReviewer 프롬프트에 인라인으로 주입한다.
|
|
186
|
+
1. contract.md에서 가드레일 섹션(Must/Must NOT)만 추출한다.
|
|
187
|
+
2. 가드레일을 CodeReviewer 프롬프트에 인라인으로 주입한다.
|
|
187
188
|
|
|
188
189
|
에이전트 프롬프트:
|
|
189
190
|
|
|
@@ -191,13 +192,10 @@ CodeReviewer와 QA를 **동시에** Agent tool 2개로 호출한다.
|
|
|
191
192
|
당신은 CodeReviewer 에이전트다. 코드 변경 사항의 품질을 판단한다.
|
|
192
193
|
|
|
193
194
|
## 입력
|
|
194
|
-
|
|
195
|
+
`git diff main...HEAD`를 직접 실행하여 변경 사항을 확인하라.
|
|
195
196
|
contract.md, plan.md, brief.md, spec.md, dev-log.md는 읽지 않는다.
|
|
196
197
|
코드만 보고 판단한다.
|
|
197
198
|
|
|
198
|
-
### diff
|
|
199
|
-
{git diff main...HEAD 출력}
|
|
200
|
-
|
|
201
199
|
### 가드레일 (contract.md에서 추출)
|
|
202
200
|
#### Must
|
|
203
201
|
- {오케스트레이터가 contract.md에서 복사한 내용}
|
|
@@ -286,10 +284,12 @@ Agent(name="qa", subagent_type="qa", model="sonnet", prompt="...")
|
|
|
286
284
|
|
|
287
285
|
```bash
|
|
288
286
|
git add -A
|
|
289
|
-
git commit -m "feat({task-id}): {contract.md 목표 1줄 요약}"
|
|
287
|
+
git commit --no-verify -m "feat({task-id}): {contract.md 목표 1줄 요약}"
|
|
290
288
|
git push -u origin feat/{task-id}
|
|
291
289
|
```
|
|
292
290
|
|
|
291
|
+
> `--no-verify`: crew-dev가 이미 빌드/린트/타입/테스트 + lint-staged 검증을 완료했으므로 호스트 프로젝트의 pre-commit hook을 중복 실행하지 않는다.
|
|
292
|
+
|
|
293
293
|
PR을 생성한다 (머지하지 않는다).
|
|
294
294
|
|
|
295
295
|
**5b. 상태 갱신**
|