bot-process-control

v2026.09.24

Start, stop, or restart the Telegram sync bot process. TRIGGERS - start bot, stop bot, restart bot, bot process, bot status, bot control.

GitHub
安装命令
npx skhub add terrylica/bot-process-control
Markdown
SKILL.md

Bot Process Control

Start, stop, restart, and monitor the Telegram sync bot process. Provides lifecycle management for the bun --watch bot runner with process verification and log access.

Platform: macOS (Apple Silicon)

Self-Evolving Skill: This skill improves through use. If instructions are wrong, parameters drifted, or a workaround was needed — fix this file immediately, don't defer. Only update for real, reproducible issues.

When to Use This Skill

  • Start or restart the Telegram bot after configuration changes
  • Stop the bot before maintenance or debugging
  • Check whether the bot is running and healthy
  • Tail recent bot logs to diagnose issues
  • Recover from multiple-instance or zombie process scenarios

Requirements

  • Bun runtime installed via proto (proto install in the bot directory, which pins it in .prototools)
  • Bot source at ~/.claude/automation/claude-telegram-sync/
  • Secrets file at ~/.claude/.secrets/ccterrybot-telegram
  • .env in the bot source directory (the launchd service's config and secrets; Bun auto-loads it)

Workflow Phases

Phase 1: Status Check

Show current bot process state using pgrep:

pgrep -la 'bun.*src/main.ts'

If no output, the bot is not running. If multiple lines appear, there are duplicate instances that need cleanup.

Phase 2: Ask User Intent

Use AskUserQuestion to determine the desired action:

  • start - Launch the bot in background with bun --watch
  • stop - Kill the bot process cleanly
  • restart - Stop then start
  • logs - Tail recent log output

Phase 3: Execute Action

In production, launchd manages the bot via a compiled Swift runner binary. The runner uses bun --watch, so code changes auto-restart the service.

Restart (production — kill bun, Swift runner respawns it):

pkill -f 'bun.*src/main.ts'
sleep 2
pgrep -la 'bun.*src/main.ts'

Stop (full — kills both runner and bun):

pkill -f 'telegram-bot-runner'
pkill -f 'bun.*src/main.ts'

Start (production — via launchd):

launchctl kickstart -k gui/$(id -u)/com.terryli.telegram-bot

Start (ad-hoc — shell session, for debugging):

cd ~/.claude/automation/claude-telegram-sync && bun --watch run src/main.ts >> /private/tmp/telegram-bot.log 2>&1 &

Logs:

tail -50 /private/tmp/telegram-bot.log
# Or structured logs:
tail -50 ~/.local/state/launchd-logs/telegram-bot/stderr.log

Phase 4: Verify

Confirm the process state changed as expected:

pgrep -la 'bun.*src/main.ts'

TodoWrite Task Templates

1. [Check] Show current bot process status with pgrep
2. [Action] Present start/stop/restart/logs options via AskUserQuestion
3. [Execute] Run the selected action command
4. [Verify] Confirm process state changed as expected
5. [Logs] Optionally tail recent logs for confirmation
6. [Done] Report final process status to user

Post-Change Checklist

  • Verified no duplicate bot instances running
  • Confirmed bot responds to Telegram messages (if started)
  • Checked log output for startup errors (if started)
  • Ensured previous process fully terminated (if stopped/restarted)

Troubleshooting

IssueCauseSolution
Bot not runningProcess crashed or was never startedCheck with pgrep, runner should auto-respawn; if runner also dead, launchctl kickstart
Multiple instancesPrevious stop did not fully terminatepkill -f 'telegram-bot-runner'; pkill -f 'bun.*src/main.ts', then restart via launchd
Code changes not picked upBot started without --watchKill bun process — runner respawns with --watch; or recompile runner if it's outdated
--watch not reloadingFile outside watch scope changedbun --watch monitors the entry file's dependency tree; config-only changes (.env, moon.yml) need a kill
Logs not writingLog directory missing or permissionsVerify ~/.local/state/launchd-logs/telegram-bot/ exists and is writable
bun not foundNo bun in the runner's candidate listRunner tries ~/.proto/shims/bun, ~/.proto/bin/bun, ~/.bun/bin/bun, /opt/homebrew/bin/bun; run proto install bun in the bot directory
Bot starts but crashes immediatelyMissing env vars or secretsCheck ~/.claude/.secrets/ccterrybot-telegram exists; verify .env in the bot directory (the launchd service does not receive moon.yml env:)

Reference Documentation

Post-Execution Reflection

After this skill completes, reflect before closing the task:

  1. Locate yourself. — Find this SKILL.md's canonical path (Glob for this skill's name) before editing. All corrections target THIS file and its sibling references/ — never other documentation.
  2. What failed? — Fix the instruction that caused it. If it could recur, add it as an anti-pattern.
  3. What worked better than expected? — Promote it to recommended practice. Document why.
  4. What drifted? — Any script, reference, or external dependency that no longer matches reality gets fixed now.
  5. Log it. — Every change gets an evolution-log entry with trigger, fix, and evidence.

Do NOT defer. The next invocation inherits whatever you leave behind.

发现
标签

此技能尚未发布标签。

版本
最新版本元数据

版本

v2026.09.24

发布时间

2026年9月24日

分类

未分类

许可证

MIT

源路径

plugins/tts-tg-sync/skills/bot-process-control

默认分支

main

最新提交

b657cca

Tree SHA

906e003