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

142-java-functional-programming — скилл для Claude Code

Скилл для ИИ-агента, который переписывает Java-код в функциональном стиле: Records, чистые функции, Stream API и Optional.

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

Что делает 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-code

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

~/.claude/skills/142-java-functional-programming/SKILL.md

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

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

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

321-frameworks-spring-boot-testing-unit-tests Скилл ведёт агента по юнит-тестам Spring Boot: Mockito без поднятия контекста, срезы для контроллеров, параметризованные тесты. Пригодится, когда в проекте расплодились @SpringBootTest. CX Codex +1 387установок 112-java-maven-plugins Скилл подключает и настраивает плагины Maven в pom.xml через вопросы по одному. Пригодится, когда нужно добавить проверки качества, покрытие или сборку образа. CX Codex +1 381установок 130-java-testing-strategies Скилл разбирает Java-тесты по трём методикам: RIGHT-BICEP подбирает случаи, A-TRIP чинит нестабильные, CORRECT проверяет границы. CX Codex +1 377установок 132-java-testing-integration-testing Скилл для ИИ-агента, который наводит порядок в интеграционных тестах Java-сервисов: поднимает WireMock, изолирует заглушки и убирает моки HTTP-клиентов. CX Codex +1 376установок 128-java-generics Скилл разбирает Java-код по дженерикам: убирает raw types, чинит unchecked-касты, подсказывает PECS для wildcard. Пригодится, когда API на дженериках расползается. CX Codex +1 370установок 170-java-documentation Скилл ведёт агента по шагам и пишет README.md, package-info.java и Javadoc для Java-проекта на Maven. Пригодится, когда код есть, а документации к нему нет. CX Codex +1 359установок 322-frameworks-spring-boot-testing-integration-tests Скилл для написания и разбора интеграционных тестов Spring Boot 4.0.x: Testcontainers, срезы персистентности, HTTP-проверки. CX Codex +1 357установок 030-architecture-adr-general Скилл ведёт диалог с разработчиком и оформляет архитектурные решения (ADR) для Java-проектов в формате MADR. Помогает зафиксировать выбор базы данных или фреймворка. CX Codex +1 351установок

Похожие

java-refactoring-extract-method официальный github Скилл помогает выделять связные блоки из сложных Java-методов в отдельные методы. Подходит, когда нужно упростить код и сохранить его поведение. 9 284установок java-refactoring-remove-parameter официальный github Скилл помогает находить неиспользуемые или выводимые из контекста параметры Java-методов и удалять их вместе со всеми вызовами. Подходит для рефакторинга, когда важно сохранить поведение и проверить тесты. 8 900установок java sanjeed5 Правило задаёт агенту стиль кода Java: Google Java Style, именование, иммутабельность, Stream API и работа с ресурсами. ★ 3 579звёзд репо java-coding-standards affaan-m Скилл применяет правила Java к коду для Spring Boot и Quarkus. Подключайте его при написании или ревью сервисов на этих фреймворках. CX Codex +1 5 100установок java-code-review decebals Скилл прогоняет Java-код по чек-листу: null safety, исключения, конкурентность, утечки ресурсов. Пригодится перед мержем PR. CX Codex +1 1 000установок java-architect https://github.com/Jeffallan Скилл помогает проектировать Java-приложения на Spring Boot, писать реактивные API, разбирать запросы JPA и настраивать безопасность через OAuth2 и JWT. CX Codex +1 6 000установок

Рядом в теме «Языки программирования»

Все скиллы по теме «Языки программирования» →

Вопросы о 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

Смотрите также

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

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