Sovereign-Labs / debug-ci
Install for your project team
Run this command in your project directory to install the skill for your entire team:
mkdir -p .claude/skills/debug-ci && curl -L -o skill.zip "https://fastmcp.me/Skills/Download/4305" && unzip -o skill.zip -d .claude/skills/debug-ci && rm skill.zip
Project Skills
This skill will be saved in .claude/skills/debug-ci/ and checked into git. All team members will have access to it automatically.
Important: Please verify the skill by reviewing its instructions before using it.
Debug failed CI tests by fetching workflow logs from GitHub Actions and analyzing failures. Use when the user mentions CI failures, test failures, or wants to understand why their PR's CI is failing.
0 views
0 installs
Skill Content
---
name: debug-ci
description: Debug failed CI tests by fetching workflow logs from GitHub Actions and analyzing failures. Use when the user mentions CI failures, test failures, or wants to understand why their PR's CI is failing.
---
# Debug CI
Debug failed CI tests by fetching workflow logs and analyzing failures.
## Prerequisites
- `gh` CLI installed and authenticated (`gh auth login`)
## Instructions
### Step 1: Identify Current PR
Get PR info for current branch:
```bash
gh pr view --json number,title --jq '"\(.number) \(.title)"' 2>/dev/null || echo "no-pr"
```
If no PR exists, use branch name for the log directory.
### Step 2: Get Latest Workflow Run
Get latest "Rust" workflow run for current branch:
```bash
BRANCH=$(git branch --show-current)
gh run list --workflow=Rust --branch=$BRANCH --limit=1 --json databaseId,conclusion,headSha,createdAt
```
### Step 3: Get Job Information
List all jobs from the run:
```bash
gh run view <run-id> --json jobs --jq '.jobs[] | {id: .databaseId, name: .name, conclusion: .conclusion}'
```
### Step 4: Download Logs
Create directory and download all job logs, stripping ANSI color codes:
```bash
mkdir -p ci-logs/pr-<PR_NUMBER>/
# or: mkdir -p ci-logs/branch-<BRANCH_NAME>/
gh run view --job <job-id> --log | perl -pe 's/\e\[[0-9;]*m//g' > ci-logs/pr-<PR_NUMBER>/<job_name>_<job_id>.log
```
Sanitize job names for filenames (replace spaces/special chars with underscores).
### Step 5: Analyze Failures
1. Read downloaded log files
2. Search for failure patterns: `FAILED`, `error[E`, `panicked at`, `assertion failed`
3. Extract test names and error messages
4. Read PR diff (`gh pr diff`) to correlate failures with changes
5. Categorize failures:
- **Real failure**: Error in code touched by PR
- **Flaky test**: Known flaky or unrelated to changes
- **Infrastructure**: Network/timeout issues
### Step 6: Report
Provide summary:
- PR number and title
- Run status and commit SHA
- List of downloaded log file paths
- Categorized failures with file:line references
- Recommendations for next steps
## Notes
- The `ci-logs/` directory should be in `.gitignore`
- Focus on relevant log sections; files can be large