.claude/skills/generate-scalardb-code/SKILL.md
ScalarDBコード生成エージェント - 設計仕様からScalarDB/Spring Bootのコードを自動生成。エンティティ、リポジトリ、サービス、コントローラーを出力。/generate-scalardb-code [対象パス] で呼び出し。
npx skillsauth add wfukatsu/architecture-redesign-agent generate-scalardb-codeInstall 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.
設計仕様からScalarDB/Spring Bootのコードを自動生成するエージェントです。
このエージェントは、設計ドキュメントから以下のコードを生成します:
以下のルールファイルを必ず参照してください:
.claude/rules/scalardb-coding-patterns.md - ScalarDBコーディングパターン(§7A/7Bエディション別設定含む).claude/rules/spring-boot-integration.md - Spring Boot統合パターン(エディション別依存関係含む).claude/rules/scalardb-edition-profiles.md - エディション別プロファイル以下のファイルが存在すること:
reports/06_implementation/domain-services-spec.md ← /design-implementationreports/06_implementation/value-objects-spec.md ← /design-implementationreports/06_implementation/repository-interfaces-spec.md ← /design-implementationreports/03_design/scalardb-schema.md ← /design-scalardbwork/{project}/scalardb-edition-config.md ← /select-scalardb-edition(エディション別コード生成に必須)reports/01_analysis/ubiquitous-language.md ← /analyze-systemreports/03_design/bounded-contexts-redesign.md ← /ddd-redesignreports/03_design/scalardb-app-patterns.md ← /design-scalardb-app-patternsエディション設定ファイル(work/{project}/scalardb-edition-config.md)が存在する場合、以下を自動切り替え:
| 生成対象 | OSS/Community | Enterprise Standard/Premium |
|---------|-------------|---------------------------|
| build.gradle | scalardb:3.14.0 | scalardb-cluster-java-client-sdk:3.14.0 + scalardb-sql-spring-data:3.14.0 |
| リポジトリ実装 | Core API直接使用 | SQL Interface / Spring Data JDBC |
| 設定ファイル | consensus-commit + ストレージ直接指定 | cluster + contact_points指定 |
| トランザクション | TransactionFactory直接初期化 | Cluster Client経由 |
エディション設定が未選定の場合はEnterprise Standardをデフォルトとする。
結果は generated/{service-name}/ に出力します。
重要: 各ステップ完了時に即座にファイルを出力してください。
generated/{service-name}/
├── src/main/java/com/example/{service}/
│ ├── {ServiceName}Application.java
│ ├── domain/
│ │ ├── model/
│ │ │ ├── {Entity}.java
│ │ │ └── {ValueObject}.java
│ │ ├── repository/
│ │ │ └── {Entity}Repository.java
│ │ ├── event/
│ │ │ └── {Entity}CreatedEvent.java
│ │ └── exception/
│ │ └── {Entity}NotFoundException.java
│ ├── application/
│ │ ├── service/
│ │ │ └── {Entity}ApplicationService.java
│ │ ├── command/
│ │ │ └── Create{Entity}Command.java
│ │ └── dto/
│ │ └── {Entity}Dto.java
│ ├── infrastructure/
│ │ ├── persistence/
│ │ │ └── ScalarDb{Entity}Repository.java
│ │ ├── messaging/
│ │ │ └── Kafka{Entity}EventPublisher.java
│ │ └── config/
│ │ └── ScalarDbConfig.java
│ └── presentation/
│ ├── rest/
│ │ └── {Entity}Controller.java
│ ├── request/
│ │ └── Create{Entity}Request.java
│ └── response/
│ └── {Entity}Response.java
├── src/main/resources/
│ ├── application.yml
│ └── scalardb.properties
├── src/test/java/
│ └── ...
├── build.gradle
├── Dockerfile
└── k8s/
└── deployment.yaml
あなたはScalarDBとSpring Bootに精通したコード生成エージェントです。 設計仕様に基づいて、本番環境で動作するコードを生成してください。
重要: コード生成前に必ず以下のルールを読み込んでください。
Read .claude/rules/scalardb-coding-patterns.md
Read .claude/rules/spring-boot-integration.md
これらのルールには:
が含まれています。ルールに従ってコードを生成してください。
コード生成に影響する技術選択をAskUserQuestionで確認する。
{
"questions": [
{
"question": "ターゲットのJavaバージョンを選択してください",
"header": "Java",
"options": [
{"label": "Java 17 LTS (推奨)", "description": "Spring Boot 3.x対応。record, sealed classes。安定性重視"},
{"label": "Java 21 LTS", "description": "最新LTS。Virtual Threads, Pattern Matching活用"},
{"label": "Java 11 LTS", "description": "レガシー互換。Spring Boot 2.xまで。新規は非推奨"}
],
"multiSelect": false
},
{
"question": "Spring Bootのバージョンを選択してください",
"header": "Spring Boot",
"options": [
{"label": "Spring Boot 3.2.x (推奨)", "description": "Java 17+。最新安定版。ScalarDB SDK対応確認済み"},
{"label": "Spring Boot 3.3.x", "description": "Java 17+。最新機能。互換性確認が必要な場合あり"},
{"label": "Spring Boot 2.7.x", "description": "Java 11対応。EOL注意。既存プロジェクト互換性確保"}
],
"multiSelect": false
},
{
"question": "テストフレームワーク構成を選択してください(複数可)",
"header": "テスト",
"options": [
{"label": "JUnit 5 + Mockito (推奨)", "description": "標準構成。ユニットテスト・モック"},
{"label": "Testcontainers", "description": "統合テスト用。実DBコンテナでScalarDBテスト"},
{"label": "ArchUnit", "description": "アーキテクチャテスト。レイヤー依存関係の検証"},
{"label": "REST Assured", "description": "APIテスト。E2Eエンドポイント検証"}
],
"multiSelect": true
}
]
}
生成への反映:
build.gradle の sourceCompatibility、record/sealed使用有無以下のファイルから情報を抽出:
ドメインサービス仕様 (domain-services-spec.md)
値オブジェクト仕様 (value-objects-spec.md)
リポジトリ仕様 (repository-interfaces-spec.md)
ScalarDBスキーマ (scalardb-schema.md)
サービスごとに以下のディレクトリ構造を作成:
mkdir -p generated/{service-name}/src/main/java/com/example/{service}/{domain,application,infrastructure,presentation}
mkdir -p generated/{service-name}/src/main/resources
mkdir -p generated/{service-name}/src/test/java
mkdir -p generated/{service-name}/k8s
出力: generated/{service-name}/build.gradle
ルール .claude/rules/spring-boot-integration.md の「依存関係」セクションに従い、
build.gradleを生成してください。
出力: generated/{service-name}/src/main/java/.../domain/model/
ルール .claude/rules/scalardb-coding-patterns.md の「値オブジェクト実装パターン」に従い、
各値オブジェクトを生成してください。
生成するクラス:
出力: generated/{service-name}/src/main/java/.../domain/model/
ルール .claude/rules/scalardb-coding-patterns.md の「エンティティ実装パターン」に従い、
集約ルートと子エンティティを生成してください。
必須要素:
create())reconstitute())出力: generated/{service-name}/src/main/java/.../domain/event/
各エンティティの操作に対応するドメインイベントを生成:
出力: generated/{service-name}/src/main/java/.../domain/exception/
ドメイン例外を生成:
出力:
generated/{service-name}/src/main/java/.../domain/repository/{Entity}Repository.javagenerated/{service-name}/src/main/java/.../infrastructure/persistence/ScalarDb{Entity}Repository.javaルール .claude/rules/scalardb-coding-patterns.md の「リポジトリ実装パターン」に従い、
インターフェースとScalarDB実装を生成してください。
ScalarDB実装の必須要素:
出力: generated/{service-name}/src/main/java/.../application/service/
ルール .claude/rules/spring-boot-integration.md の「アプリケーションサービス」に従い、
ユースケースを実装するサービスを生成してください。
必須要素:
@Transactional アノテーション@Valid)出力: generated/{service-name}/src/main/java/.../presentation/rest/
ルール .claude/rules/spring-boot-integration.md の「コントローラー」に従い、
REST APIエンドポイントを生成してください。
必須要素:
出力:
generated/{service-name}/src/main/resources/application.ymlgenerated/{service-name}/src/main/resources/scalardb.propertiesルールに従い、設定ファイルを生成してください。
出力:
generated/{service-name}/Dockerfilegenerated/{service-name}/k8s/deployment.yamlルール .claude/rules/spring-boot-integration.md の「Dockerfile」「Kubernetes マニフェスト」に従い、
デプロイ用ファイルを生成してください。
出力: generated/{service-name}/src/test/java/
以下のテストを生成:
出力: generated/{service-name}/GENERATED.md
生成したファイルの一覧と、次のステップ(手動で必要な作業)を記載:
# 生成されたコード
## 生成日時
{timestamp}
## 生成元
- domain-services-spec.md
- value-objects-spec.md
- repository-interfaces-spec.md
- scalardb-schema.md
## 生成ファイル一覧
[ファイルリスト]
## 次のステップ
1. build.gradleの依存関係バージョン確認
2. scalardb.propertiesの接続情報を環境に合わせて設定
3. ScalarDBスキーマの作成(schema-loader使用)
4. Kafkaトピックの作成
5. テストの実行
6. Docker イメージのビルドとプッシュ
特定のサービスのみ生成
出力ディレクトリを指定(デフォルト: generated/)
テストコード生成をスキップ
Kubernetes マニフェスト生成をスキップ
/generate-scalardb-code ./reports
/generate-scalardb-code ./reports --service=order-service
/generate-scalardb-code ./reports --output=./src
/design-implementation、/design-scalardb を先に実行するよう案内/select-scalardb-edition を先に実行するよう案内.claude/rules/scalardb-coding-patterns.md を参照| スキル | 用途 |
|-------|-----|
| /design-implementation | 実装仕様生成(入力) |
| /design-scalardb | ScalarDBスキーマ設計(入力) |
| /generate-test-specs | テスト仕様生成(補完) |
tools
インタラクティブワークフロー選択 - 実行したい処理を段階的に選択して実行。/workflow で呼び出し。
development
GraphDB可視化エージェント - RyuGraphデータベースの内容をMermaid/DOT/HTML形式で可視化。/visualize-graph [出力パス] で呼び出し。
tools
システム調査エージェント - コードベースの構造・技術スタック・問題点・DDD適合性を調査。/system-investigation [対象パス] で呼び出し。
databases
ScalarDBエディション選定エージェント - 対話形式で最適なScalarDBエディション(OSS/Enterprise Standard/Premium)を選定。/select-scalardb-edition で呼び出し。