@boshu2/vibe-check 1.5.0 → 1.6.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.
Files changed (148) hide show
  1. package/.agents/bundles/insight-mining-dashboard-research-2025-11-30.md +400 -0
  2. package/.agents/bundles/storage-enhancement-research-2025-11-30.md +292 -0
  3. package/.agents/bundles/timeline-feature-research-complete-2025-11-30.md +301 -0
  4. package/.agents/plans/insight-dashboard-plan-2025-11-30.md +1130 -0
  5. package/.agents/plans/json-storage-enhancement-plan.md +717 -0
  6. package/.agents/plans/storage-hardening-and-cache-plan.md +592 -0
  7. package/.agents/plans/test-coverage-gaps-plan.md +1117 -0
  8. package/.agents/plans/timeline-feature-plan.md +193 -0
  9. package/.agents/plans/vibe_timeline_research_findings.md +553 -0
  10. package/.claude/settings.local.json +1 -0
  11. package/.vibe-check/.gitignore +6 -0
  12. package/CHANGELOG.md +46 -0
  13. package/CLAUDE.md +24 -0
  14. package/CONTRIBUTING.md +227 -0
  15. package/README.md +165 -144
  16. package/claude-progress.json +191 -9
  17. package/claude-progress.txt +257 -0
  18. package/dashboard/app.js +75 -2
  19. package/dashboard/dashboard-data.json +653 -0
  20. package/dashboard/index.html +13 -0
  21. package/dashboard/styles.css +61 -0
  22. package/dist/analysis/cross-session-analysis.d.ts +68 -0
  23. package/dist/analysis/cross-session-analysis.d.ts.map +1 -0
  24. package/dist/analysis/cross-session-analysis.js +174 -0
  25. package/dist/analysis/cross-session-analysis.js.map +1 -0
  26. package/dist/analysis/index.d.ts +2 -0
  27. package/dist/analysis/index.d.ts.map +1 -0
  28. package/dist/analysis/index.js +12 -0
  29. package/dist/analysis/index.js.map +1 -0
  30. package/dist/cli.js +10 -1
  31. package/dist/cli.js.map +1 -1
  32. package/dist/commands/analyze.d.ts +2 -0
  33. package/dist/commands/analyze.d.ts.map +1 -1
  34. package/dist/commands/analyze.js +105 -2
  35. package/dist/commands/analyze.js.map +1 -1
  36. package/dist/commands/cache.d.ts +6 -0
  37. package/dist/commands/cache.d.ts.map +1 -0
  38. package/dist/commands/cache.js +168 -0
  39. package/dist/commands/cache.js.map +1 -0
  40. package/dist/commands/dashboard.d.ts +8 -0
  41. package/dist/commands/dashboard.d.ts.map +1 -0
  42. package/dist/commands/dashboard.js +109 -0
  43. package/dist/commands/dashboard.js.map +1 -0
  44. package/dist/commands/index.d.ts +3 -0
  45. package/dist/commands/index.d.ts.map +1 -1
  46. package/dist/commands/index.js +8 -1
  47. package/dist/commands/index.js.map +1 -1
  48. package/dist/commands/timeline.d.ts +14 -0
  49. package/dist/commands/timeline.d.ts.map +1 -0
  50. package/dist/commands/timeline.js +462 -0
  51. package/dist/commands/timeline.js.map +1 -0
  52. package/dist/git.d.ts +24 -0
  53. package/dist/git.d.ts.map +1 -1
  54. package/dist/git.js +94 -0
  55. package/dist/git.js.map +1 -1
  56. package/dist/insights/generators.d.ts +44 -0
  57. package/dist/insights/generators.d.ts.map +1 -0
  58. package/dist/insights/generators.js +289 -0
  59. package/dist/insights/generators.js.map +1 -0
  60. package/dist/insights/index.d.ts +16 -0
  61. package/dist/insights/index.d.ts.map +1 -0
  62. package/dist/insights/index.js +171 -0
  63. package/dist/insights/index.js.map +1 -0
  64. package/dist/insights/types.d.ts +93 -0
  65. package/dist/insights/types.d.ts.map +1 -0
  66. package/dist/insights/types.js +6 -0
  67. package/dist/insights/types.js.map +1 -0
  68. package/dist/output/timeline-html.d.ts +6 -0
  69. package/dist/output/timeline-html.d.ts.map +1 -0
  70. package/dist/output/timeline-html.js +389 -0
  71. package/dist/output/timeline-html.js.map +1 -0
  72. package/dist/output/timeline-markdown.d.ts +6 -0
  73. package/dist/output/timeline-markdown.d.ts.map +1 -0
  74. package/dist/output/timeline-markdown.js +167 -0
  75. package/dist/output/timeline-markdown.js.map +1 -0
  76. package/dist/output/timeline.d.ts +9 -0
  77. package/dist/output/timeline.d.ts.map +1 -0
  78. package/dist/output/timeline.js +318 -0
  79. package/dist/output/timeline.js.map +1 -0
  80. package/dist/patterns/detour.d.ts +32 -0
  81. package/dist/patterns/detour.d.ts.map +1 -0
  82. package/dist/patterns/detour.js +137 -0
  83. package/dist/patterns/detour.js.map +1 -0
  84. package/dist/patterns/flow-state.d.ts +16 -0
  85. package/dist/patterns/flow-state.d.ts.map +1 -0
  86. package/dist/patterns/flow-state.js +40 -0
  87. package/dist/patterns/flow-state.js.map +1 -0
  88. package/dist/patterns/index.d.ts +8 -0
  89. package/dist/patterns/index.d.ts.map +1 -0
  90. package/dist/patterns/index.js +22 -0
  91. package/dist/patterns/index.js.map +1 -0
  92. package/dist/patterns/intervention-effectiveness.d.ts +42 -0
  93. package/dist/patterns/intervention-effectiveness.d.ts.map +1 -0
  94. package/dist/patterns/intervention-effectiveness.js +196 -0
  95. package/dist/patterns/intervention-effectiveness.js.map +1 -0
  96. package/dist/patterns/late-night.d.ts +30 -0
  97. package/dist/patterns/late-night.d.ts.map +1 -0
  98. package/dist/patterns/late-night.js +141 -0
  99. package/dist/patterns/late-night.js.map +1 -0
  100. package/dist/patterns/post-delete-sprint.d.ts +28 -0
  101. package/dist/patterns/post-delete-sprint.d.ts.map +1 -0
  102. package/dist/patterns/post-delete-sprint.js +85 -0
  103. package/dist/patterns/post-delete-sprint.js.map +1 -0
  104. package/dist/patterns/spiral-regression.d.ts +49 -0
  105. package/dist/patterns/spiral-regression.d.ts.map +1 -0
  106. package/dist/patterns/spiral-regression.js +219 -0
  107. package/dist/patterns/spiral-regression.js.map +1 -0
  108. package/dist/patterns/thrashing.d.ts +25 -0
  109. package/dist/patterns/thrashing.d.ts.map +1 -0
  110. package/dist/patterns/thrashing.js +111 -0
  111. package/dist/patterns/thrashing.js.map +1 -0
  112. package/dist/storage/atomic.d.ts +40 -0
  113. package/dist/storage/atomic.d.ts.map +1 -0
  114. package/dist/storage/atomic.js +155 -0
  115. package/dist/storage/atomic.js.map +1 -0
  116. package/dist/storage/commit-log.d.ts +35 -0
  117. package/dist/storage/commit-log.d.ts.map +1 -0
  118. package/dist/storage/commit-log.js +128 -0
  119. package/dist/storage/commit-log.js.map +1 -0
  120. package/dist/storage/index.d.ts +5 -0
  121. package/dist/storage/index.d.ts.map +1 -0
  122. package/dist/storage/index.js +33 -0
  123. package/dist/storage/index.js.map +1 -0
  124. package/dist/storage/schema.d.ts +32 -0
  125. package/dist/storage/schema.d.ts.map +1 -0
  126. package/dist/storage/schema.js +37 -0
  127. package/dist/storage/schema.js.map +1 -0
  128. package/dist/storage/timeline-store.d.ts +117 -0
  129. package/dist/storage/timeline-store.d.ts.map +1 -0
  130. package/dist/storage/timeline-store.js +438 -0
  131. package/dist/storage/timeline-store.js.map +1 -0
  132. package/dist/types.d.ts +96 -0
  133. package/dist/types.d.ts.map +1 -1
  134. package/docs/ARCHITECTURE.md +458 -0
  135. package/docs/DATA-ARCHITECTURE.md +565 -0
  136. package/docs/GAMIFICATION.md +564 -0
  137. package/docs/JSON-STORAGE-PATTERNS.md +512 -0
  138. package/docs/METRICS-EXPLAINED.md +394 -0
  139. package/docs/UNIFIED-ECOSYSTEM.md +560 -0
  140. package/docs/VIBE-ECOSYSTEM.md +406 -0
  141. package/docs/images/dashboard.png +0 -0
  142. package/feature-list.json +48 -0
  143. package/package.json +2 -1
  144. package/vitest.config.ts +1 -5
  145. package/.vibe-check/calibration.json +0 -38
  146. package/.vibe-check/latest.json +0 -114
  147. package/.vibe-check/sessions.json +0 -44
  148. package/PLAN-ultimate-game.md +0 -1362
@@ -0,0 +1,553 @@
1
+ # vibe-check Timeline Feature: Git Data Analysis Research
2
+
3
+ **Repository:** /Users/fullerbt/workspaces/personal/vibe-check
4
+ **Analysis Date:** 2025-11-30
5
+ **Commit Range:** 43 commits over 3 days (Nov 28-30, 2025)
6
+ **Author:** Boden Fuller (single-developer repo)
7
+
8
+ ---
9
+
10
+ ## 1. AVAILABLE GIT METADATA
11
+
12
+ ### Core Fields (Always Available)
13
+
14
+ | Field | Format Code | Example | Use for Timeline |
15
+ |-------|-------------|---------|------------------|
16
+ | **Commit Hash** | `%H` | `3f955bf12...` | Unique ID, linking |
17
+ | **Short Hash** | `%h` | `3f955bf` | Display, compact ID |
18
+ | **Timestamp (Unix)** | `%at` | `1764511499` | Session detection, gaps |
19
+ | **Timestamp (ISO)** | `%ai` | `2025-11-30 09:04:59 -0500` | Display, timezone-aware |
20
+ | **Author Email** | `%ae` | `boden.fuller@gmail.com` | Multi-dev repos |
21
+ | **Author Name** | `%an` | `Boden Fuller` | Display, attribution |
22
+ | **Committer Email** | `%ce` | Same as author | CI/bot detection |
23
+ | **Committer Name** | `%cn` | Same as author | CI/bot detection |
24
+ | **Subject** | `%s` | `feat: add timeline` | Semantic type, display |
25
+ | **Body** | `%b` | Multi-line text | Context, AI attribution |
26
+ | **Git Notes** | `%N` | (empty in this repo) | Custom metadata |
27
+
28
+ ### Derived Metadata
29
+
30
+ ```bash
31
+ # File-level changes
32
+ git log --numstat --format="%H|%at|%s"
33
+ # Output: hash|timestamp|subject followed by:
34
+ # 107 3804 tests/cli.integration.test.ts
35
+
36
+ # Aggregate stats
37
+ git log --shortstat --format="%H|%at|%s"
38
+ # Output: 21 files changed, 107 insertions(+), 3804 deletions(-)
39
+
40
+ # Per-file with rename detection
41
+ git log --stat --format="%H|%at|%s"
42
+ # Shows file paths + line changes per file
43
+
44
+ # Branch/tag references
45
+ git log --decorate --format="%H|%D"
46
+ # Shows: HEAD -> main, origin/main, tag: v1.1.0
47
+ ```
48
+
49
+ ### Special Metadata Patterns
50
+
51
+ **AI Attribution Detection:**
52
+ ```
53
+ Body contains: "🤖 Generated with [Claude Code]"
54
+ Body contains: "Co-Authored-By: Claude <noreply@anthropic.com>"
55
+ → 100% of commits in this repo are AI-assisted
56
+ ```
57
+
58
+ **Semantic Commit Detection:**
59
+ ```bash
60
+ Subject matches: ^(feat|fix|docs|test|chore|wip|ci|session)(\(.+?\))?:
61
+ → 100% of commits (43/43) use semantic commits
62
+ ```
63
+
64
+ ---
65
+
66
+ ## 2. SESSION DETECTION PATTERNS
67
+
68
+ ### Timestamp Gap Analysis (43 commits, 42 gaps)
69
+
70
+ **Gap Distribution:**
71
+ ```
72
+ < 30 minutes: 29 gaps (69.0%) ← Active coding
73
+ 30m - 1 hour: 5 gaps (11.9%) ← Short breaks
74
+ 1 - 2 hours: 3 gaps ( 7.1%) ← Meal/break
75
+ 2 - 4 hours: 3 gaps ( 7.1%) ← Context switch
76
+ > 4 hours: 2 gaps ( 4.8%) ← End of day
77
+ ```
78
+
79
+ ### Recommended Session Boundary: **1 hour**
80
+
81
+ **Why 1 hour?**
82
+ - 69% of gaps are <30min (tight feedback loops)
83
+ - Only 19% of gaps are >1hr (clear session boundaries)
84
+ - Captures 9 distinct sessions over 3 days
85
+
86
+ ### Detected Sessions (1hr threshold)
87
+
88
+ ```
89
+ Session 1: Nov 28, 12:09-13:56 (107 min, 7 commits)
90
+ - Initial CLI tool + README + publishing setup
91
+
92
+ Session 2: Nov 28, 17:07-18:04 (57 min, 3 commits)
93
+ - Research bundles, WIP vibe-score implementation
94
+
95
+ Session 3: Nov 28, 20:58-20:58 (1 commit burst)
96
+ - v2.0.0 release + level subcommand
97
+
98
+ Session 4: Nov 28, 22:25 (1 commit)
99
+ - Unit tests for ML model
100
+
101
+ Session 5: Nov 29, 00:27 (1 commit, late night)
102
+ - Version fix (was incorrectly 2.0.0)
103
+
104
+ Session 6: Nov 29, 10:25 (1 commit)
105
+ - Gamification feature
106
+
107
+ Session 7: Nov 29, 11:55-13:43 (108 min, 12 commits)
108
+ - GitHub Actions, hooks, UX improvements
109
+
110
+ Session 8: Nov 29, 15:35-19:21 (227 min, 13 commits) ← LONGEST
111
+ - Watch mode, sessions, pattern memory, v1.5 gamification
112
+
113
+ Session 9: Nov 30, 08:21-09:04 (43 min, 3 commits)
114
+ - Test coverage, integration tests, retrospective
115
+ ```
116
+
117
+ **Insights:**
118
+ - **Average session:** ~61 minutes
119
+ - **Longest session:** 227 min (3.8 hours) - v1.5 feature
120
+ - **Most commits/session:** 13 (Session 8)
121
+ - **Single-commit sessions:** 4 (quick fixes, late-night corrections)
122
+
123
+ ---
124
+
125
+ ## 3. COMMIT TYPE DISTRIBUTION
126
+
127
+ **Semantic Prefix Analysis:**
128
+
129
+ ```
130
+ feat 16 commits ( 37.2%) ███████ - New features
131
+ docs 9 commits ( 20.9%) ████ - Documentation
132
+ chore 6 commits ( 14.0%) ██ - Maintenance
133
+ fix 4 commits ( 9.3%) █ - Bug fixes
134
+ test 4 commits ( 9.3%) █ - Test changes
135
+ session 2 commits ( 4.7%) - Session metadata
136
+ wip 1 commit ( 2.3%) - Work in progress
137
+ ci 1 commit ( 2.3%) - CI configuration
138
+ ```
139
+
140
+ **Type Clustering Within Sessions:**
141
+
142
+ - **Session 1:** feat → docs → fix → feat (setup phase)
143
+ - **Session 7:** feat → ci → fix → chore → fix (rapid iteration)
144
+ - **Session 8:** feat → feat → feat (deep feature work)
145
+
146
+ **Pattern:** Sessions with 5+ commits show **type mixing** (feat + fix + docs), while short sessions are **single-type** (one feat or one fix).
147
+
148
+ ---
149
+
150
+ ## 4. LINES CHANGED PATTERNS
151
+
152
+ ### Average by Commit Type
153
+
154
+ ```
155
+ Type Count Avg + Avg - Avg Net Total Net
156
+ ────────────────────────────────────────────────────────────
157
+ feat 16 +873 -114 +759 +12,145
158
+ docs 9 +632 -7 +625 +5,622
159
+ chore 6 +15 -6 +9 +54
160
+ fix 4 +14 -6 +9 +36
161
+ test 4 +752 -952 -200 -799
162
+ session 2 +192 -0 +192 +385
163
+ wip 1 +855 -0 +855 +855
164
+ ci 1 +56 -0 +56 +56
165
+ ```
166
+
167
+ **Key Insights:**
168
+ - **feat commits:** Large additions (avg +873 lines)
169
+ - **fix commits:** Tiny tweaks (avg +14 lines)
170
+ - **test commits:** NET NEGATIVE (avg -200 lines) - refactors!
171
+ - **docs commits:** Medium additions (avg +632 lines)
172
+
173
+ ### Major Refactors (net deletions > 100)
174
+
175
+ ```
176
+ 1. test: replace unit tests with CLI integration tests
177
+ +107 -3804 (net: -3697)
178
+ → Deleted 258 unit tests, replaced with 11 integration tests
179
+
180
+ 2. feat(v1.3): replace ML level prediction with session workflow
181
+ +282 -1563 (net: -1281)
182
+ → Removed entire ML subsystem (ECE, logistic regression)
183
+ ```
184
+
185
+ **Pattern:** Both refactors happened LATE (commits 42-43), after realizing earlier approach was wrong.
186
+
187
+ ### Largest Features (net additions > 800)
188
+
189
+ ```
190
+ 1. feat(gamification): +3301 lines (dashboard, XP, achievements)
191
+ 2. docs(bundles): +2567 lines (research documentation)
192
+ 3. test: +2449 lines (comprehensive test suite)
193
+ 4. feat: +1668 lines (npm standards compliance)
194
+ 5. docs: +1643 lines (architecture guides)
195
+ 6. feat: +1591 lines (initial CLI tool)
196
+ 7. feat(calibration): +1356 lines (ML learning loop)
197
+ 8. feat(v1.5): +1080 lines (gamification supercharge)
198
+ ```
199
+
200
+ **Pattern:** Large features cluster in **Session 6-8** (Nov 29 afternoon/evening).
201
+
202
+ ### Correlation: Type vs Size
203
+
204
+ ```
205
+ feat: avg absolute change = 919 lines (large, variable)
206
+ docs: avg absolute change = 625 lines (medium, consistent)
207
+ test: avg absolute change = 1649 lines (HUGE variance - refactors)
208
+ fix: avg absolute change = 9 lines (tiny, precise)
209
+ chore: avg absolute change = 9 lines (tiny, mechanical)
210
+ ```
211
+
212
+ ---
213
+
214
+ ## 5. TIME-OF-DAY PATTERNS
215
+
216
+ ### Hourly Distribution
217
+
218
+ ```
219
+ Hour Commits Pattern
220
+ ────────────────────────────
221
+ 00:00 1 █ (late-night fix)
222
+ 08:00 2 ██ (morning start)
223
+ 09:00 1 █
224
+ 10:00 1 █
225
+ 11:00 1 █
226
+ 12:00 8 ████████ (lunch-hour coding!)
227
+ 13:00 10 ██████████ (peak productivity)
228
+ 15:00 2 ██
229
+ 16:00 3 ███
230
+ 17:00 4 ████
231
+ 18:00 5 █████ (evening focus)
232
+ 19:00 2 ██
233
+ 20:00 2 ██
234
+ 22:00 1 █ (late work)
235
+ ```
236
+
237
+ ### Time-of-Day Categories
238
+
239
+ ```
240
+ Morning (6am-12pm): 5 commits (11.6%)
241
+ Afternoon (12pm-6pm): 27 commits (62.8%) ← PEAK
242
+ Evening (6pm-12am): 10 commits (23.3%)
243
+ Night (12am-6am): 1 commit ( 2.3%)
244
+ ```
245
+
246
+ **Insights:**
247
+ - **Peak hours:** 12pm-2pm (18 commits / 41.9%)
248
+ - **Developer preference:** Afternoon coder (62.8%)
249
+ - **Late-night commits:** Rare (1 commit at 00:27 - version fix)
250
+ - **No early morning:** No commits before 8am
251
+
252
+ ### Productivity by Time
253
+
254
+ **Commits per hour (active hours only):**
255
+ ```
256
+ 12pm-2pm: 18 commits (9.0 commits/hr) ← HIGHEST
257
+ 5pm-7pm: 9 commits (4.5 commits/hr)
258
+ 8am-11am: 5 commits (1.25 commits/hr) ← Slower ramp-up
259
+ ```
260
+
261
+ ---
262
+
263
+ ## 6. ADVANCED METADATA OPPORTUNITIES
264
+
265
+ ### Available but Not Yet Used
266
+
267
+ **1. Git Notes (`git notes add`)**
268
+ - Store timeline annotations
269
+ - Link commits to vibe-levels
270
+ - Add retrospective comments
271
+ - Example: `git notes add -m "Spiral detected: 3 fix commits"`
272
+
273
+ **2. Commit Message Body Analysis**
274
+ - AI attribution footer (already present)
275
+ - Bullet points → task breakdown
276
+ - References to issues/PRs
277
+ - Example body:
278
+ ```
279
+ - Deleted 258 unit tests, replaced with 11 integration tests
280
+ - Full retrospective analyzing ML detour
281
+ - Hit: Tests Passing Lie, Instruction Drift
282
+ ```
283
+
284
+ **3. File Churn Patterns**
285
+ - Track which files change together
286
+ - Detect component boundaries
287
+ - Identify hotspots
288
+ - Example: `src/gamification/*` changed in 8 commits
289
+
290
+ **4. Merge Commits**
291
+ - This repo has ZERO merge commits (linear history)
292
+ - If present: detect feature branches, PRs
293
+
294
+ **5. GPG Signatures**
295
+ - This repo: no signatures
296
+ - If present: trust/security indicators
297
+
298
+ **6. Trailer Parsing**
299
+ ```
300
+ Co-Authored-By: Claude <noreply@anthropic.com>
301
+ → AI-assisted indicator
302
+ ```
303
+
304
+ ### Could Be Added (New Data)
305
+
306
+ **1. Vibe-Level Annotations**
307
+ ```bash
308
+ git notes --ref=vibe-level add -m "3" <commit>
309
+ # Later: git log --notes=vibe-level
310
+ ```
311
+
312
+ **2. Session Metadata**
313
+ ```bash
314
+ git notes --ref=session add -m "session-id: 007, duration: 108m" <commit>
315
+ ```
316
+
317
+ **3. Spiral Markers**
318
+ ```bash
319
+ git notes --ref=spiral add -m "fix-chain: 3 commits, trigger: API mismatch" <commit>
320
+ ```
321
+
322
+ ---
323
+
324
+ ## 7. TIMELINE FEATURE RECOMMENDATIONS
325
+
326
+ ### Data Schema for `vibe-check timeline`
327
+
328
+ ```typescript
329
+ interface TimelineEvent {
330
+ // Core Git Data
331
+ hash: string; // Full commit hash
332
+ shortHash: string; // 7-char hash
333
+ timestamp: number; // Unix timestamp
334
+ datetime: string; // ISO 8601
335
+ author: string; // Author name
336
+ subject: string; // Commit message (first line)
337
+ body?: string; // Full commit message
338
+
339
+ // Semantic Analysis
340
+ type: CommitType; // feat|fix|docs|test|chore|etc
341
+ scope?: string; // (gamification), (v1.3), etc
342
+
343
+ // Change Metrics
344
+ filesChanged: number;
345
+ insertions: number;
346
+ deletions: number;
347
+ netChange: number; // insertions - deletions
348
+
349
+ // Session Context
350
+ sessionId: number; // Computed from gaps
351
+ sessionPosition: number; // 1st, 2nd, 3rd commit in session
352
+ gapMinutes?: number; // Minutes since previous commit
353
+
354
+ // Derived Insights
355
+ isRefactor: boolean; // deletions > insertions
356
+ isLargeFeature: boolean; // net > 500 lines
357
+ isFix: boolean; // type === 'fix' or in fix chain
358
+ spiralDepth?: number; // If part of fix chain
359
+
360
+ // AI Detection
361
+ isAiAssisted: boolean; // From commit body
362
+
363
+ // Future: Notes-based
364
+ vibeLevel?: number; // 0-5
365
+ spiralTrigger?: string; // e.g., "API_MISMATCH"
366
+ }
367
+
368
+ interface Session {
369
+ id: number;
370
+ startTime: number;
371
+ endTime: number;
372
+ durationMinutes: number;
373
+ commits: TimelineEvent[];
374
+
375
+ // Aggregates
376
+ totalLines: number;
377
+ netChange: number;
378
+ commitTypes: Record<CommitType, number>;
379
+
380
+ // Metrics
381
+ velocity: number; // commits/hour
382
+ reworkRatio: number; // % fix commits
383
+ avgLinesPerCommit: number;
384
+
385
+ // Patterns
386
+ hadSpiral: boolean;
387
+ largestCommit: TimelineEvent;
388
+ }
389
+ ```
390
+
391
+ ### Session Detection Algorithm
392
+
393
+ ```typescript
394
+ function detectSessions(commits: Commit[], gapThresholdMinutes = 60): Session[] {
395
+ const sessions: Session[] = [];
396
+ let currentSession: Commit[] = [commits[0]];
397
+
398
+ for (let i = 1; i < commits.length; i++) {
399
+ const gapMinutes = (commits[i].timestamp - commits[i-1].timestamp) / 60;
400
+
401
+ if (gapMinutes >= gapThresholdMinutes) {
402
+ // End current session
403
+ sessions.push(buildSession(currentSession));
404
+ currentSession = [commits[i]];
405
+ } else {
406
+ currentSession.push(commits[i]);
407
+ }
408
+ }
409
+
410
+ // Don't forget last session
411
+ sessions.push(buildSession(currentSession));
412
+ return sessions;
413
+ }
414
+ ```
415
+
416
+ ### Timeline Output Format
417
+
418
+ **Recommended:**
419
+ ```
420
+ Session 1: Nov 28, 12:09-13:56 (107 min) ━━━━━━━━━━━━━━━━
421
+ 12:09 feat initial vibe-check CLI tool +1591
422
+ 13:05 docs add README and fix repository URL +115
423
+ 13:27 fix use scoped package name +0
424
+ 13:41 feat add npm CLI standards compliance +1668
425
+ 13:51 docs rewrite README +24
426
+ 13:51 chore bump version to 1.0.2 +8
427
+ 13:56 docs add CLAUDE.md +119
428
+
429
+ Session metrics:
430
+ Velocity: 3.9 commits/hr
431
+ Rework: 14% (1 fix / 7 commits)
432
+ Net change: +3525 lines (7 files)
433
+ Pattern: Setup phase (feat → docs → fix)
434
+
435
+ [gap: 3.2 hours]
436
+
437
+ Session 2: Nov 28, 17:07-18:04 (57 min) ━━━━━━━━━
438
+ 17:07 docs unified vibe system research +2567
439
+ 17:07 wip partial implementation +855
440
+ 18:04 feat implement ML learning loop +1356
441
+
442
+ Session metrics:
443
+ Velocity: 3.2 commits/hr
444
+ Rework: 0%
445
+ Net change: +4778 lines (24 files)
446
+ Pattern: Research → Implementation
447
+ ```
448
+
449
+ ### Visualization Ideas
450
+
451
+ **1. Session Timeline (ASCII)**
452
+ ```
453
+ Nov 28 ━━━━━╋━━━╋━━━━━━━━━━━━━━━━╋━━╋━━━━━╋
454
+ 12pm 18pm 22pm 2am
455
+
456
+ Nov 29 ━━━━━━━━━━╋━━━━━━╋━━━━━━━━━━━━━━━━━━━━━
457
+ 10am 15pm 19pm
458
+
459
+ Nov 30 ━╋━━━━
460
+ 8am
461
+ ```
462
+
463
+ **2. Commit Type Stacked Bar**
464
+ ```
465
+ Session 1 [feat][docs][fix][feat][docs][chore][docs]
466
+ Session 2 [docs][wip][feat]
467
+ Session 3 [feat][chore]
468
+ ...
469
+ ```
470
+
471
+ **3. Lines Changed Heatmap**
472
+ ```
473
+ Hour Commits Lines Changed
474
+ 12pm ████ +1,706 ▓▓▓▓▓▓▓▓▓
475
+ 13pm ██████ +1,819 ▓▓▓▓▓▓▓▓▓▓
476
+ 17pm ██ +3,422 ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
477
+ 18pm ██ +1,356 ▓▓▓▓▓▓▓
478
+ ```
479
+
480
+ ---
481
+
482
+ ## 8. FINDINGS SUMMARY
483
+
484
+ ### What Git Gives Us
485
+
486
+ 1. **Rich Metadata:** Hash, timestamp, author, message, stats
487
+ 2. **Precise Timing:** Unix timestamps → session gaps
488
+ 3. **Semantic Structure:** Commit types, scopes
489
+ 4. **Change Quantification:** Files, lines added/deleted
490
+ 5. **AI Attribution:** Footer detection
491
+ 6. **Extensibility:** Git notes for vibe-levels
492
+
493
+ ### Session Detection Works
494
+
495
+ - **1-hour gap threshold** is optimal (69% <30min, 19% >1hr)
496
+ - Captures **9 sessions** over 3 days
497
+ - Average session: **61 minutes**
498
+ - Longest session: **227 minutes** (deep feature work)
499
+
500
+ ### Commit Patterns Are Clear
501
+
502
+ - **feat:** Large, variable (avg +873 lines)
503
+ - **fix:** Tiny, precise (avg +14 lines)
504
+ - **docs:** Medium, consistent (avg +632 lines)
505
+ - **test:** Refactor-prone (avg -200 net)
506
+
507
+ ### Time-of-Day Matters
508
+
509
+ - **Peak:** 12pm-2pm (41.9% of commits)
510
+ - **Developer:** Afternoon coder (62.8%)
511
+ - **Velocity:** 9 commits/hr during peak (vs 1.25/hr morning)
512
+
513
+ ### Timeline Feature is Viable
514
+
515
+ - All necessary data is in git
516
+ - No external storage needed (use git notes for vibe-levels)
517
+ - Can compute metrics on-the-fly
518
+ - Rich visualizations possible with existing data
519
+
520
+ ---
521
+
522
+ ## 9. NEXT STEPS
523
+
524
+ ### Phase 1: Basic Timeline (MVP)
525
+ - [x] Parse git log with timestamps
526
+ - [ ] Detect sessions (1hr gap)
527
+ - [ ] Group commits by session
528
+ - [ ] Display chronological list
529
+ - [ ] Show session summaries
530
+
531
+ ### Phase 2: Metrics Integration
532
+ - [ ] Calculate session velocity
533
+ - [ ] Detect fix chains (spirals)
534
+ - [ ] Show rework ratio per session
535
+ - [ ] Highlight large features/refactors
536
+
537
+ ### Phase 3: Visualization
538
+ - [ ] ASCII timeline bars
539
+ - [ ] Commit type color coding
540
+ - [ ] Lines changed heatmap
541
+ - [ ] Session duration bars
542
+
543
+ ### Phase 4: Advanced Features
544
+ - [ ] Interactive drill-down
545
+ - [ ] Filter by commit type
546
+ - [ ] Filter by date range
547
+ - [ ] Export to JSON
548
+ - [ ] Git notes integration (vibe-levels)
549
+
550
+ ---
551
+
552
+ **Conclusion:** Git provides everything needed for a rich timeline feature. The data is clean, structured, and reveals clear patterns in coding behavior. Session detection works reliably, and there's ample opportunity for visualization and insight extraction.
553
+
@@ -1,4 +1,5 @@
1
1
  {
2
+ "includeCoAuthoredBy": true,
2
3
  "enabledMcpjsonServers": [
3
4
  "context7"
4
5
  ],
@@ -0,0 +1,6 @@
1
+ # vibe-check local data
2
+ # This directory contains personal productivity data
3
+ # Do NOT commit to version control
4
+
5
+ *
6
+ !.gitignore
package/CHANGELOG.md CHANGED
@@ -5,6 +5,52 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.6.0] - 2025-11-30
9
+
10
+ ### Added
11
+ - **Dashboard Command** - `vibe-check dashboard` opens a visual dashboard in your browser
12
+ - Score trend charts showing vibe score over time
13
+ - Session rating distribution (Elite/High/Medium/Low)
14
+ - Metrics radar chart
15
+ - Recent sessions list
16
+ - Achievement progress tracking
17
+ - **Insight Engine** - Generates actionable insights from your data
18
+ - Peak productivity hours detection
19
+ - Best coding day analysis
20
+ - Improvement streak tracking
21
+ - Problematic scope warnings (high fix ratios)
22
+ - Streak risk alerts
23
+ - Personal best celebrations
24
+ - Level-up progress notifications
25
+ - Late night coding warnings
26
+ - Recent achievement highlights
27
+ - Dashboard exports data to `dashboard-data.json` for offline viewing
28
+ - `--no-open` flag to export data without opening browser
29
+ - `-o, --output` flag for custom output path
30
+
31
+ ## [1.5.0] - 2025-11-30
32
+
33
+ ### Added
34
+ - **Timeline Storage** - Persistent storage with schema versioning
35
+ - **Cross-session Queries** - Query patterns across all historical data
36
+ - **Regression Detection** - Detect when metrics are trending worse
37
+ - **Spiral Pattern Memory** - Track which patterns cause the most spirals
38
+
39
+ ## [1.4.0] - 2025-11-29
40
+
41
+ ### Added
42
+ - **Timeline Command** - `vibe-check timeline` for viewing coding journey
43
+ - **Pattern Memory** - Tracks spiral triggers over time
44
+ - **Intervention Memory** - Tracks what interventions break spirals
45
+ - **Weekly Challenges** - Gamified weekly goals
46
+
47
+ ## [1.3.0] - 2025-11-29
48
+
49
+ ### Added
50
+ - **Watch Mode** - `vibe-check watch` for real-time spiral detection
51
+ - **Intervene Command** - `vibe-check intervene` to record what broke a spiral
52
+ - **Cache Command** - `vibe-check cache` to manage local storage
53
+
8
54
  ## [1.2.0] - 2025-11-29
9
55
 
10
56
  ### Added
package/CLAUDE.md CHANGED
@@ -1,5 +1,29 @@
1
1
  # vibe-check Development Guide
2
2
 
3
+ ## Opus 4.5 Behavioral Standards
4
+
5
+ <default_to_action>
6
+ By default, implement changes rather than only suggesting them. If the user's intent is unclear, infer the most useful likely action and proceed, using tools to discover any missing details instead of guessing.
7
+ </default_to_action>
8
+
9
+ <use_parallel_tool_calls>
10
+ When performing multiple independent operations (reading multiple files, running multiple checks), execute them in parallel rather than sequentially. Only sequence operations when one depends on another's output.
11
+ </use_parallel_tool_calls>
12
+
13
+ <investigate_before_answering>
14
+ Before proposing code changes, read and understand the relevant files. Do not speculate about code you have not opened. Give grounded, hallucination-free answers based on actual code inspection.
15
+ </investigate_before_answering>
16
+
17
+ <avoid_overengineering>
18
+ Only make changes that are directly requested or clearly necessary. Keep solutions simple and focused. Do not add features, refactor code, or make "improvements" beyond what was asked. Do not create helpers or abstractions for one-time operations.
19
+ </avoid_overengineering>
20
+
21
+ <communication_style>
22
+ After completing tasks involving tool use, provide a brief summary of work done. When making significant changes, explain what was changed and why. Keep summaries concise but informative.
23
+ </communication_style>
24
+
25
+ ---
26
+
3
27
  ## npm Publishing Standards
4
28
 
5
29
  ### When to Publish