npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

bashstats

v0.2.3

Published

Obsessive stat tracking, achievements, and badges for Claude Code users

Downloads

503

Readme

bashstats

Track every prompt, tool call, and late-night coding session. Earn badges. Build streaks. Climb 500 ranks from Bronze to System Anomaly.

bashstats hooks into Claude Code and quietly records everything — sessions, prompts, tool usage, errors, tokens, and streaks. It turns all of it into stats, 124 achievements, weekly goals, and a dashboard you'll check way too often.

Install

npm install -g bashstats
bashstats init

bashstats init installs Claude Code hooks and creates the local database at ~/.bashstats/bashstats.db. Stats begin recording immediately.

CLI Commands

| Command | Description | |---|---| | bashstats init | Install hooks and set up database | | bashstats stats | Quick stat summary in your terminal | | bashstats achievements | List all badges with progress bars | | bashstats streak | Show current and longest daily streak | | bashstats web | Launch the browser dashboard | | bashstats export | Export all data as JSON | | bashstats reset | Wipe all data | | bashstats uninstall | Remove hooks and data |

Options

bashstats web --port 8080    # Custom port (default: 17900)
bashstats web --no-open      # Don't auto-open browser

Dashboard

The browser dashboard at http://localhost:17900 includes:

  • Overview - Recent badges, rank progress, stat cards, activity heatmap, and recent sessions at a glance
  • Stats - Lifetime totals, tool breakdowns, time analysis, session records, and project stats in a 2x2 grid
  • Achievements - All 124 badges with tier progress, organized by category
  • Timeline - Activity heatmap and session history with sparkline charts

What Gets Tracked

bashstats hooks into 12 Claude Code events:

| Event | What it records | |---|---| | SessionStart | Session creation, project, agent type | | UserPromptSubmit | Prompt content, character/word counts | | PreToolUse | Tool invocations (Bash, Read, Edit, etc.) | | PostToolUse | Tool results and exit codes | | PostToolUseFailure | Failed tool calls | | Stop | Session end time and duration | | Notification | Errors and rate limits | | SubagentStart | Subagent spawns | | SubagentStop | Subagent completions | | PreCompact | Context compactions | | PermissionRequest | Permission prompts | | Setup | Initialization events |

Achievements

124 badges across 16 categories, each with 5 tiers: Bronze, Silver, Gold, Diamond, Singularity. Tiers are calibrated for year-long progression — Bronze in your first week, Singularity after 12+ months.

Volume (5)

  • First Prompt - Submit prompts to Claude
  • Tool Time - Make tool calls
  • Marathon - Spend hours in sessions
  • Wordsmith - Type characters in prompts
  • Session Vet - Complete sessions

Tool Mastery (7)

  • Shell Lord - Execute Bash commands
  • Bookworm - Read files
  • Editor-in-Chief - Edit files
  • Architect - Create files
  • Detective - Search with Grep and Glob
  • Web Crawler - Fetch web pages
  • Delegator - Spawn subagents

Time & Patterns (10)

  • Iron Streak - Maintain a daily streak
  • Night Owl - Prompts between midnight and 5am
  • Early Bird - Prompts between 5am and 8am
  • Weekend Warrior - Weekend sessions
  • Witching Hour - Prompts between 2am and 4am
  • Lunch Break Coder - Sessions during lunch hour
  • Monday Motivation - Monday sessions
  • Friday Shipper - Git commits on Friday
  • Timezone Traveler - Unique hours with activity in a day
  • Seasonal Coder - Code through all four seasons

Session Behavior (6)

  • One More Thing - Extended sessions (1hr+, 15+ prompts)
  • Quick Draw - Sessions under 2 minutes with tool use
  • The Pivot - Sessions using 5+ distinct tool types
  • Context Crunch - Context compaction events
  • Permission Slip - Permission request events
  • The Returner - Days with 5+ sessions on the same project

Behavioral (5)

  • Creature of Habit - Repeat your most-used prompt
  • Explorer - Use unique tool types
  • Planner - Use plan mode
  • Novelist - Write prompts over 1000 characters
  • Speed Demon - Complete sessions in under 5 minutes

Prompt Patterns (6)

  • Minimalist - Short prompts (under 10 words)
  • Question Master - Prompts ending with a question mark
  • The Apologizer - Prompts containing "sorry"
  • CAPS LOCK ENERGY - Fully uppercase prompts
  • Emoji Whisperer - Prompts with emoji
  • Code Dump - Prompts with 50+ lines

Resilience (3)

  • Clean Hands - Longest error-free tool streak
  • Resilient - Survive errors
  • Rate Limited - Hit rate limits

Error & Recovery (5)

  • Rubber Duck - Tool failure followed by success without edits
  • Third Time's the Charm - Success after 2+ consecutive failures
  • The Undoer - Back-to-back edits on the same file
  • Crash Test Dummy - Sessions with 10+ errors
  • Phoenix - Total lifetime errors survived

Tool Combos (5)

  • Read-Edit-Run - Read, Edit, Bash sequences
  • Grep Ninja - Total Grep and Glob searches
  • File Factory - Max files created in a session
  • The Refactorer - Max edits to a single file across all sessions
  • Search and Destroy - Grep/Glob followed by Edit

Shipping & Projects (4)

  • Shipper - Make commits via Claude
  • PR Machine - Create pull requests
  • Empire - Work on unique projects
  • Polyglot - Use different programming languages

Project Dedication (5)

  • Monogamous - Max sessions on a single project
  • Project Hopper - Max unique projects in a day
  • The Finisher - Projects with commits followed by inactivity
  • Legacy Code - Return to a project after 30+ days
  • Greenfield - Total unique projects initialized

Multi-Agent (12)

  • Buddy System - Use concurrent agents
  • Hive Mind - Total subagent spawns
  • Swarm Intelligence - Max concurrent subagents
  • Micromanager - Subagents stopped within 30 seconds
  • The Orchestrator - Total subagent spawns across all sessions
  • Agent Smith - Max subagents in a single session
  • Polyglot Agent - Use multiple CLI agents
  • Gemini Whisperer - Complete sessions in Gemini CLI
  • Copilot Rider - Complete sessions in Copilot CLI
  • Open Source Spirit - Complete sessions in OpenCode
  • Agent Hopper - Use different agents on multiple days
  • Double Agent - Use 2+ agents on the same day

Wild Card (12)

  • Please and Thank You - Polite prompts
  • Wall of Text - Prompts over 5,000 characters
  • The Fixer - Max edits to a single file
  • What Day Is It? - Sessions exceeding 8 hours
  • Copy Pasta - Duplicate prompts submitted
  • Error Magnet - Max errors in a single session
  • Déjà Vu - Same prompt submitted twice within 5 minutes
  • Trust Issues - Read immediately after Write on the same file
  • Backseat Driver - Prompts with numbered step-by-step instructions
  • The Negotiator - Prompts containing "try again" or "one more time"
  • Rubber Stamp - Max consecutive permission requests
  • It Works On My Machine - Bash success after a previous Bash failure

Token Usage (10)

  • Token Burner - Total tokens consumed across all sessions
  • Output Machine - Total output tokens generated
  • Cache Royalty - Total cache read tokens
  • Context Crafter - Total cache creation tokens
  • Token Whale - Most tokens in a single session
  • Heavy Hitter - Sessions exceeding 1M total tokens
  • Featherweight - Lean sessions under 50K tokens with tool use
  • Token Velocity - Average tokens per session
  • Prolific - Most output tokens in one session
  • Input Flood - Total raw input tokens

Aspirational (Singularity-only) (12)

  • The Machine - 100,000 total tool calls
  • Year of Code - 365-day consecutive streak
  • Million Words - 10 million characters typed
  • Lifer - 10,000 sessions completed
  • Transcendent - 100,000 total XP
  • Omniscient - All tool mastery badges at Singularity tier
  • 10,000 Hours - 10,000 hours in sessions
  • The Architect - 1,000+ files created
  • Eternal Flame - 180-day consecutive streak
  • The Collector - Every non-secret, non-aspirational badge unlocked
  • Centimillionaire - 100 million characters typed
  • Token Billionaire - 1 billion total tokens consumed

Secret

17 hidden badges unlocked by specific behaviors. Discover them yourself.

Rank System

500 numbered ranks with an exponential XP curve. Early ranks come fast; the top 100 are a serious grind.

Formula: cumXP(N) = floor(10 * N^2.2)

| Tier | Ranks | Approx. Time | |------|-------|-------------| | Bronze | 1-100 | First few months | | Silver | 101-200 | ~3-4 months | | Gold | 201-300 | ~6-9 months | | Diamond | 301-400 | ~12-18 months | | Obsidian | 401-499 | Each rank takes weeks | | System Anomaly | 500 | 2+ years |

XP sources: prompts (+1), sessions (+5), hours (+10/hr), streaks (+5/day), badge tier unlocks (50-1000), and weekly goals.

Weekly Goals

Two systems that stack for bonus XP:

Activity Multiplier -- XP bonus based on days active this week:

| Days Active | Multiplier | |-------------|-----------| | 1-2 | 1.0x-1.1x | | 3-4 | 1.2x-1.3x | | 5-6 | 1.5x-1.75x | | 7 | 2.0x |

Challenge Cards -- 3 rotating challenges generated each Monday from a pool of ~25. Complete them for bonus XP (100-300 per challenge). Examples: "Use 5+ tools in one session", "Submit 50 prompts this week", "Hit a 7-day streak".

Agent Support

bashstats works with multiple AI coding agents. bashstats init auto-detects installed agents and sets up hooks for each one.

| Agent | Detection | Token Tracking | |-------|-----------|----------------| | Claude Code | Always installed (default) | Full (input, output, cache) | | Gemini CLI | ~/.gemini directory exists | Approximate (total only) | | Copilot CLI | copilot binary available | Not available | | OpenCode | ~/.config/opencode exists | Not available |

All agents share the same ~/.bashstats/bashstats.db database. The dashboard agent dropdown filters stats by agent, and the overview tab shows a breakdown when multiple agents are in use.

How it works

  • Claude Code - Hooks installed in ~/.claude/settings.json
  • Gemini CLI - Hooks installed in ~/.gemini/settings.json
  • Copilot CLI - Hook config written to ~/.copilot/hooks/bashstats-hooks.json
  • OpenCode - Plugin installed at ~/.config/opencode/plugins/bashstats.ts

bashstats uninstall removes hooks from all agents.

Data Storage

All data is stored locally in ~/.bashstats/bashstats.db (SQLite with WAL mode). Nothing is sent anywhere. Tables:

  • events - Every hook event with full context
  • sessions - Session lifecycle (start, end, duration, counts, token usage)
  • prompts - Prompt content and word/char counts
  • daily_activity - Aggregated daily stats
  • achievement_unlocks - Badge tier unlock timestamps
  • weekly_goals - Weekly challenge cards and completion status
  • weekly_xp - Weekly XP totals with multiplier tracking

Tech Stack

  • TypeScript + Node.js 18+
  • SQLite via better-sqlite3
  • Express for the dashboard server
  • Commander for the CLI
  • tsup for bundling
  • vitest for tests

Development

git clone https://github.com/GhostPeony/bashstats.git
cd bashstats
npm install
npm run build
npm link
bashstats init

License

MIT