@su-record/vibe 3.2.6 → 3.2.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +5 -2
- package/README.en.md +1 -1
- package/README.md +1 -1
- package/agents/build-error-resolver.md +1 -1
- package/agents/code-reviewer.md +1 -1
- package/agents/e2e-tester.md +1 -1
- package/agents/event/event-ops.md +1 -1
- package/agents/event/event-planner.md +1 -1
- package/agents/implementer.md +1 -1
- package/agents/security-reviewer.md +1 -1
- package/agents/tester.md +1 -1
- package/agents/ui/design-reviewer.md +1 -1
- package/agents/ui/design-system-gen.md +1 -1
- package/dist/cli/commands/info.d.ts +9 -0
- package/dist/cli/commands/info.d.ts.map +1 -1
- package/dist/cli/commands/info.js +32 -0
- package/dist/cli/commands/info.js.map +1 -1
- package/dist/cli/commands/info.test.js +34 -1
- package/dist/cli/commands/info.test.js.map +1 -1
- package/dist/cli/commands/upgrade.d.ts +18 -0
- package/dist/cli/commands/upgrade.d.ts.map +1 -1
- package/dist/cli/commands/upgrade.js +60 -2
- package/dist/cli/commands/upgrade.js.map +1 -1
- package/dist/cli/commands/upgrade.test.js +51 -1
- package/dist/cli/commands/upgrade.test.js.map +1 -1
- package/dist/cli/generate-release-notes.js +8 -6
- package/dist/cli/generate-release-notes.js.map +1 -1
- package/dist/cli/postinstall/claude-agents.d.ts.map +1 -1
- package/dist/cli/postinstall/claude-agents.js +3 -1
- package/dist/cli/postinstall/claude-agents.js.map +1 -1
- package/dist/cli/postinstall/constants.d.ts.map +1 -1
- package/dist/cli/postinstall/constants.js +27 -21
- package/dist/cli/postinstall/constants.js.map +1 -1
- package/dist/tests/curated-release-notes.test.js +55 -1
- package/dist/tests/curated-release-notes.test.js.map +1 -1
- package/dist/tools/release/releaseNotes.d.ts +22 -0
- package/dist/tools/release/releaseNotes.d.ts.map +1 -1
- package/dist/tools/release/releaseNotes.js +45 -0
- package/dist/tools/release/releaseNotes.js.map +1 -1
- package/hooks/scripts/__tests__/.vibe/command-log.txt +3 -3
- package/hooks/scripts/__tests__/code-check-detectors.test.js +58 -0
- package/hooks/scripts/code-check.js +7 -0
- 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.analyze/references/output-templates.md +2 -2
- 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 +62 -52
- 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 +63 -660
- 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/parallel-agents.md +44 -60
- package/skills/vibe.run/references/process-steps.md +179 -0
- package/skills/vibe.run/references/restraint.md +66 -0
- package/skills/vibe.run/references/ultrawork-mode.md +1 -1
- package/skills/vibe.scaffold/SKILL.md +9 -13
- package/skills/vibe.scaffold/references/clean-architecture.md +17 -0
- package/skills/vibe.spec/SKILL.md +13 -9
- 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/vibe/rules/principles/dual-harness-doctrine.md +10 -9
- 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,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}
|
|
@@ -34,17 +34,18 @@
|
|
|
34
34
|
|
|
35
35
|
CC의 풍부한 hook 모델(PreToolUse/PostToolUse/UserPromptSubmit/Stop)에는 Codex에 완전한 등가물이 없다. hook의 **의도**별로 하네스에 맞는 메커니즘에 매핑한다.
|
|
36
36
|
|
|
37
|
+
Codex도 이제 네이티브 hook을 지원한다(`codex features list` → `hooks: stable`). vibe는 두 메커니즘을 **모두** 사용하며, hook의 **의도**별로 매핑한다.
|
|
38
|
+
|
|
37
39
|
| hook 의도 | Claude Code | Codex |
|
|
38
40
|
|---|---|---|
|
|
39
|
-
| 라이프사이클 (turn
|
|
40
|
-
|
|
|
41
|
-
|
|
|
42
|
-
|
|
|
41
|
+
| 라이프사이클 (turn 완료) | `Stop` hook | `config.toml`의 `notify` (agent-turn-complete 시 JSON 발화) |
|
|
42
|
+
| 세션 시작 | `SessionStart` hook | `.codex/hooks.json` → `SessionStart` |
|
|
43
|
+
| pre-edit / scope guard | `PreToolUse` (동기 deny) | `.codex/hooks.json` → `PreToolUse` (동기 deny) |
|
|
44
|
+
| 키워드 디스패치 | `UserPromptSubmit` | `.codex/hooks.json` → `UserPromptSubmit` |
|
|
45
|
+
| 금지 패턴 차단 | `PreToolUse` | `PreToolUse` + AGENTS.md 규칙 (이중 방어) |
|
|
43
46
|
|
|
44
|
-
|
|
47
|
+
**구현**: `hooks/scripts/codex-hook-adapter.js`가 Codex hook 이벤트를 기존 vibe hook 스크립트로 번역하고 deny 결정(JSON)을 보존한다. 설치는 `installProjectCodexHooks()` → `.codex/hooks.json` (프로젝트 로컬, gitignored). 라이프사이클 후처리(auto-commit·devlog)는 `codex-notify.js`가 `notify` 경로로 담당한다.
|
|
45
48
|
|
|
46
|
-
|
|
47
|
-
- **행동 가드** → AGENTS.md 운영 규칙. 직역이라 *오히려* 신뢰성 있음.
|
|
48
|
-
- **진짜 동기 pre-edit 차단은 Codex에서 불가** — 사후 검증을 완화책으로 수용한다.
|
|
49
|
+
**핵심 통찰: Codex의 직역 성향이 AGENTS.md "soft hook"을 신뢰성 있게 만든다.** CC는 soft 지시를 가끔 무시해 hard hook이 필요하지만, Codex는 적힌 대로 실행한다. 따라서 AGENTS.md 운영 규칙은 네이티브 hook이 생긴 뒤에도 **폐기하지 않고 2차 방어선으로 유지한다** — hook이 설치되지 않은 환경(전역 설치만 한 경우, 다른 클론)에서도 가드가 남는다.
|
|
49
50
|
|
|
50
|
-
>
|
|
51
|
+
> ⚠️ **훅은 "설치돼 있다"고 가정하지 않는다.** 훅은 프로젝트 로컬 아티팩트라 `vibe upgrade` 만으로는 설치되지 않는다(전역 자산만 갱신). `vibe status` 가 하네스별 훅 설치 여부를 보고하고, `vibe upgrade` 는 현재 프로젝트의 누락 훅을 복구한다. 결정론적 가드의 생사는 **관측 가능해야** 한다 — 조용히 죽은 가드는 없는 가드보다 나쁘다.
|
|
@@ -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
|
-
});
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|