Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Propose a turbo skill improvement upstream by filing a GitHub issue against the turbo repo. Use when the user asks to "contribute to turbo", "submit turbo changes", "contribute back", "suggest a turbo improvement", or "upstream my changes".
.claude/skills/tobihagemann-contribute-turbo/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-05 | ✗→✓ | ▲ Improved | 10% | 0% |
| case-06 | ✗→✓ | ▲ Improved | -17% | 0% |
| case-08 | ✗→✓ | ▲ Improved | -12% | 0% |
| case-11 | ✗→✓ | ▲ Improved | -2% | 0% |
| case-12 | ✗→✓ | ▲ Improved | -6% | 0% |
Propose an improvement to a turbo skill as an issue on tobihagemann/turbo.
Confirm the local repo exists:
bashtest -d ~/.turbo/repo
If it does not, tell the user to run the Turbo setup first and stop.
Detect skills whose installed copy has drifted from the repo baseline:
bashfor skill in ~/.agents/skills/*/; do name=$(basename "$skill") repo_dir=~/.turbo/repo/codex/skills/"$name" [ -d "$repo_dir" ] || continue diff -rq "$skill" "$repo_dir" >/dev/null 2>&1 && continue echo "$name" done
For each drifted skill, read both versions of every file that differs and the single version of every file present on one side only. Classify each hunk and each one-sided file:
request_user_input to confirm classification.When no corrections survive classification, take the proposed change from conversation context instead. When the conversation describes no change either, tell the user there is nothing to contribute and stop.
Present the corrections in a summary table:
| # | Skill | Change Summary |
|---|-------|----------------|
| 1 | $evaluate-findings | Added handling for security-default findings |
| 2 | $self-improve | Clarified routing for trusted reviewer feedback |Use request_user_input to confirm which corrections to propose.
For each change, construct a "why" explanation. The goal: the turbo maintainer should understand what happened and why the existing instructions were insufficient, without learning anything about the contributor's project.
Use this template:
> During general workflow description], the skill's instructions what was missing or wrong]. This caused what happened]. The change what it does] so that benefit].
Example:
> During a code review session, the evaluate-findings skill encountered a finding with security-default severity. The existing instructions only handled critical, high, medium, and low severities, causing the finding to be silently dropped. The change adds security-default to the severity handling table so these findings are properly triaged.
The maintainer implements the change, so state it concretely alongside the "why": the file path under codex/skills/<name>/, the step or section it belongs in, and the exact replacement text or a diff.
Before finalizing, verify the whole proposal — the "why" explanation, the cited paths, and the proposed replacement text — contains none of the following:
Output the drafted proposal as text. Then use request_user_input for approval. The user must approve the proposal before proceeding.
$create-issue SkillUse update_plan to track each approved concern, restating any remaining steps of a parent workflow alongside them. Process concerns in order, one concern per issue.
For each concern, run the $create-issue skill, filing against tobihagemann/turbo rather than the current project's repo. The approved text from Step 2 is the issue body; leave it as approved rather than re-deriving it from conversation context.
Report each issue URL.
Then call update_plan to mark this step completed and continue with the next step of the active workflow.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 18,121 | 4,600 | -75% | 1 | 1 | 0% | 1,342 | 1,124 | -16% | 0 | 0 | — |
case-02 | fail→fail | 4,787 | 5,788 | +21% | 1 | 1 | 0% | 357 | 1,132 | +217% | 0 | 0 | — |
case-03 | fail→fail | 9,489 | 4,424 | -53% | 1 | 1 | 0% | 1,469 | 1,200 | -18% | 0 | 0 | — |
case-10 | pass→fail | 5,810 | 6,095 | +5% | 1 | 1 | 0% | 877 | 1,294 | +48% | 0 | 0 | — |
case-04 | fail→fail | 7,370 | 4,837 | -34% | 1 | 1 | 0% | 1,141 | 1,169 | +2% | 0 | 0 | — |
case-05 | fail→pass | 7,551 | 4,006 | -47% | 1 | 1 | 0% | 1,300 | 1,433 | +10% | 0 | 0 | — |
case-06 | fail→pass | 9,730 | 2,689 | -72% | 1 | 1 | 0% | 1,590 | 1,324 | -17% | 0 | 0 | — |
case-07 | fail→fail | 6,977 | 3,168 | -55% | 1 | 1 | 0% | 1,140 | 1,387 | +22% | 0 | 0 | — |
case-08 | fail→pass | 11,002 | 3,665 | -67% | 1 | 1 | 0% | 1,664 | 1,457 | -12% | 0 | 0 | — |
case-09 | pass→pass | 10,577 | 5,970 | -44% | 1 | 1 | 0% | 1,656 | 1,986 | +20% | 0 | 0 | — |
case-11 | fail→pass | 8,599 | 3,175 | -63% | 1 | 1 | 0% | 1,471 | 1,435 | -2% | 0 | 0 | — |
case-12 | fail→pass | 10,394 | 3,152 | -70% | 1 | 1 | 0% | 1,508 | 1,415 | -6% | 0 | 0 | — |
case-13 | pass→pass | 8,796 | 5,799 | -34% | 1 | 1 | 0% | 1,438 | 1,897 | +32% | 0 | 0 | — |
case-14 | fail→pass | 3,350 | 2,803 | -16% | 1 | 1 | 0% | 459 | 1,398 | +205% | 0 | 0 | — |
case-15 | fail→pass | 7,106 | 1,454 | -80% | 1 | 1 | 0% | 1,033 | 1,141 | +10% | 0 | 0 | — |
case-16 | fail→fail | 5,332 | 2,003 | -62% | 1 | 1 | 0% | 820 | 1,224 | +49% | 0 | 0 | — |
case-17 | fail→pass | 13,207 | 3,954 | -70% | 1 | 1 | 0% | 2,108 | 1,563 | -26% | 0 | 0 | — |
case-18 | pass→fail | 7,915 | 8,887 | +12% | 1 | 1 | 0% | 1,303 | 2,530 | +94% | 0 | 0 | — |
case-19 | pass→fail | 10,305 | 18,017 | +75% | 1 | 1 | 0% | 1,810 | 1,339 | -26% | 0 | 0 | — |
case-20 | pass→fail | 8,678 | 6,408 | -26% | 1 | 1 | 0% | 1,514 | 1,244 | -18% | 0 | 0 | — |
case-21 | fail→pass | 6,423 | 2,912 | -55% | 1 | 1 | 0% | 988 | 1,402 | +42% | 0 | 0 | — |
case-22 | fail→pass | 10,011 | 2,877 | -71% | 1 | 1 | 0% | 1,555 | 1,362 | -12% | 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. 22 cases were attempted, and 15 counted toward the lift figure. The other 7 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 +27 percentage points is the difference between those two pass rates over the 15 comparable cases. 4 cases got worse with the skill loaded, and they are included in that figure.
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.
Other measured skills in the registry, with their headline benchmark lift.