@su-record/vibe 2.0.10 → 2.0.11
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/agents/research/best-practices-agent.md +139 -0
- package/.claude/agents/research/codebase-patterns-agent.md +147 -0
- package/.claude/agents/research/framework-docs-agent.md +181 -0
- package/.claude/agents/research/security-advisory-agent.md +167 -0
- package/.claude/agents/review/architecture-reviewer.md +107 -0
- package/.claude/agents/review/complexity-reviewer.md +116 -0
- package/.claude/agents/review/data-integrity-reviewer.md +88 -0
- package/.claude/agents/review/git-history-reviewer.md +103 -0
- package/.claude/agents/review/performance-reviewer.md +86 -0
- package/.claude/agents/review/python-reviewer.md +152 -0
- package/.claude/agents/review/rails-reviewer.md +139 -0
- package/.claude/agents/review/react-reviewer.md +144 -0
- package/.claude/agents/review/security-reviewer.md +80 -0
- package/.claude/agents/review/simplicity-reviewer.md +140 -0
- package/.claude/agents/review/test-coverage-reviewer.md +116 -0
- package/.claude/agents/review/typescript-reviewer.md +127 -0
- package/.claude/commands/vibe.compound.md +261 -0
- package/.claude/commands/vibe.e2e.md +266 -0
- package/.claude/commands/vibe.review.md +324 -0
- package/.claude/commands/vibe.spec.md +48 -4
- package/.claude/settings.json +152 -152
- package/.claude/skills/git-worktree.md +178 -0
- package/.claude/skills/priority-todos.md +236 -0
- package/CLAUDE.md +150 -4
- package/README.md +128 -10
- package/package.json +1 -1
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
# Best Practices Research Agent
|
|
2
|
+
|
|
3
|
+
업계 베스트 프랙티스 리서치 에이전트
|
|
4
|
+
|
|
5
|
+
## Role
|
|
6
|
+
|
|
7
|
+
- 업계 표준 조사
|
|
8
|
+
- 베스트 프랙티스 수집
|
|
9
|
+
- 권장 패턴 제안
|
|
10
|
+
- 안티 패턴 경고
|
|
11
|
+
|
|
12
|
+
## Model
|
|
13
|
+
|
|
14
|
+
**Haiku** (inherit) - 빠른 리서치
|
|
15
|
+
|
|
16
|
+
## Usage
|
|
17
|
+
|
|
18
|
+
`/vibe.spec` 실행 시 자동으로 병렬 호출됨
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
Task(
|
|
22
|
+
model: "haiku",
|
|
23
|
+
subagent_type: "Explore",
|
|
24
|
+
prompt: "Research best practices for [feature]. Include patterns, anti-patterns."
|
|
25
|
+
)
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Research Areas
|
|
29
|
+
|
|
30
|
+
### By Domain
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
Authentication:
|
|
34
|
+
├── OAuth 2.0 / OIDC
|
|
35
|
+
├── JWT best practices
|
|
36
|
+
├── Session management
|
|
37
|
+
└── MFA implementation
|
|
38
|
+
|
|
39
|
+
Payment:
|
|
40
|
+
├── PCI-DSS compliance
|
|
41
|
+
├── Idempotency keys
|
|
42
|
+
├── Retry strategies
|
|
43
|
+
└── Webhook verification
|
|
44
|
+
|
|
45
|
+
API Design:
|
|
46
|
+
├── REST conventions
|
|
47
|
+
├── GraphQL patterns
|
|
48
|
+
├── Versioning strategies
|
|
49
|
+
└── Rate limiting
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### By Framework
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
React:
|
|
56
|
+
├── Component patterns (Compound, Render Props)
|
|
57
|
+
├── State management (Context, Zustand, Jotai)
|
|
58
|
+
├── Server Components
|
|
59
|
+
└── Performance patterns
|
|
60
|
+
|
|
61
|
+
Django/FastAPI:
|
|
62
|
+
├── Project structure
|
|
63
|
+
├── Async patterns
|
|
64
|
+
├── Testing strategies
|
|
65
|
+
└── Security defaults
|
|
66
|
+
|
|
67
|
+
Rails:
|
|
68
|
+
├── Rails Way conventions
|
|
69
|
+
├── Service objects
|
|
70
|
+
├── Background jobs
|
|
71
|
+
└── Caching strategies
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Output Format
|
|
75
|
+
|
|
76
|
+
```markdown
|
|
77
|
+
## 📚 Best Practices Research
|
|
78
|
+
|
|
79
|
+
### Feature: [feature-name]
|
|
80
|
+
|
|
81
|
+
### Recommended Patterns
|
|
82
|
+
|
|
83
|
+
1. **Pattern: Repository Pattern**
|
|
84
|
+
- Use case: Data access abstraction
|
|
85
|
+
- Benefits: Testability, flexibility
|
|
86
|
+
- Example:
|
|
87
|
+
```python
|
|
88
|
+
class UserRepository:
|
|
89
|
+
def find_by_id(self, id: int) -> User:
|
|
90
|
+
...
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
2. **Pattern: Service Layer**
|
|
94
|
+
- Use case: Business logic encapsulation
|
|
95
|
+
- Benefits: Thin controllers, reusability
|
|
96
|
+
|
|
97
|
+
### Anti-Patterns to Avoid
|
|
98
|
+
|
|
99
|
+
1. **Anti-pattern: God Object**
|
|
100
|
+
- Problem: Single class doing everything
|
|
101
|
+
- Solution: Split by responsibility
|
|
102
|
+
|
|
103
|
+
2. **Anti-pattern: Premature Optimization**
|
|
104
|
+
- Problem: Optimizing before measuring
|
|
105
|
+
- Solution: Measure first, optimize bottlenecks
|
|
106
|
+
|
|
107
|
+
### Industry Standards
|
|
108
|
+
|
|
109
|
+
- OWASP Security Guidelines
|
|
110
|
+
- 12-Factor App Methodology
|
|
111
|
+
- REST API Design Guidelines
|
|
112
|
+
|
|
113
|
+
### Recommended Libraries
|
|
114
|
+
|
|
115
|
+
| Purpose | Recommendation | Reason |
|
|
116
|
+
|---------|---------------|--------|
|
|
117
|
+
| Validation | Pydantic/Zod | Type-safe, fast |
|
|
118
|
+
| Auth | NextAuth/Devise | Battle-tested |
|
|
119
|
+
| Testing | Pytest/Jest | Community standard |
|
|
120
|
+
|
|
121
|
+
### References
|
|
122
|
+
|
|
123
|
+
- [Article/Doc 1](url)
|
|
124
|
+
- [Article/Doc 2](url)
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## Integration with /vibe.spec
|
|
128
|
+
|
|
129
|
+
```
|
|
130
|
+
/vibe.spec "로그인 기능"
|
|
131
|
+
|
|
132
|
+
→ best-practices-agent 실행:
|
|
133
|
+
"Research authentication best practices: OAuth, JWT, session"
|
|
134
|
+
|
|
135
|
+
→ 결과를 SPEC에 반영:
|
|
136
|
+
- 권장 라이브러리
|
|
137
|
+
- 보안 고려사항
|
|
138
|
+
- 구현 패턴
|
|
139
|
+
```
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
# Codebase Patterns Research Agent
|
|
2
|
+
|
|
3
|
+
기존 코드베이스 패턴 분석 에이전트
|
|
4
|
+
|
|
5
|
+
## Role
|
|
6
|
+
|
|
7
|
+
- 기존 구현 패턴 분석
|
|
8
|
+
- 코딩 컨벤션 추출
|
|
9
|
+
- 유사 기능 참조
|
|
10
|
+
- 일관성 확보
|
|
11
|
+
|
|
12
|
+
## Model
|
|
13
|
+
|
|
14
|
+
**Haiku** (inherit) - 빠른 탐색
|
|
15
|
+
|
|
16
|
+
## Usage
|
|
17
|
+
|
|
18
|
+
`/vibe.spec` 실행 시 자동으로 병렬 호출됨
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
Task(
|
|
22
|
+
model: "haiku",
|
|
23
|
+
subagent_type: "Explore",
|
|
24
|
+
prompt: "Analyze existing patterns in codebase for [feature]. Find similar implementations."
|
|
25
|
+
)
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Analysis Areas
|
|
29
|
+
|
|
30
|
+
### File Structure
|
|
31
|
+
```
|
|
32
|
+
프로젝트 구조 분석:
|
|
33
|
+
├── 디렉토리 구성
|
|
34
|
+
├── 네이밍 규칙
|
|
35
|
+
├── 모듈 분리 방식
|
|
36
|
+
└── 테스트 파일 위치
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Code Patterns
|
|
40
|
+
```
|
|
41
|
+
패턴 추출:
|
|
42
|
+
├── 에러 처리 방식
|
|
43
|
+
├── 로깅 패턴
|
|
44
|
+
├── 데이터 검증 방식
|
|
45
|
+
├── API 응답 형식
|
|
46
|
+
└── 의존성 주입 방식
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Conventions
|
|
50
|
+
```
|
|
51
|
+
컨벤션 분석:
|
|
52
|
+
├── 변수/함수 네이밍
|
|
53
|
+
├── 파일 네이밍
|
|
54
|
+
├── import 순서
|
|
55
|
+
├── 주석 스타일
|
|
56
|
+
└── 타입 정의 방식
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Output Format
|
|
60
|
+
|
|
61
|
+
```markdown
|
|
62
|
+
## 🔍 Codebase Patterns Analysis
|
|
63
|
+
|
|
64
|
+
### Project Structure
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
src/
|
|
68
|
+
├── api/ # REST endpoints
|
|
69
|
+
├── services/ # Business logic
|
|
70
|
+
├── models/ # Data models
|
|
71
|
+
├── utils/ # Helpers
|
|
72
|
+
└── tests/ # Mirror structure
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Existing Patterns
|
|
76
|
+
|
|
77
|
+
1. **Error Handling Pattern**
|
|
78
|
+
```python
|
|
79
|
+
# Found in: src/services/*.py
|
|
80
|
+
try:
|
|
81
|
+
result = operation()
|
|
82
|
+
except SpecificError as e:
|
|
83
|
+
logger.error(f"Operation failed: {e}")
|
|
84
|
+
raise ServiceError(str(e)) from e
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
2. **API Response Pattern**
|
|
88
|
+
```python
|
|
89
|
+
# Found in: src/api/*.py
|
|
90
|
+
return {
|
|
91
|
+
"success": True,
|
|
92
|
+
"data": result,
|
|
93
|
+
"meta": {"count": len(result)}
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
3. **Service Layer Pattern**
|
|
98
|
+
```python
|
|
99
|
+
# Found in: src/services/user_service.py
|
|
100
|
+
class UserService:
|
|
101
|
+
def __init__(self, db: Database):
|
|
102
|
+
self.db = db
|
|
103
|
+
|
|
104
|
+
def get_user(self, user_id: int) -> User:
|
|
105
|
+
...
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### Naming Conventions
|
|
109
|
+
|
|
110
|
+
| Type | Convention | Example |
|
|
111
|
+
|------|------------|---------|
|
|
112
|
+
| Files | snake_case | user_service.py |
|
|
113
|
+
| Classes | PascalCase | UserService |
|
|
114
|
+
| Functions | snake_case | get_user_by_id |
|
|
115
|
+
| Constants | UPPER_CASE | MAX_RETRIES |
|
|
116
|
+
|
|
117
|
+
### Similar Implementations
|
|
118
|
+
|
|
119
|
+
For feature "결제 기능":
|
|
120
|
+
|
|
121
|
+
| Similar Feature | Location | Relevance |
|
|
122
|
+
|-----------------|----------|-----------|
|
|
123
|
+
| 주문 처리 | src/services/order.py | 90% |
|
|
124
|
+
| 구독 관리 | src/services/subscription.py | 75% |
|
|
125
|
+
|
|
126
|
+
### Recommendations
|
|
127
|
+
|
|
128
|
+
Based on existing patterns:
|
|
129
|
+
1. Create `src/services/payment_service.py`
|
|
130
|
+
2. Follow existing error handling pattern
|
|
131
|
+
3. Use existing validation decorators
|
|
132
|
+
4. Reuse `src/utils/api_response.py`
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## Integration with /vibe.spec
|
|
136
|
+
|
|
137
|
+
```
|
|
138
|
+
/vibe.spec "결제 기능"
|
|
139
|
+
|
|
140
|
+
→ codebase-patterns-agent 실행:
|
|
141
|
+
"Find similar payment/transaction code. Extract patterns."
|
|
142
|
+
|
|
143
|
+
→ 결과를 SPEC에 반영:
|
|
144
|
+
- 기존 패턴 따르기
|
|
145
|
+
- 유사 코드 참조
|
|
146
|
+
- 일관성 유지
|
|
147
|
+
```
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
# Framework Docs Research Agent
|
|
2
|
+
|
|
3
|
+
프레임워크 문서 리서치 에이전트
|
|
4
|
+
|
|
5
|
+
## Role
|
|
6
|
+
|
|
7
|
+
- 공식 문서 조회
|
|
8
|
+
- 최신 API 확인
|
|
9
|
+
- 마이그레이션 가이드 수집
|
|
10
|
+
- 버전 호환성 확인
|
|
11
|
+
|
|
12
|
+
## Model
|
|
13
|
+
|
|
14
|
+
**Haiku** (inherit) - 빠른 리서치
|
|
15
|
+
|
|
16
|
+
## Usage
|
|
17
|
+
|
|
18
|
+
`/vibe.spec` 실행 시 자동으로 병렬 호출됨
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
Task(
|
|
22
|
+
model: "haiku",
|
|
23
|
+
subagent_type: "Explore",
|
|
24
|
+
prompt: "Research [framework] docs for [feature]. Get latest API, examples."
|
|
25
|
+
)
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Integration with context7
|
|
29
|
+
|
|
30
|
+
context7 MCP 서버 활용:
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
resolve-library-id "react" → react
|
|
34
|
+
get-library-docs "react" "hooks" → Hook 문서
|
|
35
|
+
|
|
36
|
+
resolve-library-id "django" → django
|
|
37
|
+
get-library-docs "django" "authentication" → Auth 문서
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## External LLM Enhancement (Optional)
|
|
41
|
+
|
|
42
|
+
**Gemini 활성화 시** 웹 검색 기반 최신 문서 보강:
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
Primary: Task(Haiku) + context7
|
|
46
|
+
↓
|
|
47
|
+
[Gemini enabled?]
|
|
48
|
+
↓ YES
|
|
49
|
+
mcp__vibe-gemini__gemini_chat(
|
|
50
|
+
prompt: "[framework] [version] latest API changes and best practices",
|
|
51
|
+
systemPrompt: "You are a framework documentation expert. Provide latest API info."
|
|
52
|
+
)
|
|
53
|
+
↓
|
|
54
|
+
결과 병합 → SPEC Context 반영
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
**활용 시점:**
|
|
58
|
+
- context7에서 최신 버전 문서 부재 시
|
|
59
|
+
- Breaking changes 확인 필요 시
|
|
60
|
+
- 공식 문서 외 실전 패턴 검색 시
|
|
61
|
+
|
|
62
|
+
**Gemini 미설정 시:** Primary만으로 정상 작동
|
|
63
|
+
|
|
64
|
+
## Research Areas
|
|
65
|
+
|
|
66
|
+
### Frontend
|
|
67
|
+
```
|
|
68
|
+
React:
|
|
69
|
+
├── Hooks API
|
|
70
|
+
├── Server Components
|
|
71
|
+
├── Suspense
|
|
72
|
+
└── Concurrent Features
|
|
73
|
+
|
|
74
|
+
Next.js:
|
|
75
|
+
├── App Router
|
|
76
|
+
├── Server Actions
|
|
77
|
+
├── Middleware
|
|
78
|
+
└── Edge Runtime
|
|
79
|
+
|
|
80
|
+
Vue:
|
|
81
|
+
├── Composition API
|
|
82
|
+
├── Reactivity System
|
|
83
|
+
└── Pinia
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Backend
|
|
87
|
+
```
|
|
88
|
+
Django:
|
|
89
|
+
├── Models & ORM
|
|
90
|
+
├── Class-based Views
|
|
91
|
+
├── REST Framework
|
|
92
|
+
└── Async Support
|
|
93
|
+
|
|
94
|
+
FastAPI:
|
|
95
|
+
├── Path Operations
|
|
96
|
+
├── Dependency Injection
|
|
97
|
+
├── Pydantic Models
|
|
98
|
+
└── Background Tasks
|
|
99
|
+
|
|
100
|
+
Rails:
|
|
101
|
+
├── ActiveRecord
|
|
102
|
+
├── Action Controllers
|
|
103
|
+
├── Hotwire/Turbo
|
|
104
|
+
└── Active Job
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Database
|
|
108
|
+
```
|
|
109
|
+
PostgreSQL:
|
|
110
|
+
├── Indexes
|
|
111
|
+
├── Partitioning
|
|
112
|
+
├── JSON operations
|
|
113
|
+
└── Full-text search
|
|
114
|
+
|
|
115
|
+
Redis:
|
|
116
|
+
├── Data structures
|
|
117
|
+
├── Pub/Sub
|
|
118
|
+
├── Lua scripting
|
|
119
|
+
└── Cluster mode
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## Output Format
|
|
123
|
+
|
|
124
|
+
```markdown
|
|
125
|
+
## 📖 Framework Documentation Research
|
|
126
|
+
|
|
127
|
+
### Framework: [framework-name]
|
|
128
|
+
### Version: [version]
|
|
129
|
+
|
|
130
|
+
### Relevant APIs
|
|
131
|
+
|
|
132
|
+
1. **API: useOptimistic (React 19)**
|
|
133
|
+
```tsx
|
|
134
|
+
const [optimisticState, addOptimistic] = useOptimistic(
|
|
135
|
+
state,
|
|
136
|
+
updateFn
|
|
137
|
+
);
|
|
138
|
+
```
|
|
139
|
+
- Use case: Optimistic UI updates
|
|
140
|
+
- Available in: React 19+
|
|
141
|
+
|
|
142
|
+
2. **API: Server Actions (Next.js 14)**
|
|
143
|
+
```tsx
|
|
144
|
+
async function submitForm(formData: FormData) {
|
|
145
|
+
'use server';
|
|
146
|
+
// Server-side logic
|
|
147
|
+
}
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
### Breaking Changes
|
|
151
|
+
|
|
152
|
+
| From | To | Change | Migration |
|
|
153
|
+
|------|-----|--------|-----------|
|
|
154
|
+
| v18 | v19 | useFormStatus location | Import from react-dom |
|
|
155
|
+
|
|
156
|
+
### Official Examples
|
|
157
|
+
|
|
158
|
+
- [Example 1](url): Authentication flow
|
|
159
|
+
- [Example 2](url): Data fetching
|
|
160
|
+
|
|
161
|
+
### Version Compatibility
|
|
162
|
+
|
|
163
|
+
| Package | Min Version | Recommended |
|
|
164
|
+
|---------|-------------|-------------|
|
|
165
|
+
| Node.js | 18.17 | 20.x |
|
|
166
|
+
| React | 18.2 | 19.x |
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
## Integration with /vibe.spec
|
|
170
|
+
|
|
171
|
+
```
|
|
172
|
+
/vibe.spec "소셜 로그인"
|
|
173
|
+
|
|
174
|
+
→ framework-docs-agent 실행:
|
|
175
|
+
"Research NextAuth.js v5 for social login. Get Google, GitHub providers."
|
|
176
|
+
|
|
177
|
+
→ 결과를 SPEC에 반영:
|
|
178
|
+
- 최신 API 사용법
|
|
179
|
+
- 필수 설정
|
|
180
|
+
- 코드 예시
|
|
181
|
+
```
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
# Security Advisory Research Agent
|
|
2
|
+
|
|
3
|
+
보안 권고 리서치 에이전트
|
|
4
|
+
|
|
5
|
+
## Role
|
|
6
|
+
|
|
7
|
+
- 보안 취약점 조회
|
|
8
|
+
- 패키지 보안 검사
|
|
9
|
+
- 보안 베스트 프랙티스
|
|
10
|
+
- 규정 준수 확인
|
|
11
|
+
|
|
12
|
+
## Model
|
|
13
|
+
|
|
14
|
+
**Haiku** (inherit) - 빠른 리서치
|
|
15
|
+
|
|
16
|
+
## Usage
|
|
17
|
+
|
|
18
|
+
`/vibe.spec` 실행 시 자동으로 병렬 호출됨
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
Task(
|
|
22
|
+
model: "haiku",
|
|
23
|
+
subagent_type: "Explore",
|
|
24
|
+
prompt: "Research security advisories for [feature]. Check OWASP, CVEs."
|
|
25
|
+
)
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Research Areas
|
|
29
|
+
|
|
30
|
+
### OWASP Top 10 (2021)
|
|
31
|
+
```
|
|
32
|
+
A01: Broken Access Control
|
|
33
|
+
A02: Cryptographic Failures
|
|
34
|
+
A03: Injection
|
|
35
|
+
A04: Insecure Design
|
|
36
|
+
A05: Security Misconfiguration
|
|
37
|
+
A06: Vulnerable Components
|
|
38
|
+
A07: Authentication Failures
|
|
39
|
+
A08: Software Integrity Failures
|
|
40
|
+
A09: Logging Failures
|
|
41
|
+
A10: SSRF
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Package Security
|
|
45
|
+
```
|
|
46
|
+
npm audit
|
|
47
|
+
pip-audit
|
|
48
|
+
bundler-audit
|
|
49
|
+
safety check (Python)
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Compliance
|
|
53
|
+
```
|
|
54
|
+
GDPR:
|
|
55
|
+
├── 데이터 최소화
|
|
56
|
+
├── 동의 관리
|
|
57
|
+
├── 삭제권
|
|
58
|
+
└── 데이터 이전
|
|
59
|
+
|
|
60
|
+
PCI-DSS:
|
|
61
|
+
├── 카드 데이터 암호화
|
|
62
|
+
├── 접근 제어
|
|
63
|
+
├── 로깅
|
|
64
|
+
└── 취약점 관리
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Output Format
|
|
68
|
+
|
|
69
|
+
```markdown
|
|
70
|
+
## 🔐 Security Advisory Research
|
|
71
|
+
|
|
72
|
+
### Feature: [feature-name]
|
|
73
|
+
|
|
74
|
+
### Relevant Security Considerations
|
|
75
|
+
|
|
76
|
+
1. **OWASP A03: Injection**
|
|
77
|
+
- Risk: SQL/NoSQL injection
|
|
78
|
+
- Mitigation:
|
|
79
|
+
- Use parameterized queries
|
|
80
|
+
- Validate all user input
|
|
81
|
+
- Use ORM safely
|
|
82
|
+
|
|
83
|
+
2. **OWASP A07: Authentication Failures**
|
|
84
|
+
- Risk: Credential stuffing, weak passwords
|
|
85
|
+
- Mitigation:
|
|
86
|
+
- Rate limiting
|
|
87
|
+
- Strong password policy
|
|
88
|
+
- MFA support
|
|
89
|
+
|
|
90
|
+
### Known Vulnerabilities
|
|
91
|
+
|
|
92
|
+
| Package | Version | CVE | Severity | Fix |
|
|
93
|
+
|---------|---------|-----|----------|-----|
|
|
94
|
+
| lodash | <4.17.21 | CVE-2021-23337 | High | Upgrade |
|
|
95
|
+
| axios | <0.21.1 | CVE-2020-28168 | Medium | Upgrade |
|
|
96
|
+
|
|
97
|
+
### Security Checklist
|
|
98
|
+
|
|
99
|
+
- [ ] Input validation on all user inputs
|
|
100
|
+
- [ ] Output encoding for XSS prevention
|
|
101
|
+
- [ ] Parameterized queries for SQL
|
|
102
|
+
- [ ] HTTPS enforced
|
|
103
|
+
- [ ] Sensitive data encrypted at rest
|
|
104
|
+
- [ ] Proper error handling (no stack traces)
|
|
105
|
+
- [ ] Rate limiting implemented
|
|
106
|
+
- [ ] CSRF protection enabled
|
|
107
|
+
- [ ] Security headers configured
|
|
108
|
+
|
|
109
|
+
### Compliance Requirements
|
|
110
|
+
|
|
111
|
+
For [payment feature]:
|
|
112
|
+
- [ ] PCI-DSS: Never store CVV
|
|
113
|
+
- [ ] PCI-DSS: Encrypt card numbers
|
|
114
|
+
- [ ] GDPR: User consent for data processing
|
|
115
|
+
|
|
116
|
+
### Recommended Security Libraries
|
|
117
|
+
|
|
118
|
+
| Purpose | Library | Notes |
|
|
119
|
+
|---------|---------|-------|
|
|
120
|
+
| Password Hashing | bcrypt/argon2 | Use high work factor |
|
|
121
|
+
| JWT | jose | Well-maintained |
|
|
122
|
+
| Input Validation | zod/pydantic | Type-safe |
|
|
123
|
+
| Rate Limiting | express-rate-limit | Configurable |
|
|
124
|
+
|
|
125
|
+
### References
|
|
126
|
+
|
|
127
|
+
- OWASP Cheat Sheets: [url]
|
|
128
|
+
- CWE Database: [url]
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## External LLM Enhancement (Optional)
|
|
132
|
+
|
|
133
|
+
**GPT 활성화 시** CVE/보안 취약점 DB 지식 보강:
|
|
134
|
+
|
|
135
|
+
```text
|
|
136
|
+
Primary: Task(Haiku) + OWASP/CVE 검색
|
|
137
|
+
↓
|
|
138
|
+
[GPT enabled?]
|
|
139
|
+
↓ YES
|
|
140
|
+
mcp__vibe-gpt__gpt_chat(
|
|
141
|
+
prompt: "Security vulnerabilities for [feature]. Check recent CVEs, OWASP risks.",
|
|
142
|
+
systemPrompt: "You are a security expert. Provide CVE details and mitigations."
|
|
143
|
+
)
|
|
144
|
+
↓
|
|
145
|
+
결과 병합 → SPEC Constraints 반영
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
**활용 시점:**
|
|
149
|
+
- 최신 CVE 정보 필요 시
|
|
150
|
+
- 특정 라이브러리 취약점 확인 시
|
|
151
|
+
- 규정 준수(PCI-DSS, GDPR) 상세 검토 시
|
|
152
|
+
|
|
153
|
+
**GPT 미설정 시:** Primary만으로 정상 작동
|
|
154
|
+
|
|
155
|
+
## Integration with /vibe.spec
|
|
156
|
+
|
|
157
|
+
```text
|
|
158
|
+
/vibe.spec "결제 기능"
|
|
159
|
+
|
|
160
|
+
→ security-advisory-agent 실행:
|
|
161
|
+
"Research security for payment processing. Check PCI-DSS, OWASP."
|
|
162
|
+
|
|
163
|
+
→ 결과를 SPEC에 반영:
|
|
164
|
+
- 보안 요구사항
|
|
165
|
+
- 필수 체크리스트
|
|
166
|
+
- 규정 준수 항목
|
|
167
|
+
```
|