122-java-type-design — скилл для Claude Code: типы в Java
Скилл для ревью и рефакторинга Java-кода: убирает primitive obsession, строит иерархии типов и подсказывает, где нужен BigDecimal.
npx skills add jabrena/plinth --skill 122-java-type-design -a claude-codeЧто делает 122-java-type-design
Скилл разбирает Java-код по правилам типового дизайна: иерархии вложенных статических классов, единые имена интерфейсов и реализаций, value-объекты вместо примитивов вроде EmailAddress и Money, generic-параметры, fluent-интерфейсы и builder. Отдельно — числовые типы: для денежных расчётов советует BigDecimal, для необязательных значений Optional, для выбора между Set и List — семантику коллекции.
Работает по шагам. Сначала обязательная компиляция: ./mvnw compile или mvn compile. Если сборка падает, скилл останавливается и ничего не меняет — это блокирующее условие. Потом читает references/122-java-type-design.md с примерами хороших и плохих паттернов, применяет правки и в конце гоняет ./mvnw clean verify или mvn clean verify.
Если непонятно, что именно рефакторить, скилл задаёт уточняющий вопрос вместо правок наугад. То же с нехваткой файлов или инструментов: сообщает, чего нет, и спрашивает, продолжать ли. Проект должен собираться через Maven — на Gradle-сборке шаги компиляции и верификации не сработают.
Какие задачи решает
- убрать примитивы вроде String и double из доменных полей
- собрать иерархию типов с вложенными статическими классами
- ввести value-объекты EmailAddress и Money вместо сырых значений
- вынести контракт в интерфейс и развести его с реализацией
- заменить double на BigDecimal в денежных расчётах
Примеры запросов агенту
- Проверь типовой дизайн в
src/main/java/com/example/order/Order.java - Убери primitive obsession в модуле billing и заведи value-объекты
- Сделай ревью иерархии типов и имён интерфейсов в пакете
service
Как установить 122-java-type-design
1Через Skills CLI (Vercel)
npx skills add jabrena/plinth --skill 122-java-type-design -a claude-code2Вручную: положить файлы
~/.claude/skills/122-java-type-design/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/122-java-type-design/
1Через Skills CLI (Vercel)
npx skills add jabrena/plinth --skill 122-java-type-design -a codex2Вручную: положить файлы
.agents/skills/122-java-type-design/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add jabrena/plinth --skill 122-java-type-design -a cursor2Вручную: положить файлы
.cursor/skills/122-java-type-design/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install jabrena/plinth 122-java-type-design2Вручную: положить файлы
.github/skills/122-java-type-design/SKILL.md1Через Skills CLI (Vercel)
npx skills add jabrena/plinth --skill 122-java-type-design -a gemini-cli2Командой платформы
gemini skills install https://github.com/jabrena/plinth --path skills/122-java-type-designВручную: положить файлы
.devin/skills/122-java-type-design/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add jabrena/plinth --skill 122-java-type-design -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о 122-java-type-design
Как установить 122-java-type-design в Claude?
Выполните npx skills add jabrena/plinth --skill 122-java-type-design -a claude-code. Скилл окажется в ~/.claude/skills/122-java-type-design/SKILL.md.
Что делает 122-java-type-design?
Проверяет и переписывает Java-код по правилам типового дизайна: иерархии, имена, value-объекты, generic-параметры, fluent-интерфейсы, точные числовые типы.
Что нужно, чтобы скилл сработал?
Проект на Maven, который компилируется: скилл сначала запускает ./mvnw compile или mvn compile и при ошибке сборки останавливается. После правок проверяет результат через ./mvnw clean verify или mvn clean verify.
Исходный текст
SKILL.md · Apache-2.0
--- name: 122-java-type-design description: Use when you need to review, improve, or refactor Java code for type design quality — including establishing clear type hierarchies, applying consistent naming conventions, eliminating primitive obsession with domain-specific value objects, leveraging generic type parameters, creating type-safe wrappers, designing fluent interfaces, ensuring precision-appropriate numeric types (BigDecimal for financial calculations), and improving type contrast through interfaces and method signature alignment. This should trigger for requests such as Review Java code for type design; Improve type design in Java code; Fix primitive obsession in Java code; Create value objects in Java code. Part of Plinth Toolkit license: Apache-2.0 metadata: author: Juan Antonio Breña Moral version: 0.19.0 --- # Type Design Thinking in Java Review and improve Java code using comprehensive type design principles that apply typography concepts to code structure and organization for maximum clarity and maintainability. **What is covered in this Skill?** - Clear type hierarchies: nested static classes, logical structure - Consistent naming conventions: domain-driven patterns, uniform interface/implementation naming - Strategic whitespace for readability - Type-safe wrappers: value objects replacing primitive obsession (EmailAddress, Money) - Generic type parameters: flexible reusable types, bounded parameters - Domain-specific fluent interfaces: builder pattern, method chaining - Type weights: conceptual importance — core domain vs supporting vs utility - Type contrast through interfaces: contract vs implementation separation - Aligned method signatures: consistent parameter and return types across related classes - Self-documenting code: clear descriptive names - BigDecimal for precision-sensitive calculations (financial/monetary operations) - Strategic type selection: Optional, Set vs List, interfaces over concrete types **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 type design changes, ensure the project compiles. If compilation fails, stop immediately — do not proceed until resolved. After applying improvements, run full verification. - **MANDATORY**: Run `./mvnw compile` or `mvn compile` before applying any change - **SAFETY**: If compilation fails, stop immediately and do not proceed — compilation failure is a blocking condition - **VERIFY**: Run `./mvnw clean verify` or `mvn clean verify` after applying improvements - **BEFORE APPLYING**: Read the reference for detailed examples, good/bad patterns, and constraints - **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 - Review Java code for type design - Improve type design in Java code - Fix primitive obsession in Java code - Create value objects in Java code - Create type hierarchies in Java code - Create fluent interfaces in Java code ## Workflow 1. **Compile project before type-design changes** Run `./mvnw compile` or `mvn compile` and stop immediately if compilation fails. 2. **Read type-design reference and inspect code** Read `references/122-java-type-design.md` and identify type hierarchy, naming, and value-object improvements. 3. **Apply type-design refactorings** Implement selected type-safety and readability improvements based on applicable patterns. 4. **Verify with full build** Run `./mvnw clean verify` or `mvn clean verify` after applying improvements. ## Reference For detailed guidance, examples, and constraints, see [references/122-java-type-design.md](references/122-java-type-design.md).
© Juan Antonio Breña Moral · Apache-2.0 · jabrena/plinth