用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/terrylica/cc-skills --skill health命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
user wants to create a macOS Calendar event with sound alarms and paired Reminders, schedule a meeting, RSVP to an invitation, or set reminders.
Park a draft message/text in macOS Notes for the operator to review and edit, then read it back before acting (e.g. before sending to a real person). Notes is the source of truth (AppleScript CRUD, iCloud-synced, provenance-stamped with the Claude Code session UUID); Stickies is a best-effort view-only desktop mirror. Use whenever you draft something a human should confirm/edit before it is sent or committed — messages, replies, announcements, anything outbound. TRIGGERS - park this draft, park the message, hold this draft, let me edit first, draft for my approval, save to notes for review, read back the draft.
Programmatic Firecrawl usage via the public API, academic paper routing, recursive deep research, and raw corpus persistence.
基于 SOC 职业分类
正在显示 SKILL.md
| name | health |
| description | Health check for TTS and Telegram bot subsystems. TRIGGERS - health check, bot health, kokoro health |
| allowed-tools | Read, Bash, Glob, AskUserQuestion |
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.