@su-record/vibe 2.9.2 → 2.9.3

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.
Files changed (59) hide show
  1. package/CLAUDE.md +30 -10
  2. package/README.ko.md +90 -25
  3. package/README.md +139 -25
  4. package/agents/teams/figma/figma-builder.md +29 -1
  5. package/agents/teams/review-debate-team.md +1 -1
  6. package/commands/vibe.analyze.md +324 -170
  7. package/commands/vibe.figma.md +549 -34
  8. package/commands/vibe.harness.md +177 -0
  9. package/commands/vibe.run.md +44 -27
  10. package/commands/vibe.scaffold.md +195 -0
  11. package/commands/vibe.spec.md +375 -947
  12. package/commands/vibe.trace.md +17 -0
  13. package/commands/vibe.verify.md +19 -10
  14. package/dist/cli/commands/init.d.ts.map +1 -1
  15. package/dist/cli/commands/init.js +29 -1
  16. package/dist/cli/commands/init.js.map +1 -1
  17. package/dist/cli/commands/update.d.ts.map +1 -1
  18. package/dist/cli/commands/update.js +4 -2
  19. package/dist/cli/commands/update.js.map +1 -1
  20. package/dist/cli/postinstall/constants.d.ts +1 -1
  21. package/dist/cli/postinstall/constants.d.ts.map +1 -1
  22. package/dist/cli/postinstall/constants.js +6 -1
  23. package/dist/cli/postinstall/constants.js.map +1 -1
  24. package/dist/cli/setup/ProjectSetup.d.ts +12 -1
  25. package/dist/cli/setup/ProjectSetup.d.ts.map +1 -1
  26. package/dist/cli/setup/ProjectSetup.js +259 -72
  27. package/dist/cli/setup/ProjectSetup.js.map +1 -1
  28. package/dist/cli/setup.d.ts +1 -1
  29. package/dist/cli/setup.d.ts.map +1 -1
  30. package/dist/cli/setup.js +1 -1
  31. package/dist/cli/setup.js.map +1 -1
  32. package/hooks/scripts/figma-guard.js +220 -0
  33. package/package.json +1 -1
  34. package/skills/arch-guard/SKILL.md +1 -1
  35. package/skills/capability-loop/SKILL.md +106 -2
  36. package/skills/chub-usage/SKILL.md +43 -43
  37. package/skills/claude-md-guide/SKILL.md +175 -175
  38. package/skills/design-teach/SKILL.md +33 -33
  39. package/skills/devlog/SKILL.md +38 -38
  40. package/skills/event-comms/SKILL.md +23 -13
  41. package/skills/event-ops/SKILL.md +28 -19
  42. package/skills/event-planning/SKILL.md +13 -1
  43. package/skills/priority-todos/SKILL.md +1 -1
  44. package/skills/vibe.figma/SKILL.md +234 -154
  45. package/skills/vibe.figma.convert/SKILL.md +123 -112
  46. package/skills/vibe.figma.extract/SKILL.md +141 -129
  47. package/skills/vibe.interview/SKILL.md +358 -0
  48. package/skills/vibe.interview/checklists/api.md +101 -0
  49. package/skills/vibe.interview/checklists/feature.md +88 -0
  50. package/skills/vibe.interview/checklists/library.md +95 -0
  51. package/skills/vibe.interview/checklists/mobile.md +89 -0
  52. package/skills/vibe.interview/checklists/webapp.md +97 -0
  53. package/skills/vibe.interview/checklists/website.md +99 -0
  54. package/skills/vibe.plan/SKILL.md +216 -0
  55. package/skills/vibe.spec/SKILL.md +1155 -0
  56. package/{commands/vibe.spec.review.md → skills/vibe.spec.review/SKILL.md} +269 -108
  57. package/vibe/templates/claudemd-template.md +74 -0
  58. package/vibe/templates/constitution-template.md +15 -0
  59. package/vibe/templates/plan-template.md +194 -0
@@ -7,11 +7,11 @@ priority: 60
7
7
  ---
8
8
  # Devlog Auto-Generator
9
9
 
10
- Git 커밋 히스토리를 분석하여 개발일지를 자동 생성하고, 설정된 블로그 레포에 포스트로 저장합니다.
10
+ Analyzes git commit history to automatically generate development logs and saves them as posts to the configured blog repository.
11
11
 
12
12
  ## Config
13
13
 
14
- `.claude/vibe/config.json`의 `devlog` 섹션:
14
+ `devlog` section in `.claude/vibe/config.json`:
15
15
 
16
16
  ```json
17
17
  {
@@ -32,52 +32,52 @@ Git 커밋 히스토리를 분석하여 개발일지를 자동 생성하고, 설
32
32
 
33
33
  | Key | Required | Default | Description |
34
34
  |-----|----------|---------|-------------|
35
- | `enabled` | Y | `false` | 활성화 여부 |
36
- | `targetRepo` | Y | — | 블로그 레포 절대 경로 |
37
- | `targetDir` | N | `"posts"` | 포스트 저장 디렉토리 |
38
- | `prefix` | N | `"devlog"` | 파일명 프리픽스 (`{prefix}-{NNNN}.md`) |
39
- | `interval` | N | `10` | 커밋마다 생성할지 |
40
- | `autoPush` | N | `false` | targetRepo에 자동 commit+push |
41
- | `lang` | N | `"ko"` | 작성 언어 |
42
- | `author` | N | git user.name | 작성자 |
35
+ | `enabled` | Y | `false` | Whether to enable |
36
+ | `targetRepo` | Y | — | Absolute path to the blog repository |
37
+ | `targetDir` | N | `"posts"` | Directory to save posts |
38
+ | `prefix` | N | `"devlog"` | Filename prefix (`{prefix}-{NNNN}.md`) |
39
+ | `interval` | N | `10` | How many commits trigger a generation |
40
+ | `autoPush` | N | `false` | Auto commit+push to targetRepo |
41
+ | `lang` | N | `"ko"` | Writing language |
42
+ | `author` | N | git user.name | Author name |
43
43
  | `category` | N | `"dev-log"` | frontmatter category |
44
- | `tags` | N | `[]` | 기본 태그 (프로젝트명 자동 추가) |
44
+ | `tags` | N | `[]` | Default tags (project name etc. auto-added) |
45
45
 
46
46
  ## Trigger Modes
47
47
 
48
48
  ### 1. Auto (post-commit hook)
49
49
 
50
- `devlog-gen.js` hook 커밋마다 카운터를 확인하고, `interval`에 도달하면 `llm-orchestrate.js`를 통해 개발일지를 생성합니다.
50
+ The `devlog-gen.js` hook checks the counter on every commit, and when it reaches `interval`, generates a devlog via `llm-orchestrate.js`.
51
51
 
52
52
  ### 2. Manual
53
53
 
54
- 사용자가 직접 `/devlog` 또는 `개발일지 작성` 키워드로 트리거. 마지막 개발일지 이후의 커밋을 모아 즉시 생성합니다.
54
+ User manually triggers via `/devlog` or the `개발일지 작성` keyword. Collects commits since the last devlog and generates immediately.
55
55
 
56
56
  ## Generation Process
57
57
 
58
58
  ### Step 1: Collect Commits
59
59
 
60
- 마지막 개발일지의 날짜 이후 커밋을 수집합니다:
60
+ Collects commits after the date of the last devlog:
61
61
 
62
62
  ```bash
63
- # 마지막 devlog 파일에서 날짜 추출
64
- # targetRepo/targetDir/{prefix}-NNNN.md 의 frontmatter date
63
+ # Extract date from last devlog file
64
+ # frontmatter date of targetRepo/targetDir/{prefix}-NNNN.md
65
65
  git log --oneline --after="{last_date}" --reverse
66
66
  ```
67
67
 
68
68
  ### Step 2: Analyze & Group
69
69
 
70
- - 버전 범프 커밋 식별 (X.Y.Z 패턴)
71
- - feat/fix/refactor/docs 분류
72
- - 주요 커밋 선별 (의미 있는 변경)
70
+ - Identify version bump commits (X.Y.Z pattern)
71
+ - Classify by feat/fix/refactor/docs
72
+ - Select notable commits (meaningful changes)
73
73
 
74
74
  ### Step 3: Generate Markdown
75
75
 
76
- 다음 frontmatter 포맷으로 생성:
76
+ Generated with the following frontmatter format:
77
77
 
78
78
  ```markdown
79
79
  ---
80
- title: "{project_name} 개발일지 #{next_number} - {summary_title} ({interval} 커밋)"
80
+ title: "{project_name} Devlog #{next_number} - {summary_title} ({interval} commits)"
81
81
  date: "{today}"
82
82
  category: "{category}"
83
83
  description: "{one_line_description}"
@@ -88,31 +88,31 @@ lang: "{lang}"
88
88
 
89
89
  # {title}
90
90
 
91
- **작업 기간**: {start_date} ~ {end_date}
91
+ **Work period**: {start_date} ~ {end_date}
92
92
 
93
- ## 이번 기간 작업 내용
93
+ ## Work done this period
94
94
 
95
- ### {theme} ({interval} 커밋)
95
+ ### {theme} ({interval} commits)
96
96
 
97
97
  {overview_paragraph}
98
98
 
99
- | 커밋 | 내용 |
100
- |------|------|
99
+ | Commit | Description |
100
+ |--------|-------------|
101
101
  | `{meaningful_commit_message}` | **{highlight}** |
102
102
  ...
103
103
 
104
- ## 작업 하이라이트
104
+ ## Work highlights
105
105
 
106
106
  {2-3 highlights with code blocks or diagrams}
107
107
 
108
- ## 개발 현황
108
+ ## Development status
109
109
 
110
- - **버전**: {start_version} → {end_version}
111
- - **핵심**: {key_changes}
110
+ - **Version**: {start_version} → {end_version}
111
+ - **Key changes**: {key_changes}
112
112
 
113
113
  ---
114
114
 
115
- **다음 개발일지**: {prefix}-{next+1} (다음 {interval} 커밋 후)
115
+ **Next devlog**: {prefix}-{next+1} (after next {interval} commits)
116
116
  ```
117
117
 
118
118
  ### Step 4: Write File
@@ -121,11 +121,11 @@ lang: "{lang}"
121
121
  {targetRepo}/{targetDir}/{prefix}-{NNNN}.md
122
122
  ```
123
123
 
124
- 번호는 기존 파일에서 마지막 번호 + 1로 자동 결정.
124
+ The number is automatically determined as the last existing file number + 1.
125
125
 
126
126
  ### Step 5: (Optional) Auto Push
127
127
 
128
- `autoPush: true`이면:
128
+ If `autoPush: true`:
129
129
 
130
130
  ```bash
131
131
  cd {targetRepo}
@@ -136,8 +136,8 @@ git push
136
136
 
137
137
  ## Rules
138
138
 
139
- - **커밋 메시지 원문 보존**커밋 메시지를 그대로 인용, 임의 변경 금지
140
- - **버전 범프 커밋 포함**테이블에는 포함하되 하이라이트에서 제외
141
- - **하이라이트는 최대 3개**가장 영향력 있는 변경만 선별
142
- - **코드 블록 활용** — Before/After 비교, 아키텍처 다이어그램 권장
143
- - **숫자 강조** 변화(-N), 버전 범위, 파일
139
+ - **Preserve original commit messages**Quote commit messages verbatim, no arbitrary changes
140
+ - **Include version bump commits**Include in the table but exclude from highlights
141
+ - **Maximum 3 highlights** Select only the most impactful changes
142
+ - **Use code blocks** — Before/After comparisons and architecture diagrams are recommended
143
+ - **Emphasize numbers**Line count changes (-N lines), version ranges, file counts, etc.
@@ -80,21 +80,21 @@ SMS, email, and SNS content generation for community events.
80
80
 
81
81
  ### Confirmation Email Template (D-3)
82
82
  ```
83
- Subject: [{event_name}] 참가 확정 안내
83
+ Subject: [{event_name}] Attendance Confirmation
84
84
 
85
- {attendee_name}님 안녕하세요.
85
+ Hello {attendee_name},
86
86
 
87
- {event_name} {edition} 참가가 확정되었습니다.
87
+ Your attendance for {event_name} edition {edition} has been confirmed.
88
88
 
89
- 일시: {date} {time}
90
- 장소: {venue_detail}
91
- 프로그램:
89
+ Date & Time: {date} {time}
90
+ Venue: {venue_detail}
91
+ Program:
92
92
  {timetable}
93
93
 
94
- 실시간 질문: {slido_link}
94
+ Live Q&A: {slido_link}
95
95
 
96
- 당일 뵙겠습니다.
97
- 감사합니다.
96
+ We look forward to seeing you on the day.
97
+ Thank you.
98
98
 
99
99
  {community_name}
100
100
  ```
@@ -106,7 +106,7 @@ Subject: [{event_name}] 참가 확정 안내
106
106
  | Platform | Tone | Length | Style |
107
107
  |----------|------|--------|-------|
108
108
  | LinkedIn | Professional, formal | 300+ chars | Expert participation encouragement |
109
- | Threads | Casual, hooking | 150-200 chars | "아직 봤어?" style |
109
+ | Threads | Casual, hooking | 150-200 chars | "Haven't seen this yet?" style |
110
110
 
111
111
  ### Post Types
112
112
 
@@ -120,12 +120,12 @@ Subject: [{event_name}] 참가 확정 안내
120
120
  ```
121
121
  {hook_sentence}
122
122
 
123
- {event_name} {edition}회를 소개합니다.
123
+ Introducing {event_name} edition {edition}.
124
124
 
125
125
  📅 {date} {time}
126
126
  📍 {venue}
127
127
 
128
- 이번 주제: {topic}
128
+ This session's topic: {topic}
129
129
 
130
130
  {speaker_intro}
131
131
 
@@ -136,7 +136,7 @@ Subject: [{event_name}] 참가 확정 안내
136
136
  ```
137
137
  {hook_casual}
138
138
 
139
- {event_name} {edition} 열린다!
139
+ {event_name} edition {edition} is happening!
140
140
 
141
141
  {date} {time}
142
142
  {venue_short}
@@ -152,6 +152,16 @@ Subject: [{event_name}] 참가 확정 안내
152
152
  3. Next event preview
153
153
  4. Thank you + community link
154
154
 
155
+ ## Error Recovery
156
+
157
+ | Failure | Recovery |
158
+ |---------|----------|
159
+ | Aligo API timeout/error | Retry once after 5s. If still failing, output the SMS text as plain text for manual sending |
160
+ | Aligo auth error | Prompt user to verify API key in `~/.vibe/config.json` |
161
+ | Gmail auth expired | Prompt user to re-authenticate: `! gemini auth login` or refresh OAuth token |
162
+ | Gmail quota exceeded | Save email as `.eml` file for manual sending later |
163
+ | SNS post generation fails | Output post text as markdown for manual copy-paste |
164
+
155
165
  ## API Keys Required
156
166
 
157
167
  | Key | Service | Required |
@@ -64,12 +64,12 @@ Nametags, checklists, operational slides, Slido configuration, image generation,
64
64
  Fixed 4 items for all offline events:
65
65
 
66
66
  ```markdown
67
- ## D-1 체크리스트
67
+ ## D-1 Checklist
68
68
 
69
- - [ ] 생수/간식/식사 주문
70
- - [ ] 이름표 출력
71
- - [ ] 행사 운영 슬라이드
72
- - [ ] 스크린/카메라/삼각대 준비
69
+ - [ ] Order water/snacks/meals
70
+ - [ ] Print nametags
71
+ - [ ] Prepare event operational slides
72
+ - [ ] Set up screen/camera/tripod
73
73
  ```
74
74
 
75
75
  ## Operational Slides
@@ -96,30 +96,30 @@ N+2. Thank you + community links
96
96
 
97
97
  **MDC (3 speakers)**
98
98
  ```
99
- 19:00-19:10 오프닝 + 네트워킹
100
- 19:10-19:35 세션 1: {speaker1_name} — {topic1}
101
- 19:35-20:00 세션 2: {speaker2_name} — {topic2}
102
- 20:00-20:25 세션 3: {speaker3_name} — {topic3}
99
+ 19:00-19:10 Opening + Networking
100
+ 19:10-19:35 Session 1: {speaker1_name} — {topic1}
101
+ 19:35-20:00 Session 2: {speaker2_name} — {topic2}
102
+ 20:00-20:25 Session 3: {speaker3_name} — {topic3}
103
103
  20:25-20:40 Q&A + Slido
104
- 20:40-21:00 네트워킹
104
+ 20:40-21:00 Networking
105
105
  ```
106
106
 
107
107
  **Webinar (1-2 speakers)**
108
108
  ```
109
- 19:30-19:35 오프닝
110
- 19:35-20:30 세션: {speaker_name} — {topic}
109
+ 19:30-19:35 Opening
110
+ 19:35-20:30 Session: {speaker_name} — {topic}
111
111
  20:30-20:50 Q&A
112
- 20:50-21:00 마무리
112
+ 20:50-21:00 Closing
113
113
  ```
114
114
 
115
115
  **DWK (1-3 speakers + discussion)**
116
116
  ```
117
- 14:00-14:10 오프닝 + 아이스브레이커
118
- 14:10-14:40 세션 1: {speaker1_name} — {topic1}
119
- 14:40-15:10 세션 2: {speaker2_name} — {topic2}
120
- 15:10-15:30 쉬는 시간
121
- 15:30-16:00 토론 세션
122
- 16:00-16:30 네트워킹
117
+ 14:00-14:10 Opening + Icebreaker
118
+ 14:10-14:40 Session 1: {speaker1_name} — {topic1}
119
+ 14:40-15:10 Session 2: {speaker2_name} — {topic2}
120
+ 15:10-15:30 Break
121
+ 15:30-16:00 Discussion session
122
+ 16:00-16:30 Networking
123
123
  ```
124
124
 
125
125
  ## Slido Configuration
@@ -196,3 +196,12 @@ Free — no settlement needed
196
196
  - DM draft (short, 5-line version) + email draft (formal)
197
197
  - Auto-reference existing contact history (for re-outreach)
198
198
  - Business card image + LinkedIn URL → `data/speakers/{name}.json` accumulation
199
+
200
+ ## Error Recovery
201
+
202
+ | Failure | Recovery |
203
+ |---------|----------|
204
+ | Gemini image API unavailable | Skip image generation, use text-only placeholder slide with community colors |
205
+ | Gemini image quality too low | Retry with simplified prompt (remove detail, keep core subject) |
206
+ | PPTX generation error | Output slide content as markdown with speaker notes for manual assembly |
207
+ | Nametag HTML render issue | Simplify to basic table layout, remove custom fonts |
@@ -88,12 +88,24 @@ When user says "MDC 준비해줘" or similar:
88
88
  }
89
89
  ```
90
90
 
91
+ ## State Management
92
+
93
+ **Location**: `.claude/vibe/.event_state.json` (project-local, gitignored)
94
+
95
+ ### Error Recovery
96
+
97
+ | Failure | Recovery |
98
+ |---------|----------|
99
+ | State file missing | Regenerate from scratch by re-reading event config and completed artifacts |
100
+ | State file corrupted (invalid JSON) | Delete corrupted file, regenerate from current directory state |
101
+ | State phase mismatch | Trust directory artifacts over state file — scan for completed outputs and infer current phase |
102
+
91
103
  ## Community Tone Guide
92
104
 
93
105
  | | MDC | Webinar | DWK |
94
106
  |---|---|---|---|
95
107
  | Tone | Professional, practical, formal | Friendly, casual, emoji-ok | Warm, inclusive, "together" |
96
- | Example | "실무에서 바로 적용" | "퇴근 편하게" | "데이터를 좋아하는 여성들" |
108
+ | Example | "Apply directly in your work" | "Relax after work" | "Women who love data" |
97
109
  | Brand color | #ff6b35 (orange) | #a78bfa (purple) | #34d399 (mint) |
98
110
 
99
111
  ## Community Brand Names
@@ -34,7 +34,7 @@ priority: 60
34
34
  ## Workflow
35
35
 
36
36
  ```
37
- /vibe.review → Creates P1/P2/P3 todo files + updates index.md
37
+ vibe.review (skill) → Creates P1/P2/P3 todo files + updates index.md
38
38
 
39
39
  Fix P1 first (blocks merge)
40
40