Claude Code mods by ShellTime.
A mod is a Claude Code plugin made of function hooks: a small TypeScript module that can draw its own UI, such as a band above the prompt, a pane or a status entry, and react to the session. Mods run in the terminal and in the Code tab of the Claude desktop app.
| Mod | What it does |
|---|---|
shelltime-statusline |
The ShellTime statusline (git, model, session and daily cost, quota, agent time, context) above the prompt, in the terminal and the desktop app |
shelltime-statusline draws one line above the prompt. In the desktop app it is a flat row with small bars beside the percentages. In the terminal it is the same line as shelltime cc statusline. Both follow Claude Code's light or dark theme.
From left to right:
- 🌿 the git branch, with
*when the tree is dirty - 🤖 the model (terminal only; the desktop composer already shows it)
- 💰 this session's cost
- 📊 today's Claude Code cost
- 🚦 the 5-hour and 7-day quota used
- ⏱️ today's AI agent time
- 📈 the context window used
Quota and context turn yellow from 50% and red from 80%. The costs, quota and agent time are links to the session on shelltime.xyz, your coding agent page, claude.ai usage and your profile.
Before you run shelltime init, it still shows git, model, session cost, quota and context. Daily cost and agent time show -, and nothing is sent to ShellTime. The line refreshes as the conversation moves on, not while the session is idle.
The mod's README has every segment's colors and where each number comes from.
claude plugin marketplace add shelltime/claude-code-mods
claude plugin install shelltime-statusline@shelltimeOr from inside Claude Code: /plugin marketplace add shelltime/claude-code-mods, then /plugin install shelltime-statusline@shelltime.
The mods read the ShellTime CLI's config (~/.shelltime/config.*). Run shelltime init once to sign in.
claude plugin marketplace update shelltime
claude plugin update shelltime-statusline@shelltimeThe first command fetches the latest release from GitHub, the second installs it. Restart Claude Code to load it. The desktop app's Code tab uses the same plugins as the terminal, so one update covers both: quit the app (⌘Q) and open it again.
# check the manifest and what the module hooks and calls
claude plugin validate plugins/shelltime-statusline
# run the tests
claude plugin test plugins/shelltime-statusline
# try it in a session; edits hot-reload
claude --plugin-dir plugins/shelltime-statuslineThe engine writes the API types beside a loaded mod in .claude-plugin/types/, along with a tsconfig.json, so tsc -p plugins/shelltime-statusline type-checks it.
The mods' UI can be previewed in Storybook and tested with Vitest, outside Claude Code. The tooling lives at the repo root, so installed plugins ship none of it.
pnpm install
# every surface in light and dark, at http://localhost:6006
pnpm storybook
# the drawings' trees, and every story rendered
pnpm test
pnpm typechecktooling/engine stands in for the engine. It provides the JSX runtime (h) and the element tables, which produce the same plain-data trees the engine checks, plus an approximate paint of those trees for Storybook. The preview is close to the real thing, not identical: claude plugin test stays the check of what the engine accepts. Stories are in stories/, specs in tests/.
Commits follow Conventional Commits. On main, release-please keeps a release PR open. Merging it tags vX.Y.Z, updates CHANGELOG.md and bumps the version in each mod's plugin.json, which is what tells installed copies to update.
When you add a mod, add its .claude-plugin/plugin.json to extra-files in release-please-config.json.
MIT
