@su-record/vibe 2.1.0 → 2.2.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.
- package/.claude/settings.json +1 -1
- package/.claude/settings.local.json +5 -1
- package/{.vibe → .claude/vibe}/rules/quality/bdd-contract-testing.md +1 -1
- package/{.vibe → .claude/vibe}/setup.sh +1 -1
- package/CLAUDE.md +16 -6
- package/README.md +33 -15
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +100 -56
- package/dist/cli/index.js.map +1 -1
- package/dist/tools/reasoning/applyReasoningFramework.js +1 -1
- package/package.json +1 -2
- package/templates/feature-template.md +1 -1
- package/.claude/agents/explorer.md +0 -48
- package/.claude/agents/implementer.md +0 -53
- package/.claude/agents/research/best-practices-agent.md +0 -139
- package/.claude/agents/research/codebase-patterns-agent.md +0 -147
- package/.claude/agents/research/framework-docs-agent.md +0 -181
- package/.claude/agents/research/security-advisory-agent.md +0 -167
- package/.claude/agents/review/architecture-reviewer.md +0 -107
- package/.claude/agents/review/complexity-reviewer.md +0 -116
- package/.claude/agents/review/data-integrity-reviewer.md +0 -88
- package/.claude/agents/review/git-history-reviewer.md +0 -103
- package/.claude/agents/review/performance-reviewer.md +0 -86
- package/.claude/agents/review/python-reviewer.md +0 -152
- package/.claude/agents/review/rails-reviewer.md +0 -139
- package/.claude/agents/review/react-reviewer.md +0 -144
- package/.claude/agents/review/security-reviewer.md +0 -80
- package/.claude/agents/review/simplicity-reviewer.md +0 -140
- package/.claude/agents/review/test-coverage-reviewer.md +0 -116
- package/.claude/agents/review/typescript-reviewer.md +0 -127
- package/.claude/agents/searcher.md +0 -54
- package/.claude/agents/simplifier.md +0 -119
- package/.claude/agents/tester.md +0 -49
- package/.claude/commands/vibe.analyze.md +0 -239
- package/.claude/commands/vibe.compound.md +0 -261
- package/.claude/commands/vibe.continue.md +0 -88
- package/.claude/commands/vibe.diagram.md +0 -178
- package/.claude/commands/vibe.e2e.md +0 -266
- package/.claude/commands/vibe.reason.md +0 -306
- package/.claude/commands/vibe.review.md +0 -324
- package/.claude/commands/vibe.run.md +0 -760
- package/.claude/commands/vibe.spec.md +0 -383
- package/.claude/commands/vibe.tool.md +0 -153
- package/.claude/commands/vibe.ui.md +0 -137
- package/.claude/commands/vibe.verify.md +0 -238
- package/.claude/skills/git-worktree.md +0 -178
- package/.claude/skills/priority-todos.md +0 -236
- /package/{.vibe → .claude/vibe}/config.json +0 -0
- /package/{.vibe → .claude/vibe}/constitution.md +0 -0
- /package/{.vibe → .claude/vibe}/rules/core/communication-guide.md +0 -0
- /package/{.vibe → .claude/vibe}/rules/core/development-philosophy.md +0 -0
- /package/{.vibe → .claude/vibe}/rules/core/quick-start.md +0 -0
- /package/{.vibe → .claude/vibe}/rules/quality/checklist.md +0 -0
- /package/{.vibe → .claude/vibe}/rules/quality/testing-strategy.md +0 -0
- /package/{.vibe → .claude/vibe}/rules/standards/anti-patterns.md +0 -0
- /package/{.vibe → .claude/vibe}/rules/standards/code-structure.md +0 -0
- /package/{.vibe → .claude/vibe}/rules/standards/complexity-metrics.md +0 -0
- /package/{.vibe → .claude/vibe}/rules/standards/naming-conventions.md +0 -0
- /package/{.vibe → .claude/vibe}/rules/tools/mcp-hi-ai-guide.md +0 -0
- /package/{.vibe → .claude/vibe}/rules/tools/mcp-workflow.md +0 -0
|
@@ -1,238 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Verify implementation against SPEC requirements
|
|
3
|
-
argument-hint: "feature name"
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# /vibe.verify
|
|
7
|
-
|
|
8
|
-
**품질 검증 자동화** - 비개발자도 품질을 신뢰할 수 있도록.
|
|
9
|
-
|
|
10
|
-
> 모든 시나리오 통과 = 품질 보장
|
|
11
|
-
|
|
12
|
-
## Usage
|
|
13
|
-
|
|
14
|
-
```
|
|
15
|
-
/vibe.verify "feature-name"
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
## 핵심 원칙
|
|
19
|
-
|
|
20
|
-
```
|
|
21
|
-
┌─────────────────────────────────────────────────────────────────┐
|
|
22
|
-
│ 비개발자가 알아야 할 것 │
|
|
23
|
-
│ │
|
|
24
|
-
│ ✅ 시나리오 4/4 통과 │
|
|
25
|
-
│ 📈 품질 점수: 94/100 │
|
|
26
|
-
│ │
|
|
27
|
-
│ 이것만 보면 됨. 나머지는 시스템이 알아서. │
|
|
28
|
-
└─────────────────────────────────────────────────────────────────┘
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
## Process
|
|
32
|
-
|
|
33
|
-
### 1. Load Feature File
|
|
34
|
-
|
|
35
|
-
```
|
|
36
|
-
📄 .vibe/features/{feature-name}.feature → 시나리오 목록
|
|
37
|
-
📄 .vibe/specs/{feature-name}.md → 검증 기준 (참조)
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
**Feature 파일이 없으면**:
|
|
41
|
-
```
|
|
42
|
-
❌ Feature 파일이 없습니다.
|
|
43
|
-
먼저 /vibe.spec "{feature-name}"을 실행하세요.
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
### 2. Scenario-by-Scenario Verification
|
|
47
|
-
|
|
48
|
-
각 시나리오별 자동 검증:
|
|
49
|
-
|
|
50
|
-
```
|
|
51
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
52
|
-
🔍 Scenario 1/4: 유효한 로그인 성공
|
|
53
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
54
|
-
|
|
55
|
-
Given: 사용자가 등록되어 있다
|
|
56
|
-
→ 검증: 사용자 생성 API 존재? ✅
|
|
57
|
-
→ 검증: 테스트 사용자 데이터? ✅
|
|
58
|
-
|
|
59
|
-
When: 유효한 이메일과 비밀번호로 로그인
|
|
60
|
-
→ 검증: POST /login 엔드포인트? ✅
|
|
61
|
-
→ 검증: 요청 처리 로직? ✅
|
|
62
|
-
|
|
63
|
-
Then: 로그인 성공 + JWT 토큰 반환
|
|
64
|
-
→ 검증: 성공 응답 코드 200? ✅
|
|
65
|
-
→ 검증: JWT 토큰 포함? ✅
|
|
66
|
-
|
|
67
|
-
✅ Scenario 1 통과!
|
|
68
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
### 3. Verification Methods (자동 선택)
|
|
72
|
-
|
|
73
|
-
| 방법 | 조건 | 검증 내용 |
|
|
74
|
-
|------|------|-----------|
|
|
75
|
-
| **테스트 실행** | 테스트 파일 존재 시 | `npm test`, `pytest` 등 실행 |
|
|
76
|
-
| **코드 분석** | 항상 | 구현 여부, 로직 확인 |
|
|
77
|
-
| **빌드 검증** | 빌드 스크립트 존재 시 | 컴파일 에러 확인 |
|
|
78
|
-
| **타입 검사** | TypeScript 등 | 타입 에러 확인 |
|
|
79
|
-
|
|
80
|
-
### 4. Quality Report (자동 생성)
|
|
81
|
-
|
|
82
|
-
```
|
|
83
|
-
┌─────────────────────────────────────────────────────────────────┐
|
|
84
|
-
│ 📊 VERIFICATION REPORT: login │
|
|
85
|
-
├─────────────────────────────────────────────────────────────────┤
|
|
86
|
-
│ │
|
|
87
|
-
│ ✅ 시나리오: 4/4 통과 (100%) │
|
|
88
|
-
│ │
|
|
89
|
-
│ ┌───────────────────────────────────────────────────────────┐ │
|
|
90
|
-
│ │ # │ Scenario │ Given │ When │ Then │ Status │ │
|
|
91
|
-
│ │───│───────────────────────│───────│──────│──────│────────│ │
|
|
92
|
-
│ │ 1 │ 유효한 로그인 성공 │ ✅ │ ✅ │ ✅ │ ✅ │ │
|
|
93
|
-
│ │ 2 │ 잘못된 비밀번호 에러 │ ✅ │ ✅ │ ✅ │ ✅ │ │
|
|
94
|
-
│ │ 3 │ 이메일 형식 검증 │ ✅ │ ✅ │ ✅ │ ✅ │ │
|
|
95
|
-
│ │ 4 │ 비밀번호 찾기 링크 │ ✅ │ ✅ │ ✅ │ ✅ │ │
|
|
96
|
-
│ └───────────────────────────────────────────────────────────┘ │
|
|
97
|
-
│ │
|
|
98
|
-
│ 📈 품질 점수: 94/100 │
|
|
99
|
-
│ │
|
|
100
|
-
│ ┌─────────────────────────────────────────────────────────┐ │
|
|
101
|
-
│ │ 항목 │ 결과 │ 상세 │ │
|
|
102
|
-
│ │───────────────────│───────│─────────────────────────────│ │
|
|
103
|
-
│ │ 빌드 │ ✅ │ 성공 │ │
|
|
104
|
-
│ │ 테스트 │ ✅ │ 12/12 통과 │ │
|
|
105
|
-
│ │ 타입 검사 │ ✅ │ 에러 0개 │ │
|
|
106
|
-
│ │ 복잡도 │ ✅ │ 모든 함수 ≤20줄 │ │
|
|
107
|
-
│ │ 코드 커버리지 │ ⚠️ │ 78% (목표: 80%) │ │
|
|
108
|
-
│ └─────────────────────────────────────────────────────────┘ │
|
|
109
|
-
│ │
|
|
110
|
-
│ 📋 권장 사항: │
|
|
111
|
-
│ - 코드 커버리지 2% 추가 필요 (auth.service.ts line 45-52) │
|
|
112
|
-
│ │
|
|
113
|
-
└─────────────────────────────────────────────────────────────────┘
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
### 실패 시 리포트
|
|
117
|
-
|
|
118
|
-
```
|
|
119
|
-
┌─────────────────────────────────────────────────────────────────┐
|
|
120
|
-
│ 📊 VERIFICATION REPORT: login │
|
|
121
|
-
├─────────────────────────────────────────────────────────────────┤
|
|
122
|
-
│ │
|
|
123
|
-
│ ❌ 시나리오: 3/4 통과 (75%) │
|
|
124
|
-
│ │
|
|
125
|
-
│ ┌───────────────────────────────────────────────────────────┐ │
|
|
126
|
-
│ │ # │ Scenario │ Given │ When │ Then │ Status │ │
|
|
127
|
-
│ │───│───────────────────────│───────│──────│──────│────────│ │
|
|
128
|
-
│ │ 1 │ 유효한 로그인 성공 │ ✅ │ ✅ │ ✅ │ ✅ │ │
|
|
129
|
-
│ │ 2 │ 잘못된 비밀번호 에러 │ ✅ │ ✅ │ ✅ │ ✅ │ │
|
|
130
|
-
│ │ 3 │ 이메일 형식 검증 │ ✅ │ ✅ │ ✅ │ ✅ │ │
|
|
131
|
-
│ │ 4 │ 비밀번호 찾기 링크 │ ✅ │ ❌ │ - │ ❌ │ │
|
|
132
|
-
│ └───────────────────────────────────────────────────────────┘ │
|
|
133
|
-
│ │
|
|
134
|
-
│ ❌ 실패 상세: │
|
|
135
|
-
│ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ │
|
|
136
|
-
│ Scenario 4: 비밀번호 찾기 링크 │
|
|
137
|
-
│ │
|
|
138
|
-
│ When: "비밀번호 찾기" 클릭 │
|
|
139
|
-
│ ❌ 문제: 링크가 구현되지 않음 │
|
|
140
|
-
│ 📍 위치: LoginForm.tsx line 42 │
|
|
141
|
-
│ 💡 수정: "Forgot password" 링크 추가 필요 │
|
|
142
|
-
│ │
|
|
143
|
-
│ 🔧 자동 수정 실행: /vibe.run "login" --fix │
|
|
144
|
-
│ │
|
|
145
|
-
└─────────────────────────────────────────────────────────────────┘
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
## Input
|
|
149
|
-
|
|
150
|
-
- `.vibe/features/{feature-name}.feature` - BDD scenarios
|
|
151
|
-
- `.vibe/specs/{feature-name}.md` - SPEC document (reference)
|
|
152
|
-
- Implemented source code
|
|
153
|
-
|
|
154
|
-
## Output
|
|
155
|
-
|
|
156
|
-
- Verification result report (terminal output)
|
|
157
|
-
- Passed/failed scenario list
|
|
158
|
-
- Items needing fixes
|
|
159
|
-
|
|
160
|
-
## Example
|
|
161
|
-
|
|
162
|
-
```
|
|
163
|
-
User: /vibe.verify "login"
|
|
164
|
-
|
|
165
|
-
Claude:
|
|
166
|
-
📄 Loading Feature: .vibe/features/login.feature
|
|
167
|
-
🔍 검증 시작...
|
|
168
|
-
|
|
169
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
170
|
-
🔍 Scenario 1/4: 유효한 로그인 성공
|
|
171
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
172
|
-
✅ Given: 사용자 등록 - OK
|
|
173
|
-
✅ When: 로그인 시도 - OK
|
|
174
|
-
✅ Then: JWT 토큰 반환 - OK
|
|
175
|
-
✅ 통과!
|
|
176
|
-
|
|
177
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
178
|
-
🔍 Scenario 2/4: 잘못된 비밀번호 에러
|
|
179
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
180
|
-
✅ Given: OK
|
|
181
|
-
✅ When: OK
|
|
182
|
-
✅ Then: OK
|
|
183
|
-
✅ 통과!
|
|
184
|
-
|
|
185
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
186
|
-
🔍 Scenario 3/4: 이메일 형식 검증
|
|
187
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
188
|
-
✅ Given: OK
|
|
189
|
-
✅ When: OK
|
|
190
|
-
✅ Then: OK
|
|
191
|
-
✅ 통과!
|
|
192
|
-
|
|
193
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
194
|
-
🔍 Scenario 4/4: 비밀번호 찾기 링크
|
|
195
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
196
|
-
✅ Given: OK
|
|
197
|
-
❌ When: "비밀번호 찾기" 링크 - 없음
|
|
198
|
-
- Then: (스킵)
|
|
199
|
-
❌ 실패!
|
|
200
|
-
|
|
201
|
-
┌─────────────────────────────────────────────────────────────────┐
|
|
202
|
-
│ 📊 VERIFICATION REPORT: login │
|
|
203
|
-
├─────────────────────────────────────────────────────────────────┤
|
|
204
|
-
│ │
|
|
205
|
-
│ ❌ 시나리오: 3/4 통과 (75%) │
|
|
206
|
-
│ │
|
|
207
|
-
│ | # | Scenario | Status | │
|
|
208
|
-
│ |---|───────────────────────|────────| │
|
|
209
|
-
│ | 1 | 유효한 로그인 성공 | ✅ | │
|
|
210
|
-
│ | 2 | 잘못된 비밀번호 에러 | ✅ | │
|
|
211
|
-
│ | 3 | 이메일 형식 검증 | ✅ | │
|
|
212
|
-
│ | 4 | 비밀번호 찾기 링크 | ❌ | │
|
|
213
|
-
│ │
|
|
214
|
-
│ 📈 품질 점수: 75/100 │
|
|
215
|
-
│ │
|
|
216
|
-
│ ❌ 수정 필요: │
|
|
217
|
-
│ - Scenario 4: LoginForm.tsx에 "Forgot password" 링크 추가 │
|
|
218
|
-
│ │
|
|
219
|
-
│ 🔧 자동 수정: /vibe.run "login" --fix │
|
|
220
|
-
│ │
|
|
221
|
-
└─────────────────────────────────────────────────────────────────┘
|
|
222
|
-
```
|
|
223
|
-
|
|
224
|
-
## Next Step
|
|
225
|
-
|
|
226
|
-
On verification pass:
|
|
227
|
-
```
|
|
228
|
-
Complete! Proceed to next feature.
|
|
229
|
-
```
|
|
230
|
-
|
|
231
|
-
On verification fail:
|
|
232
|
-
```
|
|
233
|
-
/vibe.run "feature-name" --fix # Fix failed scenarios
|
|
234
|
-
```
|
|
235
|
-
|
|
236
|
-
---
|
|
237
|
-
|
|
238
|
-
ARGUMENTS: $ARGUMENTS
|
|
@@ -1,178 +0,0 @@
|
|
|
1
|
-
# Git Worktree Skill
|
|
2
|
-
|
|
3
|
-
Git Worktree를 활용한 병렬 브랜치 작업 스킬
|
|
4
|
-
|
|
5
|
-
## Overview
|
|
6
|
-
|
|
7
|
-
메인 작업을 중단하지 않고 다른 브랜치에서 리뷰/테스트 수행
|
|
8
|
-
|
|
9
|
-
## Usage
|
|
10
|
-
|
|
11
|
-
```bash
|
|
12
|
-
# Worktree 생성
|
|
13
|
-
git worktree add ../review-pr123 pr/123
|
|
14
|
-
|
|
15
|
-
# 해당 디렉토리에서 작업
|
|
16
|
-
cd ../review-pr123
|
|
17
|
-
npm test
|
|
18
|
-
|
|
19
|
-
# 작업 완료 후 정리
|
|
20
|
-
git worktree remove ../review-pr123
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
## Commands
|
|
24
|
-
|
|
25
|
-
### Create Worktree
|
|
26
|
-
|
|
27
|
-
```bash
|
|
28
|
-
# PR 리뷰용 worktree
|
|
29
|
-
git worktree add ../review-{pr_number} origin/pr/{pr_number}
|
|
30
|
-
|
|
31
|
-
# 특정 브랜치 worktree
|
|
32
|
-
git worktree add ../feature-work feature/new-feature
|
|
33
|
-
|
|
34
|
-
# 새 브랜치로 worktree
|
|
35
|
-
git worktree add -b hotfix/urgent ../hotfix main
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
### List Worktrees
|
|
39
|
-
|
|
40
|
-
```bash
|
|
41
|
-
git worktree list
|
|
42
|
-
# /path/to/main abc1234 [main]
|
|
43
|
-
# /path/to/review-123 def5678 [pr/123]
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
### Remove Worktree
|
|
47
|
-
|
|
48
|
-
```bash
|
|
49
|
-
# 정상 제거
|
|
50
|
-
git worktree remove ../review-123
|
|
51
|
-
|
|
52
|
-
# 강제 제거 (uncommitted changes 무시)
|
|
53
|
-
git worktree remove --force ../review-123
|
|
54
|
-
|
|
55
|
-
# Prune stale worktrees
|
|
56
|
-
git worktree prune
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
## Workflow Integration
|
|
60
|
-
|
|
61
|
-
### PR Review Workflow
|
|
62
|
-
|
|
63
|
-
```
|
|
64
|
-
┌─────────────────────────────────────────────────────────────────┐
|
|
65
|
-
│ /vibe.review PR#123 │
|
|
66
|
-
├─────────────────────────────────────────────────────────────────┤
|
|
67
|
-
│ │
|
|
68
|
-
│ 1. git worktree add ../review-123 origin/pr/123 │
|
|
69
|
-
│ 2. cd ../review-123 │
|
|
70
|
-
│ 3. npm install && npm test │
|
|
71
|
-
│ 4. Run parallel review agents │
|
|
72
|
-
│ 5. Generate review report │
|
|
73
|
-
│ 6. cd - && git worktree remove ../review-123 │
|
|
74
|
-
│ │
|
|
75
|
-
└─────────────────────────────────────────────────────────────────┘
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
### Hotfix Workflow
|
|
79
|
-
|
|
80
|
-
```
|
|
81
|
-
┌─────────────────────────────────────────────────────────────────┐
|
|
82
|
-
│ Urgent hotfix while working on feature │
|
|
83
|
-
├─────────────────────────────────────────────────────────────────┤
|
|
84
|
-
│ │
|
|
85
|
-
│ # Keep feature work intact │
|
|
86
|
-
│ git worktree add -b hotfix/critical ../hotfix main │
|
|
87
|
-
│ cd ../hotfix │
|
|
88
|
-
│ │
|
|
89
|
-
│ # Fix and deploy │
|
|
90
|
-
│ vim src/bug.py │
|
|
91
|
-
│ git commit -am "fix: critical bug" │
|
|
92
|
-
│ git push origin hotfix/critical │
|
|
93
|
-
│ │
|
|
94
|
-
│ # Return to feature │
|
|
95
|
-
│ cd - && git worktree remove ../hotfix │
|
|
96
|
-
│ │
|
|
97
|
-
└─────────────────────────────────────────────────────────────────┘
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
## Benefits
|
|
101
|
-
|
|
102
|
-
1. **No Stash Needed**: 현재 작업 그대로 유지
|
|
103
|
-
2. **Full Codebase**: 각 worktree는 완전한 코드베이스
|
|
104
|
-
3. **Parallel Work**: 여러 브랜치 동시 작업
|
|
105
|
-
4. **Clean Testing**: 격리된 환경에서 테스트
|
|
106
|
-
|
|
107
|
-
## Best Practices
|
|
108
|
-
|
|
109
|
-
### Naming Convention
|
|
110
|
-
|
|
111
|
-
```bash
|
|
112
|
-
# PR 리뷰
|
|
113
|
-
../review-{pr_number}
|
|
114
|
-
|
|
115
|
-
# 핫픽스
|
|
116
|
-
../hotfix-{issue_number}
|
|
117
|
-
|
|
118
|
-
# 실험
|
|
119
|
-
../experiment-{feature_name}
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
### Cleanup
|
|
123
|
-
|
|
124
|
-
```bash
|
|
125
|
-
# 정기 정리
|
|
126
|
-
git worktree prune
|
|
127
|
-
|
|
128
|
-
# 모든 worktree 확인
|
|
129
|
-
git worktree list
|
|
130
|
-
|
|
131
|
-
# 스크립트로 자동 정리
|
|
132
|
-
for wt in $(git worktree list --porcelain | grep worktree | cut -d' ' -f2); do
|
|
133
|
-
if [[ $wt == *"review-"* ]] || [[ $wt == *"hotfix-"* ]]; then
|
|
134
|
-
git worktree remove "$wt" 2>/dev/null || true
|
|
135
|
-
fi
|
|
136
|
-
done
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
### Integration with CI/CD
|
|
140
|
-
|
|
141
|
-
```yaml
|
|
142
|
-
# GitHub Actions example
|
|
143
|
-
- name: Setup Review Worktree
|
|
144
|
-
run: |
|
|
145
|
-
git fetch origin pull/${{ github.event.pull_request.number }}/head:pr-${{ github.event.pull_request.number }}
|
|
146
|
-
git worktree add ../review pr-${{ github.event.pull_request.number }}
|
|
147
|
-
|
|
148
|
-
- name: Run Tests in Worktree
|
|
149
|
-
working-directory: ../review
|
|
150
|
-
run: npm test
|
|
151
|
-
|
|
152
|
-
- name: Cleanup
|
|
153
|
-
run: git worktree remove ../review
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
## Troubleshooting
|
|
157
|
-
|
|
158
|
-
### "already checked out" Error
|
|
159
|
-
|
|
160
|
-
```bash
|
|
161
|
-
# 해결: 해당 브랜치가 다른 worktree에 있음
|
|
162
|
-
git worktree list # 확인
|
|
163
|
-
git worktree remove <path> # 제거
|
|
164
|
-
```
|
|
165
|
-
|
|
166
|
-
### Locked Worktree
|
|
167
|
-
|
|
168
|
-
```bash
|
|
169
|
-
# 해결: 잠긴 worktree 해제
|
|
170
|
-
git worktree unlock <path>
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
### Stale Worktree
|
|
174
|
-
|
|
175
|
-
```bash
|
|
176
|
-
# 해결: 삭제된 디렉토리 정리
|
|
177
|
-
git worktree prune
|
|
178
|
-
```
|
|
@@ -1,236 +0,0 @@
|
|
|
1
|
-
# Priority-Based Todo Management Skill
|
|
2
|
-
|
|
3
|
-
우선순위 기반 TODO 관리 시스템
|
|
4
|
-
|
|
5
|
-
## Overview
|
|
6
|
-
|
|
7
|
-
P1/P2/P3 우선순위로 태스크를 분류하여 중요한 것 먼저 처리
|
|
8
|
-
|
|
9
|
-
## Priority Levels
|
|
10
|
-
|
|
11
|
-
```
|
|
12
|
-
┌─────────────────────────────────────────────────────────────────┐
|
|
13
|
-
│ Priority Levels │
|
|
14
|
-
├─────────────────────────────────────────────────────────────────┤
|
|
15
|
-
│ │
|
|
16
|
-
│ 🔴 P1 (Critical) │
|
|
17
|
-
│ ├── 보안 취약점 │
|
|
18
|
-
│ ├── 데이터 손실 위험 │
|
|
19
|
-
│ ├── 프로덕션 장애 │
|
|
20
|
-
│ └── 머지 차단 이슈 │
|
|
21
|
-
│ │
|
|
22
|
-
│ 🟡 P2 (Important) │
|
|
23
|
-
│ ├── 성능 문제 │
|
|
24
|
-
│ ├── 테스트 누락 │
|
|
25
|
-
│ ├── 아키텍처 위반 │
|
|
26
|
-
│ └── 기술 부채 │
|
|
27
|
-
│ │
|
|
28
|
-
│ 🔵 P3 (Nice-to-have) │
|
|
29
|
-
│ ├── 코드 스타일 │
|
|
30
|
-
│ ├── 리팩토링 제안 │
|
|
31
|
-
│ ├── 문서화 │
|
|
32
|
-
│ └── 최적화 기회 │
|
|
33
|
-
│ │
|
|
34
|
-
└─────────────────────────────────────────────────────────────────┘
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
## File-Based Todo System
|
|
38
|
-
|
|
39
|
-
### Directory Structure
|
|
40
|
-
|
|
41
|
-
```
|
|
42
|
-
.vibe/todos/
|
|
43
|
-
├── P1-security-sql-injection.md
|
|
44
|
-
├── P1-data-transaction-missing.md
|
|
45
|
-
├── P2-perf-n1-query.md
|
|
46
|
-
├── P2-test-missing-edge-case.md
|
|
47
|
-
├── P2-arch-circular-dependency.md
|
|
48
|
-
├── P3-style-extract-helper.md
|
|
49
|
-
├── P3-docs-add-readme.md
|
|
50
|
-
└── index.md
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
### Todo File Format
|
|
54
|
-
|
|
55
|
-
```markdown
|
|
56
|
-
# [P1] SQL Injection Vulnerability
|
|
57
|
-
|
|
58
|
-
## Summary
|
|
59
|
-
User input directly concatenated in SQL query without sanitization.
|
|
60
|
-
|
|
61
|
-
## Priority Justification
|
|
62
|
-
- 🔴 P1 (Critical)
|
|
63
|
-
- Category: Security
|
|
64
|
-
- Impact: High (data breach risk)
|
|
65
|
-
- Effort: Low (simple fix)
|
|
66
|
-
|
|
67
|
-
## Location
|
|
68
|
-
- **File**: src/api/users.py
|
|
69
|
-
- **Line**: 42-45
|
|
70
|
-
- **Function**: `get_user_by_email()`
|
|
71
|
-
|
|
72
|
-
## Current Code
|
|
73
|
-
```python
|
|
74
|
-
def get_user_by_email(email: str):
|
|
75
|
-
query = f"SELECT * FROM users WHERE email = '{email}'"
|
|
76
|
-
return db.execute(query)
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
## Suggested Fix
|
|
80
|
-
```python
|
|
81
|
-
def get_user_by_email(email: str):
|
|
82
|
-
query = "SELECT * FROM users WHERE email = %s"
|
|
83
|
-
return db.execute(query, (email,))
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
## Checklist
|
|
87
|
-
- [ ] Fix implemented
|
|
88
|
-
- [ ] Unit test added
|
|
89
|
-
- [ ] Security test added
|
|
90
|
-
- [ ] Code reviewed
|
|
91
|
-
- [ ] Merged
|
|
92
|
-
|
|
93
|
-
## References
|
|
94
|
-
- OWASP SQL Injection: https://owasp.org/www-community/attacks/SQL_Injection
|
|
95
|
-
- Project Security Guide: docs/security.md
|
|
96
|
-
|
|
97
|
-
## Metadata
|
|
98
|
-
- Created: 2026-01-11
|
|
99
|
-
- Author: Claude
|
|
100
|
-
- Review: /vibe.review PR#123
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
### Index File
|
|
104
|
-
|
|
105
|
-
```markdown
|
|
106
|
-
# Todo Index
|
|
107
|
-
|
|
108
|
-
## Summary
|
|
109
|
-
| Priority | Count | Status |
|
|
110
|
-
|----------|-------|--------|
|
|
111
|
-
| 🔴 P1 | 2 | 🚨 Blocks merge |
|
|
112
|
-
| 🟡 P2 | 5 | ⚠️ Should fix |
|
|
113
|
-
| 🔵 P3 | 3 | 💡 Backlog |
|
|
114
|
-
|
|
115
|
-
## 🔴 P1 Critical (Blocks Merge)
|
|
116
|
-
|
|
117
|
-
| # | Title | Location | Status |
|
|
118
|
-
|---|-------|----------|--------|
|
|
119
|
-
| 1 | SQL Injection | users.py:42 | ❌ Open |
|
|
120
|
-
| 2 | Missing Rollback | payment.py:128 | ❌ Open |
|
|
121
|
-
|
|
122
|
-
## 🟡 P2 Important
|
|
123
|
-
|
|
124
|
-
| # | Title | Location | Status |
|
|
125
|
-
|---|-------|----------|--------|
|
|
126
|
-
| 3 | N+1 Query | orders.py:78 | ❌ Open |
|
|
127
|
-
| 4 | Missing Tests | auth.py | ❌ Open |
|
|
128
|
-
| 5 | Circular Dep | services/ | ❌ Open |
|
|
129
|
-
|
|
130
|
-
## 🔵 P3 Nice-to-have
|
|
131
|
-
|
|
132
|
-
| # | Title | Location | Status |
|
|
133
|
-
|---|-------|----------|--------|
|
|
134
|
-
| 6 | Extract Helper | utils.py:45 | 💤 Backlog |
|
|
135
|
-
| 7 | Add README | /payment | 💤 Backlog |
|
|
136
|
-
|
|
137
|
-
---
|
|
138
|
-
|
|
139
|
-
Last updated: 2026-01-11 10:30
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
## Workflow Commands
|
|
143
|
-
|
|
144
|
-
### Create Todo
|
|
145
|
-
|
|
146
|
-
```bash
|
|
147
|
-
# /vibe.review 결과에서 자동 생성
|
|
148
|
-
/vibe.review PR#123
|
|
149
|
-
# → .vibe/todos/ 에 파일 생성
|
|
150
|
-
|
|
151
|
-
# 수동 생성
|
|
152
|
-
vibe todo add "SQL Injection in users.py" --priority P1 --category security
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
### List Todos
|
|
156
|
-
|
|
157
|
-
```bash
|
|
158
|
-
# 전체 목록
|
|
159
|
-
vibe todo list
|
|
160
|
-
|
|
161
|
-
# 우선순위별
|
|
162
|
-
vibe todo list --priority P1
|
|
163
|
-
vibe todo list --priority P2
|
|
164
|
-
|
|
165
|
-
# 카테고리별
|
|
166
|
-
vibe todo list --category security
|
|
167
|
-
vibe todo list --category performance
|
|
168
|
-
```
|
|
169
|
-
|
|
170
|
-
### Complete Todo
|
|
171
|
-
|
|
172
|
-
```bash
|
|
173
|
-
# 완료 처리
|
|
174
|
-
vibe todo done P1-security-sql-injection
|
|
175
|
-
|
|
176
|
-
# 파일에 체크 표시 + index 업데이트
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
### Clean Up
|
|
180
|
-
|
|
181
|
-
```bash
|
|
182
|
-
# 완료된 항목 아카이브
|
|
183
|
-
vibe todo archive
|
|
184
|
-
|
|
185
|
-
# 결과:
|
|
186
|
-
# .vibe/todos/P1-security-sql-injection.md
|
|
187
|
-
# → .vibe/todos/done/2026-01-11-P1-security-sql-injection.md
|
|
188
|
-
```
|
|
189
|
-
|
|
190
|
-
## Integration with TodoWrite
|
|
191
|
-
|
|
192
|
-
기존 TodoWrite 도구와 연동:
|
|
193
|
-
|
|
194
|
-
```javascript
|
|
195
|
-
TodoWrite({
|
|
196
|
-
todos: [
|
|
197
|
-
{
|
|
198
|
-
content: "[P1] Fix SQL injection in users.py:42",
|
|
199
|
-
status: "in_progress",
|
|
200
|
-
activeForm: "Fixing SQL injection vulnerability",
|
|
201
|
-
priority: "P1", // 확장 필드
|
|
202
|
-
category: "security" // 확장 필드
|
|
203
|
-
},
|
|
204
|
-
{
|
|
205
|
-
content: "[P2] Add missing tests for auth",
|
|
206
|
-
status: "pending",
|
|
207
|
-
activeForm: "Adding auth tests",
|
|
208
|
-
priority: "P2",
|
|
209
|
-
category: "testing"
|
|
210
|
-
}
|
|
211
|
-
]
|
|
212
|
-
})
|
|
213
|
-
```
|
|
214
|
-
|
|
215
|
-
## Auto-Blocking Rules
|
|
216
|
-
|
|
217
|
-
```yaml
|
|
218
|
-
# .vibe/config.yaml
|
|
219
|
-
merge_blocking:
|
|
220
|
-
P1: true # P1 있으면 머지 차단
|
|
221
|
-
P2: false # P2는 경고만
|
|
222
|
-
P3: false # P3는 무시
|
|
223
|
-
|
|
224
|
-
notifications:
|
|
225
|
-
P1: immediate # 즉시 알림
|
|
226
|
-
P2: daily # 일일 요약
|
|
227
|
-
P3: weekly # 주간 요약
|
|
228
|
-
```
|
|
229
|
-
|
|
230
|
-
## Best Practices
|
|
231
|
-
|
|
232
|
-
1. **P1은 즉시 처리**: 다른 작업 중단하고 수정
|
|
233
|
-
2. **P2는 PR 전 처리**: 머지 전 해결 권장
|
|
234
|
-
3. **P3는 백로그**: 시간 날 때 처리
|
|
235
|
-
4. **정기 정리**: 주 1회 todo 리뷰
|
|
236
|
-
5. **완료 기록**: 해결 방법 문서화
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|