claude/skills/requirements-feasibility-check/SKILL.md
技術的な実現可能性を検証し、PoCの計画を立てる。ユースケース記述後、DDDモデリングや本格実装の前に技術リスクを洗い出す場合に使用。「技術的に実現できるか確認したい」「PoCを計画したい」「技術リスクを洗い出したい」「不確実性を検証したい」などのリクエストで起動。
npx skillsauth add skanehira/dotfiles requirements-feasibility-checkInstall 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/USECASES.md" })
Read({ file_path: "docs/PRODUCT_SPEC.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: "例: 大量データの処理性能、API連携の可否" }
],
multiSelect: false
}
]
})
| 種類 | 説明 | 例 | |------|------|-----| | 技術的実現性 | そもそもできるか | LLMでSQL改善が可能か | | パフォーマンス | 速度・スケール | 1秒以内に応答できるか | | 統合 | 外部サービス連携 | DBへの接続方法 | | セキュリティ | 安全性の確保 | 認証情報の扱い | | コスト | 費用対効果 | API利用料金 |
遷移条件: 不確実な点が3-5個特定できたらフェーズ3へ
各不確実性のリスクレベルを評価する。
AskUserQuestion({
questions: [
{
question: "[不確実性]について、実現できなかった場合の影響度は?",
header: "影響度",
options: [
{ label: "致命的", description: "プロダクトが成り立たない" },
{ label: "重大", description: "主要機能が使えない" },
{ label: "中程度", description: "代替手段がある" },
{ label: "軽微", description: "なくても問題ない" }
],
multiSelect: false
}
]
})
| 影響度\発生確率 | 高 | 中 | 低 | |-----------------|-----|-----|-----| | 致命的 | 🔴 最優先 | 🔴 最優先 | 🟡 優先 | | 重大 | 🔴 最優先 | 🟡 優先 | 🟢 通常 | | 中程度 | 🟡 優先 | 🟢 通常 | 🟢 通常 | | 軽微 | 🟢 通常 | ⚪ 低 | ⚪ 低 |
遷移条件: リスク評価が完了したらフェーズ4へ
各リスクに対する検証項目を定義する。
AskUserQuestion({
questions: [
{
question: "[リスク]を検証するために、何を確認すればよいですか?",
header: "検証項目",
options: [
{ label: "検証項目を入力", description: "例: レスポンス時間を計測する" }
],
multiSelect: false
},
{
question: "成功と判断する基準は何ですか?",
header: "成功基準",
options: [
{ label: "基準を入力", description: "例: 95%タイルで1秒以内" }
],
multiSelect: false
}
]
})
## 検証項目: [項目名]
**対象リスク**: [リスクの説明]
**検証内容**:
- 何を検証するか
- どのように検証するか
**成功基準**:
- 定量的な基準(数値)
- 定性的な基準(状態)
**失敗した場合の代替案**:
- プランB
- スコープ縮小案
遷移条件: 主要リスクの検証項目が定義できたらフェーズ5へ
検証のための実装計画を立てる。
AskUserQuestion({
questions: [
{
question: "PoCの優先順位をつけてください。最もリスクが高いものから検証すべきです。",
header: "優先順位",
options: [
{ label: "優先順位を入力", description: "1. xxx 2. xxx" }
],
multiSelect: false
}
]
})
## PoC: [名前]
**目的**: 何を検証するか
**スコープ**:
- 含むもの
- 含まないもの
**実装内容**:
1. ステップ1
2. ステップ2
3. ステップ3
**必要なリソース**:
- 技術: xxx
- 環境: xxx
- データ: xxx
**成功基準**:
- 基準1
- 基準2
**判断**:
- 成功 → 本実装へ
- 失敗 → 代替案を検討
遷移条件: PoC計画が完成したらフェーズ6へ
採用する技術スタックを整理する。
AskUserQuestion({
questions: [
{
question: "この機能の実装に使用する技術(言語、フレームワーク、サービス)は決まっていますか?",
header: "技術スタック",
options: [
{ label: "決まっている", description: "技術スタックを入力" },
{ label: "検討中", description: "候補を入力" },
{ label: "未定", description: "PoCで決める" }
],
multiSelect: false
}
]
})
| 観点 | 質問 | |------|------| | 実績 | チームに経験はあるか | | 成熟度 | 安定しているか | | コミュニティ | サポートは得られるか | | コスト | ライセンス、運用コストは | | 将来性 | 長期的にメンテできるか |
遷移条件: 技術選定が整理できたらフェーズ7へ
テンプレートは references/feasibility-template.md を参照。
Write({
file_path: "docs/FEASIBILITY.md",
content: feasibilityContent
})
生成したドキュメントのレビューをサブエージェントに委譲する。
Task({
description: "技術検証レビュー",
subagent_type: "general-purpose",
prompt: `
以下の技術検証ドキュメントをレビューし、問題があれば修正してください。
## レビュー対象ファイル
- docs/FEASIBILITY.md
## レビュー観点
1. **不確実性の網羅性**: 技術的な不確実性が十分に洗い出されているか
2. **リスク評価の妥当性**: 影響度と発生確率の評価が適切か
3. **検証項目の具体性**: 何をどう検証するかが明確か
4. **成功基準の測定可能性**: 定量的で測定可能な基準か
5. **代替案の実現可能性**: 失敗時の代替案が現実的か
6. **PoC計画の実行可能性**: 必要なリソースと手順が明確か
## 出力形式
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)。