К основному содержанию
скилл CX Codex

kotlin-tooling-java-to-kotlin — скилл для Claude Code: перевод Java

Конвертирует Java-файлы в идиоматичный Kotlin по четырёхшаговой методике с проверкой инвариантов и подсказками под популярные фреймворки.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add Kotlin/kotlin-agent-skills --skill kotlin-tooling-java-to-kotlin -a claude-code
Открыть на GitHub

Что делает kotlin-tooling-java-to-kotlin

Скилл включается, когда в разговоре всплывают файлы .java, которые пора превратить в .kt, или вы прямо просите перевести код с Java на Kotlin. Сначала он читает импорты и по таблице определяет фреймворки: Spring, Lombok, Hibernate, Jackson, Dagger/Hilt, RxJava, JUnit, Retrofit и другие. Подгружаются только нужные справочники, поэтому контекст не забивается лишним.

Дальше идёт цепочка из четырёх шагов: точный перевод один к одному, разбор nullable-типов и val/var, замена коллекций Java на типы Kotlin, потом идиоматические улучшения вроде свойств и строковых шаблонов. После каждого шага проверяются пять инвариантов, и при нарушении шаг откатывается. Готовый файл пишется рядом с исходником, а git mv с отдельным коммитом сохраняет историю git blame.

Есть пакетный режим: файлы сортируются по зависимостям, листовые конвертируются первыми. В конце скилл пытается собрать файл и прогнать тесты. Без работающей сборки проекта проверить результат не получится, так что окружение должно собираться ещё до старта.

Какие задачи решает

  • перевести класс Java в идиоматичный Kotlin без потери поведения
  • сохранить историю git blame при смене расширения файла
  • разобраться с аннотациями Lombok и их аналогами в Kotlin
  • конвертировать пачку файлов в правильном порядке зависимостей
  • проверить, что после миграции сборка и тесты проходят

Примеры запросов агенту

  • Переведи src/main/java/com/example/OrderService.java на Kotlin и сохрани историю в Git
  • Сконвертируй пакет com.example.api с Java на Kotlin, начиная с листовых классов
  • Этот файл на Spring и Jackson — сделай из него идиоматичный .kt без изменения API

Как установить kotlin-tooling-java-to-kotlin

1Через Skills CLI (Vercel)

npx skills add Kotlin/kotlin-agent-skills --skill kotlin-tooling-java-to-kotlin -a claude-code

2Вручную: положить файлы

~/.claude/skills/kotlin-tooling-java-to-kotlin/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/kotlin-tooling-java-to-kotlin/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о kotlin-tooling-java-to-kotlin

Как установить kotlin-tooling-java-to-kotlin в Claude Code?

Выполните npx skills add Kotlin/kotlin-agent-skills --skill kotlin-tooling-java-to-kotlin -a claude-code, скилл появится в ~/.claude/skills/kotlin-tooling-java-to-kotlin/SKILL.md.

Что делает kotlin-tooling-java-to-kotlin?

Переводит Java-файлы в Kotlin по четырёхшаговой методике, учитывает фреймворки по импортам и проверяет инварианты после каждого шага.

Какие фреймворки поддерживаются?

Spring, Lombok, Hibernate, Jackson, Micronaut, Quarkus, Dagger/Hilt, RxJava, JUnit, Guice, Retrofit и Mockito — справочник подгружается по импортам в файле.

Исходный текст

SKILL.md · Apache-2.0
---
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 variance

© JetBrains · Apache-2.0 · Kotlin/kotlin-agent-skills

Похожие скиллы

Все скиллы по теме «Языки программирования» →
migrate-to-shoehorn Matt Pocock Переводит type assertions с as в тестах на функции из @total-typescript/shoehorn. Нужен для частичных объектов и намеренно неверных данных в проверках. 475 388установок write-swift emilkowalski Скилл помогает писать, проверять и переносить код на Swift с учётом модели языка. Подойдёт, когда нужно разобраться с конкурентностью, ошибкой или циклом удержания объектов. CX Codex +1 119 300установок megacave JuliusBrussee Переводит ответы ассистента на классический китайский язык (вэньянь) для экономии места на экране. Активируется командами /megacave или /caveman wenyan. CX Codex +1 25 400установок find-docs upstash Тянет актуальную документацию, справочники API и примеры кода для любой библиотеки через Context7 CLI. Пригодится, когда агент отвечает по устаревшим данным обучения. CX Codex +1 9 400установок typescript-advanced-types Seth Hobson Помогает агенту писать сложную типизацию TypeScript: generics, conditional types и преобразования типов. Нужен для библиотек, API-клиентов и строгих конфигураций. CX Codex 92 169установок smart-explore thedotmack Структурно ищет функции и классы через tree-sitter. Пригодится, когда нужно разобраться в кодовой базе без чтения всех файлов. CX Codex +1 7 300установок

Из того же набора10

kotlin-tooling-agp9-migration Ведёт проект Kotlin Multiplatform через переход на Android Gradle Plugin 9.0: замена плагинов, разбиение модулей, перенос DSL. CX Codex +1 2 200установок kotlin-tooling-cocoapods-spm-migration Скилл переносит KMP-проект с CocoaPods на Swift Package Manager: меняет Gradle DSL, импорты Kotlin и настройки Xcode. Нужен для поэтапной миграции. CX Codex +1 1 800установок kotlin-backend-jpa-entity-mapping Учит агента правильно писать JPA-сущности на Kotlin для Spring Data JPA и Hibernate: идентичность, equals/hashCode, связи, выборки. CX Codex +1 1 600установок kotlin-tooling-immutable-collections-0-5-x-migration Скилл ведёт миграцию Kotlin и Java с kotlinx.collections.immutable 0.3.x и 0.4.x на 0.5.x: поднимает версию и переименовывает методы по подсказкам компилятора. CX Codex +1 1 000установок kotlin-tooling-native-build-performance Разбирает, почему iOS-сборка в Kotlin Multiplatform идёт медленно, и предлагает безопасные правки с замером до и после. CX Codex +1 943установок kotlin-tooling-kotlin-toolchain Скилл учит агента работать с Kotlin Toolchain — единым CLI JetBrains вместо Gradle-скриптов. Пригодится, если в репозитории лежат project.yaml и module.yaml. CX Codex +1 449установок kotlin-tooling-gradle-to-kotlin-toolchain-project Пошагово переводит проект с Gradle на Kotlin Toolchain: переносит зависимости, заменяет плагины и правит CI. Пригодится при полной миграции репозитория без изменения бизнес-логики. CX Codex +1 426установок kotlin-tooling-kotlin-toolchain-plugin-authoring Помогает писать локальные плагины Kotlin Toolchain: генерация кода, проверки и упаковка, которые не выразить в module.yaml. CX Codex +1 419установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой