@su-record/vibe 2.9.1 → 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.
- package/CLAUDE.md +31 -10
- package/README.ko.md +90 -25
- package/README.md +139 -25
- package/agents/teams/debug-team.md +70 -0
- package/agents/teams/dev-team.md +88 -0
- package/agents/teams/docs-team.md +80 -0
- package/agents/teams/figma/figma-analyst.md +52 -0
- package/agents/teams/figma/figma-architect.md +112 -0
- package/agents/teams/figma/figma-auditor.md +82 -0
- package/agents/teams/figma/figma-builder.md +100 -0
- package/agents/teams/figma-team.md +85 -0
- package/agents/teams/fullstack-team.md +83 -0
- package/agents/teams/lite-team.md +69 -0
- package/agents/teams/migration-team.md +78 -0
- package/agents/teams/refactor-team.md +94 -0
- package/agents/teams/research-team.md +86 -0
- package/agents/teams/review-debate-team.md +125 -0
- package/agents/teams/security-team.md +81 -0
- package/commands/vibe.analyze.md +324 -170
- package/commands/vibe.figma.md +549 -34
- package/commands/vibe.harness.md +177 -0
- package/commands/vibe.review.md +1 -63
- package/commands/vibe.run.md +52 -403
- package/commands/vibe.scaffold.md +195 -0
- package/commands/vibe.spec.md +373 -1003
- package/commands/vibe.trace.md +17 -0
- package/commands/vibe.verify.md +19 -10
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +29 -1
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +4 -2
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/postinstall/constants.d.ts +1 -1
- package/dist/cli/postinstall/constants.d.ts.map +1 -1
- package/dist/cli/postinstall/constants.js +6 -1
- package/dist/cli/postinstall/constants.js.map +1 -1
- package/dist/cli/setup/ProjectSetup.d.ts +12 -1
- package/dist/cli/setup/ProjectSetup.d.ts.map +1 -1
- package/dist/cli/setup/ProjectSetup.js +259 -72
- package/dist/cli/setup/ProjectSetup.js.map +1 -1
- package/dist/cli/setup.d.ts +1 -1
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +1 -1
- package/dist/cli/setup.js.map +1 -1
- package/hooks/scripts/figma-guard.js +220 -0
- package/hooks/scripts/figma-refine.js +315 -0
- package/hooks/scripts/figma-to-scss.js +394 -0
- package/hooks/scripts/figma-validate.js +353 -0
- package/package.json +1 -1
- package/skills/arch-guard/SKILL.md +1 -1
- package/skills/capability-loop/SKILL.md +106 -2
- package/skills/chub-usage/SKILL.md +43 -43
- package/skills/claude-md-guide/SKILL.md +175 -175
- package/skills/design-teach/SKILL.md +33 -33
- package/skills/devlog/SKILL.md +38 -38
- package/skills/event-comms/SKILL.md +23 -13
- package/skills/event-ops/SKILL.md +28 -19
- package/skills/event-planning/SKILL.md +13 -1
- package/skills/priority-todos/SKILL.md +1 -1
- package/skills/vibe.figma/SKILL.md +263 -115
- package/skills/vibe.figma/templates/component-spec.md +168 -0
- package/skills/vibe.figma.convert/SKILL.md +131 -84
- package/skills/vibe.figma.convert/rubrics/conversion-rules.md +12 -0
- package/skills/vibe.figma.extract/SKILL.md +148 -108
- package/skills/vibe.figma.extract/rubrics/image-rules.md +15 -3
- package/skills/vibe.interview/SKILL.md +358 -0
- package/skills/vibe.interview/checklists/api.md +101 -0
- package/skills/vibe.interview/checklists/feature.md +88 -0
- package/skills/vibe.interview/checklists/library.md +95 -0
- package/skills/vibe.interview/checklists/mobile.md +89 -0
- package/skills/vibe.interview/checklists/webapp.md +97 -0
- package/skills/vibe.interview/checklists/website.md +99 -0
- package/skills/vibe.plan/SKILL.md +216 -0
- package/skills/vibe.spec/SKILL.md +1155 -0
- package/{commands/vibe.spec.review.md → skills/vibe.spec.review/SKILL.md} +272 -155
- package/vibe/templates/claudemd-template.md +74 -0
- package/vibe/templates/constitution-template.md +15 -0
- package/vibe/templates/plan-template.md +194 -0
package/skills/devlog/SKILL.md
CHANGED
|
@@ -7,11 +7,11 @@ priority: 60
|
|
|
7
7
|
---
|
|
8
8
|
# Devlog Auto-Generator
|
|
9
9
|
|
|
10
|
-
|
|
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
|
|
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"` |
|
|
39
|
-
| `interval` | N | `10` |
|
|
40
|
-
| `autoPush` | N | `false` |
|
|
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
|
|
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
|
-
|
|
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
|
-
#
|
|
64
|
-
# targetRepo/targetDir/{prefix}-NNNN.md
|
|
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
|
-
-
|
|
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
|
-
|
|
76
|
+
Generated with the following frontmatter format:
|
|
77
77
|
|
|
78
78
|
```markdown
|
|
79
79
|
---
|
|
80
|
-
title: "{project_name}
|
|
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
|
-
|
|
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
|
-
-
|
|
111
|
-
-
|
|
110
|
+
- **Version**: {start_version} → {end_version}
|
|
111
|
+
- **Key changes**: {key_changes}
|
|
112
112
|
|
|
113
113
|
---
|
|
114
114
|
|
|
115
|
-
|
|
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
|
-
|
|
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
|
-
-
|
|
142
|
-
-
|
|
143
|
-
-
|
|
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
|
-
■
|
|
90
|
-
■
|
|
91
|
-
■
|
|
89
|
+
■ Date & Time: {date} {time}
|
|
90
|
+
■ Venue: {venue_detail}
|
|
91
|
+
■ Program:
|
|
92
92
|
{timetable}
|
|
93
93
|
|
|
94
|
-
■
|
|
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 | "
|
|
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
|
-
|
|
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
|
|
101
|
-
19:35-20:00
|
|
102
|
-
20:00-20:25
|
|
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
|
|
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
|
|
119
|
-
14:40-15:10
|
|
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
|