Overview
[](https://github.com/absolutejs/renown/actions/workflows/ci.yml)
@absolutejs/renownv0.3.5betaDev ToolsEarn XP and achievements for real, meritorious dev work in any editor, with per-project leaderboards.
A gamified, quantified-self layer for programming: XP is earned by the craft and importance of your work — never by commit count — with thousands of achievements, deep activity recaps and competitive per-project leaderboards. It is editor- and agent-agnostic: a filesystem watcher tracks activity in any editor with zero plugins, and coding agents like Claude Code, Codex, Cursor and Copilot are first-class participants. The CLI talks to the hosted leaderboard at renown.absolutejs.com out of the box, and a GitHub Action can score every contributor on each push.
bun add -g @absolutejs/renown[](https://github.com/absolutejs/renown/actions/workflows/ci.yml)
Earn XP and renown for real, meritorious dev work — in any editor. A gamified, quantified-self layer for programming: XP is earned by the craft and importance of your work (never by commit-count), with thousands of achievements, deep activity recaps, and competitive per-project leaderboards. By AbsoluteJS.
Grew out of a personal coding-agent experiment; now its own thing — editor- and agent-agnostic, with Claude, Codex, Cursor, Copilot, Aider, Gemini, and friends all treated as first-class participants.
▶ Live leaderboard: renown.absolutejs.com
The CLI talks to the hosted leaderboard out of the box — no config needed. Then wire it into your editor so XP accrues as you work:
…or drop the Action into any repo to score every contributor on each push:
XP comes from a craft engine that scores each commit by substance (generated files / lockfiles / minified / reformat ≈ 0), with bonuses for tests/docs/new code and penalties for tiny/junk/duplicate commits and daily grinding — then a project- importance multiplier: open-source ×, GitHub stars (log scale), and contributing to someone else's repo ×. Only commits you authored count.
core — engine: craft scoring, achievements, stats, leveling, shared types.
daemon — editor-agnostic activity tracker: a filesystem watcher over your
git repos emits activity heartbeats with zero editor plugins (works in VS Code, Neovim, JetBrains, anything) and detects commits. Editor plugins can POST richer heartbeats to it (WakaTime-style) later.
cli — renown / renown recap TUI + renown heartbeat.
core/agents.ts — universal coding-agent registry used by local stats, agent
skills, achievements, and install docs.
server — Bun API + Drizzle/Neon: /submit, /top, /top?project,
/achievements (catalog + global rarity %).
db — Drizzle schema + Neon client.
players, achievements (catalog incl. the 10k; unlock_count → rarity %), player_achievements (unlocked_at → date achieved), projects, player_projects (per-project boards). Rich local activity/recap data stays on-device; only scores and unlocks sync.
DATABASE_URL lives in .env (gitignored) — never commit it. Rotate the Neon password before this repo is public.
Drop the renown Action into a repo and every push refreshes that repo's contributors' renown — their score, Co-Authored-By attribution, freshly-pulled serialized pets, and the repo's own /project leaderboard — with no manual renown sync and no secrets in the workflow. The Action reads GitHub's own context (the pusher + the authors GitHub names in the event) and asks your renown server to recompute each linked contributor from the GitHub API using the server's token: their global renown and their per-repo commits/XP (scored by the same craft engine your local CLI uses — core/craftScore.ts is shared, so CI and local scoring can't drift; the board upsert is monotonic, so CI only ever adds contributors or raises stats). Contributors who aren't on renown simply no-op, and the step never fails your build.
Self-hosting? Add with: { endpoint: https://your-host/api }. Prefer no extra action? Call the CLI directly — same effect:
Locally, renown ci-sync --endpoint does the same against a GITHUB_-populated env.
A craft engine scores each commit by substance — generated files, lockfiles, minified code and reformats score near zero — with bonuses for tests, docs and new code, and penalties for junk or grinding.
Only commits you authored count, and a project-importance multiplier weighs open source, GitHub stars (log scale) and contributions to repos that are not your own.
An editor-agnostic daemon watches your git repos and emits activity heartbeats with zero editor plugins — it works in VS Code, Neovim, JetBrains, anything.
renown link verifies your GitHub account, and public boards rank server-recomputed, GitHub-verified XP — no board ranks purely self-reported data.
A catalog of 10,000 achievements with global rarity percentages, skills, quests and collectible pets, browsable from the renown TUI.
Drop the absolutejs/renown@v1 Action into any repo and every push refreshes contributors’ renown and the repo’s own project leaderboard — no secrets in the workflow, and the step never fails your build.
Outcomes
[](https://github.com/absolutejs/renown/actions/workflows/ci.yml)
The CLI talks to the hosted leaderboard out of the box — no config needed. Then wire it into your editor so XP accrues as you work:
XP comes from a craft engine that scores each commit by substance (generated files / lockfiles / minified / reformat ≈ 0), with bonuses for tests/docs/new code and penalties for tiny/junk/duplicate commits and daily grinding — then a project- importance multiplier: open-source ×, GitHub stars (log scale), and contributing to someone else's repo ×. Only commits you authored count.
Hardening checklist
Follow in order
Working example for Quick start.
npm install -g @absolutejs/renown # or: bun add -g @absolutejs/renown
renown link # link your GitHub account → get a verified score
renown # open the TUI: skills, quests, pets, leaderboardThe CLI talks to the hosted leaderboard out of the box — no config needed. Then wire it into your editor so XP accrues as you work:
renown install-agent all # Claude Code / Codex hooks + tmux HUDplayers, achievements (catalog incl. the 10k; unlock_count → rarity %), player_achievements (unlocked_at → date achieved), projects, player_projects (per-project boards). Rich local activity/recap data stays on-device; only scores and unlocks sync.
bun install
cp .env.example .env # paste your Neon DATABASE_URL
bun run db:push # create tables on Neon
bun run db:check # verify connectivityDrop the renown Action into a repo and every push refreshes that repo's contributors' renown — their score, Co-Authored-By attribution, freshly-pulled serialized pets, and the repo's own /project leaderboard — with no manual renown sync and no secrets in the workflow. The Action reads GitHub's own context (the pusher + the authors GitHub names in the event) and asks your renown server to recompute each linked contributor from the GitHub API using the server's token: their global renown and their per-repo commits/XP (scored by the same craft engine your local CLI uses — core/craftScore.ts is shared, so CI and local scoring can't drift; the board upsert is monotonic, so CI only ever adds contributors or raises stats). Contributors who aren't on renown simply no-op, and the step never fails your build.
# .github/workflows/renown.yml
name: Renown
on: [push]
jobs:
renown:
runs-on: ubuntu-latest
steps:
- uses: absolutejs/renown@v1 # points at the hosted leaderboard by defaultInstall the CLI, link your GitHub account and open the TUI. The hosted leaderboard works with no config.
bun add -g @absolutejs/renown # or: npm install -g @absolutejs/renown
renown link # link your GitHub account -> verified score
renown # open the TUI: skills, quests, pets, leaderboard
# wire it into your editor so XP accrues as you work
renown install-agent all # Claude Code / Codex hooks + tmux HUDThe Action reads GitHub’s own event context and recomputes each linked contributor server-side — no manual sync and no secrets in the workflow.
# .github/workflows/renown.yml
name: Renown
on: [push]
jobs:
renown:
runs-on: ubuntu-latest
steps:
- uses: absolutejs/renown@v1 # hosted leaderboard by default
# prefer no extra action? the CLI does the same:
# - run: npx -y @absolutejs/renown ci-syncCurrent package surface
Import surface · click to copy