Goyangi is a panel beside your Claude Code conversation that shows, turn by turn, where the time and money went.
Goyangi (고양이) is the Korean word for a cat: a cat that sits next to the conversation and watches every turn.
claude plugin marketplace add netil/goyangi
claude plugin install goyangi@goyangi --scope user
Run /reload-plugins, then open the panel with /goyangi. It also opens by itself when a session starts. New versions install automatically (turn this off in the settings screen, = in the header).
Sessions and browser tabs have numbers, so a short prompt is enough:
send this to session 2
pull from 1
Summarize the docs tab
Work in tab B3
-
send this to session 2passes this session's handoff note to the other session.pull from 1asks session 1 for its handoff -
Summarize the docs tabandWork in tab B3work in that very browser tab, with your sign-ins. The numbers come from the Open sessions and Browser tabs boxes -
When context passes the alert threshold, click
Continue in a fresh sessionand the work carries on in a new session from a handoff note -
Turn flow : every model request, tool call, and subagent of the turn in order, with tokens, cost, and a time share bar
-
Gauges and advice : context, cache hit rate, and the 5h and 7d usage limits with a forecast. Rule-based advice flags repeated failures, cache drops, and files read again. All computed locally, no tokens spent
-
Session map and log : one row per turn to compare, and a replay of any recent turn. The log switches between key events and everything
-
Walk view : press
vand a pixel cat or dog walks through the turn. Its mood shows context, cost, and usage limits at a glance -
Open sessions : send this session's handoff to another Claude Code session or a coding agent (Codex, OpenCode, ...), or pull theirs here
-
Browser tabs : your open tabs, numbered. Say "B3" or "the GitHub PR tab" and the model works in that tab
-
Terminal and desktop app : the same panel in both
The walk view's cat and dog: running, thinking, working, failing, and sleeping.
See the manual for the layout, shortcuts, advice rules, and settings.
- Claude Code with mod (function hooks) support
- The walk view's pixel art uses octant characters (Unicode 16) in Ghostty, kitty, and WezTerm. Other terminals (Obsidian's terminal, iTerm2, Terminal.app, VS Code) get a coarser version drawn with quadrant blocks, so the layout holds
claude plugin validate .
claude plugin test .
Without claude plugin test, run the event-order regression test with Node.js 24 or later. It uses an in-memory adapter and doesn't replace the engine and UI integration tests.
node --test tests/lifecycle.test.mjs
To try local changes, load the folder directly with claude --plugin-dir . and run /reload-plugins after edits.
The test kit doesn't paint the panel, so layout breaks at narrow widths are checked separately. tools/layout-check renders the terminal panel with Ink (an approximation of the engine's renderer) at widths from 26 to 120 columns and reports rows wider than the panel and Box props the engine refuses. It exits 1 when it finds any.
cd tools/layout-check && npm install
node check.mjs # default view; or pass widths: node check.mjs 26 40 60
VIEW=avatar node check.mjs # walk view (also SETTINGS=1, MODE=band for the minimized view)
FRAMES=1 node check.mjs 30 # print the frames, to spot titles wrapping into columns
- Run
claude plugin validate .andclaude plugin test . - Raise
versioninpackage.jsonand.claude-plugin/plugin.json(installed copies update only when it changes) - Move the changelog entries under a new
## vX.Y.Z (date)heading - Commit, then
git tag vX.Y.Z,git push --follow-tags, andgh release create vX.Y.Z --notes-file <notes>