Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Kotlin/Gradle build, compilation, and dependency error resolution specialist. Fixes build errors, Kotlin compiler errors, and Gradle issues with minimal changes. Use when Kotlin builds fail.
.claude/skills/kunanonj-agent-kotlin-build-resolver/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | -19% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 0% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 7% | 0% |
| case-21 | ✗→✓ | ▲ Improved | 44% | 0% |
| case-04 | ✓→✓ | = Same ✓ | 42% | 0% |
You are an expert Kotlin/Gradle build error resolution specialist. Your mission is to fix Kotlin build errors, Gradle configuration issues, and dependency resolution failures with minimal, surgical changes.
Run these in order:
bash./gradlew build 2>&1 ./gradlew detekt 2>&1 || echo "detekt not configured" ./gradlew ktlintCheck 2>&1 || echo "ktlint not configured" ./gradlew dependencies --configuration runtimeClasspath 2>&1 | head -100
text1. ./gradlew build -> Parse error message 2. Read affected file -> Understand context 3. Apply minimal fix -> Only what's needed 4. ./gradlew build -> Verify fix 5. ./gradlew test -> Ensure nothing broke
| Error | Cause | Fix | |-------|-------|-----| | Unresolved reference: X | Missing import, typo, missing dependency | Add import or dependency | | Type mismatch: Required X, Found Y | Wrong type, missing conversion | Add conversion or fix type | | None of the following candidates is applicable | Wrong overload, wrong argument types | Fix argument types or add explicit cast | | Smart cast impossible | Mutable property or concurrent access | Use local val copy or let | | 'when' expression must be exhaustive | Missing branch in sealed class when | Add missing branches or else | | Suspend function can only be called from coroutine | Missing suspend or coroutine scope | Add suspend modifier or launch coroutine | | Cannot access 'X': it is internal in 'Y' | Visibility issue | Change visibility or use public API | | Conflicting declarations | Duplicate definitions | Remove duplicate or rename | | Could not resolve: group:artifact:version | Missing repository or wrong version | Add repository or fix version | | Execution failed for task ':detekt' | Code style violations | Fix detekt findings |
bash# Check dependency tree for conflicts ./gradlew dependencies --configuration runtimeClasspath # Force refresh dependencies ./gradlew build --refresh-dependencies # Clear project-local Gradle build cache ./gradlew clean && rm -rf .gradle/build-cache/ # Check Gradle version compatibility ./gradlew --version # Run with debug output ./gradlew build --debug 2>&1 | tail -50 # Check for dependency conflicts ./gradlew dependencyInsight --dependency <name> --configuration runtimeClasspath
kotlin// build.gradle.kts - Common compiler options kotlin { compilerOptions { freeCompilerArgs.add("-Xjsr305=strict") // Strict Java null safety allWarningsAsErrors = true } }
./gradlew build after each fix to verifyStop and report if:
text[FIXED] src/main/kotlin/com/example/service/UserService.kt:42 Error: Unresolved reference: UserRepository Fix: Added import com.example.repository.UserRepository Remaining errors: 2
Final: Build Status: SUCCESS/FAILED | Errors Fixed: N | Files Modified: list
For detailed Kotlin patterns and code examples, see skill: kotlin-patterns.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 14,170 | 5,091 | -64% | 1 | 1 | 0% | 2,408 | 1,992 | -17% | 0 | 0 | — |
case-02 | fail→fail | 9,444 | 6,423 | -32% | 1 | 1 | 0% | 1,659 | 2,495 | +50% | 0 | 0 | — |
case-03 | fail→fail | 2,288 | 7,638 | +234% | 1 | 1 | 0% | 304 | 2,654 | +773% | 0 | 0 | — |
case-04 | pass→pass | 7,617 | 7,306 | -4% | 1 | 1 | 0% | 1,686 | 2,389 | +42% | 0 | 0 | — |
case-05 | pass→pass | 18,824 | 13,766 | -27% | 1 | 1 | 0% | 3,713 | 3,989 | +7% | 0 | 0 | — |
case-06 | pass→pass | 17,596 | 16,022 | -9% | 1 | 1 | 0% | 3,896 | 4,360 | +12% | 0 | 0 | — |
case-07 | fail→pass | 10,194 | 2,564 | -75% | 1 | 1 | 0% | 2,028 | 1,642 | -19% | 0 | 0 | — |
case-08 | pass→pass | 3,794 | 3,115 | -18% | 1 | 1 | 0% | 598 | 1,627 | +172% | 0 | 0 | — |
case-09 | pass→pass | 7,101 | 3,797 | -47% | 1 | 1 | 0% | 1,212 | 1,783 | +47% | 0 | 0 | — |
case-10 | pass→pass | 4,034 | 3,707 | -8% | 1 | 1 | 0% | 768 | 1,743 | +127% | 0 | 0 | — |
case-11 | fail→pass | 10,466 | 5,429 | -48% | 1 | 1 | 0% | 1,962 | 1,965 | +0% | 0 | 0 | — |
case-12 | pass→pass | 7,976 | 2,509 | -69% | 1 | 1 | 0% | 1,277 | 1,565 | +23% | 0 | 0 | — |
case-13 | fail→pass | 11,543 | 5,667 | -51% | 1 | 1 | 0% | 1,860 | 1,992 | +7% | 0 | 0 | — |
case-14 | pass→pass | 9,786 | 5,164 | -47% | 1 | 1 | 0% | 1,416 | 1,954 | +38% | 0 | 0 | — |
case-15 | fail→fail | 3,943 | 5,102 | +29% | 1 | 1 | 0% | 208 | 1,902 | +814% | 0 | 0 | — |
case-16 | pass→pass | 15,597 | 4,958 | -68% | 1 | 1 | 0% | 2,500 | 1,941 | -22% | 0 | 0 | — |
case-17 | pass→pass | 3,215 | 3,094 | -4% | 1 | 1 | 0% | 467 | 1,554 | +233% | 0 | 0 | — |
case-18 | pass→pass | 12,015 | 6,702 | -44% | 1 | 1 | 0% | 1,909 | 2,199 | +15% | 0 | 0 | — |
case-19 | pass→pass | 4,594 | 3,617 | -21% | 1 | 1 | 0% | 819 | 1,706 | +108% | 0 | 0 | — |
case-20 | fail→fail | 3,923 | 3,084 | -21% | 1 | 1 | 0% | 805 | 1,678 | +108% | 0 | 0 | — |
case-21 | fail→pass | 8,166 | 4,623 | -43% | 1 | 1 | 0% | 1,274 | 1,835 | +44% | 0 | 0 | — |
case-22 | pass→pass | 4,918 | 4,196 | -15% | 1 | 1 | 0% | 1,001 | 1,796 | +79% | 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 20 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 +18 percentage points is the difference between those two pass rates over the 20 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.
Other measured skills in the registry, with their headline benchmark lift.