mcpField
D
daemon-status

daemon-status

github.com/terrylicaCloud & DevOps195 installsUpdated today
Repository

About daemon-status

daemon-status is a skill for checking asciinema recording-daemon status, including the daemon, running processes, and unhandled .cast files. It also lists troubleshooting guidance and calls for updating instructions only when an issue is reproducible.

Key features

  1. 01Check daemon status
  2. 02List running recording processes
  3. 03Find unhandled .cast files
  4. 04Provide troubleshooting guidance
  5. 05Include post-run review instructions

Use cases

  1. 01Check whether the asciinema recording daemon is running
  2. 02Inspect active recording processes and files
  3. 03Troubleshoot missing health data or unhandled recordings

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/terrylica/cc-skills --skill daemon-status

After installing, type/daemon-statusin Claude Code to confirm it loaded.

Bundled filesreferences/evolution-log.md

Details

From the project README

/asciinema-tools:daemon-status

Check comprehensive asciinema status including daemon, running processes, and unhandled .cast files.

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.

Execution

Collect Status Information
/usr/bin/env bash << 'STATUS_EOF'
PLIST_PATH="$HOME/Library/LaunchAgents/com.cc-skills.asciinema-chunker.plist"
HEALTH_FILE="$HOME/.asciinema/health.json"
LOG_FILE="$HOME/.asciinema/logs/chunker.log"
RECORDINGS_DIR="$HOME/asciinema_recordings"

echo "╔════════════════════════════════════════════════════════════════╗"
echo "║  asciinema Status Overview                                     ║"
echo "╠════════════════════════════════════════════════════════════════╣"

# ========== RUNNING PROCESSES ==========
echo "║  RUNNING PROCESSES                                             ║"
echo "╠────────────────────────────────────────────────────────────────╣"

PROCS=$(ps aux | grep -E "asciinema rec" | grep -v grep)
if [[ -n "$PROCS" ]]; then
  PROC_COUNT=$(echo "$PROCS" | wc -l | tr -d ' ')
  printf "║  Active asciinema rec: %-38s ║\n" "$PROC_COUNT process(es)"
  echo "$PROCS" | while read -r line; do
    PID=$(echo "$line" | awk '{print $2}')
    # Extract .cast file path from command
    CAST_FILE=$(echo "$line" | grep -oE '[^ ]+\.cast' | head -1)
    if [[ -n "$CAST_FILE" ]]; then
      BASENAME=$(basename "$CAST_FILE")
      SIZE=$(ls -lh "$CAST_FILE" 2>/dev/null | awk '{print $5}' || echo "?")
      printf "║    PID %-6s %-35s %5s ║\n" "$PID" "${BASENAME:0:35}" "$SIZE"
    else
      printf "║    PID %-6s (no file detected)                          ║\n" "$PID"
    fi
  done
else
  echo "║  Active asciinema rec: None                                    ║"
fi

echo "╠════════════════════════════════════════════════════════════════╣"

# ========== DAEMON STATUS ==========
echo "║  CHUNKER DAEMON                                                ║"
echo "╠────────────────────────────────────────────────────────────────╣"

if [[ -f "$PLIST_PATH" ]]; then
  echo "║  Installed: Yes                                                ║"
  if launchctl list 2>/dev/null | grep -q "asciinema-chunker"; then
    echo "║  Running: Yes                                                  ║"
  else
    echo "║  Running: No                                                   ║"
  fi

  if [[ -f "$HEALTH_FILE" ]]; then
    STATUS=$(jq -r '.status // "unknown"' "$HEALTH_FILE")
    LAST_PUSH=$(jq -r '.last_push // "never"' "$HEALTH_FILE")
    CHUNKS=$(jq -r '.chunks_pushed // 0' "$HEALTH_FILE")
    printf "║  Health: %-52s ║\n" "$STATUS"
    printf "║  Last push: %-49s ║\n" "$LAST_PUSH"
    printf "║  Chunks pushed: %-44s ║\n" "$CHUNKS"
  fi
else
  echo "║  Installed: No - run /asciinema-tools:daemon-setup             ║"
fi

echo "╠════════════════════════════════════════════════════════════════╣"

# ========== UNHANDLED .CAST FILES ==========
echo "║  UNHANDLED .CAST FILES (not on orphan branch)                  ║"
echo "╠────────────────────────────────────────────────────────────────╣"

# Find .cast files in common locations
UNHANDLED=()
while IFS= read -r -d '' file; do
  UNHANDLED+=("$file")
done < <(find ~/eon -name "*.cast" -size +1M -mtime -30 -print0 2>/dev/null)

# Also check tmp directories
while IFS= read -r -d '' file; do
  UNHANDLED+=("$file")
done < <(find /tmp -maxdepth 2 -name "*.cast" -size +1M -print0 2>/dev/null)

if [[ ${#UNHANDLED[@]} -gt 0 ]]; then
  printf "║  Found: %-53s ║\n" "${#UNHANDLED[@]} file(s) need attention"
  for file in "${UNHANDLED[@]:0:5}"; do
    BASENAME=$(basename "$file")
    SIZE=$(ls -lh "$file" 2>/dev/null | awk '{print $5}')
    MTIME=$(stat -f "%Sm" -t "%Y-%m-%d" "$file" 2>/dev/null || stat -c "%y" "$file" 2>/dev/null | cut -d' ' -f1)
    printf "║    %-40s %5s  %s ║\n" "${BASENAME:0:40}" "$SIZE" "$MTIME"
  done
  if [[ ${#UNHANDLED[@]} -gt 5 ]]; then
    printf "║    ... and %d more                                          ║\n" "$((${#UNHANDLED[@]} - 5))"
  fi
  echo "║                                                                ║"
  echo "║  → Run /asciinema-tools:finalize to process these files        ║"
else
  echo "║  No unhandled .cast files found                                ║"
fi

echo "╠════════════════════════════════════════════════════════════════╣"

# ========== CREDENTIALS ==========
echo "║  CREDENTIALS                                                   ║"
echo "╠────────────────────────────────────────────────────────────────╣"

if security find-generic-password -s "asciinema-github-pat" -a "$USER" -w &>/dev/null 2>&1; then
  echo "║  GitHub PAT: ✓ Configured                                      ║"
else
  echo "║  GitHub PAT: ✗ Not configured                                  ║"
fi

if security find-generic-password -s "asciinema-pushover-app" -a "$USER" -w &>/dev/null 2>&1; then
  echo "║  Pushover: ✓ Configured                                        ║"
else
  echo "║  Pushover: ○ Not configured (optional)                         ║"
fi

echo "╚════════════════════════════════════════════════════════════════╝"

# Recent log entries
if [[ -f "$LOG_FILE" ]]; then
  echo ""
  echo "Recent daemon logs:"
  echo "-------------------"
  tail -5 "$LOG_FILE"
fi
STATUS_EOF

Output Example

╔════════════════════════════════════════════════════════════════╗
║  asciinema Status Overview                                     ║
╠════════════════════════════════════════════════════════════════╣
║  RUNNING PROCESSES                                             ║
╠────────────────────────────────────────────────────────────────╣
║  Active asciinema rec: 2 process(es)                           ║
║    PID 41749  research-repo-research_2025.cast            12G    ║
║    PID 49655  research-repo_2025-12-23.cast              4.5G    ║
╠════════════════════════════════════════════════════════════════╣
║  CHUNKER DAEMON                                                ║
╠────────────────────────────────────────────────────────────────╣
║  Installed: Yes                                                ║
║  Running: Yes                                                  ║
║  Health: ok                                                    ║
║  Last push: 2025-12-26T15:30:00Z                               ║
║  Chunks pushed: 7                                              ║
╠════════════════════════════════════════════════════════════════╣
║  UNHANDLED .CAST FILES (not on orphan branch)                  ║
╠────────────────────────────────────────────────────────────────╣
║  Found: 3 file(s) need attention                               ║
║    research-repo-research.cast                 12G   2025-12-30  ║
║    research-repo_session.cast                 4.5G   2025-12-26  ║
║    debug-session.cast                       234M   2025-12-28  ║
║                                                                ║
║  → Run /asciinema-tools:finalize to process these files        ║
╠════════════════════════════════════════════════════════════════╣
║  CREDENTIALS                                                   ║
╠────────────────────────────────────────────────────────────────╣
║  GitHub PAT: ✓ Configured                                      ║
║  Pushover: ○ Not configured (optional)                         ║
╚════════════════════════════════════════════════════════════════╝

Recent daemon logs:
-------------------
[2025-12-26 15:30:00] Pushed: chunk_20251226_153000.cast.zst
[2025-12-26 15:25:00] Idle detected (32s) for workspace_2025-12-26.cast

Troubleshooting

IssueCauseSolution
jq not foundjq not installedbrew install jq
No health.jsonDaemon not runningRun /asciinema-tools:daemon-start
GitHub PAT not foundKeychain credential missingRun /asciinema-tools:daemon-setup
Many unhandled filesOrphan branch not initializedRun /asciinema-tools:finalize
Status hangsLarge find operationUse --processes-only for quick check

Post-Execution Reflection

After this skill completes, check before closing:

  1. Did the command succeed? — If not, fix the instruction or error table that caused the failure.
  2. Did parameters or output change? — If the underlying tool's interface drifted, update Usage examples and Parameters table to match.
  3. Was a workaround needed? — If you had to improvise (different flags, extra steps), update this SKILL.md so the next invocation doesn't need the same workaround.

Only update if the issue is real and reproducible — not speculative.

Comments

Markdown supported