Manage the Telegram daemon lifecycle — start, stop, restart, check status, tail logs. Use when the user says "start the bot", "stop the daemon", "restart telegram", "daemon status", "show bot logs", or "is the bot running".
Scanned 5/27/2026
Install via CLI
openskills install k1p1l0/claude-telegram-supercharged---
name: daemon
description: Manage the Telegram daemon lifecycle — start, stop, restart, check status, tail logs. Use when the user says "start the bot", "stop the daemon", "restart telegram", "daemon status", "show bot logs", or "is the bot running".
user-invocable: true
allowed-tools:
- Bash(launchctl *)
- Bash(ps *)
- Bash(tail *)
- Bash(cat *)
- Bash(grep *)
- Bash(strings *)
- Bash(kill *)
- Read
---
# /telegram:daemon — Telegram Daemon Lifecycle Manager
Full lifecycle management for the Telegram bot daemon (launchd + supervisor + Claude).
## Arguments — dispatch on first word
### `start` (default if no args and daemon is not running)
Start the daemon via launchd:
```bash
launchctl load ~/Library/LaunchAgents/com.user.claude-telegram.plist 2>&1
```
If it fails with "already loaded", report that the daemon is already running.
After loading, wait 5 seconds, then run the status check to confirm it started.
### `stop`
Stop the daemon:
```bash
launchctl unload ~/Library/LaunchAgents/com.user.claude-telegram.plist 2>&1
```
Wait 3 seconds, verify all processes are gone:
```bash
ps aux | grep -E "channels.*telegram" | grep -v grep
```
Report success or if orphan processes remain.
### `restart`
Unload then load:
```bash
launchctl unload ~/Library/LaunchAgents/com.user.claude-telegram.plist 2>/dev/null
sleep 2
launchctl load ~/Library/LaunchAgents/com.user.claude-telegram.plist
```
Wait 10 seconds, then run full status check.
### `status` (default if no args and daemon IS running)
Run the full monitor check — same as /telegram:monitor:
1. Process status (supervisor, expect, claude, MCP server, caffeinate)
2. Launchd loaded/not
3. Remote control URL
4. Lock file
5. Last 5 log lines
### `logs`
Tail the last 30 lines of supervisor stderr:
```bash
tail -30 ~/.claude/channels/telegram/data/supervisor-stderr.log
```
### `stdout`
Tail the last 30 lines of daemon's Claude output:
```bash
tail -30 ~/.claude/channels/telegram/data/supervisor-stdout.log
```
### `url`
Just show the remote control URL:
```bash
cat ~/.claude/channels/telegram/data/supervisor-stdout.log | strings | grep "session_" | tail -1
```
### No args
Check if daemon is running. If running → show status. If not running → ask if user wants to start it.
## Important notes
- The `launchctl load/unload` commands may fail with "Input/output error" — this usually means the service is already in the requested state. Handle gracefully.
- After start/restart, always verify the daemon actually started by checking processes.
- The plist path is always: `~/Library/LaunchAgents/com.user.claude-telegram.plist`
- Show the remote control URL after every start/restart so the user can monitor.
No comments yet. Be the first to comment!