Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Help a new contributor get productive on this checkout - inspect sync state against main, build, run the repository's exact verification gate, and produce a local what's-new digest. Never fetches, pulls, or modifies a dirty tree on its own. Explicit-only.
.claude/skills/hmbown-contributor-onboarding/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-05 | ✗→✓ | ▲ Improved | 19% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 5% | 0% |
| case-10 | ✗→✓ | ▲ Improved | -5% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 38% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 22% | 0% |
A first-run path for a contributor who has cloned the repo and wants to know am I current, does it build, does it pass, and what changed while I was away — without a wall of prose and without anything touching their working tree behind their back.
Explicit-only. Loading this skill is not authority to fetch, pull, rebase, push, or write files. Every network or mutating step below is a separate action the contributor must ask for after reading the plan.
git fetch, git pull, git rebase, or git checkout on yourown initiative. Report state; propose the command; wait.
deterministic result. The digest is built from files and git output, not generated prose.
build you did not observe.
uses whatever route the contributor already configured, or none.
Run these and report the results verbatim. Nothing here writes:
git rev-parse --abbrev-ref HEAD
git status --porcelain
git rev-list --left-right --count origin/main...HEADReport three facts plainly:
N behind, M ahead of origin/main, or unavailable whenorigin/main is missing or has never been fetched. Unavailable is a real answer — say it rather than guessing zero.
If behind, print the exact commands and stop:
git fetch origin
git rebase origin/main # or: git merge origin/mainIf the tree is dirty, do not propose a sync at all. Print a recovery plan first, in this order, and let the contributor choose:
git stash push -u -m "wip before sync" then sync, then git stash popcargo build --release -p codewhale-cli -p codewhale-tuiReport the exit status and the first error if it fails. A build failure ends the run: do not proceed to the gate and do not report gate results.
Run what CI runs, not a paraphrase of it. Read .github/workflows/ci.yml first and run its Rust steps verbatim; the list below is a snapshot that loses to the workflow when they disagree:
cargo fmt --all -- --check
cargo clippy --workspace --all-targets --all-features --locked -- \
-D warnings \
-A clippy::uninlined_format_args \
-A clippy::too_many_arguments \
-A clippy::unnecessary_map_or
cargo test --workspaceIf the workflow uses flags this snapshot lacks (or vice versa), say so and follow the workflow.
Known suite papercut: run_verifiers_background_* is flaky under full-suite parallelism and passes in isolation. Attribute it to the known flake, not to the contributor's change.
Built only from files already on disk. No network, no model:
git log --oneline -n 20 origin/mainplus the topmost released section of CHANGELOG.md.
Rules:
when you hit it; do not silently truncate.
origin/main is unavailable, digest HEAD instead and label it as such.point is that two contributors on the same commit get the same digest.
Only after the gate has actually passed, and only if the contributor asks. Print the plan and require an explicit yes before running anything:
./target/release/codewhale exec --helpThis is a provider-free smoke check: it exercises the built binary without sending a request anywhere. Anything beyond it — an actual codewhale exec turn — needs the contributor's own configured route and their explicit go-ahead. Never select a provider for them and never fall back to a default one.
End with a compact status table: branch, tree, sync, build, gate, digest, dogfood. Use not run for anything skipped and unavailable for anything the environment could not determine. Never write passed from inference.
Requested by @JayBeest (#4227). Preserve that attribution in the changelog entry and in the commit body of any change that lands from this skill.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 9,038 | 11,392 | +26% | 1 | 1 | 0% | 307 | 1,735 | +465% | 0 | 0 | — |
case-02 | fail→fail | 10,268 | 15,114 | +47% | 1 | 1 | 0% | 475 | 1,946 | +310% | 0 | 0 | — |
case-03 | fail→fail | 11,289 | 7,140 | -37% | 1 | 1 | 0% | 443 | 2,108 | +376% | 0 | 0 | — |
case-04 | pass→pass | 13,690 | 5,608 | -59% | 1 | 1 | 0% | 1,879 | 1,733 | -8% | 0 | 0 | — |
case-05 | fail→pass | 20,037 | 4,394 | -78% | 1 | 1 | 0% | 1,472 | 1,747 | +19% | 0 | 0 | — |
case-06 | fail→pass | 34,642 | 4,597 | -87% | 1 | 1 | 0% | 1,649 | 1,729 | +5% | 0 | 0 | — |
case-07 | fail→fail | 9,087 | 3,640 | -60% | 1 | 1 | 0% | 1,226 | 1,671 | +36% | 0 | 0 | — |
case-08 | pass→pass | 12,503 | 4,045 | -68% | 1 | 1 | 0% | 1,429 | 1,657 | +16% | 0 | 0 | — |
case-09 | fail→fail | 12,568 | 3,470 | -72% | 1 | 1 | 0% | 1,451 | 1,561 | +8% | 0 | 0 | — |
case-10 | fail→pass | 10,640 | 2,683 | -75% | 1 | 1 | 0% | 1,546 | 1,463 | -5% | 0 | 0 | — |
case-11 | fail→pass | 10,427 | 7,276 | -30% | 1 | 1 | 0% | 1,454 | 2,001 | +38% | 0 | 0 | — |
case-12 | fail→pass | 10,868 | 5,240 | -52% | 1 | 1 | 0% | 1,432 | 1,751 | +22% | 0 | 0 | — |
case-13 | fail→fail | 11,081 | 6,638 | -40% | 1 | 1 | 0% | 1,571 | 2,002 | +27% | 0 | 0 | — |
case-14 | fail→pass | 50,652 | 6,416 | -87% | 1 | 1 | 0% | 885 | 1,386 | +57% | 0 | 0 | — |
case-15 | fail→pass | 16,072 | 3,978 | -75% | 1 | 1 | 0% | 2,266 | 1,697 | -25% | 0 | 0 | — |
case-16 | fail→pass | 7,797 | 4,543 | -42% | 1 | 1 | 0% | 1,174 | 1,594 | +36% | 0 | 0 | — |
case-17 | pass→pass | 24,790 | 3,351 | -86% | 1 | 1 | 0% | 507 | 1,511 | +198% | 0 | 0 | — |
case-18 | fail→pass | 9,088 | 5,048 | -44% | 1 | 1 | 0% | 1,359 | 1,549 | +14% | 0 | 0 | — |
case-19 | fail→fail | 51,130 | 15,682 | -69% | 1 | 1 | 0% | 2,077 | 2,104 | +1% | 0 | 0 | — |
case-20 | fail→pass | 36,046 | 4,903 | -86% | 1 | 1 | 0% | 1,929 | 1,835 | -5% | 0 | 0 | — |
case-21 | pass→pass | 11,451 | 10,460 | -9% | 1 | 1 | 0% | 1,767 | 2,968 | +68% | 0 | 0 | — |
case-22 | pass→pass | 14,099 | 17,033 | +21% | 1 | 1 | 0% | 1,911 | 3,125 | +64% | 0 | 0 | — |
case-23 | pass→pass | 6,684 | 17,881 | +168% | 1 | 1 | 0% | 938 | 1,977 | +111% | 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 21 counted toward the lift figure. The other 2 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 +43 percentage points is the difference between those two pass rates over the 21 comparable cases. 1 case got worse with the skill loaded, and it is 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.
| Model | Method | Date | Lift |
|---|---|---|---|
| gemini-3.6-flash | verified | 8/7/2026 | +48% |
Other measured skills in the registry, with their headline benchmark lift.