{
  "markdown": "<p align=\"center\">🌐 English | <a href=\"./README_zh.md\">中文</a></p>\n\n---\n\n<p align=\"center\">\n  <strong>petsonality</strong><br>\n  <em>Your type, your pet.</em>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://www.npmjs.com/package/petsonality\"><img src=\"https://img.shields.io/npm/v/petsonality?color=blue\" alt=\"npm\"></a>\n  <a href=\"LICENSE\"><img src=\"https://img.shields.io/badge/license-MIT-green\" alt=\"license\"></a>\n  <a href=\"https://github.com/nanami-he/petsonality/stargazers\"><img src=\"https://img.shields.io/github/stars/nanami-he/petsonality?style=flat\" alt=\"stars\"></a>\n  <a href=\"https://modelcontextprotocol.io\"><img src=\"https://img.shields.io/badge/MCP-powered-orange\" alt=\"MCP\"></a>\n  <a href=\"https://github.com/nanami-he/petsonality/actions/workflows/ci.yml\"><img src=\"https://github.com/nanami-he/petsonality/actions/workflows/ci.yml/badge.svg?branch=main\" alt=\"CI\"></a>\n</p>\n\n---\n\nA tiny ASCII pet that lives in the corner of your terminal while you code. It watches what you do, reacts to your errors, celebrates when tests pass, and speaks with a personality shaped by MBTI — all in 5 lines of art.\n\n<p align=\"center\">\n  <img src=\"assets/hero.gif\" alt=\"petsonality — Claude Code describes the product while the ESFJ golden retriever exclaims &quot;That's ME!! Hi everyone!!&quot;\" width=\"720\">\n</p>\n\nIt's not a notification system. It's a companion. The kind that's still there at 2am when you're stuck on a bug, and glances at your screen like \"...that logic looks off\" — and somehow you feel less alone.\n\n## 16 Animals, 16 Personalities\n\n| | ST | SF | NF | NT |\n|:---:|:---:|:---:|:---:|:---:|\n| **I_ _J** | <img src=\"assets/gifs/beaver.gif\" width=\"90\"><br><sub>Beaver·ISTJ</sub> | <img src=\"assets/gifs/elephant.gif\" width=\"90\"><br><sub>Elephant·ISFJ</sub> | <img src=\"assets/gifs/wolf.gif\" width=\"90\"><br><sub>Wolf·INFJ</sub> | <img src=\"assets/gifs/raven.gif\" width=\"90\"><br><sub>Raven·INTJ</sub> |\n| **I_ _P** | <img src=\"assets/gifs/cat.gif\" width=\"90\"><br><sub>Cat·ISTP</sub> | <img src=\"assets/gifs/panda.gif\" width=\"90\"><br><sub>Panda·ISFP</sub> | <img src=\"assets/gifs/deer.gif\" width=\"90\"><br><sub>Deer·INFP</sub> | <img src=\"assets/gifs/owl.gif\" width=\"90\"><br><sub>Owl·INTP</sub> |\n| **E_ _J** | <img src=\"assets/gifs/lion.gif\" width=\"90\"><br><sub>Lion·ESTJ</sub> | <img src=\"assets/gifs/golden.gif\" width=\"90\"><br><sub>Golden·ESFJ</sub> | <img src=\"assets/gifs/labrador.gif\" width=\"90\"><br><sub>Labrador·ENFJ</sub> | <img src=\"assets/gifs/bear.gif\" width=\"90\"><br><sub>Bear·ENTJ</sub> |\n| **E_ _P** | <img src=\"assets/gifs/cheetah.gif\" width=\"90\"><br><sub>Cheetah·ESTP</sub> | <img src=\"assets/gifs/parrot.gif\" width=\"90\"><br><sub>Parrot·ESFP</sub> | <img src=\"assets/gifs/dolphin.gif\" width=\"90\"><br><sub>Dolphin·ENFP</sub> | <img src=\"assets/gifs/fox.gif\" width=\"90\"><br><sub>Fox·ENTP</sub> |\n\nEvery animal speaks differently. The Fox asks \"Are you sure?\" with a smirk. The Cat just closes its eyes. The Parrot repeats what you said but louder. The Bear says \"Fix it.\" and waits.\n\n<details>\n<summary><strong>All 16 animals</strong></summary>\n\n| MBTI | Animal | Archetype | How It Talks |\n|------|--------|-----------|------------|\n| INTJ | Raven | Cold Strategist | Quiet. Speaks like writing prophecy |\n| INTP | Owl | Night Scholar | Asks questions you didn't think to ask |\n| ENTJ | Bear | Iron Captain | Commands only. No questions |\n| ENTP | Fox | Trickster Advisor | Challenges everything with a grin |\n| INFJ | Wolf | Silent Ally | Says one sentence that cuts deep |\n| INFP | Deer | Soft Poet | Talks about code like it's weather |\n| ENFJ | Labrador | Warm Coach | Sighs first, then asks if you drank water |\n| ENFP | Dolphin | Spark of Ideas | Can't stop suggesting new approaches |\n| ISTJ | Beaver | Project Manager | \"Wrong order.\" \"Fix the structure first.\" |\n| ISFJ | Elephant | Memory Keeper | \"You solved this before. Remember?\" |\n| ESTJ | Lion | Throne Inspector | Expects results. Not excuses |\n| ESFJ | Golden Retriever | Enthusiastic Support | Tail spin when you fix anything |\n| ISTP | Cat | Cold Observer | 90% actions. Occasionally one word |\n| ISFP | Panda | Slow Artist | Frowns at ugly indentation |\n| ESTP | Cheetah | Sprint Lead | \"Don't think. Run it.\" |\n| ESFP | Parrot | Loud Echo | Repeats your words back, but with commentary |\n\n</details>\n\n## Install\n\nWorks with [Claude Code](https://claude.ai/code) and [OpenClaw](https://github.com/openclaw/openclaw).\n\n> **Terminal CLI only.** The pet renders in the terminal status line, which is a CLI feature. The Claude Code desktop app and web client (claude.ai/code) don't expose a status line, so the animated pet won't appear there. MCP tool output (e.g. `/pet show`) still works in any client.\n>\n> **Windows note.** Claude Code for Windows has an upstream status-line trust regression in some versions. If the status line is configured but does not render, accept the project trust dialog or ensure the project is marked trusted in `~/.claude.json`, then restart Claude Code.\n\n### npm / npx\n\n```bash\nnpx petsonality\n```\n\nThis is the recommended path for most users. It installs the MCP server, `/pet` skill, hooks, and status line assets, then stores runtime files in `~/.petsonality/`.\n\n### Claude Code plugin\n\n```bash\nclaude plugin install github:nanami-he/petsonality\n```\n\nUse this if you prefer Claude Code's plugin install flow. The plugin runs the built Node.js server from `dist/`, so it does not require Bun.\n\n### From source\n\nUse this path if you want to develop Petsonality locally or inspect the code before installing. Requires [Bun](https://bun.sh).\n\n```bash\ngit clone https://github.com/nanami-he/petsonality.git\ncd petsonality && bun install && bun run build\nbun run install-petsonality\n```\n\nRestart your AI coding assistant, then type **`/pet`** in the chat.\n\n## How It Speaks\n\nPets don't just react to errors. They have a rhythm:\n\n| What happens | Pet reacts? |\n|-------------|-------------|\n| Your code throws an error | Always |\n| Tests pass, git commit succeeds | Sometimes (12–30%) |\n| Normal file edits, searches | Occasionally (3–15%) |\n| Nothing happened for a while | Guaranteed (won't stay silent forever) |\n\nChatty pets (Fox, Parrot) speak every 30 seconds. Silent pets (Cat) might go 6 minutes. Each animal has **638 unique reactions** across 7 event types, validated against personality constraints.\n\n## Commands\n\n| Command | What it does |\n|---------|-------------|\n| `/pet` | Show your pet or start adoption |\n| `/pet pet` | Give your pet attention |\n| `/pet setup` | Restart the adoption flow |\n| `/pet browse` | See all 16 animals |\n| `/pet off` / `/pet on` | Mute / unmute reactions |\n| `/pet rename <name>` | Rename your pet |\n\n## What petsonality modifies\n\n`npx petsonality` is an installer — it touches a few files on your system. Honest list, with backups noted:\n\n- **`~/.claude.json`** — adds a `petsonality` entry under `mcpServers`. Other entries left alone.\n- **`~/.claude/settings.json`** — adds a `statusLine` and two hooks (`PostToolUse`, `Stop`). If you already had a `statusLine`, the original is backed up to `~/.petsonality/statusline.bak` first.\n- **`~/.claude/skills/pet/SKILL.md`** — copies the `/pet` command skill.\n- **`~/.petsonality/`** — runtime directory (pet state, reactions cache, server, hooks, status-line scripts).\n\nIf OpenClaw is detected, also touches `~/.openclaw/openclaw.json` and (until [PR #65886](https://github.com/openclaw/openclaw/pull/65886) merges) applies a small reversible patch to OpenClaw's TUI source. Both backed up.\n\nTo remove everything: `npx petsonality uninstall`. To audit current state: `npx petsonality doctor`.\n\nFull breakdown + other common questions in the [FAQ](docs/FAQ.md).\n\n## Roadmap\n\n- [x] 16 MBTI animals with full personality profiles\n- [x] Animated status line with speech bubbles\n- [x] Companion rhythm (daily triggers, milestones, silent streak guardrail)\n- [x] 638 animal-specific reactions\n- [x] Multi-host support (Claude Code + OpenClaw)\n- [x] Node.js powered (no python/jq dependency)\n- [x] Published on npm\n- [x] Multi-language support (auto zh / en via `LANG`, 638 reactions per language)\n- [ ] Growth system (level up through interaction)\n- [ ] Hat / skin DLC\n- [ ] Multi-pet collection\n- [ ] Vibe-pick: MBTI quiz for new users\n\n<details>\n<summary><strong>Architecture</strong></summary>\n\n```\n~/.petsonality/\n├── pet.json              Your pet's state\n├── status.json           What the status line reads\n├── reaction.*.json       Current speech bubble\n└── reactions-pool.json   638 pre-built reactions\n\npetsonality/\n├── dist/                 Built JS (Node.js runtime)\n├── server/               MCP server (TypeScript)\n├── hooks/                PostToolUse + Stop hooks\n├── statusline/           Terminal animation (bash + PowerShell)\n├── skills/               /pet command routing\n└── cli/                  Install, doctor, npx entry\n```\n\n</details>\n\n## Requirements\n\n- [Node.js](https://nodejs.org/) 20+\n- Claude Code or OpenClaw\n\n## License\n\nMIT\n",
  "bytes": 8972,
  "sha": "aedfb61341b414dda097fb7ea0a38fe67ac9f60eb97175da55ed7299aad88832",
  "repo_slug": "nanami-he/petsonality",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_nanami_he_petsonality_2469d215/readme"
}