本文へ移動
cccskills
無料GitHub で公開

null-safety

Use when annotating nullability in Spring Boot 4 / Spring Framework 7, migrating to JSpecify, integrating Kotlin, or enabling build-time null checks with NullAway.

インストール方法を見る

含まれるファイル(4)

  • SKILL.md1.9 KB
  • agents/openai.yaml185 B
  • examples/bad-null-contract.java123 B
  • examples/good-package-info.java85 B

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Null Safety with JSpecify (Boot 4)

Spring Framework 7 adopts JSpecify for nullability. Use org.jspecify.annotations for new code and migrate away from the older Spring nullability annotations at module boundaries.

Mark packages and annotate exceptions

@NullMarked
package com.example.orders;

import org.jspecify.annotations.NullMarked;

Inside a null-marked package, types are non-null by default. Annotate only genuine exceptions:

@Nullable
Order findActive(String customerEmail) { ... }

List<@Nullable String> namesWithGaps; // non-null list, nullable elements
@Nullable List<String> maybeNoList;   // nullable list, non-null elements

Use Object @Nullable [] for a nullable array and @Nullable Object[] for a non-null array whose elements may be null. Add the JSpecify dependency through the Boot dependency management.

JSpecify is metadata. IntelliJ can inspect it, while NullAway with JSpecifyMode=true can enforce the contract during compilation. Kotlin consumes the annotations as real nullability.

Gotchas

  • Agent uses org.springframework.lang.Nullable in new Framework 7 code - prefer JSpecify.
  • Agent annotates every parameter with @NonNull - use package-level @NullMarked and mark exceptions.
  • Agent writes @Nullable List<String> for nullable elements - use List<@Nullable String>.
  • Agent puts @Nullable on the wrong side of an array type - distinguish nullable arrays from nullable elements.
  • Agent expects annotations alone to fail the build - add NullAway or enable IDE inspections.
  • Agent forgets package-info.java - without @NullMarked, most checks remain unknown.
  • Agent mixes JSpecify and legacy Spring annotations in one module - migrate the module consistently.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Use when adding Spring AI-specific model observations, token usage, latency, externally configured cost attribution, advisor telemetry, or protected prompt and completion logging. Use production-observability for general service metrics, health, logs, and OTLP setup.

日本語の概要は準備中です。原文の説明を表示しています。

rrezartprebreza/spring-boot-skills3052026年9月21日 更新

Use when versioning Spring MVC or WebFlux APIs in Spring Boot 3 / Spring Framework 6. Covers explicit URL, header, and media-type strategies, compatibility rules, and deprecation handling.

日本語の概要は準備中です。原文の説明を表示しています。

rrezartprebreza/spring-boot-skills3052026年9月21日 更新

Use when versioning Spring MVC or WebFlux APIs in Spring Boot 4 / Spring Framework 7. Covers built-in mapping versions, request version resolution, defaults, supported versions, and deprecation headers.

日本語の概要は準備中です。原文の説明を表示しています。

rrezartprebreza/spring-boot-skills3052026年9月21日 更新

Use when introducing or correcting grouped Spring Boot configuration, typed property binding, validation, profiles or secret injection. Do not rewrite unrelated single-value configuration.

日本語の概要は準備中です。原文の説明を表示しています。

rrezartprebreza/spring-boot-skills3052026年9月21日 更新

Use when packaging Spring Boot 4 as an OCI image, JVM container, AOT application, or GraalVM native executable. Covers buildpacks, layers, runtime hints, probes, security, and verification.

日本語の概要は準備中です。原文の説明を表示しています。

rrezartprebreza/spring-boot-skills3052026年9月21日 更新

Use when packaging a Spring Boot 3 application as an OCI image or GraalVM native executable. Covers buildpacks, layered images, JVM containers, AOT hints, probes, security, and verification.

日本語の概要は準備中です。原文の説明を表示しています。

rrezartprebreza/spring-boot-skills3052026年9月21日 更新

rrezartprebreza のスキルをすべて見る

このスキルの問題を報告する