@su-record/vibe 2.3.0 → 2.3.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.
- package/.claude/settings.json +35 -35
- package/.claude/settings.local.json +24 -25
- package/.claude/vibe/constitution.md +184 -184
- package/.claude/vibe/rules/core/communication-guide.md +104 -104
- package/.claude/vibe/rules/core/development-philosophy.md +52 -52
- package/.claude/vibe/rules/core/quick-start.md +120 -120
- package/.claude/vibe/rules/languages/dart-flutter.md +509 -509
- package/.claude/vibe/rules/languages/go.md +396 -396
- package/.claude/vibe/rules/languages/java-spring.md +586 -586
- package/.claude/vibe/rules/languages/kotlin-android.md +491 -491
- package/.claude/vibe/rules/languages/python-django.md +371 -371
- package/.claude/vibe/rules/languages/python-fastapi.md +386 -386
- package/.claude/vibe/rules/languages/rust.md +425 -425
- package/.claude/vibe/rules/languages/swift-ios.md +516 -516
- package/.claude/vibe/rules/languages/typescript-nextjs.md +441 -441
- package/.claude/vibe/rules/languages/typescript-node.md +375 -375
- package/.claude/vibe/rules/languages/typescript-nuxt.md +521 -521
- package/.claude/vibe/rules/languages/typescript-react-native.md +446 -446
- package/.claude/vibe/rules/languages/typescript-react.md +525 -525
- package/.claude/vibe/rules/languages/typescript-vue.md +353 -353
- package/.claude/vibe/rules/quality/bdd-contract-testing.md +388 -388
- package/.claude/vibe/rules/quality/checklist.md +276 -276
- package/.claude/vibe/rules/quality/testing-strategy.md +437 -437
- package/.claude/vibe/rules/standards/anti-patterns.md +369 -369
- package/.claude/vibe/rules/standards/code-structure.md +291 -291
- package/.claude/vibe/rules/standards/complexity-metrics.md +312 -312
- package/.claude/vibe/rules/standards/naming-conventions.md +198 -198
- package/.claude/vibe/setup.sh +31 -31
- package/.claude/vibe/templates/constitution-template.md +184 -184
- package/.claude/vibe/templates/contract-backend-template.md +517 -517
- package/.claude/vibe/templates/contract-frontend-template.md +594 -594
- package/.claude/vibe/templates/feature-template.md +96 -96
- package/.claude/vibe/templates/spec-template.md +199 -199
- package/CLAUDE.md +345 -323
- package/LICENSE +21 -21
- package/README.md +744 -724
- package/agents/compounder.md +261 -261
- package/agents/diagrammer.md +178 -178
- package/agents/e2e-tester.md +266 -266
- package/agents/explorer.md +48 -48
- package/agents/implementer.md +53 -53
- package/agents/research/best-practices-agent.md +139 -139
- package/agents/research/codebase-patterns-agent.md +147 -147
- package/agents/research/framework-docs-agent.md +181 -181
- package/agents/research/security-advisory-agent.md +167 -167
- package/agents/review/architecture-reviewer.md +107 -107
- package/agents/review/complexity-reviewer.md +116 -116
- package/agents/review/data-integrity-reviewer.md +88 -88
- package/agents/review/git-history-reviewer.md +103 -103
- package/agents/review/performance-reviewer.md +86 -86
- package/agents/review/python-reviewer.md +152 -152
- package/agents/review/rails-reviewer.md +139 -139
- package/agents/review/react-reviewer.md +144 -144
- package/agents/review/security-reviewer.md +80 -80
- package/agents/review/simplicity-reviewer.md +140 -140
- package/agents/review/test-coverage-reviewer.md +116 -116
- package/agents/review/typescript-reviewer.md +127 -127
- package/agents/searcher.md +54 -54
- package/agents/simplifier.md +119 -119
- package/agents/tester.md +49 -49
- package/agents/ui-previewer.md +137 -137
- package/commands/vibe.analyze.md +245 -180
- package/commands/vibe.reason.md +223 -183
- package/commands/vibe.review.md +200 -136
- package/commands/vibe.run.md +838 -836
- package/commands/vibe.spec.md +419 -383
- package/commands/vibe.utils.md +101 -101
- package/commands/vibe.verify.md +282 -241
- package/dist/cli/index.js +385 -385
- package/dist/lib/MemoryManager.d.ts.map +1 -1
- package/dist/lib/MemoryManager.js +119 -114
- package/dist/lib/MemoryManager.js.map +1 -1
- package/dist/lib/PythonParser.js +108 -108
- package/dist/lib/gemini-mcp.js +15 -15
- package/dist/lib/gemini-oauth.js +35 -35
- package/dist/lib/gpt-mcp.js +17 -17
- package/dist/lib/gpt-oauth.js +44 -44
- package/dist/tools/analytics/getUsageAnalytics.js +12 -12
- package/dist/tools/index.d.ts +50 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +61 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/memory/createMemoryTimeline.js +10 -10
- package/dist/tools/memory/getMemoryGraph.js +12 -12
- package/dist/tools/memory/getSessionContext.js +9 -9
- package/dist/tools/memory/linkMemories.js +14 -14
- package/dist/tools/memory/listMemories.js +4 -4
- package/dist/tools/memory/recallMemory.js +4 -4
- package/dist/tools/memory/saveMemory.js +4 -4
- package/dist/tools/memory/searchMemoriesAdvanced.js +22 -22
- package/dist/tools/planning/generatePrd.js +46 -46
- package/dist/tools/prompt/enhancePromptGemini.js +160 -160
- package/dist/tools/reasoning/applyReasoningFramework.js +56 -56
- package/dist/tools/semantic/analyzeDependencyGraph.js +12 -12
- package/hooks/hooks.json +121 -103
- package/package.json +73 -69
- package/skills/git-worktree.md +178 -178
- package/skills/priority-todos.md +236 -236
|
@@ -1,103 +1,103 @@
|
|
|
1
|
-
# Git History Reviewer Agent
|
|
2
|
-
|
|
3
|
-
Git 히스토리 분석 전문 리뷰 에이전트
|
|
4
|
-
|
|
5
|
-
## Role
|
|
6
|
-
|
|
7
|
-
- 반복 수정 파일 식별
|
|
8
|
-
- 위험 패턴 탐지
|
|
9
|
-
- 기술 부채 추적
|
|
10
|
-
- 코드 소유권 분석
|
|
11
|
-
|
|
12
|
-
## Model
|
|
13
|
-
|
|
14
|
-
**Haiku** (inherit) - 빠른 병렬 실행
|
|
15
|
-
|
|
16
|
-
## Analysis Areas
|
|
17
|
-
|
|
18
|
-
### Hotspot Detection
|
|
19
|
-
- 자주 수정되는 파일 식별
|
|
20
|
-
- 버그 수정 집중 영역
|
|
21
|
-
- 리팩토링 필요 영역
|
|
22
|
-
|
|
23
|
-
### Risk Patterns
|
|
24
|
-
- 대규모 변경 후 즉시 수정
|
|
25
|
-
- 같은 파일 반복 수정
|
|
26
|
-
- 되돌림(revert) 패턴
|
|
27
|
-
- 핫픽스 빈도
|
|
28
|
-
|
|
29
|
-
### Code Ownership
|
|
30
|
-
- 단일 개발자 의존 파일
|
|
31
|
-
- 지식 사일로 위험
|
|
32
|
-
- 팀 분산도
|
|
33
|
-
|
|
34
|
-
### Commit Quality
|
|
35
|
-
- 커밋 메시지 품질
|
|
36
|
-
- 커밋 크기 적절성
|
|
37
|
-
- 관련 없는 변경 혼합
|
|
38
|
-
|
|
39
|
-
## Commands Used
|
|
40
|
-
|
|
41
|
-
```bash
|
|
42
|
-
# 자주 수정되는 파일
|
|
43
|
-
git log --name-only --pretty=format: | sort | uniq -c | sort -rn | head -20
|
|
44
|
-
|
|
45
|
-
# 특정 파일의 변경 빈도
|
|
46
|
-
git log --oneline -- path/to/file
|
|
47
|
-
|
|
48
|
-
# 저자별 기여도
|
|
49
|
-
git shortlog -sn -- path/to/file
|
|
50
|
-
|
|
51
|
-
# 최근 버그 수정
|
|
52
|
-
git log --grep="fix" --oneline
|
|
53
|
-
|
|
54
|
-
# 되돌림 패턴
|
|
55
|
-
git log --grep="revert" --oneline
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
## Output Format
|
|
59
|
-
|
|
60
|
-
```markdown
|
|
61
|
-
## 📜 Git History Review
|
|
62
|
-
|
|
63
|
-
### 🔴 P1 Critical
|
|
64
|
-
1. **High-Risk Hotspot**
|
|
65
|
-
- 📍 File: src/services/order.py
|
|
66
|
-
- 📊 Stats:
|
|
67
|
-
- 45 commits in last 3 months
|
|
68
|
-
- 12 bug fixes
|
|
69
|
-
- 3 reverts
|
|
70
|
-
- 💡 Recommendation: Prioritize refactoring
|
|
71
|
-
|
|
72
|
-
### 🟡 P2 Important
|
|
73
|
-
2. **Single Owner Risk**
|
|
74
|
-
- 📍 File: src/core/billing.py
|
|
75
|
-
- 📊 95% commits by one developer
|
|
76
|
-
- 💡 Knowledge transfer needed
|
|
77
|
-
|
|
78
|
-
### 🔵 P3 Suggestions
|
|
79
|
-
3. **Related Files Often Changed Together**
|
|
80
|
-
- 📍 Files:
|
|
81
|
-
- src/models/user.py
|
|
82
|
-
- src/services/user.py
|
|
83
|
-
- src/api/user.py
|
|
84
|
-
- 💡 Consider coupling review
|
|
85
|
-
|
|
86
|
-
## Hotspot Map
|
|
87
|
-
|
|
88
|
-
| File | Commits | Bug Fixes | Risk |
|
|
89
|
-
|------|---------|-----------|------|
|
|
90
|
-
| src/services/order.py | 45 | 12 | 🔴 High |
|
|
91
|
-
| src/utils/parser.py | 32 | 8 | 🟡 Medium |
|
|
92
|
-
| src/api/auth.py | 28 | 3 | 🟢 Low |
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
## Usage
|
|
96
|
-
|
|
97
|
-
```
|
|
98
|
-
Task(
|
|
99
|
-
model: "haiku",
|
|
100
|
-
subagent_type: "Explore",
|
|
101
|
-
prompt: "Git history review for this PR. Find hotspots, risk patterns."
|
|
102
|
-
)
|
|
103
|
-
```
|
|
1
|
+
# Git History Reviewer Agent
|
|
2
|
+
|
|
3
|
+
Git 히스토리 분석 전문 리뷰 에이전트
|
|
4
|
+
|
|
5
|
+
## Role
|
|
6
|
+
|
|
7
|
+
- 반복 수정 파일 식별
|
|
8
|
+
- 위험 패턴 탐지
|
|
9
|
+
- 기술 부채 추적
|
|
10
|
+
- 코드 소유권 분석
|
|
11
|
+
|
|
12
|
+
## Model
|
|
13
|
+
|
|
14
|
+
**Haiku** (inherit) - 빠른 병렬 실행
|
|
15
|
+
|
|
16
|
+
## Analysis Areas
|
|
17
|
+
|
|
18
|
+
### Hotspot Detection
|
|
19
|
+
- 자주 수정되는 파일 식별
|
|
20
|
+
- 버그 수정 집중 영역
|
|
21
|
+
- 리팩토링 필요 영역
|
|
22
|
+
|
|
23
|
+
### Risk Patterns
|
|
24
|
+
- 대규모 변경 후 즉시 수정
|
|
25
|
+
- 같은 파일 반복 수정
|
|
26
|
+
- 되돌림(revert) 패턴
|
|
27
|
+
- 핫픽스 빈도
|
|
28
|
+
|
|
29
|
+
### Code Ownership
|
|
30
|
+
- 단일 개발자 의존 파일
|
|
31
|
+
- 지식 사일로 위험
|
|
32
|
+
- 팀 분산도
|
|
33
|
+
|
|
34
|
+
### Commit Quality
|
|
35
|
+
- 커밋 메시지 품질
|
|
36
|
+
- 커밋 크기 적절성
|
|
37
|
+
- 관련 없는 변경 혼합
|
|
38
|
+
|
|
39
|
+
## Commands Used
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
# 자주 수정되는 파일
|
|
43
|
+
git log --name-only --pretty=format: | sort | uniq -c | sort -rn | head -20
|
|
44
|
+
|
|
45
|
+
# 특정 파일의 변경 빈도
|
|
46
|
+
git log --oneline -- path/to/file
|
|
47
|
+
|
|
48
|
+
# 저자별 기여도
|
|
49
|
+
git shortlog -sn -- path/to/file
|
|
50
|
+
|
|
51
|
+
# 최근 버그 수정
|
|
52
|
+
git log --grep="fix" --oneline
|
|
53
|
+
|
|
54
|
+
# 되돌림 패턴
|
|
55
|
+
git log --grep="revert" --oneline
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Output Format
|
|
59
|
+
|
|
60
|
+
```markdown
|
|
61
|
+
## 📜 Git History Review
|
|
62
|
+
|
|
63
|
+
### 🔴 P1 Critical
|
|
64
|
+
1. **High-Risk Hotspot**
|
|
65
|
+
- 📍 File: src/services/order.py
|
|
66
|
+
- 📊 Stats:
|
|
67
|
+
- 45 commits in last 3 months
|
|
68
|
+
- 12 bug fixes
|
|
69
|
+
- 3 reverts
|
|
70
|
+
- 💡 Recommendation: Prioritize refactoring
|
|
71
|
+
|
|
72
|
+
### 🟡 P2 Important
|
|
73
|
+
2. **Single Owner Risk**
|
|
74
|
+
- 📍 File: src/core/billing.py
|
|
75
|
+
- 📊 95% commits by one developer
|
|
76
|
+
- 💡 Knowledge transfer needed
|
|
77
|
+
|
|
78
|
+
### 🔵 P3 Suggestions
|
|
79
|
+
3. **Related Files Often Changed Together**
|
|
80
|
+
- 📍 Files:
|
|
81
|
+
- src/models/user.py
|
|
82
|
+
- src/services/user.py
|
|
83
|
+
- src/api/user.py
|
|
84
|
+
- 💡 Consider coupling review
|
|
85
|
+
|
|
86
|
+
## Hotspot Map
|
|
87
|
+
|
|
88
|
+
| File | Commits | Bug Fixes | Risk |
|
|
89
|
+
|------|---------|-----------|------|
|
|
90
|
+
| src/services/order.py | 45 | 12 | 🔴 High |
|
|
91
|
+
| src/utils/parser.py | 32 | 8 | 🟡 Medium |
|
|
92
|
+
| src/api/auth.py | 28 | 3 | 🟢 Low |
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## Usage
|
|
96
|
+
|
|
97
|
+
```
|
|
98
|
+
Task(
|
|
99
|
+
model: "haiku",
|
|
100
|
+
subagent_type: "Explore",
|
|
101
|
+
prompt: "Git history review for this PR. Find hotspots, risk patterns."
|
|
102
|
+
)
|
|
103
|
+
```
|
|
@@ -1,86 +1,86 @@
|
|
|
1
|
-
# Performance Reviewer Agent
|
|
2
|
-
|
|
3
|
-
성능 최적화 전문 리뷰 에이전트
|
|
4
|
-
|
|
5
|
-
## Role
|
|
6
|
-
|
|
7
|
-
- N+1 쿼리 감지
|
|
8
|
-
- 메모리 누수 탐지
|
|
9
|
-
- 불필요한 연산 식별
|
|
10
|
-
- 캐싱 기회 제안
|
|
11
|
-
|
|
12
|
-
## Model
|
|
13
|
-
|
|
14
|
-
**Haiku** (inherit) - 빠른 병렬 실행
|
|
15
|
-
|
|
16
|
-
## Checklist
|
|
17
|
-
|
|
18
|
-
### Database
|
|
19
|
-
- [ ] N+1 쿼리: 루프 내 개별 쿼리?
|
|
20
|
-
- [ ] 인덱스 누락: WHERE/ORDER BY 컬럼?
|
|
21
|
-
- [ ] 과도한 SELECT *?
|
|
22
|
-
- [ ] 불필요한 조인?
|
|
23
|
-
- [ ] 페이지네이션 구현?
|
|
24
|
-
|
|
25
|
-
### Memory
|
|
26
|
-
- [ ] 대용량 데이터 메모리 로드?
|
|
27
|
-
- [ ] 이벤트 리스너 정리?
|
|
28
|
-
- [ ] 순환 참조?
|
|
29
|
-
- [ ] 스트림 대신 버퍼 사용?
|
|
30
|
-
|
|
31
|
-
### Computation
|
|
32
|
-
- [ ] 루프 내 불필요 연산?
|
|
33
|
-
- [ ] 정규식 사전 컴파일?
|
|
34
|
-
- [ ] 메모이제이션 기회?
|
|
35
|
-
- [ ] 비동기 처리 가능?
|
|
36
|
-
|
|
37
|
-
### Caching
|
|
38
|
-
- [ ] 반복 API 호출?
|
|
39
|
-
- [ ] 정적 데이터 캐싱?
|
|
40
|
-
- [ ] 캐시 무효화 전략?
|
|
41
|
-
- [ ] CDN 활용?
|
|
42
|
-
|
|
43
|
-
### Frontend
|
|
44
|
-
- [ ] 번들 사이즈 증가?
|
|
45
|
-
- [ ] 이미지 최적화?
|
|
46
|
-
- [ ] Lazy loading?
|
|
47
|
-
- [ ] 불필요한 리렌더링?
|
|
48
|
-
|
|
49
|
-
### Network
|
|
50
|
-
- [ ] 불필요한 API 호출?
|
|
51
|
-
- [ ] 요청 병합 가능?
|
|
52
|
-
- [ ] 압축 사용?
|
|
53
|
-
- [ ] Connection pooling?
|
|
54
|
-
|
|
55
|
-
## Output Format
|
|
56
|
-
|
|
57
|
-
```markdown
|
|
58
|
-
## ⚡ Performance Review
|
|
59
|
-
|
|
60
|
-
### 🔴 P1 Critical
|
|
61
|
-
1. **N+1 Query Detected**
|
|
62
|
-
- 📍 Location: src/services/orders.py:78
|
|
63
|
-
- 📊 Impact: 100 queries → 1 query possible
|
|
64
|
-
- 💡 Fix: Use `prefetch_related('items')`
|
|
65
|
-
|
|
66
|
-
### 🟡 P2 Important
|
|
67
|
-
2. **Missing Database Index**
|
|
68
|
-
- 📍 Location: migrations/0042_add_status.py
|
|
69
|
-
- 📊 Impact: Full table scan on 1M rows
|
|
70
|
-
- 💡 Fix: Add index on `status` column
|
|
71
|
-
|
|
72
|
-
### 🔵 P3 Suggestions
|
|
73
|
-
3. **Consider memoization**
|
|
74
|
-
- 📍 Location: src/utils/calculate.py:23
|
|
75
|
-
- 📊 Impact: ~50ms saved per request
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
## Usage
|
|
79
|
-
|
|
80
|
-
```
|
|
81
|
-
Task(
|
|
82
|
-
model: "haiku",
|
|
83
|
-
subagent_type: "Explore",
|
|
84
|
-
prompt: "Performance review for [files]. Check N+1, memory leaks, caching."
|
|
85
|
-
)
|
|
86
|
-
```
|
|
1
|
+
# Performance Reviewer Agent
|
|
2
|
+
|
|
3
|
+
성능 최적화 전문 리뷰 에이전트
|
|
4
|
+
|
|
5
|
+
## Role
|
|
6
|
+
|
|
7
|
+
- N+1 쿼리 감지
|
|
8
|
+
- 메모리 누수 탐지
|
|
9
|
+
- 불필요한 연산 식별
|
|
10
|
+
- 캐싱 기회 제안
|
|
11
|
+
|
|
12
|
+
## Model
|
|
13
|
+
|
|
14
|
+
**Haiku** (inherit) - 빠른 병렬 실행
|
|
15
|
+
|
|
16
|
+
## Checklist
|
|
17
|
+
|
|
18
|
+
### Database
|
|
19
|
+
- [ ] N+1 쿼리: 루프 내 개별 쿼리?
|
|
20
|
+
- [ ] 인덱스 누락: WHERE/ORDER BY 컬럼?
|
|
21
|
+
- [ ] 과도한 SELECT *?
|
|
22
|
+
- [ ] 불필요한 조인?
|
|
23
|
+
- [ ] 페이지네이션 구현?
|
|
24
|
+
|
|
25
|
+
### Memory
|
|
26
|
+
- [ ] 대용량 데이터 메모리 로드?
|
|
27
|
+
- [ ] 이벤트 리스너 정리?
|
|
28
|
+
- [ ] 순환 참조?
|
|
29
|
+
- [ ] 스트림 대신 버퍼 사용?
|
|
30
|
+
|
|
31
|
+
### Computation
|
|
32
|
+
- [ ] 루프 내 불필요 연산?
|
|
33
|
+
- [ ] 정규식 사전 컴파일?
|
|
34
|
+
- [ ] 메모이제이션 기회?
|
|
35
|
+
- [ ] 비동기 처리 가능?
|
|
36
|
+
|
|
37
|
+
### Caching
|
|
38
|
+
- [ ] 반복 API 호출?
|
|
39
|
+
- [ ] 정적 데이터 캐싱?
|
|
40
|
+
- [ ] 캐시 무효화 전략?
|
|
41
|
+
- [ ] CDN 활용?
|
|
42
|
+
|
|
43
|
+
### Frontend
|
|
44
|
+
- [ ] 번들 사이즈 증가?
|
|
45
|
+
- [ ] 이미지 최적화?
|
|
46
|
+
- [ ] Lazy loading?
|
|
47
|
+
- [ ] 불필요한 리렌더링?
|
|
48
|
+
|
|
49
|
+
### Network
|
|
50
|
+
- [ ] 불필요한 API 호출?
|
|
51
|
+
- [ ] 요청 병합 가능?
|
|
52
|
+
- [ ] 압축 사용?
|
|
53
|
+
- [ ] Connection pooling?
|
|
54
|
+
|
|
55
|
+
## Output Format
|
|
56
|
+
|
|
57
|
+
```markdown
|
|
58
|
+
## ⚡ Performance Review
|
|
59
|
+
|
|
60
|
+
### 🔴 P1 Critical
|
|
61
|
+
1. **N+1 Query Detected**
|
|
62
|
+
- 📍 Location: src/services/orders.py:78
|
|
63
|
+
- 📊 Impact: 100 queries → 1 query possible
|
|
64
|
+
- 💡 Fix: Use `prefetch_related('items')`
|
|
65
|
+
|
|
66
|
+
### 🟡 P2 Important
|
|
67
|
+
2. **Missing Database Index**
|
|
68
|
+
- 📍 Location: migrations/0042_add_status.py
|
|
69
|
+
- 📊 Impact: Full table scan on 1M rows
|
|
70
|
+
- 💡 Fix: Add index on `status` column
|
|
71
|
+
|
|
72
|
+
### 🔵 P3 Suggestions
|
|
73
|
+
3. **Consider memoization**
|
|
74
|
+
- 📍 Location: src/utils/calculate.py:23
|
|
75
|
+
- 📊 Impact: ~50ms saved per request
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Usage
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
Task(
|
|
82
|
+
model: "haiku",
|
|
83
|
+
subagent_type: "Explore",
|
|
84
|
+
prompt: "Performance review for [files]. Check N+1, memory leaks, caching."
|
|
85
|
+
)
|
|
86
|
+
```
|
|
@@ -1,152 +1,152 @@
|
|
|
1
|
-
# Python Reviewer Agent
|
|
2
|
-
|
|
3
|
-
Python 코드 전문 리뷰 에이전트
|
|
4
|
-
|
|
5
|
-
## Role
|
|
6
|
-
|
|
7
|
-
- PEP 8 스타일 가이드 준수
|
|
8
|
-
- 타입 힌트 검증
|
|
9
|
-
- Pythonic 패턴 제안
|
|
10
|
-
- async/await 패턴 검토
|
|
11
|
-
|
|
12
|
-
## Model
|
|
13
|
-
|
|
14
|
-
**Haiku** (inherit) - 빠른 병렬 실행
|
|
15
|
-
|
|
16
|
-
## Checklist
|
|
17
|
-
|
|
18
|
-
### PEP 8 Style
|
|
19
|
-
- [ ] 네이밍: snake_case (변수/함수), PascalCase (클래스)?
|
|
20
|
-
- [ ] 라인 길이 ≤ 88 (black 기준)?
|
|
21
|
-
- [ ] import 순서: stdlib → third-party → local?
|
|
22
|
-
- [ ] 공백 규칙 준수?
|
|
23
|
-
|
|
24
|
-
### Type Hints (PEP 484)
|
|
25
|
-
- [ ] 함수 파라미터 타입 힌트?
|
|
26
|
-
- [ ] 반환 타입 명시?
|
|
27
|
-
- [ ] Optional 대신 `T | None` (Python 3.10+)?
|
|
28
|
-
- [ ] TypedDict, Protocol 적절히 사용?
|
|
29
|
-
|
|
30
|
-
### Pythonic Patterns
|
|
31
|
-
- [ ] List comprehension 적절히 사용?
|
|
32
|
-
- [ ] Context manager (with) 사용?
|
|
33
|
-
- [ ] enumerate 대신 range(len())?
|
|
34
|
-
- [ ] f-string 사용?
|
|
35
|
-
- [ ] walrus operator (:=) 적절히 사용?
|
|
36
|
-
|
|
37
|
-
### Error Handling
|
|
38
|
-
- [ ] 구체적 예외 타입 사용?
|
|
39
|
-
- [ ] bare except 금지?
|
|
40
|
-
- [ ] 예외 체이닝 (from e)?
|
|
41
|
-
- [ ] 적절한 로깅?
|
|
42
|
-
|
|
43
|
-
### Async/Await
|
|
44
|
-
- [ ] sync 함수에서 async 호출?
|
|
45
|
-
- [ ] asyncio.gather 활용?
|
|
46
|
-
- [ ] 적절한 timeout 설정?
|
|
47
|
-
- [ ] 리소스 정리 (async with)?
|
|
48
|
-
|
|
49
|
-
### Security
|
|
50
|
-
- [ ] eval/exec 사용 금지?
|
|
51
|
-
- [ ] pickle untrusted data?
|
|
52
|
-
- [ ] SQL 파라미터화?
|
|
53
|
-
- [ ] 민감 정보 로깅?
|
|
54
|
-
|
|
55
|
-
### Performance
|
|
56
|
-
- [ ] 제너레이터 활용 (대용량)?
|
|
57
|
-
- [ ] `__slots__` 사용 고려?
|
|
58
|
-
- [ ] lru_cache 데코레이터?
|
|
59
|
-
- [ ] 불필요한 리스트 변환?
|
|
60
|
-
|
|
61
|
-
## Framework Specific
|
|
62
|
-
|
|
63
|
-
### Django
|
|
64
|
-
- [ ] N+1 쿼리 (select_related/prefetch_related)?
|
|
65
|
-
- [ ] QuerySet 지연 평가 이해?
|
|
66
|
-
- [ ] 트랜잭션 관리?
|
|
67
|
-
- [ ] migration 가역성?
|
|
68
|
-
|
|
69
|
-
### FastAPI
|
|
70
|
-
- [ ] Pydantic 모델 적절?
|
|
71
|
-
- [ ] 의존성 주입 활용?
|
|
72
|
-
- [ ] async 라우트?
|
|
73
|
-
- [ ] 응답 모델 정의?
|
|
74
|
-
|
|
75
|
-
### SQLAlchemy
|
|
76
|
-
- [ ] Session 관리?
|
|
77
|
-
- [ ] N+1 (joinedload/selectinload)?
|
|
78
|
-
- [ ] 트랜잭션 범위?
|
|
79
|
-
- [ ] 연결 풀 설정?
|
|
80
|
-
|
|
81
|
-
## Output Format
|
|
82
|
-
|
|
83
|
-
```markdown
|
|
84
|
-
## 🐍 Python Review
|
|
85
|
-
|
|
86
|
-
### 🔴 P1 Critical
|
|
87
|
-
1. **Missing Type Hints in Public API**
|
|
88
|
-
- 📍 Location: src/services/user.py:get_user()
|
|
89
|
-
- 💡 Fix: Add `def get_user(user_id: int) -> User | None:`
|
|
90
|
-
|
|
91
|
-
### 🟡 P2 Important
|
|
92
|
-
2. **Bare Except Clause**
|
|
93
|
-
- 📍 Location: src/utils/parser.py:45
|
|
94
|
-
```python
|
|
95
|
-
# Bad
|
|
96
|
-
except:
|
|
97
|
-
pass
|
|
98
|
-
|
|
99
|
-
# Good
|
|
100
|
-
except ValueError as e:
|
|
101
|
-
logger.error(f"Parse error: {e}")
|
|
102
|
-
raise
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
### 🔵 P3 Suggestions
|
|
106
|
-
3. **Use List Comprehension**
|
|
107
|
-
- 📍 Location: src/api/orders.py:23
|
|
108
|
-
```python
|
|
109
|
-
# Before
|
|
110
|
-
result = []
|
|
111
|
-
for item in items:
|
|
112
|
-
if item.active:
|
|
113
|
-
result.append(item.name)
|
|
114
|
-
|
|
115
|
-
# After
|
|
116
|
-
result = [item.name for item in items if item.active]
|
|
117
|
-
```
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
## Usage
|
|
121
|
-
|
|
122
|
-
```text
|
|
123
|
-
Task(
|
|
124
|
-
model: "haiku",
|
|
125
|
-
subagent_type: "Explore",
|
|
126
|
-
prompt: "Python review for [files]. Check PEP8, type hints, async patterns."
|
|
127
|
-
)
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
## External LLM Enhancement (Optional)
|
|
131
|
-
|
|
132
|
-
**GPT Codex 활성화 시** Python 전문 2nd opinion:
|
|
133
|
-
|
|
134
|
-
```text
|
|
135
|
-
Primary: Task(Haiku) Python 리뷰
|
|
136
|
-
↓
|
|
137
|
-
[GPT enabled?]
|
|
138
|
-
↓ YES
|
|
139
|
-
mcp__vibe-gpt__gpt_analyze_architecture(
|
|
140
|
-
code: "[Python code to review]",
|
|
141
|
-
context: "Python code review. Check PEP8, type hints, async patterns, Django/FastAPI best practices."
|
|
142
|
-
)
|
|
143
|
-
↓
|
|
144
|
-
결과 비교 → 공통 이슈는 신뢰도 상승, 차이점은 추가 검토
|
|
145
|
-
```
|
|
146
|
-
|
|
147
|
-
**활용 시점:**
|
|
148
|
-
- 복잡한 async/await 패턴 검토 시
|
|
149
|
-
- Django/FastAPI 아키텍처 리뷰 시
|
|
150
|
-
- 타입 힌트 누락 심각할 때
|
|
151
|
-
|
|
152
|
-
**GPT 미설정 시:** Primary만으로 정상 작동
|
|
1
|
+
# Python Reviewer Agent
|
|
2
|
+
|
|
3
|
+
Python 코드 전문 리뷰 에이전트
|
|
4
|
+
|
|
5
|
+
## Role
|
|
6
|
+
|
|
7
|
+
- PEP 8 스타일 가이드 준수
|
|
8
|
+
- 타입 힌트 검증
|
|
9
|
+
- Pythonic 패턴 제안
|
|
10
|
+
- async/await 패턴 검토
|
|
11
|
+
|
|
12
|
+
## Model
|
|
13
|
+
|
|
14
|
+
**Haiku** (inherit) - 빠른 병렬 실행
|
|
15
|
+
|
|
16
|
+
## Checklist
|
|
17
|
+
|
|
18
|
+
### PEP 8 Style
|
|
19
|
+
- [ ] 네이밍: snake_case (변수/함수), PascalCase (클래스)?
|
|
20
|
+
- [ ] 라인 길이 ≤ 88 (black 기준)?
|
|
21
|
+
- [ ] import 순서: stdlib → third-party → local?
|
|
22
|
+
- [ ] 공백 규칙 준수?
|
|
23
|
+
|
|
24
|
+
### Type Hints (PEP 484)
|
|
25
|
+
- [ ] 함수 파라미터 타입 힌트?
|
|
26
|
+
- [ ] 반환 타입 명시?
|
|
27
|
+
- [ ] Optional 대신 `T | None` (Python 3.10+)?
|
|
28
|
+
- [ ] TypedDict, Protocol 적절히 사용?
|
|
29
|
+
|
|
30
|
+
### Pythonic Patterns
|
|
31
|
+
- [ ] List comprehension 적절히 사용?
|
|
32
|
+
- [ ] Context manager (with) 사용?
|
|
33
|
+
- [ ] enumerate 대신 range(len())?
|
|
34
|
+
- [ ] f-string 사용?
|
|
35
|
+
- [ ] walrus operator (:=) 적절히 사용?
|
|
36
|
+
|
|
37
|
+
### Error Handling
|
|
38
|
+
- [ ] 구체적 예외 타입 사용?
|
|
39
|
+
- [ ] bare except 금지?
|
|
40
|
+
- [ ] 예외 체이닝 (from e)?
|
|
41
|
+
- [ ] 적절한 로깅?
|
|
42
|
+
|
|
43
|
+
### Async/Await
|
|
44
|
+
- [ ] sync 함수에서 async 호출?
|
|
45
|
+
- [ ] asyncio.gather 활용?
|
|
46
|
+
- [ ] 적절한 timeout 설정?
|
|
47
|
+
- [ ] 리소스 정리 (async with)?
|
|
48
|
+
|
|
49
|
+
### Security
|
|
50
|
+
- [ ] eval/exec 사용 금지?
|
|
51
|
+
- [ ] pickle untrusted data?
|
|
52
|
+
- [ ] SQL 파라미터화?
|
|
53
|
+
- [ ] 민감 정보 로깅?
|
|
54
|
+
|
|
55
|
+
### Performance
|
|
56
|
+
- [ ] 제너레이터 활용 (대용량)?
|
|
57
|
+
- [ ] `__slots__` 사용 고려?
|
|
58
|
+
- [ ] lru_cache 데코레이터?
|
|
59
|
+
- [ ] 불필요한 리스트 변환?
|
|
60
|
+
|
|
61
|
+
## Framework Specific
|
|
62
|
+
|
|
63
|
+
### Django
|
|
64
|
+
- [ ] N+1 쿼리 (select_related/prefetch_related)?
|
|
65
|
+
- [ ] QuerySet 지연 평가 이해?
|
|
66
|
+
- [ ] 트랜잭션 관리?
|
|
67
|
+
- [ ] migration 가역성?
|
|
68
|
+
|
|
69
|
+
### FastAPI
|
|
70
|
+
- [ ] Pydantic 모델 적절?
|
|
71
|
+
- [ ] 의존성 주입 활용?
|
|
72
|
+
- [ ] async 라우트?
|
|
73
|
+
- [ ] 응답 모델 정의?
|
|
74
|
+
|
|
75
|
+
### SQLAlchemy
|
|
76
|
+
- [ ] Session 관리?
|
|
77
|
+
- [ ] N+1 (joinedload/selectinload)?
|
|
78
|
+
- [ ] 트랜잭션 범위?
|
|
79
|
+
- [ ] 연결 풀 설정?
|
|
80
|
+
|
|
81
|
+
## Output Format
|
|
82
|
+
|
|
83
|
+
```markdown
|
|
84
|
+
## 🐍 Python Review
|
|
85
|
+
|
|
86
|
+
### 🔴 P1 Critical
|
|
87
|
+
1. **Missing Type Hints in Public API**
|
|
88
|
+
- 📍 Location: src/services/user.py:get_user()
|
|
89
|
+
- 💡 Fix: Add `def get_user(user_id: int) -> User | None:`
|
|
90
|
+
|
|
91
|
+
### 🟡 P2 Important
|
|
92
|
+
2. **Bare Except Clause**
|
|
93
|
+
- 📍 Location: src/utils/parser.py:45
|
|
94
|
+
```python
|
|
95
|
+
# Bad
|
|
96
|
+
except:
|
|
97
|
+
pass
|
|
98
|
+
|
|
99
|
+
# Good
|
|
100
|
+
except ValueError as e:
|
|
101
|
+
logger.error(f"Parse error: {e}")
|
|
102
|
+
raise
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### 🔵 P3 Suggestions
|
|
106
|
+
3. **Use List Comprehension**
|
|
107
|
+
- 📍 Location: src/api/orders.py:23
|
|
108
|
+
```python
|
|
109
|
+
# Before
|
|
110
|
+
result = []
|
|
111
|
+
for item in items:
|
|
112
|
+
if item.active:
|
|
113
|
+
result.append(item.name)
|
|
114
|
+
|
|
115
|
+
# After
|
|
116
|
+
result = [item.name for item in items if item.active]
|
|
117
|
+
```
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## Usage
|
|
121
|
+
|
|
122
|
+
```text
|
|
123
|
+
Task(
|
|
124
|
+
model: "haiku",
|
|
125
|
+
subagent_type: "Explore",
|
|
126
|
+
prompt: "Python review for [files]. Check PEP8, type hints, async patterns."
|
|
127
|
+
)
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## External LLM Enhancement (Optional)
|
|
131
|
+
|
|
132
|
+
**GPT Codex 활성화 시** Python 전문 2nd opinion:
|
|
133
|
+
|
|
134
|
+
```text
|
|
135
|
+
Primary: Task(Haiku) Python 리뷰
|
|
136
|
+
↓
|
|
137
|
+
[GPT enabled?]
|
|
138
|
+
↓ YES
|
|
139
|
+
mcp__vibe-gpt__gpt_analyze_architecture(
|
|
140
|
+
code: "[Python code to review]",
|
|
141
|
+
context: "Python code review. Check PEP8, type hints, async patterns, Django/FastAPI best practices."
|
|
142
|
+
)
|
|
143
|
+
↓
|
|
144
|
+
결과 비교 → 공통 이슈는 신뢰도 상승, 차이점은 추가 검토
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
**활용 시점:**
|
|
148
|
+
- 복잡한 async/await 패턴 검토 시
|
|
149
|
+
- Django/FastAPI 아키텍처 리뷰 시
|
|
150
|
+
- 타입 힌트 누락 심각할 때
|
|
151
|
+
|
|
152
|
+
**GPT 미설정 시:** Primary만으로 정상 작동
|