@boshu2/vibe-check 1.0.2 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/bundles/ml-learning-loop-complete-plan-2025-11-28.md +908 -0
- package/.agents/bundles/unified-vibe-system-plan-phase1-2025-11-28.md +962 -0
- package/.agents/bundles/unified-vibe-system-research-2025-11-28.md +1003 -0
- package/.agents/bundles/vibe-check-ecosystem-plan-2025-11-29.md +635 -0
- package/.agents/bundles/vibe-check-gamification-complete-2025-11-29.md +132 -0
- package/.agents/bundles/vibe-score-scientific-framework-2025-11-28.md +602 -0
- package/.vibe-check/calibration.json +38 -0
- package/.vibe-check/latest.json +114 -0
- package/CHANGELOG.md +38 -0
- package/CLAUDE.md +178 -0
- package/README.md +185 -7
- package/action.yml +270 -0
- package/dashboard/app.js +494 -0
- package/dashboard/index.html +235 -0
- package/dashboard/styles.css +647 -0
- package/dist/calibration/ece.d.ts +26 -0
- package/dist/calibration/ece.d.ts.map +1 -0
- package/dist/calibration/ece.js +93 -0
- package/dist/calibration/ece.js.map +1 -0
- package/dist/calibration/index.d.ts +3 -0
- package/dist/calibration/index.d.ts.map +1 -0
- package/dist/calibration/index.js +15 -0
- package/dist/calibration/index.js.map +1 -0
- package/dist/calibration/storage.d.ts +34 -0
- package/dist/calibration/storage.d.ts.map +1 -0
- package/dist/calibration/storage.js +188 -0
- package/dist/calibration/storage.js.map +1 -0
- package/dist/cli.js +30 -76
- package/dist/cli.js.map +1 -1
- package/dist/commands/analyze.d.ts +16 -0
- package/dist/commands/analyze.d.ts.map +1 -0
- package/dist/commands/analyze.js +256 -0
- package/dist/commands/analyze.js.map +1 -0
- package/dist/commands/index.d.ts +4 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +11 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/level.d.ts +3 -0
- package/dist/commands/level.d.ts.map +1 -0
- package/dist/commands/level.js +277 -0
- package/dist/commands/level.js.map +1 -0
- package/dist/commands/profile.d.ts +4 -0
- package/dist/commands/profile.d.ts.map +1 -0
- package/dist/commands/profile.js +143 -0
- package/dist/commands/profile.js.map +1 -0
- package/dist/gamification/achievements.d.ts +15 -0
- package/dist/gamification/achievements.d.ts.map +1 -0
- package/dist/gamification/achievements.js +273 -0
- package/dist/gamification/achievements.js.map +1 -0
- package/dist/gamification/index.d.ts +8 -0
- package/dist/gamification/index.d.ts.map +1 -0
- package/dist/gamification/index.js +30 -0
- package/dist/gamification/index.js.map +1 -0
- package/dist/gamification/profile.d.ts +46 -0
- package/dist/gamification/profile.d.ts.map +1 -0
- package/dist/gamification/profile.js +272 -0
- package/dist/gamification/profile.js.map +1 -0
- package/dist/gamification/streaks.d.ts +26 -0
- package/dist/gamification/streaks.d.ts.map +1 -0
- package/dist/gamification/streaks.js +132 -0
- package/dist/gamification/streaks.js.map +1 -0
- package/dist/gamification/types.d.ts +111 -0
- package/dist/gamification/types.d.ts.map +1 -0
- package/dist/gamification/types.js +26 -0
- package/dist/gamification/types.js.map +1 -0
- package/dist/gamification/xp.d.ts +37 -0
- package/dist/gamification/xp.d.ts.map +1 -0
- package/dist/gamification/xp.js +115 -0
- package/dist/gamification/xp.js.map +1 -0
- package/dist/git.d.ts +11 -0
- package/dist/git.d.ts.map +1 -1
- package/dist/git.js +52 -0
- package/dist/git.js.map +1 -1
- package/dist/metrics/code-stability.d.ts +13 -0
- package/dist/metrics/code-stability.d.ts.map +1 -0
- package/dist/metrics/code-stability.js +74 -0
- package/dist/metrics/code-stability.js.map +1 -0
- package/dist/metrics/file-churn.d.ts +8 -0
- package/dist/metrics/file-churn.d.ts.map +1 -0
- package/dist/metrics/file-churn.js +75 -0
- package/dist/metrics/file-churn.js.map +1 -0
- package/dist/metrics/time-spiral.d.ts +8 -0
- package/dist/metrics/time-spiral.d.ts.map +1 -0
- package/dist/metrics/time-spiral.js +69 -0
- package/dist/metrics/time-spiral.js.map +1 -0
- package/dist/metrics/velocity-anomaly.d.ts +13 -0
- package/dist/metrics/velocity-anomaly.d.ts.map +1 -0
- package/dist/metrics/velocity-anomaly.js +67 -0
- package/dist/metrics/velocity-anomaly.js.map +1 -0
- package/dist/output/index.d.ts +6 -3
- package/dist/output/index.d.ts.map +1 -1
- package/dist/output/index.js +4 -3
- package/dist/output/index.js.map +1 -1
- package/dist/output/json.d.ts +2 -2
- package/dist/output/json.d.ts.map +1 -1
- package/dist/output/json.js +54 -0
- package/dist/output/json.js.map +1 -1
- package/dist/output/markdown.d.ts +2 -2
- package/dist/output/markdown.d.ts.map +1 -1
- package/dist/output/markdown.js +34 -1
- package/dist/output/markdown.js.map +1 -1
- package/dist/output/terminal.d.ts +6 -2
- package/dist/output/terminal.d.ts.map +1 -1
- package/dist/output/terminal.js +131 -3
- package/dist/output/terminal.js.map +1 -1
- package/dist/recommend/index.d.ts +3 -0
- package/dist/recommend/index.d.ts.map +1 -0
- package/dist/recommend/index.js +14 -0
- package/dist/recommend/index.js.map +1 -0
- package/dist/recommend/ordered-logistic.d.ts +49 -0
- package/dist/recommend/ordered-logistic.d.ts.map +1 -0
- package/dist/recommend/ordered-logistic.js +153 -0
- package/dist/recommend/ordered-logistic.js.map +1 -0
- package/dist/recommend/questions.d.ts +19 -0
- package/dist/recommend/questions.d.ts.map +1 -0
- package/dist/recommend/questions.js +73 -0
- package/dist/recommend/questions.js.map +1 -0
- package/dist/score/index.d.ts +21 -0
- package/dist/score/index.d.ts.map +1 -0
- package/dist/score/index.js +48 -0
- package/dist/score/index.js.map +1 -0
- package/dist/score/weights.d.ts +16 -0
- package/dist/score/weights.d.ts.map +1 -0
- package/dist/score/weights.js +28 -0
- package/dist/score/weights.js.map +1 -0
- package/dist/types.d.ts +83 -0
- package/dist/types.d.ts.map +1 -1
- 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,44 @@ 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.1.0] - 2025-11-29
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- **Gamification System** - XP, levels, streaks, and achievements to make vibe-checking more engaging
|
|
12
|
+
- 18 achievements across streak, score, sessions, and special categories
|
|
13
|
+
- XP rewards for sessions, streaks, scores, and achievements
|
|
14
|
+
- Level progression from "Newbie" (1) to "Legend" (10)
|
|
15
|
+
- Daily streaks with weekly goals
|
|
16
|
+
- 2 hidden achievements to discover
|
|
17
|
+
- **Profile Command** - `vibe-check profile` to view your stats, achievements, and progress
|
|
18
|
+
- `--achievements` flag to see all achievements
|
|
19
|
+
- `--stats` flag for detailed statistics
|
|
20
|
+
- `--json` flag for machine-readable output
|
|
21
|
+
- **GitHub Action** - Automated vibe-check on PRs with comment posting
|
|
22
|
+
- Configurable thresholds for pass/fail
|
|
23
|
+
- JSON artifact output option
|
|
24
|
+
- Full PR comment with metrics and recommendations
|
|
25
|
+
- **JSON File Output** - `--output <file>` flag to save results to a JSON file
|
|
26
|
+
- **Dashboard Shell** - Static HTML dashboard for viewing profile (in `dashboard/` directory)
|
|
27
|
+
- **Simple Mode** - `--simple` flag for compact output showing only essential metrics
|
|
28
|
+
- **UX Improvements**
|
|
29
|
+
- Summary section with top strength and focus area
|
|
30
|
+
- Opportunities section with actionable tips for low/medium metrics
|
|
31
|
+
- Date period context in output header
|
|
32
|
+
- Confidence display for level recommendations
|
|
33
|
+
- **Anti-Gaming** - XP deduplication prevents multiple rewards for same time period
|
|
34
|
+
- **Comprehensive Tests** - 108 tests covering gamification, metrics, and scoring
|
|
35
|
+
|
|
36
|
+
### Changed
|
|
37
|
+
- Requires Node.js 20+ (for Vitest 4.x compatibility)
|
|
38
|
+
- Updated all dependencies to November 2025 stable versions
|
|
39
|
+
- Improved CLI output clarity with better terminology
|
|
40
|
+
- Renamed internal "FAAFO metrics" to "vibe metrics" (user-facing term unchanged)
|
|
41
|
+
|
|
42
|
+
### Fixed
|
|
43
|
+
- Grammar issues in CLI output
|
|
44
|
+
- Level recommendation confidence display
|
|
45
|
+
|
|
8
46
|
## [1.0.2] - 2025-11-28
|
|
9
47
|
|
|
10
48
|
### 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
|
-
**
|
|
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
|
|
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
|
-
|
|
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,190 @@ 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
|
+
## GitHub Action
|
|
199
|
+
|
|
200
|
+
Add automated vibe-check to your PRs:
|
|
201
|
+
|
|
202
|
+
```yaml
|
|
203
|
+
# .github/workflows/vibe-check.yml
|
|
204
|
+
name: Vibe Check
|
|
205
|
+
|
|
206
|
+
on:
|
|
207
|
+
pull_request:
|
|
208
|
+
branches: [main]
|
|
209
|
+
|
|
210
|
+
jobs:
|
|
211
|
+
vibe-check:
|
|
212
|
+
runs-on: ubuntu-latest
|
|
213
|
+
permissions:
|
|
214
|
+
contents: read
|
|
215
|
+
pull-requests: write
|
|
216
|
+
|
|
217
|
+
steps:
|
|
218
|
+
- uses: actions/checkout@v4
|
|
219
|
+
with:
|
|
220
|
+
fetch-depth: 0
|
|
221
|
+
|
|
222
|
+
- name: Run Vibe Check
|
|
223
|
+
uses: boshu2/vibe-check@v1
|
|
224
|
+
with:
|
|
225
|
+
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
### Action Inputs
|
|
229
|
+
|
|
230
|
+
| Input | Description | Default |
|
|
231
|
+
|-------|-------------|---------|
|
|
232
|
+
| `github-token` | GitHub token for PR comments | `${{ github.token }}` |
|
|
233
|
+
| `since` | Start date for analysis | PR base commit |
|
|
234
|
+
| `threshold` | Minimum rating to pass (elite, solid, needs-work) | none |
|
|
235
|
+
| `include-score` | Include VibeScore | `true` |
|
|
236
|
+
| `include-recommendation` | Include level recommendation | `true` |
|
|
237
|
+
| `output-file` | Path to write JSON results | none |
|
|
238
|
+
| `comment-on-pr` | Post results as PR comment | `true` |
|
|
239
|
+
|
|
240
|
+
### Action Outputs
|
|
241
|
+
|
|
242
|
+
| Output | Description |
|
|
243
|
+
|--------|-------------|
|
|
244
|
+
| `overall` | Overall rating (elite, solid, needs-work, struggling) |
|
|
245
|
+
| `vibe-score` | Numeric score (0-100) |
|
|
246
|
+
| `json` | Full JSON results |
|
|
247
|
+
|
|
248
|
+
### Example: Fail PR if Below Threshold
|
|
249
|
+
|
|
250
|
+
```yaml
|
|
251
|
+
- uses: boshu2/vibe-check@v1
|
|
252
|
+
with:
|
|
253
|
+
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
254
|
+
threshold: 'solid' # Fails if below solid
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
### Example: Save Results to File
|
|
258
|
+
|
|
259
|
+
```yaml
|
|
260
|
+
- uses: boshu2/vibe-check@v1
|
|
261
|
+
with:
|
|
262
|
+
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
263
|
+
output-file: 'vibe-check-results.json'
|
|
264
|
+
|
|
265
|
+
- name: Upload results
|
|
266
|
+
uses: actions/upload-artifact@v4
|
|
267
|
+
with:
|
|
268
|
+
name: vibe-check-results
|
|
269
|
+
path: vibe-check-results.json
|
|
270
|
+
```
|
|
271
|
+
|
|
131
272
|
## Requirements
|
|
132
273
|
|
|
133
|
-
- Node.js >=
|
|
274
|
+
- Node.js >= 20.0.0
|
|
134
275
|
- Git repository with commit history
|
|
135
276
|
- Conventional commits recommended (but not required)
|
|
136
277
|
|
|
278
|
+
## Limitations & Caveats
|
|
279
|
+
|
|
280
|
+
### What This Tool Does NOT Measure
|
|
281
|
+
|
|
282
|
+
| Claim | Reality |
|
|
283
|
+
|-------|---------|
|
|
284
|
+
| Code quality | Measures commit patterns, not code correctness |
|
|
285
|
+
| Actual productivity | Measures velocity signals, not shipped value |
|
|
286
|
+
| AI effectiveness | Measures workflow patterns, not AI contribution |
|
|
287
|
+
|
|
288
|
+
### Known Limitations
|
|
289
|
+
|
|
290
|
+
1. **No ground truth validation**: The correlation between these metrics and actual productivity outcomes has not been independently validated.
|
|
291
|
+
|
|
292
|
+
2. **Threshold sensitivity**: Magic numbers (5 min spiral threshold, 3-file churn) are based on practitioner intuition, not empirical studies.
|
|
293
|
+
|
|
294
|
+
3. **Goodhart's Law risk**: Once you know the metrics, you may unconsciously optimize for them rather than actual outcomes.
|
|
295
|
+
|
|
296
|
+
4. **Cold start**: New repositories have no calibration data. Default model weights are educated guesses.
|
|
297
|
+
|
|
298
|
+
5. **Sample size**: The ML model requires 20+ calibration samples for meaningful learning. Results with fewer samples are unreliable.
|
|
299
|
+
|
|
300
|
+
### When NOT to Use
|
|
301
|
+
|
|
302
|
+
- As a performance review metric (easily gamed)
|
|
303
|
+
- To compare across teams or developers (different baselines)
|
|
304
|
+
- As the sole indicator of AI tool effectiveness
|
|
305
|
+
- Without understanding what each metric actually measures
|
|
306
|
+
|
|
307
|
+
### Recommended Use
|
|
308
|
+
|
|
309
|
+
Use vibe-check as **one signal among many**:
|
|
310
|
+
- Combine with code review feedback
|
|
311
|
+
- Track alongside deployment success rates
|
|
312
|
+
- Use for self-reflection, not external judgment
|
|
313
|
+
- Treat as directional, not precise
|
|
314
|
+
|
|
137
315
|
## License
|
|
138
316
|
|
|
139
317
|
MIT
|