system-health-check

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.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "system-health-check" with this command: npx skills add terrylica/cc-skills/terrylica-cc-skills-system-health-check

System Health Check

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)

When to Use This Skill

  • 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

  • Investigate intermittent failures in the TTS pipeline

  • Check for stale locks, zombie processes, or orphaned temp files

Requirements

  • Bun runtime (for bot process)

  • Python 3.13 with Kokoro venv at ~/.local/share/kokoro/.venv

  • Telegram bot token in ~/.claude/.secrets/ccterrybot-telegram

  • mise.toml configured in ~/.claude/automation/claude-telegram-sync/

Workflow Phases

Phase 1: Setup

Load environment variables from mise to ensure BOT_TOKEN and other secrets are available:

cd ~/.claude/automation/claude-telegram-sync && eval "$(mise env)"

Phase 2: Run All 10 Health Checks

Execute each check and collect results. Each check returns [OK] or [FAIL] with a brief diagnostic message.

Check 1: Bot Process

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

Pass if exactly one process is found. Fail if zero or more than one.

Check 2: Telegram API

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.

Check 3: Kokoro venv

[[ -d ~/.local/share/kokoro/.venv ]]

Pass if the directory exists.

Check 4: MLX-Audio Import

~/.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.

Check 5: Apple Silicon

[[ "$(uname -m)" == "arm64" ]]

Pass if architecture is arm64. MLX-Audio requires Apple Silicon (M1+).

Check 6: Lock State

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.

Check 7: Audio Processes

pgrep -x afplay pgrep -x say

Informational check. Reports count of running audio processes. Not a pass/fail -- just reports state.

Check 8: Secrets File

[[ -f ~/.claude/.secrets/ccterrybot-telegram ]]

Pass if the file exists and is non-empty.

Check 9: Stale WAV Files

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.

Check 10: Shell Symlinks

[[ -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.

Phase 3: Report

Display results as a table:

#SubsystemStatusDetail
1Bot Process[OK]PID 12345
2Telegram API[OK]Bot @ccterrybot responding
3Kokoro venv[OK]~/.local/share/kokoro/.venv
4MLX-Audio Import[OK]mlx_audio module loaded
5Apple Silicon[OK]arm64 (MLX Metal)
6Lock State[OK]No lock (idle)
7Audio Processes[OK]0 afplay, 0 say
8Secrets File[OK]ccterrybot-telegram present
9Stale WAVs[OK]No orphaned files
10Shell Symlinks[OK]tts_kokoro.sh -> plugin script

Phase 4: Summary and Recommendations

  • Report total pass/fail counts (e.g., "9/10 checks passed")

  • For each failure, recommend the appropriate fix or skill to invoke

TodoWrite Task Templates

  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

Post-Change Checklist

  • All 10 checks executed (none skipped due to early exit)

  • Results table displayed with consistent formatting

  • Each failure has an actionable recommendation

  • No sensitive values (tokens, secrets) exposed in output

Troubleshooting

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

Reference Documentation

  • Health Checks - Detailed description of each check, failure meaning, and remediation

  • Evolution Log - Change history for this skill

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

chezmoi-workflows

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

doppler-workflows

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

multi-agent-e2e-validation

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

multi-agent-performance-profiling

No summary provided by upstream source.

Repository SourceNeeds Review