src/main/skills/interacting_with_project_runtime/SKILL.md
Executes Kotlin code interactively within the project's full JVM classpath. Use when you need to RUN code: verify runtime behavior, experiment with logic, or render Compose UI previews. Do NOT use to understand an API's shape or signature — read its source with `exploring_dependency_sources` instead.
npx skillsauth add rnett/gradle-mcp interacting_with_project_runtimeInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Runs Kotlin code interactively within the project's exact JVM classpath — for when you need to execute, not just read.
search_dependency_sources / read_dependency_sources (read the source). If the question is "what happens when I run this?" →
use kotlin_repl.kotlin_repl instead of a standalone Kotlin REPL for project-aware interaction.projectRoot.projectPath and sourceSet (e.g., main, test).stop then start) after modifying project source code to pick up changes in the classpath.responder API for rich output (images, markdown) to improve diagnostic visibility.stop when finished.ReplTools before starting new ones when session IDs are regenerated. This prevents leaking worker processes and ensures stable session management during
concurrent or sequential tool calls.search_dependency_sources / read_dependency_sources. Only reach for the
REPL once you know what you want to call and need to observe actual runtime output.kotlin_repl tool provides full access to the project's exact classpath, dependencies, and source sets. NEVER attempt to use standalone runners for project-internal logic.projectPath (e.g., :app) and sourceSet (e.g., main for application code, test for test utility access).stop and then start the session again to pick up the updated classes.responder: ALWAYS use responder.render() or specialized methods (markdown, image, html) to return rich content.envSource: SHELL if environment variables are missing: If the REPL 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 env: { envSource: "SHELL" } when calling start to force a new shell process to query the environment.{baseDir} manually: If your environment does not automatically resolve the {baseDir} placeholder in reference links, treat it as the absolute path to the directory containing this SKILL.md file.Ask yourself: "Am I trying to understand this API, or run it?"
If you're trying to understand it — what methods it has, what its parameters are, how it's implemented — stop and use exploring_dependency_sources first. The REPL cannot tell you what you don't already know to ask; source reading can.
Examples of what belongs in source reading, not the REPL:
SomeClass have?" → search_dependency_sources DECLARATION searchread_dependency_sourcesread_dependency_sourcessearch_dependency_sources FULL_TEXT or DECLARATION search:app) and source set (e.g., main).kotlin_repl(command="start").env for environment variables or additionalDependencies if you need external libraries not currently in the project.kotlin_repl(command="run") with your Kotlin code.responder.render() for rich diagnostics.kotlin_repl(command="stop") once your investigation is complete to release system resources.// Start the session
{
"command": "start",
"projectPath": ":my-project",
"sourceSet": "main"
}
// Execute the probe
{
"command": "run",
"code": "import com.example.utils.MyHelper\nMyHelper.calculateSum(1, 2)"
}
// Reasoning: Using kotlin_repl to verify a utility function in the context of the main source set.
import androidx.compose.ui.test.*
import com.example.ui.MyComposable
runComposeUiTest {
setContent { MyComposable() }
val bitmap = onRoot().captureToImage()
responder.render(bitmap)
}
// Reasoning: Using the responder API to retrieve a high-resolution image of a Compose component.
start successfully before calling run.sourceSet (e.g., test if the class is in src/test/kotlin).stop and start the REPL to refresh the classpath.tools
Provides authoritative guidance for ALL Gradle operations: executing builds, running tests with surgical filtering, introspecting project structure, creating modules, and diagnosing failures; ALWAYS use instead of raw shell `./gradlew` for build execution, test runs, task introspection, module creation, performance audits, and documentation research. Do NOT use for dependency graph auditing/updates (use `managing_gradle_dependencies`) or dependency/plugin/Gradle source exploration (use `exploring_dependency_sources`).
tools
Reads and searches source code across ALL scopes: external library dependencies, plugins (buildscript), and Gradle Build Tool internal source code; use whenever you need to UNDERSTAND an API — its shape, signature, parameters, overloads, or implementation — before writing any code that calls it; covers project dependencies (via project/configuration/source set scope), plugins (via `sourceSetPath=":buildscript"`), and Gradle internals (via `gradleSource: true`). Prefer this over the REPL for all API research; reading source is instantaneous and complete. Do NOT use for project source code (use grep/tilth), Gradle documentation (use `gradle_docs` via the `gradle` skill), or Maven Central discovery (use `managing_gradle_dependencies`).
development
Audits and manages Gradle dependency graphs with high-resolution update checks, transitive tree analysis, and Maven Central discovery; use for dependency auditing, finding stable updates, and resolving GAV coordinates. Do NOT use for exploring dependency source code (use `exploring_dependency_sources`) or running builds/tests (use `gradle`).
tools
Reads and searches source code of external library dependencies, plugins, and Gradle Build Tool source code. Use this whenever you need to UNDERSTAND an API: its shape, signature, parameters, overloads, or implementation — before writing any code that calls it. Prefer this over the REPL for all API research; reading source is instantaneous and complete. Do NOT use for project source code (use grep/tilth), Gradle documentation (use `researching_gradle_internals`), or Maven Central discovery (use `managing_gradle_dependencies`).