Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Fetch CI build results and diagnose failures. Auto-detects provider from project files or URLs. Supports GitHub Actions, Buildkite, and CircleCI.
.claude/skills/dicklesworthstone-fetch-ci-build/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-05 | ✗→✓ | ▲ Improved | -31% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 40% | 0% |
| case-08 | ✗→✓ | ▲ Improved | -23% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 358% | 0% |
| case-04 | ✓→✗ | ▼ Worse | -14% | 0% |
Fetch CI build results, diagnose failures, extract actionable error information, and suggest fixes. Supports multiple CI providers with automatic detection.
| Provider | Detection | Tool | |----------|-----------|------| | GitHub Actions | .github/workflows/ or github.com URL | gh CLI | | Buildkite | .buildkite/ or buildkite.com URL | Python script | | CircleCI | .circleci/ or circleci.com URL | Python script |
If the user provides a CI URL, detect provider:
github.com/.../actions/runs/... → GitHub Actionsbuildkite.com/... → Buildkiteapp.circleci.com/... or circleci.com/... → CircleCICheck for CI configuration directories:
bash# GitHub Actions test -d .github/workflows && echo "github" # Buildkite test -d .buildkite && echo "buildkite" # CircleCI test -d .circleci && echo "circleci"
dotdigraph workflow { rankdir=TB; node [shape=box]; detect [label="1. Detect CI provider"]; load [label="2. Load provider reference"]; fetch [label="3. Fetch build results"]; check [label="4. Check for failures" shape=diamond]; passed [label="Report: Build passed!"]; read [label="5. Read failing source files"]; present [label="6. Present failures + proposed fixes"]; ask [label="7. Ask: Apply fix?" shape=diamond]; apply [label="Apply the fix"]; complex [label="Complex failure?" shape=diamond]; debug [label="Use systematic-debugging skill"]; next [label="Next failure?" shape=diamond]; done [label="Done"]; detect -> load; load -> fetch; fetch -> check; check -> passed [label="passed"]; check -> read [label="failed"]; read -> present; present -> ask; ask -> apply [label="yes"]; ask -> complex [label="no"]; apply -> next; complex -> debug [label="yes"]; complex -> next [label="no"]; debug -> next; next -> read [label="yes"]; next -> done [label="no"]; }
First, check if the user provided a URL. If not, detect from project files.
Read the appropriate reference file for provider-specific commands:
Use the provider-specific commands to fetch build information and failures.
Read the relevant source file to understand context:
Show the user:
Ask how to proceed:
If the failure requires deeper investigation (e.g., unclear root cause, flaky test, environmental issue), recommend the systematic-debugging skill.
| Type | Detection | Common Fixes | |------|-----------|--------------| | Test failure | Minitest/RSpec/Jest/pytest output | Fix assertion, update expected value, fix test setup | | Lint error | Rubocop/ESLint/Biome violations | Auto-fix with linter's fix command | | TypeScript | TSC compilation errors | Add types, fix type mismatches | | Build error | Compilation failures | Fix syntax, missing dependencies |
| Mistake | Solution | |---------|----------| | Can't detect provider | Specify provider explicitly or provide CI URL | | Missing credentials | Check provider reference for required env vars/auth | | Build still running | Wait for completion or check partial results | | Rate limiting | Wait and retry |
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 6,405 | 14,247 | +122% | 1 | 1 | 0% | 965 | 1,459 | +51% | 0 | 0 | — |
case-02 | fail→fail | 4,652 | 4,863 | +5% | 1 | 1 | 0% | 189 | 1,366 | +623% | 0 | 0 | — |
case-03 | fail→fail | 7,741 | 7,645 | -1% | 1 | 1 | 0% | 1,223 | 1,471 | +20% | 0 | 0 | — |
case-04 | pass→fail | 12,673 | 6,283 | -50% | 1 | 1 | 0% | 2,529 | 2,177 | -14% | 0 | 0 | — |
case-05 | fail→pass | 11,716 | 1,671 | -86% | 1 | 1 | 0% | 1,962 | 1,353 | -31% | 0 | 0 | — |
case-06 | fail→pass | 5,961 | 1,813 | -70% | 1 | 1 | 0% | 1,010 | 1,412 | +40% | 0 | 0 | — |
case-07 | fail→fail | 13,688 | 1,397 | -90% | 1 | 1 | 0% | 2,164 | 1,351 | -38% | 0 | 0 | — |
case-08 | fail→pass | 13,924 | 3,111 | -78% | 1 | 1 | 0% | 2,090 | 1,605 | -23% | 0 | 0 | — |
case-09 | fail→pass | 2,577 | 2,940 | +14% | 1 | 1 | 0% | 356 | 1,630 | +358% | 0 | 0 | — |
case-10 | pass→pass | 8,346 | 4,758 | -43% | 1 | 1 | 0% | 1,319 | 1,893 | +44% | 0 | 0 | — |
case-11 | fail→fail | 8,485 | 3,385 | -60% | 1 | 1 | 0% | 1,499 | 1,698 | +13% | 0 | 0 | — |
case-12 | pass→pass | 11,145 | 8,510 | -24% | 1 | 1 | 0% | 1,941 | 2,319 | +19% | 0 | 0 | — |
case-13 | fail→fail | 5,200 | 3,192 | -39% | 1 | 1 | 0% | 779 | 1,690 | +117% | 0 | 0 | — |
case-14 | pass→pass | 12,986 | 8,272 | -36% | 1 | 1 | 0% | 1,746 | 2,302 | +32% | 0 | 0 | — |
case-15 | fail→fail | 9,216 | 4,781 | -48% | 1 | 1 | 0% | 1,620 | 1,912 | +18% | 0 | 0 | — |
case-16 | pass→pass | 15,116 | 6,568 | -57% | 1 | 1 | 0% | 2,250 | 2,185 | -3% | 0 | 0 | — |
case-17 | pass→pass | 12,004 | 5,847 | -51% | 1 | 1 | 0% | 2,065 | 1,992 | -4% | 0 | 0 | — |
case-18 | pass→pass | 4,341 | 2,395 | -45% | 1 | 1 | 0% | 619 | 1,531 | +147% | 0 | 0 | — |
case-19 | pass→pass | 12,955 | 6,069 | -53% | 1 | 1 | 0% | 2,227 | 2,141 | -4% | 0 | 0 | — |
case-20 | fail→fail | 11,463 | 11,266 | -2% | 1 | 1 | 0% | 2,205 | 2,651 | +20% | 0 | 0 | — |
case-21 | fail→fail | 13,194 | 11,228 | -15% | 1 | 1 | 0% | 2,498 | 3,294 | +32% | 0 | 0 | — |
case-22 | fail→fail | 32,726 | 26,129 | -20% | 1 | 1 | 0% | 2,628 | 3,346 | +27% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 19 counted toward the lift figure. The other 3 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +14 percentage points is the difference between those two pass rates over the 19 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.