# 141-java-refactoring-with-modern-features

Скилл переводит старый Java-код на современные возможности языка: лямбды, Stream API, Optional, java.time. Пригодится, когда проект пора чистить от легаси.

- скилл · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 427 установок · ★ 456
- Автор: Juan Antonio Breña Moral
- Лицензия: Apache-2.0 · policy=mirror · лицензия открытая, файл — в исходнике
- Исходник: https://github.com/jabrena/plinth/tree/HEAD/skills/141-java-refactoring-with-modern-features/SKILL.md
- Обновлён: 2026-10-21
- HTML: https://affpapa.org/nevibecode/skills/141-java-refactoring-with-modern-features

## Что делает

Скилл ищет места, где Java-код можно переписать на возможностях Java 8+ и новее. В список входят лямбды и ссылки на методы вместо анонимных классов, Stream API вместо циклов с `Iterator`, `Optional` для null-безопасных API, `java.time` вместо `Date` и `Calendar`, фабричные методы коллекций (`List.of()`, `Set.of()`, `Map.of()`), текстовые блоки, вывод типов через `var`. Отдельно разобраны возможности Java 25: гибкие тела конструкторов (JEP 513) и объявления импорта модулей (JEP 511).

Устроено как последовательность шагов. Сначала скилл требует собрать проект командой `./mvnw compile` или `mvn compile` и остановиться, если сборка падает. Потом читает справочник `references/141-java-refactoring-with-modern-features.md` с примерами хорошего и плохого кода по каждой теме и выбирает кандидатов на переписывание. Дальше правки вносятся постепенно, с сохранением поведения, а в конце прогоняется `./mvnw clean verify` или `mvn clean verify`.

Сборка до начала работы — не формальность. Если проект не компилируется, скилл останавливается и не трогает код, потому что иначе не отличить старую ошибку от внесённой. При неясной области задачи он задаёт уточняющий вопрос, а при нехватке файлов или инструментов сообщает, чего нет.

## Установка

### Claude Code (родная платформа)

1. **Через Skills CLI (Vercel)**
```bash
npx skills add jabrena/plinth --skill 141-java-refactoring-with-modern-features -a claude-code
```

2. **Вручную: положить файлы**
- Файл: `~/.claude/skills/141-java-refactoring-with-modern-features/SKILL.md` — Папка скилла целиком; для одного проекта — .claude/skills/141-java-refactoring-with-modern-features/

### Codex

1. **Через Skills CLI (Vercel)**
```bash
npx skills add jabrena/plinth --skill 141-java-refactoring-with-modern-features -a codex
```

2. **Вручную: положить файлы**
- Файл: `.agents/skills/141-java-refactoring-with-modern-features/SKILL.md` — Для всех проектов — ~/.agents/skills/

### Cursor

1. **Через Skills CLI (Vercel)**
```bash
npx skills add jabrena/plinth --skill 141-java-refactoring-with-modern-features -a cursor
```

2. **Вручную: положить файлы**
- Файл: `.cursor/skills/141-java-refactoring-with-modern-features/SKILL.md` — Cursor читает и .agents/skills/, и .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install jabrena/plinth 141-java-refactoring-with-modern-features
```

2. **Вручную: положить файлы**
- Файл: `.github/skills/141-java-refactoring-with-modern-features/SKILL.md`

### Gemini CLI

1. **Через Skills CLI (Vercel)**
```bash
npx skills add jabrena/plinth --skill 141-java-refactoring-with-modern-features -a gemini-cli
```

2. **Командой платформы**
```bash
gemini skills install https://github.com/jabrena/plinth --path skills/141-java-refactoring-with-modern-features
```

### Windsurf (Devin Desktop)

**Вручную: положить файлы**
- Файл: `.devin/skills/141-java-refactoring-with-modern-features/SKILL.md` — Старый путь .windsurf/skills/ тоже читается

### OpenCode

**Через Skills CLI (Vercel)**
```bash
npx skills add jabrena/plinth --skill 141-java-refactoring-with-modern-features -a opencode
```

### Claude.ai

**Claude.ai**
- Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills

Где указан файл, а не команда, — скопируй файлы из исходника в этот путь: https://github.com/jabrena/plinth/tree/HEAD/skills/141-java-refactoring-with-modern-features/SKILL.md

## Когда брать
- переписать анонимные классы на лямбды и ссылки на методы
- заменить циклы с `Iterator` на Stream API
- убрать проверки на null через `Optional`
- перевести работу с датами с `Date` и `Calendar` на `java.time`
- собрать неизменяемые коллекции через `List.of()` и `Map.of()`

## Примеры запросов агенту
- пройдись по сервисному слою и замени анонимные классы на лямбды
- перепиши этот цикл с `Iterator` на Stream API
- замени `Date` на `java.time` в этом классе

## Похожие
- [java-refactoring-extract-method](https://affpapa.org/nevibecode/skills/java-refactoring-extract-method.md) — скилл · 9284 установки
- [java-refactoring-remove-parameter](https://affpapa.org/nevibecode/skills/java-refactoring-remove-parameter.md) — скилл · 8900 установок
- [dart-modern-features](https://affpapa.org/nevibecode/skills/dart-modern-features.md) — скилл · 362 установки
- [java-architect](https://affpapa.org/nevibecode/skills/java-architect.md) — скилл · 6000 установок
- [java-migration](https://affpapa.org/nevibecode/skills/java-migration.md) — скилл · 321 установка
- [java](https://affpapa.org/nevibecode/rules/java.md) — правило · ★ 3579

Из того же набора: [jabrena/plinth](https://affpapa.org/nevibecode/by/jabrena/plinth.md) — 51 карточка

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
