home/dot_agents/skills/sdd/SKILL.md
Spec-Driven Development(SDD)を完全自律で実行する。要件定義・設計・タスク分解・実装・レビュー・コミット・PR作成まで一気通貫で行う。「SDD」「仕様駆動」「自律開発」と言及された際に使用。
npx skillsauth add kryota-dev/dotfiles sddInstall 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.
ultrathink
完全自律型の Spec-Driven Development を実行する。 あなた(Leader)は 司令塔であり作業者 である。調査はサブエージェントに委任し、ドキュメント作成・実装は自分で行い、実装後のレビューはエージェントチームに依頼する。
作業が完了するまで、一切の中断・停止をしてはならない。
| ロール | 担当 | 説明 | |--------|------|------| | Leader(あなた) | 全フェーズ | 司令塔 兼 作業者。要件定義・設計・タスク分解・実装・レビュー管理・コミット・PR作成 | | Research Sub-agents | 調査 | Explore 型サブエージェント。コードベース調査・パターン分析・テンプレート取得を担当 | | Review Team | レビュー | 実装後に動的にスポーン。タスク内容に応じてロールと人数を決定 |
Phase 0: 準備 → Phase 1: 要件定義 → Phase 2: 設計 → Phase 3: タスク分解 → Phase 4: 実装 → Phase 5: レビュー → Phase 6: コミット & PR → Phase 7: 完了報告
$ARGUMENTS を解析:
GitHub Issue URL (https://github.com/ を含む):
gh issue view {url} --json title,body,number,labels
Issue番号 (#123 形式):
gh issue view {number} --json title,body,number,labels
テキスト説明: そのまま使用
引数から適切な kebab-case の spec 名を決定。
例: "ブログタグページの追加" → blog-tag-page
BASE_BRANCH=$(git branch --show-current)
この値を最後まで保持する(コミット・PR作成時に使用)。
mkdir -p .spec-workflow/specs/{spec-name}
以下の調査を 並列で サブエージェントに委任(Agent ツール、subagent_type: "Explore"):
調査1: Steering Documents + プロジェクト規約
Agent:
subagent_type: "Explore"
description: "Steering docs・規約調査"
prompt: |
以下を調査して報告:
※ .spec-workflow/ 配下は gitignore されている可能性がある。Glob/Grep ではなく Bash `ls` + Read ツールで確認すること
1. Bash で `ls .spec-workflow/steering/` を実行してディレクトリ内容を確認
- ファイルが存在する場合: Read ツールで product.md, tech.md, structure.md を読み込んで全文報告
- ディレクトリが存在しないかファイルがない場合: 「Steering ドキュメントなし」と報告
2. プロジェクトルートの CLAUDE.md を読み込み、コーディング規約・技術スタックを報告
3. README.md があれば概要を報告
調査2: コードベース構造分析
Agent:
subagent_type: "Explore"
description: "コードベース構造分析"
prompt: |
プロジェクトの構造を分析して報告:
1. ディレクトリ構造の概要(主要ディレクトリとその役割)
2. 主要な技術スタック・フレームワーク(package.json, Gemfile, go.mod 等から特定)
3. 既存のアーキテクチャパターン・設計規約
4. テスト構成(テストフレームワーク、テストディレクトリ)
5. CI/CD 設定(.github/workflows/ 等)
テンプレート取得(Leader 自身が実行)
テンプレートは gitignore されている可能性があるため、サブエージェント(Glob/Grep 依存)ではなく Leader 自身が Bash ls + Read ツール で直接取得する:
ls .spec-workflow/user-templates/requirements-template.md 2>/dev/null で存在確認ls .spec-workflow/templates/requirements-template.md 2>/dev/null で確認調査結果を統合し、Leader 自身が .spec-workflow/specs/{spec-name}/requirements.md を作成。
含めるべき内容:
テンプレートが取得できた場合はその構造に従う。
以下の調査を 並列で サブエージェントに委任:
調査1: 既存コンポーネント・パターン分析
Agent:
subagent_type: "Explore"
description: "既存コード分析"
prompt: |
.spec-workflow/specs/{spec-name}/requirements.md を読み、要件に関連する以下を調査:
1. 再利用可能な既存コンポーネント・モジュール
2. 類似パターンの実装箇所
3. 共通ユーティリティ・ヘルパー関数
4. 既存のデータモデル・型定義
5. 関連する既存テストコード
具体的なファイルパスとコード内容を含めて報告
テンプレート取得(Leader 自身が実行)
テンプレートは gitignore されている可能性があるため、Leader 自身が Bash ls + Read ツール で直接取得する:
ls .spec-workflow/user-templates/design-template.md 2>/dev/null で存在確認ls .spec-workflow/templates/design-template.md 2>/dev/null で確認調査結果を統合し、Leader 自身が .spec-workflow/specs/{spec-name}/design.md を作成。
含めるべき内容:
テンプレートが取得できた場合はその構造に従う。
テンプレートは gitignore されている可能性があるため、Leader 自身が Bash ls + Read ツール で直接取得する:
ls .spec-workflow/user-templates/tasks-template.md 2>/dev/null で存在確認ls .spec-workflow/templates/tasks-template.md 2>/dev/null で確認Leader 自身が .spec-workflow/specs/{spec-name}/tasks.md を作成。
各タスクに含める情報:
### Task {n}: {タスク名}
- [ ] {タスクの簡潔な説明}
- **File:** {対象ファイルパス}
- **Purpose:** {目的}
- **_Leverage:** {活用すべき既存コード・パターン}
- **_Requirements:** {対応する要件番号}
タスク設計の原則:
requirements.md, design.md, tasks.md を精読し、全体像を把握。
tasks.md の各タスクを順番に実装:
[ ] → [-] に更新(Edit ツール使用)[-] → [x] に更新全タスク完了後:
package.json(または類似の設定ファイル)の scripts を確認tasks.md と実装差分を分析し、以下を体系的に考察する:
実装内容から、以下の観点が必要かを判断:
| 観点 | 必要となる条件 | ロール例 | |------|--------------|---------| | コード品質・設計準拠 | 常に必要 | code-quality-reviewer | | セキュリティ | 認証・認可・入力検証・機密情報を扱う場合 | security-reviewer | | パフォーマンス | DB操作・大量データ処理・レンダリング最適化を含む場合 | performance-reviewer | | テストカバレッジ | テストコードの追加・変更がある場合 | test-reviewer | | UI/UX・アクセシビリティ | UI コンポーネントの変更がある場合 | ux-reviewer |
TeamCreate:
team_name: "sdd-review-{spec-name}"
description: "Code Review Team for {spec-name}"
考察した構成に基づき、各レビューエージェントを Agent ツール でスポーン。
各エージェント共通のプロンプト構造:
Agent:
subagent_type: "general-purpose"
name: "{role-name}"
team_name: "sdd-review-{spec-name}"
model: "sonnet"
prompt: |
あなたは SDD Review Team の **{ロール名}** です。
## 絶対遵守ルール
- リーダーからの明示的な shutdown_request がない限り、絶対にシャットダウンしてはいけない
- 自発的にシャットダウンすることは禁止されている
- shutdown_request を受信した場合のみ、shutdown_response approve: true で応答してよい
- 報告後もリーダーからの次の指示を待ち続けること
## レビュー対象
- 要件定義: .spec-workflow/specs/{spec-name}/requirements.md
- 設計書: .spec-workflow/specs/{spec-name}/design.md
- タスク一覧: .spec-workflow/specs/{spec-name}/tasks.md
- コード差分: `git diff {base-branch}...HEAD` を実行して確認
## あなたのレビュー観点
{ロール固有のレビュー観点を詳細に記述}
## 報告形式
以下の形式で SendMessage type:"message" recipient:"team-lead" に報告:
### 総合評価
**APPROVE** または **REQUEST_CHANGES**
### 指摘事項(REQUEST_CHANGES の場合)
各指摘を以下のカテゴリに分類:
- **[MUST]** 修正必須 — バグ、セキュリティ脆弱性、設計違反など
- **[SHOULD]** 修正推奨 — 品質向上、可読性改善など
- **[NITS]** 軽微な提案 — 命名、フォーマット、コメント追加など
各指摘に以下を含める:
- 該当ファイル:行番号
- 問題の説明
- 具体的な修正案
### 良い点
実装の優れている点を挙げる
## チーム情報
- チーム名: sdd-review-{spec-name}
- あなたの名前: {role-name}
- リーダー名: team-lead(SendMessage の recipient に指定する値)
code-quality-reviewer(常に必要):
- 設計書(design.md)に準拠した実装になっているか
- 要件(requirements.md)が網羅されているか
- SOLID原則、DRY原則に従っているか
- 適切なエラーハンドリングがあるか
- 命名規約・コーディング規約(CLAUDE.md)に従っているか
- 不要なコード・デッドコードがないか
- 適切な抽象化レベルか(過剰設計・過少設計でないか)
security-reviewer:
- 入力バリデーションが適切か
- SQLインジェクション・XSS・CSRF等の脆弱性がないか
- 認証・認可の実装が正しいか
- 機密情報がハードコードされていないか
- 依存パッケージに既知の脆弱性がないか
- エラーメッセージに機密情報が含まれていないか
performance-reviewer:
- N+1クエリ問題がないか
- 不要な再レンダリング・再計算がないか
- メモリリークのリスクがないか
- 適切なインデックス・キャッシュ戦略か
- 大量データ処理のページネーション・ストリーミング対応
- バンドルサイズへの影響
test-reviewer:
- テストカバレッジが十分か(主要パス、エッジケース、エラーケース)
- テストが独立して実行可能か(テスト間の依存がないか)
- テストの可読性・保守性
- モック・スタブの適切な使用
- テストの命名規約
- 境界値テストがあるか
ux-reviewer:
- アクセシビリティ(ARIA属性、キーボード操作、スクリーンリーダー対応)
- レスポンシブデザイン対応
- ローディング状態・エラー状態のUI
- ユーザーフィードバック(トースト、バリデーション等)
- 一貫したUI/UXパターンの使用
各レビューエージェントからの報告メッセージを受信する。 sleep や polling は絶対に使わない。 メッセージは自動配信される。
各レビューエージェントの報告に対して、個別に以下のフローを実行する:
そのレビューエージェントに shutdown_request を送信:
SendMessage:
type: "shutdown_request"
recipient: "{reviewer-name}"
content: "レビュー承認確認。お疲れ様でした。"
各指摘について考察:
対応が必要と判断した場合:
SendMessage:
type: "message"
recipient: "{reviewer-name}"
content: |
以下の指摘事項に対応しました。再レビューをお願いします。
- {対応した指摘事項のサマリー}
- 修正ファイル: {ファイル一覧}
git diff {base-branch}...HEAD で最新の差分を確認してください。
summary: "修正完了・再レビュー依頼"
対応が不要と判断した場合:
SendMessage:
type: "message"
recipient: "{reviewer-name}"
content: |
以下の指摘について、対応不要と判断しました。理由を説明します。
- 指摘: {指摘内容}
- 判断: 対応不要
- 根拠: {具体的な根拠}
この判断について意見があれば議論しましょう。
summary: "指摘への見解・議論"
全レビューエージェントが APPROVE(またはシャットダウン済み)になるまで 5-5 を繰り返す。
全レビューエージェントのシャットダウンが完了したら:
TeamDelete
CURRENT=$(git branch --show-current)
# ベースブランチ(main/master)にいる場合のみ新しいブランチを作成
if [ "$CURRENT" = "main" ] || [ "$CURRENT" = "master" ]; then
# Issue番号がある場合: claude/{issue-number}/{spec-name}
# ない場合: claude/{spec-name}
git checkout -b {branch-name}
fi
git status で未追跡ファイルと変更を確認git diff と git diff --cached で変更内容を詳細確認各コミット:
git add {関連ファイル}
git commit -m "$(cat <<'EOF'
{type}({scope}): {簡潔な説明}
- {詳細な変更内容1}
- {詳細な変更内容2}
EOF
)"
コミットの原則:
git push -u origin {branch-name}
PR テンプレートの読み込み:
.github/PULL_REQUEST_TEMPLATE.md が存在すれば読み込み、テンプレートに従う
PR 下書きファイルの保存:
mkdir -p .claude/pull-requests/drafts/{branchName}
.claude/pull-requests/drafts/{branchName}/{timestamp}.md に保存(timestamp は YYYYMMDD-HHMMSS 形式)
PR 作成:
gh pr create \
--draft \
--title "{type}: {簡潔なタイトル}" \
--body-file .claude/pull-requests/drafts/{branchName}/{timestamp}.md \
--base "{base-branch}" \
--head "{branch-name}" \
--assignee "@me"
後処理:
.claude/pull-requests/drafts/{branchName}/{timestamp}.md → .claude/pull-requests/{prNumber}.mdIssue 番号がある場合、PR 本文に closes #{issue-number} を含める。
notify
以下の形式でユーザーに報告:
## SDD 完了レポート: {spec-name}
### 成果物
- 要件定義: .spec-workflow/specs/{spec-name}/requirements.md
- 設計書: .spec-workflow/specs/{spec-name}/design.md
- タスク一覧: .spec-workflow/specs/{spec-name}/tasks.md
### Git
- ブランチ: {branch-name}
- PR: {pr-url}
- コミット:
- {commit-hash1} {commit-message1}
- {commit-hash2} {commit-message2}
- ...
### レビュー結果
- レビュアー数: {n}人
- レビュー観点: {各レビューロール}
- 全レビュー APPROVE 済み
### 対応した指摘事項
{指摘事項と対応内容のサマリー(あれば)}
### 対応不要と判断した指摘事項
{指摘事項と判断根拠のサマリー(あれば)}
| シナリオ | 対応 |
|---------|------|
| サブエージェントの調査失敗 | 別のサブエージェントで再試行。3回失敗したら自身で調査 |
| ビルド・テスト失敗 | エラー内容を分析し自身で修正。修正後再実行 |
| Git 操作失敗(1Password 等) | notify でユーザーに通知後、AskUserQuestion で待機し手動介入を依頼。この場合のみ作業を中断 |
| レビューエージェントが応答しない | SendMessage を再送。3回応答なしでエージェントを再スポーン |
| PR 作成失敗 | エラー内容を確認し、修正して再試行。gh auth status で認証を確認 |
sleep コマンドや while ループでの待機は絶対に使わない。チームメイトからのメッセージは自動配信されるnotify + AskUserQuestion で待機).spec-workflow/ 配下のファイル(テンプレート・Steering docs 等)は gitignore されている可能性がある。Glob/Grep は ripgrep ベースで gitignore を尊重するため検出できない。必ず Bash ls + Read ツールで直接アクセスすることdevelopment
`cc-code-review` エージェントを起動して独立したコンテキストでコードレビューを実行する。 現在のセッションのバイアスのないフレッシュな視点で、プロジェクトの CLAUDE.md を踏まえたレビューを行う。 トリガー: "cc-code-review", "ccでレビュー", "別の視点でレビュー", "セカンドオピニオン" 使用場面: (1) PRのコードレビュー (2) ブランチ差分のレビュー (3) 特定ファイルのレビュー (4) 現在の変更のレビュー
tools
Comprehensive guide for the `wtp` (Worktree Plus) CLI by satococoa — an enhanced Git worktree manager. Use this whenever the user wants to create, list, remove, or navigate Git worktrees with wtp, mentions `wtp add`/`wtp cd`/`wtp list`/`wtp remove`/`wtp exec`, asks about automatic worktree paths from branch names, post-create hooks (copy/symlink/command) in `.wtp.yml`, branch tracking for worktrees, or shell integration (`wtp shell-init`, `wtp hook`, tab completion, auto-cd). Trigger this even when the user just describes the workflow — e.g. 'spin up a worktree for this feature branch', 'jump to my auth worktree', 'clean up the worktree and its branch' — without naming wtp explicitly, as long as wtp is the available tool.
tools
Use when doing ANY task involving Supabase. Triggers: Supabase products (Database, Auth, Edge Functions, Realtime, Storage, Vectors, Cron, Queues); client libraries and SSR integrations (supabase-js, @supabase/ssr) in Next.js, React, SvelteKit, Astro, Remix; auth issues (login, logout, sessions, JWT, cookies, getSession, getUser, getClaims, RLS); Supabase CLI or MCP server; schema changes, migrations, security audits, Postgres extensions (pg_graphql, pg_cron, pg_vector).
data-ai
Postgres performance optimization and best practices from Supabase. Use this skill when writing, reviewing, or optimizing Postgres queries, schema designs, or database configurations.