agentleFS
KotlinKotlin/kotlinx-rpc/.claude/skills/gradle_expert/SKILL.md

gradle_expert

Skill1.1k starsChanged 5 days agoApache-2.0View on GitHub

Provides expert build engineer guidance on Gradle Kotlin DSL scripts, plugin development, and deep internals research; use for build failures, compilation errors, dependency conflicts, or complex build authoring. Do NOT use for executing builds/tests (use `running_gradle_builds`/`running_gradle_tests`) or dependency graph auditing.

We split this skill into the rules it gives an agent

31 rules. About 0 are common, 8 are distinctive, and 23 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈8

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 23

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    ALWAYS: check for existing conventions in the current project before proposing changes.

    line 19
  2. Very specific:

    ALWAYS: prefer Kotlin DSL (.kts) unless the project explicitly uses Groovy.

    line 20
  3. Very specific:

    ALWAYS: use lazy APIs (e.g., register instead of create) to maintain configuration performance.

    line 21
  4. Very specific:

    ALWAYS: use libs.versions.toml for dependency management if it exists.

    line 22
  5. Very specific:

    ALWAYS: use gradle_docs for authoritative documentation lookup instead of generic web searches.

    line 23
  6. Very specific:

    ALWAYS: use search_dependency_sources with gradleSource = true when researching core Gradle behavior.

    line 24
  7. Very specific:

    ALWAYS: use inspect_build with testName and mode="details" for individual test output instead of generic taskPath, captureTaskOutput, or …

    line 25
  8. Very specific:

    ALWAYS: use safe navigation (?.url?.toString()) and provide fallback values when accessing ArtifactRepository URLs in Gradle init scripts …

    line 26
  9. Very specific:

    STRONGLY PREFERRED: Use inspect_build for all failure diagnostics.

    line 27
  10. Distinctive:

    Start with a summary to find IDs for specific failures or problems.

    line 36
  11. Very specific:

    CRITICAL: NEVER use taskPath or shell grep for tests.

    line 42
  12. Distinctive:

    Author builds idiomatically: Use standard patterns for multi-project builds and convention plugins.

    line 60
  13. Very specific:

    Research internals authoritatively: Use gradle_docs and internal source search to understand "how it works" at the engine level.

    line 62
  14. Very specific:

    Diagnose failures surgically: Use inspect_build with testName and mode="details" to analyze test failures and stack traces instead of …

    line 63
  15. Very specific:

    Resolve dependencies precisely: Use inspect_dependencies and managing_gradle_dependencies for auditing and updates.

    line 64
  16. Very specific:

    Use envSource: SHELL if environment variables are missing: If Gradle fails to find expected environment variables (e.g., JAVA_HOME or …

    line 67
  17. Very specific:

    Identify the Project Context: Use the gradle tool with commandLine: ["projects"] or the introspecting_gradle_projects skill to find the …

    line 74
  18. Very specific:

    Create Directory Structure: Use run_shell_command with mkdir subproject/src/main/kotlin (or equivalent).

    line 75
  19. Very specific:

    Add to settings.gradle.kts: Use replace or write_file to append include(":<module-name>").

    line 76
  20. Very specific:

    Create build.gradle.kts: Use idiomatic patterns (e.g., applying convention plugins).

    line 77
  21. Very specific:

    Verify: Run gradle tool with commandLine: [":<module-name>:tasks"] to ensure it's correctly integrated.

    line 78
  22. Very specific:

    Search Maven Central: Use the lookup_maven_versions tool to find the artifact.

    line 82
  23. Very specific:

    Update libs.versions.toml: Add the dependency coordinates to the catalog.

    line 83
  24. Very specific:

    Apply to build.gradle.kts: Use the type-safe accessor from the catalog.

    line 84
  25. Very specific:

    Verify: Run the gradle tool with commandLine: ["dependencies"] to check resolution.

    line 85
  26. Very specific:

    Enable Configuration Cache: Run the gradle tool with commandLine: ["help", "--configuration-cache"].

    line 89
  27. Distinctive:

    New Module Creation: When adding a new project or module to a multi-project build.

    line 133
  28. Distinctive:

    Dependency Migration: When updating dependencies or moving to version catalogs.

    line 134
  29. Distinctive:

    Build Logic Refactoring: When cleaning up complex build scripts or creating convention plugins.

    line 135
  30. Distinctive:

    Performance Troubleshooting: When builds are slow or failing during the configuration phase.

    line 136
  31. Distinctive:

    Deep Technical Research: When you need to understand the internal implementation of a Gradle feature or plugin.

    line 137

≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Senior Gradle Build Engineering & Internal Research

Provides authoritative guidance and automation for creating, modifying, and auditing Gradle build logic. Integrates official documentation, best practices, and deep-dive source research into a unified workflow for build logic maintenance.

Constitution

  • ALWAYS check for existing conventions in the current project before proposing changes.
  • ALWAYS prefer Kotlin DSL (.kts) unless the project explicitly uses Groovy.
  • ALWAYS use lazy APIs (e.g., register instead of create) to maintain configuration performance.
  • ALWAYS use libs.versions.toml for dependency management if it exists.
  • ALWAYS use gradle_docs for authoritative documentation lookup instead of generic web searches.
  • ALWAYS use search_dependency_sources with gradleSource = true when researching core Gradle behavior.
  • ALWAYS use inspect_build with testName and mode="details" for individual test output instead of generic taskPath, captureTaskOutput, or shell grep.
  • ALWAYS use safe navigation (?.url?.toString()) and provide fallback values when accessing ArtifactRepository URLs in Gradle init scripts or plugins to prevent NullPointerException.
  • STRONGLY PREFERRED: Use inspect_build for all failure diagnostics. It is more token-efficient than reading raw console logs and provides structured access to failures, stack traces, and problems.
  • NEVER guess internal API behavior; verify it by reading the source code of the Gradle Build Tool.

Surgical Failure Diagnostics with inspect_build

As a Senior Build Engineer, you must move beyond raw logs. The inspect_build tool is your surgical diagnostic suite.

1. Build Summary (Finding the Root Cause)

Start with a summary to find IDs for specific failures or problems.

  • Example: inspect_build(buildId="ID")

2. Individual Test Failures

CRITICAL: NEVER use taskPath or shell grep for tests. ALWAYS use testName with mode="details" to see the full output and stack trace.

  • Example: inspect_build(buildId="ID", mode="details", testName="com.example.MyTest.shouldWork")

3. Build-Level Failures

For compilation or configuration errors, use failureId found in the build summary.

  • Example: inspect_build(buildId="ID", mode="details", failureId="F0")

4. Problems & Warnings

For deep-dives into specific problems (e.g., deprecations, plugin issues), use problemId.

  • Example: inspect_build(buildId="ID", mode="details", problemId="P1")

Directives

  • Author builds idiomatically: Use standard patterns for multi-project builds and convention plugins.
  • Perform performance audits: Identify configuration bottlenecks and recommend lazy API migrations.
  • Research internals authoritatively: Use gradle_docs and internal source search to understand "how it works" at the engine level. Use read_dependency_sources to explore implementation details.
  • Diagnose failures surgically: Use inspect_build with testName and mode="details" to analyze test failures and stack traces instead of reading raw console logs. DO NOT use taskPath or captureTaskOutput for tests.
  • Resolve dependencies precisely: Use inspect_dependencies and managing_gradle_dependencies for auditing and updates.
  • Consult best practices: Refer to the Best Practices Snapshot for a high-level overview. ALWAYS use gradle_docs with tag:best-practices to retrieve the latest and most comprehensive guidelines from the official documentation.
  • Use envSource: SHELL if environment variables are missing: If Gradle fails to find expected environment variables (e.g., JAVA_HOME or specific JDKs), it may be because the host process started before the shell environment was fully loaded. Set invocationArguments: { envSource: "SHELL" } to force a new shell process to query the environment.

Workflows

1. Creating a New Module

  1. Identify the Project Context: Use the gradle tool with commandLine: ["projects"] or the introspecting_gradle_projects skill to find the correct parent path.
  2. Create Directory Structure: Use run_shell_command with mkdir subproject/src/main/kotlin (or equivalent).
  3. Add to settings.gradle.kts: Use replace or write_file to append include(":<module-name>").
  4. Create build.gradle.kts: Use idiomatic patterns (e.g., applying convention plugins).
  5. Verify: Run gradle tool with commandLine: [":<module-name>:tasks"] to ensure it's correctly integrated.

2. Adding a Dependency

  1. Search Maven Central: Use the lookup_maven_versions tool to find the artifact.
  2. Update libs.versions.toml: Add the dependency coordinates to the catalog.
  3. Apply to build.gradle.kts: Use the type-safe accessor from the catalog.
  4. Verify: Run the gradle tool with commandLine: ["dependencies"] to check resolution.

3. Performance Audit

  1. Enable Configuration Cache: Run the gradle tool with commandLine: ["help", "--configuration-cache"].
  2. Analyze Violations: Identify tasks that are not compatible with the cache.
  3. Propose Fixes: Recommend migrating to lazy APIs (Property, Provider) or using @Internal/@Input correctly.

Examples

Adding a new dependency to a module

Tool: lookup_maven_versions

{
  "coordinates": "com.google.guava:guava"
}

// Reasoning: Searching Maven Central for the exact coordinates and latest version.

Creating a new sub-project

Tool: run_shell_command

{
  "command": "New-Item -ItemType Directory -Force -Path subproject/src/main/kotlin"
}

// Reasoning: Creating the standard directory structure for a Kotlin JVM project using correct PowerShell syntax.

Searching for Gradle internal engine source code

Tool: search_dependency_sources

{
  "query": "Property",
  "searchType": "DECLARATION",
  "gradleSource": true
}

When to Use

  • New Module Creation: When adding a new project or module to a multi-project build.
  • Dependency Migration: When updating dependencies or moving to version catalogs.
  • Build Logic Refactoring: When cleaning up complex build scripts or creating convention plugins.
  • Performance Troubleshooting: When builds are slow or failing during the configuration phase.
  • Deep Technical Research: When you need to understand the internal implementation of a Gradle feature or plugin.

Resources

  • Best Practices
  • Common Build Patterns
  • Internal Research Guidelines

Download now (ZIP)

Trending

Quiet since September.about the whole repository

Dec 2025: 2 mentionsJan 2026: 1 mentionFeb 2026: 0 mentionsMar 2026: 1 mentionApr 2026: 0 mentionsMay 2026: 1 mentionJun 2026: 2 mentionsJul 2026: 2 mentionsAug 2026: 0 mentionsSep 2026: 1 mentionOct 2026: 0 mentionsNov 2026: 0 mentions
Dec 2025Jun 2026Nov 2026
Mentions a month of the Kotlin/kotlinx-rpc repository that our weekly crawl found. There is no adoption data for this file yet.

Who's talking about Kotlin/kotlinx-rpc

The biggest 5 of 16 mentions linking to the repository that our crawl found. Each line is their own headline.

See all 16

Talked about on GitHub (16 times).

On GitHub · 16

11 more on GitHub

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.