Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when flutter_rust_bridge CI fails on the default branch/main/master, especially to distinguish ordinary CI repair from a regression introduced after a previously green default-branch commit.
.claude/skills/fzyzcjy-frb-fix-main-ci/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 3% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 4% | 0% |
| case-07 | ✗→✓ | ▲ Improved | -33% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 15% | 0% |
| case-09 | ✗→✓ | ▲ Improved | -36% | 0% |
Use this when CI is failing on the default branch (main / master) or on a commit that is already part of the default-branch history.
Default-branch CI failures usually have two possible repair paths. Choose based on the evidence in the latest relevant run.
Use this path when the failure looks like a known FRB CI shape: flaky job, generated diff, lint drift, stale generated output, dependency-order failure, or downstream symptom already covered by existing CI triage.
Read frb-fix-ci and repair the failure directly:
tom-ci skill when reading GitHub Actions job logs.Generate, Integrate, or high-relevance Generate Internal before chasing later build/test symptoms.Use this path when the failure is not obviously a known FRB CI maintenance issue, or when several default-branch commits/runs suggest something recently broke.
A default-branch failure is often a regression. There should usually be an older default-branch commit that passed the same CI path. Study what changed between the green baseline and the red commit, then fix the source of that regression.
Before writing a regression fix, answer these questions:
./frb_internal ... command and the FRB dev environment rules?bash git log --oneline --decorate <green-sha>..<red-sha> git diff --stat <green-sha>..<red-sha>
frb-fix-ci already identifies a direct CI maintenance fix.For a PR that fixes default-branch CI, include:
Use frb-prepare-pr before opening the PR.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-18 | pass→pass | 23,389 | 13,170 | -44% | 1 | 1 | 0% | 2,619 | 1,952 | -25% | 0 | 0 | — |
case-01 | fail→fail | 14,042 | 19,719 | +40% | 1 | 1 | 0% | 226 | 1,041 | +361% | 0 | 0 | — |
case-02 | fail→fail | 16,321 | 17,053 | +4% | 1 | 1 | 0% | 201 | 1,049 | +422% | 0 | 0 | — |
case-03 | fail→fail | 10,990 | 17,256 | +57% | 1 | 1 | 0% | 127 | 1,118 | +780% | 0 | 0 | — |
case-04 | fail→pass | 18,676 | 13,330 | -29% | 1 | 1 | 0% | 2,002 | 2,070 | +3% | 0 | 0 | — |
case-05 | fail→pass | 19,285 | 8,610 | -55% | 1 | 1 | 0% | 2,037 | 2,109 | +4% | 0 | 0 | — |
case-06 | pass→pass | 7,221 | 9,723 | +35% | 1 | 1 | 0% | 902 | 1,384 | +53% | 0 | 0 | — |
case-17 | pass→pass | 22,779 | 7,437 | -67% | 1 | 1 | 0% | 2,494 | 1,806 | -28% | 0 | 0 | — |
case-07 | fail→pass | 17,135 | 2,661 | -84% | 1 | 1 | 0% | 1,593 | 1,067 | -33% | 0 | 0 | — |
case-08 | fail→pass | 7,638 | 10,257 | +34% | 1 | 1 | 0% | 1,102 | 1,270 | +15% | 0 | 0 | — |
case-09 | fail→pass | 40,600 | 11,378 | -72% | 1 | 1 | 0% | 2,596 | 1,660 | -36% | 0 | 0 | — |
case-10 | fail→pass | 18,526 | 14,635 | -21% | 1 | 1 | 0% | 1,848 | 2,171 | +17% | 0 | 0 | — |
case-11 | fail→pass | 34,283 | 10,172 | -70% | 1 | 1 | 0% | 870 | 1,502 | +73% | 0 | 0 | — |
case-12 | fail→pass | 16,825 | 7,409 | -56% | 1 | 1 | 0% | 2,645 | 1,024 | -61% | 0 | 0 | — |
case-13 | pass→pass | 16,335 | 13,154 | -19% | 1 | 1 | 0% | 2,376 | 2,086 | -12% | 0 | 0 | — |
case-14 | fail→pass | 20,329 | 9,296 | -54% | 1 | 1 | 0% | 2,786 | 1,465 | -47% | 0 | 0 | — |
case-15 | pass→pass | 15,170 | 4,399 | -71% | 1 | 1 | 0% | 1,488 | 1,521 | +2% | 0 | 0 | — |
case-16 | fail→fail | 18,140 | 21,040 | +16% | 1 | 1 | 0% | 1,912 | 1,417 | -26% | 0 | 0 | — |
case-19 | pass→pass | 18,281 | 19,859 | +9% | 1 | 1 | 0% | 1,678 | 1,952 | +16% | 0 | 0 | — |
case-20 | pass→pass | 12,769 | 8,448 | -34% | 1 | 1 | 0% | 1,114 | 1,249 | +12% | 0 | 0 | — |
case-21 | pass→pass | 20,548 | 13,226 | -36% | 1 | 1 | 0% | 2,625 | 3,274 | +25% | 0 | 0 | — |
case-22 | pass→pass | 13,632 | 10,402 | -24% | 1 | 1 | 0% | 1,360 | 1,703 | +25% | 0 | 0 | — |
case-23 | pass→pass | 18,719 | 14,870 | -21% | 1 | 1 | 0% | 2,071 | 2,353 | +14% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted, and 19 counted toward the lift figure. The other 4 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +39 percentage points is the difference between those two pass rates over the 19 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
| Model | Method | Date | Lift |
|---|---|---|---|
| gemini-3.6-flash | verified | 8/9/2026 | +30% |
Other measured skills in the registry, with their headline benchmark lift.