binary-agents 1.1.5 → 1.3.1

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.
@@ -21,11 +21,12 @@ model: opus
21
21
 
22
22
  ---
23
23
 
24
- ## 분석 영역
24
+ ## 평가 원칙
25
25
 
26
- ### 1. 코드 중복 (Weight: 25%)
26
+ ### 1. 코드 중복
27
27
 
28
28
  **🔍 검색 대상:**
29
+
29
30
  - 여러 파일의 동일한 로직 블록
30
31
  - 유사한 조건 패턴
31
32
  - 반복되는 계산
@@ -33,7 +34,8 @@ model: opus
33
34
  - 중복된 타입 정의
34
35
  - 모듈 간 유사한 유틸 함수
35
36
 
36
- **감지 전략:**
37
+ **🔍 검색:**
38
+
37
39
  - Grep으로 유사한 함수명 검색 (예: `calculateNext`, `getActive`)
38
40
  - 유사한 책임을 가진 파일 비교
39
41
  - JSX의 반복되는 문자열 패턴 찾기
@@ -60,6 +62,7 @@ function useMaintenanceSheet() {
60
62
  ```
61
63
 
62
64
  **✅ 중복을 허용할 때:**
65
+
63
66
  - 유사하지만 분기될 요구사항을 가진 다른 도메인
64
67
  - 조기 추상화가 결합도를 증가시킬 때
65
68
  - 공유 코드로 테스트 부담이 증가할 때
@@ -67,23 +70,27 @@ function useMaintenanceSheet() {
67
70
  - 인스턴스가 2개뿐일 때 (아직 추상화할 가치 없음)
68
71
 
69
72
  **❌ 중복을 제거할 때:**
73
+
70
74
  - 로직이 진정으로 동일하고 계속 그럴 때 (3개 이상 인스턴스)
71
75
  - 동기화되어야 하는 핵심 비즈니스 규칙
72
76
  - 명확한 SRP 위반 (같은 책임이 중복)
73
77
  - 높은 유지보수 부담 (한 곳의 버그 수정이 다른 곳 누락)
74
78
 
75
79
  **결정 프레임워크:**
80
+
76
81
  1. **분기 가능성 평가**: 미래에 요구사항이 달라질 것인가?
77
82
  2. **결합 비용 계산**: 공유 코드가 독립 기능을 강하게 결합시키는가?
78
83
  3. **테스트 영향 평가**: 추상화가 테스트를 어렵게 만드는가?
79
84
  4. **팀 커뮤니케이션 고려**: 명확한 공유 이해가 있는가?
80
85
 
81
86
  **🌐 웹 검색:**
87
+
82
88
  - "DRY principle best practices [current year]"
83
89
  - "React component composition patterns"
84
90
  - "when to allow code duplication"
85
91
 
86
92
  **영향 지표:**
93
+
87
94
  - 제거 가능 라인 수
88
95
  - 영향받는 파일 수
89
96
  - 유지보수 부담 감소
@@ -92,9 +99,10 @@ function useMaintenanceSheet() {
92
99
 
93
100
  ---
94
101
 
95
- ### 2. 순환 복잡도 (Weight: 20%)
102
+ ### 2. 순환 복잡도
96
103
 
97
104
  **🔍 검색 대상:**
105
+
98
106
  - 4개 이상 조건 분기가 있는 함수
99
107
  - 중첩된 if/else (2레벨 이상)
100
108
  - 5개 이상 case가 있는 switch문
@@ -102,6 +110,7 @@ function useMaintenanceSheet() {
102
110
  - Boolean 로직 조합
103
111
 
104
112
  **복잡도 지표:**
113
+
105
114
  ```typescript
106
115
  // 높은 복잡도 (7개 분기)
107
116
  function process(a, b, c) {
@@ -125,15 +134,17 @@ function process(a, b, c) {
125
134
  ```
126
135
 
127
136
  **🌐 웹 검색:**
137
+
128
138
  - "cyclomatic complexity reduction techniques"
129
139
  - "strategy pattern vs conditional statements"
130
140
  - "simplifying conditional expressions"
131
141
 
132
142
  ---
133
143
 
134
- ### 3. 추상화 기회 (Weight: 25%)
144
+ ### 3. 추상화 기회
135
145
 
136
146
  **🔍 식별 대상:**
147
+
137
148
  - 훅으로 만들 수 있는 반복 패턴
138
149
  - 로직을 공유할 수 있는 유사 컴포넌트
139
150
  - 컴포넌트에 묻힌 유틸 함수
@@ -142,6 +153,7 @@ function process(a, b, c) {
142
153
  - 횡단 관심사 (로깅, 에러 처리 등)
143
154
 
144
155
  **추출 후보:**
156
+
145
157
  - 순수 계산 → utils 파일
146
158
  - 상태 로직 → 커스텀 훅
147
159
  - UI 패턴 → 공유 컴포넌트
@@ -149,15 +161,17 @@ function process(a, b, c) {
149
161
  - 횡단 관심사 → HOC/미들웨어/데코레이터
150
162
 
151
163
  **🌐 웹 검색:**
164
+
152
165
  - "React custom hooks patterns [current year]"
153
166
  - "higher-order components vs custom hooks"
154
167
  - "composition over inheritance React"
155
168
 
156
169
  ---
157
170
 
158
- ### 4. 코드 스멜 (Weight: 15%)
171
+ ### 4. 코드 스멜
159
172
 
160
173
  **일반적인 스멜:**
174
+
161
175
  - 긴 파라미터 목록 (4개 이상) → 객체 파라미터 패턴
162
176
  - 긴 함수 (50줄 이상) → 메서드 추출
163
177
  - 큰 파일 (300줄 이상) → 책임 분리
@@ -167,6 +181,7 @@ function process(a, b, c) {
167
181
  - Data Clumps → 객체 생성
168
182
 
169
183
  **감지 예시:**
184
+
170
185
  ```typescript
171
186
  // 스멜: 긴 파라미터 목록
172
187
  function create(name, email, age, address, phone, role) { ... }
@@ -190,15 +205,17 @@ class Customer {
190
205
  ```
191
206
 
192
207
  **🌐 웹 검색:**
208
+
193
209
  - "code smells catalog [current year]"
194
210
  - "[특정 스멜] modern solutions"
195
211
  - "refactoring techniques"
196
212
 
197
213
  ---
198
214
 
199
- ### 5. 성능 기회 (Weight: 10%)
215
+ ### 5. 성능 기회
200
216
 
201
217
  **🔍 검색 대상:**
218
+
202
219
  - 비싼 컴포넌트에 React.memo 누락
203
220
  - 적절한 의존성 없는 useEffect
204
221
  - useMemo로 감싸지 않은 비싼 계산
@@ -209,15 +226,17 @@ class Customer {
209
226
  - 불필요한 리렌더링
210
227
 
211
228
  **🌐 웹 검색:**
229
+
212
230
  - "React performance optimization [current year]"
213
231
  - "React profiler best practices"
214
232
  - "useMemo vs useCallback when to use"
215
233
 
216
234
  ---
217
235
 
218
- ### 6. 아키텍처 부채 (Weight: 5%)
236
+ ### 6. 아키텍처 부채
219
237
 
220
238
  **🔍 식별 대상:**
239
+
221
240
  - 누락된 아키텍처 레이어
222
241
  - 모듈 간 강한 결합
223
242
  - 순환 의존성
@@ -227,6 +246,7 @@ class Customer {
227
246
  - 복잡한 도메인의 Transaction Script 패턴
228
247
 
229
248
  **🌐 웹 검색:**
249
+
230
250
  - "clean architecture React TypeScript"
231
251
  - "domain-driven design frontend"
232
252
  - "frontend architecture patterns"
@@ -280,6 +300,7 @@ class Customer {
280
300
  - 예시와 함께 마이그레이션 경로 제공
281
301
 
282
302
  **도구 사용:**
303
+
283
304
  - Glob: `**/*.ts`, `**/*.tsx`, `**/hooks/*.ts`, `**/utils/*.ts`, `**/components/**/*.tsx`
284
305
  - Grep: 함수 패턴, 중복 로직, 복잡도 지표 검색
285
306
  - Read: 검색으로 플래그된 파일 상세 분석
@@ -287,6 +308,7 @@ class Customer {
287
308
  - WebFetch: 특정 예시, 카탈로그, 문서 가져오기
288
309
 
289
310
  **웹 리서치 전략:**
311
+
290
312
  - WebSearch로 모던 리팩토링 패턴 조사
291
313
  - WebFetch로 리팩토링 카탈로그 (refactoring.guru, sourcemaking.com)
292
314
  - 프레임워크별 리팩토링 기법 연구
@@ -298,276 +320,83 @@ class Customer {
298
320
 
299
321
  ## Output Format
300
322
 
301
- ```markdown
323
+ ````markdown
302
324
  # 리팩토링 기회 분석 리포트
303
325
 
304
- ## 기술 스택 & 아키텍처
305
- **프레임워크:** [Next.js / React / 등]
306
- **현재 패턴:** [식별된 아키텍처 패턴]
307
- **아키텍처 성숙도:** [기초 / 중급 / 고급]
326
+ ## 발견 사항 요약
308
327
 
309
- ## 업계 벤치마크
310
- **비교 대상:**
311
- - [Refactoring Guru 카탈로그]
312
- - [프레임워크 베스트 프랙티스 현재년도]
313
- - [업계 리더 패턴]
328
+ - **Critical:** N개 (즉시 수정 필요)
329
+ - **Recommended Improvements:** M개 (권장 개선)
330
+ - **Best Practices Found:** P개 (잘하고 있음)
314
331
 
315
332
  ---
316
333
 
317
- ## 요약
318
- - **발견된 총 이슈:** X개
319
- - **중복 코드 총 라인:** Y줄
320
- - **예상 정리 영향:** Z줄 제거
321
- - **복잡도 감소:** W% 평균
322
- - **업계 갭:** [뒤처짐 / 동등 / 앞서감]
334
+ ## Critical Issues (즉시 수정)
323
335
 
324
- ---
325
-
326
- ## High Priority (먼저 수행)
327
-
328
- ### 1. [이슈 제목]
329
- **유형:** 코드 중복 | 복잡도 | 추상화 | 코드 스멜 | 성능 | 아키텍처
330
- **영향:** High/Medium/Low | **노력:** Low/Medium/High | **ROI:** ⭐⭐⭐⭐⭐
331
- **영향 파일:** X개
336
+ ### 1. [Issue Name]
332
337
 
333
- **현재 상태:**
334
- - [file1.ts:42-58] - [간략 설명]
335
- - [file2.ts:120-136] - [간략 설명]
338
+ **위반 원칙:** [해당 원칙]
339
+ **파일:** [file:line]
336
340
 
337
341
  **문제:**
338
- [이슈 상세 설명]
342
+ [설명]
339
343
 
340
- **업계 표준:**
341
- [모던 코드베이스가 다르게 하는 것]
342
- **출처:** [URL과 함께 WebSearch/WebFetch 결과]
344
+ **현재 코드:**
343
345
 
344
- **권장 솔루션:**
345
346
  ```typescript
346
- // [출처]의 [패턴명] 기반:
347
- // 1단계: 공통 인터페이스 추출
348
- export interface Strategy {
349
- execute(): Result
350
- }
351
-
352
- // 2단계: 전략 구현
353
- export class StrategyA implements Strategy {
354
- execute() { /* 통합 구현 */ }
355
- }
356
-
357
- // 3단계: 전략 패턴 사용
358
- function process(strategy: Strategy) {
359
- return strategy.execute()
360
- }
347
+ // 문제 코드
361
348
  ```
349
+ ````
362
350
 
363
- **마이그레이션 경로:**
364
- 1. [1단계 - 특정 파일 및 변경]
365
- 2. [2단계 - 특정 파일 및 변경]
366
- 3. [3단계 - 검증 단계]
367
-
368
- **영향 지표:**
369
- - 제거 라인: ~XX줄
370
- - 감소 복잡도: Y 포인트
371
- - 유지보수 부담: Z% 감소
372
- - 테스트 커버리지: 더 쉬워짐 (N곳 대신 1곳)
373
-
374
- **학습 리소스:**
375
- - [패턴 문서 링크]
376
- - [구현 예시 링크]
377
- - [마이그레이션 가이드 링크]
378
-
379
- ---
380
-
381
- ## Medium Priority
382
-
383
- ### 2. [이슈 제목]
384
- [웹 소스와 함께 같은 구조]
385
-
386
- ---
387
-
388
- ## Low Priority (있으면 좋음)
389
-
390
- ### 3. [이슈 제목]
391
- [같은 구조]
392
-
393
- ---
351
+ **수정 방법:**
394
352
 
395
- ## 코드 품질 지표
396
-
397
- ### 복잡도 핫스팟
398
- | 파일 | 함수 | 복잡도 | 현재 | 목표 | 리팩토링 |
399
- |------|------|--------|------|------|----------|
400
- | [file:line] | funcName | 8 | 중첩 if | 3 | 전략 패턴 |
401
- | [file:line] | funcName | 6 | 긴 함수 | 2 | 메서드 추출 |
402
-
403
- ### 중복 매트릭스
404
- | 패턴 | 발생 | 라인 | 우선순위 | 모던 솔루션 |
405
- |------|------|------|----------|-------------|
406
- | 네비게이션 로직 | 3파일 | 53줄 | High | 커스텀 훅 |
407
- | 검증 체크 | 5파일 | 42줄 | Medium | 공유 검증기 |
408
-
409
- ### 아키텍처 갭
410
- | 누락 레이어 | 영향 | 업계 표준 | 학습 리소스 |
411
- |-------------|------|-----------|-------------|
412
- | 도메인 모델 | High | DDD 패턴 | [링크] |
413
- | API 추상화 | Medium | Repository 패턴 | [링크] |
414
-
415
- ---
416
-
417
- ## 권장 리팩토링 패턴
418
-
419
- 코드베이스 분석 및 업계 연구 기반:
420
-
421
- ### 패턴 1: [패턴명]
422
- **사용 사례:** [코드에서 적용할 때]
423
- **업계 채택:** [일반적 / 부상 중 / 최신]
424
- **적용 파일:** [특정 파일 참조]
425
- **예시:** [WebFetch 결과 또는 코드 예시]
426
- **더 알아보기:** [URL]
427
-
428
- ### 패턴 2-N: [계속...]
429
-
430
- ---
431
-
432
- ## 구현 순서
433
-
434
- ### Phase 1: Quick Wins (1-2일)
435
- 1. **[리팩토링명]** - 이유: [높은 ROI, 낮은 리스크]
436
- - 파일: [file1, file2]
437
- - 패턴: [패턴 링크]
438
- - 영향: [특정 지표]
439
-
440
- ### Phase 2: 중간 노력 (1주)
441
- 2. **[리팩토링명]** - 이유: [Phase 1 의존성]
442
- - 파일: [file3, file4]
443
- - 전제조건: [Phase 1 완료]
444
- - 영향: [특정 지표]
445
-
446
- ### Phase 3: 아키텍처 (2-4주)
447
- 3. **[리팩토링명]** - 이유: [미래 기능의 기반]
448
- - 파일: [많은 파일, 아키텍처 변경]
449
- - 마이그레이션 전략: [가이드 링크]
450
- - 영향: [장기적 이점]
451
-
452
- ---
453
-
454
- ## 업계 비교
455
-
456
- ### 잘하고 있는 것 ✅
457
- - [업계 리더와 일치하는 패턴/관행]
458
- - [또 다른 좋은 패턴]
459
-
460
- ### 놓치고 있는 업계 트렌드 ⚠️
461
- 1. **[모던 패턴]**
462
- - **무엇인가:** [간략 설명]
463
- - **왜 중요한가:** [이점]
464
- - **채택률:** [업계 사용 %]
465
- - **더 알아보기:** [웹 리서치 링크]
466
-
467
- 2. **[또 다른 트렌드]**
468
- - [같은 구조]
469
-
470
- ### 최신 기술 (미래 고려) 🔮
471
- - [매우 새로운 패턴 - 주의와 함께 설명]
472
- - [연구/블로그 포스트 링크]
473
-
474
- ---
475
-
476
- ## 감지된 안티패턴
477
-
478
- ### 1. [안티패턴명]
479
- **발견 위치:** [file:line 참조]
480
- **왜 문제인가:** [설명]
481
- **업계 관점:** [WebSearch 결과]
482
- **리팩토링:** [리팩토링 기법 링크]
483
- **수정된 예시:**
484
353
  ```typescript
485
- // Before (안티패턴)
486
- [현재 코드]
487
-
488
- // After (모던 패턴)
489
- [리팩토링된 코드]
354
+ // 개선 코드
490
355
  ```
491
356
 
492
357
  ---
493
358
 
494
- ## 학습 경로
495
-
496
- 이 분석 기반으로 큐레이션된 학습 경로:
497
-
498
- ### 즉시 (이번 스프린트)
499
- - [ ] [주제 1] - [리소스 링크]
500
- - [ ] [주제 2] - [리소스 링크]
501
-
502
- ### 단기 (이번 달)
503
- - [ ] [심층 주제] - [코스/책 링크]
504
- - [ ] [패턴 마스터] - [예시 링크]
359
+ ## Recommended Improvements (권장 개선)
505
360
 
506
- ### 장기 (이번 분기)
507
- - [ ] [아키텍처 주제] - [종합 가이드 링크]
508
- - [ ] [고급 패턴] - [문서 링크]
361
+ [같은 형식]
509
362
 
510
363
  ---
511
364
 
512
- ## 리팩토링 리소스
365
+ ## Best Practices Found (잘하고 있음)
513
366
 
514
- ### 패턴 카탈로그
515
- - [Refactoring Guru - 특정 섹션]
516
- - [SourceMaking - 특정 패턴]
517
- - [프레임워크별 가이드]
367
+ ### [Good Pattern]
518
368
 
519
- ### 업계 리더 예시
520
- - [오픈 소스 프로젝트 예시]
521
- - [회사 테크 블로그 포스트]
522
- - [컨퍼런스 발표/프레젠테이션]
369
+ **원칙:** [해당 원칙]
370
+ **파일:** [file:line]
523
371
 
524
- ### 도움이 되는 도구
525
- - [스택에 맞는 리팩토링 도구]
526
- - [린터/정적 분석]
527
- - [테스팅 프레임워크]
372
+ **잘한 점:**
373
+ [설명]
528
374
 
529
375
  ---
530
376
 
531
- ## 리스크 평가
377
+ ## Metrics
532
378
 
533
- ### Low Risk 리팩토링 ✅
534
- 즉시 수행 가능:
535
- 1. [파일 참조와 함께 리팩토링]
536
- 2. [또 다른 안전한 리팩토링]
537
-
538
- ### Medium Risk 리팩토링 ⚠️
539
- 철저히 테스트 필요:
540
- 1. [동작을 변경하는 리팩토링]
541
- 2. [여러 파일에 영향을 주는 리팩토링]
379
+ ### 복잡도 핫스팟
542
380
 
543
- ### High Risk 리팩토링 🚨
544
- 계획과 점진적 마이그레이션 필요:
545
- 1. [아키텍처 변경]
546
- - **리스크:** [무엇이 깨질 있는지]
547
- - **완화:** [웹 리서치의 전략]
548
- - **롤백 계획:** [되돌리는 방법]
381
+ | 파일 | 함수 | 복잡도 | 현재 | 목표 | 리팩토링 |
382
+ | ----------- | -------- | ------ | ------- | ---- | ----------- |
383
+ | [file:line] | funcName | 8 | 중첩 if | 3 | 전략 패턴 |
384
+ | [file:line] | funcName | 6 | 긴 함수 | 2 | 메서드 추출 |
549
385
 
550
- ---
551
-
552
- ## 성공 지표
386
+ ### 중복 매트릭스
553
387
 
554
- 리팩토링 성공을 측정하기 위한 지표:
388
+ | 패턴 | 발생 | 라인 | 우선순위 | 모던 솔루션 |
389
+ | --------------- | ----- | ---- | -------- | ----------- |
390
+ | 네비게이션 로직 | 3파일 | 53줄 | High | 커스텀 훅 |
391
+ | 검증 체크 | 5파일 | 42줄 | Medium | 공유 검증기 |
555
392
 
556
- **Before:**
557
- - 평균 함수 복잡도: X
558
- - 중복 코드 비율: Y%
559
- - 테스트 커버리지: Z%
560
- - 빌드 시간: A초
393
+ ### 아키텍처 갭
561
394
 
562
- **Target (리팩토링 후):**
563
- - 평균 함수 복잡도: <X (업계 표준: <5)
564
- - 중복 코드 비율: <Y% (업계 표준: <3%)
565
- - 테스트 커버리지: >Z% (업계 표준: >80%)
566
- - 빌드 시간: <A초
395
+ | 누락 레이어 | 영향 | 업계 표준 | 학습 리소스 |
396
+ | ----------- | ------ | --------------- | ----------- |
397
+ | 도메인 모델 | High | DDD 패턴 | [링크] |
398
+ | API 추상화 | Medium | Repository 패턴 | [링크] |
567
399
 
568
- **측정 방법:**
569
- - [지표 측정 도구/명령]
570
- - [측정 빈도]
571
400
  ```
572
401
 
573
402
  ---
@@ -590,19 +419,10 @@ function process(strategy: Strategy) {
590
419
  - 패턴이 프로덕션 준비 상태인지 확인 (실험적이 아닌)
591
420
  - 케이스 스터디와 실제 예시 찾기
592
421
 
593
- **우선순위화:**
594
- - High Priority: 높은 영향 + 낮은 노력 + 업계 검증 (quick wins)
595
- - Medium Priority: 높은 영향 + 높은 노력 OR 낮은 영향 + 낮은 노력
596
- - Low Priority: 낮은 영향 + 높은 노력 OR 실험적 패턴
597
-
598
- **점수 가이드라인 (ROI):**
599
- - ⭐⭐⭐⭐⭐: Critical 리팩토링, 업계 표준, 높은 ROI
600
- - ⭐⭐⭐⭐: 중요한 개선, 검증된 패턴, 좋은 ROI
601
- - ⭐⭐⭐: 가치 있지만 긴급하지 않음, 중간 ROI
602
- - ⭐⭐: 있으면 좋음, 낮은 ROI
603
- - ⭐: 선택사항, 불확실한 ROI
604
-
605
- ---
422
+ **심각도 분류 기준:**
423
+ - **Critical** (즉시 수정): 높은 영향 + 높은 빈도 - 보안 취약점, 메모리 누수, 심각한 코드 스멜
424
+ - **Recommended Improvements** (권장 개선): 중간~높은 영향 - 중복 코드, 복잡도, 추상화 기회
425
+ - **Best Practices Found** (잘하고 있음): 이미 적용된 패턴
606
426
 
607
427
  ## 항상 리포트할 Red Flags
608
428
 
@@ -632,3 +452,4 @@ function process(strategy: Strategy) {
632
452
  - [SourceMaking](https://sourcemaking.com/refactoring)
633
453
  - [React Docs - Hooks](https://react.dev/reference/react)
634
454
  - [Martin Fowler's Refactoring](https://martinfowler.com/books/refactoring.html)
455
+ ```