Debugging CI Failures
PostHog/posthog-foss
Debugs failing GitHub Actions CI runs for PostHog PRs, commits, and branches, and answers broad CI-health questions ("is CI red?", "is master green today?", "what's broken right now?").
Diagnoses and fixes failing GitHub Actions runs by identifying the failure, fetching only the relevant logs, finding the root cause and reproducing it locally.
$ npx skills add ruby-git/ruby-git --skill ci-cd-troubleshooting -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install ruby-git/ruby-git ci-cd-troubleshooting --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/ruby-git/ruby-git.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.github/skills/ci-cd-troubleshooting .claude/skills/ci-cd-troubleshooting && rm -rf skills-srcUse ~/.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/
Install the "ci-cd-troubleshooting" agent skill from https://github.com/ruby-git/ruby-git/tree/main/.github/skills/ci-cd-troubleshooting into .claude/skills/ci-cd-troubleshooting/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ci-cd-troubleshooting", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/ruby-git/ruby-git/tree/main/.github/skills/ci-cd-troubleshootingType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add ruby-git/ruby-git --skill ci-cd-troubleshooting -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install ruby-git/ruby-git ci-cd-troubleshooting --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ruby-git/ruby-git.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.github/skills/ci-cd-troubleshooting .agents/skills/ci-cd-troubleshooting && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "ci-cd-troubleshooting" agent skill from https://github.com/ruby-git/ruby-git/tree/main/.github/skills/ci-cd-troubleshooting into .agents/skills/ci-cd-troubleshooting/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ci-cd-troubleshooting", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ruby-git/ruby-git --skill ci-cd-troubleshooting -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install ruby-git/ruby-git ci-cd-troubleshooting --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ruby-git/ruby-git.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.github/skills/ci-cd-troubleshooting .cursor/skills/ci-cd-troubleshooting && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "ci-cd-troubleshooting" agent skill from https://github.com/ruby-git/ruby-git/tree/main/.github/skills/ci-cd-troubleshooting into .cursor/skills/ci-cd-troubleshooting/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ci-cd-troubleshooting", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/ruby-git/ruby-git.git --path .github/skills/ci-cd-troubleshooting--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add ruby-git/ruby-git --skill ci-cd-troubleshooting -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install ruby-git/ruby-git ci-cd-troubleshooting --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ruby-git/ruby-git.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.github/skills/ci-cd-troubleshooting .gemini/skills/ci-cd-troubleshooting && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "ci-cd-troubleshooting" agent skill from https://github.com/ruby-git/ruby-git/tree/main/.github/skills/ci-cd-troubleshooting into .gemini/skills/ci-cd-troubleshooting/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ci-cd-troubleshooting", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install ruby-git/ruby-git ci-cd-troubleshootingInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add ruby-git/ruby-git --skill ci-cd-troubleshooting -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/ruby-git/ruby-git.git skills-src && mkdir -p .github/skills && cp -r skills-src/.github/skills/ci-cd-troubleshooting .github/skills/ci-cd-troubleshooting && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "ci-cd-troubleshooting" agent skill from https://github.com/ruby-git/ruby-git/tree/main/.github/skills/ci-cd-troubleshooting into .github/skills/ci-cd-troubleshooting/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ci-cd-troubleshooting", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ruby-git/ruby-git --skill ci-cd-troubleshooting -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install ruby-git/ruby-git ci-cd-troubleshooting --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ruby-git/ruby-git.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.github/skills/ci-cd-troubleshooting .opencode/skills/ci-cd-troubleshooting && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "ci-cd-troubleshooting" agent skill from https://github.com/ruby-git/ruby-git/tree/main/.github/skills/ci-cd-troubleshooting into .opencode/skills/ci-cd-troubleshooting/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ci-cd-troubleshooting", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
ci-cd-troubleshootingDiagnoses and fixes failing GitHub Actions runs by identifying the failure, fetching only the relevant logs, finding the root cause and reproducing it locally.
Given a failing PR, branch or CI run, the agent follows a six-step workflow. It first gets CI status with `gh pr checks` or `gh run list` and sorts the failure into test, linter, build, timeout or platform-specific. It notes the exact failing job and step along with the Ruby version and OS involved, then fetches logs with care, because CI logs can run past 100K lines and exceed token limits.
The remaining steps diagnose the root cause, reproduce it locally when that applies, and report either a diagnosis for a 'why is CI failing' question or an implemented fix when you ask for one, followed by verification of the fix. The skill links to related skills for test debugging, a TDD development workflow and PR readiness review, and its examples come from a Ruby project with Rubocop and YARD checks. It is meant to be attached to Copilot Chat along with a PR number, branch or run.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit f3bf20f. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
bundleghFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use gh, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
CI/CD Failure Troubleshooting loads about 1.9k tokens when it runs. Until then it costs about 44 tokens; SKILL.md has 850 words of instructions outside code blocks.
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.
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.
The full file from ruby-git/ruby-git at commit f3bf20f, republished under its MIT licence (© ruby-git). 850 words, ~1,917 tokens.
.claude/skills/ci-cd-troubleshooting/SKILL.md (or your agent's skills folder).When asked to diagnose or fix CI/CD failures (e.g., "Why is CI failing on PR #999?", "Fix the failing build"), follow this workflow to identify the root cause and optionally implement fixes.
Attach this file to your Copilot Chat context, then invoke it with a failing PR number, branch, or CI run context. Use Option A for diagnosis-only requests and Option B when the user explicitly asks for a fix.
Get CI Status:
gh pr checks #999gh run list --branch <branch-name> --limit 5Categorize the Failure Type:
Identify Specific Failing Steps:
CRITICAL: CI logs can be massive (100K+ lines) and exceed token limits.
Get the Run ID:
gh run list --branch <branch> --limit 1 --json databaseId --jq '.[0].databaseId'Fetch Failed Job Logs Only:
gh run view <run-id> --log-failedThis limits output to only failed jobs, making it manageable.
Extract Key Error Information:
For test failures: Look for stack traces, assertion errors, specific test names
For linter failures: Extract file names, line numbers, and violation types
For build failures: Find dependency errors or missing packages
Use grep to filter logs if still too large:
gh run view <run-id> --log-failed | grep -A 10 -B 5 "Error\|FAILED\|Failure"Avoid Full Log Downloads:
--log without --log-failed unless specifically requestedBased on the failure type, investigate:
For Test Failures:
For Linter Failures:
bundle exec rubocop and bundle exec rake yardFor Build Failures:
Gemfile and git.gemspecFor Timeout Failures:
For PR Failures:
Fetch the PR branch:
gh pr checkout #999Run the failing tests locally:
bundle exec rspec <path/to/spec.rb>Run linters:
bundle exec rubocop
bundle exec rake yardFor Branch Failures:
Checkout the branch.
Run full CI workflow:
bundle exec rake defaultDetermine the appropriate action based on the user's request:
Present findings to the user:
# CI Failure Diagnosis: <Branch/PR>
**Status:** <X of Y jobs failed>
## Failed Jobs
1. **<Job Name>** (<Ruby version>, <OS>)
- **Step:** <failing step name>
- **Failure Type:** <test/linter/build/timeout>
## Root Cause
<Explanation of what's causing the failure>
## Error Details
```
<Relevant error messages and stack traces>
```
## Recommendations
- <Specific fix suggestion 1>
- <Specific fix suggestion 2>
**Would you like me to implement a fix, or do you need more information?**STOP here unless the user asks you to proceed with fixes.
Proceed based on failure type:
style: fix rubocop violations in lib/git/base.rb)For PR Failures on Someone Else's PR:
After implementing fixes:
Run Affected Tests Locally:
bundle exec rspec <path/to/spec.rb>Run Full CI Suite:
bundle exec rake defaultPush and Monitor:
Push the fixes
Monitor CI to confirm the fix worked:
gh run watchConfirm Resolution:
Fix implemented and pushed. Monitoring CI run...
CI Status: <link to run>Platform-Specific Failures:
/ vs. \)Flaky Tests:
Permission Issues:
Token Limit Management:
--log-failed to limit outputgrep to extract errors© ruby-git, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .github/skills/ci-cd-troubleshooting of ruby-git/ruby-git.
Open the folder on GitHubat commit f3bf20f
CI/CD Failure Troubleshooting 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| CI/CD Failure Troubleshooting this skillruby-git/ruby-git | 1.8k | — | ~1.9k | Automated safety check: Pass | MIT | |
| Debugging CI FailuresPostHog/posthog-foss | 721 | — | ~5.7k | Automated safety check: Pass | MIT | |
| Authoring CI WorkflowsPostHog/posthog-foss | 721 | — | ~11k | Automated safety check: Pass | MIT | |
| GitHub Actions Failure Analysisykdojo/claude-code-tips | 10k | — | ~639 | Automated safety check: Pass | Custom licence | |
| ONNX Runtime CI Managementmicrosoft/onnxruntime | 22k | — | ~4.1k | Automated safety check: Pass | MIT | |
| CI Watchdoglatitude-dev/latitude-llm | 4.7k | — | ~1.6k | Automated safety check: Pass | MIT |
PostHog/posthog-foss
Debugs failing GitHub Actions CI runs for PostHog PRs, commits, and branches, and answers broad CI-health questions ("is CI red?", "is master green today?", "what's broken right now?").
PostHog/posthog-foss
A skill your agent uses when adding or editing a GitHub Actions workflow, composite action, or reusable workflow under .github/ — new CI jobs, triggers, matrices, checkout/clone tuning, action…
ykdojo/claude-code-tips
Investigates a failed GitHub Actions run from its URL: pinpoints the real failure, checks the job's history for flakiness, and finds the breaking commit and any existing fix PR.
microsoft/onnxruntime
Triggers, re-runs and unblocks the CI checks on an ONNX Runtime pull request, after diagnosing whether a failure is transient or needs a code change.
latitude-dev/latitude-llm
Continuously monitor GitHub PR CI checks and automatically fix failures until all checks pass.
swig/swig
Reproduce a GitHub Actions Linux CI failure locally when it does not happen on your machine: a podman/docker image that mirrors the ubuntu-22.04 runner by reusing the real Tools/CI-linux-.sh install…
ruby-git/ruby-git
Addresses unresolved pull request review threads and suppressed (low-confidence) Copilot review comments on the current branch, folds each fix into the…
ruby-git/ruby-git
Assesses what an API change would break before it is made, finds every usage, documents the impact and plans a deprecation or migration path.
ruby-git/ruby-git
Scaffolds and reviews `Git::Commands::*` classes in the ruby-git library, with unit tests, integration tests and YARD docs, using the Base command architecture.
ruby-git/ruby-git
Workflow for updating gem dependencies and fixing CVEs in the ruby-git project: assess with bundle outdated and audit, edit the gemspec, test, then commit with conventional messages.
ruby-git/ruby-git
Migrates a direct command call in Ruby Git's Git::Lib to a Git::Commands class, as part of a Strangler Fig redesign, with a plan, legacy tests and a pull request.
ruby-git/ruby-git
Scaffolds and reviews facade methods on Git::Repository in ruby-git, with unit tests, integration tests and YARD documentation.
Works with
Categories
Diagnoses and fixes failing GitHub Actions runs by identifying the failure, fetching only the relevant logs, finding the root cause and reproducing it locally. Given a failing PR, branch or CI run, the agent follows a six-step workflow. It first gets CI status with `gh pr checks` or `gh run list` and sorts the failure into test, linter, build, timeout or platform-specific.
CI/CD Failure Troubleshooting fits situations like: CI is failing on a pull request and you need the cause; tests pass locally but fail in GitHub Actions; A build is broken by a dependency, timeout or platform-specific job failure.
Run `npx skills add ruby-git/ruby-git --skill ci-cd-troubleshooting -a claude-code`. Or copy the skill folder (.github/skills/ci-cd-troubleshooting in ruby-git/ruby-git) into .claude/skills/ci-cd-troubleshooting in your project. Claude Code loads it when a task matches its description.
Run `npx skills add ruby-git/ruby-git --skill ci-cd-troubleshooting -a codex`. Or copy the skill folder (.github/skills/ci-cd-troubleshooting in ruby-git/ruby-git) into .agents/skills/ci-cd-troubleshooting in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ruby-git/ruby-git --skill ci-cd-troubleshooting -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ci-cd-troubleshooting, .gemini/skills/ci-cd-troubleshooting, .github/skills/ci-cd-troubleshooting and .opencode/skills/ci-cd-troubleshooting in your project.
Going by SKILL.md and its folder, CI/CD Failure Troubleshooting needs the command-line tools its instructions call (bundle and gh). Our summary lists: The GitHub CLI (`gh`) with access to the repository's runs.
SKILL.md contains no URLs. Its commands use gh, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
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.
CI/CD Failure Troubleshooting is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.9k tokens (SKILL.md is roughly 7.7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with CI/CD Failure Troubleshooting: Debugging CI Failures (PostHog/posthog-foss, 721 stars), Authoring CI Workflows (PostHog/posthog-foss, 721 stars), GitHub Actions Failure Analysis (ykdojo/claude-code-tips, 10k stars) and ONNX Runtime CI Management (microsoft/onnxruntime, 22k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
ruby-git (a GitHub organization) maintains it in ruby-git/ruby-git, which has 1,799 GitHub stars. The repository holds 30 skills in this directory. The repository was last updated on October 2, 2026.
Source: ruby-git/ruby-git on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.