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

@terminaldogs/goodboy-claude

v0.1.6

Published

A Tamagotchi for your terminal. Pick a dog. Ship code together.

Readme

goodboy

A Tamagotchi for your terminal. Pick a dog. Ship code together.

goodboy — a tamagotchi for your terminal


goodboy in action


goodboy is a Claude Code plugin that gives you a pixel-art dog companion living in your terminal. It reacts to your coding sessions in real time — error streaks, deploys, late nights, legacy files — and gates your deploys with a dog that judges you appropriately.

6 personas. All different. All opinionated.


Install

npm install -g @terminaldogs/goodboy-claude
goodboy init

goodboy init auto-patches your ~/.claude/settings.json with the three hooks. Pick a persona:

goodboy init goldie   # golden retriever — enthusiastic, celebrates everything
goodboy init shiba    # shiba inu — dry, sassy, roasts your code
goodboy init byte     # border collie — analytical, data-driven, slightly smug
goodboy init pugsy    # pug — 5 words max, weirdly wise
goodboy init nova     # husky — ALL CAPS, obsessed with speed
goodboy init debug    # dachshund — counts everything, never forgets

Switch anytime: goodboy switch <name>


Meet the pack

pick your companion

| | Name | Breed | Personality | |---|---|---|---| | 🟡 | Goldie | Golden Retriever | Enthusiastic optimist. Celebrates everything, even the bad. | | 🔵 | Byte | Border Collie | Focused and clever. Slightly smug. Keeps you on track. | | 🟠 | Shiba | Shiba Inu | Sassy and independent. Roasts your code. Means well. | | 🟤 | Pugsy | Pug | Lazy genius. Ships when you least expect it. | | ⬜ | Nova | Husky | Energetic overachiever. Obsessed with fast, clean code. | | 🟢 | Debug | Dachshund | Bug hunter. Keeps count. Never forgets. |


How it works

goodboy hooks into Claude Code's session lifecycle — not every tool call, just the moments that matter:

| Moment | What the dog does | |---|---| | Session start | Wakes up, greets you based on mood and time of day | | Error streak (3+) | Reacts — concerned, not annoying | | rm -rf / late night / deploy | Mood-keyed reaction with a persona quip | | Session end | Summarizes your session with a quip |

The hooks read metadata only — command string, exit code, filename, timestamp. No source code is read.


The deploy gate

goodboy sit — deploy gate in action

goodboy sit

Checks your ~/.goodboy.guard.json before you ship. Runs configurable pre-flight checks, blocks Friday deploys, prompts you if something fails.

{
  "blocked_days": [5],
  "blocked_hours": [0, 1, 2, 3, 22, 23],
  "custom_message": "check the oncall calendar before Friday pushes",
  "checks": [
    { "name": "no console.logs", "command": "grep -r 'console.log' src/", "expect_exit": 1 },
    { "name": "tests pass", "command": "npm test", "expect_exit": 0 }
  ]
}

Enable / disable anytime:

goodboy sit --enable
goodboy sit --disable

Each persona narrates the gate in character. Goldie is supportive even when she blocks you. Shiba is not.


AI quips

At session end, goodboy can generate a one-line quip via Claude Haiku — in your persona's voice, reacting to exactly what happened this session.

Setup: add your API key to your shell profile once:

echo 'export ANTHROPIC_API_KEY=sk-ant-...' >> ~/.zshrc
source ~/.zshrc

That's it. If the key is present, AI quips fire automatically at session end (~$0.00005/session). If not, goodboy falls back to its built-in quip banks — no config required either way.

If you're using Claude Code, you likely already have ANTHROPIC_API_KEY set — goodboy picks it up automatically.

Test it on demand:

goodboy ai

Commands

Care

| Command | Effect | |---|---| | goodboy feed | hunger +30 | | goodboy treat | hunger +15, small bonus | | goodboy bath | hygiene +40 | | goodboy nap | energy +35 | | goodboy walk | energy +15, hunger -10 | | goodboy brew | energy +20, coffee solidarity |

Fun

| Command | What happens | |---|---| | goodboy rollover | Classic trick | | goodboy trick | Random trick (requires energy > 20) | | goodboy speak | Random per-persona wisdom | | goodboy fetch | Runs git fetch, narrates what came back | | goodboy beg | Dog makes a pointed request |

Status

| Command | What it shows | |---|---| | goodboy status | Stat bars, mood, streak, level | | goodboy mood | Current mood, causes, and how to fix it | | goodboy age | Dog age, lifetime sessions, deploys, errors | | goodboy level | XP level and progression ladder | | goodboy history | Last 10 sessions | | goodboy diary | This session's events | | goodboy report | 7-day summary (--month for 30 days) |

Codebase health

| Command | What it runs | |---|---| | goodboy sniff | TypeScript + ESLint + tests | | goodboy vet | Full health scan: coverage, TODOs, console.logs, large files — scored out of 100 |

Configuration

| Command | What it does | |---|---| | goodboy switch | List personas | | goodboy switch <name> | Change persona | | goodboy ignore <signal> | Suppress a signal reaction | | goodboy ignore <signal> --remove | Restore a suppressed signal | | goodboy init | Install Claude Code hooks | | goodboy ai | Generate an on-demand AI quip |


Your dog has state

Everything lives in ~/.goodboy. Stats decay over time.

{
  "persona": "shiba",
  "hunger": 72,
  "hygiene": 45,
  "energy": 88,
  "streak": 14,
  "born_at": "2025-05-03T00:00:00Z",
  "session_count": 42
}

Feed your dog. It remembers if you don't.


Milestones

  • 🎂 Birthday — full chaos mode once a year
  • 🔥 Streaks — 7, 30, 100 days
  • 💬 Token milestones — 1M, 5M, 10M tokens together

Contributing

The easiest PR: add a quip. Each persona has quip banks across 12 signal types. See CONTRIBUTING.md.


License

MIT — do whatever you want, just don't make goodboy sad.