daemon-setup

SKILL.md

/asciinema-tools:daemon-setup

Interactive wizard to set up the asciinema chunker daemon. This daemon runs independently of Claude Code CLI, using dedicated credentials stored in macOS Keychain.

Why a Daemon?

Problem with old approach Daemon solution
Uses gh auth token (shared) Uses dedicated PAT from Keychain
Dies when terminal closes launchd keeps it running
Silent push failures Logs + Pushover notifications
Tied to Claude Code session Completely decoupled

Setup Phases Overview

Phase Name Details
1 Preflight Check Below
2 Check Existing Below
3 GitHub PAT Setup PAT Setup Guide
4 Pushover Setup Pushover Setup Guide
5-6 Config + Install launchd Installation Guide
7 Verify + Troubleshoot Verification & Troubleshooting

Execution

Phase 1: Preflight Check

Check required tools:

/usr/bin/env bash << 'PREFLIGHT_EOF'
MISSING=()
for tool in asciinema zstd git curl jq; do
  command -v "$tool" &>/dev/null || MISSING+=("$tool")
done

# macOS-specific: security command for Keychain
if [[ "$(uname)" == "Darwin" ]]; then
  command -v security &>/dev/null || MISSING+=("security (macOS Keychain)")
fi

if [[ ${#MISSING[@]} -gt 0 ]]; then
  echo "MISSING:${MISSING[*]}"
  exit 1
fi

echo "PREFLIGHT:OK"
PREFLIGHT_EOF

If MISSING not empty, use AskUserQuestion:

Question: "Missing required tools: {MISSING}. How would you like to proceed?"
Header: "Dependencies"
Options:
  - label: "Install via Homebrew (Recommended)"
    description: "Run: brew install {MISSING}"
  - label: "I'll install manually"
    description: "Pause setup and show install instructions"
  - label: "Abort setup"
    description: "Exit the setup wizard"

If "Install via Homebrew": Run brew install {MISSING} and continue.


Phase 2: Check Existing Installation

/usr/bin/env bash << 'CHECK_EXISTING_EOF'
PLIST_PATH="$HOME/Library/LaunchAgents/com.cc-skills.asciinema-chunker.plist"
DAEMON_RUNNING="false"

if [[ -f "$PLIST_PATH" ]]; then
  echo "PLIST_EXISTS:true"
  if launchctl list 2>/dev/null | grep -q "asciinema-chunker"; then
    DAEMON_RUNNING="true"
  fi
else
  echo "PLIST_EXISTS:false"
fi

echo "DAEMON_RUNNING:$DAEMON_RUNNING"

# Check if PAT already in Keychain
if security find-generic-password -s "asciinema-github-pat" -a "$USER" -w &>/dev/null 2>&1; then
  echo "PAT_EXISTS:true"
else
  echo "PAT_EXISTS:false"
fi
CHECK_EXISTING_EOF

If PLIST_EXISTS=true, use AskUserQuestion:

Question: "Existing daemon installation found. What would you like to do?"
Header: "Existing"
Options:
  - label: "Reinstall (keep credentials)"
    description: "Update daemon script and plist, keep Keychain credentials"
  - label: "Fresh install (reset everything)"
    description: "Remove existing credentials and start fresh"
  - label: "Cancel"
    description: "Exit without changes"

Phase 3: GitHub PAT Setup

See PAT Setup Guide for the full interactive flow: PAT creation walkthrough, Keychain storage, and verification.


Phase 4: Pushover Setup (Optional)

See Pushover Setup Guide for the full interactive flow: Pushover explanation, app creation, credential storage, and test notification.


Phase 5-6: Daemon Configuration and launchd Installation

See launchd Installation Guide for chunking settings selection, plist generation from template, and service installation.


Phase 7: Verification

See Verification & Troubleshooting for daemon health checks, post-install verification, the final success message, and the troubleshooting table.

Quick Reference

Troubleshooting

Issue Cause Solution
Keychain access denied macOS permission not granted Grant access in System Settings
PAT test failed Token expired or invalid scope Generate new token with repo scope
launchctl load failed plist syntax error Check plutil -lint <plist-path>
Daemon keeps stopping Script error or crash Check /asciinema-tools:daemon-logs
Pushover not working Invalid credentials Re-run setup with correct app/user key
Health file missing Daemon not running Run /asciinema-tools:daemon-start

Related Commands

Command Description
/asciinema-tools:daemon-status Check daemon health
/asciinema-tools:daemon-logs View logs
/asciinema-tools:daemon-stop Stop daemon
/asciinema-tools:daemon-start Start daemon
Weekly Installs
22
GitHub Stars
19
First Seen
Feb 27, 2026
Installed on
cline22
github-copilot22
codex22
kimi-cli22
gemini-cli22
cursor22