@boshu2/vibe-check 1.7.0 → 1.8.1
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/.agents/bundles/actionable-coaching-plan-2025-12-02.md +209 -0
- package/.agents/plans/git-forensics-enhancement-2025-12-05.md +493 -0
- package/.claude/skills/typescript-review.md +152 -0
- package/CHANGELOG.md +41 -5
- package/CLAUDE.md +85 -23
- package/Makefile +43 -19
- package/README.md +178 -172
- package/SECURITY.md +5 -1
- package/assets/logo-dark.svg +47 -0
- package/assets/logo.svg +47 -0
- package/claude-progress.json +28 -7
- package/claude-progress.txt +48 -0
- package/dist/analyzers/patterns.d.ts +62 -0
- package/dist/analyzers/patterns.d.ts.map +1 -0
- package/dist/analyzers/patterns.js +103 -0
- package/dist/analyzers/patterns.js.map +1 -0
- package/dist/analyzers/quality.d.ts +58 -0
- package/dist/analyzers/quality.d.ts.map +1 -0
- package/dist/analyzers/quality.js +114 -0
- package/dist/analyzers/quality.js.map +1 -0
- package/dist/analyzers/sessions.d.ts +45 -0
- package/dist/analyzers/sessions.d.ts.map +1 -0
- package/dist/analyzers/sessions.js +123 -0
- package/dist/analyzers/sessions.js.map +1 -0
- package/dist/cli.js +4 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/analyze.d.ts.map +1 -1
- package/dist/commands/analyze.js +5 -0
- package/dist/commands/analyze.js.map +1 -1
- package/dist/commands/forensics.d.ts +29 -0
- package/dist/commands/forensics.d.ts.map +1 -0
- package/dist/commands/forensics.js +213 -0
- package/dist/commands/forensics.js.map +1 -0
- package/dist/commands/index.d.ts +4 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +11 -1
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/insights.d.ts +3 -0
- package/dist/commands/insights.d.ts.map +1 -0
- package/dist/commands/insights.js +120 -0
- package/dist/commands/insights.js.map +1 -0
- package/dist/commands/pipeline.d.ts +3 -0
- package/dist/commands/pipeline.d.ts.map +1 -0
- package/dist/commands/pipeline.js +485 -0
- package/dist/commands/pipeline.js.map +1 -0
- package/dist/commands/profile.d.ts +0 -1
- package/dist/commands/profile.d.ts.map +1 -1
- package/dist/commands/profile.js +0 -4
- package/dist/commands/profile.js.map +1 -1
- package/dist/commands/session.d.ts +9 -0
- package/dist/commands/session.d.ts.map +1 -1
- package/dist/commands/session.js +95 -0
- package/dist/commands/session.js.map +1 -1
- package/dist/commands/sessions.d.ts +20 -0
- package/dist/commands/sessions.d.ts.map +1 -0
- package/dist/commands/sessions.js +201 -0
- package/dist/commands/sessions.js.map +1 -0
- package/dist/commands/watch.d.ts.map +1 -1
- package/dist/commands/watch.js +124 -7
- package/dist/commands/watch.js.map +1 -1
- package/dist/inner-loop/context-amnesia.d.ts +20 -0
- package/dist/inner-loop/context-amnesia.d.ts.map +1 -0
- package/dist/inner-loop/context-amnesia.js +249 -0
- package/dist/inner-loop/context-amnesia.js.map +1 -0
- package/dist/inner-loop/index.d.ts +39 -0
- package/dist/inner-loop/index.d.ts.map +1 -0
- package/dist/inner-loop/index.js +208 -0
- package/dist/inner-loop/index.js.map +1 -0
- package/dist/inner-loop/instruction-drift.d.ts +28 -0
- package/dist/inner-loop/instruction-drift.d.ts.map +1 -0
- package/dist/inner-loop/instruction-drift.js +260 -0
- package/dist/inner-loop/instruction-drift.js.map +1 -0
- package/dist/inner-loop/logging-only.d.ts +30 -0
- package/dist/inner-loop/logging-only.d.ts.map +1 -0
- package/dist/inner-loop/logging-only.js +264 -0
- package/dist/inner-loop/logging-only.js.map +1 -0
- package/dist/inner-loop/tests-passing-lie.d.ts +34 -0
- package/dist/inner-loop/tests-passing-lie.d.ts.map +1 -0
- package/dist/inner-loop/tests-passing-lie.js +213 -0
- package/dist/inner-loop/tests-passing-lie.js.map +1 -0
- package/dist/inner-loop/types.d.ts +111 -0
- package/dist/inner-loop/types.d.ts.map +1 -0
- package/dist/inner-loop/types.js +29 -0
- package/dist/inner-loop/types.js.map +1 -0
- package/dist/storage/index.d.ts +1 -0
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +11 -1
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/spiral-history.d.ts +62 -0
- package/dist/storage/spiral-history.d.ts.map +1 -0
- package/dist/storage/spiral-history.js +265 -0
- package/dist/storage/spiral-history.js.map +1 -0
- package/docs/ARCHITECTURE.md +2 -10
- package/docs/FEATURES.md +340 -0
- package/docs/GAMIFICATION.md +19 -266
- package/docs/VIBE-ECOSYSTEM.md +12 -78
- package/feature-list.json +140 -88
- package/package.json +1 -1
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
# TypeScript Code Review Skill
|
|
2
|
+
|
|
3
|
+
**Trigger:** User asks for TypeScript review, type safety audit, or TS best practices check.
|
|
4
|
+
|
|
5
|
+
**Purpose:** Systematic TypeScript code review focusing on type safety, patterns, and idiomatic usage.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Review Checklist
|
|
10
|
+
|
|
11
|
+
### 1. Compiler Configuration (tsconfig.json)
|
|
12
|
+
|
|
13
|
+
| Setting | Recommended | Why |
|
|
14
|
+
|---------|-------------|-----|
|
|
15
|
+
| `strict` | `true` | Enables all strict checks |
|
|
16
|
+
| `noImplicitAny` | `true` (via strict) | No silent `any` types |
|
|
17
|
+
| `strictNullChecks` | `true` (via strict) | Catch null/undefined errors |
|
|
18
|
+
| `noUncheckedIndexedAccess` | `true` | Arrays return `T \| undefined` |
|
|
19
|
+
| `exactOptionalPropertyTypes` | `true` | Distinguish `undefined` vs missing |
|
|
20
|
+
| `noImplicitReturns` | `true` | All code paths must return |
|
|
21
|
+
| `noFallthroughCasesInSwitch` | `true` | Prevent switch fallthrough bugs |
|
|
22
|
+
|
|
23
|
+
### 2. Type Safety Issues
|
|
24
|
+
|
|
25
|
+
**Critical (fix immediately):**
|
|
26
|
+
- [ ] Explicit `any` types
|
|
27
|
+
- [ ] Type assertions without validation (`as Type`)
|
|
28
|
+
- [ ] Non-null assertions (`!`) without checks
|
|
29
|
+
- [ ] `@ts-ignore` or `@ts-expect-error` comments
|
|
30
|
+
- [ ] Missing return types on exported functions
|
|
31
|
+
|
|
32
|
+
**Warning (improve when possible):**
|
|
33
|
+
- [ ] Implicit `any` in callbacks
|
|
34
|
+
- [ ] Overly broad types (`object`, `{}`, `Function`)
|
|
35
|
+
- [ ] Missing generics where reuse is possible
|
|
36
|
+
- [ ] Type assertions that could be type guards
|
|
37
|
+
|
|
38
|
+
### 3. Type Design Patterns
|
|
39
|
+
|
|
40
|
+
**Good patterns to look for:**
|
|
41
|
+
```typescript
|
|
42
|
+
// Discriminated unions
|
|
43
|
+
type Result<T> =
|
|
44
|
+
| { success: true; data: T }
|
|
45
|
+
| { success: false; error: string };
|
|
46
|
+
|
|
47
|
+
// Branded types for IDs
|
|
48
|
+
type UserId = string & { readonly brand: unique symbol };
|
|
49
|
+
|
|
50
|
+
// Const assertions for literals
|
|
51
|
+
const STATUSES = ['pending', 'active', 'done'] as const;
|
|
52
|
+
type Status = typeof STATUSES[number];
|
|
53
|
+
|
|
54
|
+
// Type guards
|
|
55
|
+
function isUser(obj: unknown): obj is User {
|
|
56
|
+
return typeof obj === 'object' && obj !== null && 'id' in obj;
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
**Anti-patterns to flag:**
|
|
61
|
+
```typescript
|
|
62
|
+
// ❌ Stringly-typed
|
|
63
|
+
function setStatus(status: string) { }
|
|
64
|
+
|
|
65
|
+
// ✅ Union type
|
|
66
|
+
function setStatus(status: 'pending' | 'active' | 'done') { }
|
|
67
|
+
|
|
68
|
+
// ❌ Optional chaining hiding bugs
|
|
69
|
+
const name = user?.profile?.name ?? 'Unknown';
|
|
70
|
+
|
|
71
|
+
// ✅ Explicit null handling
|
|
72
|
+
if (!user || !user.profile) {
|
|
73
|
+
throw new Error('User profile required');
|
|
74
|
+
}
|
|
75
|
+
const name = user.profile.name;
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### 4. Interface vs Type
|
|
79
|
+
|
|
80
|
+
| Use Interface | Use Type |
|
|
81
|
+
|---------------|----------|
|
|
82
|
+
| Object shapes | Unions, intersections |
|
|
83
|
+
| Extendable contracts | Computed types |
|
|
84
|
+
| Class implementations | Mapped types |
|
|
85
|
+
| Public API | Internal aliases |
|
|
86
|
+
|
|
87
|
+
### 5. Export Hygiene
|
|
88
|
+
|
|
89
|
+
- [ ] Are internal types exported unnecessarily?
|
|
90
|
+
- [ ] Is there a central `types.ts` for shared types?
|
|
91
|
+
- [ ] Are re-exports organized (`index.ts` barrels)?
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## Review Process
|
|
96
|
+
|
|
97
|
+
1. **Check tsconfig.json** - Verify strict settings
|
|
98
|
+
2. **Run `tsc --noEmit`** - Catch all compiler errors
|
|
99
|
+
3. **Search for anti-patterns:**
|
|
100
|
+
```bash
|
|
101
|
+
grep -r ": any" src/
|
|
102
|
+
grep -r "as " src/ | grep -v "import"
|
|
103
|
+
grep -r "@ts-ignore" src/
|
|
104
|
+
grep -r "!" src/ | grep -v "!=" | grep -v "!=="
|
|
105
|
+
```
|
|
106
|
+
4. **Review types.ts** - Check type design
|
|
107
|
+
5. **Sample 3-5 files** - Deep review patterns
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## Output Format
|
|
112
|
+
|
|
113
|
+
```markdown
|
|
114
|
+
## TypeScript Review: [Project Name]
|
|
115
|
+
|
|
116
|
+
### Config Score: X/10
|
|
117
|
+
[tsconfig.json findings]
|
|
118
|
+
|
|
119
|
+
### Type Safety Score: X/10
|
|
120
|
+
[Anti-pattern counts and examples]
|
|
121
|
+
|
|
122
|
+
### Type Design Score: X/10
|
|
123
|
+
[Pattern quality assessment]
|
|
124
|
+
|
|
125
|
+
### Top Issues
|
|
126
|
+
1. [Most critical issue]
|
|
127
|
+
2. [Second issue]
|
|
128
|
+
3. [Third issue]
|
|
129
|
+
|
|
130
|
+
### Recommendations
|
|
131
|
+
- [ ] [Actionable fix 1]
|
|
132
|
+
- [ ] [Actionable fix 2]
|
|
133
|
+
- [ ] [Actionable fix 3]
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## Quick Fixes
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
# Find all `any` types
|
|
142
|
+
grep -rn ": any" src/
|
|
143
|
+
|
|
144
|
+
# Find type assertions
|
|
145
|
+
grep -rn " as [A-Z]" src/
|
|
146
|
+
|
|
147
|
+
# Find non-null assertions
|
|
148
|
+
grep -rn "\![^=]" src/
|
|
149
|
+
|
|
150
|
+
# Run strict type check
|
|
151
|
+
npx tsc --noEmit --strict
|
|
152
|
+
```
|
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,41 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [1.8.0] - 2025-12-05
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **Git Forensics** - `vibe-check forensics` command for deep pattern analysis (VIBE-045)
|
|
15
|
+
- Detects debug spirals ("take N" patterns indicating fix-retry loops)
|
|
16
|
+
- Detects vague commits (<20 characters)
|
|
17
|
+
- Detects context amnesia (repeatedly revisiting same scope)
|
|
18
|
+
- Quality metrics: conventional commit %, descriptive commit %
|
|
19
|
+
- Recommendations: sweep, maintain, or celebrate
|
|
20
|
+
- **Session Detection** - `vibe-check sessions` command for work session analysis (VIBE-046)
|
|
21
|
+
- Identifies sessions from commit timestamps (90-minute gap threshold)
|
|
22
|
+
- Session statistics: avg duration, commits per session, longest/shortest
|
|
23
|
+
- Proven algorithm from release-engineering retrospective
|
|
24
|
+
- **Brand Assets** - Professional logo and visual identity
|
|
25
|
+
- SVG logo with spiral-to-checkmark concept
|
|
26
|
+
- Light and dark mode variants
|
|
27
|
+
- Tagline: "catch the spiral before it catches you"
|
|
28
|
+
- **Actionable Coaching** - Personalized coaching based on your spiral history
|
|
29
|
+
- `vibe-check insights` - View your spiral patterns and what works for you
|
|
30
|
+
- Watch mode shows personalized alerts
|
|
31
|
+
- Session end shows coaching for spirals hit during the session
|
|
32
|
+
- All spirals auto-recorded to `~/.vibe-check/spiral-history.ndjson`
|
|
33
|
+
|
|
34
|
+
### Changed
|
|
35
|
+
|
|
36
|
+
- **README Redesign** - Modern visual flow inspired by top npm packages
|
|
37
|
+
- Centered hero section with logo and badges
|
|
38
|
+
- Progressive disclosure structure
|
|
39
|
+
- Cleaner section organization with horizontal rules
|
|
40
|
+
- Scannable tables instead of prose
|
|
41
|
+
- **Security Policy Updated** - Added forensics and sessions to threat model
|
|
42
|
+
|
|
43
|
+
## [1.7.0] - 2025-12-02
|
|
44
|
+
|
|
10
45
|
### Added
|
|
11
46
|
- **Session Integration** - New `vibe-check session` command suite for Claude Code integration
|
|
12
47
|
- `session start` - Capture baseline metrics at session start
|
|
@@ -16,11 +51,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
16
51
|
- Automatic failure pattern detection (Debug Spiral, Context Amnesia, Velocity Crash, Trust Erosion, Flow Disruption)
|
|
17
52
|
- Auto-generated learnings based on metrics and patterns
|
|
18
53
|
- Baseline comparison with last 7 days
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
54
|
+
|
|
55
|
+
### Changed
|
|
56
|
+
- Major cleanup: removed 20 files, -3900 lines of speculative features
|
|
57
|
+
- Removed learning system (zero adoption evidence)
|
|
58
|
+
- Removed advanced gamification (challenges, prestige, leaderboards)
|
|
59
|
+
- Simplified to core value: metrics, coaching, insights
|
|
24
60
|
|
|
25
61
|
## [1.6.0] - 2025-11-30
|
|
26
62
|
|
package/CLAUDE.md
CHANGED
|
@@ -140,11 +140,17 @@ src/
|
|
|
140
140
|
├── commands/
|
|
141
141
|
│ ├── index.ts # Command exports
|
|
142
142
|
│ ├── analyze.ts # Main analyze command
|
|
143
|
-
│ ├── session.ts # Session start/end/status
|
|
143
|
+
│ ├── session.ts # Session start/end/status + coaching
|
|
144
144
|
│ ├── dashboard.ts # Visual dashboard command
|
|
145
|
-
│ ├──
|
|
146
|
-
│ ├──
|
|
145
|
+
│ ├── watch.ts # Real-time monitoring + coaching
|
|
146
|
+
│ ├── insights.ts # Spiral patterns + recommendations
|
|
147
|
+
│ ├── timeline.ts # Session history
|
|
147
148
|
│ └── profile.ts # Profile/stats command
|
|
149
|
+
├── storage/
|
|
150
|
+
│ ├── spiral-history.ts # Spiral history NDJSON log
|
|
151
|
+
│ ├── atomic.ts # Atomic file operations
|
|
152
|
+
│ ├── commit-log.ts # Commit log storage
|
|
153
|
+
│ └── timeline-store.ts # Timeline cache
|
|
148
154
|
├── metrics/
|
|
149
155
|
│ ├── index.ts # Orchestrates all metrics
|
|
150
156
|
│ ├── velocity.ts # Iteration velocity
|
|
@@ -162,17 +168,8 @@ src/
|
|
|
162
168
|
│ ├── xp.ts # XP calculation and levels
|
|
163
169
|
│ ├── streaks.ts # Daily/weekly streak tracking
|
|
164
170
|
│ ├── achievements.ts # Achievement definitions and checks
|
|
165
|
-
│ ├──
|
|
166
|
-
│ ├── intervention-memory.ts # Track what breaks spirals
|
|
171
|
+
│ ├── stats.ts # Weekly statistics
|
|
167
172
|
│ └── profile.ts # Profile persistence (.vibe-check/)
|
|
168
|
-
├── learning/
|
|
169
|
-
│ ├── index.ts # Learning system exports
|
|
170
|
-
│ ├── types.ts # Learning/lesson types
|
|
171
|
-
│ ├── storage.ts # Learnings persistence
|
|
172
|
-
│ ├── cadence.ts # Automatic learning cadence
|
|
173
|
-
│ ├── synthesis.ts # Lesson synthesis from patterns
|
|
174
|
-
│ ├── surfacing.ts # Surface lessons during analyze
|
|
175
|
-
│ └── lessons-storage.ts # Lessons database
|
|
176
173
|
├── sessions/
|
|
177
174
|
│ └── index.ts # Session tracking and baseline comparison
|
|
178
175
|
├── calibration/
|
|
@@ -186,6 +183,13 @@ src/
|
|
|
186
183
|
├── score/
|
|
187
184
|
│ ├── index.ts # VibeScore calculation
|
|
188
185
|
│ └── weights.ts # Metric weights
|
|
186
|
+
├── inner-loop/
|
|
187
|
+
│ ├── index.ts # Inner loop failure detection aggregator
|
|
188
|
+
│ ├── types.ts # Types and configuration
|
|
189
|
+
│ ├── tests-passing-lie.ts # "Tests Passing" Lie detector
|
|
190
|
+
│ ├── context-amnesia.ts # Context Amnesia detector
|
|
191
|
+
│ ├── instruction-drift.ts # Instruction Drift detector
|
|
192
|
+
│ └── logging-only.ts # Debug Loop Spiral detector
|
|
189
193
|
└── output/
|
|
190
194
|
├── index.ts # Output format router
|
|
191
195
|
├── terminal.ts # Colored terminal output
|
|
@@ -197,9 +201,14 @@ dashboard/ # Static HTML dashboard
|
|
|
197
201
|
├── app.js # Dashboard JavaScript
|
|
198
202
|
└── styles.css # Dashboard styles
|
|
199
203
|
|
|
200
|
-
|
|
204
|
+
~/.vibe-check/ # Global profile data (in home dir)
|
|
201
205
|
├── profile.json # XP, streaks, achievements
|
|
206
|
+
├── spiral-history.ndjson # Spiral log for coaching
|
|
202
207
|
└── calibration.json # Calibration samples
|
|
208
|
+
|
|
209
|
+
.vibe-check/ # Local data (per-repo)
|
|
210
|
+
├── active-session.json # Active session state
|
|
211
|
+
└── timeline.json # Timeline cache
|
|
203
212
|
```
|
|
204
213
|
|
|
205
214
|
## Commands
|
|
@@ -229,29 +238,29 @@ vibe-check level --calibrate 3 # Record calibration sample
|
|
|
229
238
|
```bash
|
|
230
239
|
vibe-check session start --level 3 # Start session, capture baseline
|
|
231
240
|
vibe-check session status # Show active session
|
|
232
|
-
vibe-check session end --format json # End session, get metrics +
|
|
241
|
+
vibe-check session end --format json # End session, get metrics + coaching
|
|
233
242
|
```
|
|
234
243
|
|
|
235
|
-
Output includes failure pattern detection
|
|
244
|
+
Output includes failure pattern detection and personalized coaching:
|
|
236
245
|
```json
|
|
237
246
|
{
|
|
238
247
|
"metrics": { "trust_pass_rate": 92, "rework_ratio": 11, ... },
|
|
239
248
|
"retro": {
|
|
240
249
|
"failure_patterns_hit": [],
|
|
241
|
-
"failure_patterns_avoided": ["Debug Spiral", "Context Amnesia"]
|
|
242
|
-
"learnings": ["Test-first approach prevented spirals"]
|
|
250
|
+
"failure_patterns_avoided": ["Debug Spiral", "Context Amnesia"]
|
|
243
251
|
}
|
|
244
252
|
}
|
|
245
253
|
```
|
|
246
254
|
|
|
247
|
-
###
|
|
255
|
+
### Insights Command (Coaching)
|
|
248
256
|
```bash
|
|
249
|
-
vibe-check
|
|
250
|
-
vibe-check
|
|
251
|
-
vibe-check
|
|
252
|
-
vibe-check lesson --apply <id> # Apply a lesson
|
|
257
|
+
vibe-check insights # Your spiral patterns + what works
|
|
258
|
+
vibe-check insights --days 90 # Longer history
|
|
259
|
+
vibe-check insights --format json # Export for analysis
|
|
253
260
|
```
|
|
254
261
|
|
|
262
|
+
Shows your spiral history, patterns by frequency, what resolutions worked, and personalized recommendations.
|
|
263
|
+
|
|
255
264
|
## The 5 Metrics
|
|
256
265
|
|
|
257
266
|
| Metric | Measures | Threshold |
|
|
@@ -272,3 +281,56 @@ A "debug spiral" is detected when 3+ consecutive fix commits target the same com
|
|
|
272
281
|
- `SSL_TLS` - Certificate problems
|
|
273
282
|
- `IMAGE_REGISTRY` - Container pull issues
|
|
274
283
|
- `GITOPS_DRIFT` - Sync/reconciliation issues
|
|
284
|
+
|
|
285
|
+
**Coaching Integration:** Spirals are automatically recorded to `~/.vibe-check/spiral-history.ndjson`. Watch mode and session end show personalized advice based on what's worked before for you.
|
|
286
|
+
|
|
287
|
+
## Inner Loop Failure Pattern Detection
|
|
288
|
+
|
|
289
|
+
vibe-check detects the 4 "Inner Loop Disasters" from vibe coding:
|
|
290
|
+
|
|
291
|
+
| Pattern | Detects | How |
|
|
292
|
+
|---------|---------|-----|
|
|
293
|
+
| **"Tests Passing" Lie** | AI claims success but code doesn't work | Commits claiming "fix/done/working" followed by immediate fixes |
|
|
294
|
+
| **Context Amnesia** | AI forgets instructions, re-does work | Reverts, reimplementations, repeated similar fixes |
|
|
295
|
+
| **Instruction Drift** | AI "improves" things not asked for | Unrequested refactors, scope explosion, file changes outside intent |
|
|
296
|
+
| **Debug Loop Spiral** | AI adds logging instead of fixing | Consecutive commits adding console.log/print without fixes |
|
|
297
|
+
|
|
298
|
+
### Integration Points
|
|
299
|
+
|
|
300
|
+
**Session End Output:**
|
|
301
|
+
```json
|
|
302
|
+
{
|
|
303
|
+
"inner_loop": {
|
|
304
|
+
"health": "warning",
|
|
305
|
+
"issues_detected": 2,
|
|
306
|
+
"tests_passing_lies": 1,
|
|
307
|
+
"context_amnesia_incidents": 0,
|
|
308
|
+
"instruction_drift_commits": 1,
|
|
309
|
+
"debug_loop_detected": false,
|
|
310
|
+
"recommendations": ["..."]
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
**Watch Mode:** Real-time detection alerts when inner loop issues are detected.
|
|
316
|
+
|
|
317
|
+
### Architecture
|
|
318
|
+
|
|
319
|
+
```
|
|
320
|
+
src/inner-loop/
|
|
321
|
+
├── index.ts # Aggregates all detectors
|
|
322
|
+
├── types.ts # Inner loop types and config
|
|
323
|
+
├── tests-passing-lie.ts # "Tests Passing" Lie detector
|
|
324
|
+
├── context-amnesia.ts # Context Amnesia detector
|
|
325
|
+
├── instruction-drift.ts # Instruction Drift detector
|
|
326
|
+
└── logging-only.ts # Debug Loop Spiral (logging) detector
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
### Emergency Protocol
|
|
330
|
+
|
|
331
|
+
When critical inner loop failures are detected:
|
|
332
|
+
|
|
333
|
+
```
|
|
334
|
+
🚨 EMERGENCY PROTOCOL: Multiple inner loop failures detected.
|
|
335
|
+
STOP → git status → backup → start simple
|
|
336
|
+
```
|
package/Makefile
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# vibe-check Makefile
|
|
2
2
|
# All npm commands and development shortcuts
|
|
3
3
|
|
|
4
|
-
.PHONY: help build dev start test test-coverage lint clean install publish dashboard watch profile analyze session-start session-end
|
|
4
|
+
.PHONY: help build dev start test test-coverage lint clean install publish dashboard watch profile analyze session-start session-end release-patch release-minor release-major github-release
|
|
5
5
|
|
|
6
6
|
# Default target
|
|
7
7
|
help:
|
|
@@ -19,12 +19,13 @@ help:
|
|
|
19
19
|
@echo " make test-coverage - Run tests with coverage report"
|
|
20
20
|
@echo " make test-watch - Run tests in watch mode"
|
|
21
21
|
@echo ""
|
|
22
|
-
@echo "Publishing:"
|
|
22
|
+
@echo "Publishing & Releases:"
|
|
23
|
+
@echo " make release-patch - Full release: patch version (1.0.x)"
|
|
24
|
+
@echo " make release-minor - Full release: minor version (1.x.0)"
|
|
25
|
+
@echo " make release-major - Full release: major version (x.0.0)"
|
|
26
|
+
@echo " make github-release - Create GitHub release for current version"
|
|
27
|
+
@echo " make publish - npm publish only (no git/github)"
|
|
23
28
|
@echo " make install - Install dependencies"
|
|
24
|
-
@echo " make publish - Build, test, and publish to npm"
|
|
25
|
-
@echo " make version-patch - Bump patch version (1.0.x)"
|
|
26
|
-
@echo " make version-minor - Bump minor version (1.x.0)"
|
|
27
|
-
@echo " make version-major - Bump major version (x.0.0)"
|
|
28
29
|
@echo ""
|
|
29
30
|
@echo "Vibe-Check Commands:"
|
|
30
31
|
@echo " make dashboard - Open visual dashboard"
|
|
@@ -88,6 +89,42 @@ version-minor:
|
|
|
88
89
|
version-major:
|
|
89
90
|
npm version major
|
|
90
91
|
|
|
92
|
+
# ============================================
|
|
93
|
+
# Release Workflow (Full Automation)
|
|
94
|
+
# ============================================
|
|
95
|
+
|
|
96
|
+
# Full release: bump, tag, push, GitHub release, npm publish
|
|
97
|
+
release-patch: build test
|
|
98
|
+
@echo "📦 Releasing patch version..."
|
|
99
|
+
npm version patch -m "chore(release): %s"
|
|
100
|
+
git push --follow-tags
|
|
101
|
+
$(MAKE) github-release
|
|
102
|
+
npm publish --access=public
|
|
103
|
+
@echo "✅ Released v$$(node -p "require('./package.json').version")"
|
|
104
|
+
|
|
105
|
+
release-minor: build test
|
|
106
|
+
@echo "📦 Releasing minor version..."
|
|
107
|
+
npm version minor -m "chore(release): %s"
|
|
108
|
+
git push --follow-tags
|
|
109
|
+
$(MAKE) github-release
|
|
110
|
+
npm publish --access=public
|
|
111
|
+
@echo "✅ Released v$$(node -p "require('./package.json').version")"
|
|
112
|
+
|
|
113
|
+
release-major: build test
|
|
114
|
+
@echo "📦 Releasing major version..."
|
|
115
|
+
npm version major -m "chore(release): %s"
|
|
116
|
+
git push --follow-tags
|
|
117
|
+
$(MAKE) github-release
|
|
118
|
+
npm publish --access=public
|
|
119
|
+
@echo "✅ Released v$$(node -p "require('./package.json').version")"
|
|
120
|
+
|
|
121
|
+
# Create GitHub release from latest tag
|
|
122
|
+
github-release:
|
|
123
|
+
@VERSION=$$(node -p "require('./package.json').version"); \
|
|
124
|
+
gh release create "v$$VERSION" \
|
|
125
|
+
--title "v$$VERSION" \
|
|
126
|
+
--generate-notes
|
|
127
|
+
|
|
91
128
|
# ============================================
|
|
92
129
|
# Vibe-Check Commands
|
|
93
130
|
# ============================================
|
|
@@ -137,19 +174,6 @@ session-end-json:
|
|
|
137
174
|
session-status:
|
|
138
175
|
node dist/cli.js session status
|
|
139
176
|
|
|
140
|
-
# ============================================
|
|
141
|
-
# Learning Commands
|
|
142
|
-
# ============================================
|
|
143
|
-
|
|
144
|
-
learn:
|
|
145
|
-
node dist/cli.js learn
|
|
146
|
-
|
|
147
|
-
lessons:
|
|
148
|
-
node dist/cli.js lesson --list
|
|
149
|
-
|
|
150
|
-
lesson-stats:
|
|
151
|
-
node dist/cli.js lesson --stats
|
|
152
|
-
|
|
153
177
|
# ============================================
|
|
154
178
|
# Shortcuts
|
|
155
179
|
# ============================================
|