{"owner":"GradleUp","repo":"shadow","hasSkills":true,"totalSkillsCount":4,"totalTokensCount":1752,"categories":["plugin-manifest","root-instruction"],"hasMcp":false,"mcpConfig":null,"found":["docs/groovy-and-scala-plugins/README.md","docs/android-plugins/README.md","AGENTS.md","docs/kotlin-plugins/README.md"],"skills":{"docs/groovy-and-scala-plugins/README.md":"# Integrating with Groovy and Scala Plugins\n\nShadow also works well for Groovy and Scala, here are integration examples:\n\nFor Groovy:\n\n=== \":material-language-kotlin: build.gradle.kts\"\n\n    ```kotlin\n    plugins {\n      groovy\n      id(\"com.gradleup.shadow\")\n    }\n\n    tasks.shadowJar {\n      manifest {\n        // Optionally, set the main class for the shadowed JAR.\n        attributes[\"Main-Class\"] = \"com.example.Main\"\n      }\n    }\n    ```\n\n=== \":simple-apachegroovy: build.gradle\"\n\n    ```groovy\n    plugins {\n      id 'groovy'\n      id 'com.gradleup.shadow'\n    }\n\n    tasks.named('shadowJar', com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar) {\n      manifest {\n        // Optionally, set the main class for the shadowed JAR.\n        attributes 'Main-Class': 'com.example.Main'\n      }\n    }\n    ```\n\nFor Scala:\n\n=== \":material-language-kotlin: build.gradle.kts\"\n\n    ```kotlin\n    plugins {\n      scala\n      id(\"com.gradleup.shadow\")\n    }\n\n    tasks.shadowJar {\n      manifest {\n        // Optionally, set the main class for the shadowed JAR.\n        attributes[\"Main-Class\"] = \"com.example.Main\"\n      }\n    }\n    ```\n\n=== \":simple-apachegroovy: build.gradle\"\n\n    ```groovy\n    plugins {\n      id 'scala'\n      id 'com.gradleup.shadow'\n    }\n\n    tasks.named('shadowJar', com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar) {\n      manifest {\n        // Optionally, set the main class for the shadowed JAR.\n        attributes 'Main-Class': 'com.example.Main'\n      }\n    }\n    ```\n\nYou can customize the other configurations of the `shadowJar` task as needed, just like with Java projects.\n","docs/android-plugins/README.md":"# Integrating with Android Plugins\n\nNow you can bundle and publish multiple Android libraries as one with\n[Android Fused Library Plugin][android-fused-library-plugin], which is officially supported by Android.\n\n\n[android-fused-library-plugin]: https://developer.android.com/build/publish-library/fused-library\n","AGENTS.md":"# AGENTS.md\n\nAgents MUST read and strictly follow all rules defined in [`CONTRIBUTING.md`](CONTRIBUTING.md).\n\n**Instructions for AI Agents:**\n\n1. Make an atomic commit after completing each task.\n2. Pass `--non-interactive` to Gradle commands to disable interactive console prompts.\n3. Prefer using the `gh` CLI for GitHub-related tasks.\n4. Do not run Gradle tasks when performing code reviews.\n","docs/kotlin-plugins/README.md":"# Integrating with Kotlin Plugins\n\nKotlin standard libraries (stdlib) are added by Kotlin plugins by default via `implementation` (`runtimeClasspath`),\nthey will be bundled into the shadowed JARs automatically. If you don't need a standard library at all, you can add the\nfollowing Gradle property to your gradle.properties file:\n\n```properties\nkotlin.stdlib.default.dependency=false\n```\n\nKotlin compilations may still require the standard libraries, you can add them into `compileOnly` (`compileClasspath`)\nto make sure compilations success and avoid shadowing as follows:\n\n=== \":material-language-kotlin: build.gradle.kts\"\n\n    ```kotlin\n    dependencies {\n      compileOnly(\"org.jetbrains.kotlin:kotlin-stdlib:<version>\")\n    }\n    ```\n\n=== \":simple-apachegroovy: build.gradle\"\n\n    ```groovy\n    dependencies {\n      compileOnly 'org.jetbrains.kotlin:kotlin-stdlib:<version>'\n    }\n    ```\n\nSee more information about [Dependency on the standard library][dependency-on-the-standard-library].\n\n## For Kotlin JVM Plugin\n\nShadow works well for Kotlin JVM projects like Java projects. Here is an example:\n\n=== \":material-language-kotlin: build.gradle.kts\"\n\n    ```kotlin\n    plugins {\n      id(\"org.jetbrains.kotlin.jvm\")\n      id(\"com.gradleup.shadow\")\n    }\n\n    dependencies {\n      implementation(\"io.ktor:ktor-client-okhttp:3.1.0\")\n    }\n    ```\n\n=== \":simple-apachegroovy: build.gradle\"\n\n    ```groovy\n    plugins {\n      id 'org.jetbrains.kotlin.jvm'\n      id 'com.gradleup.shadow'\n    }\n\n    dependencies {\n      implementation 'io.ktor:ktor-client-okhttp:3.1.0'\n    }\n    ```\n\nYou can mix the Kotlin JVM plugin with `java-gradle-plugin`, `application`, and other Java plugins, easily organize your\nbuild logic for [Publishing Libraries][publishing-libraries], [Running Applications][running-applications], and so on.\n\n## For Kotlin Multiplatform Plugin\n\nShadow honors Kotlin's [`org.jetbrains.kotlin.multiplatform`][org.jetbrains.kotlin.multiplatform] plugin and will\nautomatically configure additional tasks for bundling the shadowed JAR for its `jvm` target.\n\n=== \":material-language-kotlin: build.gradle.kts\"\n\n    ```kotlin\n    plugins {\n      id(\"org.jetbrains.kotlin.multiplatform\")\n      id(\"com.gradleup.shadow\")\n    }\n\n    kotlin {\n      @Suppress(\"OPT_IN_USAGE\")\n      jvm().mainRun {\n        // Optionally, set the main class for `runJvm`.\n        mainClass = \"myapp.MainKt\"\n      }\n      sourceSets {\n        commonMain {\n          dependencies {\n            implementation(\"io.ktor:ktor-client-core:<version>\")\n          }\n        }\n        jvmMain {\n          dependencies {\n            implementation(\"io.ktor:ktor-client-okhttp:<version>\")\n          }\n        }\n      }\n    }\n\n    // TODO: Gradle doesn't generate accessors for this use case, so we can't call `tasks.shadowJar` directly like the other examples.\n    tasks.named<com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar>(\"shadowJar\") {\n      manifest {\n        // Optionally, set the main class for the shadowed JAR.\n        attributes[\"Main-Class\"] = \"com.example.MainKt\"\n      }\n    }\n    ```\n\n=== \":simple-apachegroovy: build.gradle\"\n\n    ```groovy\n    plugins {\n      id 'org.jetbrains.kotlin.multiplatform'\n      id 'com.gradleup.shadow'\n    }\n\n    kotlin {\n      jvm().mainRun {\n        // Optionally, set the main class for `runJvm`.\n        it.mainClass.set('myapp.MainKt')\n      }\n      sourceSets {\n        commonMain {\n          dependencies {\n            implementation \"io.ktor:ktor-client-core:<version>\"\n          }\n        }\n        jvmMain {\n          dependencies {\n            implementation \"io.ktor:ktor-client-okhttp:<version>\"\n          }\n        }\n      }\n    }\n\n    tasks.named('shadowJar', com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar) {\n      manifest {\n        // Optionally, set the main class for the shadowed JAR.\n        attributes 'Main-Class': 'com.example.MainKt'\n      }\n    }\n    ```\n\n## Kotlin Module Metadata Remapping\n\nKotlin module metadata (`.kotlin_module`) files contain information about package parts and facades. When relocating\nclasses, Shadow automatically relocates the packages and facades inside the Kotlin module metadata files. This feature\nis enabled by default via the deprecated `enableKotlinModuleRemapping` property.\n\nTo explicitly apply this remapping (recommended for future compatibility), add\n[`KotlinModuleMetadataTransformer`][KotlinModuleMetadataTransformer] to your task configuration:\n\n=== \":material-language-kotlin: build.gradle.kts\"\n\n    ```kotlin\n    tasks.shadowJar {\n      transform<com.github.jengelman.gradle.plugins.shadow.transformers.KotlinModuleMetadataTransformer>()\n    }\n    ```\n\n=== \":simple-apachegroovy: build.gradle\"\n\n    ```groovy\n    tasks.named('shadowJar', com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar) {\n      transform(com.github.jengelman.gradle.plugins.shadow.transformers.KotlinModuleMetadataTransformer)\n    }\n    ```\n\n\n[org.jetbrains.kotlin.multiplatform]: https://kotlinlang.org/docs/multiplatform-intro.html\n[KotlinModuleMetadataTransformer]: ../api/shadow/com.github.jengelman.gradle.plugins.shadow.transformers/-kotlin-module-metadata-transformer/index.html\n[dependency-on-the-standard-library]: https://kotlinlang.org/docs/gradle-configure-project.html#dependency-on-the-standard-library\n[publishing-libraries]: ../publishing/README.md\n[running-applications]: ../application-plugin/README.md\n"},"files":{"docs/groovy-and-scala-plugins/README.md":"# Integrating with Groovy and Scala Plugins\n\nShadow also works well for Groovy and Scala, here are integration examples:\n\nFor Groovy:\n\n=== \":material-language-kotlin: build.gradle.kts\"\n\n    ```kotlin\n    plugins {\n      groovy\n      id(\"com.gradleup.shadow\")\n    }\n\n    tasks.shadowJar {\n      manifest {\n        // Optionally, set the main class for the shadowed JAR.\n        attributes[\"Main-Class\"] = \"com.example.Main\"\n      }\n    }\n    ```\n\n=== \":simple-apachegroovy: build.gradle\"\n\n    ```groovy\n    plugins {\n      id 'groovy'\n      id 'com.gradleup.shadow'\n    }\n\n    tasks.named('shadowJar', com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar) {\n      manifest {\n        // Optionally, set the main class for the shadowed JAR.\n        attributes 'Main-Class': 'com.example.Main'\n      }\n    }\n    ```\n\nFor Scala:\n\n=== \":material-language-kotlin: build.gradle.kts\"\n\n    ```kotlin\n    plugins {\n      scala\n      id(\"com.gradleup.shadow\")\n    }\n\n    tasks.shadowJar {\n      manifest {\n        // Optionally, set the main class for the shadowed JAR.\n        attributes[\"Main-Class\"] = \"com.example.Main\"\n      }\n    }\n    ```\n\n=== \":simple-apachegroovy: build.gradle\"\n\n    ```groovy\n    plugins {\n      id 'scala'\n      id 'com.gradleup.shadow'\n    }\n\n    tasks.named('shadowJar', com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar) {\n      manifest {\n        // Optionally, set the main class for the shadowed JAR.\n        attributes 'Main-Class': 'com.example.Main'\n      }\n    }\n    ```\n\nYou can customize the other configurations of the `shadowJar` task as needed, just like with Java projects.\n","docs/android-plugins/README.md":"# Integrating with Android Plugins\n\nNow you can bundle and publish multiple Android libraries as one with\n[Android Fused Library Plugin][android-fused-library-plugin], which is officially supported by Android.\n\n\n[android-fused-library-plugin]: https://developer.android.com/build/publish-library/fused-library\n","AGENTS.md":"# AGENTS.md\n\nAgents MUST read and strictly follow all rules defined in [`CONTRIBUTING.md`](CONTRIBUTING.md).\n\n**Instructions for AI Agents:**\n\n1. Make an atomic commit after completing each task.\n2. Pass `--non-interactive` to Gradle commands to disable interactive console prompts.\n3. Prefer using the `gh` CLI for GitHub-related tasks.\n4. Do not run Gradle tasks when performing code reviews.\n","docs/kotlin-plugins/README.md":"# Integrating with Kotlin Plugins\n\nKotlin standard libraries (stdlib) are added by Kotlin plugins by default via `implementation` (`runtimeClasspath`),\nthey will be bundled into the shadowed JARs automatically. If you don't need a standard library at all, you can add the\nfollowing Gradle property to your gradle.properties file:\n\n```properties\nkotlin.stdlib.default.dependency=false\n```\n\nKotlin compilations may still require the standard libraries, you can add them into `compileOnly` (`compileClasspath`)\nto make sure compilations success and avoid shadowing as follows:\n\n=== \":material-language-kotlin: build.gradle.kts\"\n\n    ```kotlin\n    dependencies {\n      compileOnly(\"org.jetbrains.kotlin:kotlin-stdlib:<version>\")\n    }\n    ```\n\n=== \":simple-apachegroovy: build.gradle\"\n\n    ```groovy\n    dependencies {\n      compileOnly 'org.jetbrains.kotlin:kotlin-stdlib:<version>'\n    }\n    ```\n\nSee more information about [Dependency on the standard library][dependency-on-the-standard-library].\n\n## For Kotlin JVM Plugin\n\nShadow works well for Kotlin JVM projects like Java projects. Here is an example:\n\n=== \":material-language-kotlin: build.gradle.kts\"\n\n    ```kotlin\n    plugins {\n      id(\"org.jetbrains.kotlin.jvm\")\n      id(\"com.gradleup.shadow\")\n    }\n\n    dependencies {\n      implementation(\"io.ktor:ktor-client-okhttp:3.1.0\")\n    }\n    ```\n\n=== \":simple-apachegroovy: build.gradle\"\n\n    ```groovy\n    plugins {\n      id 'org.jetbrains.kotlin.jvm'\n      id 'com.gradleup.shadow'\n    }\n\n    dependencies {\n      implementation 'io.ktor:ktor-client-okhttp:3.1.0'\n    }\n    ```\n\nYou can mix the Kotlin JVM plugin with `java-gradle-plugin`, `application`, and other Java plugins, easily organize your\nbuild logic for [Publishing Libraries][publishing-libraries], [Running Applications][running-applications], and so on.\n\n## For Kotlin Multiplatform Plugin\n\nShadow honors Kotlin's [`org.jetbrains.kotlin.multiplatform`][org.jetbrains.kotlin.multiplatform] plugin and will\nautomatically configure additional tasks for bundling the shadowed JAR for its `jvm` target.\n\n=== \":material-language-kotlin: build.gradle.kts\"\n\n    ```kotlin\n    plugins {\n      id(\"org.jetbrains.kotlin.multiplatform\")\n      id(\"com.gradleup.shadow\")\n    }\n\n    kotlin {\n      @Suppress(\"OPT_IN_USAGE\")\n      jvm().mainRun {\n        // Optionally, set the main class for `runJvm`.\n        mainClass = \"myapp.MainKt\"\n      }\n      sourceSets {\n        commonMain {\n          dependencies {\n            implementation(\"io.ktor:ktor-client-core:<version>\")\n          }\n        }\n        jvmMain {\n          dependencies {\n            implementation(\"io.ktor:ktor-client-okhttp:<version>\")\n          }\n        }\n      }\n    }\n\n    // TODO: Gradle doesn't generate accessors for this use case, so we can't call `tasks.shadowJar` directly like the other examples.\n    tasks.named<com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar>(\"shadowJar\") {\n      manifest {\n        // Optionally, set the main class for the shadowed JAR.\n        attributes[\"Main-Class\"] = \"com.example.MainKt\"\n      }\n    }\n    ```\n\n=== \":simple-apachegroovy: build.gradle\"\n\n    ```groovy\n    plugins {\n      id 'org.jetbrains.kotlin.multiplatform'\n      id 'com.gradleup.shadow'\n    }\n\n    kotlin {\n      jvm().mainRun {\n        // Optionally, set the main class for `runJvm`.\n        it.mainClass.set('myapp.MainKt')\n      }\n      sourceSets {\n        commonMain {\n          dependencies {\n            implementation \"io.ktor:ktor-client-core:<version>\"\n          }\n        }\n        jvmMain {\n          dependencies {\n            implementation \"io.ktor:ktor-client-okhttp:<version>\"\n          }\n        }\n      }\n    }\n\n    tasks.named('shadowJar', com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar) {\n      manifest {\n        // Optionally, set the main class for the shadowed JAR.\n        attributes 'Main-Class': 'com.example.MainKt'\n      }\n    }\n    ```\n\n## Kotlin Module Metadata Remapping\n\nKotlin module metadata (`.kotlin_module`) files contain information about package parts and facades. When relocating\nclasses, Shadow automatically relocates the packages and facades inside the Kotlin module metadata files. This feature\nis enabled by default via the deprecated `enableKotlinModuleRemapping` property.\n\nTo explicitly apply this remapping (recommended for future compatibility), add\n[`KotlinModuleMetadataTransformer`][KotlinModuleMetadataTransformer] to your task configuration:\n\n=== \":material-language-kotlin: build.gradle.kts\"\n\n    ```kotlin\n    tasks.shadowJar {\n      transform<com.github.jengelman.gradle.plugins.shadow.transformers.KotlinModuleMetadataTransformer>()\n    }\n    ```\n\n=== \":simple-apachegroovy: build.gradle\"\n\n    ```groovy\n    tasks.named('shadowJar', com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar) {\n      transform(com.github.jengelman.gradle.plugins.shadow.transformers.KotlinModuleMetadataTransformer)\n    }\n    ```\n\n\n[org.jetbrains.kotlin.multiplatform]: https://kotlinlang.org/docs/multiplatform-intro.html\n[KotlinModuleMetadataTransformer]: ../api/shadow/com.github.jengelman.gradle.plugins.shadow.transformers/-kotlin-module-metadata-transformer/index.html\n[dependency-on-the-standard-library]: https://kotlinlang.org/docs/gradle-configure-project.html#dependency-on-the-standard-library\n[publishing-libraries]: ../publishing/README.md\n[running-applications]: ../application-plugin/README.md\n"},"items":[{"name":"AGENTS.md","path":"AGENTS.md","rawUrl":"https://raw.githubusercontent.com/GradleUp/shadow/HEAD/AGENTS.md","title":"AI Agent Protocol & Instructions","category":"root-instruction","format":"markdown","content":"# AGENTS.md\n\nAgents MUST read and strictly follow all rules defined in [`CONTRIBUTING.md`](CONTRIBUTING.md).\n\n**Instructions for AI Agents:**\n\n1. Make an atomic commit after completing each task.\n2. Pass `--non-interactive` to Gradle commands to disable interactive console prompts.\n3. Prefer using the `gh` CLI for GitHub-related tasks.\n4. Do not run Gradle tasks when performing code reviews.\n","isInternal":false,"tokens":92,"sizeBytes":395},{"name":"README.md","path":"docs/android-plugins/README.md","rawUrl":"https://raw.githubusercontent.com/GradleUp/shadow/HEAD/docs/android-plugins/README.md","title":"android-plugins Documentation","category":"plugin-manifest","format":"markdown","content":"# Integrating with Android Plugins\n\nNow you can bundle and publish multiple Android libraries as one with\n[Android Fused Library Plugin][android-fused-library-plugin], which is officially supported by Android.\n\n\n[android-fused-library-plugin]: https://developer.android.com/build/publish-library/fused-library\n","isInternal":false,"tokens":60,"sizeBytes":310},{"name":"README.md","path":"docs/groovy-and-scala-plugins/README.md","rawUrl":"https://raw.githubusercontent.com/GradleUp/shadow/HEAD/docs/groovy-and-scala-plugins/README.md","title":"groovy-and-scala-plugins Documentation","category":"plugin-manifest","format":"markdown","content":"# Integrating with Groovy and Scala Plugins\n\nShadow also works well for Groovy and Scala, here are integration examples:\n\nFor Groovy:\n\n=== \":material-language-kotlin: build.gradle.kts\"\n\n    ```kotlin\n    plugins {\n      groovy\n      id(\"com.gradleup.shadow\")\n    }\n\n    tasks.shadowJar {\n      manifest {\n        // Optionally, set the main class for the shadowed JAR.\n        attributes[\"Main-Class\"] = \"com.example.Main\"\n      }\n    }\n    ```\n\n=== \":simple-apachegroovy: build.gradle\"\n\n    ```groovy\n    plugins {\n      id 'groovy'\n      id 'com.gradleup.shadow'\n    }\n\n    tasks.named('shadowJar', com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar) {\n      manifest {\n        // Optionally, set the main class for the shadowed JAR.\n        attributes 'Main-Class': 'com.example.Main'\n      }\n    }\n    ```\n\nFor Scala:\n\n=== \":material-language-kotlin: build.gradle.kts\"\n\n    ```kotlin\n    plugins {\n      scala\n      id(\"com.gradleup.shadow\")\n    }\n\n    tasks.shadowJar {\n      manifest {\n        // Optionally, set the main class for the shadowed JAR.\n        attributes[\"Main-Class\"] = \"com.example.Main\"\n      }\n    }\n    ```\n\n=== \":simple-apachegroovy: build.gradle\"\n\n    ```groovy\n    plugins {\n      id 'scala'\n      id 'com.gradleup.shadow'\n    }\n\n    tasks.named('shadowJar', com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar) {\n      manifest {\n        // Optionally, set the main class for the shadowed JAR.\n        attributes 'Main-Class': 'com.example.Main'\n      }\n    }\n    ```\n\nYou can customize the other configurations of the `shadowJar` task as needed, just like with Java projects.\n","isInternal":false,"tokens":390,"sizeBytes":1621},{"name":"README.md","path":"docs/kotlin-plugins/README.md","rawUrl":"https://raw.githubusercontent.com/GradleUp/shadow/HEAD/docs/kotlin-plugins/README.md","title":"kotlin-plugins Documentation","category":"plugin-manifest","format":"markdown","content":"# Integrating with Kotlin Plugins\n\nKotlin standard libraries (stdlib) are added by Kotlin plugins by default via `implementation` (`runtimeClasspath`),\nthey will be bundled into the shadowed JARs automatically. If you don't need a standard library at all, you can add the\nfollowing Gradle property to your gradle.properties file:\n\n```properties\nkotlin.stdlib.default.dependency=false\n```\n\nKotlin compilations may still require the standard libraries, you can add them into `compileOnly` (`compileClasspath`)\nto make sure compilations success and avoid shadowing as follows:\n\n=== \":material-language-kotlin: build.gradle.kts\"\n\n    ```kotlin\n    dependencies {\n      compileOnly(\"org.jetbrains.kotlin:kotlin-stdlib:<version>\")\n    }\n    ```\n\n=== \":simple-apachegroovy: build.gradle\"\n\n    ```groovy\n    dependencies {\n      compileOnly 'org.jetbrains.kotlin:kotlin-stdlib:<version>'\n    }\n    ```\n\nSee more information about [Dependency on the standard library][dependency-on-the-standard-library].\n\n## For Kotlin JVM Plugin\n\nShadow works well for Kotlin JVM projects like Java projects. Here is an example:\n\n=== \":material-language-kotlin: build.gradle.kts\"\n\n    ```kotlin\n    plugins {\n      id(\"org.jetbrains.kotlin.jvm\")\n      id(\"com.gradleup.shadow\")\n    }\n\n    dependencies {\n      implementation(\"io.ktor:ktor-client-okhttp:3.1.0\")\n    }\n    ```\n\n=== \":simple-apachegroovy: build.gradle\"\n\n    ```groovy\n    plugins {\n      id 'org.jetbrains.kotlin.jvm'\n      id 'com.gradleup.shadow'\n    }\n\n    dependencies {\n      implementation 'io.ktor:ktor-client-okhttp:3.1.0'\n    }\n    ```\n\nYou can mix the Kotlin JVM plugin with `java-gradle-plugin`, `application`, and other Java plugins, easily organize your\nbuild logic for [Publishing Libraries][publishing-libraries], [Running Applications][running-applications], and so on.\n\n## For Kotlin Multiplatform Plugin\n\nShadow honors Kotlin's [`org.jetbrains.kotlin.multiplatform`][org.jetbrains.kotlin.multiplatform] plugin and will\nautomatically configure additional tasks for bundling the shadowed JAR for its `jvm` target.\n\n=== \":material-language-kotlin: build.gradle.kts\"\n\n    ```kotlin\n    plugins {\n      id(\"org.jetbrains.kotlin.multiplatform\")\n      id(\"com.gradleup.shadow\")\n    }\n\n    kotlin {\n      @Suppress(\"OPT_IN_USAGE\")\n      jvm().mainRun {\n        // Optionally, set the main class for `runJvm`.\n        mainClass = \"myapp.MainKt\"\n      }\n      sourceSets {\n        commonMain {\n          dependencies {\n            implementation(\"io.ktor:ktor-client-core:<version>\")\n          }\n        }\n        jvmMain {\n          dependencies {\n            implementation(\"io.ktor:ktor-client-okhttp:<version>\")\n          }\n        }\n      }\n    }\n\n    // TODO: Gradle doesn't generate accessors for this use case, so we can't call `tasks.shadowJar` directly like the other examples.\n    tasks.named<com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar>(\"shadowJar\") {\n      manifest {\n        // Optionally, set the main class for the shadowed JAR.\n        attributes[\"Main-Class\"] = \"com.example.MainKt\"\n      }\n    }\n    ```\n\n=== \":simple-apachegroovy: build.gradle\"\n\n    ```groovy\n    plugins {\n      id 'org.jetbrains.kotlin.multiplatform'\n      id 'com.gradleup.shadow'\n    }\n\n    kotlin {\n      jvm().mainRun {\n        // Optionally, set the main class for `runJvm`.\n        it.mainClass.set('myapp.MainKt')\n      }\n      sourceSets {\n        commonMain {\n          dependencies {\n            implementation \"io.ktor:ktor-client-core:<version>\"\n          }\n        }\n        jvmMain {\n          dependencies {\n            implementation \"io.ktor:ktor-client-okhttp:<version>\"\n          }\n        }\n      }\n    }\n\n    tasks.named('shadowJar', com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar) {\n      manifest {\n        // Optionally, set the main class for the shadowed JAR.\n        attributes 'Main-Class': 'com.example.MainKt'\n      }\n    }\n    ```\n\n## Kotlin Module Metadata Remapping\n\nKotlin module metadata (`.kotlin_module`) files contain information about package parts and facades. When relocating\nclasses, Shadow automatically relocates the packages and facades inside the Kotlin module metadata files. This feature\nis enabled by default via the deprecated `enableKotlinModuleRemapping` property.\n\nTo explicitly apply this remapping (recommended for future compatibility), add\n[`KotlinModuleMetadataTransformer`][KotlinModuleMetadataTransformer] to your task configuration:\n\n=== \":material-language-kotlin: build.gradle.kts\"\n\n    ```kotlin\n    tasks.shadowJar {\n      transform<com.github.jengelman.gradle.plugins.shadow.transformers.KotlinModuleMetadataTransformer>()\n    }\n    ```\n\n=== \":simple-apachegroovy: build.gradle\"\n\n    ```groovy\n    tasks.named('shadowJar', com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar) {\n      transform(com.github.jengelman.gradle.plugins.shadow.transformers.KotlinModuleMetadataTransformer)\n    }\n    ```\n\n\n[org.jetbrains.kotlin.multiplatform]: https://kotlinlang.org/docs/multiplatform-intro.html\n[KotlinModuleMetadataTransformer]: ../api/shadow/com.github.jengelman.gradle.plugins.shadow.transformers/-kotlin-module-metadata-transformer/index.html\n[dependency-on-the-standard-library]: https://kotlinlang.org/docs/gradle-configure-project.html#dependency-on-the-standard-library\n[publishing-libraries]: ../publishing/README.md\n[running-applications]: ../application-plugin/README.md\n","isInternal":false,"tokens":1210,"sizeBytes":5414}],"systemPromptSnippet":"<yakaai_skills repo=\"GradleUp/shadow\">\n<!-- File: AGENTS.md (Tokens: ~92 | Category: root-instruction) -->\n# AGENTS.md\n\nAgents MUST read and strictly follow all rules defined in [`CONTRIBUTING.md`](CONTRIBUTING.md).\n\n**Instructions for AI Agents:**\n\n1. Make an atomic commit after completing each task.\n2. Pass `--non-interactive` to Gradle commands to disable interactive console prompts.\n3. Prefer using the `gh` CLI for GitHub-related tasks.\n4. Do not run Gradle tasks when performing code reviews.\n\n<!-- File: docs/android-plugins/README.md (Tokens: ~60 | Category: plugin-manifest) -->\n# Integrating with Android Plugins\n\nNow you can bundle and publish multiple Android libraries as one with\n[Android Fused Library Plugin][android-fused-library-plugin], which is officially supported by Android.\n\n\n[android-fused-library-plugin]: https://developer.android.com/build/publish-library/fused-library\n\n<!-- File: docs/groovy-and-scala-plugins/README.md (Tokens: ~390 | Category: plugin-manifest) -->\n# Integrating with Groovy and Scala Plugins\n\nShadow also works well for Groovy and Scala, here are integration examples:\n\nFor Groovy:\n\n=== \":material-language-kotlin: build.gradle.kts\"\n\n    ```kotlin\n    plugins {\n      groovy\n      id(\"com.gradleup.shadow\")\n    }\n\n    tasks.shadowJar {\n      manifest {\n        // Optionally, set the main class for the shadowed JAR.\n        attributes[\"Main-Class\"] = \"com.example.Main\"\n      }\n    }\n    ```\n\n=== \":simple-apachegroovy: build.gradle\"\n\n    ```groovy\n    plugins {\n      id 'groovy'\n      id 'com.gradleup.shadow'\n    }\n\n    tasks.named('shadowJar', com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar) {\n      manifest {\n        // Optionally, set the main class for the shadowed JAR.\n        attributes 'Main-Class': 'com.example.Main'\n      }\n    }\n    ```\n\nFor Scala:\n\n=== \":material-language-kotlin: build.gradle.kts\"\n\n    ```kotlin\n    plugins {\n      scala\n      id(\"com.gradleup.shadow\")\n    }\n\n    tasks.shadowJar {\n      manifest {\n        // Optionally, set the main class for the shadowed JAR.\n        attributes[\"Main-Class\"] = \"com.example.Main\"\n      }\n    }\n    ```\n\n=== \":simple-apachegroovy: build.gradle\"\n\n    ```groovy\n    plugins {\n      id 'scala'\n      id 'com.gradleup.shadow'\n    }\n\n    tasks.named('shadowJar', com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar) {\n      manifest {\n        // Optionally, set the main class for the shadowed JAR.\n        attributes 'Main-Class': 'com.example.Main'\n      }\n    }\n    ```\n\nYou can customize the other configurations of the `shadowJar` task as needed, just like with Java projects.\n\n<!-- File: docs/kotlin-plugins/README.md (Tokens: ~1210 | Category: plugin-manifest) -->\n# Integrating with Kotlin Plugins\n\nKotlin standard libraries (stdlib) are added by Kotlin plugins by default via `implementation` (`runtimeClasspath`),\nthey will be bundled into the shadowed JARs automatically. If you don't need a standard library at all, you can add the\nfollowing Gradle property to your gradle.properties file:\n\n```properties\nkotlin.stdlib.default.dependency=false\n```\n\nKotlin compilations may still require the standard libraries, you can add them into `compileOnly` (`compileClasspath`)\nto make sure compilations success and avoid shadowing as follows:\n\n=== \":material-language-kotlin: build.gradle.kts\"\n\n    ```kotlin\n    dependencies {\n      compileOnly(\"org.jetbrains.kotlin:kotlin-stdlib:<version>\")\n    }\n    ```\n\n=== \":simple-apachegroovy: build.gradle\"\n\n    ```groovy\n    dependencies {\n      compileOnly 'org.jetbrains.kotlin:kotlin-stdlib:<version>'\n    }\n    ```\n\nSee more information about [Dependency on the standard library][dependency-on-the-standard-library].\n\n## For Kotlin JVM Plugin\n\nShadow works well for Kotlin JVM projects like Java projects. Here is an example:\n\n=== \":material-language-kotlin: build.gradle.kts\"\n\n    ```kotlin\n    plugins {\n      id(\"org.jetbrains.kotlin.jvm\")\n      id(\"com.gradleup.shadow\")\n    }\n\n    dependencies {\n      implementation(\"io.ktor:ktor-client-okhttp:3.1.0\")\n    }\n    ```\n\n=== \":simple-apachegroovy: build.gradle\"\n\n    ```groovy\n    plugins {\n      id 'org.jetbrains.kotlin.jvm'\n      id 'com.gradleup.shadow'\n    }\n\n    dependencies {\n      implementation 'io.ktor:ktor-client-okhttp:3.1.0'\n    }\n    ```\n\nYou can mix the Kotlin JVM plugin with `java-gradle-plugin`, `application`, and other Java plugins, easily organize your\nbuild logic for [Publishing Libraries][publishing-libraries], [Running Applications][running-applications], and so on.\n\n## For Kotlin Multiplatform Plugin\n\nShadow honors Kotlin's [`org.jetbrains.kotlin.multiplatform`][org.jetbrains.kotlin.multiplatform] plugin and will\nautomatically configure additional tasks for bundling the shadowed JAR for its `jvm` target.\n\n=== \":material-language-kotlin: build.gradle.kts\"\n\n    ```kotlin\n    plugins {\n      id(\"org.jetbrains.kotlin.multiplatform\")\n      id(\"com.gradleup.shadow\")\n    }\n\n    kotlin {\n      @Suppress(\"OPT_IN_USAGE\")\n      jvm().mainRun {\n        // Optionally, set the main class for `runJvm`.\n        mainClass = \"myapp.MainKt\"\n      }\n      sourceSets {\n        commonMain {\n          dependencies {\n            implementation(\"io.ktor:ktor-client-core:<version>\")\n          }\n        }\n        jvmMain {\n          dependencies {\n            implementation(\"io.ktor:ktor-client-okhttp:<version>\")\n          }\n        }\n      }\n    }\n\n    // TODO: Gradle doesn't generate accessors for this use case, so we can't call `tasks.shadowJar` directly like the other examples.\n    tasks.named<com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar>(\"shadowJar\") {\n      manifest {\n        // Optionally, set the main class for the shadowed JAR.\n        attributes[\"Main-Class\"] = \"com.example.MainKt\"\n      }\n    }\n    ```\n\n=== \":simple-apachegroovy: build.gradle\"\n\n    ```groovy\n    plugins {\n      id 'org.jetbrains.kotlin.multiplatform'\n      id 'com.gradleup.shadow'\n    }\n\n    kotlin {\n      jvm().mainRun {\n        // Optionally, set the main class for `runJvm`.\n        it.mainClass.set('myapp.MainKt')\n      }\n      sourceSets {\n        commonMain {\n          dependencies {\n            implementation \"io.ktor:ktor-client-core:<version>\"\n          }\n        }\n        jvmMain {\n          dependencies {\n            implementation \"io.ktor:ktor-client-okhttp:<version>\"\n          }\n        }\n      }\n    }\n\n    tasks.named('shadowJar', com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar) {\n      manifest {\n        // Optionally, set the main class for the shadowed JAR.\n        attributes 'Main-Class': 'com.example.MainKt'\n      }\n    }\n    ```\n\n## Kotlin Module Metadata Remapping\n\nKotlin module metadata (`.kotlin_module`) files contain information about package parts and facades. When relocating\nclasses, Shadow automatically relocates the packages and facades inside the Kotlin module metadata files. This feature\nis enabled by default via the deprecated `enableKotlinModuleRemapping` property.\n\nTo explicitly apply this remapping (recommended for future compatibility), add\n[`KotlinModuleMetadataTransformer`][KotlinModuleMetadataTransformer] to your task configuration:\n\n=== \":material-language-kotlin: build.gradle.kts\"\n\n    ```kotlin\n    tasks.shadowJar {\n      transform<com.github.jengelman.gradle.plugins.shadow.transformers.KotlinModuleMetadataTransformer>()\n    }\n    ```\n\n=== \":simple-apachegroovy: build.gradle\"\n\n    ```groovy\n    tasks.named('shadowJar', com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar) {\n      transform(com.github.jengelman.gradle.plugins.shadow.transformers.KotlinModuleMetadataTransformer)\n    }\n    ```\n\n\n[org.jetbrains.kotlin.multiplatform]: https://kotlinlang.org/docs/multiplatform-intro.html\n[KotlinModuleMetadataTransformer]: ../api/shadow/com.github.jengelman.gradle.plugins.shadow.transformers/-kotlin-module-metadata-transformer/index.html\n[dependency-on-the-standard-library]: https://kotlinlang.org/docs/gradle-configure-project.html#dependency-on-the-standard-library\n[publishing-libraries]: ../publishing/README.md\n[running-applications]: ../application-plugin/README.md\n</yakaai_skills>"}