cli-skills
CLI best practices for LlamaFarm. Covers Cobra, Bubbletea, Lipgloss patterns for Go CLI development.
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.
$ npx -y skills add llama-farm/llamafarm --skill fix-ci --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/fix-ciContext preview
The summary Claude sees to decide when to auto-load this skill.
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:**
**If not authenticated:**
Determine the mode based on arguments:
**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:**
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:
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:**
Based on the failure type and logs, identify:
1. **What failed**: Specific test, lint rule, or build step 2. **Why it failed**: The actual error condition 3. **Where to fix**: File(s) and line(s) that need changes 4. **How to fix**: Proposed changes
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> - **J
Enterprise AI capabilities on your own hardware. No cloud required. LlamaFarm is an open-source AI platform that runs entirely on your hardware.
Repo: llama-farm/llamafarm
CLI best practices for LlamaFarm. Covers Cobra, Bubbletea, Lipgloss patterns for Go CLI development.
Comprehensive code review for diffs. Analyzes changed code for security vulnerabilities, anti-patterns, and quality issues. Auto-detects domain…
Commit changes, push to GitHub, and open a PR. Includes quality checks (security, patterns, simplification). Use --quick to skip checks.
Best practices for the Common utilities package in LlamaFarm. Covers HuggingFace Hub integration, GGUF model management, and shared utilities.
Configuration module patterns for LlamaFarm. Covers Pydantic v2 models, JSONSchema generation, YAML processing, and validation.
Designer subsystem patterns for LlamaFarm. Covers React 18, TanStack Query, TailwindCSS, and Radix UI.