KingInYellows

diagnose-ci

'Reference guide (not an executable action) for CI debugging workflows and the F01-F12 failure-pattern catalog on self-hosted runners. Consult when you need to understand debugging workflows or failure patterns; to actually run a diagnosis, use the ci-diagnose skill instead.'

KingInYellows 0 Updated 1mo ago
GitHub

Install

npx skillscat add kinginyellows/yellow-plugins/diagnose-ci

Install via the SkillsCat registry.

SKILL.md

Diagnosing CI Failures on Self-Hosted Runners

What It Does

Explains how to understand and resolve GitHub Actions workflow failures on
self-hosted runners, including the F01-F12 failure-pattern catalog. This is a
reference guide, not an executable workflow — it documents the debugging
approach so agents and commands can reference it during CI analysis.

When to Use

Consult this guide when learning CI debugging workflows, understanding failure
patterns, or troubleshooting self-hosted runner issues. To actually diagnose a
failed run, use the ci-diagnose skill; this guide only describes the approach.

Usage

Quick Start

  1. List recent runs — the ci-status skill.
  2. Diagnose a failure — the ci-diagnose skill (pass a run ID if you have one).
  3. Check runner health — the ci-runner-health skill (pass a runner name to
    scope it).

Common Failure Workflows

Resource Exhaustion (F01 OOM, F02 Disk Full)

Symptoms: exit code 137, Killed, No space left on device.

Approach:

  1. Diagnose the failure to confirm the pattern (ci-diagnose).
  2. Check the runner's current resource state (ci-runner-health).
  3. If disk is full, preview what would be cleared (Docker images, caches, and
    old logs) and obtain explicit user confirmation before deleting anything —
    re-check the runner state immediately before deleting to avoid clearing
    data from an active job.
  4. If out of memory, increase VM memory or reduce build parallelism.
  5. Re-run the failed workflow.

Environment Drift (F03 Missing Deps, F06 Stale State)

Symptoms: command not found, tests pass locally but fail in CI.

Approach:

  1. Diagnose to identify the missing tool or stale state (ci-diagnose).
  2. Check the workflow setup steps — pin tool versions.
  3. Add clean: true to the checkout step.
  4. Lint the workflows to catch other self-hosted pitfalls (ci-lint-workflows).

Docker Issues (F04)

Symptoms: Cannot connect to the Docker daemon, rate limiting.

Approach:

  1. Diagnose to confirm the Docker pattern (ci-diagnose).
  2. Check the runner and verify Docker status (ci-runner-health).
  3. If rate limited, configure a Docker Hub mirror or authenticate.
  4. If the daemon is down, restart it on the runner over SSH.

Flaky Tests (F07)

Symptoms: intermittent failures, passes on re-run.

Approach:

  1. Diagnose the last 3-5 failures to identify the pattern (ci-diagnose).
  2. Look for timing-dependent assertions.
  3. Add a retry annotation or increase timeouts.
  4. Fix the underlying race condition.

Runner Agent Issues (F09)

Symptoms: runner offline, heartbeat timeout, Runner.Listener crash.

Approach:

  1. Check runner status (ci-runner-health, scoped to the runner).
  2. If offline, SSH in and restart the runner service.
  3. If a version mismatch, update the runner binary.
  4. If deregistered, re-register with a new token.

Failure Pattern Reference

Twelve categories cover self-hosted runner issues (F01-F12). The ci-conventions
reference documents the full pattern library with log signals, severity levels,
and detailed fix suggestions.

Prevention

Lint workflows before pushing changes to catch common self-hosted pitfalls
(14 rules, W01-W14) — the ci-lint-workflows skill.