@boshu2/vibe-check 1.6.2 → 1.7.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.
Files changed (107) hide show
  1. package/.agents/bundles/automatic-learning-cadence-plan-2025-12-02.md +1297 -0
  2. package/.agents/bundles/automatic-learning-cadence-research-2025-12-02.md +481 -0
  3. package/.agents/bundles/dashboard-data-quality-plan.md +458 -0
  4. package/.agents/bundles/rating-scoring-alignment-plan.md +427 -0
  5. package/.agents/bundles/rpi-session-capture-plan-2025-12-02.md +693 -0
  6. package/.agents/bundles/rpi-session-capture-research-2025-12-02.md +433 -0
  7. package/.agents/bundles/session-integration-plan-2025-12-02.md +144 -0
  8. package/CHANGELOG.md +17 -0
  9. package/CLAUDE.md +74 -2
  10. package/Makefile +173 -0
  11. package/README.md +33 -0
  12. package/claude-progress.json +34 -5
  13. package/claude-progress.txt +66 -0
  14. package/dashboard/app.js +699 -66
  15. package/dashboard/chart.min.js +20 -0
  16. package/dashboard/dashboard-data.js +764 -0
  17. package/dashboard/dashboard-data.json +182 -71
  18. package/dashboard/index.html +139 -14
  19. package/dashboard/styles.css +579 -4
  20. package/dist/cli.js +1 -1
  21. package/dist/cli.js.map +1 -1
  22. package/dist/commands/analyze.d.ts.map +1 -1
  23. package/dist/commands/analyze.js +38 -2
  24. package/dist/commands/analyze.js.map +1 -1
  25. package/dist/commands/dashboard.js +4 -1
  26. package/dist/commands/dashboard.js.map +1 -1
  27. package/dist/commands/index.d.ts +1 -1
  28. package/dist/commands/index.d.ts.map +1 -1
  29. package/dist/commands/index.js +3 -3
  30. package/dist/commands/index.js.map +1 -1
  31. package/dist/commands/learn.d.ts +3 -0
  32. package/dist/commands/learn.d.ts.map +1 -0
  33. package/dist/commands/learn.js +161 -0
  34. package/dist/commands/learn.js.map +1 -0
  35. package/dist/commands/lesson.d.ts +8 -0
  36. package/dist/commands/lesson.d.ts.map +1 -0
  37. package/dist/commands/lesson.js +206 -0
  38. package/dist/commands/lesson.js.map +1 -0
  39. package/dist/commands/profile.d.ts.map +1 -1
  40. package/dist/commands/profile.js +3 -202
  41. package/dist/commands/profile.js.map +1 -1
  42. package/dist/commands/session.d.ts +51 -0
  43. package/dist/commands/session.d.ts.map +1 -0
  44. package/dist/commands/session.js +561 -0
  45. package/dist/commands/session.js.map +1 -0
  46. package/dist/gamification/index.d.ts +1 -3
  47. package/dist/gamification/index.d.ts.map +1 -1
  48. package/dist/gamification/index.js +2 -5
  49. package/dist/gamification/index.js.map +1 -1
  50. package/dist/gamification/pattern-memory.d.ts +1 -1
  51. package/dist/gamification/pattern-memory.d.ts.map +1 -1
  52. package/dist/gamification/pattern-memory.js.map +1 -1
  53. package/dist/gamification/profile.d.ts +2 -2
  54. package/dist/gamification/profile.d.ts.map +1 -1
  55. package/dist/gamification/profile.js +2 -15
  56. package/dist/gamification/profile.js.map +1 -1
  57. package/dist/gamification/types.d.ts +8 -2
  58. package/dist/gamification/types.d.ts.map +1 -1
  59. package/dist/gamification/types.js.map +1 -1
  60. package/dist/insights/index.d.ts.map +1 -1
  61. package/dist/insights/index.js +16 -4
  62. package/dist/insights/index.js.map +1 -1
  63. package/dist/insights/types.d.ts +14 -0
  64. package/dist/insights/types.d.ts.map +1 -1
  65. package/dist/learning/cadence.d.ts +15 -0
  66. package/dist/learning/cadence.d.ts.map +1 -0
  67. package/dist/learning/cadence.js +130 -0
  68. package/dist/learning/cadence.js.map +1 -0
  69. package/dist/learning/index.d.ts +19 -0
  70. package/dist/learning/index.d.ts.map +1 -0
  71. package/dist/learning/index.js +35 -0
  72. package/dist/learning/index.js.map +1 -0
  73. package/dist/learning/lessons-storage.d.ts +48 -0
  74. package/dist/learning/lessons-storage.d.ts.map +1 -0
  75. package/dist/learning/lessons-storage.js +266 -0
  76. package/dist/learning/lessons-storage.js.map +1 -0
  77. package/dist/learning/lessons-types.d.ts +83 -0
  78. package/dist/learning/lessons-types.d.ts.map +1 -0
  79. package/dist/learning/lessons-types.js +15 -0
  80. package/dist/learning/lessons-types.js.map +1 -0
  81. package/dist/learning/nudges.d.ts +20 -0
  82. package/dist/learning/nudges.d.ts.map +1 -0
  83. package/dist/learning/nudges.js +68 -0
  84. package/dist/learning/nudges.js.map +1 -0
  85. package/dist/learning/retrospective.d.ts +27 -0
  86. package/dist/learning/retrospective.d.ts.map +1 -0
  87. package/dist/learning/retrospective.js +184 -0
  88. package/dist/learning/retrospective.js.map +1 -0
  89. package/dist/learning/storage.d.ts +44 -0
  90. package/dist/learning/storage.d.ts.map +1 -0
  91. package/dist/learning/storage.js +194 -0
  92. package/dist/learning/storage.js.map +1 -0
  93. package/dist/learning/surfacing.d.ts +36 -0
  94. package/dist/learning/surfacing.d.ts.map +1 -0
  95. package/dist/learning/surfacing.js +255 -0
  96. package/dist/learning/surfacing.js.map +1 -0
  97. package/dist/learning/synthesis.d.ts +17 -0
  98. package/dist/learning/synthesis.d.ts.map +1 -0
  99. package/dist/learning/synthesis.js +293 -0
  100. package/dist/learning/synthesis.js.map +1 -0
  101. package/dist/learning/types.d.ts +60 -0
  102. package/dist/learning/types.d.ts.map +1 -0
  103. package/dist/learning/types.js +17 -0
  104. package/dist/learning/types.js.map +1 -0
  105. package/docs/METRICS.md +528 -0
  106. package/feature-list.json +21 -0
  107. package/package.json +1 -1
@@ -0,0 +1,764 @@
1
+ window.VIBE_CHECK_DATA = {
2
+ "version": "1.0.0",
3
+ "generatedAt": "2025-12-02T17:11:51.304Z",
4
+ "repo": "/Users/fullerbt/workspaces/personal/vibe-check",
5
+ "profile": {
6
+ "level": 6,
7
+ "levelName": "Grandmaster",
8
+ "levelIcon": "🏔️",
9
+ "xp": {
10
+ "current": 570,
11
+ "next": 3000,
12
+ "total": 2570
13
+ },
14
+ "streak": {
15
+ "current": 3,
16
+ "longest": 3
17
+ },
18
+ "achievementCount": 7,
19
+ "totalAchievements": 19
20
+ },
21
+ "stats": {
22
+ "current": {
23
+ "vibeScore": 88,
24
+ "rating": "ELITE"
25
+ },
26
+ "averages": {
27
+ "day7": 84,
28
+ "day30": 84,
29
+ "allTime": 84
30
+ },
31
+ "totals": {
32
+ "sessions": 33,
33
+ "commits": 72,
34
+ "spirals": 0,
35
+ "features": 118
36
+ }
37
+ },
38
+ "charts": {
39
+ "scoreTrend": [
40
+ {
41
+ "date": "2025-11-29",
42
+ "score": 88,
43
+ "rating": "ELITE"
44
+ },
45
+ {
46
+ "date": "2025-11-29",
47
+ "score": 88,
48
+ "rating": "ELITE"
49
+ },
50
+ {
51
+ "date": "2025-11-29",
52
+ "score": 88,
53
+ "rating": "ELITE"
54
+ },
55
+ {
56
+ "date": "2025-11-29",
57
+ "score": 88,
58
+ "rating": "ELITE"
59
+ },
60
+ {
61
+ "date": "2025-11-29",
62
+ "score": 87,
63
+ "rating": "ELITE"
64
+ },
65
+ {
66
+ "date": "2025-11-29",
67
+ "score": 71,
68
+ "rating": "ELITE"
69
+ },
70
+ {
71
+ "date": "2025-11-29",
72
+ "score": 96,
73
+ "rating": "ELITE"
74
+ },
75
+ {
76
+ "date": "2025-11-29",
77
+ "score": 79,
78
+ "rating": "ELITE"
79
+ },
80
+ {
81
+ "date": "2025-11-29",
82
+ "score": 75,
83
+ "rating": "ELITE"
84
+ },
85
+ {
86
+ "date": "2025-11-29",
87
+ "score": 87,
88
+ "rating": "ELITE"
89
+ },
90
+ {
91
+ "date": "2025-11-29",
92
+ "score": 93,
93
+ "rating": "ELITE"
94
+ },
95
+ {
96
+ "date": "2025-11-29",
97
+ "score": 82,
98
+ "rating": "ELITE"
99
+ },
100
+ {
101
+ "date": "2025-11-29",
102
+ "score": 95,
103
+ "rating": "ELITE"
104
+ },
105
+ {
106
+ "date": "2025-11-29",
107
+ "score": 90,
108
+ "rating": "ELITE"
109
+ },
110
+ {
111
+ "date": "2025-11-29",
112
+ "score": 88,
113
+ "rating": "ELITE"
114
+ },
115
+ {
116
+ "date": "2025-11-29",
117
+ "score": 75,
118
+ "rating": "ELITE"
119
+ },
120
+ {
121
+ "date": "2025-11-29",
122
+ "score": 91,
123
+ "rating": "ELITE"
124
+ },
125
+ {
126
+ "date": "2025-11-29",
127
+ "score": 88,
128
+ "rating": "ELITE"
129
+ },
130
+ {
131
+ "date": "2025-11-30",
132
+ "score": 95,
133
+ "rating": "ELITE"
134
+ },
135
+ {
136
+ "date": "2025-11-30",
137
+ "score": 75,
138
+ "rating": "ELITE"
139
+ },
140
+ {
141
+ "date": "2025-11-30",
142
+ "score": 81,
143
+ "rating": "ELITE"
144
+ },
145
+ {
146
+ "date": "2025-11-30",
147
+ "score": 85,
148
+ "rating": "ELITE"
149
+ },
150
+ {
151
+ "date": "2025-11-30",
152
+ "score": 75,
153
+ "rating": "ELITE"
154
+ },
155
+ {
156
+ "date": "2025-11-30",
157
+ "score": 75,
158
+ "rating": "ELITE"
159
+ },
160
+ {
161
+ "date": "2025-11-30",
162
+ "score": 80,
163
+ "rating": "ELITE"
164
+ },
165
+ {
166
+ "date": "2025-11-30",
167
+ "score": 82,
168
+ "rating": "ELITE"
169
+ },
170
+ {
171
+ "date": "2025-11-30",
172
+ "score": 63,
173
+ "rating": "ELITE"
174
+ },
175
+ {
176
+ "date": "2025-11-30",
177
+ "score": 79,
178
+ "rating": "ELITE"
179
+ },
180
+ {
181
+ "date": "2025-12-02",
182
+ "score": 81,
183
+ "rating": "ELITE"
184
+ },
185
+ {
186
+ "date": "2025-12-02",
187
+ "score": 88,
188
+ "rating": "ELITE"
189
+ }
190
+ ],
191
+ "ratingDistribution": {
192
+ "ELITE": 33,
193
+ "HIGH": 0,
194
+ "MEDIUM": 0,
195
+ "LOW": 0
196
+ },
197
+ "hourlyActivity": {
198
+ "0": 1,
199
+ "7": 3,
200
+ "8": 7,
201
+ "9": 5,
202
+ "10": 5,
203
+ "11": 3,
204
+ "12": 14,
205
+ "13": 13,
206
+ "14": 2,
207
+ "15": 2,
208
+ "16": 3,
209
+ "17": 4,
210
+ "18": 5,
211
+ "19": 2,
212
+ "20": 2,
213
+ "22": 1
214
+ },
215
+ "scopeHealth": [
216
+ {
217
+ "scope": "(no scope)",
218
+ "commits": 43,
219
+ "fixRatio": 5
220
+ },
221
+ {
222
+ "scope": "timeline",
223
+ "commits": 5,
224
+ "fixRatio": 0
225
+ },
226
+ {
227
+ "scope": "storage",
228
+ "commits": 2,
229
+ "fixRatio": 0
230
+ },
231
+ {
232
+ "scope": "v1.4",
233
+ "commits": 2,
234
+ "fixRatio": 0
235
+ },
236
+ {
237
+ "scope": "gamification",
238
+ "commits": 2,
239
+ "fixRatio": 0
240
+ },
241
+ {
242
+ "scope": "ux",
243
+ "commits": 2,
244
+ "fixRatio": 50
245
+ },
246
+ {
247
+ "scope": "release",
248
+ "commits": 2,
249
+ "fixRatio": 0
250
+ },
251
+ {
252
+ "scope": "learning",
253
+ "commits": 2,
254
+ "fixRatio": 0
255
+ },
256
+ {
257
+ "scope": "v1.5",
258
+ "commits": 1,
259
+ "fixRatio": 0
260
+ },
261
+ {
262
+ "scope": "v1.3",
263
+ "commits": 1,
264
+ "fixRatio": 0
265
+ }
266
+ ],
267
+ "avgMetrics": {
268
+ "iterationVelocity": 4.6,
269
+ "reworkRatio": 2,
270
+ "trustPassRate": 100,
271
+ "flowEfficiency": 100,
272
+ "debugSpiralDuration": 0
273
+ }
274
+ },
275
+ "insights": [
276
+ {
277
+ "id": "recent-achievement",
278
+ "category": "celebration",
279
+ "severity": "success",
280
+ "icon": "🧘",
281
+ "title": "Achievement Unlocked!",
282
+ "message": "Zen Master: 0 debug spirals in a 50+ commit session",
283
+ "source": "profile",
284
+ "priority": 8
285
+ },
286
+ {
287
+ "id": "improvement-streak",
288
+ "category": "growth",
289
+ "severity": "success",
290
+ "icon": "🎯",
291
+ "title": "Improvement Streak",
292
+ "message": "2-week improvement streak! Your spiral rate keeps dropping.",
293
+ "metric": "improvement_weeks",
294
+ "value": 2,
295
+ "source": "timeline.trends",
296
+ "priority": 7
297
+ },
298
+ {
299
+ "id": "peak-hours",
300
+ "category": "productivity",
301
+ "severity": "info",
302
+ "icon": "⏰",
303
+ "title": "Peak Productivity",
304
+ "message": "You're most productive around 12pm (19% of commits)",
305
+ "metric": "peak_hour",
306
+ "value": 12,
307
+ "action": "Protect this time for deep work",
308
+ "source": "commits",
309
+ "priority": 5
310
+ },
311
+ {
312
+ "id": "best-day",
313
+ "category": "productivity",
314
+ "severity": "info",
315
+ "icon": "📅",
316
+ "title": "Best Coding Day",
317
+ "message": "Saturday is your most productive day (38% of commits)",
318
+ "metric": "best_day",
319
+ "value": 6,
320
+ "source": "commits",
321
+ "priority": 4
322
+ }
323
+ ],
324
+ "sessions": [
325
+ {
326
+ "date": "2025-12-02",
327
+ "vibeScore": 88,
328
+ "rating": "ELITE",
329
+ "commits": 2,
330
+ "spirals": 0,
331
+ "xpEarned": 75,
332
+ "metrics": {
333
+ "iterationVelocity": 6,
334
+ "reworkRatio": 0,
335
+ "trustPassRate": 100,
336
+ "flowEfficiency": 100,
337
+ "debugSpiralDuration": 0
338
+ }
339
+ },
340
+ {
341
+ "date": "2025-12-02",
342
+ "vibeScore": 81,
343
+ "rating": "ELITE",
344
+ "commits": 53,
345
+ "spirals": 0,
346
+ "xpEarned": 115,
347
+ "metrics": {
348
+ "iterationVelocity": 3.6,
349
+ "reworkRatio": 6,
350
+ "trustPassRate": 100,
351
+ "flowEfficiency": 100,
352
+ "debugSpiralDuration": 0
353
+ }
354
+ },
355
+ {
356
+ "date": "2025-11-30",
357
+ "vibeScore": 79,
358
+ "rating": "ELITE",
359
+ "commits": 30,
360
+ "spirals": 0,
361
+ "xpEarned": 85,
362
+ "metrics": {
363
+ "iterationVelocity": 4.3,
364
+ "reworkRatio": 0,
365
+ "trustPassRate": 100,
366
+ "flowEfficiency": 100,
367
+ "debugSpiralDuration": 0
368
+ }
369
+ },
370
+ {
371
+ "date": "2025-11-30",
372
+ "vibeScore": 63,
373
+ "rating": "ELITE",
374
+ "commits": 2,
375
+ "spirals": 0,
376
+ "xpEarned": 70,
377
+ "metrics": null
378
+ },
379
+ {
380
+ "date": "2025-11-30",
381
+ "vibeScore": 82,
382
+ "rating": "ELITE",
383
+ "commits": 21,
384
+ "spirals": 0,
385
+ "xpEarned": 85,
386
+ "metrics": null
387
+ },
388
+ {
389
+ "date": "2025-11-30",
390
+ "vibeScore": 80,
391
+ "rating": "ELITE",
392
+ "commits": 4,
393
+ "spirals": 0,
394
+ "xpEarned": 70,
395
+ "metrics": null
396
+ },
397
+ {
398
+ "date": "2025-11-30",
399
+ "vibeScore": 75,
400
+ "rating": "ELITE",
401
+ "commits": 2,
402
+ "spirals": 0,
403
+ "xpEarned": 70,
404
+ "metrics": null
405
+ },
406
+ {
407
+ "date": "2025-11-30",
408
+ "vibeScore": 75,
409
+ "rating": "ELITE",
410
+ "commits": 3,
411
+ "spirals": 0,
412
+ "xpEarned": 70,
413
+ "metrics": null
414
+ },
415
+ {
416
+ "date": "2025-11-30",
417
+ "vibeScore": 85,
418
+ "rating": "ELITE",
419
+ "commits": 40,
420
+ "spirals": 0,
421
+ "xpEarned": 85,
422
+ "metrics": null
423
+ },
424
+ {
425
+ "date": "2025-11-30",
426
+ "vibeScore": 81,
427
+ "rating": "ELITE",
428
+ "commits": 1,
429
+ "spirals": 0,
430
+ "xpEarned": 70,
431
+ "metrics": null
432
+ },
433
+ {
434
+ "date": "2025-11-30",
435
+ "vibeScore": 75,
436
+ "rating": "ELITE",
437
+ "commits": 2,
438
+ "spirals": 0,
439
+ "xpEarned": 70,
440
+ "metrics": null
441
+ },
442
+ {
443
+ "date": "2025-11-30",
444
+ "vibeScore": 95,
445
+ "rating": "ELITE",
446
+ "commits": 2,
447
+ "spirals": 0,
448
+ "xpEarned": 70,
449
+ "metrics": null
450
+ },
451
+ {
452
+ "date": "2025-11-29",
453
+ "vibeScore": 88,
454
+ "rating": "ELITE",
455
+ "commits": 2,
456
+ "spirals": 0,
457
+ "xpEarned": 65,
458
+ "metrics": null
459
+ },
460
+ {
461
+ "date": "2025-11-29",
462
+ "vibeScore": 91,
463
+ "rating": "ELITE",
464
+ "commits": 2,
465
+ "spirals": 0,
466
+ "xpEarned": 65,
467
+ "metrics": null
468
+ },
469
+ {
470
+ "date": "2025-11-29",
471
+ "vibeScore": 75,
472
+ "rating": "ELITE",
473
+ "commits": 2,
474
+ "spirals": 0,
475
+ "xpEarned": 65,
476
+ "metrics": null
477
+ },
478
+ {
479
+ "date": "2025-11-29",
480
+ "vibeScore": 88,
481
+ "rating": "ELITE",
482
+ "commits": 2,
483
+ "spirals": 0,
484
+ "xpEarned": 65,
485
+ "metrics": null
486
+ },
487
+ {
488
+ "date": "2025-11-29",
489
+ "vibeScore": 90,
490
+ "rating": "ELITE",
491
+ "commits": 2,
492
+ "spirals": 0,
493
+ "xpEarned": 65,
494
+ "metrics": null
495
+ },
496
+ {
497
+ "date": "2025-11-29",
498
+ "vibeScore": 95,
499
+ "rating": "ELITE",
500
+ "commits": 2,
501
+ "spirals": 0,
502
+ "xpEarned": 65,
503
+ "metrics": null
504
+ },
505
+ {
506
+ "date": "2025-11-29",
507
+ "vibeScore": 82,
508
+ "rating": "ELITE",
509
+ "commits": 5,
510
+ "spirals": 0,
511
+ "xpEarned": 65,
512
+ "metrics": null
513
+ },
514
+ {
515
+ "date": "2025-11-29",
516
+ "vibeScore": 93,
517
+ "rating": "ELITE",
518
+ "commits": 3,
519
+ "spirals": 0,
520
+ "xpEarned": 65,
521
+ "metrics": null
522
+ },
523
+ {
524
+ "date": "2025-11-29",
525
+ "vibeScore": 87,
526
+ "rating": "ELITE",
527
+ "commits": 2,
528
+ "spirals": 0,
529
+ "xpEarned": 65,
530
+ "metrics": null
531
+ },
532
+ {
533
+ "date": "2025-11-29",
534
+ "vibeScore": 75,
535
+ "rating": "ELITE",
536
+ "commits": 2,
537
+ "spirals": 0,
538
+ "xpEarned": 65,
539
+ "metrics": null
540
+ },
541
+ {
542
+ "date": "2025-11-29",
543
+ "vibeScore": 79,
544
+ "rating": "ELITE",
545
+ "commits": 2,
546
+ "spirals": 0,
547
+ "xpEarned": 65,
548
+ "metrics": null
549
+ },
550
+ {
551
+ "date": "2025-11-29",
552
+ "vibeScore": 96,
553
+ "rating": "ELITE",
554
+ "commits": 2,
555
+ "spirals": 0,
556
+ "xpEarned": 90,
557
+ "metrics": null
558
+ },
559
+ {
560
+ "date": "2025-11-29",
561
+ "vibeScore": 71,
562
+ "rating": "ELITE",
563
+ "commits": 2,
564
+ "spirals": 0,
565
+ "xpEarned": 65,
566
+ "metrics": null
567
+ },
568
+ {
569
+ "date": "2025-11-29",
570
+ "vibeScore": 87,
571
+ "rating": "ELITE",
572
+ "commits": 21,
573
+ "spirals": 0,
574
+ "xpEarned": 80,
575
+ "metrics": null
576
+ },
577
+ {
578
+ "date": "2025-11-29",
579
+ "vibeScore": 88,
580
+ "rating": "ELITE",
581
+ "commits": 20,
582
+ "spirals": 0,
583
+ "xpEarned": 105,
584
+ "metrics": null
585
+ },
586
+ {
587
+ "date": "2025-11-29",
588
+ "vibeScore": 88,
589
+ "rating": "ELITE",
590
+ "commits": 19,
591
+ "spirals": 0,
592
+ "xpEarned": 80,
593
+ "metrics": null
594
+ },
595
+ {
596
+ "date": "2025-11-29",
597
+ "vibeScore": 88,
598
+ "rating": "ELITE",
599
+ "commits": 19,
600
+ "spirals": 0,
601
+ "xpEarned": 105,
602
+ "metrics": null
603
+ },
604
+ {
605
+ "date": "2025-11-29",
606
+ "vibeScore": 88,
607
+ "rating": "ELITE",
608
+ "commits": 19,
609
+ "spirals": 0,
610
+ "xpEarned": 80,
611
+ "metrics": null
612
+ },
613
+ {
614
+ "date": "2025-11-29",
615
+ "vibeScore": 90,
616
+ "rating": "ELITE",
617
+ "commits": 18,
618
+ "spirals": 0,
619
+ "xpEarned": 105,
620
+ "metrics": null
621
+ },
622
+ {
623
+ "date": "2025-11-29",
624
+ "vibeScore": 89,
625
+ "rating": "ELITE",
626
+ "commits": 15,
627
+ "spirals": 0,
628
+ "xpEarned": 80,
629
+ "metrics": null
630
+ },
631
+ {
632
+ "date": "2025-11-29",
633
+ "vibeScore": 89,
634
+ "rating": "ELITE",
635
+ "commits": 14,
636
+ "spirals": 0,
637
+ "xpEarned": 130,
638
+ "metrics": null
639
+ }
640
+ ],
641
+ "achievements": [
642
+ {
643
+ "id": "first_check",
644
+ "name": "First Blood",
645
+ "icon": "🩸",
646
+ "description": "Run your first vibe-check",
647
+ "unlockedAt": "2025-11-29T13:55:52.777Z"
648
+ },
649
+ {
650
+ "id": "week_warrior",
651
+ "name": "Week Warrior",
652
+ "icon": "⚔️",
653
+ "description": "Maintain a 7-day streak"
654
+ },
655
+ {
656
+ "id": "fortnight_force",
657
+ "name": "Fortnight Force",
658
+ "icon": "🛡️",
659
+ "description": "Maintain a 14-day streak"
660
+ },
661
+ {
662
+ "id": "monthly_master",
663
+ "name": "Monthly Master",
664
+ "icon": "👑",
665
+ "description": "Maintain a 30-day streak"
666
+ },
667
+ {
668
+ "id": "elite_vibes",
669
+ "name": "Elite Vibes",
670
+ "icon": "✨",
671
+ "description": "Achieve ELITE rating in a session",
672
+ "unlockedAt": "2025-11-29T13:55:52.777Z"
673
+ },
674
+ {
675
+ "id": "consistent_high",
676
+ "name": "High Roller",
677
+ "icon": "🎰",
678
+ "description": "Get HIGH or better for 5 consecutive sessions",
679
+ "unlockedAt": "2025-11-29T17:08:30.842Z"
680
+ },
681
+ {
682
+ "id": "perfect_week",
683
+ "name": "Perfect Week",
684
+ "icon": "💎",
685
+ "description": "ELITE rating every day for a week",
686
+ "unlockedAt": "2025-11-29T17:27:50.140Z"
687
+ },
688
+ {
689
+ "id": "score_90",
690
+ "name": "Ninety Club",
691
+ "icon": "🏅",
692
+ "description": "Achieve a Vibe Score of 90% or higher",
693
+ "unlockedAt": "2025-11-29T17:05:57.830Z"
694
+ },
695
+ {
696
+ "id": "ten_sessions",
697
+ "name": "Getting Started",
698
+ "icon": "📊",
699
+ "description": "Complete 10 vibe-check sessions",
700
+ "unlockedAt": "2025-11-29T18:43:25.127Z"
701
+ },
702
+ {
703
+ "id": "fifty_sessions",
704
+ "name": "Regular",
705
+ "icon": "📈",
706
+ "description": "Complete 50 vibe-check sessions"
707
+ },
708
+ {
709
+ "id": "hundred_sessions",
710
+ "name": "Centurion",
711
+ "icon": "💯",
712
+ "description": "Complete 100 vibe-check sessions"
713
+ },
714
+ {
715
+ "id": "zen_master",
716
+ "name": "Zen Master",
717
+ "icon": "🧘",
718
+ "description": "0 debug spirals in a 50+ commit session",
719
+ "unlockedAt": "2025-12-02T12:53:40.313Z"
720
+ },
721
+ {
722
+ "id": "trust_builder",
723
+ "name": "Trust Builder",
724
+ "icon": "🏗️",
725
+ "description": "Maintain 90%+ Trust Pass Rate for 10 sessions"
726
+ },
727
+ {
728
+ "id": "comeback_kid",
729
+ "name": "Comeback Kid",
730
+ "icon": "🔄",
731
+ "description": "Go from LOW to ELITE in the same week"
732
+ },
733
+ {
734
+ "id": "early_bird",
735
+ "name": "Early Bird",
736
+ "icon": "🌅",
737
+ "description": "Run vibe-check before 7 AM"
738
+ },
739
+ {
740
+ "id": "night_owl",
741
+ "name": "Night Owl",
742
+ "icon": "🦉",
743
+ "description": "Run vibe-check after midnight"
744
+ },
745
+ {
746
+ "id": "thousand_commits",
747
+ "name": "Thousand Strong",
748
+ "icon": "🎯",
749
+ "description": "Analyze 1000 total commits"
750
+ },
751
+ {
752
+ "id": "perfect_score",
753
+ "name": "???",
754
+ "icon": "🌟",
755
+ "description": "Achieve a perfect 100% Vibe Score"
756
+ },
757
+ {
758
+ "id": "spiral_survivor",
759
+ "name": "???",
760
+ "icon": "🌀",
761
+ "description": "Recover from 5+ spirals to ELITE in same session"
762
+ }
763
+ ]
764
+ };