Agent skill · Audited from source
kotlin-tooling-java-to-kotlin
skill · kotlin/kotlin-agent-skillsApache-2.0 licenceAudited 24 Oct 2026 · source 25b8117b6cd6
Is it safe? With care — CAUTION, grade C (79/100). We read this skill's source at commit 25b8117b6cd6 and found no filesystem, network or shell access and no hard-coded secrets. The audit raised 3 findings, 1 critical or high. What it does: Use when converting Java source files to idiomatic Kotlin, when user mentions "java to kotlin", "j2k", "convert java", "migrate java to kotlin", or when working with .java files that need to become .kt files. Handles…
Cite
Cite this page
ModelsAtlas. “kotlin-tooling-java-to-kotlin (kotlin/kotlin-agent-skills)”. Retrieved 24 Oct 2026. https://modelsatlas.com/skills/kotlin/kotlin-tooling-java-to-kotlin
Trust audit
Audit 0.4.1 · source read 24 Oct 2026
CAUTION means the audit found things worth knowing before you trust this skill. Grade C is shared by 84 of 14,816 audited skills.
What the source does
- FilesystemNone observedNo reads or writes in the source
- NetworkNone observedNo outbound calls in the source
- ShellNone observedNo commands run in the source
- DependenciesPinnedNothing floats
- SecretsNone foundNo keys in source
Five audit layers
| Layer | What we check | Result | Findings |
|---|---|---|---|
L0 Provenance | Repo owner, licence, archive status, activity | WARN | 1 |
L1 Static source | Secrets, path traversal, supply chain, hidden code | NA | 0 |
L2 Instructions | Prompt injection, authority framing, hidden directives | FAIL | 2 |
L3 Inventory | The files and declarations match the source | PASS | 0 |
L4 Sandbox | Run in isolation and watch behaviour | SKIPPED why | 0 |
Gates applied: instruction override, no behavioural pass.
Findings (3)
HIGHPrompt injectionprompt.override · references/KNOWN-ISSUES.md:52
Java types without nullability annotations (`@Nullable`, `@NotNull`, `@NonNull`) become "platform types" (`T!`) in Kotlin. Platform types bypass Kotlin's null-safety system — they are neither nullable
- Why
- asks the agent to drop prior instructions or safety
- Fix
- remove the instruction
MEDIUMInventory / provenanceinv.symlink · plugins/kotlin-agent-skills/skills
plugins/kotlin-agent-skills/skills
- Why
- link not followed
- Fix
- —
INFOPrompt injectionprompt.authority_framing · references/CONVERSION-METHODOLOGY.md:3
You are a senior Kotlin engineer and Java-Kotlin JVM interop specialist. Your task is
- Why
- No further detail recorded for this rule.
- Fix
- —
Audit 0.4.1 · source sha 25b8117b6cd6 · 24 Oct 2026Report an issue or request a re-scan
Provenance
Who published it, and what the verdict is pinned to
- Publisherkotlin GitHub organizationOwner of the repository this skill is read from
- Source folderkotlin/kotlin-agent-skills/skills/kotlin-tooling-java-to-kotlinThe exact folder we audited
- LicenceApache-2.0As the repository states it
- Commit pinned for this verdict25b8117b6cd6A new audit runs when the source changes
- Repository statusNot archivedLast push 4 days ago
- Sandboxed runNot runSkills are read, not executed; layer L4 is skipped
What it tells the agent
Full source on GitHub ↗Its description: Use when converting Java source files to idiomatic Kotlin, when user mentions "java to kotlin", "j2k", "convert java", "migrate java to kotlin", or when working with .java files that need to become .kt files. Handles…
---
name: kotlin-tooling-java-to-kotlin
description: >
Use when converting Java source files to idiomatic Kotlin, when user mentions
"java to kotlin", "j2k", "convert java", "migrate java to kotlin", or when
working with .java files that need to become .kt files. Handles framework-aware
conversion for Spring, Lombok, Hibernate, Jackson, Micronaut, Quarkus, Dagger/Hilt,
RxJava, JUnit, Guice, Retrofit, and Mockito.
license: Apache-2.0
metadata:
author: JetBrains
version: "1.0.0"
---
# Java to Kotlin Conversion
Convert Java source files to idiomatic Kotlin using a disciplined 4-step conversion
methodology with 5 invariants checked at each step. Supports framework-aware conversion
that handles annotation site targets, library idioms, and API preservation.
## Workflow
```dot
digraph j2k_workflow {
rankdir=TB;
"User specifies files" -> "Step 0: Scan & Detect";
"Step 0: Scan & Detect" -> "Load framework guides";
"Load framework guides" -> "Step 1: Convert";
"Step 1: Convert" -> "Step 2: Write .kt";
"Step 2: Write .kt" -> "Step 3: Git rename";
"Step 3: Git rename" -> "Step 4: Verify";
"Step 4: Verify" -> "Next file?" [label="pass"];
"Step 4: Verify" -> "Fix issues" [label="fail"];
"Fix issues" -> "Step 1: Convert";
"Next file?" -> "Step 0: Scan & Detect" [label="batch: yes"];
"Next file?" -> "Done" [label="no more files"];
}
```
## Step 0: Scan & Detect Frameworks
Before converting, scan the Java file's import statements to detect which frameworks
are in use. Load ONLY the matching framework reference files to keep context focused.
### Framework Detection Table
| Import prefix | Framework guide |
|---|---|
| `org.springframework.*` | [SPRING.md](references/frameworks/SPRING.md) |
| `lombok.*` | [LOMBOK.md](references/frameworks/LOMBOK.md) |
| `javax.persistence.*`, `jakarta.persistence.*`, `org.hibernate.*` | [HIBERNATE.md](references/frameworks/HIBERNATE.md) |
| `com.fasterxml.jackson.*` | [JACKSON.md](references/frameworks/JACKSON.md) |
| `io.micronaut.*` | [MICRONAUT.md](references/frameworks/MICRONAUT.md) |
| `io.quarkus.*`, `javax.enterprise.*`, `jakarta.enterprise.*` | [QUARKUS.md](references/frameworks/QUARKUS.md) |
| `dagger.*`, `dagger.hilt.*` | [DAGGER-HILT.md](references/frameworks/DAGGER-HILT.md) |
| `io.reactivex.*`, `rx.*` | [RXJAVA.md](references/frameworks/RXJAVA.md) |
| `org.junit.*`, `org.testng.*` | [JUNIT.md](references/frameworks/JUNIT.md) |
| `com.google.inject.*` | [GUICE.md](references/frameworks/GUICE.md) |
| `retrofit2.*`, `okhttp3.*` | [RETROFIT.md](references/frameworks/RETROFIT.md) |
| `org.mockito.*` | [MOCKITO.md](references/frameworks/MOCKITO.md) |
If `javax.inject.*` is detected, check for Dagger/Hilt vs Guice by looking for other
imports from those frameworks. If ambiguous, load both guides.
## Step 1: Convert
Apply the conversion methodology from [CONVERSION-METHODOLOGY.md](references/CONVERSION-METHODOLOGY.md).
This is a 4-step chain-of-thought process:
1. **Faithful 1:1 translation** — exact semantics preserved
2. **Nullability & mutability audit** — val/var, nullable types
3. **Collection type conversion** — Java mutable → Kotlin types
4. **Idiomatic transformations** — properties, string templates, lambdas
Five invariants are checked after each step. If any invariant is violated, revert
to the previous step and redo.
Apply any loaded framework-specific guidance during step 4 (idiomatic transformations).
## Step 2: Write Output
Write the converted Kotlin code to a `.kt` file with the same name as the original
Java file, in the same directory.
## Step 3: Preserve Git History
To preserve `git blame` history, use a two-phase approach:
```bash
# Phase 1: Rename (creates rename tracking)
git mv src/main/java/com/example/Foo.java src/main/kotlin/com/example/Foo.kt
git commit -m "Rename Foo.java to Foo.kt"
# Phase 2: Replace content (tracked as modification, not new file)
# Write the converted Kotlin content to Foo.kt
git commit -m "Convert Foo from Java to Kotlin"
```
If the project keeps Java and Kotlin in the same source root (e.g., `src/main/java/`),
rename in place:
```bash
git mv src/main/java/com/example/Foo.java src/main/java/com/example/Foo.kt
```
If the project does not use Git, simply write the `.kt` file and delete the `.java` file.
## Step 4: Verify
After conversion, verify using [checklist.md](assets/checklist.md):
- Attempt to compile the converted file
- Run existing tests
- Check annotation site targets
- Confirm no behavioral changes
## Batch Conversion
When converting multiple files (a directory or package):
1. **List all `.java` files** in the target scope
2. **Sort by dependency order** — convert leaf dependencies first (files that don't
import other files in the conversion set), then work up to files that depend on them
3. **Convert one file at a time** — apply the full workflow (steps 0-4) for each
4. **Track progress** — report which files are done, which remain
5. **Handle cross-references** — after converting a file, update imports in other Java
files if needed (e.g., if a class moved packages)
For large batches, consider converting in packages (bottom-up from leaf packages).
## Common Pitfalls
See [KNOWN-ISSUES.md](references/KNOWN-ISSUES.md) for:
- Kotlin keyword conflicts (`when`, `in`, `is`, `object`)
- SAM conversion ambiguity
- Platform types from Java interop
- `@JvmStatic` / `@JvmField` / `@JvmOverloads` usage
- Checked exceptions and `@Throws`
- Wildcard generics → Kotlin varianceExcerpt, first 5,514 characters of SKILL.md, verbatim from the audited commit. It is text from someone else’s repository, quoted so you can judge it before your agent reads it.
Install
Pinned to the audited commit 25b8117
git clone https://github.com/kotlin/kotlin-agent-skills git -C kotlin-agent-skills checkout 25b8117b6cd6
The author documents no install command, so this uses the repository directly. Our verdict covers commit 25b8117b6cd6 only.
Works in
The author has not said which agents this skill supports, and we have not tested it in any.
Audit history
Every audit, every source change
- !CAUTION C 79 / 100
first audit · source
25b8117b6cd6
README badge
For maintainers · shows the latest audit
[](https://modelsatlas.com/skills/kotlin/kotlin-tooling-java-to-kotlin/)
The badge shows our verdict and grade for this skill, and links back to this page. It changes when the audit does.
Similar skills
All coding & review skills →chrisbanes/skills
Use when writing or reviewing Jetpack Compose motion: visibility enter/exit, animating one property toward a target, color or size transitions, multiple properties from one state, switching composable content, or…
chrisbanes/skills
Use when writing or reviewing Jetpack Compose UI for TV, keyboard, desktop, accessibility focus, D-pad navigation, FocusRequester, focusProperties, key events, or initial focus behavior.
chrisbanes/skills
Skills for Kotlin, Jetpack Compose, and Android development
chrisbanes/skills
Skills for Kotlin, Jetpack Compose, and Android development
chrisbanes/skills
Skills for Kotlin, Jetpack Compose, and Android development
chrisbanes/skills
Skills for Kotlin, Jetpack Compose, and Android development
Add this badge to your README
[](https://modelsatlas.com/skills/kotlin/kotlin-tooling-java-to-kotlin/)
<a href="https://modelsatlas.com/skills/kotlin/kotlin-tooling-java-to-kotlin/"><img src="https://modelsatlas.com/skills/kotlin/kotlin-tooling-java-to-kotlin/badge.svg" alt="ModelsAtlas: CAUTION C"></a>
Questions about kotlin-tooling-java-to-kotlin
What does the kotlin-tooling-java-to-kotlin skill do?
Is kotlin-tooling-java-to-kotlin safe to install?
What can kotlin-tooling-java-to-kotlin access on my machine?
How current is this page?
Sources
- github.com/kotlin/kotlin-agent-skills/tree/main/skills/kotlin-to — the audited source at commit 25b8117b6cd6 and every finding aboveObserved · 24 Oct 2026
Spotted something wrong? Report a correction · Methodology
Keep going in your AI
Opens with this page as the source. We add nothing else to the prompt.
- What does the kotlin-tooling-java-to-kotlin skill do?
- Is kotlin-tooling-java-to-kotlin safe to install?
- What can kotlin-tooling-java-to-kotlin access on my machine?