@kood/claude-code 0.7.5 → 0.7.7
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/dist/index.js +33 -31
- package/package.json +1 -1
- package/templates/.claude/agents/codex.md +333 -0
- package/templates/.claude/skills/codex/SKILL.md +563 -0
- package/templates/.claude/skills/design/SKILL.md +199 -0
- package/templates/.claude/skills/design/references/accessibility.md +106 -0
- package/templates/.claude/skills/design/references/checklist.md +41 -0
- package/templates/.claude/skills/design/references/core-principles.md +66 -0
- package/templates/.claude/skills/design/references/global-uiux.md +216 -0
- package/templates/.claude/skills/design/references/korea-uiux.md +227 -0
- package/templates/.claude/skills/design/references/patterns.md +250 -0
- package/templates/.claude/skills/design/references/responsive.md +248 -0
- package/templates/.claude/skills/design/references/safe-area.md +202 -0
- package/templates/.claude/skills/design/references/systems.md +116 -0
- package/templates/.claude/skills/design/references/trends.md +75 -0
- package/templates/.claude/skills/teams/SKILL.md +575 -0
- package/templates/.claude/skills/teams/references/fallback-strategy.md +288 -0
- package/templates/.claude/skills/teams/references/patterns.md +499 -0
- package/templates/.claude/skills/global-uiux-design/AGENTS.md +0 -320
- package/templates/.claude/skills/global-uiux-design/SKILL.md +0 -1089
- package/templates/.claude/skills/global-uiux-design/references/accessibility.md +0 -401
- package/templates/.claude/skills/global-uiux-design/references/color-system.md +0 -275
- package/templates/.claude/skills/global-uiux-design/references/design-philosophy.md +0 -206
- package/templates/.claude/skills/global-uiux-design/references/design-systems.md +0 -446
- package/templates/.claude/skills/korea-uiux-design/AGENTS.md +0 -310
- package/templates/.claude/skills/korea-uiux-design/SKILL.md +0 -980
- package/templates/.claude/skills/korea-uiux-design/references/accessibility.md +0 -298
- package/templates/.claude/skills/korea-uiux-design/references/checklist.md +0 -107
- package/templates/.claude/skills/korea-uiux-design/references/color-system.md +0 -156
- package/templates/.claude/skills/korea-uiux-design/references/design-philosophy.md +0 -25
- package/templates/.claude/skills/korea-uiux-design/references/icon-guide.md +0 -180
- package/templates/.claude/skills/korea-uiux-design/references/micro-interactions.md +0 -259
- package/templates/.claude/skills/korea-uiux-design/references/responsive-patterns.md +0 -115
- package/templates/.claude/skills/korea-uiux-design/references/service-patterns.md +0 -206
- package/templates/.claude/skills/korea-uiux-design/references/state-patterns.md +0 -320
- package/templates/.claude/skills/korea-uiux-design/references/typography.md +0 -70
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
# Fallback Strategy Reference
|
|
2
|
+
|
|
3
|
+
> Agent Teams 미가용 시 Subagent 폴백 전략
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
<availability_check>
|
|
8
|
+
|
|
9
|
+
## 환경 확인
|
|
10
|
+
|
|
11
|
+
### 확인 방법
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
# 1. 환경변수 확인
|
|
15
|
+
if [[ "$CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS" == "1" ]]; then
|
|
16
|
+
AGENT_TEAMS_AVAILABLE=true
|
|
17
|
+
fi
|
|
18
|
+
|
|
19
|
+
# 2. settings.json 확인 (글로벌 + 프로젝트)
|
|
20
|
+
for f in ~/.claude/settings.json .claude/settings.json; do
|
|
21
|
+
if grep -q '"CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS".*"1"' "$f" 2>/dev/null; then
|
|
22
|
+
AGENT_TEAMS_AVAILABLE=true
|
|
23
|
+
fi
|
|
24
|
+
done
|
|
25
|
+
|
|
26
|
+
# 3. 에이전트 디렉토리 확인
|
|
27
|
+
if [[ -d ".claude/agents" ]] && [[ $(ls .claude/agents/*.md 2>/dev/null | wc -l) -gt 0 ]]; then
|
|
28
|
+
AGENTS_AVAILABLE=true
|
|
29
|
+
fi
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### 스크립트 사용
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
.claude/scripts/agent-teams/check-availability.sh
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
</availability_check>
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
<fallback_decision>
|
|
43
|
+
|
|
44
|
+
## 폴백 결정 매트릭스
|
|
45
|
+
|
|
46
|
+
| 조건 | 모드 |
|
|
47
|
+
|------|------|
|
|
48
|
+
| Agent Teams 활성화 + tmux/iTerm2 | Agent Teams (split-pane) |
|
|
49
|
+
| Agent Teams 활성화 + 일반 터미널 | Agent Teams (in-process) |
|
|
50
|
+
| Agent Teams 비활성화 | Subagent 폴백 |
|
|
51
|
+
|
|
52
|
+
### 모드별 특징
|
|
53
|
+
|
|
54
|
+
| 항목 | Agent Teams | Subagent 폴백 |
|
|
55
|
+
|------|-------------|---------------|
|
|
56
|
+
| 팀원 간 통신 | ✅ Inbox 메시징 | ❌ Lead 경유만 |
|
|
57
|
+
| 공유 Task List | ✅ | ❌ |
|
|
58
|
+
| 독립 컨텍스트 | ✅ 각자 유지 | ✅ 각자 유지 |
|
|
59
|
+
| 비용 | 높음 (N × 세션) | 중간 |
|
|
60
|
+
| 복잡도 | 높음 | 낮음 |
|
|
61
|
+
| 조율 | 자기 조율 가능 | Lead가 관리 |
|
|
62
|
+
|
|
63
|
+
</fallback_decision>
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
<fallback_patterns>
|
|
68
|
+
|
|
69
|
+
## 패턴별 폴백 구현
|
|
70
|
+
|
|
71
|
+
### 병렬-리뷰 폴백
|
|
72
|
+
|
|
73
|
+
```typescript
|
|
74
|
+
// Agent Teams 모드
|
|
75
|
+
if (AGENT_TEAMS_AVAILABLE) {
|
|
76
|
+
TeamCreate({ team_name: "review-team" })
|
|
77
|
+
Task({ subagent_type: "security-reviewer", team_name: "review-team", ... })
|
|
78
|
+
Task({ subagent_type: "code-reviewer", team_name: "review-team", ... })
|
|
79
|
+
Task({ subagent_type: "qa-tester", team_name: "review-team", ... })
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// Subagent 폴백
|
|
83
|
+
else {
|
|
84
|
+
// 병렬 Subagent 호출 (team_name 없음)
|
|
85
|
+
Task({ subagent_type: "security-reviewer", prompt: "..." })
|
|
86
|
+
Task({ subagent_type: "code-reviewer", prompt: "..." })
|
|
87
|
+
Task({ subagent_type: "qa-tester", prompt: "..." })
|
|
88
|
+
|
|
89
|
+
// 결과 수집 후 Lead가 직접 종합
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### 파이프라인 폴백
|
|
94
|
+
|
|
95
|
+
```typescript
|
|
96
|
+
// Agent Teams 모드
|
|
97
|
+
if (AGENT_TEAMS_AVAILABLE) {
|
|
98
|
+
TeamCreate({ team_name: "pipeline-team" })
|
|
99
|
+
// TaskCreate with blockedBy
|
|
100
|
+
// Task spawn (순차)
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// Subagent 폴백
|
|
104
|
+
else {
|
|
105
|
+
// 순차 Subagent 호출
|
|
106
|
+
const researchResult = await Task({ subagent_type: "researcher", ... })
|
|
107
|
+
const planResult = await Task({ subagent_type: "planner", prompt: `조사 결과: ${researchResult}...` })
|
|
108
|
+
const implResult = await Task({ subagent_type: "implementation-executor", prompt: `계획: ${planResult}...` })
|
|
109
|
+
await Task({ subagent_type: "tdd-guide", prompt: `구현 결과: ${implResult}...` })
|
|
110
|
+
}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### 크로스-레이어 폴백
|
|
114
|
+
|
|
115
|
+
```typescript
|
|
116
|
+
// Agent Teams 모드
|
|
117
|
+
if (AGENT_TEAMS_AVAILABLE) {
|
|
118
|
+
TeamCreate({ team_name: "crosslayer-team" })
|
|
119
|
+
// frontend, backend 병렬 → integration 순차
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// Subagent 폴백
|
|
123
|
+
else {
|
|
124
|
+
// 병렬 호출
|
|
125
|
+
Task({ subagent_type: "designer", prompt: "프론트엔드..." })
|
|
126
|
+
Task({ subagent_type: "implementation-executor", prompt: "백엔드..." })
|
|
127
|
+
// 두 결과 수집 후
|
|
128
|
+
Task({ subagent_type: "qa-tester", prompt: "통합 테스트..." })
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### 가설-검증 폴백
|
|
133
|
+
|
|
134
|
+
```typescript
|
|
135
|
+
// Agent Teams 모드
|
|
136
|
+
if (AGENT_TEAMS_AVAILABLE) {
|
|
137
|
+
TeamCreate({ team_name: "hypothesis-team" })
|
|
138
|
+
// analyst × 3 병렬 → synthesizer 순차
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// Subagent 폴백
|
|
142
|
+
else {
|
|
143
|
+
// 병렬 분석
|
|
144
|
+
Task({ subagent_type: "analyst", prompt: "보수적 관점..." })
|
|
145
|
+
Task({ subagent_type: "analyst", prompt: "혁신적 관점..." })
|
|
146
|
+
Task({ subagent_type: "analyst", prompt: "실용적 관점..." })
|
|
147
|
+
// 결과 수집 후 Lead가 직접 종합 또는 architect 위임
|
|
148
|
+
Task({ subagent_type: "architect", prompt: "종합 분석..." })
|
|
149
|
+
}
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
</fallback_patterns>
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
<fallback_limitations>
|
|
157
|
+
|
|
158
|
+
## 폴백 제한사항
|
|
159
|
+
|
|
160
|
+
| 기능 | Agent Teams | Subagent 폴백 |
|
|
161
|
+
|------|-------------|---------------|
|
|
162
|
+
| 팀원 간 DM | ✅ SendMessage | ❌ |
|
|
163
|
+
| 브로드캐스트 | ✅ | ❌ |
|
|
164
|
+
| 공유 Task List | ✅ | ❌ |
|
|
165
|
+
| 의존성 관리 | ✅ blockedBy | 수동 순차 호출 |
|
|
166
|
+
| 팀원 상태 확인 | ✅ TeamStatus | 결과 대기만 |
|
|
167
|
+
| 중간 조율 | ✅ 메시지 중계 | Lead 직접 관리 |
|
|
168
|
+
| 정리 | ✅ shutdown + TeamDelete | 자동 종료 |
|
|
169
|
+
|
|
170
|
+
### 폴백 시 추가 작업
|
|
171
|
+
|
|
172
|
+
| 작업 | 설명 |
|
|
173
|
+
|------|------|
|
|
174
|
+
| 컨텍스트 전달 | 각 Subagent에 이전 결과 명시적 포함 |
|
|
175
|
+
| 결과 수집 | Lead가 각 결과 수동 종합 |
|
|
176
|
+
| 순서 관리 | await로 순차 실행 보장 |
|
|
177
|
+
|
|
178
|
+
</fallback_limitations>
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
<fallback_best_practices>
|
|
183
|
+
|
|
184
|
+
## 폴백 베스트 프랙티스
|
|
185
|
+
|
|
186
|
+
### 1. 컨텍스트 전달
|
|
187
|
+
|
|
188
|
+
```typescript
|
|
189
|
+
// ❌ 잘못된 방식 (컨텍스트 부족)
|
|
190
|
+
Task({ subagent_type: "planner", prompt: "계획 수립" })
|
|
191
|
+
|
|
192
|
+
// ✅ 올바른 방식 (충분한 컨텍스트)
|
|
193
|
+
Task({
|
|
194
|
+
subagent_type: "planner",
|
|
195
|
+
prompt: `계획 수립:
|
|
196
|
+
|
|
197
|
+
【조사 결과】
|
|
198
|
+
${researchResult}
|
|
199
|
+
|
|
200
|
+
【요구사항】
|
|
201
|
+
${requirements}
|
|
202
|
+
|
|
203
|
+
【제약사항】
|
|
204
|
+
${constraints}`
|
|
205
|
+
})
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
### 2. 결과 종합
|
|
209
|
+
|
|
210
|
+
```typescript
|
|
211
|
+
// 병렬 결과 수집
|
|
212
|
+
const [securityResult, qualityResult, testResult] = await Promise.all([
|
|
213
|
+
Task({ subagent_type: "security-reviewer", ... }),
|
|
214
|
+
Task({ subagent_type: "code-reviewer", ... }),
|
|
215
|
+
Task({ subagent_type: "qa-tester", ... })
|
|
216
|
+
])
|
|
217
|
+
|
|
218
|
+
// Lead가 직접 종합
|
|
219
|
+
const summary = `
|
|
220
|
+
## 리뷰 종합
|
|
221
|
+
|
|
222
|
+
### 보안
|
|
223
|
+
${securityResult}
|
|
224
|
+
|
|
225
|
+
### 품질
|
|
226
|
+
${qualityResult}
|
|
227
|
+
|
|
228
|
+
### 테스트
|
|
229
|
+
${testResult}
|
|
230
|
+
|
|
231
|
+
### 권장사항
|
|
232
|
+
[Lead 분석 기반 권장사항]
|
|
233
|
+
`
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
### 3. 에러 처리
|
|
237
|
+
|
|
238
|
+
```typescript
|
|
239
|
+
try {
|
|
240
|
+
const result = await Task({ subagent_type: "implementer", ... })
|
|
241
|
+
} catch (error) {
|
|
242
|
+
// 재시도 또는 대체 에이전트
|
|
243
|
+
const result = await Task({ subagent_type: "general-purpose", ... })
|
|
244
|
+
}
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
### 4. 비용 최적화
|
|
248
|
+
|
|
249
|
+
| 전략 | 적용 |
|
|
250
|
+
|------|------|
|
|
251
|
+
| 모델 티어링 | 탐색=haiku, 구현=sonnet, 분석=opus |
|
|
252
|
+
| 병렬 최대화 | 독립 작업 동시 실행 |
|
|
253
|
+
| 불필요 호출 제거 | 간단한 작업은 Lead 직접 처리 |
|
|
254
|
+
|
|
255
|
+
</fallback_best_practices>
|
|
256
|
+
|
|
257
|
+
---
|
|
258
|
+
|
|
259
|
+
<migration_guide>
|
|
260
|
+
|
|
261
|
+
## Agent Teams 전환 가이드
|
|
262
|
+
|
|
263
|
+
### Subagent → Agent Teams
|
|
264
|
+
|
|
265
|
+
| Subagent | Agent Teams |
|
|
266
|
+
|----------|-------------|
|
|
267
|
+
| `Task({ ... })` | `Task({ ..., team_name: "...", name: "..." })` |
|
|
268
|
+
| 결과 직접 수집 | TaskList + 메시지 |
|
|
269
|
+
| 자동 종료 | shutdown_request + TeamDelete |
|
|
270
|
+
|
|
271
|
+
### 코드 변환 예시
|
|
272
|
+
|
|
273
|
+
```typescript
|
|
274
|
+
// Before: Subagent
|
|
275
|
+
Task({ subagent_type: "researcher", prompt: "..." })
|
|
276
|
+
Task({ subagent_type: "implementer", prompt: "..." })
|
|
277
|
+
|
|
278
|
+
// After: Agent Teams
|
|
279
|
+
TeamCreate({ team_name: "feature-team" })
|
|
280
|
+
Task({ subagent_type: "researcher", team_name: "feature-team", name: "r1", prompt: "..." })
|
|
281
|
+
Task({ subagent_type: "implementer", team_name: "feature-team", name: "impl1", prompt: "..." })
|
|
282
|
+
// ...작업 완료 후
|
|
283
|
+
SendMessage({ type: "shutdown_request", recipient: "r1" })
|
|
284
|
+
SendMessage({ type: "shutdown_request", recipient: "impl1" })
|
|
285
|
+
TeamDelete()
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
</migration_guide>
|