A Claude Code skill that pings the
operator on Telegram when a long-running task finishes / fails /
crosses a threshold. Wraps the moo CLI from the
InterruptingCow
Python package.
Mirrored on both GitHub and Codeberg. Issues filed on either are welcome; commits are pushed to both.
When the operator's turn contains phrasing like:
- "ping me on telegram when X finishes"
- "notify me when this training run is done"
- "let me know when the deploy completes"
- "interrupt me when balance crosses $5"
- "tell me when the backup is done"
…this skill loads (via frontmatter description matching) and shells out to moo (the short alias for interruptingcow) at the appropriate moment — usually after a long-running task ends, or when a threshold-watching loop crosses a configured boundary.
It does not re-implement Telegram bot mechanics; it delegates to the canonical CLI in the upstream package so the HTTP layer + credential resolution + error handling stay in one place.
See SKILL.md for the full skill definition, including the trigger-phrase list, fire-vs-don't-fire heuristics, severity guide, and the failure-mode table.
Two pieces:
-
The skill itself (this repo):
git clone https://github.com/CryptoJones/claude-skill-InterruptingCow \ ~/.claude/skills/InterruptingCow -
The underlying CLI (the upstream package):
pip install interruptingcow
-
Telegram credentials — one-time, ~3 minutes:
- Create a bot via @BotFather; get the token.
- Send the bot any message, then visit
https://api.telegram.org/bot<TOKEN>/getUpdatesto read your chat ID. - Export
TELEGRAM_BOT_TOKEN+TELEGRAM_CHAT_ID, or write them to~/.config/interruptingcow/config.json.
Restart Claude Code (or open /hooks once) for the skill to be picked up.
Full setup walkthrough: see the upstream README.
Same two-layer-mirror pattern as claude_skill-correcthorsebatterystaple → correcthorsebatterystaple:
- Upstream (InterruptingCow) — the Python package: HTTP client, credential resolution, CLI, tests, the eventual PyPI wheel.
- This repo — only
SKILL.md+ install glue. Independently installable into Claude Code without dragging in the entire upstream package source.
Updating the SKILL.md trigger phrases doesn't require re-cutting the Python release. Updating the CLI doesn't require touching this repo.
The frontmatter.description in SKILL.md is what Claude matches against to decide when to fire. Fork + edit if your trigger vocabulary or the upstream CLI binary name differs (e.g. you renamed moo to tg in your shell).
The severity emojis (✅ / --silent semantics live in the upstream CLI, not in the skill. Edit there if you want different glyphs or different notification behavior.
Apache 2.0. See LICENSE.
Proudly Made in Nebraska. Go Big Red! 🌽 https://xkcd.com/2347/