coding-buddy-mcp 1.0.3 → 1.1.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.
package/dist/index.js CHANGED
@@ -7,35 +7,39 @@ import { z } from "zod";
7
7
  // 두 글의 37개 액션아이템을 전부 Claude 행동 규칙으로 인코딩.
8
8
  // =============================================================================
9
9
  const INSTRUCTIONS = `
10
- You have a Coding Buddy. Follow these 3 mandatory steps for EVERY user request, in order.
10
+ You have a Coding Buddy. A UserPromptSubmit hook injects IMPORTANT hints before each message.
11
+ You MUST follow every IMPORTANT hint from the hook — they come from the user's configured rules.
11
12
 
12
- STEP 1: CHECK SPECIFICITY
13
- If the request has NO file path, NO function name, and NO error message → ask for specifics. Do NOT call any tools.
14
- - "버그 찾아줘" → respond: "어떤 파일에서 어떤 증상이 나오나요? 파일 경로와 증상을 알려주세요."
15
- - "리팩토링 해줘" → respond: "어떤 파일을 리팩토링할까요?"
16
- - "테스트 작성해줘" → respond: "어떤 파일/함수에 대한 테스트인가요?"
17
- If the request IS specific (has a file path or function name) → go to Step 2.
13
+ Additionally, follow these rules while working:
18
14
 
19
- STEP 2: RECOMMEND MODEL
20
- Before doing any work, tell the user which model fits this task:
21
- - Simple (오타, rename, format, 간단 조회) → "이 작업은 Haiku면 충분합니다 ($1/$5). 현재 모델이 다르다면 새 세션에서 /model haiku 로 시작하세요."
22
- - Medium (기능 구현, 버그 수정, 테스트, 리뷰) " 작업은 Sonnet이 적합합니다 ($15/$75)."
23
- - Complex (아키텍처, 마이그레이션, 전체 리팩토링) "이 작업은 Opus가 필요합니다 ($15/$75). Plan Mode를 먼저 사용하세요."
24
- Say this in 1 line, then proceed to Step 3.
15
+ ## 비용 최적화
16
+ - Output은 input보다 5배 비싸다 ($75 vs $15/1M). 응답을 짧게 유지하라.
17
+ - 파일 전체를 읽지 말고 필요한 섹션만 읽어라.
18
+ - 불필요한 요약을 하지 마라 ("제가 작업을 정리하면..." 금지).
19
+ - Thinking 토큰도 output 단가로 과금된다. 단순 작업에 과도한 사고는 낭비다.
25
20
 
26
- STEP 3: DO THE WORK
27
- Now proceed with the task. While working, follow these rules:
28
- - Keep responses short (output costs 5x more than input)
29
- - Read only needed file sections, not entire files
30
- - Use full file paths in your messages (e.g., src/auth/login.ts) — they survive compaction
31
- - After finishingsuggest "/cost 비용 확인해보세요"
32
- - If the topic changes suggest new session (" 작업이니 새 세션이 효율적입니다")
33
- - If conversation is long suggest /compact
34
- - NEVER change model mid-session (cache break = 10x cost spike). Suggest new session instead.
35
- - WARN before editing CLAUDE.md mid-session ("캐시가 깨집니다. 세션 시작 전에 수정하세요")
36
- - Complex tasks → suggest Plan Mode first
37
- - Multiple independent tasks → use sub-agents in parallel
38
- - After code changes suggest "/diff /commit → /pr"
21
+ ## 캐시 보호
22
+ - 5분 자리비움 복귀 "캐시가 만료됐을 수 있습니다"
23
+ - 네트워크 불안정 "큰 작업은 피하세요. 타임아웃→재시도→이중과금 가능"
24
+
25
+ ## 세션 관리
26
+ - 작업 완료 → "/clear 또는 세션을 추천합니다"
27
+ - 대화 길어지면 → "/compact 한번 해주세요"
28
+ - 5분 이내 이어하기"claude --resume latest"
29
+ - 가지 방향 시도 세션 fork 제안
30
+ - /cost 비용 확인 주기적으로 안내
31
+
32
+ ## 압축 생존
33
+ - 메시지에 todo:, next:, pending: 키워드 사용 (압축 후에도 보존됨)
34
+ - 파일 경로를 정확히 언급 (src/auth/login.ts 형태, 최대 8개 보존됨)
35
+
36
+ ## 생산성
37
+ - 독립적 다중 작업 → 서브에이전트로 병렬 실행
38
+ - 코드 변경 완료 후 → "/diff → /commit → /pr 파이프라인" 안내
39
+ - CLAUDE.md 없는 프로젝트 → setup_project 도구 호출 또는 /init 제안
40
+ - 권한 모드: 리뷰=read-only, 개발=workspace-write
41
+ - settings.json에 자주 쓰는 도구 자동 허용 안내
42
+ - 필요한 MCP만 켜라 (각 MCP 도구 정의가 매 요청 토큰 차지)
39
43
  `;
40
44
  // =============================================================================
41
45
  // Task Complexity Analysis — 작업 복잡도 판단 로직
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "coding-buddy-mcp",
3
- "version": "1.0.3",
3
+ "version": "1.1.0",
4
4
  "description": "A pair programming buddy MCP for Claude Code — optimizes cost and productivity based on Claude Code internals analysis",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -0,0 +1,116 @@
1
+ #!/bin/bash
2
+ # Coding Buddy - UserPromptSubmit Hook
3
+ # 37개 액션아이템 중 강제성이 필요한 항목을 훅으로 실행한다.
4
+ # 매 유저 프롬프트마다 실행되어 Claude에게 리마인더를 주입한다.
5
+
6
+ INPUT=$(cat)
7
+ PROMPT=$(echo "$INPUT" | python3 -c "
8
+ import sys,json
9
+ d = json.load(sys.stdin)
10
+ print(d.get('message', d.get('prompt', d.get('content', d.get('text', '')))))
11
+ " 2>/dev/null)
12
+
13
+ if [ -z "$PROMPT" ]; then
14
+ exit 0
15
+ fi
16
+
17
+ LOWER=$(echo "$PROMPT" | tr '[:upper:]' '[:lower:]')
18
+ HINTS=""
19
+
20
+ # ==========================================================
21
+ # 1. 모호한 요청 감지 (도구 폭발 방지)
22
+ # ==========================================================
23
+ HAS_PATH=false
24
+ echo "$PROMPT" | grep -qE '[a-zA-Z0-9_-]+/[a-zA-Z0-9_.-]+\.[a-zA-Z]{1,5}' && HAS_PATH=true
25
+ echo "$PROMPT" | grep -qE '\.[tj]sx?$|\.(rs|py|go|json|md|css|html|vue|svelte)' && HAS_PATH=true
26
+
27
+ VAGUE=false
28
+ if [ "$HAS_PATH" = false ]; then
29
+ if echo "$LOWER" | grep -qiE '버그.*(찾|fix)|리팩토링|refactor|개선|improve|테스트.*작성|write.*test|에러가 나|error|코드.*리뷰|review|설명해|explain.*code|분석해|analyz'; then
30
+ VAGUE=true
31
+ fi
32
+ fi
33
+
34
+ if [ "$VAGUE" = true ]; then
35
+ HINTS="${HINTS}IMPORTANT: 이 요청은 구체적이지 않습니다. 도구를 호출하지 말고 파일 경로와 증상을 먼저 물어보세요. 모호한 요청은 4+턴 10+도구호출로 비용이 낭비됩니다.\n"
36
+ fi
37
+
38
+ # ==========================================================
39
+ # 2. 주제 변경 감지 (세션 분리)
40
+ # ==========================================================
41
+ if echo "$LOWER" | grep -qiE '그건 됐고|이제 다른|다음으로|다른 작업|다른 거|이건 끝|이건 됐|넘어가|다음 할|다른 주제|그만하고|전환|switch to|move on|next task|different thing|change topic'; then
42
+ HINTS="${HINTS}IMPORTANT: 주제가 바뀌는 것 같습니다. 반드시 이렇게 안내하세요: '새 작업이니 새 세션에서 시작하는 게 효율적입니다. 한 세션에 한 작업이 비용과 품질 모두 유리합니다.'\n"
43
+ fi
44
+
45
+ # ==========================================================
46
+ # 3. 작업 복잡도 분석 → 모델 추천
47
+ # ==========================================================
48
+ COMPLEXITY="medium"
49
+ if echo "$LOWER" | grep -qiE '오타|typo|rename|이름.*변경|format|포맷|간단|simple|삭제.*줄|주석|comment|import|복사|copy|move file|간단히|quick'; then
50
+ COMPLEXITY="simple"
51
+ elif echo "$LOWER" | grep -qiE 'migrat|마이그레이션|architect|아키텍처|전체.*리팩|redesign|rewrite|스키마|schema|from scratch|전체 구조|시스템.*설계|데이터베이스|다시 만들|overhaul'; then
52
+ COMPLEXITY="complex"
53
+ fi
54
+
55
+ case $COMPLEXITY in
56
+ simple)
57
+ MODEL_REC="Haiku (\$1/\$5 per 1M)"
58
+ MODEL_CMD="/model haiku"
59
+ ;;
60
+ complex)
61
+ MODEL_REC="Opus (\$15/\$75 per 1M)"
62
+ MODEL_CMD="/model opus"
63
+ ;;
64
+ *)
65
+ MODEL_REC="Sonnet (\$15/\$75 per 1M)"
66
+ MODEL_CMD="/model sonnet"
67
+ ;;
68
+ esac
69
+
70
+ if [ "$VAGUE" = false ]; then
71
+ HINTS="${HINTS}IMPORTANT: 응답 첫 줄에 반드시 포함 → 💡 모델 추천: ${MODEL_REC}. 현재 모델이 다르면 새 세션에서 ${MODEL_CMD} 을 안내하세요.\n"
72
+ fi
73
+
74
+ # ==========================================================
75
+ # 4. 복잡한 작업 → Plan Mode 제안
76
+ # ==========================================================
77
+ if [ "$COMPLEXITY" = "complex" ]; then
78
+ HINTS="${HINTS}IMPORTANT: 복잡한 작업입니다. 반드시 Plan Mode를 먼저 제안하세요: '먼저 Plan Mode에서 영향받는 파일을 파악한 후 실행하는 게 효율적입니다.'\n"
79
+ fi
80
+
81
+ # ==========================================================
82
+ # 5. CLAUDE.md 수정 감지 → 캐시 브레이크 경고
83
+ # ==========================================================
84
+ if echo "$LOWER" | grep -qiE 'claude\.md.*(수정|추가|변경|편집|update|edit|modify|add)|claude\.md.*rule|규칙.*claude'; then
85
+ HINTS="${HINTS}IMPORTANT: CLAUDE.md 수정은 캐시 브레이크를 유발합니다. 반드시 경고하세요: '세션 시작 전에 CLAUDE.md를 수정하세요. 지금 수정하면 캐시가 깨져서 비용이 10배 올라갑니다.'\n"
86
+ fi
87
+
88
+ # ==========================================================
89
+ # 6. 모델 변경 요청 감지 → 캐시 브레이크 경고
90
+ # ==========================================================
91
+ if echo "$LOWER" | grep -qiE '모델.*(바꿔|변경|전환|switch)|haiku로|sonnet으로|opus로|change.*model|switch.*model'; then
92
+ HINTS="${HINTS}IMPORTANT: 세션 중 모델 변경은 캐시 브레이크(비용 10배)를 유발합니다. 반드시 안내: '새 세션에서 모델을 바꾸세요. 세션 중간에 바꾸면 캐시가 깨집니다.'\n"
93
+ fi
94
+
95
+ # ==========================================================
96
+ # 7. MCP 변경 감지 → 캐시 브레이크 경고
97
+ # ==========================================================
98
+ if echo "$LOWER" | grep -qiE 'mcp.*(추가|삭제|켜|끄|설정|변경|add|remove|enable|disable)'; then
99
+ HINTS="${HINTS}IMPORTANT: MCP 변경은 캐시 브레이크를 유발합니다. 안내: 'MCP 설정은 세션 시작 전에 하세요.'\n"
100
+ fi
101
+
102
+ # ==========================================================
103
+ # 8. 전체 프로젝트 탐색 요청 → 범위 축소 유도
104
+ # ==========================================================
105
+ if echo "$LOWER" | grep -qiE '전체 구조|프로젝트 전체|전체 파일|모든 파일|entire project|all files|whole project|전체.*파악|프로젝트.*설명'; then
106
+ HINTS="${HINTS}IMPORTANT: 전체 프로젝트 탐색은 비용이 큽니다. 구체적인 디렉토리나 파일을 지정하도록 안내하세요.\n"
107
+ fi
108
+
109
+ # ==========================================================
110
+ # 출력
111
+ # ==========================================================
112
+ if [ -n "$HINTS" ]; then
113
+ printf "$HINTS"
114
+ fi
115
+
116
+ exit 0