Agent skill

Diagnose CI Failure

by adamayoung in adamayoung/TMDb

Diagnose a failing CI workflow run (lint, markdown lint, build, or unit tests) — identify which job failed, the cause, and a concrete fix

Apache-2.0Auto-check passedTesting & QA

Install Diagnose CI Failure

skills CLI
$ npx skills add adamayoung/TMDb --skill diagnose-ci-failure -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install adamayoung/TMDb diagnose-ci-failure --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/adamayoung/TMDb.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/diagnose-ci-failure .claude/skills/diagnose-ci-failure && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
diagnose-ci-failure
GitHub stars
178
Token cost
~1.6k tokens
SKILL.md length
726 words
Files
7 (incl. references)
Skills in repo
18
Repo updated
First seen
Licence
Apache-2.0

At a glance

Diagnose a failing CI workflow run (lint, markdown lint, build, or unit tests) — identify which job failed, the cause, and a concrete fix

  • Works in 5 steps: Identify the failing job first — Lint,… → Assume the change caused it. CI gates… → Treat warnings as errors. Build steps… → …
  • Tasks that involve Failing and flaky tests
  • SKILL.md covers Overview, Agent Behaviour Contract, Locate the failing run and Quick decision tree, plus 3 more sections
  • Calls make, gh and git

What it does

Diagnose CI Failure is an agent skill from adamayoung/TMDb. Diagnose a failing CI workflow run (lint, markdown lint, build, or unit tests) — identify which job failed, the cause, and a concrete fix

Its SKILL.md is about 1.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 7 other files, including reference files (for example `references/_index.md`, `references/build.md` and `references/lint.md`).

It sits in Testing & QA, covering Failing and flaky tests, Linting and formatting and Unit testing. It works with Linux. The repository describes itself as: The Movie Database Swift Package. The licence is Apache-2.0.

When your agent uses it

  • Tasks that involve Failing and flaky tests
  • Tasks that involve Linting and formatting
  • Tasks that involve Unit testing

Example prompts

  • “/diagnose-ci-failure”

Requirements

  • Python 3

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. Identify the failing job first — Lint, Lint Markdown, Build and Test
  2. Assume the change caused it. CI gates the PR; read the diff and tie the
  3. Treat warnings as errors. Build steps use -warnings-as-errors / --Werror
  4. Reproduce locally before declaring a fix using the matching tool (/lint,
  5. Output the three sections (Summary / Cause / Fix) defined below — concise,

What it can do on your machine

Read from SKILL.md and the folder at commit a3f1311. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • make
    • gh
    • git

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use gh and git, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Diagnose CI Failure loads about 1.6k tokens when it runs, and up to ~6.6k if it reads all its reference files. Until then it costs about 39 tokens; SKILL.md has 726 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~39
When it runs · the whole SKILL.md, loaded when a task matches
~1.6k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~6.6k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from adamayoung/TMDb at commit a3f1311, republished under its Apache-2.0 licence (© adamayoung). 726 words, ~1,571 tokens.

Download SKILL.mdSave it as .claude/skills/diagnose-ci-failure/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.
name
diagnose-ci-failure
description
Diagnose a failing CI workflow run (lint, markdown lint, build, or unit tests) — identify which job failed, the cause, and a concrete fix

Diagnose a CI workflow failure

Overview

The CI workflow (.github/workflows/ci.yml) gates every PR and the merge to main. Unlike the live-API integration suite, a CI failure is almost always caused by the change under review — a lint violation, a compile warning/error, a broken unit test, or a Linux-portability gap. Start from the diff, not from "maybe it's flaky".

CI fans out into six real jobs (plus a changes paths-filter job and a ci gate job that only aggregates results): Lint, Lint Markdown, Build and Test (macOS), Build (<platform>) (an iOS/tvOS/watchOS/visionOS simulator-build matrix), Build and Test (Linux), and Test (<timezone>) (a time-zone matrix re-running the unit suites). The diagnosis differs per job, so this skill is a router: identify the failing job, then follow the matching reference file for that job's causes, fixes, and local-reproduction command.

Wrong suite? If the Integration workflow (the live-API suite from integration.yml) failed — not a CI job — use /diagnose-integration-failure instead. It leads with the opposite assumption: a scheduled/live-API failure is usually backend or data drift, not your change.

Agent Behaviour Contract

  1. Identify the failing job first — Lint, Lint Markdown, Build and Test (macOS), Build (<platform>), Build and Test (Linux), or Test (<timezone>). Don't guess the cause before you know the job.
  2. Assume the change caused it. CI gates the PR; read the diff and tie the failure to a changed file. Don't open with "transient" or "flaky".
  3. Treat warnings as errors. Build steps use -warnings-as-errors / --Werror — a deprecation or unused-binding warning is a real failure.
  4. Reproduce locally before declaring a fix using the matching tool (/lint, /build-for-testing, /test, make lint-markdown, make build-linux).
  5. Output the three sections (Summary / Cause / Fix) defined below — concise, tied to file:line.

Locate the failing run

Use the first that applies:

  • A path or run id the caller handed you.
  • The current branch's run via the GitHub MCP (owner/repo from the origin remote): mcp__github__actions_list method list_workflow_runs (resource_id: ci.yml, workflow_runs_filter: { branch: <branch> }), then mcp__github__get_job_logs (run_id: <id>, failed_only: true, return_content: true). (mcp__github__pull_request_read method get_check_runs also shows which job is red.) Headless / no MCP: gh run list --workflow CI --branch "$(git branch --show-current)" --limit 1, then gh run view <id> --log-failed.
  • CI pipes build/test output through xcsift in github-actions format, so the failing lines are GitHub ::error:: annotations carrying file:line — read those first.
Show full SKILL.md (344 more words)Show less

Quick decision tree

Once you know which job failed:

  • Lint (swiftlint --strict / swiftformat --lint / one of the six Scripts/*.py gate steps)? └─ references/lint.md — style/format violations, the Python gates, and the version-drift gotcha
  • Lint Markdown (markdownlint)? └─ references/markdown.md — README / DocC / .claude/ / knowledge/ rules
  • Build and Test — the build step failed? └─ references/build.md — compile errors and --Werror warnings
  • Build and Test — the test step failed? └─ references/unit-tests.md — failing Suite/test, fixture/model mismatch
  • Build (iOS / tvOS / watchOS / visionOS) — a simulator matrix build failed? └─ references/build.md — platform-specific API availability; it is xcodebuild, not SwiftPM, so make build green does not clear it
  • Build and Test (Linux) — fails on Linux but passes on macOS? └─ references/linux.md — Apple-only API gating, Foundation differences
  • Test (America/Los_Angeles or Pacific/Auckland) — the TZ matrix failed? └─ references/unit-tests.md — a date/calendar assertion depending on the runner's zone; reproduce with TZ=<zone> make test

Triage-first playbook

Symptom → next move:

  • error: … is unavailable / cannot find … in scope, Linux job only → references/linux.md
  • warning: … treated as error → references/build.md
  • error: from swiftc on macOS build → references/build.md
  • A Suite/test recorded a failure / #expect failed → references/unit-tests.md
  • Test fails to decode a fixture (keyNotFound, valueNotFound) → references/unit-tests.md
  • SwiftLint rule violation (error: … (rule_id)) → references/lint.md
  • superfluous_disable_command on unchanged code → references/lint.md (suspect version drift)
  • SwiftFormat would reformat a file (--lint non-zero) → references/lint.md
  • markdownlint MD0xx violation → references/markdown.md

Output format

Produce exactly these three sections (keep it under ~150 words; if the caller asked for a file, write the markdown there and nothing else, otherwise reply directly):

Summary: which job and step failed, and the specific error (rule / file:line / failing Suite/test).

Cause: the root cause, tied to a changed file where possible.

Fix: the concrete next step from the relevant reference file.

Reference files

FileFailing jobCovers
references/_index.md—Navigation index by symptom
references/lint.mdLintSwiftLint --strict, SwiftFormat --lint, the six Scripts/*.py gates, pinned versions, drift
references/markdown.mdLint Markdownmarkdownlint on README, CLAUDE.md, DocC, .claude/, knowledge/, .github/*.md
references/build.mdBuild and Test (build step); Build (<platform>)compile errors, --Werror warnings, release build, simulator-matrix availability
references/unit-tests.mdBuild and Test (test step); Test (<timezone>)Swift Testing failures, JSON fixture/model mismatch, TZ-matrix date dependencies
references/linux.mdBuild and Test (Linux)Apple-only API gating, Foundation portability

© adamayoung, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 6 other files (references) in .claude/skills/diagnose-ci-failure of adamayoung/TMDb.

  • SKILL.md
  • references/_index.md
  • references/build.md
  • references/lint.md
  • references/linux.md
  • references/markdown.md
  • references/unit-tests.md

Open the folder on GitHubat commit a3f1311

Compare with similar skills

Diagnose CI Failure next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Diagnose CI Failure compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Diagnose CI Failure this skilladamayoung/TMDb178—~1.6kAutomated safety check: PassApache-2.0
Testing ValidationAbdelStark/worldforge108—~871Automated safety check: PassMIT
Debug Os Failure On GitHubstrands-agents/box315—~1.3kAutomated safety check: NotesApache-2.0
Debug CIweb-infra-dev/rslint461—~2.8kAutomated safety check: PassMIT
Apple Container Test RunnerRustPython/RustPython22k—~467Automated safety check: PassMIT
Debug Playwright Prowquay/quay2.8k—~2.2kAutomated safety check: PassApache-2.0

Similar skills

  • Testing Validation

    AbdelStark/worldforge

    A skill your agent uses when selecting, running, or fixing WorldForge validation: pytest, coverage, ruff, generated provider docs, MkDocs strict build, package contract, CI failures, and release…

    108 GitHub stars~871 tokensUpdated 22 days ago
    Testing & QAAuto-check passed
  • Debug Os Failure On GitHub

    strands-agents/box

    Debug a CI failure on an OS you are not on (you are on Linux, it fails on macos-latest, or the reverse) without opening a pull request per attempt.

    315 GitHub stars~1.3k tokensUpdated today
    DevelopmentAuto-check: notes
  • Debug CI

    web-infra-dev/rslint

    Reproduce Linux CI failures locally using Docker when the same tests pass on the host, especially Go platform differences and VS Code extension tests requiring xvfb.

    461 GitHub stars~2.8k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Apple Container Test Runner

    RustPython/RustPython

    Runs RustPython tests inside a Linux container built with Apple's container CLI, so macOS users can compare Linux results with their local ones.

    22k GitHub stars~467 tokensUpdated today
    Testing & QAAuto-check passed
  • Deep-dive diagnosis of a Playwright test failure already isolated to one Quay Prow/OpenShift CI run: downloads its GCS artifacts (results.json, JUnit, build/pod logs, Jaeger traces), classifies real…

    2.8k GitHub stars~2.2k tokensUpdated yesterday
    Testing & QAAuto-check passed
  • CI Fix

    FastLED/FastLED

    Scan all CI builds and tests, find failures, fetch error logs, and fix the code.

    7.5k GitHub stars~897 tokensUpdated today
    Testing & QAAuto-check passed

More from adamayoung/TMDb

All 18 skills in this repo
  • Writes and maintains DocC /// comments for the public API of the TMDb Swift package, following the project's summary patterns and comment structure.

    178 GitHub stars~2.6k tokensUpdated 7 days ago
    Auto-check passed
  • Diagnoses a failing scheduled TMDb Integration run, re-runs transient failures, and fixes real API drift on its own branch with a PR, merging it only when told to.

    178 GitHub stars~2.7k tokensUpdated 7 days ago
    Auto-check passed
  • Drives an approved plan to completion test-first, deriving a Canon TDD test list, showing it before any code and stopping only when every item is written, passing and green.

    178 GitHub stars~4.5k tokensUpdated 7 days ago
    Auto-check passed
  • TMDb Backlog Triager

    adamayoung/TMDb

    Grooms the Backlog column of a GitHub project board by re-verifying each issue against current main, closing dead ones, promoting actionable ones to Ready and naming the decision the rest need.

    178 GitHub stars~5k tokensUpdated 7 days ago
    Auto-check passed
  • Canon TDD Workflow

    adamayoung/TMDb

    Has your agent build features and fix bugs in Canon TDD order: write a test list, then one failing test, make it pass, refactor, and repeat until the list is empty.

    178 GitHub stars~1.3k tokensUpdated 7 days ago
    Auto-check passed
  • Capture Knowledge

    adamayoung/TMDb

    Records non-obvious lessons from a finished task, such as gotchas, API quirks and design decisions, into a project's knowledge folder before a pull request opens.

    178 GitHub stars~2.3k tokensUpdated 7 days ago
    Auto-check passed

Works with

Categories

Questions about Diagnose CI Failure

What does Diagnose CI Failure do?

Diagnose a failing CI workflow run (lint, markdown lint, build, or unit tests) — identify which job failed, the cause, and a concrete fix. Diagnose CI Failure is an agent skill from adamayoung/TMDb.

When should I use Diagnose CI Failure?

Diagnose CI Failure fits situations like: tasks that involve Failing and flaky tests; tasks that involve Linting and formatting; tasks that involve Unit testing.

How do I install Diagnose CI Failure in Claude Code?

Run `npx skills add adamayoung/TMDb --skill diagnose-ci-failure -a claude-code`. Or copy the skill folder (.claude/skills/diagnose-ci-failure in adamayoung/TMDb) into .claude/skills/diagnose-ci-failure in your project. Claude Code loads it when a task matches its description.

How do I install Diagnose CI Failure in Codex?

Run `npx skills add adamayoung/TMDb --skill diagnose-ci-failure -a codex`. Or copy the skill folder (.claude/skills/diagnose-ci-failure in adamayoung/TMDb) into .agents/skills/diagnose-ci-failure in your project. Codex loads it when a task matches its description.

Can I use Diagnose CI Failure in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add adamayoung/TMDb --skill diagnose-ci-failure -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/diagnose-ci-failure, .gemini/skills/diagnose-ci-failure, .github/skills/diagnose-ci-failure and .opencode/skills/diagnose-ci-failure in your project.

What does Diagnose CI Failure need to run?

Going by SKILL.md and its folder, Diagnose CI Failure needs the command-line tools its instructions call (make, gh and git). Our summary lists: Python 3.

Does Diagnose CI Failure access the network?

SKILL.md contains no URLs. Its commands use gh and git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Diagnose CI Failure safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Diagnose CI Failure use?

Diagnose CI Failure is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Diagnose CI Failure use?

About 1.6k tokens (SKILL.md is roughly 6.3k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 5.1k tokens, read only when the agent opens those files.

What are the alternatives to Diagnose CI Failure?

Skills that share tags, products or a category with Diagnose CI Failure: Testing Validation (AbdelStark/worldforge, 108 stars), Debug Os Failure On GitHub (strands-agents/box, 315 stars), Debug CI (web-infra-dev/rslint, 461 stars) and Apple Container Test Runner (RustPython/RustPython, 22k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Diagnose CI Failure?

adamayoung (a GitHub user) maintains it in adamayoung/TMDb, which has 178 GitHub stars. The repository holds 18 skills in this directory. The repository was last updated on October 3, 2026.

Source: adamayoung/TMDb on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.