plugins/languages/java/skills/core/SKILL.md
Java 核心规范 — Java 21/25 LTS 现代特性 (Records、Pattern Matching、Sealed Classes、Switch Expressions、Text Blocks、Stream Gatherers)、Maven 4/Gradle 9 构建工具链、Version Catalog、SpotBugs/Checkstyle/JaCoCo 质量门禁。当用户编写、重构、初始化 Java 项目,或讨论 "Java 25 特性"、"Records 怎么写"、"Pattern Matching"、"Sealed Classes"、"Switch Expression"、"Stream API"、"Gradle 升级"、"Maven 项目结构" 时加载。
npx skillsauth add lazygophers/ccplugin java-coreInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
声明式规范。AI 编写/审查 Java 代码时必须遵守以下约束并按检查清单自检。
--release 21 或 --release 25,禁止 --source/--target 单独使用@Data/@ValueOptional.get() 不检查;用 map/flatMap/orElseThrowAutoCloseable.toList() (不可变);集合操作不用传统 for@Autowired 字段注入log.info("user={}", id);禁字符串拼接、禁 System.out.println| 特性 | 版本 | 用途 |
|------|------|------|
| Records | 16+ 正式 | 不可变数据载体 |
| Sealed Classes | 17+ 正式 | 受限类型层次 |
| Pattern Matching for instanceof | 16+ 正式 | 类型守卫 |
| Pattern Matching for switch | 21+ 正式 | 模式匹配分支 |
| Virtual Threads | 21+ 正式 | I/O 密集并发 |
| Sequenced Collections | 21+ 正式 | getFirst/getLast |
| Generational ZGC | 21+ 正式 | 低延迟 GC |
| String Templates | 21-23 预览,后撤回 | 禁用 (规范未定型) |
| Structured Concurrency | 25 正式 | 并发任务作用域 |
| Scoped Values | 25 正式 | 替代 ThreadLocal |
| Stream Gatherers | 24+ 正式 | 自定义 Stream 中间操作 |
| FFM API | 22+ 正式 | 替代 JNI |
| Flexible Constructor Bodies | 25+ 正式 | super() 前可校验 |
// Record + 紧凑构造
public record UserResponse(Long id, String email, String name) {
public UserResponse {
Objects.requireNonNull(email, "email");
}
public static UserResponse from(User u) {
return new UserResponse(u.getId(), u.getEmail(), u.getName());
}
}
// Sealed + Pattern Matching for switch
public sealed interface Shape permits Circle, Rectangle, Triangle {}
public record Circle(double r) implements Shape {}
public record Rectangle(double w, double h) implements Shape {}
public record Triangle(double base, double height) implements Shape {}
double area(Shape s) {
return switch (s) {
case Circle c when c.r() > 100 -> throw new IllegalArgumentException("too large");
case Circle c -> Math.PI * c.r() * c.r();
case Rectangle r -> r.w() * r.h();
case Triangle t -> 0.5 * t.base() * t.height();
};
}
// Pattern Matching for instanceof
if (obj instanceof String s && !s.isBlank()) {
process(s.strip());
}
// Stream + toList
List<String> emails = users.stream()
.filter(User::isActive)
.map(User::getEmail)
.toList();
# gradle/libs.versions.toml
[versions]
java = "25"
spring-boot = "3.4.0"
junit = "5.11.4"
mockito = "5.14.0"
testcontainers = "1.20.4"
assertj = "3.26.3"
[libraries]
spring-boot-starter-web = { module = "org.springframework.boot:spring-boot-starter-web" }
junit-jupiter = { module = "org.junit.jupiter:junit-jupiter", version.ref = "junit" }
mockito-core = { module = "org.mockito:mockito-core", version.ref = "mockito" }
[plugins]
spring-boot = { id = "org.springframework.boot", version.ref = "spring-boot" }
<properties>
<maven.compiler.release>25</maven.compiler.release>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
./gradlew spotbugsMain # 静态分析
./gradlew checkstyleMain # 风格
./gradlew test jacocoTestReport # 覆盖率 ≥80%
./gradlew dependencyCheckAnalyze # OWASP CVE 扫描
src/main/java/com/example/app/
├── config/ @Configuration、@ConfigurationProperties (record)
├── controller/ @RestController (薄层:路由 + 校验)
├── service/ @Service (业务 + 事务边界)
├── repository/ @Repository (Spring Data)
├── domain/ JPA Entity
├── dto/ Record DTO
├── exception/ sealed 异常层次
└── infra/ 外部 API / MQ 客户端
src/test/java/com/example/app/
├── unit/ 单元测试 (Mockito)
├── integration/ 集成 (TestContainers)
└── architecture/ ArchUnit
| AI 易犯解释 | 实际应核验 |
|---------|---------|
| "Lombok @Data 简洁" | 是否用 Record? |
| "if-else instanceof 清楚" | 是否用 Pattern Matching switch? |
| "继承一下就好" | 类型层次是否 sealed? |
| "Maven 也行" | 是否用 Gradle Version Catalog? |
| "String 拼接日志" | 是否 SLF4J {} 占位? |
| "返回 null 表示没有" | 是否 Optional? |
--release 21 或 25.toList()tools
UI/UX 与布局设计——做界面布局/结构/导航/组件/交互的设计决策。触发:做UI/UX/布局/排版/导航/组件/交互/栅格/响应式/图表选型/字体配对。按媒介路由 HTML/Web、原生 App(iOS/Android/桌面)、CLI、TUI。需后端动态系统不适用;配色/主题/色板走姊妹 skill design-color。
tools
主题与配色设计——做颜色搭配/调色板/主题/品牌色阶/暗模式的设计决策。触发:选配色/调色/主题/色板/品牌色/暗模式/对比度/色盲/UI风格。按媒介路由 HTML/Web(CSS变量)、原生App(平台token)、CLI(ANSI)、TUI(真彩/256/16降级)。保证可访问性(对比度/色盲安全)。需后端动态系统不适用;UI/UX 布局/组件/交互走姊妹 skill design-uiux。
tools
跨任意组件(plugin/skill/agent/command)的验证驱动优化循环纪律 skill。当用户要优化某个已有组件却无明确方向、或要防止改了反而更差(自评乐观偏差 / 多维同改归因失效 / 为凑分加废话膨胀)、或要把一套通用「评分→单变量改→改后验证严格更好才留否则回滚→触顶停」的纪律套到任意组件上时使用。管优化过程本身的纪律(validation gate / ratchet / 独立验证 / 触顶停),不评单组件深度(交 skill-dev),不查插件接线(交 plugin-dev)。仅手动 /optimize-any 触发。
data-ai
两层规则记忆 (基于 .skein/spec)。planning 时 recall 召回相关规则、task finish 后 sediment 沉淀学习 + prune 自动精简过期/重复/断链规则。core 常驻硬规 + recall 按需召回, 经判定门自动写盘 (不逐次问用户)。产出 .skein/spec 下 core/recall 规则文件 + index。另支持空仓 bootstrap 播种规则基线、记忆大面积失效 (大重构/换栈) 时 reconstruct 可逆归档后按项目类型分型重建、maintain 手动体检 (超预算/stale/断链/重复/废弃, --apply 自动修复)、auto-fix (Stop hook 写 .pending-fix 标记 → main 派 skein-specer bg 跑 maintain --apply 全自动修, 断链只报告)。