@su-record/vibe 2.5.21 → 2.6.0
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 +122 -2
- package/README.md +132 -2
- package/commands/vibe.run.md +69 -44
- package/commands/vibe.trace.md +161 -0
- package/dist/lib/IterationTracker.d.ts +3 -1
- package/dist/lib/IterationTracker.d.ts.map +1 -1
- package/dist/lib/IterationTracker.js +2 -1
- package/dist/lib/IterationTracker.js.map +1 -1
- package/dist/lib/constants.d.ts +14 -0
- package/dist/lib/constants.d.ts.map +1 -1
- package/dist/lib/constants.js +26 -0
- package/dist/lib/constants.js.map +1 -1
- package/dist/orchestrator/BackgroundManager.d.ts +109 -0
- package/dist/orchestrator/BackgroundManager.d.ts.map +1 -0
- package/dist/orchestrator/BackgroundManager.js +456 -0
- package/dist/orchestrator/BackgroundManager.js.map +1 -0
- package/dist/orchestrator/BackgroundManager.test.d.ts +6 -0
- package/dist/orchestrator/BackgroundManager.test.d.ts.map +1 -0
- package/dist/orchestrator/BackgroundManager.test.js +162 -0
- package/dist/orchestrator/BackgroundManager.test.js.map +1 -0
- package/dist/orchestrator/PhasePipeline.d.ts +106 -0
- package/dist/orchestrator/PhasePipeline.d.ts.map +1 -0
- package/dist/orchestrator/PhasePipeline.js +279 -0
- package/dist/orchestrator/PhasePipeline.js.map +1 -0
- package/dist/orchestrator/backgroundAgent.d.ts +2 -0
- package/dist/orchestrator/backgroundAgent.d.ts.map +1 -1
- package/dist/orchestrator/backgroundAgent.js +2 -0
- package/dist/orchestrator/backgroundAgent.js.map +1 -1
- package/dist/orchestrator/index.d.ts +4 -1
- package/dist/orchestrator/index.d.ts.map +1 -1
- package/dist/orchestrator/index.js +5 -1
- package/dist/orchestrator/index.js.map +1 -1
- package/dist/tools/index.d.ts +2 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +12 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/spec/index.d.ts +14 -0
- package/dist/tools/spec/index.d.ts.map +1 -0
- package/dist/tools/spec/index.js +15 -0
- package/dist/tools/spec/index.js.map +1 -0
- package/dist/tools/spec/prdParser.d.ts +43 -0
- package/dist/tools/spec/prdParser.d.ts.map +1 -0
- package/dist/tools/spec/prdParser.js +291 -0
- package/dist/tools/spec/prdParser.js.map +1 -0
- package/dist/tools/spec/prdParser.test.d.ts +6 -0
- package/dist/tools/spec/prdParser.test.d.ts.map +1 -0
- package/dist/tools/spec/prdParser.test.js +332 -0
- package/dist/tools/spec/prdParser.test.js.map +1 -0
- package/dist/tools/spec/requirementId.d.ts +65 -0
- package/dist/tools/spec/requirementId.d.ts.map +1 -0
- package/dist/tools/spec/requirementId.js +161 -0
- package/dist/tools/spec/requirementId.js.map +1 -0
- package/dist/tools/spec/specGenerator.d.ts +39 -0
- package/dist/tools/spec/specGenerator.d.ts.map +1 -0
- package/dist/tools/spec/specGenerator.js +426 -0
- package/dist/tools/spec/specGenerator.js.map +1 -0
- package/dist/tools/spec/specVersioning.d.ts +77 -0
- package/dist/tools/spec/specVersioning.d.ts.map +1 -0
- package/dist/tools/spec/specVersioning.js +237 -0
- package/dist/tools/spec/specVersioning.js.map +1 -0
- package/dist/tools/spec/traceabilityMatrix.d.ts +55 -0
- package/dist/tools/spec/traceabilityMatrix.d.ts.map +1 -0
- package/dist/tools/spec/traceabilityMatrix.js +396 -0
- package/dist/tools/spec/traceabilityMatrix.js.map +1 -0
- package/dist/tools/spec/traceabilityMatrix.test.d.ts +6 -0
- package/dist/tools/spec/traceabilityMatrix.test.d.ts.map +1 -0
- package/dist/tools/spec/traceabilityMatrix.test.js +340 -0
- package/dist/tools/spec/traceabilityMatrix.test.js.map +1 -0
- package/package.json +1 -1
package/CLAUDE.md
CHANGED
|
@@ -40,7 +40,9 @@ Follow these standards when writing code. See `~/.claude/vibe/rules/` (global) f
|
|
|
40
40
|
## Workflow
|
|
41
41
|
|
|
42
42
|
```
|
|
43
|
-
/vibe.spec → /new → /vibe.spec.review → /vibe.run → (auto) code review → ✅ Done
|
|
43
|
+
/vibe.spec → /new → /vibe.spec.review → /vibe.run → /vibe.trace → (auto) code review → ✅ Done
|
|
44
|
+
↑
|
|
45
|
+
Coverage check (v2.6)
|
|
44
46
|
```
|
|
45
47
|
|
|
46
48
|
**Flow:**
|
|
@@ -117,7 +119,125 @@ Include `ultrawork` or `ulw` keyword to activate maximum performance mode:
|
|
|
117
119
|
| `/vibe.utils --ui "description"` | UI preview |
|
|
118
120
|
| `/vibe.utils --continue` | **Session restore** (load previous context) |
|
|
119
121
|
|
|
120
|
-
## New Features (v2.
|
|
122
|
+
## New Features (v2.6.0)
|
|
123
|
+
|
|
124
|
+
### Fire-and-Forget Background Manager
|
|
125
|
+
|
|
126
|
+
Launch background agents without blocking, with automatic concurrency control:
|
|
127
|
+
|
|
128
|
+
```typescript
|
|
129
|
+
import { launch, poll, cancel, getStats } from '@su-record/vibe/orchestrator';
|
|
130
|
+
|
|
131
|
+
// Fire-and-forget - returns immediately (<100ms)
|
|
132
|
+
const { taskId } = launch({
|
|
133
|
+
prompt: 'Analyze codebase',
|
|
134
|
+
agentName: 'analyzer',
|
|
135
|
+
model: 'claude-sonnet-4-5',
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
// Poll for result later
|
|
139
|
+
const result = await poll(taskId);
|
|
140
|
+
|
|
141
|
+
// Check queue stats
|
|
142
|
+
const stats = getStats();
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
**Concurrency limits:**
|
|
146
|
+
|
|
147
|
+
| Model | Limit |
|
|
148
|
+
|-------|-------|
|
|
149
|
+
| claude-opus-4 | 3 |
|
|
150
|
+
| claude-sonnet-4-5 | 5 |
|
|
151
|
+
| claude-haiku-* | 8 |
|
|
152
|
+
|
|
153
|
+
**Error types:**
|
|
154
|
+
- `QueueOverflowError`: Queue at capacity (100 tasks max)
|
|
155
|
+
- `TaskTimeoutError`: Task exceeded 3 minutes
|
|
156
|
+
- `PipelineTimeoutError`: Pipeline exceeded 10 minutes
|
|
157
|
+
- `AgentExecutionError`: Agent execution failed
|
|
158
|
+
|
|
159
|
+
### Phase Pipelining
|
|
160
|
+
|
|
161
|
+
Remove wait time between phases with background preparation:
|
|
162
|
+
|
|
163
|
+
```typescript
|
|
164
|
+
import { PhasePipeline, createStage, createUltraworkPipeline } from '@su-record/vibe/orchestrator';
|
|
165
|
+
|
|
166
|
+
const pipeline = createUltraworkPipeline('my-feature', [
|
|
167
|
+
createStage('Setup', async (ctx) => { /* ... */ }),
|
|
168
|
+
createStage('Core', async (ctx) => { /* ... */ }),
|
|
169
|
+
createStage('Test', async (ctx) => { /* ... */ }),
|
|
170
|
+
]);
|
|
171
|
+
|
|
172
|
+
const result = await pipeline.execute();
|
|
173
|
+
// Next phase preparation happens during current phase execution!
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### PRD-to-SPEC Automation
|
|
177
|
+
|
|
178
|
+
Generate SPEC documents from PRD (Product Requirements Document):
|
|
179
|
+
|
|
180
|
+
```typescript
|
|
181
|
+
import { parsePRD, generateSpecFromPRD } from '@su-record/vibe/tools';
|
|
182
|
+
|
|
183
|
+
// Parse PRD document
|
|
184
|
+
const prd = parsePRD(prdContent, 'login');
|
|
185
|
+
|
|
186
|
+
// Generate SPEC
|
|
187
|
+
const spec = generateSpecFromPRD(prd, {
|
|
188
|
+
techStack: { frontend: 'React', backend: 'Node.js' },
|
|
189
|
+
});
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
**Supported PRD formats:**
|
|
193
|
+
- Markdown with `## Requirements` sections
|
|
194
|
+
- YAML frontmatter with `requirements:` array
|
|
195
|
+
- Mixed format
|
|
196
|
+
|
|
197
|
+
### Requirements Traceability Matrix (/vibe.trace)
|
|
198
|
+
|
|
199
|
+
Track requirements coverage across SPEC → Feature → Test:
|
|
200
|
+
|
|
201
|
+
```bash
|
|
202
|
+
/vibe.trace "login" # Generate RTM
|
|
203
|
+
/vibe.trace "login" --html # HTML output
|
|
204
|
+
/vibe.trace "login" --save # Save to file
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
```typescript
|
|
208
|
+
import { generateTraceabilityMatrix, formatMatrixAsMarkdown } from '@su-record/vibe/tools';
|
|
209
|
+
|
|
210
|
+
const matrix = generateTraceabilityMatrix('login');
|
|
211
|
+
const markdown = formatMatrixAsMarkdown(matrix);
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
**Coverage levels:**
|
|
215
|
+
| Level | Meaning |
|
|
216
|
+
|-------|---------|
|
|
217
|
+
| Full (✅) | SPEC + Feature + Test all mapped |
|
|
218
|
+
| Partial (⚠️) | Missing one or more mappings |
|
|
219
|
+
| None (❌) | Only in SPEC |
|
|
220
|
+
|
|
221
|
+
### SPEC Versioning
|
|
222
|
+
|
|
223
|
+
Git-integrated version control for SPEC documents:
|
|
224
|
+
|
|
225
|
+
```typescript
|
|
226
|
+
import { bumpSpecVersion, createGitTag, generateChangelog } from '@su-record/vibe/tools';
|
|
227
|
+
|
|
228
|
+
// Bump version (major/minor/patch)
|
|
229
|
+
const newVersion = bumpSpecVersion(specPath, 'minor', [
|
|
230
|
+
{ type: 'added', description: 'New login feature' },
|
|
231
|
+
]);
|
|
232
|
+
|
|
233
|
+
// Create git tag
|
|
234
|
+
createGitTag('login', newVersion.version);
|
|
235
|
+
|
|
236
|
+
// Generate changelog
|
|
237
|
+
const changelog = generateChangelog(versionHistory);
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
## Previous Features (v2.5.15)
|
|
121
241
|
|
|
122
242
|
### Rule Build System
|
|
123
243
|
|
package/README.md
CHANGED
|
@@ -39,6 +39,7 @@ vibe init
|
|
|
39
39
|
| `/vibe.run "feature"` | Execute implementation |
|
|
40
40
|
| `/vibe.run "feature" ultrawork` | Maximum performance mode |
|
|
41
41
|
| `/vibe.verify "feature"` | BDD verification |
|
|
42
|
+
| `/vibe.trace "feature"` | Requirements traceability matrix (v2.6) |
|
|
42
43
|
| `/vibe.review` | 13+ agent parallel review |
|
|
43
44
|
| `/vibe.analyze` | Code analysis |
|
|
44
45
|
| `/vibe.reason "problem"` | Systematic reasoning |
|
|
@@ -47,13 +48,19 @@ vibe init
|
|
|
47
48
|
## Workflow
|
|
48
49
|
|
|
49
50
|
```
|
|
50
|
-
/vibe.spec → /vibe.run → /vibe.verify → /vibe.review
|
|
51
|
+
/vibe.spec → /vibe.run → /vibe.trace → /vibe.verify → /vibe.review
|
|
52
|
+
↑
|
|
53
|
+
Coverage check (v2.6)
|
|
51
54
|
```
|
|
52
55
|
|
|
53
56
|
## Key Features
|
|
54
57
|
|
|
55
58
|
| Feature | Description |
|
|
56
59
|
|---------|-------------|
|
|
60
|
+
| **Fire-and-Forget Agents (v2.6)** | Non-blocking background execution with instant handle return |
|
|
61
|
+
| **Phase Pipelining (v2.6)** | Prepare next phase during current execution |
|
|
62
|
+
| **PRD-to-SPEC Automation (v2.6)** | Auto-generate SPEC from PRD documents |
|
|
63
|
+
| **Traceability Matrix (v2.6)** | REQ → SPEC → Feature → Test coverage tracking |
|
|
57
64
|
| **Multi-LLM Research (v2.5)** | Claude + GPT + Gemini 3-way validation during SPEC research |
|
|
58
65
|
| **Multi-model orchestration** | Claude + GPT-5.2 + Gemini 3 Pro |
|
|
59
66
|
| **13+ parallel review agents** | Security, performance, architecture |
|
|
@@ -61,7 +68,7 @@ vibe init
|
|
|
61
68
|
| **Large SPEC auto-split** | 5+ phases auto-split into phase files |
|
|
62
69
|
| **BDD auto verification** | Given/When/Then scenario verification |
|
|
63
70
|
| **ULTRAWORK mode** | One keyword enables all optimizations |
|
|
64
|
-
| **
|
|
71
|
+
| **30+ built-in tools** | Code analysis, memory management, quality validation |
|
|
65
72
|
| **Auto context management** | 80%+ auto-save, session restore |
|
|
66
73
|
| **23 language presets** | TypeScript, Python, Go, Rust, Swift, Kotlin, C#, Ruby, Dart, GDScript |
|
|
67
74
|
|
|
@@ -76,11 +83,134 @@ Enable maximum performance with `ultrawork` or `ulw`:
|
|
|
76
83
|
|
|
77
84
|
**Enabled features:**
|
|
78
85
|
- Parallel subagent exploration (3+ concurrent)
|
|
86
|
+
- **Background agents** (v2.6) - Prepare next phase during implementation
|
|
87
|
+
- **Phase pipelining** (v2.6) - Zero wait time between phases
|
|
79
88
|
- Boulder Loop (auto-progress until all scenarios complete)
|
|
80
89
|
- Auto-retry on errors (max 3)
|
|
81
90
|
- Continuous execution without phase confirmation
|
|
82
91
|
- Auto-save at 80%+ context
|
|
83
92
|
|
|
93
|
+
## Fire-and-Forget Background Manager (v2.6)
|
|
94
|
+
|
|
95
|
+
Non-blocking task execution with instant response:
|
|
96
|
+
|
|
97
|
+
```typescript
|
|
98
|
+
import { launch, poll, getStats } from '@su-record/vibe/orchestrator';
|
|
99
|
+
|
|
100
|
+
// Fire-and-forget: returns immediately (<100ms)
|
|
101
|
+
const { taskId } = launch({
|
|
102
|
+
prompt: 'Analyze codebase security',
|
|
103
|
+
agentName: 'security-agent',
|
|
104
|
+
model: 'claude-sonnet-4-5'
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
// Poll for result later
|
|
108
|
+
const result = await poll(taskId);
|
|
109
|
+
|
|
110
|
+
// Check queue stats
|
|
111
|
+
const stats = getStats();
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
**Concurrency limits:**
|
|
115
|
+
|
|
116
|
+
| Model | Concurrent Limit |
|
|
117
|
+
|--------|------------------|
|
|
118
|
+
| Opus | 3 |
|
|
119
|
+
| Sonnet | 5 |
|
|
120
|
+
| Haiku | 8 |
|
|
121
|
+
|
|
122
|
+
**Queue features:**
|
|
123
|
+
|
|
124
|
+
- Bounded queue (max 100 tasks)
|
|
125
|
+
- Per-model rate limiting
|
|
126
|
+
- Task timeout: 180s individual, 10min pipeline
|
|
127
|
+
- Automatic cleanup (24h TTL)
|
|
128
|
+
|
|
129
|
+
## Phase Pipelining (v2.6)
|
|
130
|
+
|
|
131
|
+
Prepare next phase while current phase executes:
|
|
132
|
+
|
|
133
|
+
```
|
|
134
|
+
Phase N execution │ Background: Phase N+1 preparation
|
|
135
|
+
──────────────────────┼──────────────────────────────────
|
|
136
|
+
[Implementing...] │ [Analyzing files for next phase]
|
|
137
|
+
[Testing...] │ [Pre-generating test cases]
|
|
138
|
+
[Complete] │ [Ready to start immediately!]
|
|
139
|
+
↓
|
|
140
|
+
Phase N+1 starts with ZERO wait time
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
**Speed comparison:**
|
|
144
|
+
|
|
145
|
+
| Mode | 5 Phases Total |
|
|
146
|
+
|---------------------------|----------------|
|
|
147
|
+
| Sequential | ~10min |
|
|
148
|
+
| Parallel Exploration | ~7.5min |
|
|
149
|
+
| **ULTRAWORK + Pipeline** | **~5min** |
|
|
150
|
+
|
|
151
|
+
## PRD-to-SPEC Automation (v2.6)
|
|
152
|
+
|
|
153
|
+
Auto-generate SPEC from PRD documents:
|
|
154
|
+
|
|
155
|
+
```typescript
|
|
156
|
+
import { parsePRD } from '@su-record/vibe/tools';
|
|
157
|
+
|
|
158
|
+
// Parse PRD (supports Markdown, YAML frontmatter)
|
|
159
|
+
const prd = parsePRD(prdContent, 'login-feature');
|
|
160
|
+
|
|
161
|
+
// Extracted requirements with auto-generated IDs
|
|
162
|
+
// REQ-login-001, REQ-login-002, ...
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
**Requirement ID System:**
|
|
166
|
+
|
|
167
|
+
- Format: `REQ-{feature}-{number}`
|
|
168
|
+
- Auto-deduplication
|
|
169
|
+
- Priority inference from keywords (must, should, nice-to-have)
|
|
170
|
+
|
|
171
|
+
## Requirements Traceability Matrix (v2.6)
|
|
172
|
+
|
|
173
|
+
Track coverage from requirements to tests:
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
/vibe.trace "feature-name" # Generate RTM
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
**RTM tracks:**
|
|
180
|
+
|
|
181
|
+
```
|
|
182
|
+
REQ-login-001 → SPEC Phase 1 → Feature Scenario 1 → login.test.ts
|
|
183
|
+
REQ-login-002 → SPEC Phase 2 → Feature Scenario 3 → auth.test.ts
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
**Coverage report:**
|
|
187
|
+
|
|
188
|
+
- Requirements coverage %
|
|
189
|
+
- Missing implementations
|
|
190
|
+
- Untested features
|
|
191
|
+
- Export: Markdown, HTML
|
|
192
|
+
|
|
193
|
+
## SPEC Versioning (v2.6)
|
|
194
|
+
|
|
195
|
+
Automatic version management for SPEC documents:
|
|
196
|
+
|
|
197
|
+
```typescript
|
|
198
|
+
import { bumpVersion, generateChangelog } from '@su-record/vibe/tools';
|
|
199
|
+
|
|
200
|
+
// Auto-bump version on SPEC changes
|
|
201
|
+
await bumpVersion('feature-name', 'minor');
|
|
202
|
+
|
|
203
|
+
// Generate changelog
|
|
204
|
+
await generateChangelog('feature-name');
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
**Features:**
|
|
208
|
+
|
|
209
|
+
- Semantic versioning (major.minor.patch)
|
|
210
|
+
- Git tag integration
|
|
211
|
+
- Automatic changelog generation
|
|
212
|
+
- Baseline tagging for releases
|
|
213
|
+
|
|
84
214
|
## Multi-model Orchestration
|
|
85
215
|
|
|
86
216
|
**Hook-based automatic routing** - Keywords in your prompt trigger the right LLM automatically:
|
package/commands/vibe.run.md
CHANGED
|
@@ -162,7 +162,7 @@ Like Sisyphus rolling the boulder, ULTRAWORK **keeps going until done**:
|
|
|
162
162
|
|
|
163
163
|
**Problem**: AI often claims "complete" when implementation is partial.
|
|
164
164
|
|
|
165
|
-
**Solution**:
|
|
165
|
+
**Solution**: RTM-based automated coverage verification with iteration tracking.
|
|
166
166
|
|
|
167
167
|
```
|
|
168
168
|
┌─────────────────────────────────────────────────────────────────┐
|
|
@@ -171,50 +171,69 @@ Like Sisyphus rolling the boulder, ULTRAWORK **keeps going until done**:
|
|
|
171
171
|
│ After ALL phases complete: │
|
|
172
172
|
│ │
|
|
173
173
|
│ ┌──────────────────────────────────────────────────────────┐ │
|
|
174
|
-
│ │
|
|
174
|
+
│ │ RTM COVERAGE VERIFICATION [Iteration {{ITER}}/{{MAX}}] │ │
|
|
175
175
|
│ │ │ │
|
|
176
|
-
│ │
|
|
176
|
+
│ │ Generate RTM via vibe tools: │ │
|
|
177
|
+
│ │ → generateTraceabilityMatrix("{feature-name}") │ │
|
|
177
178
|
│ │ │ │
|
|
178
|
-
│ │
|
|
179
|
-
│ │ □
|
|
180
|
-
│ │ □
|
|
179
|
+
│ │ Coverage Metrics (automated): │ │
|
|
180
|
+
│ │ □ Requirements coverage: {coveragePercent}% │ │
|
|
181
|
+
│ │ □ SPEC → Feature mapping: {featureCovered}/{total} │ │
|
|
182
|
+
│ │ □ Feature → Test mapping: {testCovered}/{total} │ │
|
|
181
183
|
│ │ □ Build successful? │ │
|
|
182
184
|
│ │ □ Tests passing? │ │
|
|
183
|
-
│ │ □ No TODO/FIXME left unaddressed? │ │
|
|
184
|
-
│ │ □ No partial implementations? │ │
|
|
185
185
|
│ │ │ │
|
|
186
|
-
│ │
|
|
186
|
+
│ │ UNCOVERED: {uncoveredRequirements[]} │ │
|
|
187
187
|
│ └──────────────────────────────────────────────────────────┘ │
|
|
188
188
|
│ │ │
|
|
189
189
|
│ ┌──────────┴──────────┐ │
|
|
190
|
-
│ │
|
|
190
|
+
│ │ Coverage ≥ 95%? │ │
|
|
191
191
|
│ └──────────┬──────────┘ │
|
|
192
192
|
│ │ │ │
|
|
193
193
|
│ NO YES │
|
|
194
194
|
│ │ │ │
|
|
195
195
|
│ ↓ ↓ │
|
|
196
196
|
│ ┌────────────────┐ ┌────────────────┐ │
|
|
197
|
-
│ │
|
|
198
|
-
│ │
|
|
199
|
-
│ │
|
|
200
|
-
│ │
|
|
197
|
+
│ │ IMPLEMENT │ │ ✅ TRULY DONE │ │
|
|
198
|
+
│ │ UNCOVERED │ │ │ │
|
|
199
|
+
│ │ REQUIREMENTS │ │ Report final │ │
|
|
200
|
+
│ │ (auto-extract) │ │ RTM coverage │ │
|
|
201
201
|
│ └───────┬────────┘ └────────────────┘ │
|
|
202
202
|
│ │ │
|
|
203
|
-
│ └──────────→ [
|
|
203
|
+
│ └──────────→ [Re-generate RTM] │
|
|
204
204
|
│ │
|
|
205
205
|
│ MAX_ITERATIONS: 5 (prevent infinite loops) │
|
|
206
|
+
│ COVERAGE_THRESHOLD: 95% (quality gate) │
|
|
206
207
|
│ ZERO TOLERANCE for scope reduction │
|
|
207
208
|
└─────────────────────────────────────────────────────────────────┘
|
|
208
209
|
```
|
|
209
210
|
|
|
211
|
+
**Ralph Loop with RTM:**
|
|
212
|
+
|
|
213
|
+
```bash
|
|
214
|
+
# Generate RTM for coverage verification
|
|
215
|
+
node -e "import('@su-record/vibe/tools').then(t => t.generateTraceabilityMatrix('{feature-name}', {projectPath: process.cwd()}).then(r => console.log(JSON.stringify(r, null, 2))))"
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
**RTM provides automated metrics:**
|
|
219
|
+
|
|
220
|
+
| Metric | Description |
|
|
221
|
+
|--------|-------------|
|
|
222
|
+
| `totalRequirements` | Total REQ-* items in SPEC |
|
|
223
|
+
| `specCovered` | Requirements with SPEC mapping |
|
|
224
|
+
| `featureCovered` | Requirements with Feature scenarios |
|
|
225
|
+
| `testCovered` | Requirements with test files |
|
|
226
|
+
| `coveragePercent` | Overall coverage percentage |
|
|
227
|
+
| `uncoveredRequirements` | List of missing REQ-* IDs |
|
|
228
|
+
|
|
210
229
|
**Ralph Loop Rules:**
|
|
211
230
|
|
|
212
231
|
| Rule | Description |
|
|
213
232
|
|------|-------------|
|
|
214
233
|
| **No Scope Reduction** | Never say "simplified" or "basic version" - implement FULL request |
|
|
215
234
|
| **Iteration Tracking** | Display `[{{ITER}}/{{MAX}}]` to show progress |
|
|
216
|
-
| **
|
|
217
|
-
| **
|
|
235
|
+
| **RTM-Based Gap List** | Use `uncoveredRequirements` array - no manual comparison |
|
|
236
|
+
| **Coverage Threshold** | Must reach 95% coverage to complete |
|
|
218
237
|
| **Max Iterations** | Stop at 5 iterations (report remaining gaps) |
|
|
219
238
|
|
|
220
239
|
**Ralph Loop Output Format:**
|
|
@@ -224,49 +243,55 @@ Like Sisyphus rolling the boulder, ULTRAWORK **keeps going until done**:
|
|
|
224
243
|
🔄 RALPH VERIFICATION [Iteration 1/5]
|
|
225
244
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
226
245
|
|
|
227
|
-
|
|
246
|
+
📊 RTM Coverage Report: login
|
|
247
|
+
|
|
248
|
+
Requirements Traceability:
|
|
249
|
+
Total Requirements: 9
|
|
250
|
+
SPEC Covered: 9/9 (100%)
|
|
251
|
+
Feature Covered: 5/9 (55%)
|
|
252
|
+
Test Covered: 4/9 (44%)
|
|
228
253
|
|
|
229
|
-
|
|
230
|
-
✅
|
|
231
|
-
✅
|
|
232
|
-
|
|
233
|
-
❌
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
❌
|
|
237
|
-
|
|
254
|
+
✅ REQ-login-001: Login form UI → Scenario 1 → login.test.ts
|
|
255
|
+
✅ REQ-login-002: Email validation → Scenario 2 → validation.test.ts
|
|
256
|
+
✅ REQ-login-003: Password validation → Scenario 2 → validation.test.ts
|
|
257
|
+
❌ REQ-login-004: Remember me checkbox → NOT IMPLEMENTED
|
|
258
|
+
❌ REQ-login-005: Forgot password link → NOT IMPLEMENTED
|
|
259
|
+
✅ REQ-login-006: API integration → Scenario 3 → api.test.ts
|
|
260
|
+
❌ REQ-login-007: Loading state → NOT IMPLEMENTED
|
|
261
|
+
❌ REQ-login-008: Error toast → NOT IMPLEMENTED
|
|
262
|
+
✅ REQ-login-009: Session storage → Scenario 4 → (no test)
|
|
238
263
|
|
|
239
|
-
|
|
264
|
+
Overall Coverage: 55% ⚠️ BELOW 95% THRESHOLD
|
|
240
265
|
|
|
241
|
-
|
|
242
|
-
1. Remember me checkbox
|
|
243
|
-
2. Forgot password link
|
|
244
|
-
3. Loading state
|
|
245
|
-
4. Error toast notifications
|
|
266
|
+
UNCOVERED REQUIREMENTS (auto-extracted from RTM):
|
|
267
|
+
1. REQ-login-004: Remember me checkbox
|
|
268
|
+
2. REQ-login-005: Forgot password link
|
|
269
|
+
3. REQ-login-007: Loading state
|
|
270
|
+
4. REQ-login-008: Error toast notifications
|
|
246
271
|
|
|
247
|
-
⚠️ NOT COMPLETE -
|
|
272
|
+
⚠️ NOT COMPLETE - Implementing uncovered requirements...
|
|
248
273
|
|
|
249
274
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
250
275
|
🔄 RALPH VERIFICATION [Iteration 2/5]
|
|
251
276
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
252
277
|
|
|
253
|
-
|
|
254
|
-
✅ Login form UI - implemented
|
|
255
|
-
✅ Email validation - implemented
|
|
256
|
-
✅ Password validation - implemented
|
|
257
|
-
✅ Remember me checkbox - implemented
|
|
258
|
-
✅ Forgot password link - implemented
|
|
259
|
-
✅ API integration - implemented
|
|
260
|
-
✅ Loading state - implemented
|
|
261
|
-
✅ Error toast notifications - implemented
|
|
278
|
+
📊 RTM Coverage Report: login
|
|
262
279
|
|
|
263
|
-
|
|
280
|
+
Requirements Traceability:
|
|
281
|
+
Total Requirements: 9
|
|
282
|
+
SPEC Covered: 9/9 (100%)
|
|
283
|
+
Feature Covered: 9/9 (100%)
|
|
284
|
+
Test Covered: 9/9 (100%)
|
|
285
|
+
|
|
286
|
+
Overall Coverage: 100% ✅ ABOVE 95% THRESHOLD
|
|
264
287
|
|
|
265
288
|
Build: ✅ Passed
|
|
266
289
|
Tests: ✅ 12/12 Passed
|
|
267
290
|
Type Check: ✅ No errors
|
|
268
291
|
|
|
269
292
|
✅ RALPH VERIFIED COMPLETE!
|
|
293
|
+
|
|
294
|
+
📄 RTM saved: .claude/vibe/rtm/login-rtm.md
|
|
270
295
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
271
296
|
```
|
|
272
297
|
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
# /vibe.trace
|
|
2
|
+
|
|
3
|
+
Generate and display Requirements Traceability Matrix (RTM).
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
/vibe.trace "feature-name" # Generate RTM for feature
|
|
9
|
+
/vibe.trace "feature-name" --html # Output as HTML
|
|
10
|
+
/vibe.trace "feature-name" --save # Save to file
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Description
|
|
14
|
+
|
|
15
|
+
Requirements Traceability Matrix (RTM) tracks the relationship between:
|
|
16
|
+
- **Requirements** (REQ-xxx-xxx)
|
|
17
|
+
- **SPEC sections** (Phase tasks)
|
|
18
|
+
- **Feature scenarios** (BDD)
|
|
19
|
+
- **Test files** (unit/integration tests)
|
|
20
|
+
|
|
21
|
+
## Process
|
|
22
|
+
|
|
23
|
+
### 1. Load Files
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
📄 .claude/vibe/specs/{feature-name}.md → SPEC
|
|
27
|
+
📄 .claude/vibe/features/{feature-name}.feature → Feature
|
|
28
|
+
📄 src/**/*.test.ts → Tests (auto-detect)
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### 2. Extract Mappings
|
|
32
|
+
|
|
33
|
+
For each requirement ID (REQ-xxx-xxx):
|
|
34
|
+
1. Find corresponding SPEC section
|
|
35
|
+
2. Find matching Feature scenario
|
|
36
|
+
3. Find related test file
|
|
37
|
+
|
|
38
|
+
### 3. Calculate Coverage
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
Coverage = (Full coverage items / Total requirements) × 100%
|
|
42
|
+
|
|
43
|
+
Full coverage = Has SPEC + Feature + Test
|
|
44
|
+
Partial = Missing one or more
|
|
45
|
+
None = Only in SPEC
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### 4. Output RTM
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
52
|
+
📊 REQUIREMENTS TRACEABILITY MATRIX: {feature-name}
|
|
53
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
54
|
+
|
|
55
|
+
## Summary
|
|
56
|
+
| Metric | Value |
|
|
57
|
+
|-------------------|----------|
|
|
58
|
+
| Total Requirements| 10 |
|
|
59
|
+
| SPEC Coverage | 10/10 |
|
|
60
|
+
| Feature Coverage | 8/10 |
|
|
61
|
+
| Test Coverage | 6/10 |
|
|
62
|
+
| **Overall** | **60%** |
|
|
63
|
+
|
|
64
|
+
## Traceability Matrix
|
|
65
|
+
|
|
66
|
+
| Requirement | SPEC | Feature | Test | Coverage |
|
|
67
|
+
|-------------|------|---------|------|----------|
|
|
68
|
+
| REQ-login-001 | ✅ Phase 1 | ✅ Scenario 1 | ✅ login.test.ts | ✅ Full |
|
|
69
|
+
| REQ-login-002 | ✅ Phase 1 | ✅ Scenario 2 | ❌ | ⚠️ Partial |
|
|
70
|
+
| REQ-login-003 | ✅ Phase 2 | ❌ | ❌ | ❌ None |
|
|
71
|
+
|
|
72
|
+
## Uncovered Requirements
|
|
73
|
+
|
|
74
|
+
The following requirements lack full coverage:
|
|
75
|
+
|
|
76
|
+
- **REQ-login-002**: Password validation
|
|
77
|
+
- Missing: Test file
|
|
78
|
+
|
|
79
|
+
- **REQ-login-003**: Remember me functionality
|
|
80
|
+
- Missing: Feature scenario, Test file
|
|
81
|
+
|
|
82
|
+
## Recommendations
|
|
83
|
+
|
|
84
|
+
⚠️ Coverage is at 60%. Consider:
|
|
85
|
+
- Add Feature scenarios for uncovered requirements
|
|
86
|
+
- Add test cases for uncovered requirements
|
|
87
|
+
|
|
88
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## Example
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
User: /vibe.trace "login"
|
|
95
|
+
|
|
96
|
+
Claude:
|
|
97
|
+
📊 Generating RTM for "login"...
|
|
98
|
+
|
|
99
|
+
Loading files:
|
|
100
|
+
✅ SPEC: .claude/vibe/specs/login.md (5 requirements)
|
|
101
|
+
✅ Feature: .claude/vibe/features/login.feature (4 scenarios)
|
|
102
|
+
✅ Tests: 3 test files found
|
|
103
|
+
|
|
104
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
105
|
+
📊 REQUIREMENTS TRACEABILITY MATRIX: login
|
|
106
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
107
|
+
|
|
108
|
+
## Summary
|
|
109
|
+
| Metric | Value |
|
|
110
|
+
|-------------------|----------|
|
|
111
|
+
| Total Requirements| 5 |
|
|
112
|
+
| SPEC Coverage | 5/5 |
|
|
113
|
+
| Feature Coverage | 4/5 |
|
|
114
|
+
| Test Coverage | 3/5 |
|
|
115
|
+
| **Overall** | **60%** |
|
|
116
|
+
|
|
117
|
+
## Traceability Matrix
|
|
118
|
+
|
|
119
|
+
| Requirement | SPEC | Feature | Test | Coverage |
|
|
120
|
+
|-------------|------|---------|------|----------|
|
|
121
|
+
| REQ-login-001 | ✅ | ✅ | ✅ | ✅ Full |
|
|
122
|
+
| REQ-login-002 | ✅ | ✅ | ✅ | ✅ Full |
|
|
123
|
+
| REQ-login-003 | ✅ | ✅ | ✅ | ✅ Full |
|
|
124
|
+
| REQ-login-004 | ✅ | ✅ | ❌ | ⚠️ Partial |
|
|
125
|
+
| REQ-login-005 | ✅ | ❌ | ❌ | ❌ None |
|
|
126
|
+
|
|
127
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## Tool Integration
|
|
131
|
+
|
|
132
|
+
The RTM generation uses vibe tools:
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
# Generate RTM
|
|
136
|
+
node -e "import('@su-record/vibe/tools').then(t => t.generateTraceabilityMatrix('login').then(m => console.log(t.formatMatrixAsMarkdown(m))))"
|
|
137
|
+
|
|
138
|
+
# Generate HTML
|
|
139
|
+
node -e "import('@su-record/vibe/tools').then(t => t.generateTraceabilityMatrix('login').then(m => console.log(t.formatMatrixAsHtml(m))))"
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## Options
|
|
143
|
+
|
|
144
|
+
| Option | Description |
|
|
145
|
+
|--------|-------------|
|
|
146
|
+
| `--html` | Output as HTML file |
|
|
147
|
+
| `--save` | Save to `.claude/vibe/reports/{feature}-rtm.md` |
|
|
148
|
+
| `--json` | Output as JSON |
|
|
149
|
+
|
|
150
|
+
## Coverage Targets
|
|
151
|
+
|
|
152
|
+
| Coverage Level | Status |
|
|
153
|
+
|----------------|--------|
|
|
154
|
+
| 90-100% | ✅ Excellent - Ready for release |
|
|
155
|
+
| 70-89% | ⚠️ Good - Minor gaps |
|
|
156
|
+
| 50-69% | ⚠️ Fair - Significant gaps |
|
|
157
|
+
| 0-49% | ❌ Poor - Major gaps |
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
ARGUMENTS: {feature-name}
|
|
@@ -20,11 +20,13 @@ export interface IterationState {
|
|
|
20
20
|
maxRetries: number;
|
|
21
21
|
startTime: Date;
|
|
22
22
|
endTime?: Date;
|
|
23
|
+
/** 파이프라인 모드 활성화 여부 (v2.6.0) */
|
|
24
|
+
pipelineEnabled?: boolean;
|
|
23
25
|
}
|
|
24
26
|
/**
|
|
25
27
|
* 새 작업 시작
|
|
26
28
|
*/
|
|
27
|
-
export declare function startIteration(featureName: string, phaseNames: string[], isUltrawork?: boolean, maxRetries?: number): IterationState;
|
|
29
|
+
export declare function startIteration(featureName: string, phaseNames: string[], isUltrawork?: boolean, maxRetries?: number, pipelineEnabled?: boolean): IterationState;
|
|
28
30
|
/**
|
|
29
31
|
* Phase 시작
|
|
30
32
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IterationTracker.d.ts","sourceRoot":"","sources":["../../src/lib/IterationTracker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;IACxE,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,CAAC,EAAE,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"IterationTracker.d.ts","sourceRoot":"","sources":["../../src/lib/IterationTracker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;IACxE,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,+BAA+B;IAC/B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAKD;;GAEG;AACH,wBAAgB,cAAc,CAC5B,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAAE,EACpB,WAAW,GAAE,OAAe,EAC5B,UAAU,GAAE,MAAU,EACtB,eAAe,GAAE,OAAe,GAC/B,cAAc,CAkBhB;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAWpE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAUvE;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE,GAAG,IAAI,CAahH;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,cAAc,GAAG,IAAI,CAQzD;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,cAAc,GAAG,IAAI,CAEvD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,GAAE,cAA8B,GAAG,MAAM,CAwB5E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAMpG;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAEpF;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAgBrE;AAgBD;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAalH;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAkB/D"}
|