vibe-index
Every project on vibcod gets a single number — 0 to 100 — that rolls up traffic, engagement, freshness, and craft into one signal. We don't hide the formula; here it is, term by term.
The seven terms
Each term has a cap (so no single signal dominates) and uses a log scale or exp decay where it makes sense (so going from 10 clicks to 100 matters as much as 100 → 1 000, and a 1-week-old project doesn't outpoint a 1-day-old one by 7×).
| term | what it measures | math | max |
|---|---|---|---|
| clicks | people clicking through to your live demo | log10, saturates ~10 000 | 30 |
| votes | visitors running $ vibe-check (1 per IP per day) | log10, saturates ~500 | 25 |
| views | raw project-page views | log10, saturates ~50 000 | 10 |
| craft | lines of code declared at submission | log10, saturates ~20 000 loc | 10 |
| stack | number of distinct technologies listed | linear, caps at 8 | 5 |
| fresh | how recently the project was posted | exp decay, 30-day e-fold | 10 |
| active | time since last changelog entry | exp decay, 14-day e-fold | 10 |
| total ceiling | 100 | ||
The three badges
Badges are derived from the same inputs — no extra storage, no admin overhead. They surface next to the score on the detail page and are awarded automatically.
Worked example · top scorer
Here's how the math plays out on mahjong rise, currently the highest-scoring project in the directory. Numbers refresh in real time — vote on it, watch the score move.
mahjong rise
A calm Android mahjong solitaire with a small yard that grows between boards
$ vibe-index --explain
────────────────────────────────────────────────────────
clicks log10 0 0 / 30
votes log10 1 2.8 / 25
views log10 19 2.8 / 10
craft loc · log10 60400 loc 10 / 10
stack linear 3 tech 1.9 / 5
fresh 30d e-fold 3d old 9.1 / 10
active 14d e-fold no updates 8.1 / 10
────────────────────────────────────────────────────────
total 35 / 100Worked example · the middle
For contrast, the directory's median project. Most cards sit somewhere around here — the top end gets pulled up by time, engagement, and active changelog use.
Claude Skills y MCP Servers en español - Skills Agentes
Directorio en español de Claude Skills, Agent Skills y MCP Servers: qué hace cada uno de verdad, qué credenciales pide y cómo instalarlo.
$ vibe-index --explain
────────────────────────────────────────────────────────
clicks log10 1 2.3 / 30
votes log10 1 2.8 / 25
views log10 94 4.2 / 10
craft loc · log10 34310 loc 10 / 10
stack linear 9 tech 5 / 5
fresh 30d e-fold 42d old 2.4 / 10
active 14d e-fold no updates 0.5 / 10
────────────────────────────────────────────────────────
total 27 / 100FAQ
- can I game it?
- The log scale flattens hard. Going from 100 to 1 000 votes is ~7 points; 1 000 to 10 000 is another ~7. The IP-per-day cap on votes plus the 30-day freshness decay mean grinding doesn't pay. Building something people actually return to does.
- why does my score change every day even if nothing happens?
- The freshness and activity terms use continuous exp decay, not snapped buckets. A project posted yesterday loses a few thousandths of a point overnight; that adds up to ~3 points/month at the start, near zero by month four.
- how does activity work for a project with no changelog?
- If you've never posted to /manage, activity falls back to the project's createdAt — so a brand-new project still gets a high activity score for the first couple weeks. Once you post your first changelog entry, the timer resets and that becomes the baseline going forward.
- why isn't the score materialized?
- At our current scale it's cheap enough to compute on every page load. The breakdown panel proves the score is honest — no caching means no stale numbers. We'll revisit once the real directory crosses a few thousand projects.