{"id":47596479,"url":"https://github.com/josheche/tokengolf","last_synced_at":"2026-04-01T18:11:34.581Z","repository":{"id":343154539,"uuid":"1175677812","full_name":"josheche/tokengolf","owner":"josheche","description":"⛳️ Gamified Claude Code token efficiency.","archived":false,"fork":false,"pushed_at":"2026-03-19T04:22:03.000Z","size":1075,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-19T18:33:28.448Z","etag":null,"topics":["ai","ai-game","ai-token","claude","claude-code","claude-code-cli","claude-code-game","claude-code-hooks","claude-code-skills","claude-code-statusline","cli","cli-game","education","gamification","llm","llms","roguelike","roguelike-game"],"latest_commit_sha":null,"homepage":"https://josheche.github.io/tokengolf/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/josheche.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-08T02:42:26.000Z","updated_at":"2026-03-19T04:22:06.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/josheche/tokengolf","commit_stats":null,"previous_names":["josheche/tokengolf"],"tags_count":20,"template":false,"template_full_name":null,"purl":"pkg:github/josheche/tokengolf","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/josheche%2Ftokengolf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/josheche%2Ftokengolf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/josheche%2Ftokengolf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/josheche%2Ftokengolf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/josheche","download_url":"https://codeload.github.com/josheche/tokengolf/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/josheche%2Ftokengolf/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31290774,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T13:12:26.723Z","status":"ssl_error","status_checked_at":"2026-04-01T13:12:25.102Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","ai-game","ai-token","claude","claude-code","claude-code-cli","claude-code-game","claude-code-hooks","claude-code-skills","claude-code-statusline","cli","cli-game","education","gamification","llm","llms","roguelike","roguelike-game"],"created_at":"2026-04-01T18:11:34.011Z","updated_at":"2026-04-01T18:11:34.570Z","avatar_url":"https://github.com/josheche.png","language":"JavaScript","readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/assets/banner.svg\" alt=\"TokenGolf\" width=\"800\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eEvery token counts. Every session is scored.\u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.npmjs.com/package/tokengolf\"\u003e\u003cimg src=\"https://img.shields.io/npm/v/tokengolf?style=flat\u0026color=d4a840\u0026label=npm\" alt=\"npm version\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.npmjs.com/package/tokengolf\"\u003e\u003cimg src=\"https://img.shields.io/npm/dm/tokengolf?style=flat\u0026color=6bb54a\u0026label=downloads\" alt=\"npm downloads\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/josheche/tokengolf/blob/main/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/npm/l/tokengolf?style=flat\u0026color=7cb8d4\" alt=\"license\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://nodejs.org\"\u003e\u003cimg src=\"https://img.shields.io/node/v/tokengolf?style=flat\u0026color=9a9180\" alt=\"node version\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://josheche.github.io/tokengolf/\"\u003etokengolf.dev\u003c/a\u003e · \u003ca href=\"https://www.npmjs.com/package/tokengolf\"\u003enpm\u003c/a\u003e · \u003ca href=\"https://github.com/josheche/tokengolf\"\u003eGitHub\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\nTurn Claude Code token efficiency into a game. Every session is automatically tracked and scored against a dynamic par budget. Work normally. On `/exit` — a scorecard, achievements, and a score that measures how well you prompt.\n\n**Better prompting → fewer tokens → higher score.** 60+ achievements. 9 hooks. 4 character classes. Zero config beyond install.\n\n```\n██  🏆  SESSION COMPLETE\n██  ──────────────────────────────────────────────────\n██  $0.21  /$3.00 par  14%  ⚔️ Sonnet  🥇 Gold\n██  🌟 LEGENDARY\n██  ──────────────────────────────────────────────────\n██  🎯 Sniper  🥈 Silver  🔥 No Rest  ✅ Clean Run  🧰 Toolbox  🤫 Silent Run\n```\n\n---\n\n## Quick Start\n\n**Claude Code Plugin** (recommended — auto-updates)\n\n```bash\nclaude plugin marketplace add josheche/tokengolf\nclaude plugin install tokengolf@tokengolf\n```\n\n**npm** (alternative — requires hook setup)\n\n```bash\nnpm install -g tokengolf\ntokengolf install          # patches ~/.claude/settings.json\n```\n\n**Homebrew**\n\n```bash\nbrew tap josheche/tokengolf\nbrew install tokengolf\ntokengolf install\n```\n\n**curl**\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/josheche/tokengolf/main/install.sh | bash\n```\n\nThat's it. Open Claude Code, work normally, `/exit` — scorecard appears automatically.\n\nnpm users get auto-sync — hooks update automatically on version change.\n\n\u003cdetails\u003e\n\u003csummary\u003eAll commands\u003c/summary\u003e\n\n```bash\ntokengolf scorecard              # last run scorecard\ntokengolf stats                  # career dashboard\ntokengolf config                 # view all config values\ntokengolf config emotions emoji  # set emotion mode (off, emoji, ascii)\ntokengolf config par             # view/set par rates per model\ntokengolf config floor           # view/set par floors per model\ntokengolf demo                   # show all UI states (hud, scorecard, stats)\ntokengolf install                # patch ~/.claude/settings.json with hooks (npm only)\n```\n\n\u003c/details\u003e\n\n---\n\n## How It Works\n\nEvery Claude Code session is automatically tracked — no setup, no pre-configuration. TokenGolf measures your efficiency against a **par budget** that scales with your session:\n\n```\npar = max(rate × sqrt(prompts), model_floor)\nefficiency = actual_cost / par\n```\n\nPar grows with your session, but **sublinearly** — early prompts give you room to explore, while pressure builds as the session goes on. Efficient prompts beat par; wasteful ones fall behind. Spend more than par and the run **busts** — logged as a death with red accents and death achievements.\n\n| Model      | Par Rate | Floor  |\n| ---------- | -------- | ------ |\n| 🏹 Haiku   | $0.15    | $0.10  |\n| ⚔️ Sonnet  | $1.50    | $0.75  |\n| ⚜️ Paladin | $4.50    | $2.00  |\n| 🧙 Opus    | $8.00    | $3.00  |\n\nThe floor prevents 1-prompt sessions from being instant BUST. The sqrt scaling means a 4-prompt Sonnet session has par $3.00, while a 16-prompt session has par $6.00 (not $24). Long sessions must be increasingly efficient to stay under par.\n\nRates and floors are configurable per model:\n\n```bash\ntokengolf config par              # list all rates\ntokengolf config par sonnet 1.5   # set Sonnet par rate to $1.50/prompt\ntokengolf config par reset        # restore defaults\ntokengolf config floor opus 20.0  # set Opus floor to $20.00\ntokengolf config floor reset      # restore defaults\n```\n\n---\n\n## Character Classes\n\n| Class          | Model            | Difficulty | Feel                                            |\n| -------------- | ---------------- | ---------- | ----------------------------------------------- |\n| 🏹 **Rogue**   | Haiku            | Nightmare  | Glass cannon. Prompt precisely or die.          |\n| ⚔️ **Fighter** | Sonnet           | Standard   | Balanced. The default run.                      |\n| ⚜️ **Paladin** | Opus (plan mode) | Tactical   | Strategic planner. Opus plans, Sonnet executes. |\n| 🧙 **Warlock** | Opus             | Casual     | Powerful but expensive.                         |\n\nEffort levels: Low / **Medium** / High / Max (Opus-only). Fast mode (`/fast` in Claude Code) is auto-detected and unlocks unique achievements (Lightning Run, Daredevil).\n\n---\n\n## Scoring\n\n**Efficiency** (% of par used):\n\n| 🌟 LEGENDARY | 🔥 EPIC | 💪 PRO | ✅ SOLID | ⚠️ CLOSE CALL | 💥 BUST |\n| ------------ | ------- | ------ | -------- | ------------- | ------- |\n| \u003c 15%        | \u003c 30%   | \u003c 50%  | \u003c 75%    | \u003c 100%        | \u003e 100%  |\n\n**Spend tier** (model-calibrated — shown here for Sonnet):\n\n| ✨ Mythic | 💎 Diamond | 🥇 Gold | 🥈 Silver | 🥉 Bronze | 💸 Reckless |\n| --------- | ---------- | ------- | --------- | --------- | ----------- |\n| \u003c $0.10   | \u003c $0.50    | \u003c $1.50 | \u003c $4.00   | \u003c $10.00  | \u003e $10.00    |\n\nThresholds scale per model — Haiku Diamond is $0.15, Opus Diamond is $2.50. Same relative difficulty, different absolute cost.\n\n---\n\n## Achievements\n\n60+ achievements tracking how you prompt, what tools you use, and how efficiently you spend. Here are some highlights:\n\n|     | Achievement    | How                                           |\n| --- | -------------- | --------------------------------------------- |\n| 🥊  | **One Shot**   | Completed in a single prompt                  |\n| 🎯  | **Sniper**     | Under 25% of par used                         |\n| 💎  | **Diamond**    | Haiku under $0.10 total                       |\n| 🔪  | **Surgeon**    | 1–3 Edit calls, under par                     |\n| 🤫  | **Silent Run** | No extended thinking, SOLID or better         |\n| 👑  | **Archmagus**  | Opus at max effort, completed                 |\n| 🥷  | **Ghost Run**  | Manual compact at ≤30% context                |\n| 🐺  | **Lone Wolf**  | No subagents spawned                          |\n| 🤦  | **Hubris**     | Used ultrathink, busted anyway _(death mark)_ |\n| 💥  | **Blowout**    | Spent 2× your par _(death mark)_              |\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eFull achievement list (60+)\u003c/strong\u003e\u003c/summary\u003e\n\n**Class**\n\n- 💎 Diamond — Haiku under $0.10 total spend\n- 🥇 Gold — Completed with Haiku\n- 🥈 Silver — Completed with Sonnet\n- 🥉 Bronze — Completed with Opus\n- ⚜️ Paladin — Completed as Paladin (Opus plan mode)\n- ♟️ Grand Strategist — EPIC efficiency as Paladin\n\n**Efficiency**\n\n- 🎯 Sniper — Under 25% of par used\n- ⚡ Efficient — Under 50% of par used\n- 🪙 Penny Pincher — Total spend under $0.10\n- 💲 Cheap Shots — Under $0.01 per prompt (≥3 prompts)\n- 🍷 Expensive Taste — Over $0.50 per prompt (≥3 prompts)\n\n**Prompting skill**\n\n- 🥊 One Shot — Completed in a single prompt\n- 💬 Conversationalist — 20+ prompts in one run\n- 🤐 Terse — ≤3 prompts, ≥10 tool calls\n- 🪑 Backseat Driver — 15+ prompts but \u003c1 tool call per prompt\n- 🏗️ High Leverage — 5+ tool calls per prompt (≥2 prompts)\n\n**Tool mastery**\n\n- 👁️ Read Only — Won with no Edit or Write calls\n- ✏️ Editor — 10+ Edit calls\n- 🐚 Bash Warrior — 10+ Bash calls comprising ≥50% of tools\n- 🔍 Scout — ≥60% of tool calls were Reads (≥5 total)\n- 🔪 Surgeon — 1–3 Edit calls, completed under par\n- 🧰 Toolbox — 5+ distinct tools used\n\n**Effort**\n\n- 🏎️ Speedrunner — Low effort, completed under par\n- 🏋️ Tryhard — High/max effort, EPIC efficiency\n- 👑 Archmagus — Opus at max effort, completed\n\n**Fast mode**\n\n- ⛈️ Lightning Run — Opus fast mode, completed under par\n- 🎰 Daredevil — Opus fast mode, EPIC efficiency\n\n**Time**\n\n- ⏱️ Speedrun — Completed in under 5 minutes\n- 🏃 Marathon — Session over 60 minutes\n- 🫠 Endurance — Session over 3 hours\n\n**Ultrathink**\n\n- 🔮 Spell Cast — Used extended thinking during the run\n- 🧮 Calculated Risk — Ultrathink + EPIC efficiency\n- 🌀 Deep Thinker — 3+ ultrathink invocations, completed under par\n- 🤫 Silent Run — No extended thinking, SOLID or better\n- 🤦 Hubris — Used ultrathink, busted anyway _(death mark)_\n\n**Multi-model**\n\n- 🏹 Frugal — Haiku handled ≥50% of session cost\n- 🎲 Rogue Run — Haiku handled ≥75% of session cost\n- 🔷 Purist — Single model family throughout\n- 🦎 Chameleon — Multiple model families used, under par\n- 🔀 Tactical Switch — Exactly 1 model switch, under par\n- 🔒 Committed — No switches, one model family\n- ⚠️ Class Defection — Declared one class but cost skewed to another\n\n**Paladin planning ratio**\n\n- 🏛️ Architect — Opus handled \u003e60% of cost (heavy planner)\n- 💨 Blitz — Opus handled \u003c25% of cost (light plan, fast execution)\n- ⚖️ Equilibrium — Opus/Sonnet balanced at 40–60%\n\n**Rest \u0026 recovery**\n\n- 🔥 No Rest for the Wicked — Completed in one session\n- 🏕️ Made Camp — Completed across multiple sessions\n- 🧟 Came Back — Fainted (hit usage limits) and finished anyway\n\n**Context management (gear)**\n\n- 📦 Overencumbered — Context auto-compacted during run\n- 🎒 Traveling Light — Manual compact at ≤50% context\n- 🪶 Ultralight — Manual compact at ≤40% context\n- 🥷 Ghost Run — Manual compact at ≤30% context\n\n**Tool reliability**\n\n- ✅ Clean Run — Zero failed tool calls (≥5 total)\n- 🐂 Stubborn — 10+ failed tool calls, still won\n\n**Subagents**\n\n- 🐺 Lone Wolf — Completed with no subagents spawned\n- 📡 Summoner — 5+ subagents spawned\n- 🪖 Army of One — 10+ subagents, under 50% par used\n\n**Turn discipline**\n\n- 🤖 Agentic — 3+ Claude turns per user prompt\n- 🐕 Obedient — Exactly one turn per prompt (≥3 prompts)\n\n**Death marks** _(fire on bust, not win)_\n\n- 💥 Blowout — Spent 2× your par\n- 😭 So Close — Died within 10% of par\n- 🔨 Tool Happy — Died with 30+ tool calls\n- 🪦 Silent Death — Died with ≤2 prompts\n- 🤡 Fumble — Died with 5+ failed tool calls\n- 🎲 Indecisive — 3+ model switches\n- 🍷 Expensive Taste — Over $0.50 per prompt\n\n\u003c/details\u003e\n\n---\n\n## Live HUD\n\nAfter install, a 3-line status bar appears in every Claude Code session showing efficiency rating, project info, cost, emotion, model, and context load.\n\n```\n██ 🌟 LEGENDARY  📂 myapp  ⎇ main ✓\n██ 😎 VIBING  💎 $0.42/9.90 ▓░░░░░░░░░░ 4%\n██ ⚔️ Sonnet  🪶 ▓░░░░░░░░░ 8%\n\n██ 💪 PRO  📂 api-server  ⎇ feat/auth ●\n██ 😤 GRINDING  🥉 $6.80/19.80 ▓▓▓▓░░░░░░░ 34%\n██ ⚔️ Sonnet  📚 ▓▓▓░░░░░░░ 34%\n```\n\n**Line 1**: Efficiency rating + project name + git branch (✓ clean, ● dirty). **Line 2**: Emotion + cost vs par + progress bar. **Line 3**: Model class + context weight (**🪶** · **📚** · **🎒** · **🧱** · **🪨** · **🗿** — feather to stone). Accent `██` color matches your efficiency tier. **💤** replaces the emotion icon when fainted.\n\nEmotions are a composite signal: par %, context %, failed tools, prompt count. From 😎 VIBING through 😤 GRINDING to 🧟 ZOMBIE (past bust). Three display modes: `tokengolf config emotions emoji` (default), `ascii` (kaomoji + label on a 4th line), or `off`.\n\n---\n\n## Auto Scorecard\n\nWhen you `/exit`, the scorecard appears automatically — cost vs par, model breakdown, achievements, tool usage.\n\n```\n██  🏆  SESSION COMPLETE\n██  ──────────────────────────────────────────────────\n██  SPENT      PAR       USED    MODEL        TIER\n██  $0.21    $1.50      14%    ⚔️ Sonnet     🥇 Gold\n██\n██  🌟 LEGENDARY\n██  ──────────────────────────────────────────────────\n██  Achievements unlocked:\n██   🎯 Sniper — Under 25% of par\n██   🥈 Silver — Completed with Sonnet\n██   🔥 No Rest for the Wicked — One session\n██   ✅ Clean Run — Zero failed tool calls\n██   🧰 Toolbox — 5+ distinct tool types\n██   🤫 Silent Run — No extended thinking\n██  ──────────────────────────────────────────────────\n██  Model usage:  🏹 17% Haiku\n██  Sonnet 83% $0.19   Haiku 17% $0.04\n██  ──────────────────────────────────────────────────\n██  Tool calls:\n██  Read ×8  Edit ×4  Bash ×3  Grep ×2  Glob ×1\n```\n\n```\n██  💀  PAR BUST\n██  ──────────────────────────────────────────────────\n██  $48.00  /$22.14 par  217%  ⚔️ Sonnet·High  💥 BUST\n██  ──────────────────────────────────────────────────\n██  🤦 Hubris   💥 Blowout   🤡 Fumble   🔨 Tool Happy\n██  ──────────────────────────────────────────────────\n██  Cause of death: Par exceeded by $25.86\n██  Tip: Use Read with line ranges instead of full file reads.\n```\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eUltrathink\u003c/strong\u003e\u003c/summary\u003e\n\nWrite `ultrathink` anywhere in your prompt to trigger extended thinking mode. It's not a slash command — just say it in natural language:\n\n\u003e _\"ultrathink: is this the right architecture before I write anything?\"_\n\u003e _\"can you ultrathink through the tradeoffs here?\"_\n\nExtended thinking tokens are billed at full output rate. A single ultrathink on Sonnet can cost $0.50–2.00 depending on problem depth. TokenGolf detects thinking blocks from your session transcripts and tracks invocations and estimated thinking tokens — both show on your scorecard.\n\n**The skill is knowing when to ultrathink.** One expensive deep-think that prevents five wrong turns is efficient. Ultrathinking every prompt when you're at 80% of par is hubris.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eThe Meta Loop\u003c/strong\u003e\u003c/summary\u003e\n\nAchievement names map directly to real session behaviors:\n\n- **Overencumbered** = context bloat slowing you down\n- **Made Camp** = hit usage limits, came back next session\n- **Ghost Run** = surgical context management before the boss\n- **Hubris** = reached for ultrathink on a tight par budget and paid for it\n- **Silent Run** = solved it with pure prompting discipline, no extended thinking needed\n- **Lone Wolf** = didn't spawn a single subagent; held the whole problem in one context\n- **Agentic** = gave Claude the wheel and it ran with it — 3+ turns per prompt\n\nThese patterns compound over time. **Better prompting habits → lower daily spend → better scores without even trying.**\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eWhy \"TokenGolf\"?\u003c/strong\u003e\u003c/summary\u003e\n\n[Code golf](https://en.wikipedia.org/wiki/Code_golf) is the engineering practice of solving a problem in as few characters (or lines, or bytes) as possible. The constraint isn't the point — the _discipline the constraint creates_ is the point. Writing the shortest possible solution forces you to understand the problem deeply and use your tools precisely.\n\nToken golf is the same idea applied to AI sessions. Your budget is par. Every unnecessary prompt, every redundant context dump, every \"can you also...\" tacked onto a request is a stroke over par. The game doesn't literally resemble golf — it borrows the concept: **optimize under constraint, measure your score, improve your game.**\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eHooks (9 total)\u003c/strong\u003e\u003c/summary\u003e\n\nInstalled automatically via plugin, or manually via `tokengolf install` (npm):\n\n| Hook                 | When                   | What it does                                                            |\n| -------------------- | ---------------------- | ----------------------------------------------------------------------- |\n| `SessionStart`       | Session opens          | Auto-creates run, injects par budget into Claude's context.             |\n| `PostToolUse`        | After every tool       | Tracks tool usage by type. Fires par warning at 80%.                    |\n| `PostToolUseFailure` | After a tool error     | Increments `failedToolCalls` — powers Clean Run, Stubborn, Fumble.      |\n| `UserPromptSubmit`   | Each prompt            | Counts prompts. Injects halfway nudge at 50% of par.                    |\n| `PreCompact`         | Before compaction      | Records manual vs auto compact + context % — powers gear achievements.  |\n| `SessionEnd`         | Session closes         | Scans transcripts for cost + ultrathink, saves run, displays scorecard. |\n| `SubagentStart`      | Subagent spawned       | Increments `subagentSpawns` — powers Lone Wolf, Summoner, Army of One.  |\n| `Stop`               | Claude finishes a turn | Increments `turnCount` — powers Agentic, Obedient.                      |\n| `StatusLine`         | Continuously           | Live HUD with cost, tier, efficiency, context %, model class.           |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eState\u003c/strong\u003e\u003c/summary\u003e\n\nAll data lives in `~/.tokengolf/`:\n\n- `current-run-{cwd}.json` — active run (per-project, so concurrent sessions in different repos don't collide)\n- `session-cost-{cwd}` — cost sidecar from statusline (per-project)\n- `runs.json` — completed run history (shared)\n- `config.json` — user preferences (emotion mode, custom par rates)\n- `statusline.sh` — stable copy of the HUD script (survives plugin/npm uninstall)\n\nNo database, no native deps, no compilation.\n\n\u003c/details\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjosheche%2Ftokengolf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjosheche%2Ftokengolf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjosheche%2Ftokengolf/lists"}