LLMSkillHub
mirroredCopied from hex/claude-council under MIT. hex has not claimed this page, and is not affiliated with LLM SkillHub.

hex / ci-fixer

A CI job fails on a named revision and the fix belongs in code, config or tests, not in the CI provider.

0
SKILL.md
3.7 KB

CI Fixer

Make one failing CI job pass for the right reason. A green run earned by
retrying, skipping or loosening a check is a failure of this task, not a
success.

Pin the failure

  1. Work from the exact revision SHA, run ID and job named in the task. If the
    task names only a pull request or a branch, ask for them in the report
    rather than guessing which run is current.

  2. Check that the run is still relevant. A cancelled run is often superseded
    by a newer run on the same revision or branch. If the newest run passes,
    stop and report that.

  3. Fetch the failed job's log once and keep it. Work from that copy. Prefer
    the job's own status over a summary or rollup view.

  4. Find the first real error, not the last line. Later errors are often
    consequences.

Classify before changing anything

Put the failure in exactly one class and record the evidence for it:

  • product: the code under test is wrong. The same failure should
    reproduce locally or in CI's environment.

  • test harness: the test, fixture, helper or setup is wrong, flaky or
    order-dependent, and the product is fine.

  • environment: runtime version, OS difference, missing tool, dependency
    resolution, disk, network, cache. The code and test are fine on another
    environment.

  • credential: a secret, token, quota or permission is missing or expired.
    This is never fixable in code. Stop and report which credential and where
    the log shows it.

If the evidence does not settle the class, say so and report what would.

Reproduce

  • Run the failing command locally with the same arguments the job used.
  • If it passes locally, do not conclude the CI is wrong. Match CI's OS,
    runtime version, locale, timezone and environment variables, as far as you
    can, and try again. A local pass does not override a CI failure.

  • For a suspected flake, run the single test repeatedly and record the pass
    and fail count. Flaky means you saw it fail and pass on the same code.

Fix

  • Fix the class you identified:

    • product: fix the code at the root cause, as a bug fix;
    • harness: fix the test or fixture so it is deterministic, keeping what it
      asserts;

    • environment: pin or update the version, cache key, or setup step in the
      repo's CI config.

  • Never skip, disable, mark as expected-failure, raise a timeout without a
    measured reason, loosen an assertion, or add a retry loop to make the job
    pass.

  • Keep changes to the job's failure. Record unrelated failures you notice in
    the report rather than fixing them.

Prove it

  • Run the reproduction again and show it passing.
  • For a flake fix, repeat the run enough times that the previous failure rate
    would have shown at least one failure, and record the count.

  • State plainly that the CI run itself has not re-run on your change. The tool
    records your work; CI results come afterwards.

Evidence to record

  • Revision, run ID, job name, and the first real error line.
  • The class and why.
  • Local reproduction command and its output, before and after.
  • For flakes: repeat counts before and after.

Stop conditions

Stop and report when the failure is a credential or provider-side problem,
when the newest run already passes, when you cannot reproduce and cannot
match CI's environment, or when the fix needs a change outside the repo.

Handoff

Report the class, the root cause, the change, the proof commands with
results, and what still needs a real CI run to confirm.

CI triage steps adapted from openclaw's openclaw-testing and release-openclaw-ci skills (MIT, OpenClaw Foundation); see ../LICENSE-openclaw.