mit einem Klick
fix-ci
// Fetch GitHub CI failure information, analyze root causes, reproduce locally, and propose a fix plan. Use `/fix-ci` for current branch or `/fix-ci <run-id>` for a specific run.
// Fetch GitHub CI failure information, analyze root causes, reproduce locally, and propose a fix plan. Use `/fix-ci` for current branch or `/fix-ci <run-id>` for a specific run.
| name | fix-ci |
| description | Fetch GitHub CI failure information, analyze root causes, reproduce locally, and propose a fix plan. Use `/fix-ci` for current branch or `/fix-ci <run-id>` for a specific run. |
| allowed-tools | Bash, Read, Grep, Glob, Task, AskUserQuestion, EnterPlanMode |
Automates CI troubleshooting by fetching GitHub Actions failures, analyzing logs, reproducing issues locally, and creating a fix plan for user approval.
Verify the GitHub CLI is installed and authenticated:
gh --version && gh auth status
If gh is not installed:
brew install gh"If not authenticated:
gh auth login"Determine the mode based on arguments:
/fix-ci): Fetch failures for the current branch only/fix-ci <run-id>): Fetch specific run (bypasses branch scoping)Default mode (current branch):
BRANCH=$(git branch --show-current)
gh run list --branch "$BRANCH" --status failure --limit 1 --json databaseId,name,headBranch,workflowName,createdAt
Specific run mode:
gh run view <run-id> --json databaseId,name,headBranch,workflowName,jobs,conclusion
If no failures found:
$BRANCH. CI is green!"gh run list --branch "$BRANCH" --limit 3 --json databaseId,conclusion,workflowName,createdAt
Once a failed run is identified, gather comprehensive details:
RUN_ID=<the-run-id>
# Get failed jobs with their steps
gh run view $RUN_ID --json jobs --jq '.jobs[] | select(.conclusion == "failure") | {name, conclusion, steps: [.steps[] | select(.conclusion == "failure")]}'
# Get failed step logs (critical for debugging)
gh run view $RUN_ID --log-failed 2>&1 | head -500
# Get verbose run info
gh run view $RUN_ID --verbose
Log handling:
Attempt to download any debug artifacts:
# Try common artifact names - failures are OK (not all runs have artifacts)
gh run download $RUN_ID -n "coverage" -D /tmp/ci-debug/ 2>/dev/null || true
gh run download $RUN_ID -n "test-results" -D /tmp/ci-debug/ 2>/dev/null || true
gh run download $RUN_ID -n "logs" -D /tmp/ci-debug/ 2>/dev/null || true
If artifacts downloaded, read them for additional context.
Categorize the failure based on log patterns:
| Pattern | Failure Type | Root Cause Area |
|---|---|---|
FAIL:, --- FAIL, FAILED | Test Failure | Specific test case |
ruff check, ruff format | Lint Error | Code style/formatting |
ModuleNotFoundError, ImportError | Import Error | Missing dependency |
TypeError, AttributeError | Runtime Error | Type mismatch |
SyntaxError | Syntax Error | Invalid code |
AssertionError | Assertion Failure | Test expectation mismatch |
TimeoutError, timed out | Timeout | Performance/hang |
PermissionError, EACCES | Permission Error | File/resource access |
ConnectionError, ECONNREFUSED | Network Error | External service |
Extract key information:
Determine the appropriate local command based on the CI job:
| CI Workflow/Job | Local Command |
|---|---|
test-cli | cd cli && go test ./... |
test-python (server) | cd server && uv run pytest -v |
test-python (rag) | cd rag && uv run pytest -v |
test-python (config) | cd config && uv run pytest -v |
test-python (runtime) | cd runtimes/universal && uv run pytest -v |
lint (python) | uv run ruff check . |
lint (go) | cd cli && golangci-lint run |
type-check | uv run mypy . |
build-cli | nx build cli |
build-designer | cd designer && npm run build |
For specific test failures, narrow down the command:
cd <dir> && uv run pytest -v <test_file>::<test_name>cd cli && go test -v -run <TestName> ./...Run the mapped local command to confirm the failure reproduces:
# Example for Python test
cd server && uv run pytest -v tests/test_api.py::test_health_check
Outcome A - Failure reproduces locally:
Outcome B - Failure does NOT reproduce locally:
gh run rerun $RUN_ID"Based on the failure type and logs, identify:
Use available tools to explore:
Use EnterPlanMode to create a formal fix plan. The plan should include:
# CI Fix Plan
## Problem Statement
[Summary of the CI failure from logs]
## Failure Details
- **Run ID**: <run-id>
- **Workflow**: <workflow-name>
- **Job**: <job-name>
- **Error Type**: <categorized-type>
## Root Cause Analysis
[Explanation of why the failure occurred]
## Affected Files
- `path/to/file1.py` (line X)
- `path/to/file2.py` (line Y)
## Proposed Changes
### Change 1: [Brief description]
[Specific edit to make]
### Change 2: [Brief description]
[Specific edit to make]
## Verification Steps
1. Run: `<local-test-command>`
2. Expected: All tests pass
3. Optional: Run full test suite with `<full-suite-command>`
## Notes
- [Any caveats or considerations]
Present the plan and wait for explicit user approval:
CRITICAL: Never make code changes without user approval.
<local-test-command>
IMPORTANT: Do NOT auto-commit changes. Leave committing to the user or /commit-push-pr skill.
| Scenario | Action |
|---|---|
| gh CLI not installed | Direct user to install: brew install gh |
| gh not authenticated | Direct user to: gh auth login |
| No failures found | Report CI is green, exit gracefully |
| Rate limit exceeded | Suggest waiting or using gh auth refresh |
| Run not found | Verify run ID, suggest gh run list to find valid IDs |
| Large logs (>500 lines) | Truncate, note full logs on GitHub |
| Local reproduction fails | Note as flaky/env issue, offer re-run option |
| Network errors | Suggest retry, check connection |
On finding a failure:
CI Failure Found
Run: #12345 (workflow-name)
Branch: feature-branch
Failed Job: test-python
Error Type: Test Failure
Analyzing logs...
[Summary of failure]
Reproducing locally...
[Result]
Entering plan mode to propose fix...
On success (after fix):
Fix Applied
- Modified: path/to/file.py
- Verification: Tests pass locally
Next steps:
- Review the changes
- Run `/commit-push-pr` to commit and push
- CI will re-run automatically on push
/fix-ci to fix their current work, not random failuresCLI best practices for LlamaFarm. Covers Cobra, Bubbletea, Lipgloss patterns for Go CLI development.
Electron patterns for LlamaFarm Desktop. Covers main/renderer processes, IPC, security, and packaging.
Shared Python best practices for LlamaFarm. Covers patterns, async, typing, testing, error handling, and security.
Server-specific best practices for FastAPI, Celery, and Pydantic. Extends python-skills with framework-specific patterns.
Shared TypeScript best practices for Designer and Electron subsystems.
Manage LlamaFarm worktrees for isolated parallel development. Create, start, stop, and clean up worktrees.