From claude-commands
Pre-flight checklist for investigating self-hosted GitHub Actions runner failures: low disk, missing runner, stuck jobs. Verifies host-level container state (Docker, disk) before fixes.
How this skill is triggered — by the user, by Claude, or both
Slash command
/claude-commands:self-hosted-runner-preflightThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
- User says "runner is offline", "runner missing", "CI failed low_disk_space", "Green Gate stuck"
gh api orgs/jleechanorg/actions/runners shows fewer than 22 runnersFor each failure class, answer BEFORE proposing a fix:
gh api orgs/jleechanorg/actions/runners?per_page=100 --jq '.runners[] | {name,status,busy}'docker ps --format "{{.Names}}\t{{.Status}}" | grep org-runner-mac-ssh jeff-ubuntu "DOCKER_HOST=unix:///home/jleechan/.lima/colima/sock/docker.sock docker ps --format '{{.Names}}\t{{.Status}}' | grep org-runner-"docker exec <name> df -Pk / — needs >=1GB free for preflight to pass.docker ps -a --format "{{.Names}}\t{{.Status}}" | grep Restartingdocker logs --tail 30 <name> for 403/registration errors.self-hosted-oss/pre-job-hook.sh to add disk cleanup (fires on EVERY job, not periodic).AVAIL_KB="$(df -Pk "${RUNNER_WORKDIR}" 2>/dev/null | awk 'NR==2 {print $4}')"
if [[ "$AVAIL_KB" -lt "$DISK_MIN_KB" ]]; then
rm -rf /root/.cache/pip
rm -rf "${RUNNER_WORKDIR}/<repo>"
fi
DISK_MIN_KB=5242880 (5GB, 5x the preflight threshold).mac-runner-disk-cleanup.sh style).bash self-hosted-oss/install.sh syncs to ~/.local/share/worldarchitect-runners/pre-job-hook.sh (bind-mounted live — no restart needed).docker exec <runner> bash -c 'pgrep Runner.Worker' returns empty (idle), then df -Pk / shows >=5GB.RUNNER_COUNT=<N> bash ~/.local/share/worldarchitect-runners/start-runner.sh startssh jeff-ubuntu "cd ~/projects/worktree_runner/self-hosted-colima && DOCKER_HOST=unix:///home/jleechan/.lima/colima/sock/docker.sock docker compose up -d runner-<N>"docker ps | grep runner-<N> and gh api orgs/jleechanorg/actions/runners --jq '.runners[].name' | grep runner-<N>SKEPTIC_GATE_TRIGGER SHA pinned in PR comments to gh pr view <N> --json headRefOid.gh workflow run "MCP Smoke Tests" --ref <branch> -f pr_number=<N>
gh workflow run "Skeptic Self-Verify" --ref <branch> -f pr_number=<N>
gh workflow run green-gate.yml --ref <branch> -f pr_number=<N> -f head_sha=<sha>
pr_number; green-gate.yml ALSO requires head_sha.docker exec <name> bash -c 'echo ${#ACCESS_TOKEN}' (should be ~40).docker exec <name> curl -X POST -H "Authorization: token $ACCESS_TOKEN" -H "Accept: application/vnd.github+json" https://api.github.com/orgs/jleechanorg/actions/runners/registration-tokengh auth token and re-deploy.pgrep Runner.Worker first).~/.local/share/worldarchitect-runners/) — edit self-hosted-oss/, then bash install.sh to sync.npx claudepluginhub jleechanorg/claude-commands --plugin claude-commandsAdds self-hosted GitHub Actions runner support with automatic fallback to ubuntu-latest. Creates a reusable detect-runner.yml workflow that checks runner availability via GitHub API and modifies existing workflows.
Provisions GitHub Actions org-level self-hosted runners on macOS using Docker containers (myoung34/github-runner) and launchd services.
Inspects GitHub Actions workflow runs using gh CLI: lists runs, checks status, analyzes logs, debugs failures, reruns jobs. Use for CI/CD troubleshooting.