@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.
Files changed (120) hide show
  1. package/README.en.md +1 -1
  2. package/README.md +1 -1
  3. package/dist/cli/postinstall/constants.d.ts.map +1 -1
  4. package/dist/cli/postinstall/constants.js +10 -9
  5. package/dist/cli/postinstall/constants.js.map +1 -1
  6. package/hooks/scripts/__tests__/.vibe/command-log.txt +3 -3
  7. package/package.json +2 -2
  8. package/skills/vibe/SKILL.md +27 -86
  9. package/skills/vibe/references/routing-examples.md +85 -0
  10. package/skills/vibe.agents-md/SKILL.md +12 -10
  11. package/skills/vibe.analyze/SKILL.md +22 -211
  12. package/skills/vibe.analyze/references/mode1-feature.md +81 -0
  13. package/skills/vibe.analyze/references/mode2-document.md +50 -0
  14. package/skills/vibe.analyze/references/mode3-website.md +47 -0
  15. package/skills/vibe.analyze/references/mode4-quality.md +35 -0
  16. package/skills/vibe.brand-assets/SKILL.md +2 -2
  17. package/skills/vibe.brand-assets/references/mobile-assets.md +6 -0
  18. package/skills/vibe.capability-loop/SKILL.md +14 -80
  19. package/skills/vibe.capability-loop/references/escalate.md +86 -0
  20. package/skills/vibe.chub-usage/SKILL.md +3 -132
  21. package/skills/vibe.clone/SKILL.md +43 -358
  22. package/skills/vibe.clone/references/phase-commands.md +118 -0
  23. package/skills/vibe.clone/references/setup-and-layout.md +34 -0
  24. package/skills/vibe.clone/references/verification-loops.md +64 -0
  25. package/skills/vibe.commit-push-pr/SKILL.md +10 -4
  26. package/skills/vibe.context7-usage/SKILL.md +3 -99
  27. package/skills/vibe.continue/SKILL.md +17 -7
  28. package/skills/{vibe.handoff → vibe.continue}/agents/context-summarizer.md +1 -1
  29. package/skills/{vibe.handoff → vibe.continue}/agents/document-writer.md +1 -1
  30. package/skills/{vibe.handoff → vibe.continue}/agents/state-collector.md +1 -1
  31. package/skills/{vibe.handoff → vibe.continue}/agents/verifier.md +1 -1
  32. package/skills/{vibe.handoff/rubrics/completeness.md → vibe.continue/references/handoff-completeness.md} +1 -1
  33. package/skills/{vibe.handoff/templates → vibe.continue/references}/handoff.md +37 -2
  34. package/skills/vibe.contract/SKILL.md +4 -27
  35. package/skills/vibe.create-prd/SKILL.md +8 -1
  36. package/skills/vibe.design/SKILL.md +18 -5
  37. package/skills/vibe.design/references/design-context.md +184 -0
  38. package/skills/vibe.design-refine/SKILL.md +7 -0
  39. package/skills/vibe.design-review/SKILL.md +7 -0
  40. package/skills/vibe.design-teach/SKILL.md +2 -175
  41. package/skills/vibe.devlog/SKILL.md +14 -11
  42. package/skills/vibe.devlog/references/auto-push.md +10 -0
  43. package/skills/vibe.docs/SKILL.md +27 -198
  44. package/skills/vibe.docs/references/agent.md +55 -0
  45. package/skills/vibe.docs/references/arch.md +28 -0
  46. package/skills/vibe.docs/references/codemaps.md +17 -0
  47. package/skills/vibe.docs/references/diagram.md +24 -0
  48. package/skills/vibe.docs/references/guide.md +23 -0
  49. package/skills/vibe.docs/references/readme.md +45 -0
  50. package/skills/vibe.docs/references/release.md +31 -0
  51. package/skills/vibe.documentation-provider/SKILL.md +22 -0
  52. package/skills/vibe.documentation-provider/references/chub.md +141 -0
  53. package/skills/vibe.documentation-provider/references/context7.md +107 -0
  54. package/skills/vibe.educational-content/SKILL.md +7 -0
  55. package/skills/vibe.event/SKILL.md +47 -146
  56. package/skills/vibe.event/references/comms.md +173 -0
  57. package/skills/vibe.event/references/operations.md +208 -0
  58. package/skills/vibe.event/references/orchestration-legacy.md +97 -0
  59. package/skills/vibe.event/references/planning.md +145 -0
  60. package/skills/vibe.event-comms/SKILL.md +3 -165
  61. package/skills/vibe.event-ops/SKILL.md +3 -200
  62. package/skills/vibe.event-planning/SKILL.md +3 -137
  63. package/skills/vibe.figma/SKILL.md +26 -692
  64. package/skills/vibe.figma/references/branch1-read-convention.md +82 -0
  65. package/skills/vibe.figma/references/branch2-read-standalone.md +69 -0
  66. package/skills/vibe.figma/references/branch3-write.md +122 -0
  67. package/skills/vibe.figma/references/core-implementation.md +453 -0
  68. package/skills/vibe.git-worktree/SKILL.md +2 -6
  69. package/skills/vibe.git-worktree/references/troubleshooting.md +9 -0
  70. package/skills/vibe.handoff/SKILL.md +2 -103
  71. package/skills/vibe.harness/SKILL.md +17 -12
  72. package/skills/vibe.image/SKILL.md +8 -1
  73. package/skills/vibe.llm/SKILL.md +8 -1
  74. package/skills/vibe.loop/SKILL.md +9 -11
  75. package/skills/vibe.loop/references/install-adapters.md +10 -0
  76. package/skills/vibe.presentation/SKILL.md +7 -0
  77. package/skills/vibe.prioritization/SKILL.md +7 -0
  78. package/skills/vibe.priority-todos/SKILL.md +2 -57
  79. package/skills/vibe.react-best-practices/SKILL.md +1 -1
  80. package/skills/vibe.reason/SKILL.md +9 -2
  81. package/skills/vibe.regress/SKILL.md +6 -28
  82. package/skills/vibe.regress/templates/{test-jest.md → test-template.md} +1 -0
  83. package/skills/vibe.review/SKILL.md +35 -38
  84. package/skills/vibe.review/references/priority-todos.md +66 -0
  85. package/skills/vibe.review/references/ui-ux-review.md +39 -0
  86. package/skills/vibe.run/SKILL.md +57 -656
  87. package/skills/vibe.run/references/arch-guard.md +178 -0
  88. package/skills/vibe.run/references/e2e-and-autofix.md +40 -0
  89. package/skills/vibe.run/references/exec-plan.md +145 -0
  90. package/skills/vibe.run/references/guidelines-and-tools.md +84 -0
  91. package/skills/vibe.run/references/process-steps.md +179 -0
  92. package/skills/vibe.run/references/restraint.md +66 -0
  93. package/skills/vibe.scaffold/SKILL.md +9 -13
  94. package/skills/vibe.scaffold/references/clean-architecture.md +17 -0
  95. package/skills/vibe.spec/SKILL.md +12 -8
  96. package/skills/vibe.spec/references/legacy-artifacts.md +6 -0
  97. package/skills/vibe.test/SKILL.md +93 -70
  98. package/skills/vibe.test/references/report-template.md +101 -0
  99. package/skills/vibe.tool-fallback/SKILL.md +10 -32
  100. package/skills/vibe.tool-fallback/references/external-llm.md +10 -0
  101. package/skills/vibe.tool-fallback/references/file-lookup.md +9 -0
  102. package/skills/vibe.tool-fallback/references/web-search.md +11 -0
  103. package/skills/vibe.trace/SKILL.md +2 -264
  104. package/skills/vibe.ui-ux-pro-max/SKILL.md +1 -3
  105. package/skills/vibe.ui-ux-pro-max/references/charts-and-data.md +7 -0
  106. package/skills/vibe.user-personas/SKILL.md +8 -1
  107. package/skills/vibe.verify/SKILL.md +30 -4
  108. package/skills/vibe.verify/references/trace-mode.md +271 -0
  109. package/skills/vibe.regress/templates/test-vitest.md +0 -30
  110. /package/skills/{vibe.design-teach/rubrics → vibe.design/references}/brand-personality.md +0 -0
  111. /package/skills/{vibe.design-teach → vibe.design}/templates/design-context.json +0 -0
  112. /package/skills/{vibe.context7-usage/rubrics/when-to-use.md → vibe.documentation-provider/references/context7-when-to-use.md} +0 -0
  113. /package/skills/{vibe.event-ops/rubrics → vibe.event/references}/contingency.md +0 -0
  114. /package/skills/{vibe.event-ops/templates/d-day-checklist.md → vibe.event/references/d-day-checklist-template.md} +0 -0
  115. /package/skills/{vibe.event-comms/templates/email-invite.md → vibe.event/references/email-invite-template.md} +0 -0
  116. /package/skills/{vibe.event-planning/templates/event-plan.md → vibe.event/references/event-plan-template.md} +0 -0
  117. /package/skills/{vibe.event-comms/templates/sns-post.md → vibe.event/references/sns-post-template.md} +0 -0
  118. /package/skills/{vibe.event-planning/rubrics → vibe.event/references}/timeline.md +0 -0
  119. /package/skills/{vibe.priority-todos/templates/todo-board.md → vibe.review/references/todo-board-template.md} +0 -0
  120. /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: "Commit, push, and create PR in one go. Auto-activates on commit, PR, push keywords."
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
- - **No direct commits/pushes to main/master**
53
- - If on main: create a new branch first
54
- - **Never** `--force` push to main/master
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
- # Context7 Usage
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: Restore previous session context for continuitymemory load, context restore, resume from last checkpoint.
4
- argument-hint: (no arguments)
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
- 1. Calls `core_start_session` to load project memories
21
- 2. Restores previous conversation context
22
- 3. Resumes work from last checkpoint
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: `save_memory``/new` → `/vibe.continue` (컨텍스트 리셋 후 즉시 복원)
28
- - Combine with the `handoff` skill for detailed handover: Handoff writes a manual `HANDOFF.md` (work progress + notes + file list) before a session ends; `/vibe.continue` automatically restores memory + session state at the start of the next one.
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
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: context-summarizer
3
3
  role: Summarizes decisions made during the session and their rationale
4
- tools: [Read, Bash]
4
+ capabilities: [full-file-reading, shell-command-execution]
5
5
  ---
6
6
 
7
7
  # Context Summarizer
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: document-writer
3
3
  role: Writes HANDOFF.md from collected state data and session summary
4
- tools: [Write, Read, Bash]
4
+ capabilities: [file-editing, full-file-reading, shell-command-execution]
5
5
  ---
6
6
 
7
7
  # Document Writer
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: state-collector
3
3
  role: Gathers current branch, commits, test status, and open TODOs for handoff
4
- tools: [Bash, Glob, Grep, Read]
4
+ capabilities: [shell-command-execution, file-pattern-search, text-search, full-file-reading]
5
5
  ---
6
6
 
7
7
  # State Collector
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: verifier
3
3
  role: Checks handoff completeness against the HANDOFF.md rubric
4
- tools: [Read, Bash]
4
+ capabilities: [full-file-reading, shell-command-execution]
5
5
  ---
6
6
 
7
7
  # Verifier
@@ -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
- - Memory keys saved via `core_save_memory`
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 Keys
137
+ ## Optional Session Memory References
103
138
 
104
- The following keys were saved with `core_save_memory`:
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 drift detection extract contracts from SPEC, compare to implementation, fail on drift
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
- .vibe/contracts/
59
- <feature>.md # extracted contract (SSOT)
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: "Create a Product Requirements Document using a comprehensive 8-section template covering problem, objectives, segments, value propositions, solution, and release planning."
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: DESIGN.md(시각 품질 SSOT) 생성·검증·드리프트 검사·동기화. Figma 독립.
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**: 시작 시 `getCurrentTime` 호출, `{start_time}` 으로 기록.
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
- 1. 사용자가 9 섹션을 순차 답변 (브랜드 톤, 컬러, 폰트, 컴포넌트 스타일, 그리드, 그림자/뎁스, 금기, 브레이크포인트, 에이전트 가이드)
62
- 2. 섹션은 템플릿 기본값(주석) 으로 채움
63
- 3. `DESIGN.md` 저장 + `lint` 자동 실행 → P1 없으면 성공
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