Ci Failure Fixer

Workflows

Monitor GitHub Actions CI pipelines for failures and automatically fix common issues. Use when asked to watch CI, fix build failures, monitor GitHub Actions, set up CI auto-repair, or diagnose failed builds. Detects failures via `gh` CLI, reads build logs, matches against known fix patterns (dependency issues, snapshot mismatches, lint errors, E2E failures), applies fixes automatically, and reports unfixable issues with diagnosis. Works as a cron job or on-demand. Requires `gh` CLI authenticated with GitHub.

Install

openclaw skills install ci-failure-fixer

CI Failure Fixer

Monitor GitHub Actions for failures. Auto-fix what's fixable, report what's not.

How It Works

  1. scripts/check-ci-failures.sh polls repos for new failed runs
  2. If failures found → read build logs via gh run view --log
  3. Match error against known patterns → auto-fix if safe
  4. Push fix → wait 90s → verify build passes
  5. Report results (fixed or diagnosis-only)

Quick Start

On-demand

bash scripts/check-ci-failures.sh

Output: OK (no failures) or FAILURES with details.

As Cron Job (OpenClaw)

Set up a cron that runs every 30 minutes:

  • Script: bash scripts/check-ci-failures.sh
  • Model: Haiku (cheap, sufficient)
  • On failure: Read logs, attempt auto-fix, report

Configuration

Environment variables:

  • GITHUB_OWNER — GitHub username (auto-detected from gh if not set)
  • CI_REPOS — Space-separated repo names (auto-discovers all repos if not set)
  • CI_STATE_FILE — Path to state JSON (tracks last check time)

Auto-Fixable Patterns

PatternDetectionFix
Dependency issuesnpm ERR! Could not resolvenpm install + push
Test snapshotsSnapshot mismatchnpm test -- --update + push
Lint errorseslint, Formattingeslint --fix + push
E2E snapshotsPlaywright snapshot diffplaywright --update-snapshots + push

Report-Only (Human Needed)

  • Token/auth errors (secrets rotation)
  • TypeScript errors (complex type issues)
  • Build timeouts (resource/loop issues)
  • Unknown errors

Fix Patterns Reference

Read references/fix-patterns.md for detailed decision tree, log reading commands, and all known patterns with fix scripts.

Reading Logs

# Latest failed run logs
gh run view --repo OWNER/REPO --log 2>&1 | tail -50

# Filter for errors
gh run view <run-id> --repo OWNER/REPO --log 2>&1 | grep -A5 "error\|FAIL"

After Fixing

Always verify the fix worked:

sleep 90  # Wait for new CI run
gh run list --repo OWNER/REPO --limit 1 --json conclusion -q '.[0].conclusion'
# Should be "success"