@su-record/vibe 3.2.6 → 3.2.7
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/README.en.md +1 -1
- package/README.md +1 -1
- package/dist/cli/postinstall/constants.d.ts.map +1 -1
- package/dist/cli/postinstall/constants.js +10 -9
- package/dist/cli/postinstall/constants.js.map +1 -1
- package/hooks/scripts/__tests__/.vibe/command-log.txt +3 -3
- package/package.json +2 -2
- package/skills/vibe/SKILL.md +27 -86
- package/skills/vibe/references/routing-examples.md +85 -0
- package/skills/vibe.agents-md/SKILL.md +12 -10
- package/skills/vibe.analyze/SKILL.md +22 -211
- package/skills/vibe.analyze/references/mode1-feature.md +81 -0
- package/skills/vibe.analyze/references/mode2-document.md +50 -0
- package/skills/vibe.analyze/references/mode3-website.md +47 -0
- package/skills/vibe.analyze/references/mode4-quality.md +35 -0
- package/skills/vibe.brand-assets/SKILL.md +2 -2
- package/skills/vibe.brand-assets/references/mobile-assets.md +6 -0
- package/skills/vibe.capability-loop/SKILL.md +14 -80
- package/skills/vibe.capability-loop/references/escalate.md +86 -0
- package/skills/vibe.chub-usage/SKILL.md +3 -132
- package/skills/vibe.clone/SKILL.md +43 -358
- package/skills/vibe.clone/references/phase-commands.md +118 -0
- package/skills/vibe.clone/references/setup-and-layout.md +34 -0
- package/skills/vibe.clone/references/verification-loops.md +64 -0
- package/skills/vibe.commit-push-pr/SKILL.md +10 -4
- package/skills/vibe.context7-usage/SKILL.md +3 -99
- package/skills/vibe.continue/SKILL.md +17 -7
- package/skills/{vibe.handoff → vibe.continue}/agents/context-summarizer.md +1 -1
- package/skills/{vibe.handoff → vibe.continue}/agents/document-writer.md +1 -1
- package/skills/{vibe.handoff → vibe.continue}/agents/state-collector.md +1 -1
- package/skills/{vibe.handoff → vibe.continue}/agents/verifier.md +1 -1
- package/skills/{vibe.handoff/rubrics/completeness.md → vibe.continue/references/handoff-completeness.md} +1 -1
- package/skills/{vibe.handoff/templates → vibe.continue/references}/handoff.md +37 -2
- package/skills/vibe.contract/SKILL.md +4 -27
- package/skills/vibe.create-prd/SKILL.md +8 -1
- package/skills/vibe.design/SKILL.md +18 -5
- package/skills/vibe.design/references/design-context.md +184 -0
- package/skills/vibe.design-refine/SKILL.md +7 -0
- package/skills/vibe.design-review/SKILL.md +7 -0
- package/skills/vibe.design-teach/SKILL.md +2 -175
- package/skills/vibe.devlog/SKILL.md +14 -11
- package/skills/vibe.devlog/references/auto-push.md +10 -0
- package/skills/vibe.docs/SKILL.md +27 -198
- package/skills/vibe.docs/references/agent.md +55 -0
- package/skills/vibe.docs/references/arch.md +28 -0
- package/skills/vibe.docs/references/codemaps.md +17 -0
- package/skills/vibe.docs/references/diagram.md +24 -0
- package/skills/vibe.docs/references/guide.md +23 -0
- package/skills/vibe.docs/references/readme.md +45 -0
- package/skills/vibe.docs/references/release.md +31 -0
- package/skills/vibe.documentation-provider/SKILL.md +22 -0
- package/skills/vibe.documentation-provider/references/chub.md +141 -0
- package/skills/vibe.documentation-provider/references/context7.md +107 -0
- package/skills/vibe.educational-content/SKILL.md +7 -0
- package/skills/vibe.event/SKILL.md +47 -146
- package/skills/vibe.event/references/comms.md +173 -0
- package/skills/vibe.event/references/operations.md +208 -0
- package/skills/vibe.event/references/orchestration-legacy.md +97 -0
- package/skills/vibe.event/references/planning.md +145 -0
- package/skills/vibe.event-comms/SKILL.md +3 -165
- package/skills/vibe.event-ops/SKILL.md +3 -200
- package/skills/vibe.event-planning/SKILL.md +3 -137
- package/skills/vibe.figma/SKILL.md +26 -692
- package/skills/vibe.figma/references/branch1-read-convention.md +82 -0
- package/skills/vibe.figma/references/branch2-read-standalone.md +69 -0
- package/skills/vibe.figma/references/branch3-write.md +122 -0
- package/skills/vibe.figma/references/core-implementation.md +453 -0
- package/skills/vibe.git-worktree/SKILL.md +2 -6
- package/skills/vibe.git-worktree/references/troubleshooting.md +9 -0
- package/skills/vibe.handoff/SKILL.md +2 -103
- package/skills/vibe.harness/SKILL.md +17 -12
- package/skills/vibe.image/SKILL.md +8 -1
- package/skills/vibe.llm/SKILL.md +8 -1
- package/skills/vibe.loop/SKILL.md +9 -11
- package/skills/vibe.loop/references/install-adapters.md +10 -0
- package/skills/vibe.presentation/SKILL.md +7 -0
- package/skills/vibe.prioritization/SKILL.md +7 -0
- package/skills/vibe.priority-todos/SKILL.md +2 -57
- package/skills/vibe.react-best-practices/SKILL.md +1 -1
- package/skills/vibe.reason/SKILL.md +9 -2
- package/skills/vibe.regress/SKILL.md +6 -28
- package/skills/vibe.regress/templates/{test-jest.md → test-template.md} +1 -0
- package/skills/vibe.review/SKILL.md +35 -38
- package/skills/vibe.review/references/priority-todos.md +66 -0
- package/skills/vibe.review/references/ui-ux-review.md +39 -0
- package/skills/vibe.run/SKILL.md +57 -656
- package/skills/vibe.run/references/arch-guard.md +178 -0
- package/skills/vibe.run/references/e2e-and-autofix.md +40 -0
- package/skills/vibe.run/references/exec-plan.md +145 -0
- package/skills/vibe.run/references/guidelines-and-tools.md +84 -0
- package/skills/vibe.run/references/process-steps.md +179 -0
- package/skills/vibe.run/references/restraint.md +66 -0
- package/skills/vibe.scaffold/SKILL.md +9 -13
- package/skills/vibe.scaffold/references/clean-architecture.md +17 -0
- package/skills/vibe.spec/SKILL.md +12 -8
- package/skills/vibe.spec/references/legacy-artifacts.md +6 -0
- package/skills/vibe.test/SKILL.md +93 -70
- package/skills/vibe.test/references/report-template.md +101 -0
- package/skills/vibe.tool-fallback/SKILL.md +10 -32
- package/skills/vibe.tool-fallback/references/external-llm.md +10 -0
- package/skills/vibe.tool-fallback/references/file-lookup.md +9 -0
- package/skills/vibe.tool-fallback/references/web-search.md +11 -0
- package/skills/vibe.trace/SKILL.md +2 -264
- package/skills/vibe.ui-ux-pro-max/SKILL.md +1 -3
- package/skills/vibe.ui-ux-pro-max/references/charts-and-data.md +7 -0
- package/skills/vibe.user-personas/SKILL.md +8 -1
- package/skills/vibe.verify/SKILL.md +30 -4
- package/skills/vibe.verify/references/trace-mode.md +271 -0
- package/skills/vibe.regress/templates/test-vitest.md +0 -30
- /package/skills/{vibe.design-teach/rubrics → vibe.design/references}/brand-personality.md +0 -0
- /package/skills/{vibe.design-teach → vibe.design}/templates/design-context.json +0 -0
- /package/skills/{vibe.context7-usage/rubrics/when-to-use.md → vibe.documentation-provider/references/context7-when-to-use.md} +0 -0
- /package/skills/{vibe.event-ops/rubrics → vibe.event/references}/contingency.md +0 -0
- /package/skills/{vibe.event-ops/templates/d-day-checklist.md → vibe.event/references/d-day-checklist-template.md} +0 -0
- /package/skills/{vibe.event-comms/templates/email-invite.md → vibe.event/references/email-invite-template.md} +0 -0
- /package/skills/{vibe.event-planning/templates/event-plan.md → vibe.event/references/event-plan-template.md} +0 -0
- /package/skills/{vibe.event-comms/templates/sns-post.md → vibe.event/references/sns-post-template.md} +0 -0
- /package/skills/{vibe.event-planning/rubrics → vibe.event/references}/timeline.md +0 -0
- /package/skills/{vibe.priority-todos/templates/todo-board.md → vibe.review/references/todo-board-template.md} +0 -0
- /package/skills/{vibe.priority-todos/rubrics/prioritization.md → vibe.review/references/todo-prioritization.md} +0 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Clone — Phase 4 Compile Gate & Phase 5 Pixel Verification
|
|
2
|
+
|
|
3
|
+
> Loaded by vibe.clone SKILL.md Phases 4–5. Both loops follow `vibe/rules/loop-contract.md`
|
|
4
|
+
> (ANCHOR→ACT→JUDGE→RECORD); exit = gates pass │ stuck │ max-iter.
|
|
5
|
+
|
|
6
|
+
## Phase 4: Compile Gate
|
|
7
|
+
|
|
8
|
+
```
|
|
9
|
+
No round cap. Loop until compile succeeds (or stuck → ask user).
|
|
10
|
+
|
|
11
|
+
0. Capture baseline (before Phase 3): record existing tsc + build errors
|
|
12
|
+
→ Phase 4 only fixes NEW errors
|
|
13
|
+
|
|
14
|
+
1. TypeScript: vue-tsc / svelte-check / tsc --noEmit
|
|
15
|
+
2. Build: npm run build (120s timeout)
|
|
16
|
+
3. Dev server: npm run dev → detect port → polling
|
|
17
|
+
|
|
18
|
+
On error: parse → auto-fix → re-check
|
|
19
|
+
Termination:
|
|
20
|
+
✅ Success: all checks pass → enter Phase 5
|
|
21
|
+
⚠️ Stuck: same errors as previous round → ask user
|
|
22
|
+
1. Direct fix instructions → retry
|
|
23
|
+
2. "proceed" — record remaining errors as TODO, proceed to Phase 5
|
|
24
|
+
3. "abort" — halt
|
|
25
|
+
automationLevel: autonomous → on stuck, record TODO without prompting and proceed
|
|
26
|
+
|
|
27
|
+
⛔ Must enter Phase 5 after Phase 4 passes. Do NOT output a "completion summary".
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Phase 5: Pixel Verification Loop — MANDATORY
|
|
31
|
+
|
|
32
|
+
**⛔ Phase 5 is mandatory, not optional. Enter automatically after Phase 4.**
|
|
33
|
+
**⛔ Skipping Phase 5 makes the entire clone "incomplete".**
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
No round cap. Loop until P1=0 (or stuck → ask user).
|
|
37
|
+
Infrastructure: src/infra/lib/browser/ (Puppeteer + CDP) — same as figma Phase 6.
|
|
38
|
+
|
|
39
|
+
1. Render scaffolded page in dev server at matching viewport
|
|
40
|
+
2. Capture screenshot → pixelmatch comparison against /tmp/{feature}/{bp}/screenshot.png
|
|
41
|
+
diffRatio > 0.05 (clone target is tighter than figma) → P1
|
|
42
|
+
3. CSS comparison: live computed CSS vs /tmp/{feature}/{bp}/computed.json
|
|
43
|
+
delta > 2px → P1, ≤ 2px → P2
|
|
44
|
+
4. Asset audit: every <img>/background-image resolves to local public/images/ path → else P1
|
|
45
|
+
5. Fix P1 first (refer to computed.json, no guessing) → revalidate compile → reload
|
|
46
|
+
|
|
47
|
+
Narrowing scope:
|
|
48
|
+
Round 1: P1+P2+P3
|
|
49
|
+
Round 2: P1+P2
|
|
50
|
+
Round 3+: P1 only
|
|
51
|
+
|
|
52
|
+
Termination:
|
|
53
|
+
✅ P1=0 AND no new findings → complete
|
|
54
|
+
⚠️ Stuck: same findings → ask user (resolve / proceed / abort)
|
|
55
|
+
automationLevel: autonomous → on stuck, record TODO without prompting and complete
|
|
56
|
+
|
|
57
|
+
Responsive: after MO verification → change viewport → repeat against PC screenshot
|
|
58
|
+
Post-merge (Phase 3C): re-run at BOTH viewports (375×812 vs mo/screenshot.png,
|
|
59
|
+
1440×900 vs pc/screenshot.png) — either failing means the merge regressed; fix the
|
|
60
|
+
merged SCSS (evidence: the per-BP sections.json), never by re-guessing values
|
|
61
|
+
Cleanup: shut down browser + dev server
|
|
62
|
+
|
|
63
|
+
⛔ "Completion summary" output only allowed after Phase 5 completes.
|
|
64
|
+
```
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: vibe.commit-push-pr
|
|
3
3
|
invocation: [auto]
|
|
4
4
|
tier: optional
|
|
5
|
-
description: "
|
|
5
|
+
description: "Use when the user asks to commit completed changes, push the branch, and open a pull request in one workflow."
|
|
6
6
|
triggers: [commit, push, PR, pull request, merge]
|
|
7
7
|
priority: 70
|
|
8
8
|
---
|
|
@@ -49,9 +49,15 @@ git diff --cached --name-only | grep -E '\.(env|pem|key)$|credentials|secret'
|
|
|
49
49
|
|
|
50
50
|
## Branch Protection
|
|
51
51
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
-
|
|
52
|
+
**보호 브랜치 규칙 (항상 적용 — 조건부 로드 금지):**
|
|
53
|
+
|
|
54
|
+
- **`main`/`master` 에 직접 커밋·푸시하지 않는다.**
|
|
55
|
+
- 현재 브랜치가 `main`/`master` 면 **먼저 새 브랜치를 만든다.**
|
|
56
|
+
- `main`/`master` 에 **force-push 는 절대 하지 않는다.**
|
|
57
|
+
|
|
58
|
+
> 이 규칙은 reference 로 내리지 않는다. "브랜치가 보호돼 있을 때만 읽어라" 는 순환이다 —
|
|
59
|
+
> 무엇이 보호 브랜치인지 판단하려면 이미 이 규칙을 알고 있어야 한다.
|
|
60
|
+
> 안전·정확성 규칙은 조건부 로드 대상이 아니다.
|
|
55
61
|
|
|
56
62
|
## PR Format
|
|
57
63
|
|
|
@@ -1,107 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: vibe.context7-usage
|
|
3
|
+
description: Compatibility alias for Context7-based current library documentation lookup. Use when callers invoke vibe.context7-usage directly.
|
|
3
4
|
invocation: [auto]
|
|
4
5
|
tier: optional
|
|
5
|
-
description: "Context7 plugin for latest library documentation. Auto-activates when docs, documentation, latest version, official docs, API reference, or library help is needed."
|
|
6
6
|
triggers: [latest version, official docs, API reference, library help, context7]
|
|
7
7
|
priority: 60
|
|
8
|
+
user-invocable: true
|
|
8
9
|
---
|
|
9
10
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
Guide for searching latest library/framework documentation using Context7 plugin with subagent isolation.
|
|
13
|
-
|
|
14
|
-
## Why Subagent Approach?
|
|
15
|
-
|
|
16
|
-
| Approach | Problem |
|
|
17
|
-
|----------|---------|
|
|
18
|
-
| Direct plugin call | Docs content fills main context, causing bloat |
|
|
19
|
-
| Subagent isolation | Docs queried in separate context, only results returned |
|
|
20
|
-
|
|
21
|
-
**Benefits:**
|
|
22
|
-
|
|
23
|
-
- Prevents context bloat during long coding sessions
|
|
24
|
-
- Solves knowledge cutoff problem with latest docs
|
|
25
|
-
- Main context stays focused on implementation
|
|
26
|
-
|
|
27
|
-
## When to Use
|
|
28
|
-
|
|
29
|
-
| Situation | Example |
|
|
30
|
-
|-----------|---------|
|
|
31
|
-
| Latest API check | "React 19 use() hook usage" |
|
|
32
|
-
| Version differences | "Next.js 15 changes" |
|
|
33
|
-
| Official docs needed | "Prisma schema syntax" |
|
|
34
|
-
| Migration guide | "Vue 2 → Vue 3 migration" |
|
|
35
|
-
|
|
36
|
-
## How It Works
|
|
37
|
-
|
|
38
|
-
```
|
|
39
|
-
User asks library question
|
|
40
|
-
↓
|
|
41
|
-
Skill detects docs need
|
|
42
|
-
↓
|
|
43
|
-
Spawn docs-researcher subagent (haiku)
|
|
44
|
-
↓
|
|
45
|
-
Subagent calls context7 in isolated context
|
|
46
|
-
↓
|
|
47
|
-
Returns only relevant info to main context
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
## Usage
|
|
51
|
-
|
|
52
|
-
### Automatic (Recommended)
|
|
53
|
-
|
|
54
|
-
Just ask library/API questions naturally:
|
|
55
|
-
|
|
56
|
-
```
|
|
57
|
-
"How do I use React 19 use() hook?"
|
|
58
|
-
"What's new in Next.js 15?"
|
|
59
|
-
"Prisma many-to-many relation syntax"
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
The skill auto-detects and spawns a docs-researcher subagent.
|
|
63
|
-
|
|
64
|
-
### Manual Command
|
|
65
|
-
|
|
66
|
-
```
|
|
67
|
-
/context7:docs <library> [query]
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
Examples:
|
|
71
|
-
|
|
72
|
-
```
|
|
73
|
-
/context7:docs react hooks
|
|
74
|
-
/context7:docs next.js app router
|
|
75
|
-
/context7:docs prisma relations
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
## Implementation Pattern
|
|
79
|
-
|
|
80
|
-
When you detect a library/API documentation need, spawn a subagent:
|
|
81
|
-
|
|
82
|
-
```
|
|
83
|
-
Task tool call:
|
|
84
|
-
- subagent_type: Explore
|
|
85
|
-
- model: haiku
|
|
86
|
-
- prompt: "Use context7 to find [library] documentation about [topic]. Return only the relevant API usage examples and key points."
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
The subagent handles the context7 calls and returns a summary, keeping main context clean.
|
|
90
|
-
|
|
91
|
-
## Fallback Chain
|
|
92
|
-
|
|
93
|
-
```
|
|
94
|
-
context7 plugin not installed
|
|
95
|
-
↓
|
|
96
|
-
Prompt user: /plugin install context7
|
|
97
|
-
↓
|
|
98
|
-
If still unavailable: Web Search for official docs
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
## Installation
|
|
102
|
-
|
|
103
|
-
If context7 is not installed, guide user:
|
|
104
|
-
|
|
105
|
-
```bash
|
|
106
|
-
/plugin install context7
|
|
107
|
-
```
|
|
11
|
+
Load `vibe.documentation-provider` and force the Context7 provider while preserving all arguments.
|
|
@@ -1,31 +1,41 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: vibe.continue
|
|
3
|
-
description:
|
|
4
|
-
argument-hint:
|
|
3
|
+
description: 세션을 넘기거나 이전 작업을 계속해야 할 때 — reset 전 HANDOFF.md를 만들거나 최신 handoff/checkpoint에서 상태를 복원한다.
|
|
4
|
+
argument-hint: "[handoff]"
|
|
5
5
|
user-invocable: true
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# /vibe.continue
|
|
9
9
|
|
|
10
|
+
## Done Criteria
|
|
11
|
+
|
|
12
|
+
- [ ] handoff mode에서는 HANDOFF.md가 지정 경로에 존재한다.
|
|
13
|
+
- [ ] restore mode에서는 복원한 checkpoint 또는 handoff 경로가 보고된다.
|
|
14
|
+
- [ ] 현재 목표, 변경 파일, 검증 상태, 다음 작업이 결과에 포함된다.
|
|
15
|
+
|
|
10
16
|
Restore previous session context for continuity.
|
|
11
17
|
|
|
12
18
|
## Usage
|
|
13
19
|
|
|
14
20
|
```
|
|
15
21
|
/vibe.continue
|
|
22
|
+
/vibe.continue handoff
|
|
16
23
|
```
|
|
17
24
|
|
|
18
25
|
## Process
|
|
19
26
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
27
|
+
- **Restore mode** (default): locate the newest project checkpoint,
|
|
28
|
+
`HANDOFF.md`, and `.vibe/memories/` record; read them in full, reconstruct
|
|
29
|
+
completed work and the next step, verify against `git status`, then resume.
|
|
30
|
+
- **Handoff mode**: read `references/handoff.md`, generate `HANDOFF.md`, read it
|
|
31
|
+
back, and verify its tasks, decisions, changed files, branch, and test status
|
|
32
|
+
against repository state.
|
|
23
33
|
|
|
24
34
|
## When to Use
|
|
25
35
|
|
|
26
36
|
- At new session start, to pick up exactly where the previous session left off
|
|
27
|
-
- At 85%+ context usage:
|
|
28
|
-
-
|
|
37
|
+
- At 85%+ context usage: persist a checkpoint/handoff → start a fresh session using the harness's session reset → `/vibe.continue`
|
|
38
|
+
- Invoke the `vibe.handoff` compatibility name when an existing workflow expects it; it delegates to handoff mode.
|
|
29
39
|
|
|
30
40
|
---
|
|
31
41
|
|
|
@@ -43,7 +43,7 @@ A HANDOFF.md is complete only when all required items are present and accurate.
|
|
|
43
43
|
|
|
44
44
|
- Known issues / workarounds (if any discovered this session)
|
|
45
45
|
- "Do not touch" warnings (if any fragile areas identified)
|
|
46
|
-
-
|
|
46
|
+
- Optional harness memory references, when the active harness provides durable memory
|
|
47
47
|
|
|
48
48
|
## Quality Bar
|
|
49
49
|
|
|
@@ -1,3 +1,38 @@
|
|
|
1
|
+
# Handoff Workflow and Canonical HANDOFF.md Template
|
|
2
|
+
|
|
3
|
+
Use this document before a session ends or a long pause when detailed work state must survive context reset. `vibe.continue` restores state; handoff mode first records progress, decisions, changed files, verification status, and the exact next step in `HANDOFF.md`.
|
|
4
|
+
|
|
5
|
+
## When to Generate
|
|
6
|
+
|
|
7
|
+
- Context reaches roughly 80–100k tokens.
|
|
8
|
+
- The session has already been compacted three times.
|
|
9
|
+
- Work will pause for an extended period.
|
|
10
|
+
- Complex progress needs a durable record for a teammate or future session.
|
|
11
|
+
|
|
12
|
+
Automatic continue restores available session state at the start of a new session; HANDOFF.md is the manual, repository-verifiable record created before the old session ends. They complement rather than replace each other.
|
|
13
|
+
|
|
14
|
+
## Generation Procedure
|
|
15
|
+
|
|
16
|
+
1. Inspect `git status` and the five most recent commits.
|
|
17
|
+
2. Separate completed, in-progress, and remaining work.
|
|
18
|
+
3. Fill every applicable template field below from conversation and repository evidence.
|
|
19
|
+
4. Write `HANDOFF.md`, then read it back and verify it against repository state.
|
|
20
|
+
5. Durable harness memory may mirror the document, but is optional and never the correctness source.
|
|
21
|
+
|
|
22
|
+
## Restore Procedure
|
|
23
|
+
|
|
24
|
+
Run `vibe.continue`, read `HANDOFF.md`, and verify its branch, changed files, and test status before resuming from `Next immediate step`.
|
|
25
|
+
|
|
26
|
+
## Done Criteria
|
|
27
|
+
|
|
28
|
+
- [ ] HANDOFF.md exists with all applicable sections filled.
|
|
29
|
+
- [ ] Completed, in-progress, and remaining tasks match repository state.
|
|
30
|
+
- [ ] All modified files and the last commit are recorded.
|
|
31
|
+
- [ ] Session decisions, cautions, blockers, and exact next step are present.
|
|
32
|
+
- [ ] The written document was read back and checked against Git and test evidence.
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
1
36
|
# Work Handover: {{FEATURE_OR_TASK_NAME}}
|
|
2
37
|
|
|
3
38
|
**Date**: {{DATE}}
|
|
@@ -99,9 +134,9 @@ npm run build && npx vitest run
|
|
|
99
134
|
|
|
100
135
|
---
|
|
101
136
|
|
|
102
|
-
## Session Memory
|
|
137
|
+
## Optional Session Memory References
|
|
103
138
|
|
|
104
|
-
|
|
139
|
+
When the active harness provides durable memory, record its references here:
|
|
105
140
|
|
|
106
141
|
- `{{MEMORY_KEY_1}}` — {{MEMORY_KEY_1_DESCRIPTION}}
|
|
107
142
|
- `{{MEMORY_KEY_2}}` — {{MEMORY_KEY_2_DESCRIPTION}}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: vibe.contract
|
|
3
|
-
description: API contract
|
|
3
|
+
description: Use when a SPEC API contract may differ from implementation or endpoint and schema drift must be detected.
|
|
4
4
|
argument-hint: "extract | check | diff [feature-name]"
|
|
5
5
|
user-invocable: true
|
|
6
6
|
---
|
|
@@ -54,32 +54,9 @@ Execute the bundled implementation below with subcommand: `$ARGUMENTS`
|
|
|
54
54
|
|
|
55
55
|
## Storage Format
|
|
56
56
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
<feature>.snapshot.md # implementation snapshot at last check (for diff)
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
### Contract schema (frontmatter)
|
|
64
|
-
|
|
65
|
-
```yaml
|
|
66
|
-
---
|
|
67
|
-
feature: string
|
|
68
|
-
extracted-from: path/to/spec.md
|
|
69
|
-
extracted-at: ISO timestamp
|
|
70
|
-
endpoints:
|
|
71
|
-
- method: GET | POST | PUT | DELETE | PATCH
|
|
72
|
-
path: /users/:id
|
|
73
|
-
request:
|
|
74
|
-
params: { id: string }
|
|
75
|
-
body: null
|
|
76
|
-
response:
|
|
77
|
-
200: { id: string, email: string, ... }
|
|
78
|
-
404: { error: string }
|
|
79
|
-
required: [id, email]
|
|
80
|
-
- ...
|
|
81
|
-
---
|
|
82
|
-
```
|
|
57
|
+
계약 파일의 저장 위치와 frontmatter 스키마는 아래 **Storage Contract** 절이 SSOT다.
|
|
58
|
+
이 문서 안에서 스키마를 두 번 정의하지 않는다 — 과거 이 자리에 있던 축약본은 `id`·`kind`·
|
|
59
|
+
`source-spec-hash` 가 빠진 손실 버전이었다.
|
|
83
60
|
|
|
84
61
|
## Integration with /vibe.verify
|
|
85
62
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: vibe.create-prd
|
|
3
3
|
invocation: [auto, chain]
|
|
4
4
|
tier: standard
|
|
5
|
-
description: "
|
|
5
|
+
description: "Use when a product idea or research input must become an implementation-ready PRD covering the problem, objectives, segments, value propositions, solution, and release plan."
|
|
6
6
|
triggers: [prd, product requirements, feature spec, requirements document]
|
|
7
7
|
priority: 60
|
|
8
8
|
chain-next: [vibe.user-personas, vibe.prioritization]
|
|
@@ -10,6 +10,13 @@ chain-next: [vibe.user-personas, vibe.prioritization]
|
|
|
10
10
|
|
|
11
11
|
# Create a Product Requirements Document
|
|
12
12
|
|
|
13
|
+
## Done Criteria
|
|
14
|
+
|
|
15
|
+
- [ ] PRD 파일이 요청된 출력 경로에 존재한다.
|
|
16
|
+
- [ ] 8개 필수 섹션이 모두 비어 있지 않다.
|
|
17
|
+
- [ ] 목표마다 측정 가능한 성공 지표가 있다.
|
|
18
|
+
- [ ] release 범위와 제외 범위가 명시되어 있다.
|
|
19
|
+
|
|
13
20
|
> Based on the PRD template from [Product Compass](https://www.productcompass.pm/p/prd-template) by Pawel Huryn (MIT License).
|
|
14
21
|
|
|
15
22
|
## Purpose
|
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: vibe.design
|
|
3
|
-
description:
|
|
3
|
+
description: UI 작업 전에 시각 품질 SSOT가 필요하거나 DESIGN.md를 생성·검증·동기화할 때 사용한다. Figma와 독립적으로 동작한다.
|
|
4
4
|
argument-hint: "init [--from=interview|code|reference|figma] | lint | verify | sync | preview"
|
|
5
5
|
user-invocable: true
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# /vibe.design
|
|
9
9
|
|
|
10
|
+
## 완료 기준
|
|
11
|
+
|
|
12
|
+
- [ ] DESIGN.md가 프로젝트 루트에 존재한다.
|
|
13
|
+
- [ ] 선택한 subcommand의 lint 또는 drift 검사가 통과한다.
|
|
14
|
+
- [ ] 색상·타이포그래피·간격 token에 placeholder가 없다.
|
|
15
|
+
- [ ] `init --from=interview`이면 `.vibe/design-context.json`이 존재한다.
|
|
16
|
+
|
|
10
17
|
**vibe 의 세 번째 SSOT — 시각 품질 계약 문서(`DESIGN.md`)** 의 라이프사이클을 전담한다.
|
|
11
18
|
|
|
12
19
|
> `CLAUDE.md`(코드) · `AGENTS.md`(빌드) 에 이은 시각 규약. **Figma 에 종속되지 않는다** — Figma 는 4 가지 입력 소스 중 하나.
|
|
@@ -35,7 +42,7 @@ user-invocable: true
|
|
|
35
42
|
|
|
36
43
|
## Process
|
|
37
44
|
|
|
38
|
-
> **⏱️ Timer**: 시작 시
|
|
45
|
+
> **⏱️ Timer**: 시작 시 시스템 시각을 조회해 `{start_time}` 으로 기록.
|
|
39
46
|
|
|
40
47
|
### Subcommand: `init`
|
|
41
48
|
|
|
@@ -58,9 +65,15 @@ user-invocable: true
|
|
|
58
65
|
|
|
59
66
|
#### `--from=interview` 흐름
|
|
60
67
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
68
|
+
Read `references/design-context.md` for codebase signal collection, audience,
|
|
69
|
+
brand, aesthetic, constraint questions, `.vibe/design-context.json` schema,
|
|
70
|
+
and update semantics.
|
|
71
|
+
|
|
72
|
+
1. 기존 코드 신호와 `.vibe/design-context.json`을 먼저 수집한다.
|
|
73
|
+
2. 사용자가 9 섹션을 순차 답변 (브랜드 톤, 컬러, 폰트, 컴포넌트 스타일, 그리드, 그림자/뎁스, 금기, 브레이크포인트, 에이전트 가이드).
|
|
74
|
+
3. design-context의 audience/brand/aesthetic/constraints를 같은 인터뷰에서 수집해 `.vibe/design-context.json`에 저장한다. 기존 파일은 field-level replacement, `createdAt` 보존, `updatedAt` 갱신 규칙을 따른다.
|
|
75
|
+
4. 빈 DESIGN.md 섹션은 템플릿 기본값(주석)으로 채운다.
|
|
76
|
+
5. `DESIGN.md` 저장 + `lint` 자동 실행 → P1 없으면 성공.
|
|
64
77
|
|
|
65
78
|
#### `--from=code` 흐름
|
|
66
79
|
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: design-context-reference
|
|
3
|
+
user-invocable: false
|
|
4
|
+
invocation: [auto]
|
|
5
|
+
tier: standard
|
|
6
|
+
description: "Gather and store project design context — target audience, brand personality, aesthetic direction, constraints. Used by other design-* skills. Use when design-teach, design-setup, design-context."
|
|
7
|
+
triggers: [design-teach, design-setup, design-context]
|
|
8
|
+
priority: 50
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Design Teach — Project Design Context Gathering
|
|
12
|
+
|
|
13
|
+
Collect project-specific design context so all design-* skills produce tailored, brand-aware results. Saves to `.vibe/design-context.json`.
|
|
14
|
+
|
|
15
|
+
## Usage
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
/design-teach # Interactive context gathering
|
|
19
|
+
/design-teach --update # Update existing context
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Process
|
|
23
|
+
|
|
24
|
+
### Step 1: Auto-Explore Codebase
|
|
25
|
+
|
|
26
|
+
Before asking questions, automatically gather existing signals:
|
|
27
|
+
|
|
28
|
+
| Signal | Where to Look |
|
|
29
|
+
|--------|---------------|
|
|
30
|
+
| CSS variables / tokens | `*.css`, `tailwind.config.*`, `theme.*` |
|
|
31
|
+
| Color palette | Existing color definitions, brand assets |
|
|
32
|
+
| Typography | Font imports, font-family declarations |
|
|
33
|
+
| Component library | `package.json` dependencies (MUI, Chakra, shadcn, etc.) |
|
|
34
|
+
| Design system | `.vibe/design-system/*/MASTER.md` |
|
|
35
|
+
| Existing context | `.vibe/design-context.json` (if updating) |
|
|
36
|
+
|
|
37
|
+
### Step 2: Ask Clarifying Questions
|
|
38
|
+
|
|
39
|
+
Present findings from Step 1, then ask what's missing:
|
|
40
|
+
|
|
41
|
+
**1. Target Audience**
|
|
42
|
+
- Who are the primary users? (developers, consumers, enterprise, internal)
|
|
43
|
+
- Technical sophistication? (tech-savvy, general public, mixed)
|
|
44
|
+
- Usage context? (desktop office, mobile on-the-go, both)
|
|
45
|
+
|
|
46
|
+
**2. Brand Personality**
|
|
47
|
+
- How should the product feel? (professional, playful, minimal, bold, warm)
|
|
48
|
+
- Reference products with similar feel? (e.g., "Linear-like", "Notion-like")
|
|
49
|
+
- Any brand guidelines or style guide URL?
|
|
50
|
+
|
|
51
|
+
**3. Aesthetic Direction**
|
|
52
|
+
- Visual density preference? (spacious, balanced, dense)
|
|
53
|
+
- Color mood? (warm, cool, neutral, vibrant)
|
|
54
|
+
- Typography mood? (modern sans, classic serif, monospace-technical)
|
|
55
|
+
|
|
56
|
+
**4. Constraints**
|
|
57
|
+
- Accessibility requirements? (WCAG AA, AAA, specific needs)
|
|
58
|
+
- Supported devices? (desktop-only, mobile-first, responsive)
|
|
59
|
+
- Dark mode required?
|
|
60
|
+
- Performance budget? (target LCP, bundle size limits)
|
|
61
|
+
|
|
62
|
+
### Step 3: Save Context
|
|
63
|
+
|
|
64
|
+
Persist the gathered context to `.vibe/design-context.json` with the harness's file-editing capability.
|
|
65
|
+
|
|
66
|
+
**Schema (v1):**
|
|
67
|
+
|
|
68
|
+
```json
|
|
69
|
+
{
|
|
70
|
+
"$schema": "design-context-v1",
|
|
71
|
+
"createdAt": "ISO-8601",
|
|
72
|
+
"updatedAt": "ISO-8601",
|
|
73
|
+
"audience": {
|
|
74
|
+
"primary": "Description of target users",
|
|
75
|
+
"context": "Usage environment (desktop/mobile/mixed)",
|
|
76
|
+
"expertise": "Technical level (beginner/intermediate/expert)"
|
|
77
|
+
},
|
|
78
|
+
"brand": {
|
|
79
|
+
"personality": ["3-5 adjectives"],
|
|
80
|
+
"tone": "formal | casual | playful | professional (guideline, free text allowed)",
|
|
81
|
+
"existingAssets": "Path to existing brand guidelines (optional)"
|
|
82
|
+
},
|
|
83
|
+
"aesthetic": {
|
|
84
|
+
"style": "minimal | bold | elegant | playful | corporate (guideline, free text allowed)",
|
|
85
|
+
"colorMood": "warm | cool | neutral | vibrant | muted (guideline, free text allowed)",
|
|
86
|
+
"typographyMood": "modern | classic | geometric | humanist (guideline, free text allowed)",
|
|
87
|
+
"references": ["Reference site/app URLs"]
|
|
88
|
+
},
|
|
89
|
+
"constraints": {
|
|
90
|
+
"accessibility": "AA | AAA",
|
|
91
|
+
"performance": "core-web-vitals | balanced | unlimited",
|
|
92
|
+
"browsers": ["chrome", "safari", "firefox", "edge"],
|
|
93
|
+
"devices": ["mobile", "tablet", "desktop"]
|
|
94
|
+
},
|
|
95
|
+
"detectedStack": {
|
|
96
|
+
"framework": "Detected framework",
|
|
97
|
+
"componentLibrary": "Detected component library",
|
|
98
|
+
"styling": "Detected styling approach",
|
|
99
|
+
"fonts": ["Detected fonts"]
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
> **Note**: `tone`, `style`, `colorMood`, `typographyMood` values are suggestions, not closed enums. Users can enter free text.
|
|
105
|
+
|
|
106
|
+
> **Size limit**: design-context.json should not exceed 10KB. The `references` array is capped at 5 items.
|
|
107
|
+
|
|
108
|
+
### Step 4: Rerun Semantics
|
|
109
|
+
|
|
110
|
+
When `/design-teach` is run again and `design-context.json` already exists:
|
|
111
|
+
|
|
112
|
+
1. Read the existing file in full with the harness's file-reading capability
|
|
113
|
+
2. **Show existing values as defaults** for each question ("Current: professional, clean — do you want to change this?")
|
|
114
|
+
3. User replies "keep" or leaves blank → that field is preserved
|
|
115
|
+
4. New value entered → only that field is replaced (**field-level replacement, not merge**)
|
|
116
|
+
5. `createdAt` is always preserved; only `updatedAt` is updated to the current time
|
|
117
|
+
|
|
118
|
+
### Step 5: Other Skills Reference This Context
|
|
119
|
+
|
|
120
|
+
Each design-* skill does the following when it runs:
|
|
121
|
+
|
|
122
|
+
```
|
|
123
|
+
1. Read `.vibe/design-context.json`
|
|
124
|
+
2. File not found → print "Run /design-teach first for better results" → continue with defaults
|
|
125
|
+
3. Parse failure (invalid JSON) → warn "design-context.json parse failed" + continue with defaults → recommend re-running /design-teach
|
|
126
|
+
4. Success → apply context to analysis criteria
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## Design Workflow Integration
|
|
130
|
+
|
|
131
|
+
Design skills are integrated into 3 phases of the vibe workflow:
|
|
132
|
+
|
|
133
|
+
```
|
|
134
|
+
SPEC Phase:
|
|
135
|
+
① Check design-context.json (recommend /design-teach if missing)
|
|
136
|
+
② design-system-gen (industry analysis → design system → layout)
|
|
137
|
+
|
|
138
|
+
REVIEW Phase:
|
|
139
|
+
③ /design-review audit (technical quality check)
|
|
140
|
+
④ /design-review critique (UX review)
|
|
141
|
+
⑤ design-reviewer (AI slop + anti-pattern detection)
|
|
142
|
+
|
|
143
|
+
PRE-SHIP Phase:
|
|
144
|
+
⑥ /design-refine normalize (design system alignment)
|
|
145
|
+
⑦ /design-refine polish (final pass)
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
## How Other Skills Use This
|
|
149
|
+
|
|
150
|
+
| Skill | Context Usage |
|
|
151
|
+
|-------|---------------|
|
|
152
|
+
| `/design-review audit` | Weight findings by audience constraints (a11y level, devices) |
|
|
153
|
+
| `/design-review critique` | Adjust persona priorities by target audience |
|
|
154
|
+
| `/design-refine polish` | Apply brand-appropriate micro-interactions |
|
|
155
|
+
| `/design-refine normalize` | Use detected token system for replacement mapping |
|
|
156
|
+
| `/design-refine distill` | Preserve brand-expressive elements based on personality |
|
|
157
|
+
|
|
158
|
+
## Output Format
|
|
159
|
+
|
|
160
|
+
```markdown
|
|
161
|
+
## Design Context: {project}
|
|
162
|
+
|
|
163
|
+
### Auto-Detected
|
|
164
|
+
- Framework: Next.js 15
|
|
165
|
+
- Styling: Tailwind CSS + shadcn/ui
|
|
166
|
+
- Fonts: Inter (heading), Inter (body)
|
|
167
|
+
- Tokens: 24 CSS variables found
|
|
168
|
+
|
|
169
|
+
### User Provided
|
|
170
|
+
- Audience: B2B SaaS, mixed technical level
|
|
171
|
+
- Brand: Professional, clean (like Linear)
|
|
172
|
+
- Density: Balanced
|
|
173
|
+
- A11y: WCAG AA
|
|
174
|
+
- Dark mode: Required
|
|
175
|
+
|
|
176
|
+
### Saved
|
|
177
|
+
✅ .vibe/design-context.json updated
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
## Important
|
|
181
|
+
|
|
182
|
+
- **Non-destructive**: Only creates/updates the context file. No code changes.
|
|
183
|
+
- **Incremental**: Running `--update` preserves existing answers, only asks about gaps.
|
|
184
|
+
- **Foundation**: Run this first before other design-* skills for best results.
|
|
@@ -10,6 +10,13 @@ priority: 50
|
|
|
10
10
|
|
|
11
11
|
# Design Refine — Distill / Normalize / Polish
|
|
12
12
|
|
|
13
|
+
## Done Criteria
|
|
14
|
+
|
|
15
|
+
- [ ] 요청된 distill·normalize·polish pass가 변경 파일에 적용되어 있다.
|
|
16
|
+
- [ ] 새 hardcoded visual value가 추가되지 않았다.
|
|
17
|
+
- [ ] 대상 프로젝트의 lint와 관련 UI 테스트가 통과한다.
|
|
18
|
+
- [ ] 변경된 token 참조가 DESIGN.md와 일치한다.
|
|
19
|
+
|
|
13
20
|
Modifying design-improvement passes. Mode selected by the first argument; default runs the full pipeline in order: **distill → normalize → polish**.
|
|
14
21
|
|
|
15
22
|
## Usage
|