Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Diagnose failing GitHub Actions runs and propose fixes. Use when given a GHA run/job URL, or asked why CI failed, why a job failed, what broke in a run, or to fix a red check on a PR.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 79% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 82% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 56% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 153% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 218% | 0% |
Scope: diagnose + propose. Never apply, commit, or push automatically.
User shares a GHA URL (actions/runs/<id>, actions/runs/<id>/job/<id>, or pull/<n>/checks?check_run_id=<id>) and asks why it failed.
camunda/camunda repo → tell user this skill assumes monorepo conventions; some fixes won't apply.gh auth status works against camunda/camunda.pull_request only) rerun. Per ci.md §flaky tests: retry within the timeout.ci.md. Silent or contradicts → drop. Use the prescribed composite actions (setup-maven-cache, setup-yarn-cache); cache writes only from main/stable*.run_id (required), job_id (optional), attempt (optional)For check URLs, check_run_id is the job id. /attempts/<n> → attempt=<n>.
bashgh run view <run-id> --repo camunda/camunda [--attempt <n>] --json \ status,conclusion,name,headBranch,headSha,event,workflowName,jobs,url,attempt
Default returns the latest attempt — a successful rerun masks the original failure. Always pass --attempt <n> if the URL had one; thread it through Step 5's --log-failed too.
in_progress → tell user, stop.success → tell user, ask what they actually want.From jobs[] where conclusion ∈ {failure, cancelled}, find the failing step (steps[].conclusion). If job_id given, restrict to it.
Matrix / cascade: find the upstream root cause first (usually Java Checks, build-*, Unit - Back End). Group identical step failures. Tell user the shortlist before pulling logs.
bashgh api --paginate "/repos/camunda/camunda/check-runs/<job-id>/annotations?per_page=100" \ --jq '.[] | {level: .annotation_level, message: .message, path: .path}'
Watch level: failure:
"exceeded the maximum execution time of 30m0s" → GHA per-job timeout. Real failure, not transient."<TestClass.method> -- Time elapsed: …s <<< ERROR!" → the specific test that hung/errored."The operation was canceled." → cascade noise; ignore alone.If annotations name a test/file, often enough to skip Step 5.
bashgh run view <run-id> --repo camunda/camunda --log-failed --job <job-id>
Extract: the error line, ±few lines of context, the step + action that ran it.
headSha == HEAD (git rev-parse HEAD) → Read source files locally; skip gh api.
Pick one primary category per failing job.
references/code-test-failures.mdreferences/flaky-tests.mdpermissions:, invalid expression, conftest violation. → references/workflow-config.md. Also invoke ci-validation once fix is drafted.Error waiting for runner, image pull failure, registry 5xx, OOMKilled with no test signal. → references/infra-transient.mdcancelled is NOT automatically D. In this repo it's usually a per-job timeout triggered by a slow/hung test (Category A). For push / merge_group, every non-success is a real failure — no "transient" merge-queue or base-branch failures exist.
Decide by Step 4 annotations:
push/merge_group. Prefer A over B without evidence.Per category:
headSha. If in diff, read the diff; else git log -p -- <path>. Compile/format → message names the line.gh issue list --repo camunda/camunda --label kind/flake --search "<test>"); check the flaky-test gate..github/workflows/. Cross-check ci-workflow-authoring.Drill until you can name the smallest change that makes the job pass (file, function, line, or workflow key).
ci.md before any workflow/cache/retry/sizing changeThis is a gate, not a suggestion (see Hard Rule 2). Before proposing any change to .github/workflows/, .github/actions/, caching, retries, runner sizing, or timeouts:
ci.md rule that authorizes the change ("per ci.md §… setup-yarn-cache is the prescribed action for NPM caches").ci.md is silent on the case, fall back to the ci-workflow-authoring skill conventions and say so. If ci.md contradicts your proposal, drop it.Common contradictions to watch for:
cache-from: type=gha for Docker" — ci.md §caching forbids this.setup-maven-cache, setup-yarn-cache) already exists.| event / headBranch | Bar | Cat D disposition | |-----------------------------------|--------------|------------------------------------------------------------------------------| | push to main/stable/* | Strict | Hardening primary (retry, caching, mirror, sizing); rerun = unblock, not fix | | merge_group | Strict | Same | | pull_request | Looser | Rerun fine for one-off; harden only if recurring | | schedule / workflow_dispatch | Per-workflow | Harden if # owner: is set; otherwise rerun |
A/B/C: branch only changes the brief framing.
On strict-bar branches, never close with "rerun" alone — name the smallest hardening change in .github/workflows/ or .github/actions/ as primary fix.
**Run**: <workflow> · <branch> · <event> · <url>
**Failed jobs**: <n> (<grouped if matrix>)
**Category**: A | B | C | D
**Reliability bar**: strict (main/stable/*/merge_group) | looser (pull_request)
**Root cause**
<1–3 sentences, specific file/line/condition>
**Proposed fix**
<concrete edit + path; for D on strict bar, the hardening is the fix, rerun is the unblock>
**Verification**
<exact local command — usually module-scoped `./mvnw`, or a workflow re-run>Don't cite reference files in the brief. Stop. Apply only after user confirms; re-run verification; report.
gh run rerun --failed <run-id> --repo camunda/camunda; don't trigger../mvnw license:format spotless:apply -T1C + module-scoped command from AGENTS.md). Never full-repo builds.stable/*, ask the user per AGENTS.md.kind/flake issue via create-issue, assign engineer, leave test enabled.ci-validation — after any workflow edit, pre-commit.ci-workflow-authoring — for non-trivial workflow changes.create-issue — to file a flake issue.ci-incident — escalate if part of a declared incident, not a single job.Other measured skills in the registry, with their headline benchmark lift.