Skip to content

Latest commit

Β 

History

58 Commits

Folders and files

Repository files navigation

oh-my-claude

npm version CI license Docs

Your Claude Code session is invisible. oh-my-claude makes it visible.

Context window filling up? You won't know until Claude gets confused. Burning $15/hour? No indicator. CI failed after your last push? Switch to a browser to find out. Dev server crashed? You'll debug for 10 minutes before noticing.

oh-my-claude puts all of this in your statusline:

 Opus myproject main ↑2  βœ“ CI  2h ago                   5h 12% ~4h30m $0.36/m
 β–“β–“β–“β–“β–“β–“β–“β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘ 35%  ● :3000                          $1.23  15m 0s

oh-my-claude themes

Install

npm install -g @npow/oh-my-claude
omc install

Two commands. Takes effect immediately.

87 plugins. 12 themes. Zero npm dependencies. Write your own in minutes.


What can it show?

Know when you're running out -- context bar turns yellow at 60%, red at 80%:

  β–“β–“β–“β–“β–“β–“β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘ 30%     ← green
! β–“β–“β–“β–“β–“β–“β–“β–“β–“β–‘β–‘β–‘β–‘β–‘β–‘ 60%     ← yellow
- β–“β–“β–“β–“β–“β–“β–“β–“β–“β–“β–“β–“β–‘β–‘β–‘ 80%     ← red, time to /compact

Know what you're spending -- cost rate, per-line cost, usage limits:

$0.36/m  $4.56  3Β’/line  5h 12% ~4h30m | 7d 30%

Know if your stuff is working -- dev server, CI, PR status:

● :3000  βœ“ CI  PR #42 βœ“ approved  3 reviews

Or just have fun -- virtual pets, RPG stats, fortune cookies:

(^.^) Lv.9 STR:18 DEX:4  πŸ”₯ 7d streak  πŸ₯  "Ship it." β€” @chad

Themes

omc theme <name>
Theme What it's for
default Clean two-line: git, context bar, cost
minimal Single line, text only
analytics Usage limits, cost rate, efficiency, context ETA
devops Localhost health, CI status, PR reviews, uncommitted diff
productivity Clock, work/break cycle, day progress
powerline Nerd Font icons and arrows
tamagotchi Virtual pet, garden, coffee, vibes
rpg D&D stats, speedrun, cat, horoscope
boss-battle Dungeon crawl, battle music
coworker Fake Slack messages, fortune cookies
narrator Third-person text adventure
danger-zone Everything on fire

See screenshots below.


All 87 plugins

Everything ships in the box. Just omc add <name>. Plugins that need external tools hide gracefully if the tool isn't installed.

Usage limits & cost (19 plugins)
Plugin Example Needs
usage-limits 5h 12% ~4h30m | 7d 30% Chrome
context-bar β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘ 38%
context-percent 38%
context-tokens 84k/200k
context-remaining 115k left
context-eta ETA 22m
context-level ↑↑
compact-hint /compact
token-sparkline β–β–‚β–ƒβ–„β–…β–†β–‡β–ˆ
session-cost $2.41
cost-budget $3.50/$10.00
cost-rate $0.36/m
cost-per-line 3Β’/line
cost-gauge $4.56 β–…
tokens-per-dollar 18k tok/$
input-output-ratio 6.5:1 i/o
token-rate 7.2k tok/m
efficiency-score 14 L/m
smart-nudge πŸ’‘ /compact
Dev environment (7 plugins)
Plugin Example Needs
localhost ● :3000 / β—‹ :3000
ci-status βœ“ CI / βœ— CI gh
github-pr PR #42 βœ“ approved gh
pr-reviews 3 reviews gh
process-watcher ● vite ● jest
log-tail Last error from log
session-diff 3f +120 -45
Git (6 plugins)
Plugin Example
git-branch main
git-status +2 ~1 ?3
git-stash stash:3
git-ahead-behind ↑2 ↓1
git-last-commit 2h ago
git-tag v1.2.3
Session & time (18 plugins)
Plugin Example
model-name Opus
directory myproject
package-version v0.3.1
session-timer 25m 0s
api-timer api 3m 40s
think-timer you 9m 30s
lines-changed +250 -23
lines-gauge β–„ 104L
vim-mode NORMAL
version v2.1.34
clock 2:30pm
date-display Feb 20
day-progress β–“β–“β–“β–“β–“β–‘β–‘β–‘β–‘β–‘
week-progress Wed β–“β–“β–“β–‘β–‘
year-progress 14% of 2026
countdown launch in 12d
work-cycle πŸ… 13m / β˜• break
break-reminder take a break
System (5 plugins)
Plugin Example Needs
spotify β™« Daft Punk β€” Get Lucky macOS or playerctl
cpu cpu 12%
battery πŸ”‹ 85% laptop
weather β›… 72Β°F
hackernews β–²847 Show HN: ...
Fun & gamification (30 plugins)
Plugin Example
tamagotchi (^.^) happy, (x_x) RIP
cat =^._.^= *sits on context window*
vibe-check vibing, burning cash
fortune-cookie "Weeks of coding..."
narrator The walls close in...
soundtrack lo-fi beats
garden (.) β†’ (🌳)
coffee-cup [β–ˆβ–ˆβ–ˆβ–ˆ] β†’ [ ]
horoscope Mercury is in retrograde.
coworker @chad: 'ship it'
commit-msg git commit -m "feat: ..."
weather-report Clear Skies / Stormy
dad-joke Why do programmers...
magic-8ball 🎱 Outlook good
compliment Your git history is art
mood-ring πŸ’š / πŸ’› / ❀️
loading-spinner β ‹
achievement Centurion at 100 lines
rpg-stats Lv.9 STR:18 DEX:4
xp-bar Lv3 β–ˆβ–‘β–‘β–‘β–‘β–‘β–‘β–‘ 58xp
level Journeyman β†’ Legend
combo-meter x3 SUPER
boss-health CONTEXT [β–ˆβ–ˆβ–ˆβ–ˆβ–‘β–‘] 58%
quest-log βš”οΈ Survive the limit
loot-drop 🟒 Rubber Duck+1
speedrun 47:00 [C]
streak πŸ”₯ 7d streak
battle-log Boss Battle (85%)
stock-ticker $OMC β–²β–² $4.56
emoji-story πŸ“βœοΈπŸ—οΈπŸ’°β³
Layout (6 plugins)

separator-pipe separator-arrow separator-space flex-space custom-text output-style


Customize

omc add spotify                    # add a plugin
omc add localhost --line 2         # pick position
omc config localhost port=8080     # configure it
omc set 1 --left model-name git-branch --right session-cost
omc show                           # preview your layout
omc theme save my-setup            # save as a theme

Write your own plugin

// ~/.claude/oh-my-claude/plugins/my-plugin/plugin.js
export const meta = {
  name: 'my-plugin',
  description: 'Shows something useful',
  defaultConfig: { style: 'cyan' },
};

export function render(data, config) {
  const value = data?.cost?.total_cost_usd;
  if (value == null) return null;
  return { text: `$${value.toFixed(2)}`, style: config.style };
}

Three rules: export meta, export render, return { text, style } or null.

omc create my-plugin        # scaffold it
omc test my-plugin           # test with mock data
omc add my-plugin            # activate it

Script plugins work too (Python, Bash, etc.) -- omc create my-plugin --script.

Full API reference: docs/plugin-contract.md


CLI

omc install                  Setup wizard
omc show                     Current layout + preview
omc add/remove <name>        Toggle plugins on the statusline
omc set <line>               Set a line (--left p1 p2 --right p3)
omc theme <name>             Switch theme
omc theme save <name>        Save current layout as theme
omc config <name>            Show/set plugin config
omc info <name>              Plugin details
omc test <name>              Test a plugin with mock data
omc list                     All plugins
omc doctor                   Diagnose issues
omc create <name>            Scaffold a new plugin
omc install <url>            Install community plugin from git

Screenshots

default

default theme

tamagotchi

tamagotchi theme

boss-battle

boss-battle theme

rpg

rpg theme

coworker

coworker theme

narrator

narrator theme

danger-zone

danger-zone theme


Requirements

  • Node 18+ (ships with Claude Code)
  • Zero npm dependencies

Contributing

PRs welcome. One file per plugin, export meta + render, handle nulls, run npm run validate.

License

MIT