Clean Component Removal
Orderly teardown of TTS and Telegram bot components with proper sequencing to avoid orphaned processes and stale state.
Platform: macOS (Apple Silicon)
When to Use This Skill
-
User wants to uninstall the Kokoro TTS engine
-
User wants to remove the Telegram bot
-
User wants to clean up all TTS-related files
-
User wants to do a full teardown before reinstallation
-
User wants to remove specific components selectively
Requirements
-
No special tools needed (removal uses only rm , pkill , and the install script)
-
User confirmation before destructive operations
Removal Order
The removal sequence matters. Components must be torn down in this order to avoid orphaned processes or lock contention.
Step Component Command Reversible?
1 Bot process pkill -f 'bun.*src/main.ts'
Yes (restart bot)
2 Kokoro venv kokoro-install.sh --uninstall
Yes (reinstall)
3 Shell symlinks rm -f ~/.local/bin/tts_*.sh
Yes (re-symlink)
4 Temp files rm -f /tmp/kokoro-tts-*.wav /tmp/kokoro-tts.lock
N/A
5 Secrets (optional) rm -f ~/.claude/.secrets/ccterrybot-telegram
Requires re-creation
What Is NOT Removed (Unless Explicitly Asked)
These are preserved by default to allow easy reinstallation:
Resource Path Why Preserved
Model cache ~/.cache/huggingface/hub/models--hexgrad--Kokoro-82M
~400MB download, reusable
Bot source code ~/.claude/automation/claude-telegram-sync/
Git-tracked, not ephemeral
mise.toml config ~/.claude/automation/claude-telegram-sync/mise.toml
Configuration SSoT
Launchd logs ~/.local/state/launchd-logs/telegram-bot/
Rotated by log-rotation
NDJSON audit ~/.claude/automation/claude-telegram-sync/logs/audit/
Self-rotating 14d
Workflow Phases
Phase 1: Confirmation
Use AskUserQuestion to confirm which components to remove. Present options:
-
Full teardown -- Remove everything (steps 1-4, ask about secrets)
-
TTS only -- Remove Kokoro venv + symlinks + temp files (steps 2-4)
-
Bot only -- Stop bot process (step 1 only)
-
Selective -- Let user pick individual steps
Phase 2: Stop Bot Process
Check if bot is running
pgrep -la 'bun.*src/main.ts'
Stop it
pkill -f 'bun.*src/main.ts' || echo "Bot was not running"
Phase 3: Remove Kokoro Venv
Uses kokoro-install.sh --uninstall (removes venv, keeps model cache)
~/eon/cc-skills/plugins/tts-telegram-sync/scripts/kokoro-install.sh --uninstall
Phase 4: Remove Symlinks
List existing symlinks first
ls -la ~/.local/bin/tts_*.sh 2>/dev/null
Remove them
rm -f ~/.local/bin/tts_*.sh
Phase 5: Clean Temp Files
rm -f /tmp/kokoro-tts-*.wav rm -f /tmp/kokoro-tts.lock
Phase 6: Optional Secret Removal
Only with explicit user confirmation:
Show what would be removed
ls -la ~/.claude/.secrets/ccterrybot-telegram
Remove (requires confirmation)
rm -f ~/.claude/.secrets/ccterrybot-telegram
TodoWrite Task Templates
- [Confirm] Ask user which components to remove via AskUserQuestion
- [Stop] Stop bot process
- [Venv] Run kokoro-install.sh --uninstall
- [Symlinks] Remove ~/.local/bin/ symlinks
- [Temp] Clean /tmp/ TTS files
- [Secrets] Optionally remove secrets (with confirmation)
- [Verify] Confirm all selected components removed
Post-Change Checklist
-
Bot process is not running (pgrep -la 'bun.*src/main.ts' returns nothing)
-
Kokoro venv removed (ls ~/.local/share/kokoro/.venv returns "No such file")
-
Symlinks removed (ls ~/.local/bin/tts_*.sh returns "No such file")
-
No stale lock file (ls /tmp/kokoro-tts.lock returns "No such file")
-
No orphan audio processes (pgrep -x afplay returns nothing)
Troubleshooting
Problem Likely Cause Fix
Symlinks still exist after removal Glob mismatch or permission ls -la ~/.local/bin/tts_* then rm -f each one
Stale lock after removal Process died without cleanup rm -f /tmp/kokoro-tts.lock
Model cache taking space ~400MB in HuggingFace cache rm -rf ~/.cache/huggingface/hub/models--hexgrad--Kokoro-82M
Bot respawns after kill Launched with --watch from launchd Check launchctl list for relevant agents
Audio still playing after teardown afplay process outlives bot pkill -x afplay
Reference Documentation
- Evolution Log -- Change history for this skill