Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Lint and format code. Auto-detects ESLint, Biome, Prettier, or language-native formatters and runs them with auto-fix. Reports remaining issues with actionable suggestions.
.claude/skills/mkurman-lint/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-09 | ✗→✓ | ▲ Improved | -20% | 0% |
| case-12 | ✗→✓ | ▲ Improved | -52% | 0% |
| case-14 | ✗→✓ | ▲ Improved | -28% | 0% |
| case-15 | ✗→✓ | ▲ Improved | -39% | 0% |
| case-19 | ✗→✓ | ▲ Improved | -48% | 0% |
|------|------|---------| | ... | ... | ... | ... |
| File | Line | Rule | Message | |------|------|------|---------| | ... | ... | ... | ... |
/lint --fix to apply)
**Step 4: Suggest fixes for common issues**
For the most frequent issues, provide brief actionable guidance:
- If the same rule appears 5+ times, suggest a bulk fix or config change.
- For unused imports/variables, list them for quick removal.
- For formatting-only issues, note that `--fix` will resolve them safely.
- For issues that cannot be auto-fixed, provide a one-line explanation of how to resolve each unique rule violation.
</execution>
<critical_rules>
1. **Never modify files without `--fix`**: Default mode is report-only. Respect the user's working tree.
2. **Use the project's own config**: Do not invent lint rules. Use whatever config files exist in the project.
3. **Use the project's installed version**: Always prefer `npx`, `cargo`, or the project-local binary. Do not use globally installed tools unless no local version exists.
4. **Handle missing tools gracefully**: If a config file exists but the tool is not installed, inform the user and provide the install command (e.g., `npm install --save-dev eslint`).
5. **Respect `.gitignore` and ignore patterns**: Do not lint `node_modules`, `dist`, `build`, `target`, `.git`, or other commonly ignored directories. Most tools handle this automatically; verify they do.
6. **Limit output**: If there are more than 50 issues, show the first 30 grouped by severity, then summarize the rest with counts per file. Do not flood the user with hundreds of lines.
7. **Exit cleanly**: After presenting results, do not take further action. Let the user decide next steps.
</critical_rules>| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 6,366 | 6,687 | +5% | 1 | 1 | 0% | 995 | 790 | -21% | 0 | 0 | — |
case-02 | fail→fail | 8,494 | 5,606 | -34% | 1 | 1 | 0% | 1,396 | 660 | -53% | 0 | 0 | — |
case-03 | fail→fail | 14,755 | 3,840 | -74% | 1 | 1 | 0% | 2,321 | 641 | -72% | 0 | 0 | — |
case-04 | fail→fail | 3,748 | 6,250 | +67% | 1 | 1 | 0% | 537 | 749 | +39% | 0 | 0 | — |
case-05 | fail→fail | 18,957 | 19,263 | +2% | 1 | 1 | 0% | 3,093 | 4,140 | +34% | 0 | 0 | — |
case-06 | fail→fail | 7,981 | 11,671 | +46% | 1 | 1 | 0% | 1,508 | 2,450 | +62% | 0 | 0 | — |
case-07 | fail→fail | 2,698 | 5,234 | +94% | 1 | 1 | 0% | 308 | 680 | +121% | 0 | 0 | — |
case-08 | pass→pass | 10,488 | 4,753 | -55% | 1 | 1 | 0% | 1,552 | 1,221 | -21% | 0 | 0 | — |
case-09 | fail→pass | 9,870 | 5,477 | -45% | 1 | 1 | 0% | 1,760 | 1,401 | -20% | 0 | 0 | — |
case-10 | pass→pass | 22,980 | 6,331 | -72% | 1 | 1 | 0% | 2,013 | 1,442 | -28% | 0 | 0 | — |
case-11 | pass→pass | 12,268 | 4,595 | -63% | 1 | 1 | 0% | 1,964 | 1,275 | -35% | 0 | 0 | — |
case-17 | pass→pass | 11,989 | 2,781 | -77% | 1 | 1 | 0% | 1,939 | 867 | -55% | 0 | 0 | — |
case-12 | fail→pass | 12,243 | 3,059 | -75% | 1 | 1 | 0% | 1,942 | 936 | -52% | 0 | 0 | — |
case-13 | pass→fail | 11,948 | 6,114 | -49% | 1 | 1 | 0% | 1,858 | 1,162 | -37% | 0 | 0 | — |
case-14 | fail→pass | 7,618 | 2,335 | -69% | 1 | 1 | 0% | 1,152 | 828 | -28% | 0 | 0 | — |
case-15 | fail→pass | 14,510 | 7,329 | -49% | 1 | 1 | 0% | 2,158 | 1,309 | -39% | 0 | 0 | — |
case-16 | pass→pass | 9,394 | 3,158 | -66% | 1 | 1 | 0% | 1,454 | 923 | -37% | 0 | 0 | — |
case-18 | pass→pass | 12,222 | 4,819 | -61% | 1 | 1 | 0% | 2,062 | 1,288 | -38% | 0 | 0 | — |
case-19 | fail→pass | 12,860 | 3,256 | -75% | 1 | 1 | 0% | 1,919 | 989 | -48% | 0 | 0 | — |
case-20 | fail→pass | 15,037 | 3,600 | -76% | 1 | 1 | 0% | 2,383 | 1,044 | -56% | 0 | 0 | — |
case-21 | fail→pass | 14,975 | 2,793 | -81% | 1 | 1 | 0% | 1,622 | 884 | -45% | 0 | 0 | — |
case-22 | pass→pass | 14,607 | 7,628 | -48% | 1 | 1 | 0% | 2,553 | 1,784 | -30% | 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 17 counted toward the lift figure. The other 5 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 17 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.