@kood/claude-code 0.6.6 → 0.7.0

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.
Files changed (170) hide show
  1. package/dist/index.js +7 -1
  2. package/package.json +1 -1
  3. package/templates/.claude/agents/analyst.md +5 -0
  4. package/templates/.claude/agents/architect.md +5 -0
  5. package/templates/.claude/agents/build-fixer.md +1 -0
  6. package/templates/.claude/agents/code-reviewer.md +1 -0
  7. package/templates/.claude/agents/critic.md +4 -0
  8. package/templates/.claude/agents/deep-executor.md +1 -0
  9. package/templates/.claude/agents/dependency-manager.md +2 -0
  10. package/templates/.claude/agents/deployment-validator.md +2 -0
  11. package/templates/.claude/agents/designer.md +2 -0
  12. package/templates/.claude/agents/document-writer.md +3 -0
  13. package/templates/.claude/agents/explore.md +1 -0
  14. package/templates/.claude/agents/git-operator.md +2 -0
  15. package/templates/.claude/agents/implementation-executor.md +2 -0
  16. package/templates/.claude/agents/ko-to-en-translator.md +3 -0
  17. package/templates/.claude/agents/lint-fixer.md +2 -0
  18. package/templates/.claude/agents/planner.md +3 -0
  19. package/templates/.claude/agents/pm.md +349 -0
  20. package/templates/.claude/agents/qa-tester.md +1 -0
  21. package/templates/.claude/agents/refactor-advisor.md +4 -0
  22. package/templates/.claude/agents/researcher.md +9 -1
  23. package/templates/.claude/agents/scientist.md +1 -0
  24. package/templates/.claude/agents/security-reviewer.md +1 -0
  25. package/templates/.claude/agents/tdd-guide.md +1 -0
  26. package/templates/.claude/agents/vision.md +1 -0
  27. package/templates/.claude/instructions/agent-patterns/agent-teams-usage.md +376 -0
  28. package/templates/.claude/instructions/sourcing/reliable-search.md +49 -2
  29. package/templates/.claude/scripts/agent-teams/check-availability.sh +238 -0
  30. package/templates/.claude/scripts/agent-teams/setup-tmux.sh +125 -0
  31. package/templates/.claude/skills/agent-teams-setup/SKILL.md +460 -0
  32. package/templates/.claude/skills/brainstorm/SKILL.md +1 -0
  33. package/templates/.claude/skills/bug-fix/SKILL.md +1 -0
  34. package/templates/.claude/skills/crawler/SKILL.md +2 -0
  35. package/templates/.claude/skills/docs-creator/SKILL.md +1 -0
  36. package/templates/.claude/skills/docs-fetch/SKILL.md +6 -4
  37. package/templates/.claude/skills/docs-refactor/SKILL.md +1 -0
  38. package/templates/.claude/skills/elon-musk/SKILL.md +1 -0
  39. package/templates/.claude/skills/execute/SKILL.md +1 -0
  40. package/templates/.claude/skills/feedback/SKILL.md +1 -0
  41. package/templates/.claude/skills/figma-to-code/SKILL.md +1 -0
  42. package/templates/.claude/skills/genius-thinking/SKILL.md +1 -0
  43. package/templates/.claude/skills/global-uiux-design/SKILL.md +1 -0
  44. package/templates/.claude/skills/korea-uiux-design/SKILL.md +1 -0
  45. package/templates/.claude/skills/nextjs-react-best-practices/SKILL.md +1 -0
  46. package/templates/.claude/skills/plan/SKILL.md +1 -0
  47. package/templates/.claude/skills/prd/SKILL.md +1 -0
  48. package/templates/.claude/skills/project-optimizer/AGENTS.md +275 -0
  49. package/templates/.claude/skills/project-optimizer/SKILL.md +375 -0
  50. package/templates/.claude/skills/project-optimizer/rules/arch-config-centralize.md +66 -0
  51. package/templates/.claude/skills/project-optimizer/rules/arch-hot-path.md +35 -0
  52. package/templates/.claude/skills/project-optimizer/rules/arch-interface-segregation.md +51 -0
  53. package/templates/.claude/skills/project-optimizer/rules/arch-module-boundary.md +42 -0
  54. package/templates/.claude/skills/project-optimizer/rules/build-cache.md +57 -0
  55. package/templates/.claude/skills/project-optimizer/rules/build-code-split.md +56 -0
  56. package/templates/.claude/skills/project-optimizer/rules/build-incremental.md +65 -0
  57. package/templates/.claude/skills/project-optimizer/rules/build-minify.md +61 -0
  58. package/templates/.claude/skills/project-optimizer/rules/build-tree-shake.md +60 -0
  59. package/templates/.claude/skills/project-optimizer/rules/code-complexity.md +65 -0
  60. package/templates/.claude/skills/project-optimizer/rules/code-dead-elimination.md +32 -0
  61. package/templates/.claude/skills/project-optimizer/rules/code-duplication.md +54 -0
  62. package/templates/.claude/skills/project-optimizer/rules/code-error-handling.md +75 -0
  63. package/templates/.claude/skills/project-optimizer/rules/code-naming.md +52 -0
  64. package/templates/.claude/skills/project-optimizer/rules/concurrency-defer-await.md +54 -0
  65. package/templates/.claude/skills/project-optimizer/rules/concurrency-parallel.md +90 -0
  66. package/templates/.claude/skills/project-optimizer/rules/concurrency-pipeline.md +68 -0
  67. package/templates/.claude/skills/project-optimizer/rules/concurrency-pool.md +68 -0
  68. package/templates/.claude/skills/project-optimizer/rules/deps-lightweight-alt.md +37 -0
  69. package/templates/.claude/skills/project-optimizer/rules/deps-peer-align.md +44 -0
  70. package/templates/.claude/skills/project-optimizer/rules/deps-security-audit.md +45 -0
  71. package/templates/.claude/skills/project-optimizer/rules/deps-unused-removal.md +25 -0
  72. package/templates/.claude/skills/project-optimizer/rules/deps-version-pin.md +40 -0
  73. package/templates/.claude/skills/project-optimizer/rules/dx-ci-speed.md +47 -0
  74. package/templates/.claude/skills/project-optimizer/rules/dx-dev-server.md +35 -0
  75. package/templates/.claude/skills/project-optimizer/rules/dx-lint-config.md +36 -0
  76. package/templates/.claude/skills/project-optimizer/rules/dx-test-coverage.md +34 -0
  77. package/templates/.claude/skills/project-optimizer/rules/dx-type-safety.md +49 -0
  78. package/templates/.claude/skills/project-optimizer/rules/io-batch-queries.md +67 -0
  79. package/templates/.claude/skills/project-optimizer/rules/io-cache-layer.md +67 -0
  80. package/templates/.claude/skills/project-optimizer/rules/io-connection-reuse.md +67 -0
  81. package/templates/.claude/skills/project-optimizer/rules/io-serialize-minimal.md +61 -0
  82. package/templates/.claude/skills/project-optimizer/rules/io-stream.md +75 -0
  83. package/templates/.claude/skills/project-optimizer/rules/memory-bounded-cache.md +65 -0
  84. package/templates/.claude/skills/project-optimizer/rules/memory-large-data.md +64 -0
  85. package/templates/.claude/skills/project-optimizer/rules/memory-lazy-init.md +78 -0
  86. package/templates/.claude/skills/project-optimizer/rules/memory-leak-prevention.md +79 -0
  87. package/templates/.claude/skills/project-optimizer/rules/memory-pool-reuse.md +70 -0
  88. package/templates/.claude/skills/ralph/SKILL.md +1 -0
  89. package/templates/.claude/skills/refactor/SKILL.md +1 -0
  90. package/templates/.claude/skills/research/SKILL.md +1 -0
  91. package/templates/.claude/skills/sql-optimizer/SKILL.md +438 -0
  92. package/templates/.claude/skills/sql-optimizer/orm-patterns.md +218 -0
  93. package/templates/.claude/skills/startup-validator/SKILL.md +1 -0
  94. package/templates/.claude/skills/tanstack-start-react-best-practices/AGENTS.md +53 -14
  95. package/templates/.claude/skills/tanstack-start-react-best-practices/SKILL.md +94 -27
  96. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/bundle-defer-third-party.md +42 -19
  97. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/client-optimistic-updates.md +109 -0
  98. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/client-suspense-query.md +74 -0
  99. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/client-use-hook.md +81 -0
  100. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/rerender-react-compiler.md +81 -0
  101. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/routing-beforeload-auth.md +121 -0
  102. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/routing-file-conventions.md +104 -0
  103. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/routing-link-navigation.md +119 -0
  104. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/routing-nested-layouts.md +155 -0
  105. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/routing-path-params.md +89 -0
  106. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/routing-pending-component.md +110 -0
  107. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/routing-preload-strategy.md +91 -0
  108. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/routing-router-context.md +120 -0
  109. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/routing-search-params.md +114 -0
  110. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-deferred-data.md +1 -1
  111. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-error-boundaries.md +79 -0
  112. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-middleware.md +85 -0
  113. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-serialization.md +56 -21
  114. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-streaming.md +84 -0
  115. package/templates/.claude/skills/tanstack-start-react-best-practices/rules/server-validator.md +71 -0
  116. package/templates/.claude/skills/tauri-react-best-practices/AGENTS.md +527 -0
  117. package/templates/.claude/skills/tauri-react-best-practices/SKILL.md +571 -0
  118. package/templates/.claude/skills/tauri-react-best-practices/rules/bundle-barrel-imports.md +140 -0
  119. package/templates/.claude/skills/tauri-react-best-practices/rules/bundle-cargo-profile.md +96 -0
  120. package/templates/.claude/skills/tauri-react-best-practices/rules/bundle-frontend-treeshake.md +242 -0
  121. package/templates/.claude/skills/tauri-react-best-practices/rules/bundle-lazy-components.md +255 -0
  122. package/templates/.claude/skills/tauri-react-best-practices/rules/bundle-remove-unused-commands.md +160 -0
  123. package/templates/.claude/skills/tauri-react-best-practices/rules/deploy-ci-pipeline.md +269 -0
  124. package/templates/.claude/skills/tauri-react-best-practices/rules/deploy-signing.md +207 -0
  125. package/templates/.claude/skills/tauri-react-best-practices/rules/deploy-updater.md +226 -0
  126. package/templates/.claude/skills/tauri-react-best-practices/rules/ipc-async-commands.md +172 -0
  127. package/templates/.claude/skills/tauri-react-best-practices/rules/ipc-batch-commands.md +133 -0
  128. package/templates/.claude/skills/tauri-react-best-practices/rules/ipc-binary-response.md +198 -0
  129. package/templates/.claude/skills/tauri-react-best-practices/rules/ipc-channel-streaming.md +186 -0
  130. package/templates/.claude/skills/tauri-react-best-practices/rules/ipc-error-handling.md +250 -0
  131. package/templates/.claude/skills/tauri-react-best-practices/rules/ipc-type-safe.md +227 -0
  132. package/templates/.claude/skills/tauri-react-best-practices/rules/perf-derived-state.md +231 -0
  133. package/templates/.claude/skills/tauri-react-best-practices/rules/perf-functional-setstate.md +191 -0
  134. package/templates/.claude/skills/tauri-react-best-practices/rules/perf-index-maps.md +276 -0
  135. package/templates/.claude/skills/tauri-react-best-practices/rules/perf-lazy-state-init.md +196 -0
  136. package/templates/.claude/skills/tauri-react-best-practices/rules/plugin-lifecycle.md +265 -0
  137. package/templates/.claude/skills/tauri-react-best-practices/rules/plugin-mobile-compat.md +199 -0
  138. package/templates/.claude/skills/tauri-react-best-practices/rules/plugin-permission-scope.md +193 -0
  139. package/templates/.claude/skills/tauri-react-best-practices/rules/react-error-boundary.md +239 -0
  140. package/templates/.claude/skills/tauri-react-best-practices/rules/react-event-listener.md +151 -0
  141. package/templates/.claude/skills/tauri-react-best-practices/rules/react-file-src.md +155 -0
  142. package/templates/.claude/skills/tauri-react-best-practices/rules/react-invoke-hook.md +139 -0
  143. package/templates/.claude/skills/tauri-react-best-practices/rules/react-optimistic-update.md +211 -0
  144. package/templates/.claude/skills/tauri-react-best-practices/rules/security-capability-split.md +205 -0
  145. package/templates/.claude/skills/tauri-react-best-practices/rules/security-csp.md +207 -0
  146. package/templates/.claude/skills/tauri-react-best-practices/rules/security-least-privilege.md +106 -0
  147. package/templates/.claude/skills/tauri-react-best-practices/rules/security-no-wildcard.md +253 -0
  148. package/templates/.claude/skills/tauri-react-best-practices/rules/security-scope-paths.md +160 -0
  149. package/templates/.claude/skills/tauri-react-best-practices/rules/state-async-mutex.md +270 -0
  150. package/templates/.claude/skills/tauri-react-best-practices/rules/state-mutex-pattern.md +265 -0
  151. package/templates/.claude/skills/tauri-react-best-practices/rules/state-react-sync.md +375 -0
  152. package/templates/.claude/skills/tauri-react-best-practices/rules/state-single-container.md +275 -0
  153. package/templates/tanstack-start/docs/architecture.md +238 -167
  154. package/templates/tanstack-start/docs/library/tanstack-router/error-handling.md +777 -38
  155. package/templates/tanstack-start/docs/library/tanstack-router/hooks.md +549 -37
  156. package/templates/tanstack-start/docs/library/tanstack-router/index.md +895 -111
  157. package/templates/tanstack-start/docs/library/tanstack-router/navigation.md +641 -43
  158. package/templates/tanstack-start/docs/library/tanstack-router/route-context.md +889 -38
  159. package/templates/tanstack-start/docs/library/tanstack-router/search-params.md +891 -29
  160. package/templates/tanstack-start/docs/library/tanstack-start/auth-patterns.md +972 -36
  161. package/templates/tanstack-start/docs/library/tanstack-start/index.md +1525 -881
  162. package/templates/tanstack-start/docs/library/tanstack-start/middleware.md +1099 -20
  163. package/templates/tanstack-start/docs/library/tanstack-start/routing.md +796 -30
  164. package/templates/tanstack-start/docs/library/tanstack-start/server-functions.md +953 -35
  165. package/templates/tanstack-start/docs/library/tanstack-start/setup.md +371 -15
  166. package/templates/tauri/CLAUDE.md +189 -0
  167. package/templates/tauri/docs/guides/distribution.md +261 -0
  168. package/templates/tauri/docs/guides/getting-started.md +302 -0
  169. package/templates/tauri/docs/guides/mobile.md +288 -0
  170. package/templates/tauri/docs/library/tauri/index.md +510 -0
@@ -0,0 +1,376 @@
1
+ # Agent Teams 활용 가이드
2
+
3
+ > 스킬에서 Agent Teams를 효과적으로 활용하는 방법
4
+
5
+ ---
6
+
7
+ <availability_check>
8
+
9
+ ## 환경 확인
10
+
11
+ ### 스크립트 사용
12
+
13
+ ```bash
14
+ # Agent Teams 사용 가능 여부 확인
15
+ .claude/scripts/agent-teams/check-availability.sh
16
+
17
+ # tmux 환경 세팅
18
+ .claude/scripts/agent-teams/setup-tmux.sh
19
+ ```
20
+
21
+ ### 프로그래매틱 확인
22
+
23
+ ```bash
24
+ # 1. 환경변수 확인
25
+ if [[ "$CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS" == "1" ]]; then
26
+ AGENT_TEAMS_AVAILABLE=true
27
+ fi
28
+
29
+ # 2. settings.json 확인 (글로벌 + 프로젝트)
30
+ for f in ~/.claude/settings.json .claude/settings.json; do
31
+ if grep -q '"CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS".*"1"' "$f" 2>/dev/null; then
32
+ AGENT_TEAMS_AVAILABLE=true
33
+ fi
34
+ done
35
+
36
+ # 3. 에이전트 디렉토리 확인
37
+ if [[ -d ".claude/agents" ]] && [[ $(ls .claude/agents/*.md 2>/dev/null | wc -l) -gt 0 ]]; then
38
+ AGENTS_AVAILABLE=true
39
+ fi
40
+ ```
41
+
42
+ </availability_check>
43
+
44
+ ---
45
+
46
+ <subagent_vs_teams>
47
+
48
+ ## Subagent vs Agent Teams
49
+
50
+ | 항목 | Subagents | Agent Teams |
51
+ |------|-----------|-------------|
52
+ | **컨텍스트** | 자체 컨텍스트, 결과만 반환 | 자체 컨텍스트, 완전 독립 |
53
+ | **통신** | 메인 에이전트에게만 보고 | 팀원끼리 직접 메시징 |
54
+ | **조율** | 메인 에이전트가 모든 작업 관리 | 공유 태스크 리스트로 자기조율 |
55
+ | **토큰 비용** | 낮음 (결과 요약) | 높음 (각 팀원 별도 인스턴스) |
56
+ | **적합** | 결과만 필요한 집중 작업 | 토론과 협업이 필요한 복잡한 작업 |
57
+
58
+ ### 선택 기준
59
+
60
+ | 상황 | 권장 |
61
+ |------|------|
62
+ | 결과만 필요, 집중된 작업 | Subagent |
63
+ | 조율/토론/독립적 결정 필요 | Agent Teams |
64
+ | 토큰 비용 민감 | Subagent 또는 단독 세션 |
65
+ | 병렬 연구/리뷰 | Agent Teams |
66
+ | 단순 작업 (1-2 파일) | 직접 처리 |
67
+
68
+ </subagent_vs_teams>
69
+
70
+ ---
71
+
72
+ <decision_matrix>
73
+
74
+ ## 사용 결정 매트릭스
75
+
76
+ | 조건 | 권장 방식 | 이유 |
77
+ |------|----------|------|
78
+ | Agent Teams 비활성화 | Task (subagent) | 환경 미지원 |
79
+ | 단순 작업 (1-2 파일) | 직접 처리 | 오버헤드 불필요 |
80
+ | 독립적 병렬 작업 | Agent Teams | 진정한 병렬 실행 |
81
+ | 팀원 간 소통 필요 | Agent Teams | 메시지 교환 가능 |
82
+ | 순차 의존성 있음 | blockedBy 또는 Subagent | 의존성 관리 |
83
+ | tmux/iTerm2 환경 | split-pane 모드 | 시각적 모니터링 |
84
+ | VS Code/일반 터미널 | in-process 모드 | 호환성 |
85
+
86
+ </decision_matrix>
87
+
88
+ ---
89
+
90
+ <teammate_modes>
91
+
92
+ ## teammateMode 설정
93
+
94
+ ### 모드별 특징
95
+
96
+ | 모드 | 특징 | 권장 상황 |
97
+ |------|------|----------|
98
+ | **auto** | tmux 세션이면 split-pane, 아니면 in-process | 기본값 |
99
+ | **tmux** | 각 팀원 별도 pane (tmux/iTerm2 필요) | 3명+ 팀 |
100
+ | **in-process** | 단일 터미널, Shift+Up/Down 전환 | 2명 이하 팀, VS Code |
101
+
102
+ ### 설정 방법
103
+
104
+ ```json
105
+ // ~/.claude/settings.json
106
+ {
107
+ "teammateMode": "auto",
108
+ "env": {
109
+ "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
110
+ }
111
+ }
112
+ ```
113
+
114
+ ### tmux 세션 시작
115
+
116
+ ```bash
117
+ # 새 tmux 세션
118
+ tmux new -s claude
119
+
120
+ # iTerm2 (macOS)
121
+ tmux -CC
122
+ ```
123
+
124
+ ### 터미널 지원 현황
125
+
126
+ | 터미널 | Split Panes |
127
+ |--------|-------------|
128
+ | tmux | ✅ |
129
+ | iTerm2 | ✅ |
130
+ | WezTerm | ❌ (요청 중) |
131
+ | Zellij | ❌ (요청 중) |
132
+ | VS Code | ❌ |
133
+ | Windows Terminal | ❌ |
134
+ | Ghostty | ❌ |
135
+
136
+ </teammate_modes>
137
+
138
+ ---
139
+
140
+ <usage_patterns>
141
+
142
+ ## 활용 패턴
143
+
144
+ ### 패턴 1: 환경 감지 후 분기
145
+
146
+ ```typescript
147
+ if (AGENT_TEAMS_AVAILABLE && 복잡한_병렬_작업) {
148
+ TeamCreate({ team_name: "feature-x", description: "..." })
149
+ Task({ subagent_type: "...", team_name: "feature-x", name: "worker-1" })
150
+ Task({ subagent_type: "...", team_name: "feature-x", name: "worker-2" })
151
+ } else {
152
+ // Subagent 폴백
153
+ Task({ subagent_type: "...", ... })
154
+ }
155
+ ```
156
+
157
+ ### 패턴 2: 팀 생성 + 태스크 분배
158
+
159
+ ```typescript
160
+ // 1. 팀 생성
161
+ TeamCreate({ team_name: "review-team", description: "코드 리뷰" })
162
+
163
+ // 2. 태스크 생성
164
+ TaskCreate({ subject: "보안 검토", description: "...", activeForm: "보안 검토 중" })
165
+ TaskCreate({ subject: "성능 검토", description: "...", activeForm: "성능 검토 중" })
166
+
167
+ // 3. 팀원 스폰 (병렬)
168
+ Task({ subagent_type: "security-reviewer", team_name: "review-team", name: "security" })
169
+ Task({ subagent_type: "code-reviewer", team_name: "review-team", name: "performance" })
170
+
171
+ // 4. 완료 대기 후 종합
172
+ TaskList()
173
+ ```
174
+
175
+ ### 패턴 3: Plan-First (비용 최적화)
176
+
177
+ ```typescript
178
+ // Phase 1: 계획 (저렴)
179
+ EnterPlanMode()
180
+ // 코드베이스 탐색 + 구현 계획 수립
181
+
182
+ // Phase 2: 실행 (고비용, 고속)
183
+ TeamCreate({ team_name: "impl-team" })
184
+ // 승인된 계획을 팀에 전달하여 병렬 실행
185
+ ```
186
+
187
+ </usage_patterns>
188
+
189
+ ---
190
+
191
+ <send_message>
192
+
193
+ ## SendMessage 사용법
194
+
195
+ ### 메시지 타입
196
+
197
+ | 타입 | 용도 |
198
+ |------|------|
199
+ | **message** | 특정 팀원에게 DM |
200
+ | **broadcast** | 모든 팀원에게 전송 (비용 높음) |
201
+ | **shutdown_request** | 팀원에게 종료 요청 |
202
+ | **shutdown_response** | 종료 요청에 응답 |
203
+ | **plan_approval_response** | 계획 승인/거부 |
204
+
205
+ ### 사용 예시
206
+
207
+ ```json
208
+ // DM
209
+ { "type": "message", "recipient": "researcher",
210
+ "content": "...", "summary": "Brief status" }
211
+
212
+ // 브로드캐스트 (신중히!)
213
+ { "type": "broadcast", "content": "...", "summary": "Critical" }
214
+
215
+ // 종료 요청
216
+ { "type": "shutdown_request", "recipient": "researcher", "content": "완료" }
217
+
218
+ // 종료 응답
219
+ { "type": "shutdown_response", "request_id": "abc-123", "approve": true }
220
+ ```
221
+
222
+ **중요**: 텍스트 출력은 팀원에게 보이지 않음. 반드시 SendMessage 사용.
223
+
224
+ </send_message>
225
+
226
+ ---
227
+
228
+ <keyboard_shortcuts>
229
+
230
+ ## 키보드 단축키 (in-process)
231
+
232
+ | 단축키 | 기능 |
233
+ |--------|------|
234
+ | `Shift+Up/Down` | 팀원 선택 |
235
+ | `Enter` | 선택된 팀원 세션 보기 |
236
+ | `Escape` | 현재 턴 중단 |
237
+ | `Ctrl+T` | 태스크 목록 토글 |
238
+ | `Shift+Tab` | Delegate mode 전환 |
239
+
240
+ </keyboard_shortcuts>
241
+
242
+ ---
243
+
244
+ <best_practices>
245
+
246
+ ## 베스트 프랙티스
247
+
248
+ | 원칙 | 설명 |
249
+ |------|------|
250
+ | **환경 감지 우선** | Agent Teams 사용 전 항상 가용성 확인 |
251
+ | **폴백 준비** | Subagent 방식으로 폴백 로직 구현 |
252
+ | **풍부한 컨텍스트** | 팀원은 Lead 대화 기록 미상속. spawn 시 상세 프롬프트 필수 |
253
+ | **적절한 태스크 크기** | 팀원당 5-6개 태스크 권장 |
254
+ | **파일 충돌 방지** | 한 파일은 한 팀원만 수정 |
255
+ | **모델 라우팅** | Lead: Opus, Teammates: Sonnet |
256
+ | **팀 정리** | 작업 완료 후 shutdown → TeamDelete |
257
+ | **Delegate Mode** | Lead가 직접 구현 방지, 조율에 집중 |
258
+ | **Plan Approval** | 위험한 작업 전 계획 승인 요구 |
259
+
260
+ ### Context 제공 예시
261
+
262
+ ```
263
+ ❌ "인증 모듈 검토해"
264
+ ✅ "src/auth/ 인증 모듈을 보안 취약점 관점으로 검토해.
265
+ 토큰 핸들링, 세션 관리, 입력 검증에 집중해.
266
+ JWT 토큰을 httpOnly 쿠키에 저장함."
267
+ ```
268
+
269
+ </best_practices>
270
+
271
+ ---
272
+
273
+ <common_mistakes>
274
+
275
+ ## 흔한 실수와 해결책
276
+
277
+ | 문제 | 원인 | 해결책 |
278
+ |------|------|--------|
279
+ | Lead가 직접 구현 | 위임 대신 본인이 작업 | `Shift+Tab` delegate mode |
280
+ | 팀원 안 보임 | in-process 전환 안 함 | `Shift+Down` 팀원 순환 |
281
+ | 과도한 권한 프롬프트 | 매번 승인 요청 | permission settings 사전 승인 |
282
+ | 팀원 에러 정지 | 예외 처리 실패 | 추가 지시 또는 대체 팀원 spawn |
283
+ | Lead 조기 종료 | 팀원 완료 전 마무리 | "모든 팀원 완료까지 대기" 명시 |
284
+ | 고아 tmux 세션 | 정리 안 됨 | `tmux ls` → `tmux kill-session` |
285
+ | 4+ 팀원 동시 spawn | tmux race condition | 2-3개씩 순차 spawn |
286
+
287
+ </common_mistakes>
288
+
289
+ ---
290
+
291
+ <limitations>
292
+
293
+ ## 제한사항 및 주의사항
294
+
295
+ ### 아키텍처 제한
296
+
297
+ | 제한 | 설명 |
298
+ |------|------|
299
+ | 세션 재개 불가 | `/resume` 시 in-process 팀원 복원 안 됨 |
300
+ | 세션당 한 팀 | 중첩 팀 불가 |
301
+ | 리더십 고정 | 팀 생성 세션이 전체 수명 동안 리더 |
302
+ | 권한 상속 | 팀원별 개별 권한 설정 불가 |
303
+ | 종료 지연 | 현재 작업 완료까지 대기 |
304
+ | Working Dir 공유 | 팀원에 다른 repo 할당 불가 |
305
+
306
+ ### 알려진 버그
307
+
308
+ | 버그 | 영향 | 워크어라운드 |
309
+ |------|------|-------------|
310
+ | 컨텍스트 압축 시 팀 손실 | Lead가 팀 인식 상실 | 200K 토큰 전 작업 완료 |
311
+ | tmux split-pane race | `send-keys` corruption | 2-3개씩 순차 spawn |
312
+ | PermissionRequest hook 미작동 | 서브에이전트 권한 hook 무시 | 사전 승인 또는 수동 확인 |
313
+ | TaskUpdate 상태 비동기 | TeamDelete 후 상태 손실 | TeamDelete 후 재확인 |
314
+
315
+ </limitations>
316
+
317
+ ---
318
+
319
+ <cost_optimization>
320
+
321
+ ## 비용 최적화
322
+
323
+ ### 토큰 비용 구조
324
+
325
+ - 솔로 세션: ~200k tokens
326
+ - 3인 팀: ~800k tokens (4x)
327
+ - 각 팀원 별도 컨텍스트 윈도우
328
+
329
+ ### 비용 절감 팁
330
+
331
+ | 전략 | 효과 |
332
+ |------|------|
333
+ | 모델 혼합 (Opus Lead + Sonnet Teammates) | ~40% 절감 |
334
+ | Plan-First 패턴 | 계획에서 실패 조기 발견 |
335
+ | 적절한 범위 지정 | 과도한 탐색 방지 |
336
+ | 단순 작업은 단독 세션 | 조율 오버헤드 제거 |
337
+
338
+ </cost_optimization>
339
+
340
+ ---
341
+
342
+ <ideal_use_cases>
343
+
344
+ ## 이상적인 사용 사례
345
+
346
+ | 패턴 | 설명 |
347
+ |------|------|
348
+ | **경쟁 가설 디버깅** | 여러 버그 원인 병렬 검증 |
349
+ | **다각도 코드 리뷰** | 보안/성능/테스트 동시 검토 |
350
+ | **Cross-Layer 개발** | 프론트엔드/백엔드/테스트 분리 |
351
+ | **연구 및 탐색** | 여러 접근법 병렬 탐색 |
352
+ | **QA Swarm** | 다양한 품질 관점 동시 테스트 |
353
+
354
+ ### 부적합한 경우
355
+
356
+ - 순차 작업
357
+ - 같은 파일 편집
358
+ - 의존성 많은 작업
359
+ - 단순 단일 파일 수정
360
+
361
+ </ideal_use_cases>
362
+
363
+ ---
364
+
365
+ <reference>
366
+
367
+ ## 참조
368
+
369
+ | 문서 | 경로 |
370
+ |------|------|
371
+ | 공식 문서 | https://code.claude.com/docs/en/agent-teams |
372
+ | 환경 확인 스크립트 | `.claude/scripts/agent-teams/check-availability.sh` |
373
+ | tmux 세팅 스크립트 | `.claude/scripts/agent-teams/setup-tmux.sh` |
374
+ | agent-teams-setup 스킬 | `.claude/skills/agent-teams-setup/SKILL.md` |
375
+
376
+ </reference>
@@ -298,6 +298,7 @@ WebSearch({ query: "AI agent frameworks comparison" })
298
298
  | **WebSearch** | 연도 포함, 영어+한국어 병렬 |
299
299
  | **SearXNG** | `time_range=year` + 연도 키워드 |
300
300
  | **Firecrawl** | 공식 문서 URL 직접 지정 |
301
+ | **Jina Reader** | `WebFetch('https://r.jina.ai/{URL}')` — JS 렌더링 클린 MD 변환 |
301
302
  | **GitHub** | `created:>YYYY-01-01` 필터, stars 정렬 |
302
303
 
303
304
  ---
@@ -314,6 +315,7 @@ Tier 1 (MCP, ToolSearch로 감지):
314
315
  Tier 2 (내장, 항상 가용):
315
316
  WebSearch → 웹 검색 (연도 키워드 필수)
316
317
  WebFetch → 페이지 직접 읽기
318
+ Jina Reader → WebFetch('https://r.jina.ai/{URL}') 클린 마크다운 변환
317
319
  gh CLI → GitHub API (Bash via explore)
318
320
 
319
321
  Tier 3: Playwright → SPA/JS 렌더링 필요 시 (crawler skill)
@@ -323,10 +325,10 @@ Tier 3: Playwright → SPA/JS 렌더링 필요 시 (crawler skill)
323
325
 
324
326
  | MCP 도구 | 용도 | 미설치 시 폴백 |
325
327
  |----------|------|--------------|
326
- | `firecrawl_map/scrape/crawl` | 사이트 구조/페이지 수집 | WebFetch (페이지별) |
328
+ | `firecrawl_map/scrape/crawl` | 사이트 구조/페이지 수집 | Jina Reader → WebFetch (페이지별) |
327
329
  | SearXNG `web_search` | 246+ 엔진 메타검색 | WebSearch (내장) |
328
330
  | `search_repositories/code/issues` | GitHub 리포/코드/이슈 | `gh search` (Bash) |
329
- | `resolve-library-id` + `query-docs` | 라이브러리 문서 조회 | WebFetch (직접) |
331
+ | `resolve-library-id` + `query-docs` | 라이브러리 문서 조회 | Jina Reader → WebFetch (직접) |
330
332
 
331
333
  ### MCP 감지 (Phase 0 공통)
332
334
 
@@ -339,6 +341,51 @@ ToolSearch("context7") → Context7 활성화
339
341
 
340
342
  ---
341
343
 
344
+ ## Jina Reader (`r.jina.ai`)
345
+
346
+ **용도:** URL → 클린 마크다운 변환 (JS 렌더링 지원, 광고/네비 제거)
347
+
348
+ | 특성 | 설명 |
349
+ |------|------|
350
+ | **엔드포인트** | `https://r.jina.ai/{URL}` |
351
+ | **호출 방법** | `WebFetch('https://r.jina.ai/{URL}', '{프롬프트}')` |
352
+ | **장점** | JS 렌더링, 클린 MD, 광고/네비 자동 제거, 무료 |
353
+ | **한계** | 검색 기능 없음 (URL 필수), 대량 크롤링 비적합 |
354
+
355
+ ### 활용 시나리오
356
+
357
+ | 시나리오 | 사용 |
358
+ |----------|------|
359
+ | **WebFetch 실패** | JS 렌더링 필요 페이지 → Jina Reader 폴백 |
360
+ | **Firecrawl 미설치** | 개별 페이지 클린 MD 변환 |
361
+ | **공식 문서 읽기** | SPA 기반 문서 사이트 (React, Vue 등) |
362
+ | **블로그/미디어** | 광고 제거된 본문만 추출 |
363
+
364
+ ### 사용 패턴
365
+
366
+ ```typescript
367
+ // ✅ 기본: URL을 클린 마크다운으로 변환
368
+ WebFetch('https://r.jina.ai/https://react.dev/reference/react/use', '핵심 API 사용법 추출')
369
+
370
+ // ✅ WebFetch 실패 시 Jina 폴백
371
+ WebFetch('https://docs.example.com/guide') // → 빈 결과 (JS 렌더링 필요)
372
+ WebFetch('https://r.jina.ai/https://docs.example.com/guide', '가이드 내용 추출') // → 클린 MD
373
+
374
+ // ✅ Firecrawl 미설치 시 개별 페이지 대안
375
+ WebFetch('https://r.jina.ai/https://prisma.io/docs/orm/prisma-schema', 'Prisma 스키마 문법 추출')
376
+
377
+ // ❌ 검색 용도로 사용 (검색은 WebSearch/SearXNG 사용)
378
+ WebFetch('https://r.jina.ai/react hooks tutorial') // 잘못된 사용
379
+ ```
380
+
381
+ ### 폴백 체인 (페이지 읽기)
382
+
383
+ ```
384
+ Firecrawl scrape → Jina Reader → WebFetch (직접) → Playwright (최후 수단)
385
+ ```
386
+
387
+ ---
388
+
342
389
  ## 수집 후 검증
343
390
 
344
391
  | 단계 | 검증 |
@@ -0,0 +1,238 @@
1
+ #!/bin/bash
2
+ # Agent Teams 사용 가능 여부 확인
3
+ # Usage: .claude/scripts/agent-teams/check-availability.sh
4
+
5
+ set -e
6
+
7
+ # Colors
8
+ RED='\033[0;31m'
9
+ GREEN='\033[0;32m'
10
+ YELLOW='\033[0;33m'
11
+ BLUE='\033[0;34m'
12
+ NC='\033[0m' # No Color
13
+
14
+ echo -e "${BLUE}=== Agent Teams Availability Check ===${NC}"
15
+ echo ""
16
+
17
+ PASSED=0
18
+ FAILED=0
19
+ WARNINGS=0
20
+
21
+ # 1. 환경변수 / settings.json 확인
22
+ echo -e "${BLUE}[1/5] Agent Teams 활성화 확인${NC}"
23
+
24
+ AGENT_TEAMS_ENABLED=false
25
+ ENABLED_SOURCE=""
26
+
27
+ # 환경변수 확인
28
+ if [[ "$CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS" == "1" ]]; then
29
+ AGENT_TEAMS_ENABLED=true
30
+ ENABLED_SOURCE="환경변수"
31
+ fi
32
+
33
+ # 글로벌 settings.json 확인 (~/.claude/settings.json)
34
+ GLOBAL_SETTINGS="$HOME/.claude/settings.json"
35
+ if [[ -f "$GLOBAL_SETTINGS" ]] && grep -q '"CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS".*"1"' "$GLOBAL_SETTINGS" 2>/dev/null; then
36
+ AGENT_TEAMS_ENABLED=true
37
+ if [[ -n "$ENABLED_SOURCE" ]]; then
38
+ ENABLED_SOURCE="$ENABLED_SOURCE + ~/.claude/settings.json"
39
+ else
40
+ ENABLED_SOURCE="~/.claude/settings.json"
41
+ fi
42
+ fi
43
+
44
+ # 프로젝트 settings.json 확인 (.claude/settings.json)
45
+ PROJECT_SETTINGS=".claude/settings.json"
46
+ if [[ -f "$PROJECT_SETTINGS" ]] && grep -q '"CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS".*"1"' "$PROJECT_SETTINGS" 2>/dev/null; then
47
+ AGENT_TEAMS_ENABLED=true
48
+ if [[ -n "$ENABLED_SOURCE" ]]; then
49
+ ENABLED_SOURCE="$ENABLED_SOURCE + .claude/settings.json"
50
+ else
51
+ ENABLED_SOURCE=".claude/settings.json"
52
+ fi
53
+ fi
54
+
55
+ if [[ "$AGENT_TEAMS_ENABLED" == "true" ]]; then
56
+ echo -e " ${GREEN}✓${NC} Agent Teams 활성화됨 ($ENABLED_SOURCE)"
57
+ ((PASSED++))
58
+ else
59
+ echo -e " ${RED}✗${NC} Agent Teams 미활성화"
60
+ echo -e " 설정 방법 (하나 선택):"
61
+ echo -e " 1. 환경변수: export CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1"
62
+ echo -e " 2. ~/.claude/settings.json:"
63
+ echo -e ' { "env": { "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1" } }'
64
+ echo -e " 3. .claude/settings.json (프로젝트):"
65
+ echo -e ' { "env": { "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1" } }'
66
+ ((FAILED++))
67
+ fi
68
+
69
+ # 2. .claude/agents/ 디렉토리 확인
70
+ echo ""
71
+ echo -e "${BLUE}[2/5] 에이전트 디렉토리 확인${NC}"
72
+ AGENTS_DIR=".claude/agents"
73
+ if [[ -d "$AGENTS_DIR" ]]; then
74
+ echo -e " ${GREEN}✓${NC} $AGENTS_DIR 디렉토리 존재"
75
+ ((PASSED++))
76
+ else
77
+ echo -e " ${RED}✗${NC} $AGENTS_DIR 디렉토리 없음"
78
+ echo -e " 생성: mkdir -p $AGENTS_DIR"
79
+ ((FAILED++))
80
+ fi
81
+
82
+ # 3. 에이전트 파일 확인
83
+ echo ""
84
+ echo -e "${BLUE}[3/5] 에이전트 파일 확인${NC}"
85
+ if [[ -d "$AGENTS_DIR" ]]; then
86
+ AGENT_COUNT=$(find "$AGENTS_DIR" -name "*.md" -type f 2>/dev/null | wc -l | tr -d ' ')
87
+ if [[ $AGENT_COUNT -gt 0 ]]; then
88
+ echo -e " ${GREEN}✓${NC} $AGENT_COUNT개 에이전트 발견"
89
+
90
+ # 주요 에이전트 확인
91
+ CORE_AGENTS=("explore" "planner" "implementation-executor" "code-reviewer" "pm")
92
+ MISSING_CORE=()
93
+ for agent in "${CORE_AGENTS[@]}"; do
94
+ if [[ -f "$AGENTS_DIR/$agent.md" ]]; then
95
+ echo -e " ${GREEN}✓${NC} $agent"
96
+ else
97
+ MISSING_CORE+=("$agent")
98
+ fi
99
+ done
100
+
101
+ if [[ ${#MISSING_CORE[@]} -gt 0 ]]; then
102
+ echo -e " ${YELLOW}!${NC} 권장 에이전트 누락: ${MISSING_CORE[*]}"
103
+ ((WARNINGS++))
104
+ fi
105
+ ((PASSED++))
106
+ else
107
+ echo -e " ${YELLOW}!${NC} 에이전트 파일 없음"
108
+ echo -e " /agent-teams-setup 스킬로 기본 에이전트 생성 권장"
109
+ ((WARNINGS++))
110
+ fi
111
+ else
112
+ echo -e " ${YELLOW}!${NC} 디렉토리 없어 확인 불가"
113
+ ((WARNINGS++))
114
+ fi
115
+
116
+ # 4. Frontmatter 형식 검증
117
+ echo ""
118
+ echo -e "${BLUE}[4/5] Frontmatter 형식 검증${NC}"
119
+ if [[ -d "$AGENTS_DIR" ]]; then
120
+ INVALID_FILES=()
121
+
122
+ for file in "$AGENTS_DIR"/*.md; do
123
+ [[ -f "$file" ]] || continue
124
+
125
+ # name 필드 확인
126
+ if ! grep -q "^name:" "$file" 2>/dev/null; then
127
+ INVALID_FILES+=("$(basename "$file"): name 필드 없음")
128
+ continue
129
+ fi
130
+
131
+ # description 필드 확인
132
+ if ! grep -q "^description:" "$file" 2>/dev/null; then
133
+ INVALID_FILES+=("$(basename "$file"): description 필드 없음")
134
+ continue
135
+ fi
136
+
137
+ # model 별칭 확인 (opus, sonnet, haiku만 허용)
138
+ if grep -q "^model:" "$file" 2>/dev/null; then
139
+ MODEL=$(grep "^model:" "$file" | head -1 | sed 's/model:[[:space:]]*//' | tr -d ' ')
140
+ if [[ ! "$MODEL" =~ ^(opus|sonnet|haiku|inherit)$ ]]; then
141
+ INVALID_FILES+=("$(basename "$file"): 잘못된 model ($MODEL)")
142
+ fi
143
+ fi
144
+ done
145
+
146
+ if [[ ${#INVALID_FILES[@]} -eq 0 ]]; then
147
+ echo -e " ${GREEN}✓${NC} 모든 에이전트 frontmatter 유효"
148
+ ((PASSED++))
149
+ else
150
+ echo -e " ${YELLOW}!${NC} 일부 에이전트 frontmatter 문제:"
151
+ for issue in "${INVALID_FILES[@]}"; do
152
+ echo -e " - $issue"
153
+ done
154
+ ((WARNINGS++))
155
+ fi
156
+ else
157
+ echo -e " ${YELLOW}!${NC} 디렉토리 없어 검증 불가"
158
+ ((WARNINGS++))
159
+ fi
160
+
161
+ # 5. tmux 환경 확인 및 teammateMode 추천
162
+ echo ""
163
+ echo -e "${BLUE}[5/5] tmux 환경 확인${NC}"
164
+
165
+ TMUX_AVAILABLE=false
166
+ ITERM2_AVAILABLE=false
167
+ RECOMMENDED_MODE="in-process"
168
+
169
+ # tmux 설치 확인
170
+ if command -v tmux &> /dev/null; then
171
+ TMUX_AVAILABLE=true
172
+ TMUX_VERSION=$(tmux -V 2>/dev/null | head -1)
173
+ echo -e " ${GREEN}✓${NC} tmux 설치됨 ($TMUX_VERSION)"
174
+ else
175
+ echo -e " ${YELLOW}!${NC} tmux 미설치"
176
+ echo -e " 설치: brew install tmux (macOS) / apt install tmux (Linux)"
177
+ fi
178
+
179
+ # 현재 tmux 세션 내부인지 확인
180
+ if [[ -n "$TMUX" ]]; then
181
+ echo -e " ${GREEN}✓${NC} 현재 tmux 세션 내부"
182
+ RECOMMENDED_MODE="tmux"
183
+ fi
184
+
185
+ # iTerm2 확인 (macOS)
186
+ if [[ "$TERM_PROGRAM" == "iTerm.app" ]]; then
187
+ ITERM2_AVAILABLE=true
188
+ echo -e " ${GREEN}✓${NC} iTerm2 감지됨"
189
+
190
+ # it2 CLI 확인
191
+ if command -v it2 &> /dev/null; then
192
+ echo -e " ${GREEN}✓${NC} it2 CLI 설치됨"
193
+ RECOMMENDED_MODE="tmux"
194
+ else
195
+ echo -e " ${YELLOW}!${NC} it2 CLI 미설치"
196
+ echo -e " 설치: brew install mkusaka/it2/it2"
197
+ fi
198
+ fi
199
+
200
+ # teammateMode 설정 확인
201
+ echo ""
202
+ echo -e " ${BLUE}권장 teammateMode:${NC} $RECOMMENDED_MODE"
203
+
204
+ # settings.json에서 현재 teammateMode 확인
205
+ CURRENT_MODE=""
206
+ if [[ -f "$GLOBAL_SETTINGS" ]]; then
207
+ CURRENT_MODE=$(grep -o '"teammateMode"[[:space:]]*:[[:space:]]*"[^"]*"' "$GLOBAL_SETTINGS" 2>/dev/null | sed 's/.*: *"\([^"]*\)".*/\1/' || echo "")
208
+ fi
209
+
210
+ if [[ -n "$CURRENT_MODE" ]]; then
211
+ echo -e " ${BLUE}현재 설정:${NC} $CURRENT_MODE"
212
+ if [[ "$CURRENT_MODE" == "$RECOMMENDED_MODE" ]] || [[ "$CURRENT_MODE" == "auto" ]]; then
213
+ echo -e " ${GREEN}✓${NC} 적절한 설정"
214
+ else
215
+ echo -e " ${YELLOW}!${NC} 권장 설정과 다름"
216
+ fi
217
+ else
218
+ echo -e " ${BLUE}현재 설정:${NC} auto (기본값)"
219
+ fi
220
+
221
+ ((PASSED++))
222
+
223
+ # 결과 요약
224
+ echo ""
225
+ echo -e "${BLUE}=== 결과 요약 ===${NC}"
226
+ echo -e " ${GREEN}통과:${NC} $PASSED"
227
+ echo -e " ${RED}실패:${NC} $FAILED"
228
+ echo -e " ${YELLOW}경고:${NC} $WARNINGS"
229
+ echo ""
230
+
231
+ if [[ $FAILED -eq 0 ]]; then
232
+ echo -e "${GREEN}✓ Agent Teams 사용 가능${NC}"
233
+ exit 0
234
+ else
235
+ echo -e "${RED}✗ Agent Teams 사용 불가${NC}"
236
+ echo -e " 위의 실패 항목을 해결해주세요."
237
+ exit 1
238
+ fi