mcpField
D
daemon-status

daemon-status

github.com/terrylicaクラウド・DevOps195 回インストール今日更新
リポジトリ

daemon-status について

daemon-statusは、asciinema録画デーモンの状態を確認するスキルです。デーモン、実行中のプロセス、未処理の.castファイルを調べ、再現可能な問題に限って手順を更新するよう案内します。

主な機能

  1. 01デーモン状態の確認
  2. 02実行中の録画プロセス一覧
  3. 03未処理.castファイルの検出
  4. 04トラブルシューティング案内
  5. 05実行後の確認手順

活用シーン

  1. 01asciinema録画デーモンの稼働確認
  2. 02アクティブな録画プロセスとファイルの調査
  3. 03ヘルス情報の欠落や未処理録画の調査

インストール

コマンドをコピーしてターミナルで実行します。

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

インストール後、Claude Code で/daemon-statusを入力して読み込まれたか確認します。

同梱ファイルreferences/evolution-log.md

詳細

/asciinema-tools:daemon-status

デーモン、実行中のプロセス、未処理の .cast ファイルを含む、asciinema の包括的なステータスを確認します。

自己進化型スキル:このスキルは使用を通じて改善されます。手順に誤りがある場合、パラメーターにずれが生じた場合、または回避策が必要だった場合は、後回しにせず、すぐにこのファイルを修正してください。実際に再現可能な問題がある場合にのみ更新してください。

実行

ステータス情報の収集
/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

出力例

╔════════════════════════════════════════════════════════════════╗
║  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

トラブルシューティング

問題原因解決策
jq が見つからないjq がインストールされていないbrew install jq
health.json がないデーモンが実行されていない/asciinema-tools:daemon-start を実行
GitHub PAT がないキーチェーンの認証情報がない/asciinema-tools:daemon-setup を実行
未処理のファイルが多い孤立ブランチが初期化されていない/asciinema-tools:finalize を実行
ステータス確認が停止する大規模な find 処理すばやく確認するには --processes-only を使用

実行後の振り返り

このスキルの実行後、終了する前に確認してください。

  1. コマンドは成功しましたか? — 失敗した場合は、原因となった手順またはエラー表を修正してください。
  2. パラメーターや出力に変更がありましたか? — 基盤となるツールのインターフェースにずれが生じた場合は、使用例とパラメーター表を合わせて更新してください。
  3. 回避策が必要でしたか? — 臨機応変な対応(別のフラグや追加手順)が必要だった場合は、次回同じ回避策が不要になるよう、この SKILL.md を更新してください。

実際に再現可能な問題がある場合にのみ更新してください。推測に基づいて更新しないでください。

コメント