Agent Skills by ALSEL
Anthropic Claudeソフトウェア開発⭐ リポ 0品質スコア 50/100

spring-boot-engineer

Spring Boot 3.xの設定ファイル生成、RESTコントローラーの作成、Spring Security 6の認証フロー実装、Spring Data JPAリポジトリのセットアップ、リアクティブWebFluxエンドポイントの構成を行います。Spring Boot 3.xアプリケーションやマイクロサービス、リアクティブJavaアプリケーションの開発時に使用し、Spring Data JPA・Spring Security 6・WebFlux・Spring Cloud連携・Java REST API設計・マイクロサービスアーキテクチャが必要な場面で呼び出してください。

description の原文を見る

Generates Spring Boot 3.x configurations, creates REST controllers, implements Spring Security 6 authentication flows, sets up Spring Data JPA repositories, and configures reactive WebFlux endpoints. Use when building Spring Boot 3.x applications, microservices, or reactive Java applications; invoke for Spring Data JPA, Spring Security 6, WebFlux, Spring Cloud integration, Java REST API design, or Microservices Java architecture.

SKILL.md 本文

Spring Boot エンジニア

コアワークフロー

  1. 要件分析 — サービス境界、API、データモデル、セキュリティ要件を特定
  2. アーキテクチャ設計 — マイクロサービス、データアクセス、クラウド統合、セキュリティを計画;コーディング前に設計を確認
  3. 実装 — コンストラクタインジェクションとレイヤー化アーキテクチャでサービスを作成(下記のクイックスタートを参照)
  4. セキュリティ対応 — Spring Security、OAuth2、メソッドセキュリティ、CORS設定を追加;セキュリティルールがコンパイルされ、テストに合格することを確認。コンパイルまたはテストが失敗した場合:エラー出力を確認し、失敗したルールまたは設定を修正して、再実行してから進める
  5. テスト — ユニット、統合、スライステストを記述;./mvnw test(または ./gradlew test)を実行し、すべてが合格することを確認してから進める。テストが失敗した場合:スタックトレースを確認し、失敗したアサーションまたはコンポーネントを特定し、問題を修正して、完全なスイートを再実行
  6. デプロイ — Actuatorを通じてヘルスチェックと可観測性を設定;/actuator/healthUPを返すことを確認。ヘルスがDOWNの場合:レスポンス内のcomponentsの詳細を確認し、失敗しているコンポーネント(例:データソース、ブローカー)を解決して、再検証

リファレンスガイド

コンテキストに基づいて詳細なガイダンスを読み込む:

トピックリファレンス読み込むタイミング
Web レイヤーreferences/web.mdコントローラー、REST API、バリデーション、例外処理
データアクセスreferences/data.mdSpring Data JPA、リポジトリ、トランザクション、プロジェクション
セキュリティreferences/security.mdSpring Security 6、OAuth2、JWT、メソッドセキュリティ
クラウドネイティブreferences/cloud.mdSpring Cloud、Config、Discovery、Gateway、レジリエンス
テストreferences/testing.md@SpringBootTest、MockMvc、Testcontainers、テストスライス

クイックスタート — 最小限の実装構造

標準的な Spring Boot フィーチャーはこれらのレイヤーで構成されます。これらをコピペの出発点として使用してください。

エンティティ

@Entity
@Table(name = "products")
public class Product {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @NotBlank
    private String name;

    @DecimalMin("0.0")
    private BigDecimal price;

    // getters / setters or use @Data (Lombok)
}

リポジトリ

public interface ProductRepository extends JpaRepository<Product, Long> {
    List<Product> findByNameContainingIgnoreCase(String name);
}

サービス(コンストラクタインジェクション)

@Service
public class ProductService {
    private final ProductRepository repo;

    public ProductService(ProductRepository repo) { // constructor injection — no @Autowired
        this.repo = repo;
    }

    @Transactional(readOnly = true)
    public List<Product> search(String name) {
        return repo.findByNameContainingIgnoreCase(name);
    }

    @Transactional
    public Product create(ProductRequest request) {
        var product = new Product();
        product.setName(request.name());
        product.setPrice(request.price());
        return repo.save(product);
    }
}

REST コントローラー

@RestController
@RequestMapping("/api/v1/products")
@Validated
public class ProductController {
    private final ProductService service;

    public ProductController(ProductService service) {
        this.service = service;
    }

    @GetMapping
    public List<Product> search(@RequestParam(defaultValue = "") String name) {
        return service.search(name);
    }

    @PostMapping
    @ResponseStatus(HttpStatus.CREATED)
    public Product create(@Valid @RequestBody ProductRequest request) {
        return service.create(request);
    }
}

DTO(レコード)

public record ProductRequest(
    @NotBlank String name,
    @DecimalMin("0.0") BigDecimal price
) {}

グローバル例外ハンドラー

@RestControllerAdvice
public class GlobalExceptionHandler {
    @ExceptionHandler(MethodArgumentNotValidException.class)
    @ResponseStatus(HttpStatus.BAD_REQUEST)
    public Map<String, String> handleValidation(MethodArgumentNotValidException ex) {
        return ex.getBindingResult().getFieldErrors().stream()
            .collect(Collectors.toMap(FieldError::getField, FieldError::getDefaultMessage));
    }

    @ExceptionHandler(EntityNotFoundException.class)
    @ResponseStatus(HttpStatus.NOT_FOUND)
    public Map<String, String> handleNotFound(EntityNotFoundException ex) {
        return Map.of("error", ex.getMessage());
    }
}

テストスライス

@WebMvcTest(ProductController.class)
class ProductControllerTest {
    @Autowired MockMvc mockMvc;
    @MockBean ProductService service;

    @Test
    void createProduct_validRequest_returns201() throws Exception {
        var product = new Product(); product.setName("Widget"); product.setPrice(BigDecimal.TEN);
        when(service.create(any())).thenReturn(product);

        mockMvc.perform(post("/api/v1/products")
                .contentType(MediaType.APPLICATION_JSON)
                .content("""{"name":"Widget","price":10.0}"""))
            .andExpect(status().isCreated())
            .andExpect(jsonPath("$.name").value("Widget"));
    }
}

制約

必須(MUST DO)

ルール正しいパターン
コンストラクタインジェクションpublic MyService(Dep dep) { this.dep = dep; }
API入力のバリデーションすべての変更エンドポイントで @Valid @RequestBody MyRequest req
タイプセーフな設定@ConfigurationProperties(prefix = "app") をレコード/クラスにバインド
適切なステレオタイプビジネスロジックに@Service、データに@Repository、HTTPに@RestController
トランザクションスコープ複数ステップの書き込みに@Transactional;読み取りに@Transactional(readOnly = true)
内部実装の隠蔽@RestControllerAdviceでドメイン例外をキャッチ;スタックトレースではなく問題の詳細を返却
シークレットの外部化環境変数または Spring Cloud Config を使用;application.propertiesには格納しない

禁止(MUST NOT DO)

  • フィールドインジェクション(フィールドの@Autowired)を使用
  • API エンドポイントでの入力バリデーションをスキップ
  • @Service/@Repository/@Controllerが適用できる場合に@Componentを使用
  • ブロッキングコードとリアクティブコードを混在させる(例:WebFlux チェーン内で.block()を呼び出す)
  • application.properties/application.ymlにシークレット認証情報を保存
  • URL、認証情報、環境固有の値をハードコード
  • 非推奨の Spring Boot 2.x パターンを使用(例:WebSecurityConfigurerAdapter

ドキュメンテーション

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
jeffallan
リポジトリ
jeffallan/claude-skills
ライセンス
MIT
最終更新
不明

Source: https://github.com/jeffallan/claude-skills / ライセンス: MIT

関連スキル

汎用ソフトウェア開発⭐ リポ 39,967

doubt-driven-development

重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 1,175

apprun-skills

TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。

by yysun
OpenAIソフトウェア開発⭐ リポ 797

desloppify

コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。

by Git-on-my-level
汎用ソフトウェア開発⭐ リポ 39,967

debugging-and-error-recovery

テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 39,967

test-driven-development

テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 39,967

incremental-implementation

変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。

by addyosmani
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: jeffallan · jeffallan/claude-skills · ライセンス: MIT