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

claude-bar

v1.0.3

Published

Themeable status line for Claude Code CLI

Readme


Why?

Claude Code doesn't show you how much a session is costing, how full your context window is, or how long you've been going. claude-bar adds a status line at the bottom of your terminal with all of that — and lets you pick how it looks.


Themes

Six built-in styles. Switch anytime. Zero restart.

 emoji       📂 myproject | 🔢 322K ($5.02) | 📊 ████░░░░░░ 43% | ⏱ 1h10m | 🤖 Opus 4.6
 minimal     myproject ~ main +3-1 ~ tok:322K $5.02 ~ ctx:43% ~ t:1h10m ~ Opus 4.6
 ascii       [DIR:myproject] [GIT:main +3-1] [TOK:322K $5.02] [CTX:43%] [Opus 4.6]
 compact     myproject|main+3-1|322K$5.0|43%|1h10m|O46
 powerline   ▌ myproject ▌ main +3-1 ▌ 322K $5.02 ▌ CTX:43% ▌ Opus 4.6 ▌
 nerd         myproject │  main │  322K ($5.02) │ ▓▓▓▓░░░░░░ 43% │  Opus 4.6

nerd and powerline require a Nerd Font or Powerline-patched font.

Preview them live in your terminal:

claude-bar theme preview

Setup

Requires jq (brew install jq / apt install jq) and Claude Code v2.1+.

npm (recommended):

npm install -g claude-bar
claude-bar             # interactive — choose a theme
claude-bar -y          # skip prompts, use defaults

npx (no install):

npx claude-bar
npx claude-bar -y

git:

git clone https://github.com/AbdulrahmanMasoud/claude-bar.git ~/.claude/claude-bar
cd ~/.claude/claude-bar
bash bin/claude-bar

Then restart Claude Code. That's it.

  1. Verifies jq is available
  2. Copies runtime scripts to ~/.claude/
  3. Installs theme files to ~/.claude/themes/
  4. Writes config to ~/.claude/claude-bar.conf
  5. Backs up ~/.claude/settings.json
  6. Adds the statusLine entry:
    { "statusLine": { "type": "command", "command": "bash ~/.claude/statusline.sh" } }

What you get

| | Section | Example | |-|---------|---------| | Dir | Project name | myproject | | Git | Branch + changes | main +12 -3 | | Tokens | Session usage + cost | 322K ($5.02) | | Context | Window usage bar | ████░░░░░░ 43% | | Time | Session duration | 1h10m | | Model | Active model | Opus 4.6 | | Today | Daily tokens + cost | 450K ($7.80) | | Month | Monthly spend | $42.50 |

Every section can be toggled on/off or reordered.


Configure

Edit ~/.claude/claude-bar.conf:

THEME=emoji                    # any built-in or custom theme name

SECTION_DIR=1                  # 1 = visible, 0 = hidden
SECTION_GIT=1
SECTION_SESSION=1
SECTION_CONTEXT=1
SECTION_SESSION_TIME=1
SECTION_MEM=0
SECTION_MODEL=1
SECTION_TODAY=1
SECTION_MONTH=1

SECTION_ORDER="dir,git,session,context,time,model,today,month"

Changes apply on next refresh. No restart needed.

Switch themes from the command line:

claude-bar theme list          # see all available
claude-bar theme set minimal   # switch instantly

Make your own theme

Drop a .sh file in ~/.claude/themes/ with these functions:

theme_init()                         # colors, variables
theme_separator()                    # between sections
theme_dir "$dir"
theme_git "$branch" "$adds" "$dels"
theme_tokens "$display" "$cost"
theme_context "$pct"
theme_time "$display"
theme_memory "$display"
theme_model "$name"
theme_today "$tokens" "$cost"
theme_month "$cost"
theme_wrap "$content"                # optional outer wrapper

Then activate it:

claude-bar theme set my-theme

Use any file in lib/themes/ as a starting point.


Manage

claude-bar update              # update scripts, keep config
claude-bar uninstall           # clean remove, restore settings.json
claude-bar --help

Troubleshooting

Restart Claude Code (Ctrl+C then claude). Verify ~/.claude/settings.json contains the statusLine key.

The correct format is:

{ "statusLine": { "type": "command", "command": "bash ~/.claude/statusline.sh" } }

Not a plain string.

Normal on a fresh session. Values populate after your first message.

Your font doesn't support the theme's glyphs. Switch to ascii: claude-bar theme set ascii

brew install jq (macOS) or apt install jq (Linux)


License

MIT