Best for
- Diagnose why TTS or Telegram bot is not working
- Verify system readiness after bootstrap or configuration changes
- Routine health check before a demo or presentation
terrylica/cc-skills/plugins/tts-tg-sync/skills/health/SKILL.md
Health check for TTS and Telegram bot subsystems. TRIGGERS - health check, bot health, kokoro health
Decision brief
Run a comprehensive 10-subsystem health check across the TTS engine, Telegram bot, and supporting infrastructure. Produces a pass/fail report table with actionable fix recommendations.
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/terrylica/cc-skills --skill "plugins/tts-tg-sync/skills/health"Inspect the Agent Skill "health" from https://github.com/terrylica/cc-skills/blob/05f53c5b24a445c1895e9b0590212e66cd70f39e/plugins/tts-tg-sync/skills/health/SKILL.md at commit 05f53c5b24a445c1895e9b0590212e66cd70f39e. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
Load environment variables from mise to ensure BOTTOKEN and other secrets are available:
Load environment variables from mise to ensure BOTTOKEN and other secrets are available:
Execute each check and collect results. Each check returns [OK] or [FAIL] with a brief diagnostic message.
Pass if exactly one process is found. Fail if zero or more than one.
Display results as a table:
Permission review
The documentation includes network, browsing, or remote request actions.
curl -s "https://api.telegram.org/bot${BOT_TOKEN}/getMe" | jq .okEvidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 94/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 61 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Run a comprehensive 10-subsystem health check across the TTS engine, Telegram bot, and supporting infrastructure. Produces a pass/fail report table with actionable fix recommendations.
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.
~/.local/share/kokoro/.venv~/.claude/.secrets/ccterrybot-telegram~/.claude/automation/claude-telegram-sync/Load environment variables from mise to ensure BOT_TOKEN and other secrets are available:
cd ~/.claude/automation/claude-telegram-sync && eval "$(mise env)"
Execute each check and collect results. Each check returns [OK] or [FAIL] with a brief diagnostic message.
pgrep -la 'bun.*src/main.ts'
Pass if exactly one process is found. Fail if zero or more than one.
BOT_TOKEN=$(cat ~/.claude/.secrets/ccterrybot-telegram)
curl -s "https://api.telegram.org/bot${BOT_TOKEN}/getMe" | jq .ok
Pass if response is true. Fail if false, null, or connection error.
[[ -d ~/.local/share/kokoro/.venv ]]
Pass if the directory exists.
~/.local/share/kokoro/.venv/bin/python -c "from mlx_audio.tts.utils import load_model; print('MLX OK')"
Pass if import succeeds with exit code 0.
[[ "$(uname -m)" == "arm64" ]]
Pass if architecture is arm64. MLX-Audio requires Apple Silicon (M1+).
LOCK_FILE="/tmp/kokoro-tts.lock"
if [[ -f "$LOCK_FILE" ]]; then
LOCK_PID=$(cat "$LOCK_FILE")
LOCK_AGE=$(( $(date +%s) - $(stat -f %m "$LOCK_FILE") ))
if kill -0 "$LOCK_PID" 2>/dev/null; then
if [[ $LOCK_AGE -gt 30 ]]; then
echo "STALE (PID $LOCK_PID alive but lock age ${LOCK_AGE}s > 30s threshold)"
else
echo "ACTIVE (PID $LOCK_PID, age ${LOCK_AGE}s)"
fi
else
echo "ORPHANED (PID $LOCK_PID not running, age ${LOCK_AGE}s)"
fi
else
echo "NO LOCK (idle)"
fi
Pass if no lock or active lock with age under 30s. Fail if stale or orphaned.
pgrep -x afplay
pgrep -x say
Informational check. Reports count of running audio processes. Not a pass/fail -- just reports state.
[[ -f ~/.claude/.secrets/ccterrybot-telegram ]]
Pass if the file exists and is non-empty.
find /tmp -maxdepth 1 -name "kokoro-tts-*.wav" -mmin +5 2>/dev/null
Pass if no stale WAV files found (older than 5 minutes). Fail if orphaned WAVs exist.
[[ -L ~/.local/bin/tts_kokoro.sh ]] && readlink ~/.local/bin/tts_kokoro.sh
Pass if symlink exists and points to a valid target within the plugin.
Display results as a table:
| # | Subsystem | Status | Detail |
|---|------------------|--------|---------------------------------|
| 1 | Bot Process | [OK] | PID 12345 |
| 2 | Telegram API | [OK] | Bot @ccterrybot responding |
| 3 | Kokoro venv | [OK] | ~/.local/share/kokoro/.venv |
| 4 | MLX-Audio Import | [OK] | mlx_audio module loaded |
| 5 | Apple Silicon | [OK] | arm64 (MLX Metal) |
| 6 | Lock State | [OK] | No lock (idle) |
| 7 | Audio Processes | [OK] | 0 afplay, 0 say |
| 8 | Secrets File | [OK] | ccterrybot-telegram present |
| 9 | Stale WAVs | [OK] | No orphaned files |
|10 | Shell Symlinks | [OK] | tts_kokoro.sh -> plugin script |
1. [Setup] Load environment variables from mise in bot source directory
2. [Run] Execute all 10 health checks and collect results
3. [Report] Display results table with [OK]/[FAIL] status for each subsystem
4. [Summary] Show pass/fail counts (e.g., 9/10 passed)
5. [Recommend] Suggest fixes for any failures, referencing relevant skills
| Issue | Cause | Solution |
|---|---|---|
| All checks fail | Environment not set up | Run full-stack-bootstrap skill first |
| Only Kokoro checks fail (3-4) | Kokoro venv missing or broken | Run kokoro-install.sh --health for detailed report |
| Lock stuck (check 6) | Stale lock from crashed TTS process | Check lock age and PID; see diagnostic-issue-resolver skill |
| Bot process missing (check 1) | Bot crashed or was never started | See bot-process-control skill |
| Telegram API fails (check 2) | Token expired or network issue | Verify token in ~/.claude/.secrets/ccterrybot-telegram; check network |
| Not Apple Silicon (check 5) | Running on Intel Mac or Linux | MLX-Audio requires Apple Silicon (M1+) |
| Stale WAVs found (check 9) | TTS process crashed mid-generation | Clean with rm /tmp/kokoro-tts-*.wav; investigate crash cause |
| Shell symlinks missing (check 10) | Bootstrap incomplete | Re-run symlink setup from full-stack-bootstrap skill |
After this skill completes, reflect before closing the task:
Do NOT defer. The next invocation inherits whatever you leave behind.
Frequently asked questions
Run a comprehensive 10-subsystem health check across the TTS engine, Telegram bot, and supporting infrastructure. Produces a pass/fail report table with actionable fix recommendations.
The source record exposes this install command: npx skills add https://github.com/terrylica/cc-skills --skill "plugins/tts-tg-sync/skills/health". Inspect the command and pinned source before running it.
Static rules flagged network in the source; the page lists the matching lines and excerpts.
Alternatives
jojoprison/mnemo
Vault health audit — orphans, broken links, type-aware stale-review candidates, growth stats. Use whenever the user mentions vault maintenance, orphans, broken links, 'is my vault clean', 'проверь vault', 'сироты', 'битые ссылки', 'здоровье базы знаний', 'здоровье памяти', 'здоровье обсидиана', or asks for vault statistics — or proactively after creating 3+ notes in a session, after mass note creation, or when health checks haven't run in a while; the longer between checks, the more invisible or
alirezarezvani/claude-skills
App Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklist
wanshuiyin/Auto-claude-code-research-in-sleep
Use it for operations and research tasks; the detail page covers purpose, installation, and practical steps.
prowler-cloud/prowler
PostgreSQL indexing best practices for Prowler: index design, partial indexes, partitioned table indexing, EXPLAIN ANALYZE validation, concurrent operations, monitoring, and maintenance. Trigger: When creating or modifying PostgreSQL indexes, analyzing query performance with EXPLAIN, debugging slow queries, reviewing index usage statistics, reindexing, dropping indexes, or working with partitioned table indexes. Also trigger when discussing index strategies, partial indexes, or index maintenance