@su-record/vibe 2.0.0 → 2.0.2

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 (69) hide show
  1. package/.claude/agents/explorer.md +48 -48
  2. package/.claude/agents/implementer.md +53 -53
  3. package/.claude/agents/searcher.md +54 -54
  4. package/.claude/agents/simplifier.md +119 -119
  5. package/.claude/agents/tester.md +49 -49
  6. package/.claude/commands/vibe.analyze.md +239 -239
  7. package/.claude/commands/vibe.continue.md +88 -88
  8. package/.claude/commands/vibe.diagram.md +178 -178
  9. package/.claude/commands/vibe.reason.md +306 -306
  10. package/.claude/commands/vibe.run.md +760 -760
  11. package/.claude/commands/vibe.spec.md +339 -339
  12. package/.claude/commands/vibe.tool.md +153 -153
  13. package/.claude/commands/vibe.ui.md +137 -137
  14. package/.claude/commands/vibe.verify.md +238 -238
  15. package/.claude/settings.json +152 -152
  16. package/.claude/settings.local.json +4 -57
  17. package/.vibe/config.json +9 -0
  18. package/.vibe/constitution.md +184 -184
  19. package/.vibe/rules/core/communication-guide.md +104 -104
  20. package/.vibe/rules/core/development-philosophy.md +52 -52
  21. package/.vibe/rules/core/quick-start.md +120 -120
  22. package/.vibe/rules/quality/bdd-contract-testing.md +388 -388
  23. package/.vibe/rules/quality/checklist.md +276 -276
  24. package/.vibe/rules/quality/testing-strategy.md +437 -437
  25. package/.vibe/rules/standards/anti-patterns.md +369 -369
  26. package/.vibe/rules/standards/code-structure.md +291 -291
  27. package/.vibe/rules/standards/complexity-metrics.md +312 -312
  28. package/.vibe/rules/standards/naming-conventions.md +198 -198
  29. package/.vibe/rules/tools/mcp-hi-ai-guide.md +665 -665
  30. package/.vibe/rules/tools/mcp-workflow.md +51 -51
  31. package/.vibe/setup.sh +31 -31
  32. package/CLAUDE.md +122 -122
  33. package/LICENSE +21 -21
  34. package/README.md +568 -568
  35. package/dist/cli/index.d.ts.map +1 -1
  36. package/dist/cli/index.js +391 -406
  37. package/dist/cli/index.js.map +1 -1
  38. package/dist/lib/MemoryManager.js +92 -92
  39. package/dist/lib/PythonParser.js +108 -108
  40. package/dist/lib/gemini-mcp.js +15 -15
  41. package/dist/lib/gemini-oauth.d.ts.map +1 -1
  42. package/dist/lib/gemini-oauth.js +41 -38
  43. package/dist/lib/gemini-oauth.js.map +1 -1
  44. package/dist/lib/gpt-mcp.js +17 -17
  45. package/dist/lib/gpt-oauth.d.ts.map +1 -1
  46. package/dist/lib/gpt-oauth.js +50 -45
  47. package/dist/lib/gpt-oauth.js.map +1 -1
  48. package/dist/tools/analytics/getUsageAnalytics.js +12 -12
  49. package/dist/tools/memory/createMemoryTimeline.js +10 -10
  50. package/dist/tools/memory/getMemoryGraph.js +12 -12
  51. package/dist/tools/memory/getSessionContext.js +9 -9
  52. package/dist/tools/memory/linkMemories.js +14 -14
  53. package/dist/tools/memory/listMemories.js +4 -4
  54. package/dist/tools/memory/recallMemory.js +4 -4
  55. package/dist/tools/memory/saveMemory.js +4 -4
  56. package/dist/tools/memory/searchMemoriesAdvanced.js +22 -22
  57. package/dist/tools/planning/generatePrd.js +46 -46
  58. package/dist/tools/prompt/enhancePromptGemini.js +160 -160
  59. package/dist/tools/reasoning/applyReasoningFramework.js +56 -56
  60. package/dist/tools/semantic/analyzeDependencyGraph.js +12 -12
  61. package/package.json +67 -67
  62. package/templates/constitution-template.md +184 -184
  63. package/templates/contract-backend-template.md +517 -517
  64. package/templates/contract-frontend-template.md +594 -594
  65. package/templates/feature-template.md +96 -96
  66. package/templates/hooks-template.json +103 -103
  67. package/templates/spec-template.md +199 -199
  68. package/dist/lib/vibe-mcp.d.ts.map +0 -1
  69. package/dist/lib/vibe-mcp.js.map +0 -1
@@ -1,665 +1,665 @@
1
- # hi-ai MCP 도구 사용 가이드
2
-
3
- 당신은 `su-record-hi-ai` MCP 서버의 38개 도구를 사용할 수 있습니다.
4
- 이 가이드는 **언제**, **어떻게** 각 도구를 활용할지 설명합니다.
5
-
6
- ---
7
-
8
- ## 🔍 코드 탐색 도구
9
-
10
- ### `find_symbol` - 함수/클래스 정의 찾기
11
-
12
- **언제 사용?**
13
- - "create_feed 함수 어디있어?"
14
- - "User 클래스 정의 찾아줘"
15
- - "authenticate 어디에 구현되어 있어?"
16
-
17
- **파라미터:**
18
- ```typescript
19
- {
20
- symbolName: string; // 찾을 심볼 이름
21
- projectPath: string; // 프로젝트 경로 (예: /Users/grove/workspace/fallingo)
22
- symbolType?: "function" | "class" | "interface" | "variable" | "type" | "all";
23
- }
24
- ```
25
-
26
- **실전 예시:**
27
- ```markdown
28
- 사용자: "create_feed 함수 어디있어?"
29
-
30
- AI 액션:
31
- find_symbol({
32
- symbolName: "create_feed",
33
- projectPath: "/Users/grove/workspace/fallingo",
34
- symbolType: "function"
35
- })
36
-
37
- 결과: app/services/feed_service.py:45
38
- ```
39
-
40
- ---
41
-
42
- ### `find_references` - 심볼 사용처 찾기
43
-
44
- **언제 사용?**
45
- - "이 함수 어디서 호출되어?"
46
- - "User 모델 어디서 쓰여?"
47
- - "이 클래스 의존성 확인해줘"
48
-
49
- **파라미터:**
50
- ```typescript
51
- {
52
- symbolName: string;
53
- projectPath: string;
54
- filePath?: string; // 심볼이 정의된 파일
55
- line?: number; // 심볼이 정의된 라인
56
- }
57
- ```
58
-
59
- **실전 예시:**
60
- ```markdown
61
- 사용자: "create_feed 함수 어디서 호출되어?"
62
-
63
- AI 액션:
64
- find_references({
65
- symbolName: "create_feed",
66
- projectPath: "/Users/grove/workspace/fallingo",
67
- filePath: "app/services/feed_service.py",
68
- line: 45
69
- })
70
-
71
- 결과:
72
- - app/api/v1/feeds.py:23
73
- - tests/test_feed_service.py:67
74
- ```
75
-
76
- ---
77
-
78
- ## 🧠 사고 과정 도구
79
-
80
- ### `step_by_step_analysis` - 복잡한 문제 단계별 분석
81
-
82
- **언제 사용?**
83
- - 복잡한 버그 디버깅
84
- - 아키텍처 리팩토링 계획
85
- - 성능 최적화 전략 수립
86
-
87
- **파라미터:**
88
- ```typescript
89
- {
90
- task: string; // 분석할 작업
91
- detailLevel?: "basic" | "detailed" | "comprehensive";
92
- context?: string; // 추가 컨텍스트
93
- }
94
- ```
95
-
96
- **실전 예시:**
97
- ```markdown
98
- 사용자: "N+1 쿼리 문제 해결 방법 단계별로 분석해줘"
99
-
100
- AI 액션:
101
- step_by_step_analysis({
102
- task: "피드 목록 조회 시 N+1 쿼리 문제 해결",
103
- detailLevel: "detailed",
104
- context: "사용자별 피드 개수를 함께 조회하는 API"
105
- })
106
-
107
- 결과:
108
- 1단계: 현재 쿼리 패턴 분석
109
- 2단계: N+1 발생 지점 식별
110
- 3단계: selectinload/joinedload 적용
111
- 4단계: 성능 측정 및 검증
112
- ```
113
-
114
- ---
115
-
116
- ### `break_down_problem` - 문제를 작은 단위로 분해
117
-
118
- **언제 사용?**
119
- - 큰 기능 구현 계획
120
- - 복잡한 비즈니스 로직 설계
121
- - 리팩토링 범위 결정
122
-
123
- **파라미터:**
124
- ```typescript
125
- {
126
- problem: string;
127
- approach?: "sequential" | "hierarchical" | "dependency-based";
128
- maxDepth?: number; // 분해 깊이 (기본 3)
129
- }
130
- ```
131
-
132
- **실전 예시:**
133
- ```markdown
134
- 사용자: "OCR 영수증 인증 시스템 구현을 어떻게 나눠야 할까?"
135
-
136
- AI 액션:
137
- break_down_problem({
138
- problem: "OCR 영수증 인증 시스템 구현",
139
- approach: "dependency-based",
140
- maxDepth: 3
141
- })
142
-
143
- 결과:
144
- 1. 이미지 업로드 API (의존성 없음)
145
- 1.1. GCS 저장
146
- 1.2. 파일 검증
147
- 2. Document AI 연동 (1에 의존)
148
- 2.1. OCR 요청
149
- 2.2. 텍스트 추출
150
- 3. 영수증 검증 로직 (2에 의존)
151
- 3.1. 날짜 파싱
152
- 3.2. 24시간 이내 확인
153
- 3.3. 레스토랑 이름 매칭
154
- ```
155
-
156
- ---
157
-
158
- ### `think_aloud_process` - 생각 과정 공유
159
-
160
- **언제 사용?**
161
- - 복잡한 설계 결정
162
- - 트레이드오프 비교
163
- - 코드 리뷰 추론
164
-
165
- **파라미터:**
166
- ```typescript
167
- {
168
- scenario: string;
169
- perspective?: "analytical" | "creative" | "systematic" | "critical";
170
- verbosity?: "concise" | "moderate" | "verbose";
171
- }
172
- ```
173
-
174
- ---
175
-
176
- ## 📋 기획/문서 도구
177
-
178
- ### `generate_prd` - 제품 요구사항 문서 생성
179
-
180
- **언제 사용?**
181
- - 새 기능 기획
182
- - 프로젝트 킥오프
183
- - 요구사항 정리
184
-
185
- **파라미터:**
186
- ```typescript
187
- {
188
- productName: string;
189
- productVision: string;
190
- functionalRequirements?: string;
191
- targetAudience?: string;
192
- businessObjectives?: string;
193
- constraints?: string;
194
- }
195
- ```
196
-
197
- **실전 예시:**
198
- ```markdown
199
- 사용자: "AI 추천 시스템 PRD 작성해줘"
200
-
201
- AI 액션:
202
- generate_prd({
203
- productName: "AI 기반 레스토랑 추천 시스템",
204
- productVision: "사용자의 취향과 위치를 분석하여 최적의 레스토랑 추천",
205
- functionalRequirements: "1. 사용자 프로필 분석 2. 위치 기반 필터링 3. Gemini API 연동",
206
- targetAudience: "Tier 5 이상 사용자",
207
- constraints: "Gemini API 호출 비용 월 $100 이하"
208
- })
209
- ```
210
-
211
- ---
212
-
213
- ### `create_user_stories` - 사용자 스토리 생성
214
-
215
- **언제 사용?**
216
- - 요구사항을 구체적인 작업으로 전환
217
- - 스프린트 계획
218
- - 백로그 작성
219
-
220
- **파라미터:**
221
- ```typescript
222
- {
223
- features: string;
224
- userTypes?: string;
225
- priority?: "high" | "medium" | "low";
226
- includeAcceptanceCriteria?: boolean;
227
- }
228
- ```
229
-
230
- **실전 예시:**
231
- ```markdown
232
- 사용자: "팔로우 기능 사용자 스토리 만들어줘"
233
-
234
- AI 액션:
235
- create_user_stories({
236
- features: "QR 코드 팔로우, 근거리 탐지 팔로우",
237
- userTypes: "Tier 4 이상 사용자",
238
- priority: "high",
239
- includeAcceptanceCriteria: true
240
- })
241
-
242
- 결과:
243
- **스토리 1**: QR 코드 팔로우
244
- - As a Tier 4 사용자
245
- - I want to QR 코드를 스캔하여 다른 사용자를 팔로우
246
- - So that 오프라인에서 쉽게 연결할 수 있다
247
-
248
- **Acceptance Criteria:**
249
- - [ ] QR 코드 생성 API
250
- - [ ] QR 스캔 화면
251
- - [ ] 팔로우 성공 알림
252
- ```
253
-
254
- ---
255
-
256
- ### `format_as_plan` - 내용을 체크리스트로 변환
257
-
258
- **언제 사용?**
259
- - 작업 목록 정리
260
- - 구현 순서 명확화
261
- - 진행 상황 추적
262
-
263
- **파라미터:**
264
- ```typescript
265
- {
266
- content: string;
267
- priority?: "high" | "medium" | "low";
268
- includeCheckboxes?: boolean;
269
- includeTimeEstimates?: boolean;
270
- }
271
- ```
272
-
273
- **실전 예시:**
274
- ```markdown
275
- 사용자: "이 내용을 체크리스트로 만들어줘: 인증 API 구현, 프로필 화면, 테스트 작성"
276
-
277
- AI 액션:
278
- format_as_plan({
279
- content: "인증 API 구현, 프로필 화면 구현, 통합 테스트 작성",
280
- priority: "high",
281
- includeCheckboxes: true,
282
- includeTimeEstimates: true
283
- })
284
-
285
- 결과:
286
- ## 구현 계획 (우선순위: High)
287
- - [ ] 인증 API 구현 (예상 시간: 4시간)
288
- - [ ] 프로필 화면 구현 (예상 시간: 6시간)
289
- - [ ] 통합 테스트 작성 (예상 시간: 3시간)
290
- ```
291
-
292
- ---
293
-
294
- ## 🎨 코드 품질 도구
295
-
296
- ### `validate_code_quality` - 코드 품질 검증
297
-
298
- **언제 사용?**
299
- - 코드 리뷰 전
300
- - 리팩토링 후 검증
301
- - PR 제출 전
302
-
303
- **파라미터:**
304
- ```typescript
305
- {
306
- code: string;
307
- type?: "component" | "function" | "hook" | "utility" | "general";
308
- metrics?: "complexity" | "coupling" | "cohesion" | "maintainability" | "performance" | "all";
309
- strict?: boolean;
310
- }
311
- ```
312
-
313
- **실전 예시:**
314
- ```markdown
315
- 사용자: "이 함수 품질 검사해줘"
316
-
317
- AI 액션:
318
- validate_code_quality({
319
- code: `def create_feed(data, user): ...`,
320
- type: "function",
321
- metrics: "all",
322
- strict: true
323
- })
324
-
325
- 결과:
326
- ❌ Cyclomatic Complexity: 15 (목표 ≤10)
327
- ✅ Type Hints: 100%
328
- ⚠️ Docstring 누락
329
- ✅ 보안 문제 없음
330
- ```
331
-
332
- ---
333
-
334
- ### `analyze_complexity` - 복잡도 분석
335
-
336
- **언제 사용?**
337
- - 함수가 너무 복잡한지 확인
338
- - 리팩토링 필요성 판단
339
- - 코드 메트릭 측정
340
-
341
- **파라미터:**
342
- ```typescript
343
- {
344
- code: string;
345
- metrics?: "cyclomatic" | "cognitive" | "halstead" | "all";
346
- }
347
- ```
348
-
349
- **실전 예시:**
350
- ```markdown
351
- 사용자: "이 코드 복잡도 계산해줘"
352
-
353
- AI 액션:
354
- analyze_complexity({
355
- code: `def process_order(...): ...`,
356
- metrics: "all"
357
- })
358
-
359
- 결과:
360
- - Cyclomatic Complexity: 12
361
- - Cognitive Complexity: 18
362
- - Halstead Difficulty: 22.5
363
- → 리팩토링 권장
364
- ```
365
-
366
- ---
367
-
368
- ### `suggest_improvements` - 개선 제안
369
-
370
- **언제 사용?**
371
- - 코드 최적화 아이디어 필요
372
- - 성능 개선 방법 모색
373
- - 가독성 향상 방법
374
-
375
- **파라미터:**
376
- ```typescript
377
- {
378
- code: string;
379
- focus?: "performance" | "readability" | "maintainability" | "accessibility" | "type-safety";
380
- priority?: "critical" | "high" | "medium" | "low";
381
- }
382
- ```
383
-
384
- **실전 예시:**
385
- ```markdown
386
- 사용자: "이 코드 성능 개선 방법 알려줘"
387
-
388
- AI 액션:
389
- suggest_improvements({
390
- code: `for user in users: feeds = db.query(Feed).filter(...).all()`,
391
- focus: "performance",
392
- priority: "high"
393
- })
394
-
395
- 결과:
396
- 1. N+1 쿼리 문제 → selectinload 사용
397
- 2. 불필요한 전체 컬럼 조회 → 필요한 컬럼만 선택
398
- 3. 인덱스 없음 → user_id 컬럼에 인덱스 추가
399
- ```
400
-
401
- ---
402
-
403
- ## 🎨 UI 미리보기
404
-
405
- ### `preview_ui_ascii` - 코딩 전 화면 구조 미리보기
406
-
407
- **언제 사용?**
408
- - Flutter/React 화면 구현 전
409
- - 레이아웃 설계
410
- - 디자인 검토
411
-
412
- **파라미터:**
413
- ```typescript
414
- {
415
- page_name: string;
416
- components: Array<{
417
- type: string; // "header", "sidebar", "button", "input", "card" 등
418
- label: string;
419
- position: string; // "top", "left", "center", "right", "bottom"
420
- }>;
421
- layout_type?: "sidebar" | "header-footer" | "grid" | "centered" | "split";
422
- responsive?: boolean;
423
- width?: number;
424
- }
425
- ```
426
-
427
- **실전 예시:**
428
- ```markdown
429
- 사용자: "로그인 페이지 레이아웃 미리 보고 싶어"
430
-
431
- AI 액션:
432
- preview_ui_ascii({
433
- page_name: "Login Page",
434
- components: [
435
- { type: "header", label: "Fallingo", position: "top" },
436
- { type: "input", label: "Email", position: "center" },
437
- { type: "input", label: "Password", position: "center" },
438
- { type: "button", label: "로그인", position: "center" },
439
- { type: "button", label: "Google 로그인", position: "center" }
440
- ],
441
- layout_type: "centered",
442
- width: 60
443
- })
444
-
445
- 결과:
446
- ┌────────────────────────────────────────────────────────┐
447
- │ Fallingo │
448
- ├────────────────────────────────────────────────────────┤
449
- │ │
450
- │ ┌──────────────────────┐ │
451
- │ │ Email │ │
452
- │ └──────────────────────┘ │
453
- │ │
454
- │ ┌──────────────────────┐ │
455
- │ │ Password │ │
456
- │ └──────────────────────┘ │
457
- │ │
458
- │ [ 로그인 ] │
459
- │ [ Google 로그인 ] │
460
- └────────────────────────────────────────────────────────┘
461
- ```
462
-
463
- ---
464
-
465
- ## 💾 메모리 도구
466
-
467
- ### `save_memory` - 중요 결정사항 저장
468
-
469
- **언제 사용?**
470
- - API 설계 결정 기록
471
- - 코딩 컨벤션 저장
472
- - 리팩토링 이유 기록
473
-
474
- **파라미터:**
475
- ```typescript
476
- {
477
- key: string;
478
- value: string;
479
- category?: "project" | "personal" | "code" | "notes";
480
- }
481
- ```
482
-
483
- **실전 예시:**
484
- ```markdown
485
- 사용자: "이 API 설계 결정 기억해줘"
486
-
487
- AI 액션:
488
- save_memory({
489
- key: "feed_api_design",
490
- value: "피드 생성 시 GPS 검증을 먼저 수행한 후 Vision API 호출. 이유: GPS 실패 시 불필요한 AI 호출 방지 (비용 절감)",
491
- category: "project"
492
- })
493
- ```
494
-
495
- ---
496
-
497
- ### `recall_memory` - 이전 결정 회상
498
-
499
- **언제 사용?**
500
- - 과거 설계 이유 확인
501
- - 컨벤션 일관성 유지
502
- - 중복 논의 방지
503
-
504
- **파라미터:**
505
- ```typescript
506
- {
507
- key: string;
508
- category?: string;
509
- }
510
- ```
511
-
512
- ---
513
-
514
- ### `prioritize_memory` - 중요한 컨텍스트 우선순위 지정
515
-
516
- **언제 사용?**
517
- - 세션 종료 전 핵심 내용 저장
518
- - 긴 대화의 요약
519
- - 다음 작업 준비
520
-
521
- **파라미터:**
522
- ```typescript
523
- {
524
- currentTask: string;
525
- criticalDecisions?: string[];
526
- codeChanges?: string[];
527
- blockers?: string[];
528
- nextSteps?: string[];
529
- }
530
- ```
531
-
532
- **실전 예시:**
533
- ```markdown
534
- 대화가 길어질 때:
535
-
536
- AI 액션:
537
- prioritize_memory({
538
- currentTask: "OCR 영수증 인증 시스템 구현",
539
- criticalDecisions: [
540
- "Document AI 사용 결정 (Vision API보다 정확도 높음)",
541
- "영수증 24시간 검증은 server timezone 기준"
542
- ],
543
- codeChanges: [
544
- "app/services/ocr_service.py 생성",
545
- "app/api/v1/feeds.py에 영수증 업로드 엔드포인트 추가"
546
- ],
547
- blockers: [
548
- "Document AI 크레딧 부족 → GCP 청구 설정 필요"
549
- ],
550
- nextSteps: [
551
- "영수증 텍스트 파싱 로직 구현",
552
- "레스토랑 이름 매칭 알고리즘",
553
- "테스트 케이스 작성"
554
- ]
555
- })
556
- ```
557
-
558
- ---
559
-
560
- ## 🚀 세션 관리
561
-
562
- ### `start_session` - 세션 시작 시 컨텍스트 로드
563
-
564
- **언제 사용?**
565
- - 새로운 대화 시작
566
- - 프로젝트 전환
567
- - 컨텍스트 복원
568
-
569
- **파라미터:**
570
- ```typescript
571
- {
572
- greeting?: string;
573
- loadMemory?: boolean; // 기본 true
574
- restoreContext?: boolean; // 기본 true
575
- loadGuides?: boolean; // 기본 true
576
- }
577
- ```
578
-
579
- **자동 트리거:**
580
- 사용자가 "hi-ai", "하이아이", "안녕" 같은 인사말을 하면 자동 호출됩니다.
581
-
582
- ---
583
-
584
- ## 📊 사용 우선순위 가이드
585
-
586
- ### 🔴 최우선 (매번 사용)
587
- - `find_symbol` - 코드 수정 전 항상 위치 확인
588
- - `save_memory` - 중요 결정 즉시 저장
589
- - `validate_code_quality` - 코드 완성 후 자동 검증
590
-
591
- ### 🟡 자주 사용
592
- - `step_by_step_analysis` - 복잡한 작업 시작 전
593
- - `suggest_improvements` - 코드 완성 후 최적화
594
- - `format_as_plan` - 여러 작업을 체계화
595
-
596
- ### 🟢 선택적 사용
597
- - `generate_prd` - 새 기능 기획 시
598
- - `preview_ui_ascii` - UI 구현 전 레이아웃 확인
599
- - `think_aloud_process` - 복잡한 설계 결정 시
600
-
601
- ---
602
-
603
- ## ⚠️ 주의사항
604
-
605
- ### 1. projectPath는 항상 절대 경로
606
- ```typescript
607
- // ✅ 올바른 예
608
- projectPath: "/Users/grove/workspace/fallingo"
609
-
610
- // ❌ 잘못된 예
611
- projectPath: "./fallingo"
612
- projectPath: "~/workspace/fallingo"
613
- ```
614
-
615
- ### 2. 메모리 key는 의미 있게
616
- ```typescript
617
- // ✅ 올바른 예
618
- key: "feed_api_design_decision"
619
-
620
- // ❌ 잘못된 예
621
- key: "temp"
622
- key: "note1"
623
- ```
624
-
625
- ### 3. code 파라미터는 전체 함수/클래스 제공
626
- ```typescript
627
- // ✅ 완전한 코드
628
- code: `
629
- def create_feed(data: CreateFeedRequest, user: User) -> Feed:
630
- """피드를 생성합니다."""
631
- # ... 전체 구현
632
- return feed
633
- `
634
-
635
- // ❌ 일부만 제공
636
- code: "def create_feed(..."
637
- ```
638
-
639
- ---
640
-
641
- ## 🎯 실전 워크플로우 예시
642
-
643
- ### 시나리오: 새 API 엔드포인트 구현
644
-
645
- ```markdown
646
- 1. find_symbol → 기존 패턴 찾기
647
- "create_user API 어디있어?"
648
-
649
- 2. step_by_step_analysis → 구현 계획
650
- "create_feed API 구현을 단계별로 분석해줘"
651
-
652
- 3. save_memory → 설계 결정 저장
653
- "이 API는 GPS 검증을 먼저 한다는 결정 기억해줘"
654
-
655
- 4. [코드 작성]
656
-
657
- 5. validate_code_quality → 품질 검증
658
- "이 코드 품질 검사해줘"
659
-
660
- 6. suggest_improvements → 최적화
661
- "성능 개선 방법 알려줘"
662
-
663
- 7. prioritize_memory → 세션 종료 전 요약
664
- "오늘 작업 내용 우선순위 지정해서 저장해줘"
665
- ```
1
+ # hi-ai MCP 도구 사용 가이드
2
+
3
+ 당신은 `su-record-hi-ai` MCP 서버의 38개 도구를 사용할 수 있습니다.
4
+ 이 가이드는 **언제**, **어떻게** 각 도구를 활용할지 설명합니다.
5
+
6
+ ---
7
+
8
+ ## 🔍 코드 탐색 도구
9
+
10
+ ### `find_symbol` - 함수/클래스 정의 찾기
11
+
12
+ **언제 사용?**
13
+ - "create_feed 함수 어디있어?"
14
+ - "User 클래스 정의 찾아줘"
15
+ - "authenticate 어디에 구현되어 있어?"
16
+
17
+ **파라미터:**
18
+ ```typescript
19
+ {
20
+ symbolName: string; // 찾을 심볼 이름
21
+ projectPath: string; // 프로젝트 경로 (예: /Users/grove/workspace/fallingo)
22
+ symbolType?: "function" | "class" | "interface" | "variable" | "type" | "all";
23
+ }
24
+ ```
25
+
26
+ **실전 예시:**
27
+ ```markdown
28
+ 사용자: "create_feed 함수 어디있어?"
29
+
30
+ AI 액션:
31
+ find_symbol({
32
+ symbolName: "create_feed",
33
+ projectPath: "/Users/grove/workspace/fallingo",
34
+ symbolType: "function"
35
+ })
36
+
37
+ 결과: app/services/feed_service.py:45
38
+ ```
39
+
40
+ ---
41
+
42
+ ### `find_references` - 심볼 사용처 찾기
43
+
44
+ **언제 사용?**
45
+ - "이 함수 어디서 호출되어?"
46
+ - "User 모델 어디서 쓰여?"
47
+ - "이 클래스 의존성 확인해줘"
48
+
49
+ **파라미터:**
50
+ ```typescript
51
+ {
52
+ symbolName: string;
53
+ projectPath: string;
54
+ filePath?: string; // 심볼이 정의된 파일
55
+ line?: number; // 심볼이 정의된 라인
56
+ }
57
+ ```
58
+
59
+ **실전 예시:**
60
+ ```markdown
61
+ 사용자: "create_feed 함수 어디서 호출되어?"
62
+
63
+ AI 액션:
64
+ find_references({
65
+ symbolName: "create_feed",
66
+ projectPath: "/Users/grove/workspace/fallingo",
67
+ filePath: "app/services/feed_service.py",
68
+ line: 45
69
+ })
70
+
71
+ 결과:
72
+ - app/api/v1/feeds.py:23
73
+ - tests/test_feed_service.py:67
74
+ ```
75
+
76
+ ---
77
+
78
+ ## 🧠 사고 과정 도구
79
+
80
+ ### `step_by_step_analysis` - 복잡한 문제 단계별 분석
81
+
82
+ **언제 사용?**
83
+ - 복잡한 버그 디버깅
84
+ - 아키텍처 리팩토링 계획
85
+ - 성능 최적화 전략 수립
86
+
87
+ **파라미터:**
88
+ ```typescript
89
+ {
90
+ task: string; // 분석할 작업
91
+ detailLevel?: "basic" | "detailed" | "comprehensive";
92
+ context?: string; // 추가 컨텍스트
93
+ }
94
+ ```
95
+
96
+ **실전 예시:**
97
+ ```markdown
98
+ 사용자: "N+1 쿼리 문제 해결 방법 단계별로 분석해줘"
99
+
100
+ AI 액션:
101
+ step_by_step_analysis({
102
+ task: "피드 목록 조회 시 N+1 쿼리 문제 해결",
103
+ detailLevel: "detailed",
104
+ context: "사용자별 피드 개수를 함께 조회하는 API"
105
+ })
106
+
107
+ 결과:
108
+ 1단계: 현재 쿼리 패턴 분석
109
+ 2단계: N+1 발생 지점 식별
110
+ 3단계: selectinload/joinedload 적용
111
+ 4단계: 성능 측정 및 검증
112
+ ```
113
+
114
+ ---
115
+
116
+ ### `break_down_problem` - 문제를 작은 단위로 분해
117
+
118
+ **언제 사용?**
119
+ - 큰 기능 구현 계획
120
+ - 복잡한 비즈니스 로직 설계
121
+ - 리팩토링 범위 결정
122
+
123
+ **파라미터:**
124
+ ```typescript
125
+ {
126
+ problem: string;
127
+ approach?: "sequential" | "hierarchical" | "dependency-based";
128
+ maxDepth?: number; // 분해 깊이 (기본 3)
129
+ }
130
+ ```
131
+
132
+ **실전 예시:**
133
+ ```markdown
134
+ 사용자: "OCR 영수증 인증 시스템 구현을 어떻게 나눠야 할까?"
135
+
136
+ AI 액션:
137
+ break_down_problem({
138
+ problem: "OCR 영수증 인증 시스템 구현",
139
+ approach: "dependency-based",
140
+ maxDepth: 3
141
+ })
142
+
143
+ 결과:
144
+ 1. 이미지 업로드 API (의존성 없음)
145
+ 1.1. GCS 저장
146
+ 1.2. 파일 검증
147
+ 2. Document AI 연동 (1에 의존)
148
+ 2.1. OCR 요청
149
+ 2.2. 텍스트 추출
150
+ 3. 영수증 검증 로직 (2에 의존)
151
+ 3.1. 날짜 파싱
152
+ 3.2. 24시간 이내 확인
153
+ 3.3. 레스토랑 이름 매칭
154
+ ```
155
+
156
+ ---
157
+
158
+ ### `think_aloud_process` - 생각 과정 공유
159
+
160
+ **언제 사용?**
161
+ - 복잡한 설계 결정
162
+ - 트레이드오프 비교
163
+ - 코드 리뷰 추론
164
+
165
+ **파라미터:**
166
+ ```typescript
167
+ {
168
+ scenario: string;
169
+ perspective?: "analytical" | "creative" | "systematic" | "critical";
170
+ verbosity?: "concise" | "moderate" | "verbose";
171
+ }
172
+ ```
173
+
174
+ ---
175
+
176
+ ## 📋 기획/문서 도구
177
+
178
+ ### `generate_prd` - 제품 요구사항 문서 생성
179
+
180
+ **언제 사용?**
181
+ - 새 기능 기획
182
+ - 프로젝트 킥오프
183
+ - 요구사항 정리
184
+
185
+ **파라미터:**
186
+ ```typescript
187
+ {
188
+ productName: string;
189
+ productVision: string;
190
+ functionalRequirements?: string;
191
+ targetAudience?: string;
192
+ businessObjectives?: string;
193
+ constraints?: string;
194
+ }
195
+ ```
196
+
197
+ **실전 예시:**
198
+ ```markdown
199
+ 사용자: "AI 추천 시스템 PRD 작성해줘"
200
+
201
+ AI 액션:
202
+ generate_prd({
203
+ productName: "AI 기반 레스토랑 추천 시스템",
204
+ productVision: "사용자의 취향과 위치를 분석하여 최적의 레스토랑 추천",
205
+ functionalRequirements: "1. 사용자 프로필 분석 2. 위치 기반 필터링 3. Gemini API 연동",
206
+ targetAudience: "Tier 5 이상 사용자",
207
+ constraints: "Gemini API 호출 비용 월 $100 이하"
208
+ })
209
+ ```
210
+
211
+ ---
212
+
213
+ ### `create_user_stories` - 사용자 스토리 생성
214
+
215
+ **언제 사용?**
216
+ - 요구사항을 구체적인 작업으로 전환
217
+ - 스프린트 계획
218
+ - 백로그 작성
219
+
220
+ **파라미터:**
221
+ ```typescript
222
+ {
223
+ features: string;
224
+ userTypes?: string;
225
+ priority?: "high" | "medium" | "low";
226
+ includeAcceptanceCriteria?: boolean;
227
+ }
228
+ ```
229
+
230
+ **실전 예시:**
231
+ ```markdown
232
+ 사용자: "팔로우 기능 사용자 스토리 만들어줘"
233
+
234
+ AI 액션:
235
+ create_user_stories({
236
+ features: "QR 코드 팔로우, 근거리 탐지 팔로우",
237
+ userTypes: "Tier 4 이상 사용자",
238
+ priority: "high",
239
+ includeAcceptanceCriteria: true
240
+ })
241
+
242
+ 결과:
243
+ **스토리 1**: QR 코드 팔로우
244
+ - As a Tier 4 사용자
245
+ - I want to QR 코드를 스캔하여 다른 사용자를 팔로우
246
+ - So that 오프라인에서 쉽게 연결할 수 있다
247
+
248
+ **Acceptance Criteria:**
249
+ - [ ] QR 코드 생성 API
250
+ - [ ] QR 스캔 화면
251
+ - [ ] 팔로우 성공 알림
252
+ ```
253
+
254
+ ---
255
+
256
+ ### `format_as_plan` - 내용을 체크리스트로 변환
257
+
258
+ **언제 사용?**
259
+ - 작업 목록 정리
260
+ - 구현 순서 명확화
261
+ - 진행 상황 추적
262
+
263
+ **파라미터:**
264
+ ```typescript
265
+ {
266
+ content: string;
267
+ priority?: "high" | "medium" | "low";
268
+ includeCheckboxes?: boolean;
269
+ includeTimeEstimates?: boolean;
270
+ }
271
+ ```
272
+
273
+ **실전 예시:**
274
+ ```markdown
275
+ 사용자: "이 내용을 체크리스트로 만들어줘: 인증 API 구현, 프로필 화면, 테스트 작성"
276
+
277
+ AI 액션:
278
+ format_as_plan({
279
+ content: "인증 API 구현, 프로필 화면 구현, 통합 테스트 작성",
280
+ priority: "high",
281
+ includeCheckboxes: true,
282
+ includeTimeEstimates: true
283
+ })
284
+
285
+ 결과:
286
+ ## 구현 계획 (우선순위: High)
287
+ - [ ] 인증 API 구현 (예상 시간: 4시간)
288
+ - [ ] 프로필 화면 구현 (예상 시간: 6시간)
289
+ - [ ] 통합 테스트 작성 (예상 시간: 3시간)
290
+ ```
291
+
292
+ ---
293
+
294
+ ## 🎨 코드 품질 도구
295
+
296
+ ### `validate_code_quality` - 코드 품질 검증
297
+
298
+ **언제 사용?**
299
+ - 코드 리뷰 전
300
+ - 리팩토링 후 검증
301
+ - PR 제출 전
302
+
303
+ **파라미터:**
304
+ ```typescript
305
+ {
306
+ code: string;
307
+ type?: "component" | "function" | "hook" | "utility" | "general";
308
+ metrics?: "complexity" | "coupling" | "cohesion" | "maintainability" | "performance" | "all";
309
+ strict?: boolean;
310
+ }
311
+ ```
312
+
313
+ **실전 예시:**
314
+ ```markdown
315
+ 사용자: "이 함수 품질 검사해줘"
316
+
317
+ AI 액션:
318
+ validate_code_quality({
319
+ code: `def create_feed(data, user): ...`,
320
+ type: "function",
321
+ metrics: "all",
322
+ strict: true
323
+ })
324
+
325
+ 결과:
326
+ ❌ Cyclomatic Complexity: 15 (목표 ≤10)
327
+ ✅ Type Hints: 100%
328
+ ⚠️ Docstring 누락
329
+ ✅ 보안 문제 없음
330
+ ```
331
+
332
+ ---
333
+
334
+ ### `analyze_complexity` - 복잡도 분석
335
+
336
+ **언제 사용?**
337
+ - 함수가 너무 복잡한지 확인
338
+ - 리팩토링 필요성 판단
339
+ - 코드 메트릭 측정
340
+
341
+ **파라미터:**
342
+ ```typescript
343
+ {
344
+ code: string;
345
+ metrics?: "cyclomatic" | "cognitive" | "halstead" | "all";
346
+ }
347
+ ```
348
+
349
+ **실전 예시:**
350
+ ```markdown
351
+ 사용자: "이 코드 복잡도 계산해줘"
352
+
353
+ AI 액션:
354
+ analyze_complexity({
355
+ code: `def process_order(...): ...`,
356
+ metrics: "all"
357
+ })
358
+
359
+ 결과:
360
+ - Cyclomatic Complexity: 12
361
+ - Cognitive Complexity: 18
362
+ - Halstead Difficulty: 22.5
363
+ → 리팩토링 권장
364
+ ```
365
+
366
+ ---
367
+
368
+ ### `suggest_improvements` - 개선 제안
369
+
370
+ **언제 사용?**
371
+ - 코드 최적화 아이디어 필요
372
+ - 성능 개선 방법 모색
373
+ - 가독성 향상 방법
374
+
375
+ **파라미터:**
376
+ ```typescript
377
+ {
378
+ code: string;
379
+ focus?: "performance" | "readability" | "maintainability" | "accessibility" | "type-safety";
380
+ priority?: "critical" | "high" | "medium" | "low";
381
+ }
382
+ ```
383
+
384
+ **실전 예시:**
385
+ ```markdown
386
+ 사용자: "이 코드 성능 개선 방법 알려줘"
387
+
388
+ AI 액션:
389
+ suggest_improvements({
390
+ code: `for user in users: feeds = db.query(Feed).filter(...).all()`,
391
+ focus: "performance",
392
+ priority: "high"
393
+ })
394
+
395
+ 결과:
396
+ 1. N+1 쿼리 문제 → selectinload 사용
397
+ 2. 불필요한 전체 컬럼 조회 → 필요한 컬럼만 선택
398
+ 3. 인덱스 없음 → user_id 컬럼에 인덱스 추가
399
+ ```
400
+
401
+ ---
402
+
403
+ ## 🎨 UI 미리보기
404
+
405
+ ### `preview_ui_ascii` - 코딩 전 화면 구조 미리보기
406
+
407
+ **언제 사용?**
408
+ - Flutter/React 화면 구현 전
409
+ - 레이아웃 설계
410
+ - 디자인 검토
411
+
412
+ **파라미터:**
413
+ ```typescript
414
+ {
415
+ page_name: string;
416
+ components: Array<{
417
+ type: string; // "header", "sidebar", "button", "input", "card" 등
418
+ label: string;
419
+ position: string; // "top", "left", "center", "right", "bottom"
420
+ }>;
421
+ layout_type?: "sidebar" | "header-footer" | "grid" | "centered" | "split";
422
+ responsive?: boolean;
423
+ width?: number;
424
+ }
425
+ ```
426
+
427
+ **실전 예시:**
428
+ ```markdown
429
+ 사용자: "로그인 페이지 레이아웃 미리 보고 싶어"
430
+
431
+ AI 액션:
432
+ preview_ui_ascii({
433
+ page_name: "Login Page",
434
+ components: [
435
+ { type: "header", label: "Fallingo", position: "top" },
436
+ { type: "input", label: "Email", position: "center" },
437
+ { type: "input", label: "Password", position: "center" },
438
+ { type: "button", label: "로그인", position: "center" },
439
+ { type: "button", label: "Google 로그인", position: "center" }
440
+ ],
441
+ layout_type: "centered",
442
+ width: 60
443
+ })
444
+
445
+ 결과:
446
+ ┌────────────────────────────────────────────────────────┐
447
+ │ Fallingo │
448
+ ├────────────────────────────────────────────────────────┤
449
+ │ │
450
+ │ ┌──────────────────────┐ │
451
+ │ │ Email │ │
452
+ │ └──────────────────────┘ │
453
+ │ │
454
+ │ ┌──────────────────────┐ │
455
+ │ │ Password │ │
456
+ │ └──────────────────────┘ │
457
+ │ │
458
+ │ [ 로그인 ] │
459
+ │ [ Google 로그인 ] │
460
+ └────────────────────────────────────────────────────────┘
461
+ ```
462
+
463
+ ---
464
+
465
+ ## 💾 메모리 도구
466
+
467
+ ### `save_memory` - 중요 결정사항 저장
468
+
469
+ **언제 사용?**
470
+ - API 설계 결정 기록
471
+ - 코딩 컨벤션 저장
472
+ - 리팩토링 이유 기록
473
+
474
+ **파라미터:**
475
+ ```typescript
476
+ {
477
+ key: string;
478
+ value: string;
479
+ category?: "project" | "personal" | "code" | "notes";
480
+ }
481
+ ```
482
+
483
+ **실전 예시:**
484
+ ```markdown
485
+ 사용자: "이 API 설계 결정 기억해줘"
486
+
487
+ AI 액션:
488
+ save_memory({
489
+ key: "feed_api_design",
490
+ value: "피드 생성 시 GPS 검증을 먼저 수행한 후 Vision API 호출. 이유: GPS 실패 시 불필요한 AI 호출 방지 (비용 절감)",
491
+ category: "project"
492
+ })
493
+ ```
494
+
495
+ ---
496
+
497
+ ### `recall_memory` - 이전 결정 회상
498
+
499
+ **언제 사용?**
500
+ - 과거 설계 이유 확인
501
+ - 컨벤션 일관성 유지
502
+ - 중복 논의 방지
503
+
504
+ **파라미터:**
505
+ ```typescript
506
+ {
507
+ key: string;
508
+ category?: string;
509
+ }
510
+ ```
511
+
512
+ ---
513
+
514
+ ### `prioritize_memory` - 중요한 컨텍스트 우선순위 지정
515
+
516
+ **언제 사용?**
517
+ - 세션 종료 전 핵심 내용 저장
518
+ - 긴 대화의 요약
519
+ - 다음 작업 준비
520
+
521
+ **파라미터:**
522
+ ```typescript
523
+ {
524
+ currentTask: string;
525
+ criticalDecisions?: string[];
526
+ codeChanges?: string[];
527
+ blockers?: string[];
528
+ nextSteps?: string[];
529
+ }
530
+ ```
531
+
532
+ **실전 예시:**
533
+ ```markdown
534
+ 대화가 길어질 때:
535
+
536
+ AI 액션:
537
+ prioritize_memory({
538
+ currentTask: "OCR 영수증 인증 시스템 구현",
539
+ criticalDecisions: [
540
+ "Document AI 사용 결정 (Vision API보다 정확도 높음)",
541
+ "영수증 24시간 검증은 server timezone 기준"
542
+ ],
543
+ codeChanges: [
544
+ "app/services/ocr_service.py 생성",
545
+ "app/api/v1/feeds.py에 영수증 업로드 엔드포인트 추가"
546
+ ],
547
+ blockers: [
548
+ "Document AI 크레딧 부족 → GCP 청구 설정 필요"
549
+ ],
550
+ nextSteps: [
551
+ "영수증 텍스트 파싱 로직 구현",
552
+ "레스토랑 이름 매칭 알고리즘",
553
+ "테스트 케이스 작성"
554
+ ]
555
+ })
556
+ ```
557
+
558
+ ---
559
+
560
+ ## 🚀 세션 관리
561
+
562
+ ### `start_session` - 세션 시작 시 컨텍스트 로드
563
+
564
+ **언제 사용?**
565
+ - 새로운 대화 시작
566
+ - 프로젝트 전환
567
+ - 컨텍스트 복원
568
+
569
+ **파라미터:**
570
+ ```typescript
571
+ {
572
+ greeting?: string;
573
+ loadMemory?: boolean; // 기본 true
574
+ restoreContext?: boolean; // 기본 true
575
+ loadGuides?: boolean; // 기본 true
576
+ }
577
+ ```
578
+
579
+ **자동 트리거:**
580
+ 사용자가 "hi-ai", "하이아이", "안녕" 같은 인사말을 하면 자동 호출됩니다.
581
+
582
+ ---
583
+
584
+ ## 📊 사용 우선순위 가이드
585
+
586
+ ### 🔴 최우선 (매번 사용)
587
+ - `find_symbol` - 코드 수정 전 항상 위치 확인
588
+ - `save_memory` - 중요 결정 즉시 저장
589
+ - `validate_code_quality` - 코드 완성 후 자동 검증
590
+
591
+ ### 🟡 자주 사용
592
+ - `step_by_step_analysis` - 복잡한 작업 시작 전
593
+ - `suggest_improvements` - 코드 완성 후 최적화
594
+ - `format_as_plan` - 여러 작업을 체계화
595
+
596
+ ### 🟢 선택적 사용
597
+ - `generate_prd` - 새 기능 기획 시
598
+ - `preview_ui_ascii` - UI 구현 전 레이아웃 확인
599
+ - `think_aloud_process` - 복잡한 설계 결정 시
600
+
601
+ ---
602
+
603
+ ## ⚠️ 주의사항
604
+
605
+ ### 1. projectPath는 항상 절대 경로
606
+ ```typescript
607
+ // ✅ 올바른 예
608
+ projectPath: "/Users/grove/workspace/fallingo"
609
+
610
+ // ❌ 잘못된 예
611
+ projectPath: "./fallingo"
612
+ projectPath: "~/workspace/fallingo"
613
+ ```
614
+
615
+ ### 2. 메모리 key는 의미 있게
616
+ ```typescript
617
+ // ✅ 올바른 예
618
+ key: "feed_api_design_decision"
619
+
620
+ // ❌ 잘못된 예
621
+ key: "temp"
622
+ key: "note1"
623
+ ```
624
+
625
+ ### 3. code 파라미터는 전체 함수/클래스 제공
626
+ ```typescript
627
+ // ✅ 완전한 코드
628
+ code: `
629
+ def create_feed(data: CreateFeedRequest, user: User) -> Feed:
630
+ """피드를 생성합니다."""
631
+ # ... 전체 구현
632
+ return feed
633
+ `
634
+
635
+ // ❌ 일부만 제공
636
+ code: "def create_feed(..."
637
+ ```
638
+
639
+ ---
640
+
641
+ ## 🎯 실전 워크플로우 예시
642
+
643
+ ### 시나리오: 새 API 엔드포인트 구현
644
+
645
+ ```markdown
646
+ 1. find_symbol → 기존 패턴 찾기
647
+ "create_user API 어디있어?"
648
+
649
+ 2. step_by_step_analysis → 구현 계획
650
+ "create_feed API 구현을 단계별로 분석해줘"
651
+
652
+ 3. save_memory → 설계 결정 저장
653
+ "이 API는 GPS 검증을 먼저 한다는 결정 기억해줘"
654
+
655
+ 4. [코드 작성]
656
+
657
+ 5. validate_code_quality → 품질 검증
658
+ "이 코드 품질 검사해줘"
659
+
660
+ 6. suggest_improvements → 최적화
661
+ "성능 개선 방법 알려줘"
662
+
663
+ 7. prioritize_memory → 세션 종료 전 요약
664
+ "오늘 작업 내용 우선순위 지정해서 저장해줘"
665
+ ```