@boshu2/vibe-check 1.0.2 → 1.2.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 (133) hide show
  1. package/.agents/bundles/ml-learning-loop-complete-plan-2025-11-28.md +908 -0
  2. package/.agents/bundles/unified-vibe-system-plan-phase1-2025-11-28.md +962 -0
  3. package/.agents/bundles/unified-vibe-system-research-2025-11-28.md +1003 -0
  4. package/.agents/bundles/vibe-check-ecosystem-plan-2025-11-29.md +635 -0
  5. package/.agents/bundles/vibe-check-gamification-complete-2025-11-29.md +132 -0
  6. package/.agents/bundles/vibe-score-scientific-framework-2025-11-28.md +602 -0
  7. package/.vibe-check/calibration.json +38 -0
  8. package/.vibe-check/latest.json +114 -0
  9. package/CHANGELOG.md +47 -0
  10. package/CLAUDE.md +178 -0
  11. package/README.md +222 -7
  12. package/action.yml +270 -0
  13. package/dashboard/app.js +494 -0
  14. package/dashboard/index.html +235 -0
  15. package/dashboard/styles.css +647 -0
  16. package/dist/calibration/ece.d.ts +26 -0
  17. package/dist/calibration/ece.d.ts.map +1 -0
  18. package/dist/calibration/ece.js +93 -0
  19. package/dist/calibration/ece.js.map +1 -0
  20. package/dist/calibration/index.d.ts +3 -0
  21. package/dist/calibration/index.d.ts.map +1 -0
  22. package/dist/calibration/index.js +15 -0
  23. package/dist/calibration/index.js.map +1 -0
  24. package/dist/calibration/storage.d.ts +34 -0
  25. package/dist/calibration/storage.d.ts.map +1 -0
  26. package/dist/calibration/storage.js +188 -0
  27. package/dist/calibration/storage.js.map +1 -0
  28. package/dist/cli.js +31 -76
  29. package/dist/cli.js.map +1 -1
  30. package/dist/commands/analyze.d.ts +16 -0
  31. package/dist/commands/analyze.d.ts.map +1 -0
  32. package/dist/commands/analyze.js +256 -0
  33. package/dist/commands/analyze.js.map +1 -0
  34. package/dist/commands/index.d.ts +5 -0
  35. package/dist/commands/index.d.ts.map +1 -0
  36. package/dist/commands/index.js +13 -0
  37. package/dist/commands/index.js.map +1 -0
  38. package/dist/commands/init-hook.d.ts +3 -0
  39. package/dist/commands/init-hook.d.ts.map +1 -0
  40. package/dist/commands/init-hook.js +161 -0
  41. package/dist/commands/init-hook.js.map +1 -0
  42. package/dist/commands/level.d.ts +3 -0
  43. package/dist/commands/level.d.ts.map +1 -0
  44. package/dist/commands/level.js +277 -0
  45. package/dist/commands/level.js.map +1 -0
  46. package/dist/commands/profile.d.ts +4 -0
  47. package/dist/commands/profile.d.ts.map +1 -0
  48. package/dist/commands/profile.js +143 -0
  49. package/dist/commands/profile.js.map +1 -0
  50. package/dist/gamification/achievements.d.ts +15 -0
  51. package/dist/gamification/achievements.d.ts.map +1 -0
  52. package/dist/gamification/achievements.js +273 -0
  53. package/dist/gamification/achievements.js.map +1 -0
  54. package/dist/gamification/index.d.ts +8 -0
  55. package/dist/gamification/index.d.ts.map +1 -0
  56. package/dist/gamification/index.js +30 -0
  57. package/dist/gamification/index.js.map +1 -0
  58. package/dist/gamification/profile.d.ts +46 -0
  59. package/dist/gamification/profile.d.ts.map +1 -0
  60. package/dist/gamification/profile.js +272 -0
  61. package/dist/gamification/profile.js.map +1 -0
  62. package/dist/gamification/streaks.d.ts +26 -0
  63. package/dist/gamification/streaks.d.ts.map +1 -0
  64. package/dist/gamification/streaks.js +132 -0
  65. package/dist/gamification/streaks.js.map +1 -0
  66. package/dist/gamification/types.d.ts +111 -0
  67. package/dist/gamification/types.d.ts.map +1 -0
  68. package/dist/gamification/types.js +26 -0
  69. package/dist/gamification/types.js.map +1 -0
  70. package/dist/gamification/xp.d.ts +37 -0
  71. package/dist/gamification/xp.d.ts.map +1 -0
  72. package/dist/gamification/xp.js +115 -0
  73. package/dist/gamification/xp.js.map +1 -0
  74. package/dist/git.d.ts +11 -0
  75. package/dist/git.d.ts.map +1 -1
  76. package/dist/git.js +52 -0
  77. package/dist/git.js.map +1 -1
  78. package/dist/metrics/code-stability.d.ts +13 -0
  79. package/dist/metrics/code-stability.d.ts.map +1 -0
  80. package/dist/metrics/code-stability.js +74 -0
  81. package/dist/metrics/code-stability.js.map +1 -0
  82. package/dist/metrics/file-churn.d.ts +8 -0
  83. package/dist/metrics/file-churn.d.ts.map +1 -0
  84. package/dist/metrics/file-churn.js +75 -0
  85. package/dist/metrics/file-churn.js.map +1 -0
  86. package/dist/metrics/time-spiral.d.ts +8 -0
  87. package/dist/metrics/time-spiral.d.ts.map +1 -0
  88. package/dist/metrics/time-spiral.js +69 -0
  89. package/dist/metrics/time-spiral.js.map +1 -0
  90. package/dist/metrics/velocity-anomaly.d.ts +13 -0
  91. package/dist/metrics/velocity-anomaly.d.ts.map +1 -0
  92. package/dist/metrics/velocity-anomaly.js +67 -0
  93. package/dist/metrics/velocity-anomaly.js.map +1 -0
  94. package/dist/output/index.d.ts +6 -3
  95. package/dist/output/index.d.ts.map +1 -1
  96. package/dist/output/index.js +4 -3
  97. package/dist/output/index.js.map +1 -1
  98. package/dist/output/json.d.ts +2 -2
  99. package/dist/output/json.d.ts.map +1 -1
  100. package/dist/output/json.js +54 -0
  101. package/dist/output/json.js.map +1 -1
  102. package/dist/output/markdown.d.ts +2 -2
  103. package/dist/output/markdown.d.ts.map +1 -1
  104. package/dist/output/markdown.js +34 -1
  105. package/dist/output/markdown.js.map +1 -1
  106. package/dist/output/terminal.d.ts +6 -2
  107. package/dist/output/terminal.d.ts.map +1 -1
  108. package/dist/output/terminal.js +131 -3
  109. package/dist/output/terminal.js.map +1 -1
  110. package/dist/recommend/index.d.ts +3 -0
  111. package/dist/recommend/index.d.ts.map +1 -0
  112. package/dist/recommend/index.js +14 -0
  113. package/dist/recommend/index.js.map +1 -0
  114. package/dist/recommend/ordered-logistic.d.ts +49 -0
  115. package/dist/recommend/ordered-logistic.d.ts.map +1 -0
  116. package/dist/recommend/ordered-logistic.js +153 -0
  117. package/dist/recommend/ordered-logistic.js.map +1 -0
  118. package/dist/recommend/questions.d.ts +19 -0
  119. package/dist/recommend/questions.d.ts.map +1 -0
  120. package/dist/recommend/questions.js +73 -0
  121. package/dist/recommend/questions.js.map +1 -0
  122. package/dist/score/index.d.ts +21 -0
  123. package/dist/score/index.d.ts.map +1 -0
  124. package/dist/score/index.js +48 -0
  125. package/dist/score/index.js.map +1 -0
  126. package/dist/score/weights.d.ts +16 -0
  127. package/dist/score/weights.d.ts.map +1 -0
  128. package/dist/score/weights.js +28 -0
  129. package/dist/score/weights.js.map +1 -0
  130. package/dist/types.d.ts +83 -0
  131. package/dist/types.d.ts.map +1 -1
  132. package/hooks/pre-push +103 -0
  133. package/package.json +10 -9
@@ -0,0 +1,114 @@
1
+ {
2
+ "period": {
3
+ "from": "2025-11-28T17:09:58.000Z",
4
+ "to": "2025-11-29T17:06:04.000Z",
5
+ "activeHours": 5.8
6
+ },
7
+ "commits": {
8
+ "total": 19,
9
+ "feat": 6,
10
+ "fix": 2,
11
+ "docs": 4,
12
+ "other": 7
13
+ },
14
+ "metrics": {
15
+ "iterationVelocity": {
16
+ "value": 3.3,
17
+ "unit": "commits/hour",
18
+ "rating": "high"
19
+ },
20
+ "reworkRatio": {
21
+ "value": 11,
22
+ "unit": "%",
23
+ "rating": "elite"
24
+ },
25
+ "trustPassRate": {
26
+ "value": 100,
27
+ "unit": "%",
28
+ "rating": "elite"
29
+ },
30
+ "debugSpiralDuration": {
31
+ "value": 0,
32
+ "unit": "min",
33
+ "rating": "elite"
34
+ },
35
+ "flowEfficiency": {
36
+ "value": 100,
37
+ "unit": "%",
38
+ "rating": "elite"
39
+ }
40
+ },
41
+ "fixChains": [],
42
+ "patterns": {
43
+ "categories": {},
44
+ "total": 0,
45
+ "tracerAvailable": 0
46
+ },
47
+ "overall": "ELITE",
48
+ "vibeScore": {
49
+ "value": 0.88,
50
+ "components": {
51
+ "fileChurn": 0.97,
52
+ "timeSpiral": 0.74,
53
+ "velocityAnomaly": 0.79,
54
+ "codeStability": 0.99
55
+ },
56
+ "weights": {
57
+ "fileChurn": 0.3,
58
+ "timeSpiral": 0.25,
59
+ "velocityAnomaly": 0.2,
60
+ "codeStability": 0.25
61
+ }
62
+ },
63
+ "recommendation": {
64
+ "level": 5,
65
+ "confidence": 0.3,
66
+ "probabilities": [
67
+ 0.018853929395775577,
68
+ 0.04111986761778373,
69
+ 0.1148237967015614,
70
+ 0.23809991674270975,
71
+ 0.2872499181517066,
72
+ 0.29985257139046295
73
+ ],
74
+ "ci": [
75
+ 1.2053475326593759,
76
+ 5
77
+ ]
78
+ },
79
+ "semanticFreeMetrics": {
80
+ "fileChurn": {
81
+ "value": 97,
82
+ "unit": "%",
83
+ "rating": "elite",
84
+ "description": "Elite: 2/63 files churned (<10%)",
85
+ "churnedFiles": 2,
86
+ "totalFiles": 63
87
+ },
88
+ "timeSpiral": {
89
+ "value": 74,
90
+ "unit": "%",
91
+ "rating": "high",
92
+ "description": "High: 5/19 rapid commits (15-30%)",
93
+ "spiralCommits": 5,
94
+ "totalCommits": 19
95
+ },
96
+ "velocityAnomaly": {
97
+ "value": 79,
98
+ "unit": "%",
99
+ "rating": "elite",
100
+ "description": "Elite: 3.3/hr (near baseline 3.0/hr)",
101
+ "currentVelocity": 3.3,
102
+ "baselineMean": 3,
103
+ "zScore": 0.17
104
+ },
105
+ "codeStability": {
106
+ "value": 99,
107
+ "unit": "%",
108
+ "rating": "elite",
109
+ "description": "Elite: 99% stability (+13230/-261)",
110
+ "linesAdded": 13230,
111
+ "linesSurviving": 13100
112
+ }
113
+ }
114
+ }
package/CHANGELOG.md CHANGED
@@ -5,6 +5,53 @@ 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.2.0] - 2025-11-29
9
+
10
+ ### Added
11
+ - **Git Hook** - `vibe-check init-hook` command to install pre-push hook
12
+ - Runs vibe-check automatically before every git push
13
+ - `--block-low` option to reject pushes with LOW rating
14
+ - Configurable via environment variables
15
+ - Pre-push hook script in `hooks/pre-push` for manual installation
16
+
17
+ ## [1.1.0] - 2025-11-29
18
+
19
+ ### Added
20
+ - **Gamification System** - XP, levels, streaks, and achievements to make vibe-checking more engaging
21
+ - 18 achievements across streak, score, sessions, and special categories
22
+ - XP rewards for sessions, streaks, scores, and achievements
23
+ - Level progression from "Newbie" (1) to "Legend" (10)
24
+ - Daily streaks with weekly goals
25
+ - 2 hidden achievements to discover
26
+ - **Profile Command** - `vibe-check profile` to view your stats, achievements, and progress
27
+ - `--achievements` flag to see all achievements
28
+ - `--stats` flag for detailed statistics
29
+ - `--json` flag for machine-readable output
30
+ - **GitHub Action** - Automated vibe-check on PRs with comment posting
31
+ - Configurable thresholds for pass/fail
32
+ - JSON artifact output option
33
+ - Full PR comment with metrics and recommendations
34
+ - **JSON File Output** - `--output <file>` flag to save results to a JSON file
35
+ - **Dashboard Shell** - Static HTML dashboard for viewing profile (in `dashboard/` directory)
36
+ - **Simple Mode** - `--simple` flag for compact output showing only essential metrics
37
+ - **UX Improvements**
38
+ - Summary section with top strength and focus area
39
+ - Opportunities section with actionable tips for low/medium metrics
40
+ - Date period context in output header
41
+ - Confidence display for level recommendations
42
+ - **Anti-Gaming** - XP deduplication prevents multiple rewards for same time period
43
+ - **Comprehensive Tests** - 108 tests covering gamification, metrics, and scoring
44
+
45
+ ### Changed
46
+ - Requires Node.js 20+ (for Vitest 4.x compatibility)
47
+ - Updated all dependencies to November 2025 stable versions
48
+ - Improved CLI output clarity with better terminology
49
+ - Renamed internal "FAAFO metrics" to "vibe metrics" (user-facing term unchanged)
50
+
51
+ ### Fixed
52
+ - Grammar issues in CLI output
53
+ - Level recommendation confidence display
54
+
8
55
  ## [1.0.2] - 2025-11-28
9
56
 
10
57
  ### Changed
package/CLAUDE.md ADDED
@@ -0,0 +1,178 @@
1
+ # vibe-check Development Guide
2
+
3
+ ## npm Publishing Standards
4
+
5
+ ### When to Publish
6
+
7
+ | Change Type | Version Bump | Publish? |
8
+ |-------------|--------------|----------|
9
+ | **Breaking changes** | MAJOR (1.0.0 → 2.0.0) | Yes |
10
+ | **New features** (backward compatible) | MINOR (1.0.0 → 1.1.0) | Yes |
11
+ | **Bug fixes** | PATCH (1.0.0 → 1.0.1) | Yes |
12
+ | **Docs only (README, CHANGELOG)** | None | **No** |
13
+ | **Tests only** | None | **No** |
14
+ | **CI/tooling only** | None | **No** |
15
+
16
+ ### GitHub README vs npm README
17
+
18
+ - **GitHub README**: Always shows latest from repo
19
+ - **npm README**: Snapshot from last publish - only updates when you `npm publish`
20
+
21
+ **Docs-only changes don't need a publish.** Just commit and push to GitHub.
22
+
23
+ ### Version Commands
24
+
25
+ ```bash
26
+ # Check current version
27
+ npm version
28
+
29
+ # Bump and publish (creates git tag automatically)
30
+ npm version patch # 1.0.1 → 1.0.2 (bug fixes)
31
+ npm version minor # 1.0.1 → 1.1.0 (new features)
32
+ npm version major # 1.0.1 → 2.0.0 (breaking changes)
33
+
34
+ # Then publish
35
+ npm publish --access=public
36
+ ```
37
+
38
+ ### How Users Consume Versions
39
+
40
+ ```bash
41
+ npm install @boshu2/vibe-check # Gets "latest"
42
+ npm install @boshu2/vibe-check@1.0.2 # Exact version
43
+ npm install @boshu2/vibe-check@^1.0.0 # Any 1.x.x (common default)
44
+ npm install @boshu2/vibe-check@~1.0.0 # Any 1.0.x only
45
+ ```
46
+
47
+ Most users have `^` (caret) in their package.json, meaning they'll auto-update to latest minor/patch.
48
+
49
+ ## Development Workflow
50
+
51
+ ### Running Locally
52
+
53
+ ```bash
54
+ npm run dev # Run with ts-node
55
+ npm run build # Compile TypeScript
56
+ npm test # Run Vitest tests
57
+ npm run test:coverage # Tests with coverage
58
+ ```
59
+
60
+ ### Testing the CLI
61
+
62
+ ```bash
63
+ # Run against a repo
64
+ node dist/cli.js --repo /path/to/repo --since "1 week ago"
65
+
66
+ # Test different output formats
67
+ node dist/cli.js --format json
68
+ node dist/cli.js --format markdown
69
+ ```
70
+
71
+ ### Before Publishing
72
+
73
+ 1. Ensure tests pass: `npm test`
74
+ 2. Update CHANGELOG.md with changes
75
+ 3. Bump version appropriately (see table above)
76
+ 4. Commit version bump
77
+ 5. `npm publish --access=public`
78
+
79
+ ## Architecture
80
+
81
+ ```
82
+ src/
83
+ ├── cli.ts # CLI entry point (Commander.js)
84
+ ├── git.ts # Git operations (simple-git)
85
+ ├── types.ts # TypeScript interfaces
86
+ ├── commands/
87
+ │ ├── index.ts # Command exports
88
+ │ ├── analyze.ts # Main analyze command
89
+ │ ├── level.ts # Level recommendation command
90
+ │ └── profile.ts # Profile/stats command
91
+ ├── metrics/
92
+ │ ├── index.ts # Orchestrates all metrics
93
+ │ ├── velocity.ts # Iteration velocity
94
+ │ ├── rework.ts # Rework ratio
95
+ │ ├── trust.ts # Trust pass rate
96
+ │ ├── spirals.ts # Debug spiral detection
97
+ │ ├── flow.ts # Flow efficiency
98
+ │ ├── file-churn.ts # File churn patterns
99
+ │ ├── time-spiral.ts # Time-based spirals
100
+ │ ├── velocity-anomaly.ts # Velocity anomaly detection
101
+ │ └── code-stability.ts # Code stability metrics
102
+ ├── gamification/
103
+ │ ├── index.ts # Gamification exports
104
+ │ ├── types.ts # XP, levels, achievements types
105
+ │ ├── xp.ts # XP calculation and levels
106
+ │ ├── streaks.ts # Daily/weekly streak tracking
107
+ │ ├── achievements.ts # Achievement definitions and checks
108
+ │ └── profile.ts # Profile persistence (.vibe-check/)
109
+ ├── calibration/
110
+ │ ├── index.ts # Calibration orchestration
111
+ │ ├── ece.ts # Expected calibration error
112
+ │ └── storage.ts # Calibration data persistence
113
+ ├── recommend/
114
+ │ ├── index.ts # Recommendation orchestration
115
+ │ ├── ordered-logistic.ts # Ordinal logistic regression
116
+ │ └── questions.ts # Assessment questions
117
+ ├── score/
118
+ │ ├── index.ts # VibeScore calculation
119
+ │ └── weights.ts # Metric weights
120
+ └── output/
121
+ ├── index.ts # Output format router
122
+ ├── terminal.ts # Colored terminal output
123
+ ├── json.ts # JSON output
124
+ └── markdown.ts # Markdown output
125
+
126
+ dashboard/ # Static HTML dashboard
127
+ ├── index.html # Dashboard UI
128
+ ├── app.js # Dashboard JavaScript
129
+ └── styles.css # Dashboard styles
130
+
131
+ .vibe-check/ # Local profile data (per-repo)
132
+ ├── profile.json # XP, streaks, achievements
133
+ └── calibration.json # Calibration samples
134
+ ```
135
+
136
+ ## Commands
137
+
138
+ ### Main Command (analyze)
139
+ ```bash
140
+ vibe-check [options] # Analyze git history
141
+ vibe-check --since "1 week" # Time-bounded analysis
142
+ vibe-check --score --recommend # Full analysis with recommendations
143
+ ```
144
+
145
+ ### Profile Command
146
+ ```bash
147
+ vibe-check profile # View your profile
148
+ vibe-check profile --achievements # List all achievements
149
+ vibe-check profile --stats # Detailed statistics
150
+ vibe-check profile --json # Machine-readable output
151
+ ```
152
+
153
+ ### Level Command
154
+ ```bash
155
+ vibe-check level # Get level recommendation
156
+ vibe-check level --calibrate 3 # Record calibration sample
157
+ ```
158
+
159
+ ## The 5 Metrics
160
+
161
+ | Metric | Measures | Threshold |
162
+ |--------|----------|-----------|
163
+ | Iteration Velocity | Commits/hour | >5 = Elite |
164
+ | Rework Ratio | % fix commits | <30% = Elite |
165
+ | Trust Pass Rate | % commits without immediate fix | >95% = Elite |
166
+ | Debug Spiral Duration | Avg time in fix chains | <15m = Elite |
167
+ | Flow Efficiency | % time building vs debugging | >90% = Elite |
168
+
169
+ ## Debug Spiral Detection
170
+
171
+ A "debug spiral" is detected when 3+ consecutive fix commits target the same component. Patterns are categorized:
172
+
173
+ - `SECRETS_AUTH` - OAuth/credentials issues
174
+ - `API_MISMATCH` - API version/schema problems
175
+ - `VOLUME_CONFIG` - Mount/permission issues
176
+ - `SSL_TLS` - Certificate problems
177
+ - `IMAGE_REGISTRY` - Container pull issues
178
+ - `GITOPS_DRIFT` - Sync/reconciliation issues
package/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # vibe-check
2
2
 
3
- **Stop guessing if AI coding is working. Start measuring.**
3
+ > ⚠️ **Experimental** - Metrics correlations with actual productivity outcomes have not been independently validated. Use as a directional signal, not ground truth.
4
+
5
+ **Track patterns in your AI-assisted coding workflow.**
4
6
 
5
7
  ## The Problem
6
8
 
@@ -90,12 +92,14 @@ vibe-check --repo /path/to/repo
90
92
  | **Debug Spiral Duration** | Avg time stuck in fix chains | <15m | 15-30m | >30m |
91
93
  | **Flow Efficiency** | % time building vs debugging | >90% | 75-90% | <75% |
92
94
 
93
- ### What the ratings mean
95
+ ### What the ratings suggest
96
+
97
+ - **ELITE**: Commit patterns suggest smooth workflow
98
+ - **HIGH**: Generally healthy patterns, some areas to watch
99
+ - **MEDIUM**: Mixed signals—review individual metrics
100
+ - **LOW**: Commit patterns suggest friction—investigate causes
94
101
 
95
- - **ELITE**: Your AI collaboration is working excellently
96
- - **HIGH**: Good effectiveness, minor improvements possible
97
- - **MEDIUM**: Room for improvement—check which metrics are lagging
98
- - **LOW**: Process issues—you're debugging more than building
102
+ *Note: These ratings reflect commit patterns, not actual code quality or productivity.*
99
103
 
100
104
  ## Debug Spiral Detection
101
105
 
@@ -124,16 +128,227 @@ When vibe-check detects 3+ consecutive fix commits on the same component, it fla
124
128
  --until <date> End date (default: now)
125
129
  -f, --format <type> Output: terminal, json, markdown
126
130
  -r, --repo <path> Repository path (default: current directory)
131
+ -o, --output <file> Write JSON results to file
127
132
  -v, --verbose Show detailed output
133
+ --score Include VibeScore (semantic-free metrics)
134
+ --recommend Include level recommendation
135
+ --simple Show simplified output (less verbose)
128
136
  -h, --help Display help
129
137
  ```
130
138
 
139
+ ## Gamification
140
+
141
+ vibe-check tracks your progress over time with XP, levels, streaks, and achievements.
142
+
143
+ ### Levels
144
+
145
+ | Level | Name | XP Required |
146
+ |-------|------|-------------|
147
+ | 1 | Newbie | 0 |
148
+ | 2 | Regular | 100 |
149
+ | 3 | Committed | 300 |
150
+ | 4 | Dedicated | 600 |
151
+ | 5 | Expert | 1000 |
152
+ | 6 | Master | 1500 |
153
+ | 7 | Grandmaster | 2100 |
154
+ | 8 | Guru | 2800 |
155
+ | 9 | Sage | 3600 |
156
+ | 10 | Legend | 4500 |
157
+
158
+ ### Achievements
159
+
160
+ Unlock achievements by hitting milestones:
161
+
162
+ - 🩸 **First Blood** - Run your first vibe-check
163
+ - ⚔️ **Week Warrior** - Maintain a 7-day streak
164
+ - 👑 **Monthly Master** - Maintain a 30-day streak
165
+ - ✨ **Elite Vibes** - Achieve ELITE rating
166
+ - 🏅 **Ninety Club** - Vibe Score of 90%+
167
+ - 🧘 **Zen Master** - 50+ commits, 0 debug spirals
168
+ - ...and 12 more, including 2 hidden achievements!
169
+
170
+ ### Profile Command
171
+
172
+ View your stats, achievements, and progress:
173
+
174
+ ```bash
175
+ # View your profile
176
+ vibe-check profile
177
+
178
+ # See all achievements
179
+ vibe-check profile --achievements
180
+
181
+ # Detailed statistics
182
+ vibe-check profile --stats
183
+
184
+ # JSON output
185
+ vibe-check profile --json
186
+ ```
187
+
188
+ ### Save Results to JSON
189
+
190
+ ```bash
191
+ # Write JSON to file while showing terminal output
192
+ vibe-check --since "1 week ago" --score -o results.json
193
+
194
+ # Combine with other formats
195
+ vibe-check --format markdown -o results.json # Terminal gets markdown, file gets JSON
196
+ ```
197
+
198
+ ## Git Hook
199
+
200
+ Run vibe-check automatically before every push:
201
+
202
+ ```bash
203
+ # Install the pre-push hook
204
+ vibe-check init-hook
205
+
206
+ # Or with blocking enabled (rejects push on LOW rating)
207
+ vibe-check init-hook --block-low
208
+ ```
209
+
210
+ ### Hook Configuration
211
+
212
+ Control behavior with environment variables:
213
+
214
+ ```bash
215
+ # Block push on LOW rating (default: false)
216
+ VIBE_CHECK_BLOCK_LOW=true git push
217
+
218
+ # Show full output instead of simple (default: true)
219
+ VIBE_CHECK_SIMPLE=false git push
220
+
221
+ # Hide vibe score (default: true)
222
+ VIBE_CHECK_SCORE=false git push
223
+ ```
224
+
225
+ ### Manual Installation
226
+
227
+ If you prefer to install manually:
228
+
229
+ ```bash
230
+ # Copy the hook to your repo
231
+ curl -o .git/hooks/pre-push https://raw.githubusercontent.com/boshu2/vibe-check/main/hooks/pre-push
232
+ chmod +x .git/hooks/pre-push
233
+ ```
234
+
235
+ ## GitHub Action
236
+
237
+ Add automated vibe-check to your PRs:
238
+
239
+ ```yaml
240
+ # .github/workflows/vibe-check.yml
241
+ name: Vibe Check
242
+
243
+ on:
244
+ pull_request:
245
+ branches: [main]
246
+
247
+ jobs:
248
+ vibe-check:
249
+ runs-on: ubuntu-latest
250
+ permissions:
251
+ contents: read
252
+ pull-requests: write
253
+
254
+ steps:
255
+ - uses: actions/checkout@v4
256
+ with:
257
+ fetch-depth: 0
258
+
259
+ - name: Run Vibe Check
260
+ uses: boshu2/vibe-check@v1
261
+ with:
262
+ github-token: ${{ secrets.GITHUB_TOKEN }}
263
+ ```
264
+
265
+ ### Action Inputs
266
+
267
+ | Input | Description | Default |
268
+ |-------|-------------|---------|
269
+ | `github-token` | GitHub token for PR comments | `${{ github.token }}` |
270
+ | `since` | Start date for analysis | PR base commit |
271
+ | `threshold` | Minimum rating to pass (elite, solid, needs-work) | none |
272
+ | `include-score` | Include VibeScore | `true` |
273
+ | `include-recommendation` | Include level recommendation | `true` |
274
+ | `output-file` | Path to write JSON results | none |
275
+ | `comment-on-pr` | Post results as PR comment | `true` |
276
+
277
+ ### Action Outputs
278
+
279
+ | Output | Description |
280
+ |--------|-------------|
281
+ | `overall` | Overall rating (elite, solid, needs-work, struggling) |
282
+ | `vibe-score` | Numeric score (0-100) |
283
+ | `json` | Full JSON results |
284
+
285
+ ### Example: Fail PR if Below Threshold
286
+
287
+ ```yaml
288
+ - uses: boshu2/vibe-check@v1
289
+ with:
290
+ github-token: ${{ secrets.GITHUB_TOKEN }}
291
+ threshold: 'solid' # Fails if below solid
292
+ ```
293
+
294
+ ### Example: Save Results to File
295
+
296
+ ```yaml
297
+ - uses: boshu2/vibe-check@v1
298
+ with:
299
+ github-token: ${{ secrets.GITHUB_TOKEN }}
300
+ output-file: 'vibe-check-results.json'
301
+
302
+ - name: Upload results
303
+ uses: actions/upload-artifact@v4
304
+ with:
305
+ name: vibe-check-results
306
+ path: vibe-check-results.json
307
+ ```
308
+
131
309
  ## Requirements
132
310
 
133
- - Node.js >= 18.0.0
311
+ - Node.js >= 20.0.0
134
312
  - Git repository with commit history
135
313
  - Conventional commits recommended (but not required)
136
314
 
315
+ ## Limitations & Caveats
316
+
317
+ ### What This Tool Does NOT Measure
318
+
319
+ | Claim | Reality |
320
+ |-------|---------|
321
+ | Code quality | Measures commit patterns, not code correctness |
322
+ | Actual productivity | Measures velocity signals, not shipped value |
323
+ | AI effectiveness | Measures workflow patterns, not AI contribution |
324
+
325
+ ### Known Limitations
326
+
327
+ 1. **No ground truth validation**: The correlation between these metrics and actual productivity outcomes has not been independently validated.
328
+
329
+ 2. **Threshold sensitivity**: Magic numbers (5 min spiral threshold, 3-file churn) are based on practitioner intuition, not empirical studies.
330
+
331
+ 3. **Goodhart's Law risk**: Once you know the metrics, you may unconsciously optimize for them rather than actual outcomes.
332
+
333
+ 4. **Cold start**: New repositories have no calibration data. Default model weights are educated guesses.
334
+
335
+ 5. **Sample size**: The ML model requires 20+ calibration samples for meaningful learning. Results with fewer samples are unreliable.
336
+
337
+ ### When NOT to Use
338
+
339
+ - As a performance review metric (easily gamed)
340
+ - To compare across teams or developers (different baselines)
341
+ - As the sole indicator of AI tool effectiveness
342
+ - Without understanding what each metric actually measures
343
+
344
+ ### Recommended Use
345
+
346
+ Use vibe-check as **one signal among many**:
347
+ - Combine with code review feedback
348
+ - Track alongside deployment success rates
349
+ - Use for self-reflection, not external judgment
350
+ - Treat as directional, not precise
351
+
137
352
  ## License
138
353
 
139
354
  MIT