142-java-functional-programming — скилл для Claude Code
Скилл для ИИ-агента, который переписывает Java-код в функциональном стиле: Records, чистые функции, Stream API и Optional.
npx skills add jabrena/plinth --skill 142-java-functional-programming -a claude-codeЧто делает 142-java-functional-programming
Скилл применяет принципы функционального программирования к вашему Java-проекту. Внутри — разбор по темам с примерами хорошего и плохого кода: неизменяемые объекты и Records (JEP 395), чистые функции, функциональные интерфейсы Function, Predicate, Consumer, Supplier, лямбды и ссылки на методы. Отдельно идут конвейеры Stream API с filter/map/reduce, параллельные стримы и коллекторы toUnmodifiable*.
Есть разделы про идиоматичный Optional вместо связки isPresent() и get(), композицию функций через andThen и compose, мемоизацию, каррирование и частичное применение. Для доменных иерархий — sealed-классы и интерфейсы (Java 17), сопоставление с образцом для instanceof и switch (Java 21), switch-выражения (Java 14) и Stream Gatherers (JEP 461). Побочные эффекты скилл выносит на границы, оставляя ядро логики чистым.
Перед любыми правками агент обязан выполнить ./mvnw compile или mvn compile и остановиться, если сборка падает. Поэтому проект должен собираться до запуска скилла, а maven-compiler-plugin — поддерживать нужные версии Java: без этого сопоставление с образцом и Gatherers просто не соберутся. После изменений агент прогоняет ./mvnw clean verify или mvn clean verify. Если область задачи размыта, скилл останавливается и задаёт уточняющий вопрос.
Какие задачи решает
- переписать циклы с накоплением в конвейеры Stream API
- заменить проверки
isPresent()иget()на идиоматичныйOptional - сделать доменные объекты неизменяемыми через Records
- вынести побочные эффекты на границы и оставить чистое ядро
- закрыть иерархию типов sealed-классами для исчерпывающего
switch
Примеры запросов агенту
- Улучши этот код с помощью функционального программирования
- Отрефактори Java-код на стримы и Optional безопасно
- Повысь неизменяемость и добавь чистые функции в этом модуле
Как установить 142-java-functional-programming
1Через Skills CLI (Vercel)
npx skills add jabrena/plinth --skill 142-java-functional-programming -a claude-code2Вручную: положить файлы
~/.claude/skills/142-java-functional-programming/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/142-java-functional-programming/
1Через Skills CLI (Vercel)
npx skills add jabrena/plinth --skill 142-java-functional-programming -a codex2Вручную: положить файлы
.agents/skills/142-java-functional-programming/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add jabrena/plinth --skill 142-java-functional-programming -a cursor2Вручную: положить файлы
.cursor/skills/142-java-functional-programming/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install jabrena/plinth 142-java-functional-programming2Вручную: положить файлы
.github/skills/142-java-functional-programming/SKILL.md1Через Skills CLI (Vercel)
npx skills add jabrena/plinth --skill 142-java-functional-programming -a gemini-cli2Командой платформы
gemini skills install https://github.com/jabrena/plinth --path skills/142-java-functional-programmingВручную: положить файлы
.devin/skills/142-java-functional-programming/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add jabrena/plinth --skill 142-java-functional-programming -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Из того же набора40
Похожие
Рядом в теме «Языки программирования»
Все скиллы по теме «Языки программирования» →Вопросы о 142-java-functional-programming
Как установить 142-java-functional-programming в Claude?
Выполните npx skills add jabrena/plinth --skill 142-java-functional-programming -a claude-code. Скилл появится в ~/.claude/skills/142-java-functional-programming/SKILL.md.
Что делает 142-java-functional-programming?
Помогает агенту переписать Java-код в функциональном стиле: неизменяемые объекты, чистые функции, Stream API, Optional, композиция функций, сопоставление с образцом и sealed-иерархии.
Что нужно перед запуском скилла?
Проект должен компилироваться: агент сначала запускает ./mvnw compile или mvn compile и останавливается при ошибке. Также проверьте, что maven-compiler-plugin поддерживает нужные версии Java.
Исходный текст
SKILL.md · Apache-2.0
--- name: 142-java-functional-programming description: Use when you need to apply functional programming principles in Java — including writing immutable objects and Records, pure functions, functional interfaces, lambda expressions, Stream API pipelines, Optional for null safety, function composition, higher-order functions, pattern matching for instanceof and switch, sealed classes/interfaces for controlled hierarchies, Stream Gatherers for custom operations, currying/partial application, effect boundary separation, and concurrent-safe functional patterns. This should trigger for requests such as Improve the code with Functional Programming; Apply Functional Programming; Refactor the code with Functional Programming; Refactor Java code to use streams or Optionals safely; Improve immutability and pure functions in Java. Part of Plinth Toolkit license: Apache-2.0 metadata: author: Juan Antonio Breña Moral version: 0.19.0 --- # Java Functional Programming rules Identify and apply functional programming principles in Java to improve immutability, expressiveness, and maintainability. **What is covered in this Skill?** - Immutable objects and Records (JEP 395) - Pure functions free of side effects - Functional interfaces: `Function`, `Predicate`, `Consumer`, `Supplier`, custom `@FunctionalInterface` - Lambda expressions and method references - Stream API: filter/map/reduce pipelines, parallel streams, `toUnmodifiable*` collectors - `Optional` idiomatic usage: `map`/`flatMap`/`filter`/`orElse*` over `isPresent()`+`get()` - Function composition: `andThen`/`compose` - Higher-order functions: memoization, currying, partial application - Pattern Matching for `instanceof` and `switch` (Java 21) - Sealed classes and interfaces (Java 17) for exhaustive domain hierarchies - Switch Expressions (Java 14), Stream Gatherers (JEP 461) - Effect-boundary separation: side effects at edges, pure core logic - Immutable collections: `List.of()`, `Collectors.toUnmodifiableList()` **Scope:** The reference is organized by examples (good/bad code patterns) for each core area. Apply recommendations based on applicable examples. ## Constraints Before applying any functional programming changes, ensure the project compiles. If compilation fails, stop immediately — do not proceed until the project compiles successfully. Verify that maven-compiler-plugin source/target supports the Java features being used. - **MANDATORY**: Run `./mvnw compile` or `mvn compile` before applying any changes - **SAFETY**: If compilation fails, stop immediately — do not proceed until the project compiles successfully - **VERIFY**: Verify maven-compiler-plugin source/target supports the Java features being used - **VERIFY**: Run `./mvnw clean verify` or `mvn clean verify` after applying improvements - **BEFORE APPLYING**: Read the reference for detailed good/bad examples, constraints, and safeguards for each functional programming pattern - **EDGE CASE**: If request scope is ambiguous, stop and ask a clarifying question before applying changes - **EDGE CASE**: If required inputs, files, or tooling are missing, report what is missing and ask whether to proceed with setup guidance ## When to use this skill - Improve the code with Functional Programming - Apply Functional Programming - Refactor the code with Functional Programming - Refactor Java code to use streams or Optionals safely - Improve immutability and pure functions in Java ## Workflow 1. **Compile project before functional refactoring** Run `./mvnw compile` or `mvn compile` and stop immediately if compilation fails. 2. **Confirm Java feature compatibility** Verify maven-compiler-plugin source/target supports the functional features planned for adoption. 3. **Read functional-programming reference and assess code** Read `references/142-java-functional-programming.md` and identify opportunities for immutability, pure functions, and functional composition. 4. **Apply functional programming improvements** Implement selected functional refactorings while keeping side effects at boundaries. 5. **Verify with full build** Run `./mvnw clean verify` or `mvn clean verify` after applying improvements. ## Reference For detailed guidance, examples, and constraints, see [references/142-java-functional-programming.md](references/142-java-functional-programming.md).
© Juan Antonio Breña Moral · Apache-2.0 · jabrena/plinth