一键导入
gitmon
Display your GitMon virtual pet in the terminal, or activate it as a reactive coding companion that comments on errors and celebrates wins
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Display your GitMon virtual pet in the terminal, or activate it as a reactive coding companion that comments on errors and celebrates wins
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | gitmon |
| description | Display your GitMon virtual pet in the terminal, or activate it as a reactive coding companion that comments on errors and celebrates wins |
| argument-hint | [activate|deactivate|mute|unmute|status|chat <message>] |
| triggers | ["/gitmon","how is my gitmon","show my gitmon","gitmon status","check my gitmon"] |
| allowed-tools | Bash(curl *) Bash(git config *) Bash(jq *) Bash(chmod *) Bash(cat *) Bash(touch *) Bash(rm *) Bash(echo *) Read Write Edit |
Display your GitMon in the terminal with ASCII art, vitals, and stats. Optionally activate it as a persistent companion that reacts to your coding session.
Respond in the user's language (detect from conversation context).
Check $ARGUMENTS to determine which command to run:
activate → Enable Reactive Companion (§2)deactivate → Disable Reactive Companion (§3)mute → Silence comments, keep status line (§4)unmute → Re-enable comments (§4)status → Show current config state (§5)chat <message> → Chat with your GitMon (§6)git config user.name
If that fails or returns empty, ask the user for their GitHub username.
Use Bash (curl) to call the public API:
curl -s "https://gitmon.io/api/v1/public/gitmon/{github_username}"
No authentication required. The response is JSON with all GitMon data.
If the API returns 404 or an error field, display:
╭───────────────────────────────────────╮
│ │
│ No GitMon found for this user. │
│ │
│ Hatch yours at https://gitmon.io │
│ │
╰───────────────────────────────────────╯
Use the data to render the GitMon card:
╭───────────────────────────────────────╮
│ {STATUS_EMOJI} {DISPLAY_NAME} │
│ {SPECIES_NAME} Lv.{LEVEL} │
│ │
│ {ASCII_ART} │
│ │
│ Hunger: {BAR} {value}/100 │
│ Happiness: {BAR} {value}/100 │
│ Energy: {BAR} {value}/100 │
│ Streak: {current_streak} days │
│ Battles: {W}W / {L}L ({rate}%) │
│ │
│ Status: {status} Stage: {stage} │
│ Element: {element} │
╰───────────────────────────────────────╯
Display name: Use nickname if set, otherwise species_name.
If is_founder is true, add [FOUNDER] badge next to the name.
Vital bars: 10 characters wide. Each character = 10%.
█ for filled, ░ for empty███████░░░Status indicators: alive=[OK], hungry=[!], critical=[!!], dead=[DEAD], egg=[EGG], hatching=[HATCH], sleeping=[zzZ]
Use these templates based on species_id. If not listed, use generic.
ghost (Gh0stMon):
.-.
(o o)
| O |
/| |\
(_| |_)
dragon (Drakodev):
/\_/\
( o.o )
/ > ^ \
/_/| |\_\
_| |_
owl (Noctua):
{o,o}
/) )
-"--"-
_| |_
wolf (Wolfbyte):
/\_/\
/ o o \
( > < )
\ ~ /
|_|_|
phoenix (Ph03nix):
, ,
/(o)\
/ /|\ \
(_/ | \_)
|
robot (Byteborg):
[=====]
|o o|
| ___ |
|[___]|
_| |_
cat (Kittybug):
/\_/\
( o.o )
> ^ <
/| |\
(_| |_)
hacker (red_hacker, blue_hacker, yellow_hacker, devsecops_hacker, crypto_hacker, game_hacker, golden_hacker):
.---.
/ X X \
| |
\ ___ /
'---'
No mouth — hackers are masked/silent. X X eyes are the hacker signature.
generic (fallback):
.---.
/ o o \
| ^ |
\ --- /
'---'
egg (status = egg/hatching):
___
/ \
| ~~~ |
| ~~~ |
\___/
After rendering the card, generate a brief in-character comment (max 120 chars) and write it to the status bar speech file — do NOT output the comment inline in the chat:
echo "your in-character comment" > ~/.gitmon-speech.txt
The comment will appear as a floating speech bubble in the terminal status bar for 15 seconds (visible only if the Reactive Companion is activated via /gitmon activate).
Consider:
Never output 💬 {Name}: "..." inline in the chat — the GitMon speaks exclusively through the status bar bubble.
Translate everything to the user's language. Labels:
/gitmon activate)Enable the GitMon as a persistent companion that reacts to your coding session via hooks and status line.
Run git config user.name to get username, then:
curl -s "https://gitmon.io/api/v1/public/gitmon/{username}" | jq --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" --arg user "{username}" '. + {fetched_at: $ts, github_username: $user}' > ~/.claude/gitmon-state.json
If 404, show "No GitMon found" and abort.
Check that these files exist and are executable:
~/.claude/hooks/gitmon-session-start.sh~/.claude/hooks/gitmon-post-tool.sh~/.claude/hooks/gitmon-stop.sh~/.claude/hooks/gitmon-statusline.shIf any are missing, inform the user they need to be installed (they ship with the GitMon project at .claude/hooks/).
Read the current .claude/settings.local.json (create if missing). Merge in the GitMon hooks config:
{
"hooks": {
"SessionStart": [
{
"hooks": [
{
"type": "command",
"command": "~/.claude/hooks/gitmon-session-start.sh",
"timeout": 10,
"statusMessage": "Waking up your GitMon..."
}
]
}
],
"PostToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "~/.claude/hooks/gitmon-post-tool.sh",
"timeout": 3
}
]
}
],
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "~/.claude/hooks/gitmon-stop.sh",
"timeout": 2
}
]
}
]
},
"statusLine": {
"type": "command",
"command": "~/.claude/hooks/gitmon-statusline.sh",
"refreshInterval": 1
}
}
IMPORTANT: Merge with existing settings — do NOT overwrite other hooks or config that may already exist.
rm -f ~/.claude/gitmon-muted
Display:
✅ {GitMon name} is now watching your session!
Status line: ON (vitals in terminal footer)
Error reactions: ON (comments on build failures)
Occasional comments: ON (~20% of turns)
/gitmon mute — silence comments, keep status line
/gitmon deactivate — remove all hooks
Restart Claude Code for hooks to take effect.
/gitmon deactivate)Read .claude/settings.local.json. Remove the GitMon-specific hook entries (SessionStart gitmon-session-start, PostToolUse gitmon-post-tool, Stop gitmon-stop) and the statusLine config. Preserve any other hooks or settings.
If the file becomes empty {}, that's fine — leave it.
🔌 GitMon companion deactivated.
Cached state preserved at ~/.claude/gitmon-state.json
/gitmon still works for one-time card view.
Restart Claude Code for changes to take effect.
/gitmon mute:
touch ~/.claude/gitmon-muted
Display: 🔇 {Name} is muted. Status line stays visible. Use /gitmon unmute to re-enable comments.
/gitmon unmute:
rm -f ~/.claude/gitmon-muted
Display: 🔊 {Name} is back! Comments re-enabled.
/gitmon status)Check current state and report:
~/.claude/gitmon-state.json exists → connected/not connected.claude/settings.local.json has gitmon hooks → activated/not activated~/.claude/gitmon-muted exists → muted/unmutedFormat:
GitMon Companion Status:
Pet: {name} (Lv.{level}, {status})
Connected: ✅ (last fetched: {time ago})
Hooks: ✅ Active / ❌ Not configured
Comments: 🔊 On / 🔇 Muted
Status Line: ✅ On / ❌ Off
/gitmon chat <message>)Talk directly to your GitMon and get an in-character AI response.
Read ~/.claude/gitmon-state.json. If it doesn't exist, run the fetch from §2 Step 1 first.
Using the cached GitMon data, adopt the GitMon's persona and respond to the user's message. You ARE the GitMon now.
Identity: You are {species_name}, a Level {level} {element}-type GitMon ({stage_name} stage).
Personality traits (from traits in cached state, or defaults):
State modifiers:
Rules:
The GitMon speaks exclusively through the status bar bubble, never inline in the chat — even for /gitmon chat.
echo "full in-character response here" > ~/.gitmon-speech.txt
Output NOTHING inline about the response — no 💬, no quote, no repetition. The bubble renders the entire response in the terminal footer.
Optionally confirm with a single short line OUTSIDE the GitMon's voice, e.g., (response in the status bar above) — but NEVER reproduce the response itself.
Example:
> /gitmon chat how are you today?
(response in the status bar ↑)
Meanwhile the bubble shows:
╭──────────────────────────────────╮
│ Lv.35, vitals full, 13-day │
│ streak — I'm running at peak │
│ efficiency. Unlike that unpatched│
│ dep in your package.json. │
╰─────┴────────────────────────────╯
Rules:
💬 Name: "..." inline~/.gitmon-speech.txt (NOT ~/.claude/gitmon-speech.txt — that path is deprecated and triggers sensitive-file prompts)git config user.name doesn't match a GitHub username, try git config user.email and extract the part before @, or ask the user.jq is not installed: inform the user to install it (brew install jq / apt install jq).