Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Jimmer ORM 开发助手(XiaomiAlbumSyncer 服务端),帮助编写实体映射代码、DTO 和 DSL 查询语句。适用于:(1) 定义或修改 Jimmer 实体(使用 @Entity 注解的 interface);(2) 编写 Jimmer DSL 查询代码;(3) 配置实体关联关系(@ManyToOne, @OneToMany, @ManyToMany);(4) 使用动态谓词、动态表连接或隐式子查询;(5) 编辑包含 Jimmer 相关代码的 Java/Kotlin 文件。
.claude/skills/coooolfan-jimmer-orm/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 16% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 27% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 25% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 32% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 2% | 0% |
如果当前上下文中指名了 Jimmer 项目的源码的本地路径,应当以源码实现作为基准。如果有其他情况需要查阅 Jimmer 的具体实现,其代码仓库为 https://github.com/babyfish-ct/jimmer
@Managed 标记,依赖通过构造函数或 @Inject 注入server/src/main/kotlin/com/coooolfan/xiaomialbumsyncer/model/server/src/main/dto/<Entity>.dto,KSP 生成于 ...model.dtoKSqlClient,项目内习惯用 sql.executeQuery(Entity::class) { ... } / sql.executeDelete / sql.saveCommand(input, SaveMode.X),而非 createQuery(...).execute()Fetcher<T> 常量 + @FetchBy 固定投影,Service 接受 fetcher: Fetcher<T> 参数cd server && ./gradlew clean compileKotlin 验证 KSP 生成代码可编译server/src/main/resources 下的 migration),新增字段需同步添加迁移脚本Jimmer 为 Kotlin 提供了特化的 API 风格
references/entity-mapping.mdreferences/dsl-queries.mdassets/EntityTemplate.kt@Entity - 标记实体类型@MappedSuperclass - 标记映射父接口,复用公共字段@Embeddable - 标记嵌入值对象@Id - 标记主键@GeneratedValue - 主键生成策略@Key - 业务键@ManyToOne / @OneToMany / @ManyToMany / @OneToOne - 关联映射@ManyToManyView - 通过中间实体暴露多对多视图@IdView - 关联 id 视图@JoinColumn - 自定义外键列名@JoinTable - 自定义中间表@Column - 自定义列名(仅用于非关联字段)@Table - 自定义表名@Version - 乐观锁版本字段@LogicalDeleted - 逻辑删除字段@Formula / @Transient - 计算属性? (Kotlin) - 标记可空属性BookStore → BOOK_STOREfirstName → FIRST_NAMEstore → STORE_ID@ManyToManyView 暴露只读多对多视图@IdViewassets/EntityTemplate.kt 和 references/entity-mapping.mdreferences/dto.md 完成 DTO 定义 ilike? / between? / valueIn? )references/dsl-queries.mdmappedBy 配置| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 10,750 | 17,102 | +59% | 1 | 1 | 0% | 1,831 | 2,122 | +16% | 0 | 0 | — |
case-02 | fail→pass | 13,537 | 12,362 | -9% | 1 | 1 | 0% | 2,756 | 3,502 | +27% | 0 | 0 | — |
case-03 | fail→pass | 16,132 | 13,173 | -18% | 1 | 1 | 0% | 2,982 | 3,716 | +25% | 0 | 0 | — |
case-04 | fail→pass | 10,750 | 6,740 | -37% | 1 | 1 | 0% | 1,851 | 2,436 | +32% | 0 | 0 | — |
case-05 | fail→pass | 12,179 | 5,291 | -57% | 1 | 1 | 0% | 2,056 | 2,103 | +2% | 0 | 0 | — |
case-06 | fail→pass | 12,995 | 6,407 | -51% | 1 | 1 | 0% | 2,451 | 2,260 | -8% | 0 | 0 | — |
case-07 | fail→pass | 14,499 | 10,148 | -30% | 1 | 1 | 0% | 2,614 | 3,188 | +22% | 0 | 0 | — |
case-08 | fail→pass | 8,741 | 2,945 | -66% | 1 | 1 | 0% | 1,513 | 1,723 | +14% | 0 | 0 | — |
case-09 | fail→pass | 8,267 | 4,112 | -50% | 1 | 1 | 0% | 1,406 | 1,907 | +36% | 0 | 0 | — |
case-10 | fail→pass | 12,791 | 11,367 | -11% | 1 | 1 | 0% | 2,445 | 3,293 | +35% | 0 | 0 | — |
case-11 | fail→pass | 10,955 | 3,582 | -67% | 1 | 1 | 0% | 1,891 | 1,674 | -11% | 0 | 0 | — |
case-12 | fail→pass | 13,634 | 13,893 | +2% | 1 | 1 | 0% | 2,262 | 3,509 | +55% | 0 | 0 | — |
case-13 | pass→fail | 13,996 | 14,573 | +4% | 1 | 1 | 0% | 2,412 | 3,549 | +47% | 0 | 0 | — |
case-14 | pass→pass | 10,686 | 3,017 | -72% | 1 | 1 | 0% | 2,001 | 1,583 | -21% | 0 | 0 | — |
case-15 | pass→pass | 5,990 | 2,231 | -63% | 1 | 1 | 0% | 1,054 | 1,494 | +42% | 0 | 0 | — |
case-16 | pass→pass | 2,305 | 2,094 | -9% | 1 | 1 | 0% | 418 | 1,443 | +245% | 0 | 0 | — |
case-17 | fail→pass | 18,773 | 16,981 | -10% | 1 | 1 | 0% | 3,124 | 4,441 | +42% | 0 | 0 | — |
case-18 | fail→pass | 6,402 | 4,008 | -37% | 1 | 1 | 0% | 1,064 | 1,763 | +66% | 0 | 0 | — |
case-19 | pass→pass | 12,096 | 7,435 | -39% | 1 | 1 | 0% | 2,351 | 2,509 | +7% | 0 | 0 | — |
case-20 | pass→pass | 3,778 | 5,342 | +41% | 1 | 1 | 0% | 749 | 2,052 | +174% | 0 | 0 | — |
case-21 | pass→fail | 10,947 | 5,198 | -53% | 1 | 1 | 0% | 2,343 | 1,352 | -42% | 0 | 0 | — |
case-22 | pass→pass | 8,598 | 7,697 | -10% | 1 | 1 | 0% | 1,594 | 2,528 | +59% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 21 counted toward the lift figure. The other 1 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +55 percentage points is the difference between those two pass rates over the 21 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.