
inspecting-codefresh-failures
by ooloth
My configurations for Claude Code, macOS, Zsh, Git, Node, Neovim, Tmux, Ghostty, Lazygit, Yazi, Powerlevel10k and VS Code, plus a script to apply them to a new Mac with one command.
SKILL.md
name: inspecting-codefresh-failures description: Instruction guide for analyzing Codefresh CI failures. When invoked, IMMEDIATELY follow the step-by-step instructions to extract build IDs, fetch logs, and create a formatted failure report. Use when reviewing recursionpharma PRs with failing CI. allowed-tools: [Bash, Read]
Inspecting Codefresh Failures
⚡ THIS IS AN INSTRUCTION GUIDE - EXECUTE IMMEDIATELY
After invoking this skill, DO NOT WAIT - immediately execute the following steps using the PR data you already have:
QUICK START - Execute Now:
STEP 1: Extract build ID from the failing check
- Look for
"state": "FAILURE"or"conclusion": "FAILURE"in statusCheckRollup - Find the Codefresh URL in
targetUrlordetailsUrl - Extract the build ID (24-char hex) from
https://g.codefresh.io/build/{build-id}
STEP 2: Fetch build metadata
codefresh get builds <build-id> -o json
STEP 3: Search logs for errors
codefresh logs <build-id> | grep -E -B 10 -A 20 -i "error|fail|found.*error"
STEP 4: Format your findings using the "Expected Output Format" template below
STEP 5: Include the formatted report in your PR review under "## CI Failure Analysis"
Detailed Instructions
This skill provides step-by-step guidance for analyzing Codefresh CI failures in recursionpharma organization repositories.
Prerequisites
Required:
codefreshCLI must be installed (typically via Homebrew:brew install codefresh)- User must be authenticated with Codefresh (check with
codefresh auth current-context)
If prerequisites are missing:
- Inform the user that the Codefresh CLI is not available
- Suggest they install it:
brew install codefresh - Provide alternative: manually check the Codefresh build URL in the browser
When to Use This Skill
Use this skill when:
- You see a failing CI check in a recursionpharma PR
- User mentions CI failures in recursionpharma repos
- Debugging "passes locally but fails in CI" issues
- Investigating build failures from Codefresh
What This Skill Does
-
Accepts input:
- Build ID directly (e.g.,
67c7469b3275b6f1b9f96f69) - PR context with
statusCheckRollupcontaining Codefresh URL - Repository and PR number (will fetch status checks)
- Build ID directly (e.g.,
-
Analyzes the failure:
- Fetches build metadata via
codefresh get builds <build-id> -o json - Retrieves full logs via
codefresh logs <build-id> - Searches for error patterns in logs
- Identifies failed step and specific error messages
- Fetches build metadata via
-
Returns structured report with:
- Build metadata (pipeline, duration, status, branch)
- Failed step name
- Specific error messages with file:line references
- Root cause analysis
- Impact assessment (critical vs non-blocking)
- Whether errors are from PR changes or pre-existing
Usage Examples
Example 1: From Build ID
# If you already have the build ID
Build ID: 67c7469b3275b6f1b9f96f69
Example 2: From PR Status Check Data
{
"statusCheckRollup": [
{
"__typename": "StatusContext",
"context": "python/library",
"state": "FAILURE",
"targetUrl": "https://g.codefresh.io/build/67c7469b3275b6f1b9f96f69"
}
]
}
Example 3: From Repository and PR Number
# Will fetch status checks and extract build ID
Repository: recursionpharma/phenomics-potency-prediction
PR Number: 2
How to Extract Build ID
From PR JSON data (gh pr view --json statusCheckRollup):
-
Look for failing checks:
"state": "FAILURE"(StatusContext)"conclusion": "FAILURE"(CheckRun)
-
Find Codefresh URLs in:
targetUrlfield (StatusContext)detailsUrlfield (CheckRun)
-
Extract build ID from URL:
- Format:
https://g.codefresh.io/build/{build-id} - Example:
67c7469b3275b6f1b9f96f69
- Format:
Commands Used
# Get build metadata
codefresh get builds <build-id> -o json
# Get full logs
codefresh logs <build-id>
# Search for errors (most efficient - use multiple patterns)
codefresh logs <build-id> | grep -E -B 10 -A 20 -i "error\|fail\|found.*error"
# Common error patterns to look for:
# - "Found N errors" (linting/type checking)
# - "FAILED" or "FAILURE" (test results)
# - "Error:" or "ERROR:" (build errors)
# - "exit code" (non-zero exit codes)
Error Handling
If the codefresh command is not available:
# Check if codefresh is installed
which codefresh || echo "Codefresh CLI not installed"
# If not installed, inform user and provide fallback:
# "The codefresh CLI is not installed. You can:
# 1. Install it: brew install codefresh
# 2. View the build in browser: [build URL from status check]"
Expected Output Format
Returns markdown-formatted analysis ready to include in PR reviews or bug reports:
## CI Failure Analysis
**Build**: python/library (failed after 5m 2s)
**Failed step**: Check Code with Ruff
**Branch**: legion-2025-03-04-f8ef390a
**Commit**: abc1234...
### Errors Found (10 total)
1. **`phenomics_potency_prediction/utils.py:331,333,365,367,369`**
- Undefined name `random_seed` (5 occurrences)
- **Impact**: Likely runtime errors - CRITICAL to fix
- **Type**: F821 (undefined name)
2. **`phenomics_potency_prediction/gene-cossim-curvefit/parallel-curvefit.py:233`**
- Line too long (3373 characters > 120 limit)
- **Impact**: Code quality issue - non-blocking
- **Type**: E501 (line too long)
3. **`parallel-curvefit.py:139,275`**
- Bare `except` clauses (2 occurrences)
- **Impact**: Poor error handling - should specify exception types
- **Type**: E722 (bare except)
### Root Cause
Pre-existing code quality issues exposed by recent infrastructure changes (such as updates to dependency sources). The changes only modify dependency sources in files like `Dockerfile.test` and `tox.ini`, not application code.
### Recommendation
Request changes - fix the 5 undefined `random_seed` errors before merging (critical runtime bugs). Other linting issues can be addressed in a follow-up PR.
Notes
- Only works for recursionpharma org repos - Codefresh is their CI system
- Build IDs are unique - Each build has a unique 24-character hex ID
- Logs can be large - Use grep patterns to find relevant errors quickly (logs can exceed 30k lines)
- Context matters - Always distinguish PR-introduced errors from pre-existing issues
- Tested and verified - Commands tested against build
67c7469b3275b6f1b9f96f69(recursionpharma/phenomics-potency-prediction#2)
Common error patterns:
- Linting errors (Ruff, Flake8, Black) - Look for "Found N errors"
- Type errors (mypy, pyright) - Look for "error:" in output
- Test failures (pytest, unittest) - Look for "FAILED" or "FAILURE"
- Build failures (missing dependencies, import errors) - Look for "Error:" or "exit code"
- Security scans (dependency vulnerabilities) - Check specific security step logs
🔴 IMPORTANT REMINDERS
You are reading this skill because you are reviewing a PR with failing CI.
RIGHT NOW, you should:
- ✅ Have already fetched the PR data with
gh pr view <number> --json statusCheckRollup - ✅ See failing checks in that data with
"state": "FAILURE"or"conclusion": "FAILURE" - ⚠️ NEXT: Extract the build ID from the Codefresh URL and run the commands above
- ⚠️ DO NOT: Wait, ask questions, or pause - execute the steps immediately
- ⚠️ GOAL: Create a "## CI Failure Analysis" section in your PR review with specific errors
If you find yourself waiting or unsure what to do next, re-read the QUICK START section at the top.
Score
Total Score
Based on repository quality metrics
SKILL.mdファイルが含まれている
ライセンスが設定されている
100文字以上の説明がある
GitHub Stars 100以上
1ヶ月以内に更新
10回以上フォークされている
オープンIssueが50未満
プログラミング言語が設定されている
1つ以上のタグが設定されている
Reviews
Reviews coming soon

