@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
@@ -1,270 +1,8 @@
1
1
  ---
2
2
  name: vibe.trace
3
- description: Generate and display Requirements Traceability Matrix (RTM) REQ SPEC Feature Code 관계 추적
3
+ description: 요구사항과 구현의 추적 관계를 확인하거나 RTM 필요할 vibe.verify trace mode를 로드하는 호환 진입점이다.
4
4
  argument-hint: "feature-name [--html] [--save]"
5
5
  user-invocable: true
6
6
  ---
7
7
 
8
- # /vibe.trace
9
-
10
- Generate and display Requirements Traceability Matrix (RTM).
11
-
12
- ## Usage
13
-
14
- ```bash
15
- /vibe.trace "feature-name" # Generate RTM for feature
16
- /vibe.trace "feature-name" --html # Output as HTML
17
- /vibe.trace "feature-name" --save # Save to file
18
- ```
19
-
20
- > **⏱️ Timer**: Call `getCurrentTime` tool at the START. Record the result as `{start_time}`.
21
-
22
- ## Description
23
-
24
- Requirements Traceability Matrix (RTM) tracks the relationship between:
25
- - **Requirements** (REQ-xxx-xxx)
26
- - **SPEC sections** (Phase tasks)
27
- - **Feature scenarios** (BDD)
28
- - **Test files** (unit/integration tests)
29
-
30
- ## Process
31
-
32
- ### 1. Load Files
33
-
34
- **Search order (check BOTH file AND folder):**
35
-
36
- ```
37
- Step 1: Check if SPLIT structure exists (folder)
38
- 📁 .vibe/specs/{feature-name}/ → Folder with _index.md + phase files
39
- 📁 .vibe/features/{feature-name}/ → Folder with _index.feature + phase files
40
-
41
- Step 2: If no folder, check single file
42
- 📄 .vibe/specs/{feature-name}.md → Single SPEC file
43
- 📄 .vibe/features/{feature-name}.feature → Single Feature file
44
-
45
- Step 3: If neither exists → Error
46
- ```
47
-
48
- **Split structure (folder) detected:**
49
- ```
50
- 📁 .vibe/specs/{feature-name}/
51
- ├── _index.md → Master SPEC (read first)
52
- ├── phase-1-{name}.md → Phase 1 SPEC
53
- └── ...
54
-
55
- 📁 .vibe/features/{feature-name}/
56
- ├── _index.feature → Master Feature (read first)
57
- ├── phase-1-{name}.feature → Phase 1 scenarios
58
- └── ...
59
-
60
- → Load all phase files, generate RTM across all phases
61
- ```
62
-
63
- **Single file detected:**
64
- ```
65
- 📄 .vibe/specs/{feature-name}.md → SPEC
66
- 📄 .vibe/features/{feature-name}.feature → Feature
67
- ```
68
-
69
- **Additional (auto-detect):**
70
- ```
71
- 📄 src/**/*.test.ts → Tests (auto-detect)
72
- ```
73
-
74
- **Error if NEITHER file NOR folder found:**
75
- ```
76
- ❌ SPEC not found. Searched:
77
- - .vibe/specs/{feature-name}/ (folder)
78
- - .vibe/specs/{feature-name}.md (file)
79
-
80
- Run /vibe.spec "{feature-name}" first.
81
- ```
82
-
83
- ### 2. Extract Mappings
84
-
85
- For each requirement ID (REQ-xxx-xxx):
86
- 1. Find corresponding SPEC section
87
- 2. Find matching Feature scenario
88
- 3. Find related test file
89
-
90
- ### 3. Calculate Coverage
91
-
92
- ```
93
- Coverage = (Full coverage items / Total requirements) × 100%
94
-
95
- Full coverage = Has SPEC + Feature + Test
96
- Partial = Missing one or more
97
- None = Only in SPEC
98
- ```
99
-
100
- ### 4. Output RTM
101
-
102
- ```
103
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
104
- 📊 REQUIREMENTS TRACEABILITY MATRIX: {feature-name}
105
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
106
-
107
- ## Summary
108
- | Metric | Value |
109
- |-------------------|----------|
110
- | Total Requirements| 10 |
111
- | SPEC Coverage | 10/10 |
112
- | Feature Coverage | 8/10 |
113
- | Test Coverage | 6/10 |
114
- | **Overall** | **60%** |
115
-
116
- ## Traceability Matrix
117
-
118
- | Requirement | SPEC | Feature | Test | Coverage |
119
- |-------------|------|---------|------|----------|
120
- | REQ-login-001 | ✅ Phase 1 | ✅ Scenario 1 | ✅ login.test.ts | ✅ Full |
121
- | REQ-login-002 | ✅ Phase 1 | ✅ Scenario 2 | ❌ | ⚠️ Partial |
122
- | REQ-login-003 | ✅ Phase 2 | ❌ | ❌ | ❌ None |
123
-
124
- ## Uncovered Requirements
125
-
126
- The following requirements lack full coverage:
127
-
128
- - **REQ-login-002**: Password validation
129
- - Missing: Test file
130
-
131
- - **REQ-login-003**: Remember me functionality
132
- - Missing: Feature scenario, Test file
133
-
134
- ## Recommendations
135
-
136
- ⚠️ Coverage is at 60%. Consider:
137
- - Add Feature scenarios for uncovered requirements
138
- - Add test cases for uncovered requirements
139
-
140
- ⏱️ Started: {start_time}
141
- ⏱️ Completed: {getCurrentTime 결과}
142
-
143
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
144
- ```
145
-
146
- ## Example
147
-
148
- ```
149
- User: /vibe.trace "login"
150
-
151
- Claude:
152
- 📊 Generating RTM for "login"...
153
-
154
- Loading files:
155
- ✅ SPEC: .vibe/specs/login.md (5 requirements)
156
- ✅ Feature: .vibe/features/login.feature (4 scenarios)
157
- ✅ Tests: 3 test files found
158
-
159
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
160
- 📊 REQUIREMENTS TRACEABILITY MATRIX: login
161
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
162
-
163
- ## Summary
164
- | Metric | Value |
165
- |-------------------|----------|
166
- | Total Requirements| 5 |
167
- | SPEC Coverage | 5/5 |
168
- | Feature Coverage | 4/5 |
169
- | Test Coverage | 3/5 |
170
- | **Overall** | **60%** |
171
-
172
- ## Traceability Matrix
173
-
174
- | Requirement | SPEC | Feature | Test | Coverage |
175
- |-------------|------|---------|------|----------|
176
- | REQ-login-001 | ✅ | ✅ | ✅ | ✅ Full |
177
- | REQ-login-002 | ✅ | ✅ | ✅ | ✅ Full |
178
- | REQ-login-003 | ✅ | ✅ | ✅ | ✅ Full |
179
- | REQ-login-004 | ✅ | ✅ | ❌ | ⚠️ Partial |
180
- | REQ-login-005 | ✅ | ❌ | ❌ | ❌ None |
181
-
182
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
183
- ```
184
-
185
- ## Tool Integration
186
-
187
- The RTM generation uses core tools:
188
-
189
- ```bash
190
- # Generate RTM (generateTraceabilityMatrix is synchronous — no .then())
191
- node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => { const m = t.generateTraceabilityMatrix('login', {projectPath: process.cwd()}); console.log(t.formatMatrixAsMarkdown(m)); })"
192
-
193
- # Generate HTML
194
- node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => { const m = t.generateTraceabilityMatrix('login', {projectPath: process.cwd()}); console.log(t.formatMatrixAsHtml(m)); })"
195
- ```
196
-
197
- > **Note:** Default SPEC path is `.vibe/specs/<feature>.md` (falls back to `.claude/vibe/specs/` then `.claude/specs/` for legacy projects).
198
- > `status === 'empty'` means the gate MUST be treated as failed/not-applicable, never as 100% pass.
199
-
200
- ## Post-Trace Gates
201
-
202
- After `/vibe.trace` completes and the RTM is displayed, two downstream mechanisms consume the result.
203
-
204
- ### Empty-result gate
205
-
206
- `generateTraceabilityMatrix` returns `status: 'empty'` when no `REQ-<feature>-NNN` IDs are found in the SPEC. This state **must be treated as a gate failure**, not as 100% coverage. When the matrix status is `empty`, report it explicitly and do not proceed as if the feature is verified.
207
-
208
- ```
209
- RTM status === 'empty'
210
- → Coverage gate: FAILED (no requirements to trace)
211
- → Action: run /vibe.spec to add REQ-IDs before re-running /vibe.trace
212
- ```
213
-
214
- ### Run-ledger flow
215
-
216
- `/vibe.verify` records its outcome through `hooks/scripts/verify-ledger.js`, binding the current run ID and command-result evidence. This writes `verifyPassed` and `verifyAt` into `.vibe/metrics/run-ledger.json`. Downstream gates consume this record:
217
-
218
- | Gate | Behavior |
219
- |------|----------|
220
- | `auto-commit` | Commits only when `verifyPassed === true` AND `verifyAt > runStarted` |
221
- | Stop hook | Warns when `runStarted && !verifyPassed`; blocks once if `verifyGate.mode === 'block'` |
222
-
223
- **To register a passing trace as verified**, run `/vibe.verify` after `/vibe.trace` reports acceptable coverage. The verify skill records the current run ID and command evidence internally — you do not invoke the ledger CLI manually.
224
-
225
- ```
226
- /vibe.trace "login" → RTM: 9/9 (100%)
227
- /vibe.verify "login" → runs checks → records pass + run ID + command results
228
- → .vibe/metrics/run-ledger.json updated
229
- auto-commit / Stop gate → verifyPassed=true, gate clears
230
- ```
231
-
232
- If `/vibe.verify` is skipped, `auto-commit` will log the skip reason and abort the commit.
233
-
234
- ## Options
235
-
236
- | Option | Description |
237
- |--------|-------------|
238
- | `--html` | Output as HTML file |
239
- | `--save` | Save to `.vibe/reports/{feature}-rtm.md` |
240
- | `--json` | Output as JSON |
241
-
242
- ## Coverage Targets
243
-
244
- | Coverage Level | Status |
245
- |----------------|--------|
246
- | 90-100% | ✅ Excellent - Ready for release |
247
- | 70-89% | ⚠️ Good - Minor gaps |
248
- | 50-69% | ⚠️ Fair - Significant gaps |
249
- | 0-49% | ❌ Poor - Major gaps |
250
-
251
- ---
252
-
253
- ## `.last-feature` 포인터 삭제 (워크플로 완주)
254
-
255
- ```
256
- /vibe.trace가 정상 완료되면 (RTM 출력 + 사용자 확인 후):
257
- Delete ".vibe/.last-feature"
258
-
259
- 이유: /vibe.trace는 vibe 워크플로의 마지막 Phase (Phase 7).
260
- 완주 후에는 다음 /vibe.spec 호출 시 "빈 시작" 또는 진행 중 목록에서 다른 feature를 시작해야 한다.
261
- 삭제하지 않으면 완료된 feature가 계속 "이어서?" 로 뜬다.
262
-
263
- 예외:
264
- - /vibe.trace가 에러로 중단된 경우 → 삭제하지 않음 (재시도 가능)
265
- - --save 또는 --html 플래그와 무관하게 항상 삭제
266
- ```
267
-
268
- ---
269
-
270
- ARGUMENTS: {feature-name}
8
+ Load `vibe.verify` in trace mode and preserve the feature name and all output flags.
@@ -79,9 +79,7 @@ Searchable database: 50+ styles, 97 color palettes, 57 font pairings, 99 UX guid
79
79
 
80
80
  ### 8. Charts & Data (LOW)
81
81
 
82
- - `chart-type` - Match chart type to data type
83
- - `color-guidance` - Use accessible color palettes
84
- - `data-table` - Provide table alternative for accessibility
82
+ For dashboards or other data visualizations only, read `references/charts-and-data.md`. UI calls without charts do not load it.
85
83
 
86
84
  ---
87
85
 
@@ -0,0 +1,7 @@
1
+ # Charts and Data Visualization
2
+
3
+ Load only when the requested UI includes charts or data visualization.
4
+
5
+ - `chart-type` — Match chart type to data type.
6
+ - `color-guidance` — Use accessible color palettes.
7
+ - `data-table` — Provide a table alternative for accessibility.
@@ -2,7 +2,7 @@
2
2
  name: vibe.user-personas
3
3
  invocation: [auto, chain]
4
4
  tier: standard
5
- description: "Create refined user personas from research data 3 personas with JTBD, pains, gains, and unexpected insights."
5
+ description: "Use when research data must be synthesized into three evidence-based user personas with JTBD, pains, gains, and unexpected insights."
6
6
  triggers: [persona, user persona, user profile, user segment, user research]
7
7
  priority: 50
8
8
  chain-next: [vibe.create-prd, vibe.prioritization]
@@ -10,6 +10,13 @@ chain-next: [vibe.create-prd, vibe.prioritization]
10
10
 
11
11
  # User Personas
12
12
 
13
+ ## Done Criteria
14
+
15
+ - [ ] 정확히 3개의 persona가 생성되어 있다.
16
+ - [ ] 각 persona에 JTBD, pains, gains가 모두 존재한다.
17
+ - [ ] 각 핵심 특성이 research source와 연결되어 있다.
18
+ - [ ] 근거 없는 추론은 inference로 표시되어 있다.
19
+
13
20
  > Based on the user persona framework from [Product Compass](https://www.productcompass.pm/p/interviewing-customers-the-ultimate) by Pawel Huryn (MIT License).
14
21
 
15
22
  ## Purpose
@@ -1,12 +1,19 @@
1
1
  ---
2
2
  name: vibe.verify
3
- description: Verify implementation against SPEC requirements
4
- argument-hint: "feature name"
3
+ description: 승인된 SPEC에 대한 구현 완료를 판정하거나 REQ→SPEC→Feature→Code 추적표가 필요할 때 검증 또는 trace mode로 실행한다.
4
+ argument-hint: "feature name [--e2e] | trace feature-name [--html] [--save] [--json]"
5
5
  user-invocable: true
6
6
  ---
7
7
 
8
8
  # /vibe.verify
9
9
 
10
+ ## 완료 기준
11
+
12
+ - [ ] 승인된 SPEC의 모든 REQ가 pass 또는 fail로 판정되어 있다.
13
+ - [ ] 각 판정에 test output, 파일·행 또는 산출물 경로 근거가 있다.
14
+ - [ ] verify mode 성공 시 run ledger의 `verifyPassed`가 true다.
15
+ - [ ] trace mode에서는 RTM 파일이 존재하고 누락 REQ가 0개다.
16
+
10
17
  SPEC-driven verification. Check the implementation against the SPEC's **Done criteria** and Feature scenarios, record the result to the **run ledger** (`recordVerify`), and auto-register regressions on failure. The JUDGE gate is code-enforced by the ledger — a verification never counts as passed by self-report.
11
18
 
12
19
  ## Usage
@@ -14,8 +21,18 @@ SPEC-driven verification. Check the implementation against the SPEC's **Done cri
14
21
  ```
15
22
  /vibe.verify "feature-name" # SPEC-based verification
16
23
  /vibe.verify --e2e "feature-name" # + E2E browser verification (agents/e2e-tester.md)
24
+ /vibe.verify trace "feature-name" # Requirements Traceability Matrix
25
+ /vibe.verify trace "feature-name" --html | --save | --json
17
26
  ```
18
27
 
28
+ ## Trace mode
29
+
30
+ When the first argument is `trace`, read `references/trace-mode.md` and execute
31
+ that RTM workflow instead of the verification process below. Preserve the
32
+ feature name and `--html`, `--save`, and `--json` flags. An empty RTM is a gate
33
+ failure. Trace output alone does not set `verifyPassed`; run normal verify mode
34
+ to bind command evidence to the run ledger.
35
+
19
36
  ## Scope
20
37
 
21
38
  - **Changed files only** — never full-project scan.
@@ -39,7 +56,11 @@ Extract the Done criteria / scenarios — this list is the verification checklis
39
56
 
40
57
  ### 2. Verify each Done criterion (parallel, deterministic)
41
58
 
42
- Run all applicable methods as parallel sub-agents in ONE message; each returns a short pass/fail summary instead of bloating main context:
59
+ Run all applicable methods through the harness's native collaboration
60
+ capability; each worker returns a short pass/fail summary instead of bloating
61
+ the coordinator context. Claude Code maps workers to Task/Agent; Codex maps
62
+ them to native collaboration. Inherit the session model by default and run
63
+ independent methods concurrently when capacity permits:
43
64
 
44
65
  | Method | How | Condition |
45
66
  |---|---|---|
@@ -104,7 +125,12 @@ Load skill `vibe.contract` with: check "{feature}"
104
125
 
105
126
  ### 7. Metrics + Ledger update (MANDATORY final step)
106
127
 
107
- Record run metrics, then write the verify result to the run ledger. This is the machine-readable deterministic JUDGE record consumed by the Stop-hook verify gate, auto-commit verify gate, and loop-contract gates. `recordVerify` also writes `.vibe/runs/{run-id}/evidence.json`; Model Judge findings remain advisory-only and Human Taste remains release-only.
128
+ Record run metrics, then explicitly write the verify result to the run ledger.
129
+ This machine-readable record is the deterministic JUDGE consumed by the
130
+ loop-contract gates. Lifecycle Stop/auto-commit hooks may consume the same
131
+ record for earlier feedback, but correctness does not depend on either hook.
132
+ `recordVerify` also writes `.vibe/runs/{run-id}/evidence.json`; Model Judge
133
+ findings remain advisory-only and Human Taste remains release-only.
108
134
 
109
135
  ```bash
110
136
  # Append step-count history (ok if current-run.json missing)
@@ -0,0 +1,271 @@
1
+ ---
2
+ name: verify-trace-mode-reference
3
+ description: Generate and display Requirements Traceability Matrix (RTM) — REQ → SPEC → Feature → Code 관계 추적
4
+ argument-hint: "feature-name [--html] [--save]"
5
+ user-invocable: true
6
+ ---
7
+
8
+ # /vibe.trace
9
+
10
+ Generate and display Requirements Traceability Matrix (RTM).
11
+
12
+ ## Usage
13
+
14
+ ```bash
15
+ /vibe.trace "feature-name" # Generate RTM for feature
16
+ /vibe.trace "feature-name" --html # Output as HTML
17
+ /vibe.trace "feature-name" --save # Save to file
18
+ ```
19
+
20
+ > **⏱️ Timer**: Query the system clock at START and record the result as `{start_time}`.
21
+
22
+ ## Description
23
+
24
+ Requirements Traceability Matrix (RTM) tracks the relationship between:
25
+ - **Requirements** (REQ-xxx-xxx)
26
+ - **SPEC sections** (Phase tasks)
27
+ - **Feature scenarios** (BDD)
28
+ - **Test files** (unit/integration tests)
29
+
30
+ ## Process
31
+
32
+ ### 1. Load Files
33
+
34
+ **Search order (check BOTH file AND folder):**
35
+
36
+ ```
37
+ Step 1: Check if SPLIT structure exists (folder)
38
+ 📁 .vibe/specs/{feature-name}/ → Folder with _index.md + phase files
39
+ 📁 .vibe/features/{feature-name}/ → Folder with _index.feature + phase files
40
+
41
+ Step 2: If no folder, check single file
42
+ 📄 .vibe/specs/{feature-name}.md → Single SPEC file
43
+ 📄 .vibe/features/{feature-name}.feature → Single Feature file
44
+
45
+ Step 3: If neither exists → Error
46
+ ```
47
+
48
+ **Split structure (folder) detected:**
49
+ ```
50
+ 📁 .vibe/specs/{feature-name}/
51
+ ├── _index.md → Master SPEC (read first)
52
+ ├── phase-1-{name}.md → Phase 1 SPEC
53
+ └── ...
54
+
55
+ 📁 .vibe/features/{feature-name}/
56
+ ├── _index.feature → Master Feature (read first)
57
+ ├── phase-1-{name}.feature → Phase 1 scenarios
58
+ └── ...
59
+
60
+ → Load all phase files, generate RTM across all phases
61
+ ```
62
+
63
+ **Single file detected:**
64
+ ```
65
+ 📄 .vibe/specs/{feature-name}.md → SPEC
66
+ 📄 .vibe/features/{feature-name}.feature → Feature
67
+ ```
68
+
69
+ **Additional (auto-detect):**
70
+ ```
71
+ 📄 src/**/*.test.ts → Tests (auto-detect)
72
+ ```
73
+
74
+ **Error if NEITHER file NOR folder found:**
75
+ ```
76
+ ❌ SPEC not found. Searched:
77
+ - .vibe/specs/{feature-name}/ (folder)
78
+ - .vibe/specs/{feature-name}.md (file)
79
+
80
+ Run /vibe.spec "{feature-name}" first.
81
+ ```
82
+
83
+ ### 2. Extract Mappings
84
+
85
+ For each requirement ID (REQ-xxx-xxx):
86
+ 1. Find corresponding SPEC section
87
+ 2. Find matching Feature scenario
88
+ 3. Find related test file
89
+
90
+ ### 3. Calculate Coverage
91
+
92
+ ```
93
+ Coverage = (Full coverage items / Total requirements) × 100%
94
+
95
+ Full coverage = Has SPEC + Feature + Test
96
+ Partial = Missing one or more
97
+ None = Only in SPEC
98
+ ```
99
+
100
+ ### 4. Output RTM
101
+
102
+ ```
103
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
104
+ 📊 REQUIREMENTS TRACEABILITY MATRIX: {feature-name}
105
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
106
+
107
+ ## Summary
108
+ | Metric | Value |
109
+ |-------------------|----------|
110
+ | Total Requirements| 10 |
111
+ | SPEC Coverage | 10/10 |
112
+ | Feature Coverage | 8/10 |
113
+ | Test Coverage | 6/10 |
114
+ | **Overall** | **60%** |
115
+
116
+ ## Traceability Matrix
117
+
118
+ | Requirement | SPEC | Feature | Test | Coverage |
119
+ |-------------|------|---------|------|----------|
120
+ | REQ-login-001 | ✅ Phase 1 | ✅ Scenario 1 | ✅ login.test.ts | ✅ Full |
121
+ | REQ-login-002 | ✅ Phase 1 | ✅ Scenario 2 | ❌ | ⚠️ Partial |
122
+ | REQ-login-003 | ✅ Phase 2 | ❌ | ❌ | ❌ None |
123
+
124
+ ## Uncovered Requirements
125
+
126
+ The following requirements lack full coverage:
127
+
128
+ - **REQ-login-002**: Password validation
129
+ - Missing: Test file
130
+
131
+ - **REQ-login-003**: Remember me functionality
132
+ - Missing: Feature scenario, Test file
133
+
134
+ ## Recommendations
135
+
136
+ ⚠️ Coverage is at 60%. Consider:
137
+ - Add Feature scenarios for uncovered requirements
138
+ - Add test cases for uncovered requirements
139
+
140
+ ⏱️ Started: {start_time}
141
+ ⏱️ Completed: {system clock result}
142
+
143
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
144
+ ```
145
+
146
+ ## Example
147
+
148
+ ```
149
+ User: /vibe.trace "login"
150
+
151
+ Active harness:
152
+ 📊 Generating RTM for "login"...
153
+
154
+ Loading files:
155
+ ✅ SPEC: .vibe/specs/login.md (5 requirements)
156
+ ✅ Feature: .vibe/features/login.feature (4 scenarios)
157
+ ✅ Tests: 3 test files found
158
+
159
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
160
+ 📊 REQUIREMENTS TRACEABILITY MATRIX: login
161
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
162
+
163
+ ## Summary
164
+ | Metric | Value |
165
+ |-------------------|----------|
166
+ | Total Requirements| 5 |
167
+ | SPEC Coverage | 5/5 |
168
+ | Feature Coverage | 4/5 |
169
+ | Test Coverage | 3/5 |
170
+ | **Overall** | **60%** |
171
+
172
+ ## Traceability Matrix
173
+
174
+ | Requirement | SPEC | Feature | Test | Coverage |
175
+ |-------------|------|---------|------|----------|
176
+ | REQ-login-001 | ✅ | ✅ | ✅ | ✅ Full |
177
+ | REQ-login-002 | ✅ | ✅ | ✅ | ✅ Full |
178
+ | REQ-login-003 | ✅ | ✅ | ✅ | ✅ Full |
179
+ | REQ-login-004 | ✅ | ✅ | ❌ | ⚠️ Partial |
180
+ | REQ-login-005 | ✅ | ❌ | ❌ | ❌ None |
181
+
182
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
183
+ ```
184
+
185
+ ## Tool Integration
186
+
187
+ The RTM generation uses core tools:
188
+
189
+ ```bash
190
+ # Generate RTM (generateTraceabilityMatrix is synchronous — no .then())
191
+ node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => { const m = t.generateTraceabilityMatrix('login', {projectPath: process.cwd()}); console.log(t.formatMatrixAsMarkdown(m)); })"
192
+
193
+ # Generate HTML
194
+ node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => { const m = t.generateTraceabilityMatrix('login', {projectPath: process.cwd()}); console.log(t.formatMatrixAsHtml(m)); })"
195
+ ```
196
+
197
+ > **Note:** Default SPEC path is `.vibe/specs/<feature>.md` (falls back to `.claude/vibe/specs/` then `.claude/specs/` for legacy projects).
198
+ > `status === 'empty'` means the gate MUST be treated as failed/not-applicable, never as 100% pass.
199
+
200
+ ## Post-Trace Gates
201
+
202
+ After `/vibe.trace` completes and the RTM is displayed, two downstream mechanisms consume the result.
203
+
204
+ ### Empty-result gate
205
+
206
+ `generateTraceabilityMatrix` returns `status: 'empty'` when no `REQ-<feature>-NNN` IDs are found in the SPEC. This state **must be treated as a gate failure**, not as 100% coverage. When the matrix status is `empty`, report it explicitly and do not proceed as if the feature is verified.
207
+
208
+ ```
209
+ RTM status === 'empty'
210
+ → Coverage gate: FAILED (no requirements to trace)
211
+ → Action: run /vibe.spec to add REQ-IDs before re-running /vibe.trace
212
+ ```
213
+
214
+ ### Run-ledger flow
215
+
216
+ `/vibe.verify` records its outcome through `hooks/scripts/verify-ledger.js`, binding the current run ID and command-result evidence. This writes `verifyPassed` and `verifyAt` into `.vibe/metrics/run-ledger.json`. Downstream gates consume this record:
217
+
218
+ | Gate | Behavior |
219
+ |------|----------|
220
+ | `auto-commit` | Commits only when `verifyPassed === true` AND `verifyAt > runStarted` |
221
+ | Explicit JUDGE | Run `/vibe.verify`; it must record `verifyPassed` and command evidence before completion |
222
+ | Lifecycle hook (optional) | May warn when `runStarted && !verifyPassed`; never substitutes for the explicit JUDGE |
223
+
224
+ **To register a passing trace as verified**, run `/vibe.verify` after `/vibe.trace` reports acceptable coverage. The verify skill records the current run ID and command evidence internally — you do not invoke the ledger CLI manually.
225
+
226
+ ```
227
+ /vibe.trace "login" → RTM: 9/9 (100%)
228
+ /vibe.verify "login" → runs checks → records pass + run ID + command results
229
+ → .vibe/metrics/run-ledger.json updated
230
+ auto-commit / Stop gate → verifyPassed=true, gate clears
231
+ ```
232
+
233
+ If `/vibe.verify` is skipped, `auto-commit` will log the skip reason and abort the commit.
234
+
235
+ ## Options
236
+
237
+ | Option | Description |
238
+ |--------|-------------|
239
+ | `--html` | Output as HTML file |
240
+ | `--save` | Save to `.vibe/reports/{feature}-rtm.md` |
241
+ | `--json` | Output as JSON |
242
+
243
+ ## Coverage Targets
244
+
245
+ | Coverage Level | Status |
246
+ |----------------|--------|
247
+ | 90-100% | ✅ Excellent - Ready for release |
248
+ | 70-89% | ⚠️ Good - Minor gaps |
249
+ | 50-69% | ⚠️ Fair - Significant gaps |
250
+ | 0-49% | ❌ Poor - Major gaps |
251
+
252
+ ---
253
+
254
+ ## `.last-feature` 포인터 삭제 (워크플로 완주)
255
+
256
+ ```
257
+ /vibe.trace가 정상 완료되면 (RTM 출력 + 사용자 확인 후):
258
+ Delete ".vibe/.last-feature"
259
+
260
+ 이유: /vibe.trace는 vibe 워크플로의 마지막 Phase (Phase 7).
261
+ 완주 후에는 다음 /vibe.spec 호출 시 "빈 시작" 또는 진행 중 목록에서 다른 feature를 시작해야 한다.
262
+ 삭제하지 않으면 완료된 feature가 계속 "이어서?" 로 뜬다.
263
+
264
+ 예외:
265
+ - /vibe.trace가 에러로 중단된 경우 → 삭제하지 않음 (재시도 가능)
266
+ - --save 또는 --html 플래그와 무관하게 항상 삭제
267
+ ```
268
+
269
+ ---
270
+
271
+ ARGUMENTS: {feature-name}
@@ -1,30 +0,0 @@
1
- /**
2
- * Regression test — {{SLUG}}
3
- *
4
- * Symptom: {{SYMPTOM}}
5
- * Root cause tag: {{ROOT_CAUSE_TAG}}
6
- * Fix commit: {{FIX_COMMIT}}
7
- * Source record: .vibe/regressions/{{SLUG}}.md
8
- *
9
- * DO NOT delete this test when the bug is fixed — it exists to prevent the
10
- * same bug from being reintroduced. Update only if the reproduction steps
11
- * in the source record change.
12
- */
13
-
14
- import { describe, it, expect{{EXTRA_IMPORTS}} } from 'vitest';
15
- {{IMPORTS_FROM_SUT}}
16
-
17
- describe('regression: {{SYMPTOM_SHORT}}', () => {
18
- it('{{TEST_NAME}}', {{ASYNC}}() => {
19
- // Given: {{GIVEN}}
20
- {{GIVEN_CODE}}
21
-
22
- // When: {{WHEN}}
23
- {{WHEN_CODE}}
24
-
25
- // Then: {{THEN}}
26
- {{THEN_ASSERTIONS}}
27
- });
28
-
29
- {{EXTRA_IT_BLOCKS}}
30
- });