claude/skills/requirements-usecase-description/SKILL.md
ユーザーストーリーを詳細なユースケース記述に展開する。正常系・異常系・代替フロー、ビジネスルールを明確化する。ユーザーストーリー作成後、DDDモデリングや設計の前に使用。「ユースケースを詳細化したい」「フローを整理したい」「異常系を洗い出したい」「ビジネスルールを明確にしたい」などのリクエストで起動。
npx skillsauth add skanehira/dotfiles requirements-usecase-descriptionInstall 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.
ユーザーストーリーを詳細化し、以下を生成する:
詳細化するユーザーストーリーを特定する。
Read({ file_path: "docs/USER_STORIES.md" })
ファイルが存在する場合: USER_STORIES.mdからストーリー一覧を読み込み、詳細化するストーリーを選択。
AskUserQuestion({
questions: [
{
question: "どのユーザーストーリーを詳細化しますか?(複数選択可)",
header: "対象ストーリー",
options: [
{ label: "ストーリーを選択", description: "読み込んだストーリーから選択" }
],
multiSelect: true
}
]
})
遷移条件: フェーズ2へ
ファイルが存在しない場合: AskUserQuestionで詳細化するストーリーを確認。
AskUserQuestion({
questions: [
{
question: "詳細化したいユーザーストーリーを入力してください。",
header: "対象ストーリー",
options: [
{ label: "ストーリーを入力", description: "詳細化したいストーリーを記述" }
],
multiSelect: false
}
]
})
遷移条件: 対象ストーリーが特定できたらフェーズ2へ
ユースケースに関わるアクターを洗い出す。
AskUserQuestion({
questions: [
{
question: "このユースケースに関わるアクター(人、システム)は誰ですか?",
header: "アクター",
options: [
{ label: "アクターを入力", description: "例: 開発者、AIエンジン、外部DB" }
],
multiSelect: false
}
]
})
| 種類 | 説明 | 例 | | -------------- | ---------------------- | ------------------------ | | 主アクター | ユースケースを開始する | 開発者 | | 副アクター | ユースケースに協力する | AIエンジン、決済システム |
遷移条件: アクターが特定できたらフェーズ3へ
ユースケースの基本フロー(ハッピーパス)を記述する。
質問パターン:
AskUserQuestion({
questions: [
{
question: "このユースケースの正常な流れをステップバイステップで教えてください。",
header: "正常系フロー",
options: [
{ label: "フローを入力", description: "1. xxx 2. xxx 3. xxx" }
],
multiSelect: false
}
]
})
1. [アクター] が [アクション] する
2. [システム] が [応答/処理] する
3. [アクター] が [アクション] する
4. [システム] が [結果] を表示する
例:
1. 開発者がSQLを入力する
2. 開発者がスキーマを入力する
3. 開発者が「分析」ボタンをクリックする
4. システムがAIエンジンに改善案を要求する
5. AIエンジンが改善案を3つ返す
6. システムが改善案を一覧表示する
遷移条件: 正常系フローが5-10ステップで記述できたらフェーズ4へ
ユースケースの開始条件と終了状態を明確にする。
AskUserQuestion({
questions: [
{
question: "このユースケースを開始するための条件は?(事前条件)",
header: "事前条件",
options: [
{ label: "条件を入力", description: "例: ログイン済み、プロジェクトを選択済み" }
],
multiSelect: false
},
{
question: "このユースケースが成功した後の状態は?(事後条件)",
header: "事後条件",
options: [
{ label: "状態を入力", description: "例: 改善案が保存されている" }
],
multiSelect: false
}
]
})
遷移条件: 事前・事後条件が定義できたらフェーズ5へ
正常系から分岐するパスを特定する。
質問パターン:
AskUserQuestion({
questions: [
{
question: "正常系の各ステップで、別の選択肢や分岐はありますか?",
header: "代替フロー",
options: [
{ label: "代替フローを入力", description: "ステップX: 〇〇の場合は△△する" }
],
multiSelect: false
}
]
})
例:
代替フロー A: ステップ2でスキーマをファイルからインポート
2a. 開発者が「インポート」ボタンをクリックする
2b. システムがファイル選択ダイアログを表示する
2c. 開発者がDDLファイルを選択する
2d. システムがスキーマをパースして入力欄に反映する
→ ステップ3に戻る
遷移条件: 主要な代替フローが洗い出せたらフェーズ6へ
エラーや例外的な状況を特定する。
質問パターン:
AskUserQuestion({
questions: [
{
question: "どんなエラーや例外が発生し得ますか?それぞれどう対処しますか?",
header: "異常系",
options: [
{ label: "異常系を入力", description: "エラー: 〇〇 → 対処: △△" }
],
multiSelect: false
}
]
})
例:
例外フロー E1: ステップ4でAIエンジンがタイムアウト
4a. システムが30秒待ってもAIから応答がない
4b. システムが「処理に時間がかかっています」と表示する
4c. システムがバックグラウンドで処理を継続する
4d. 完了したらメールで通知する
遷移条件: 主要な異常系が洗い出せたらフェーズ7へ
フローの中に隠れているビジネスルールを明確にする。
質問パターン:
AskUserQuestion({
questions: [
{
question: "このユースケースに関連するビジネスルールや制約はありますか?",
header: "ビジネスルール",
options: [
{ label: "ルールを入力", description: "例: 1回の分析で最大10クエリまで" }
],
multiSelect: false
}
]
})
例:
BR-001: 1回の分析で入力できるSQLは最大10クエリまで
BR-002: スキーマサイズは100KB以下
BR-003: 改善案は最低3つ、最大10個生成する
BR-004: 無料プランは1日5回まで分析可能
遷移条件: ビジネスルールが整理できたらフェーズ8へ
テンプレートは references/usecase-template.md を参照。
Write({
file_path: "docs/USECASES.md",
content: usecasesContent
})
graph LR
subgraph アクター
Dev[開発者]
AI[AIエンジン]
end
subgraph ユースケース
UC1((SQL分析))
UC2((結果比較))
UC3((履歴参照))
end
Dev --> UC1
Dev --> UC2
Dev --> UC3
UC1 --> AI
生成したドキュメントのレビューをサブエージェントに委譲する。
Task({
description: "ユースケースレビュー",
subagent_type: "general-purpose",
prompt: `
以下のユースケースドキュメントをレビューし、問題があれば修正してください。
## レビュー対象ファイル
- docs/USECASES.md
## レビュー観点
1. **正常系の完全性**: フローが開始から終了まで漏れなく記述されているか
2. **代替フローの網羅性**: 主要な分岐パスが洗い出されているか
3. **異常系の網羅性**: エラーケースが十分に考慮されているか
4. **ビジネスルールの明確さ**: 制約や条件が具体的に定義されているか
5. **事前・事後条件の妥当性**: 開始条件と終了状態が明確で矛盾がないか
6. **アクターの適切さ**: 主アクター・副アクターが適切に定義されているか
## 出力形式
1. 発見した問題のリスト(問題がない場合は「問題なし」)
2. 各問題の修正内容
3. 修正後のファイル更新(Editツールで修正)
問題がなくなるまでレビューと修正を繰り返すこと。
`
})
tools
ローカルのコミット履歴と差分からDraft PRを作成する。ブランチ未作成・コミット未作成の状態でも、必要に応じてブランチ作成とコミットを行ってからPRを作成する。`.github/` にPRテンプレートがあれば内容を埋めて、なければ作業内容から本文を生成し、`AskUserQuestion`で作成可否を確認してから `gh pr create --draft` を実行する。「PRを出したい」「draft PRを作成」「プルリクを作って」「PR本文を生成」などのリクエストで起動。
tools
複数サブエージェントに異なる立場を与えて議論を反復し、相違が収束するまで議題を検証して結論を提示する。設計妥当性検証・実装方針比較・原因分析のセカンドオピニオン・アイデアの壁打ちに使用。「議論したい」「壁打ちしたい」「セカンドオピニオン」「複数視点で検証したい」などで起動。
tools
変更内容を分析し、Conventional Commit形式でコミットする (pushはユーザが手動)
development
React 19 + Vite+ (`vp`) + TypeScript + Tailwind CSS v4 + React Router v7 (HashRouter) でモバイル向け静的SPAデモサイトをTDDで構築し、Cloudflare Workers (Static Assets) へ自動デプロイするまでの標準ワークフローを提供する。テンプレートリポジトリ `skanehira/demo-site-template` を `gh repo create --template` で clone することで scaffold を省略する。`localStorage` でフロントエンドのみ完結する"フロントのみ完結デモ"に特化。デザインコンセプトの確立には `frontend-design` スキルを呼び出して連携する。起動トリガー:「デモサイトを作りたい」「モバイル向け静的デモ」「SPAを作ってCloudflareにデプロイ」「静的プロトタイプを公開」「localStorage でフロントだけ完結」。ユースケース:(1)クライアント提案用のUI/UXたたき台、(2)新機能のプロトタイプ、(3)モバイル向けランディング。ツールチェーンは Vite+ (`vp`) で統合(内部 PM は pnpm)。