fix-ci
Skill1 starsChanged 42 days agoMITView on GitHub
Diagnose and fix a failing Orbit CI run (type check, lint, Vitest with coverage, build, Pest with coverage) by reading the real logs, reproducing the failing job locally in Docker, and fixing the root cause. Use for /fix-ci and whenever the user says CI, a check, or a GitHub Actions job is red.
39 other projects use a version of this.
Adopted by
Most recently taken up by
- Yeachan-Heo/oh-my-claude-sisyphustheir own version, first seen Nov 8, 2026
- Yeachan-Heo/oh-my-claudecodetheir own version, first seen Nov 8, 2026
- salvo8519/fairmarktheir own version, first seen Nov 8, 2026
- blamechris/chroxytheir own version, first seen Nov 8, 2026
- ArchitektApx/cursor-skills-for-claudetheir own version, first seen Nov 1, 2026
- therapys/dotagentstheir own version, first seen Nov 1, 2026
Used with
Projects with it also use get-pr-comments, merge and 5 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
jaydubya818Skillget-pr-comments
Use when pull-request feedback needs to be fetched and summarized for action.
Also in 3 projects that use this
MicrosoftSkillmerge
Merge changes from the topic branch to the merge base branch. Use when the user wants to merge their session's work back to the base branch.
Also in 3 projects that use this
SentrySkillsecurity-review
Finds exploitable application security vulnerabilities in code changes. Use for Warden security scans, appsec review, OWASP-style checks, authentication or authorization bugs, injection, XSS, SSRF, path traversal, secrets, unsafe crypto, webhook verification, open redirects, or sensitive data exposure.
Also in 4 projects that use this
NVIDIASkilltesting
Run Python and Rust tests for physicsnemo-curator using uv + pytest with coverage reporting via pytest-cov, and cargo-nextest for Rust tests. Includes benchmark workflows with pytest-benchmark and criterion.
Also in 3 projects that use this
AWSSkillship
Finalize dev work on an issue branch — update docs, push, and open a PR.
Also in 3 projects that use this
GoogleSkilltdd
Test-driven development. Use when the user wants to build features or fix bugs test-first, mentions "red-green-refactor", or wants integration tests.
Also in 4 projects that use this
Other versions39 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 39
- microsoft/vscode★ 195ksame name
- Yeachan-Heo/oh-my-claude-sisyphus★ 41ksame name
- Yeachan-Heo/oh-my-claudecode★ 41ksame name
- ccusage/ccusage★ 19ksame name
- ryoppippi/ccusage★ 19ksame name
- questdb/questdb★ 18ksame name
- fleetdm/fleet★ 7.2ksame name
- open-telemetry/opentelemetry-java-instrumentation★ 2.7ksame name
- MCPJam/inspector★ 2.3ksame name
- gronxb/hot-updater★ 1.8ksame name
29 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository10 other files it gives its agents.
- cleanupSkill
- commitSkill
- create-prSkill
- deps-updateSkill
- document-featureSkill
- extend-orbitSkill
- fix-reviewSkill
- frontend-polishSkill
- responsive-checkSkill
- reviewSkill
The file
We split this skill into the rules it gives an agent
11 rules. 0 are common, 4 are distinctive, and 7 are very specific to this project.
0
Common
Most of the 37 edited versions we read keep these.
4
Distinctive
This author's own choices. Worth a look.
7
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 20
Do not use make lint (it runs ESLint with --fix and hides failures) or make build (it builds Docker images, not the Vite bundle) to …
- Very specific: line 25
Do not edit .github/workflows/* to make a failure disappear.
- Very specific: line 26
Do not re-run CI or push commits unless the user asked.
- Distinctive: line 31
Prefer the actual logs over guessing:
- Very specific: line 40
If gh is unavailable or has no access, ask the user to paste the failing job's log, or reproduce all five jobs locally (Step 2) and see …
- Very specific: line 46
Make sure the stack is up (make up-d).
- Distinctive: line 47
Run only the failing job's command from the table above.
- Distinctive: line 48
If it passes locally but fails in CI, look for environment differences before touching code (see "Common causes").
- Very specific: line 58
PHP tests: Read the failing assertion.
- Very specific: line 61
Pre-existing failure on
master: Check whether the same job fails on the latest master run (gh run list --branch master -L 3). - Distinctive: line 69
Run the other four jobs too, because fixes often move the failure (a new test can drop branch coverage elsewhere, a type fix can break the …
“Common” is measured: kept by at least 6 in 10 of the 37 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Fix CI
Find out why Orbit's CI failed, reproduce it locally, and fix the cause without weakening the checks.
CI is .github/workflows/ci.yml. It runs five jobs and a ci-status job that requires all of them:
| CI job | Local reproduction (Docker) | Host fallback |
| Type check | make type-check | npx tsc --noEmit |
| Lint | docker compose run --rm vite npx eslint resources/js | npx eslint resources/js |
| Component tests (Vitest) | make test-js-coverage | npm run test:coverage |
| Build verification | docker compose run --rm vite npm run build | npm run build |
| PHP tests (Pest) | make test-coverage | composer test-coverage |
Do not use make lint (it runs ESLint with --fix and hides failures) or make build (it builds Docker images, not the Vite bundle) to reproduce CI.
Boundaries
- Fix the cause, never the signal. Do not lower coverage thresholds in
vite.config.jsor--minincomposer.json, disable lint rules, add@ts-ignore, mark tests skipped, or loosen assertions to get green. If the user explicitly wants a temporary bypass, make it visible and say so. - Do not edit
.github/workflows/*to make a failure disappear. Change a workflow only when the workflow itself is the bug (e.g. a removed action version), and explain why. - Do not re-run CI or push commits unless the user asked. To commit the fix, use the
commitskill. - Preserve the user's uncommitted changes.
Step 1: read the real failure
Prefer the actual logs over guessing:
gh pr checks <pr> # which jobs failed on a PR
gh run list --branch "$(git branch --show-current)" -L 5
gh run view <run-id> # job summary
gh run view <run-id> --log-failed # only the failing steps' outputIf gh is unavailable or has no access, ask the user to paste the failing job's log, or reproduce all five jobs locally (Step 2) and see which one fails.
Identify the failing job, the failing step, and the first real error (not the cascade after it). Note the commit SHA the run used and compare it with local HEAD (git rev-parse HEAD). If they differ, make sure you reproduce the same code.
Step 2: reproduce locally
- Make sure the stack is up (
make up-d). Ifpackage.json,package-lock.json,composer.json, orcomposer.lockchanged on the branch, runmake npm-install/make composer-installfirst:node_modulesandvendorare anonymous volumes and are otherwise stale. - Run only the failing job's command from the table above. Use the host fallback only if Docker is unavailable, and say so.
- If it passes locally but fails in CI, look for environment differences before touching code (see "Common causes").
Step 3: classify and fix
Common causes in this repository, roughly by frequency:
- Coverage gate. All tests pass but coverage is below the threshold (90% lines on
app/for PHP; 80% statements/functions/lines and 75% branches for Vitest). Find the uncovered new code in the coverage report (coverage-html/for PHP, the Vitest text summary orcoverage/) and add behavior tests for it. Do not add tests that only execute lines without asserting anything. - Lint. CI runs bare
npx eslint resources/js. Locallynpm run lintauto-fixes, so failures can slip through. Fix the reported rules properly; run the bare command to confirm. - Type check. Often a changed Inertia prop or a type in
resources/js/types/that a page or test still uses the old way. Fix the types at the source, not with casts. - Build.
tsc && vite build: type errors, or imports with wrong case (Linux CI is case-sensitive, a Windows or macOS host may not be), or missing assets. - PHP tests. Read the failing assertion. Typical sources: missing
authorize/Policy changes, factories not updated for a new required column, migrations that do not run on SQLite, order-dependent assertions, time-dependent tests (use$this->travelTo()/Carbon::setTestNow()), or tests that hit real HTTP (useHttp::fake()). - Dependency drift. CI runs
npm ci --legacy-peer-depsandcomposer installfrom the lockfiles. A lockfile out of sync with its manifest, or a package installed locally but never committed, passes locally and fails in CI. - Flaky test. Passes on re-run without code changes. Confirm by running it several times locally (
npx vitest run <file>repeatedly,php artisan test --filter=<Test> --repeat=5if available). Fix the cause (shared state, timers, unawaited promises, random data, ordering) rather than retrying. If you cannot find it, report it as flaky with evidence instead of claiming a fix. - Pre-existing failure on
master. Check whether the same job fails on the latestmasterrun (gh run list --branch master -L 3). If it does, tell the user it is not caused by this branch and ask whether to fix it here or separately. - Local-only memory error.
make test-coveragecan die withAllowed memory size ... exhaustedin the coverage report writer after all tests passed. That is local, not a CI failure. Rundocker compose run --rm app php -d memory_limit=3G vendor/bin/pest --coverage --min=90instead.
Apply the smallest fix in the right place, following CLAUDE.md layering and conventions.
Step 4: verify
- Re-run the failing job's command until it passes.
- Run the other four jobs too, because fixes often move the failure (a new test can drop branch coverage elsewhere, a type fix can break the build).
- Review the diff: every change must relate to the failure.
Final report
State the failing job and the root cause in one or two sentences, the fix and the files changed, the local commands you ran with results (and whether Docker or the host was used), and anything that could still differ in CI. If the cause suggests a gap that will recur (for example a check that only exists in CI), propose a prevention step, such as running the bare lint command in a pre-push hook.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

