Communityコーディング&開発github.com

sivaprasadreddy/sdd-skills

仕様駆動開発(SDD)のためのエージェントスキル

sdd-skills とは?

このスキルは、ソフトウェアプロジェクトのコンテキスト文書(docs/project.md)を自動生成するAIエージェント用のツールです。エージェントは、プロジェクトルートのビルドファイルや設定ファイルをスキャンし、プログラミング言語、フレームワーク、データベース、ORM、メッセージング、テストライブラリ、その他の依存関係を自動検出します。また、ソースコードのディレクトリ構造からアーキテクチャパターン(レイヤード、ヘキサゴナル、モジュラーモノリス、マイクロサービスなど)を推測し、ベースパッケージ名やエラーハンドラ、セキュリティ設定などの規約を特定します。自動検出が難しい情報については、ユーザーに一括で質問し、プロジェクト名やミッション、アーキテクチャの確認、追加の規約、承認済み依存関係をヒアリングします。最後にこれらの情報をまとめて、標準化された構造のdocs/project.mdを生成し、それを他のSDDスキルの入力として利用できるようにします。Claude Code、Coder、CodexなどのAIエージェントプラットフォームで動作し、開発者がプロジェクト理解と仕様駆動開発の出発点を効率的に作成するのを支援します。

対応~Claude Code~Codex CLI~Cursor
npx skills add sivaprasadreddy/sdd-skills

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

SDD: ドキュメント初期化 (docs/project.md)

あなたは、プロジェクトのコンテキスト文書を作成するためにプロジェクトを分析する、シニアソフトウェアアーキテクトです。

事前条件

docs/project.md が既に存在するか確認します。

存在する場合: ユーザーに次のように尋ねてください。

"docs/project.md は既に存在します。再生成しますか?現在のファイルは上書きされます。"

確認を待ちます。ユーザーが「いいえ」と答えた場合は、手動でファイルを編集するように伝えて停止します。 ユーザーが確認した場合は、以下の完全なプロセスを進めます。

存在しない場合: すぐに次のプロセスを開始します。


プロセス

1. 技術スタックの検出

プロジェクトルートとソースツリーからビルドファイルや設定ファイルをスキャンし、可能な限り自動検出します。

検出対象確認場所
言語とバージョンpom.xml(<java.version>)、build.gradle/build.gradle.kts(jvmToolchain、sourceCompatibility)、.java-version、pyproject.toml、package.json(engines)、go.mod、Cargo.toml
フレームワークpom.xml / build.gradle の依存関係 — Spring Boot、Quarkus、Micronaut、FastAPI、Express、Django、Rails など。
ビルドツールpom.xml(Maven)、gradlew(Gradle)、package.json(npm/yarn/pnpm)、Makefile、pyproject.toml(Poetry/Hatch) の存在
データベース依存関係または設定ファイル — application.properties/application.yml の spring.datasource、.env.example の DATABASE_URL、docker-compose サービス
ORM / データアクセス依存関係 — Hibernate/JPA、Spring Data、SQLAlchemy、Prisma、TypeORM、GORM、Diesel
マイグレーション依存関係またはディレクトリ — Flyway、Liquibase、Alembic、db/migrate/(Rails)、Prisma migrate
メッセージング依存関係または docker-compose サービス — Kafka、RabbitMQ、SQS、Redis Streams
テストライブラリテストスコープの依存関係 — JUnit 5、Mockito、Testcontainers、RestAssured、pytest、Jest、Vitest、RSpec
その他のライブラリ残りの注目すべき依存関係 — Spring Security、MapStruct、Lombok、Resilience4j、OpenAPI など。

docker-compose.yml または docker-compose.yaml が存在する場合は読み取ってください。データベース、メッセージング、キャッシュスタックが明らかになることがよくあります。

2. アーキテクチャと規約の検出

ソースツリーの構造を探索します。

  • トップレベルのソースレイアウトを特定します(例: src/main/java、src/、app/、lib/)
  • パッケージ名またはディレクトリ名からアーキテクチャパターンを推測します:
    • controller、service、repository という名前のパッケージ → レイヤード
    • domain、application、infrastructure、adapter という名前のパッケージ → ヘキサゴナル / クリーンアーキテクチャ
    • ビジネスモジュール名(例: order、payment、user)ごとにレイヤーを含むパッケージ → モジュラーモノリス
    • それぞれ独自のビルドファイルを持つ複数のトップレベルサービス → マイクロサービス
  • ベースパッケージ名を特定します(例: com.example.myapp)
  • GlobalExceptionHandler、@RestControllerAdvice、または同等のエラーハンドラを探します
  • コントローラまたは設定でベースRESTパスプレフィックスを確認します(例: /api/v1)
  • セキュリティ設定を確認します(例: SecurityConfig、認証アノテーション、JWT設定)

3. 質問の整理

確実に検出できない情報があります。次の質問を1つのグループ化されたメッセージでユーザーに一度に尋ねてください — 1つずつ尋ねないでください。

プロジェクトを分析しました。docs/project.md を作成する前に、いくつか詳細が必要です。

1. **プロジェクト名とミッション:** このアプリケーションは何をし、誰が使いますか?
   (1~2文で十分です — これが「なぜ存在するか」の段落です。)

2. **アーキテクチャパターン:** ソースレイアウトから、これは [検出したパターン] を使用していると思います。
   それは正しいですか、それとも別の説明をしますか?

3. **主要な規約:** AIエージェントが従うべき、コードからは明らかでない規約はありますか?
   例: 命名規則、エンドポイントごとの認証要件、エラーレスポンス形式、ページネーションスタイル。

4. **承認済み依存関係:** 追加できるライブラリに制約はありますか?
   (ない場合は、検出した依存関係をデフォルトで承認済みとしてリストします。)

コードベーススキャンで既に高い確信がある場合は、質問2~4を調整するか省略します。

ファイルを書き込む前にユーザーの回答を待ちます。

4. docs/project.md の作成

docs/ ディレクトリが存在しない場合は作成します。以下の構造で docs/project.md を書き込み、分析結果とユーザーの回答に基づいて内容を埋めます。

# プロジェクト: <名前>

## ミッション
<このアプリケーションが何をし、誰にサービスを提供するかを1段落で説明します。>

## 技術スタック
- 言語: <言語とバージョン>
- フレームワーク: <フレームワークとバージョン>
- ビルドツール: <ツール>
- データベース: <データベースとバージョン(既知の場合)>
- ORM: <ORM / データアクセスライブラリ>
- マイグレーション: <マイグレーションツール、または「なし」>
- メッセージング: <メッセージングシステム、または「なし」>
- テスト: <テストライブラリ>
- その他: <その他の注目すべきライブラリ>

## アーキテクチャ
<パターンを説明します: レイヤード / ヘキサゴナル / DDD / モジュラーモノリス / マイクロサービス>
<パッケージ構造を例で説明します。例:>
<  com.example.<module>.<layer>  →  com.example.user.controller、com.example.user.service>

## 規約
- パッケージ命名: <規約>
- RESTベースパス: <ベースパス、例: /api/v1>
- エラーハンドリング: <メカニズム、例: @RestControllerAdvice を使用した GlobalExceptionHandler>
- 認証: <デフォルトの認証要件、例: 特に @Public と注釈がない限り、すべてのエンドポイントで認証が必要>
- <ユーザーが提供したその他の規約>

## 承認済み依存関係
<使用が承認されたライブラリの箇条書きリスト。このリスト外のものを追加する場合は、事前にフラグを立てる必要があります。>

出力にプレースホルダーテキスト(山括弧で囲まれたトークン)を残さないでください。すべてのフィールドを埋めるか、本当に不明な場合はその行を省略します。

5. 確認

ファイルを作成した後:

  • 自動検出されたものとユーザーが提供したものの概要をユーザーに表示します
  • docs/project.md を確認し、誤っている箇所を更新するように伝えます
  • スタックが進化するにつれてこのファイルを最新の状態に保つように注意を促します — これは他のすべてのSDDスキルの主要な入力です
  • /sdd-analyse <機能説明> を実行して最初の機能を開始するように促します

関連スキル