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

cc-status-dash

v0.17.0

Published

A feature-rich Claude Code statusline + HUD: widget formatter (ccstatusline-style) fused with live tool/agent/todo activity (Claude HUD-style). Bun-first, Node-compatible.

Readme

cc-status-dash

A feature-rich statusline and HUD dashboard for Claude Code.

ccstatusline's brain, Claude HUD's face.

npm version npm downloads CI license node

cc-status-dash demo

It fuses the two most popular Claude Code statusline tools into one:

  • Config pattern from ccstatusline — a widget pipeline: ordered widgets[] per line, each with its own options; multiple lines; one JSON config; an Ink TUI editor (--tui) with a fuzzy widget picker.
  • Theme / clean look from Claude HUD — a restrained palette, preset-first onboarding, context-health framing, and live tool / agent / todo activity lines.

Plus the best ideas from the wider ecosystem: pace delta (burn vs. time-left) from claude-pace, multiple bar styles from claude-powerline, and up to a 5-layer dashboard.

116 widgets · 10 themes · 35 presets (1–9 layers) · 4 render styles · 10 bar styles


Table of contents


Quick start

As a Claude Code plugin (recommended)

/plugin marketplace add techiewonk/cc-status-dash
/plugin install cc-status-dash
/cc-status-dash:setup

Via npm / npx

Add to ~/.claude/settings.json:

{
  "statusLine": {
    "type": "command",
    "command": "npx -y cc-status-dash@latest",
    "padding": 0,
    "refreshInterval": 10
  }
}

Prefer Bun for ~4× faster per-render startup — swap the command for bunx cc-status-dash@latest. The shipped bundle is --target=node, so it runs on both runtimes. Restart Claude Code once; after that, edits to ~/.claude/cc-status-dash.json reload with no restart.

No Nerd Font? Set "charset": "text" for ASCII-only output.


What you see

The default essential preset — identity on top, health below:

 ✱ Opus 4.8  cc-status-dash  main
 Context █████░░░░░ 54% left  │  5h 38% ⇣274%

Add an activity line (showWhen: "activity") and it appears only while tools/agents/todos run, then collapses:

 ▶ Bash ×12 · Edit ×5   ⚙ explore   ☑ 2/5  Fix bug

Want it all on one line? The oneline family packs everything into a single row:

 ✱ Opus 4.8  │  cc-status-dash  │  main  │  Context 54% left  │  5h 38% ⇣274%  │  $3.42

Presets

35 presets grouped by layer count — pick density first, then flavor (--list-presets shows all):

| Layers | Presets | |---|---| | 1 | minimal · vibe · pace · powerline · oneline · oneline-git · oneline-usage · oneline-activity · oneline-tokens | | 2 | essential (default) · compact · usage · git · hud · tokens · capsule | | 3 | full · dev · monitor · cost · pace-focus · tokens-plus | | 4 | dashboard · dashboard-git · dashboard-usage · dashboard-monitor | | 5 | max · max-usage · max-monitor · max-cost |

npx cc-status-dash --preset oneline   < sample-input.json   # everything on one line
npx cc-status-dash --preset dashboard < sample-input.json   # 4 layers

Configuration

Config is one JSON file, re-read on every render (no restart). Resolution order — highest wins:

CLI flags > env > ./.cc-status-dash.json > ~/.claude/cc-status-dash.json > $CLAUDE_CONFIG_DIR > XDG > defaults
{
  "preset": "custom",
  "theme": "tokyo-night",
  "charset": "unicode",
  "colors": { "model": "#7dcfff", "context": "#9ece6a" },
  "lines": [
    { "style": "powerline", "widgets": [
      { "id": "model", "show1M": true },
      { "id": "cwd", "segments": 2 },
      { "id": "git.branch", "showDirty": true, "showAheadBehind": true, "showDiff": true }
    ]},
    { "style": "inline", "widgets": [
      { "id": "context.bar", "mode": "remaining", "barStyle": "blocks" },
      { "id": "usage.block", "showPace": true },
      { "id": "cost" }
    ]},
    { "style": "inline", "showWhen": "activity", "widgets": [
      { "id": "activity.tools" }, { "id": "activity.agents" }, { "id": "activity.todos" }
    ]}
  ]
}

Every top-level option, per-widget option, bar style, color key, env var, and flag is documented in docs/OPTIONS.md. Highlights:

| Option | Default | Does | |---|---|---| | preset / lines | essential | preset shortcut, or hand-built layout (≤5 lines) | | theme | hud-clean | base palette (--list-themes) | | charset | unicode | text = ASCII fallback | | minimalist | false | drop labels, raw values only | | globalBold / padding / separator | false / 1 / | global cosmetics | | autoWrap | false | wrap inline lines to terminal width | | colors | theme | per-key color overrides (named / 256 / hex) |

Each line picks a render styleinline (a │ b │ c), powerline ( arrows), or capsule (pills) — and showWhen: "activity" to auto-collapse when idle.


Themes & colors

Built-in themes (10): hud-clean (default), tokyo-night, gruvbox, nord, catppuccin, dracula, one-dark, rose-pine, hud-light (for light terminals), mono.

Pick one with "theme" / --theme, then override any individual color under "colors". Values can be a named color (cyan, dim), a 256-index (208), or hex (#ff6600). The theme is the base; your colors layer on top. NO_COLOR is honored.


Widgets

116 widgets across 8 categories — incl. cc-status-dash exclusives session-health (context + pace + reset at a glance) and cache-roi (--list-widgets for the full list):

| Category | # | Examples | |---|---|---| | git | 35 | git.branch, git-status, git-changes, git-ahead-behind, git-worktree, git-pr | | usage | 16 | usage.block (5h), usage.weekly (7d), cost, burn-rate, budget, external-usage, daily/weekly/monthly-cost | | activity | 14 | activity.tools, activity.agents, activity.todos, activity.mcp, skills, mcp-count, message-count | | tokens | 14 | tokens-total, tokens-cached, cache-hit-rate, cache-roi, session-tokens, tokens-per-min, total-speed | | system | 12 | cwd, added-dirs, version, session-name, free-memory, terminal-width, config-counts | | context | 8 | context.bar, context-percentage, session-health, context-length, compaction-counter | | model | 4 | model, thinking-effort, provider, claude-account-email | | custom | 4 | custom-text, custom-symbol, custom-command, link |


CLI

npx cc-status-dash --list-widgets     # 116 widgets
npx cc-status-dash --list-themes      # 10 themes
npx cc-status-dash --list-presets     # 35 presets
npx cc-status-dash --validate         # check config files in the resolution chain
npx cc-status-dash --configure        # @clack preset wizard (TTY)
npx cc-status-dash --tui              # Ink config editor with fuzzy picker (TTY)
echo '{ ... }' | npx cc-status-dash   # render a custom payload

How it works

Claude Code pipes a JSON status payload on stdin; cc-status-dash prints the rendered line(s) to stdout.

stdin JSON + transcript JSONL
        │
   providers (git · transcript · system · stats) — only what the visible widgets need
        │
   widget registry  (collect → render → Segment[];  empty widgets auto-culled)
        │
   layout engine (lines → inline | powerline | capsule;  auto-wrap)
        │
   color layer (theme palette + custom colors + NO_COLOR/charset)
        │
      stdout

The render hot path never loads React/Ink (the TUI lives in lazy chunks), providers run lazily, and the render path never throws — worst case it prints Claude.


Development & testing

bun install
bun run build            # code-split bundle -> dist/
bun run demo             # render sample-input.json
bun test src             # 283 tests
bun run smoke            # full functionality check: every preset/theme/style/flag (45 checks)

The full development & manual-testing guide covers the build, the automated suites, the one-command smoke check, a manual testing matrix for every subsystem (presets, themes, charset, stats, git/transcript widgets, the TUI/wizard), testing live inside Claude Code, Linux/CI parity via Docker, extending widgets/presets/themes, and regenerating the demo GIF.

No Bun? npm install && npm run build:node && node dist/index.js < sample-input.json.


Docs


Credits

Standing on the shoulders of ccstatusline, Claude HUD, claude-powerline, and claude-pace.

License

MIT