avenoxai

Avenoxstatusline — Development skill for Claude Code

Development community

Two-line Claude Code status line with a state-driven ASCII pet.

How to install Avenoxstatusline

This entry records only its repository, not the path inside it, so there is no exact command to give. Open avenoxai/avenoxstatusline and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

What Avenoxstatusline does

Two-line Claude Code status line with a state-driven ASCII pet. 132 lines of bash, no npm.

Alternatives in Development

README

avenoxstatusline

A two-line status line for [Claude Code](https://claude.com/claude-code) with an ASCII pet.

**132 lines of bash. No npm, no node, no build step.**

ʕ•ᴥ•ʔ☕  Opus 5 · high · think   5h 41% · 7d 63%
▓▓▓▓░░░░ 62%  ⎇ main*  ● serai:vegrun

Why another one

There are plenty of good Claude Code status lines. Two things make this one different.

1. It's a shell script, not a package

Your status line re-runs **every few seconds, forever**. Every render is a fresh process. Spawning a Node runtime on that loop is a strange thing to do to your laptop.

This is one `bash` file with two dependencies you already have (`git`, `jq`). Install is a `curl` and one line of JSON. There is nothing to update, nothing to audit, and nothing in `node_modules`.

2. The pet is a gauge, not an ornament

The bear's mood is **derived from session state**, so you can read how the session is doing without reading any numbers:

State Pet Meaning
context ≥ 90% ʕ⊙ᴥ⊙ʔ‼ red, flailing you are about to compact
context ≥ 75% ʕ•﹏•ʔ💦 yellow, sweating start wrapping up
pending approvals ʕ•ᴥ•ʔ❗ yellow, alert something is waiting on you
effort xhigh / max ʕ◣_◢ʔ⚡ locked in the expensive gear is engaged
context ≥ 50% ʕ◔ᴥ◔ʔ focused working
otherwise ʕ•ᴥ•ʔ idle blinks, glances, leans

Peripheral vision does the monitoring. You only look directly at the line when the bear changes.

And when nothing is wrong, it does things. Roughly every 10 seconds it pulls a ~4-second stunt — nap, dance, wave, table flip (and sets the table back), flower, coffee, sparkle, hug, wander.


The trick: animating a stateless script

Claude Code runs the status line command fresh on every render. There is no process to hold a frame counter in, so conventional animation is impossible.

So the frames are indexed by **wall-clock time** instead of by state:

T=${SL_TICK:-$(date +%s)}
frame() { loca