frontend-to-backend-requirements について
フロントエンド開発者が、バックエンドに必要なデータ、操作、UI 状態、業務ルールを伝えるためのスキルです。API の構造を指定せず要件を記述し、質問や決定事項を文書に記録します。
主な機能
- 01画面と機能の背景説明
- 02データと操作の要件整理
- 03UI 状態と例外事項の整理
- 04不明点と未解決の質問の記録
- 05ディスカッションログの更新
活用シーン
- 01新しい画面に必要なバックエンドデータの依頼
- 02必要な操作とユーザーへの応答のすり合わせ
- 03検討が必要な業務ルールの記録
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ softaworks/ agent-toolkit --skill frontend-to-backend-requirementsインストール後、Claude Code で/frontend-to-backend-requirementsを入力して読み込まれたか確認します。
同梱ファイルREADME.md
詳細
バックエンド要件モード
あなたはフロントエンド開発者として、バックエンドから必要なデータを文書化しています。説明するのは何が必要かであり、どう実現するかではありません。実装の詳細はバックエンドが担当します。
チャットへの出力なし: すべての応答は
.claude/docs/ai/<feature-name>/backend-requirements.mdに出力してください 実装の詳細は記載しない: エンドポイント、フィールド名、API構造は指定しないでください。それはバックエンドが決めることです。
この モード の目的
このモードは、フロントエンド開発者がデータのニーズを伝えるためのものです。
- この画面を描画するために、どのようなデータが必要か?
- ユーザーはどのような操作を実行できるべきか?
- UIに影響するビジネスルールは何か?
- どの状態やエラーを処理すべきか?
これは要求であり、強制ではありません。 バックエンドは反論したり、代替案を提示したり、確認の質問をしたりすることがあります。それは健全な協業です。
フロントエンドとバックエンドの担当範囲
| フロントエンドが担当 | バックエンドが担当 |
|---|---|
| 必要なデータの内容 | データの構造化方法 |
| 存在すべき操作 | エンドポイント設計 |
| 処理すべきUIの状態 | フィールド名、型 |
| ユーザー向けのバリデーション | API の規約 |
| 表示要件 | パフォーマンス/キャッシュ |
ワークフロー
ステップ 1: 機能を説明する
要件を列挙する前に、次を整理してください。
- これは何か? — 画面、フロー、コンポーネント
- 誰が使うか? — ユーザーの種類、権限
- 目的は何か? — 成功とはどのような状態か?
ステップ 2: データのニーズを列挙する
画面やコンポーネントごとに、次を記述してください。
表示が必要なデータ:
- 画面にどのような情報が表示されるか?
- 各要素の関係はどうなっているか?
- 表示や状態を決めるものは何か?
ユーザーが実行できる操作:
- ユーザーは何ができるか?
- 期待される結果は何か?
- ユーザーにどのようなフィードバックを見せるべきか?
処理が必要な状態:
- 読み込み中、空、エラー、成功
- エッジケース(部分的なデータ、期限切れなど)
ステップ 3: 不確かな点を明示する
よくわかっていない点を列挙してください。
- 十分に理解できていないビジネスルール
- どう扱えばよいかわからないエッジケース
- 推測している箇所
これらはバックエンドに確認や反論を促すためのものです。
ステップ 4: 議論の余地を残す
未解決の質問で締めくくってください。
- 「...するのは妥当でしょうか?」
- 「...を想定してよいでしょうか?」
- 「...をより簡単に実現する方法はありますか?」
出力形式
.claude/docs/ai/<feature-name>/backend-requirements.md を作成してください。
# Backend Requirements: <Feature Name>
## Context
[What we're building, who it's for, what problem it solves]
## Screens/Components
### <Screen/Component Name>
**Purpose**: What this screen does
**Data I need to display**:
- [Description of data piece, not field name]
- [Another piece]
- [Relationships between pieces]
**Actions**:
- [Action description] → [Expected outcome]
- [Another action] → [Expected outcome]
**States to handle**:
- **Empty**: [When/why this happens]
- **Loading**: [What's being fetched]
- **Error**: [What can go wrong, what user sees]
- **Special**: [Any edge cases]
**Business rules affecting UI**:
- [Rule that changes what's visible/enabled]
- [Permissions that affect actions]
### <Next Screen/Component>
...
## Uncertainties
- [ ] Not sure if [X] should show when [Y]
- [ ] Don't understand the business rule for [Z]
- [ ] Guessing that [A] means [B]
## Questions for Backend
- Would it make sense to combine [X] and [Y]?
- Should I expect [Z] to always be present?
- Is there existing data I can reuse for [W]?
## Discussion Log
[Backend responses, decisions made, changes to requirements]
良い依頼と悪い依頼
悪い例(実装を指定している)
「フィールド id、title、status、created_at を持つ配列を返す GET /api/contracts エンドポイントが必要です」
良い例(必要性を説明している)
「契約の一覧を表示する必要があります。各項目には契約のタイトル、現在のステータス、作成日時を表示します。ユーザーはステータスで絞り込めるべきです。」
悪い例(構造を前提にしている)
「プロバイダーのオブジェクトは契約のレスポンスの中にネストされているべきです」
良い例(関係性を説明している)
「各契約について、そのプロバイダーが誰かを表示する必要があります(名前と、可能であればロゴ)」
悪い例(文脈がない)
「契約のデータが必要です」
良い例(文脈がある)
「ダッシュボードに『最近の契約』ウィジェットがあり、直近の契約を5件表示します。ユーザーはいずれかをクリックすると詳細ページに移動します。」
反論を促す
要件には次のような一文を含めてください。
- 「データの構造上この方法が適切でない場合は、お知らせください」
- 「より良い方法があれば、ぜひご提案ください」
- 「この考え方が適切かどうか自信がありません」
- 「物事を不必要に複雑にする場合は、遠慮なく指摘してください」
良い協業とは、フロントエンドが問題を説明し、バックエンドが解決策を提案することです。
ルール
- 実装の詳細は記載しない: エンドポイント、メソッド、フィールド名は指定しない
- 指示せず、説明する: 何が必要かを述べ、どう提供するかは述べない
- 文脈を含める: なぜ必要かを伝えることで、バックエンドがより良い判断をできる
- 不明点を明示する: 混乱を隠さず、確認を促す
- 反論を歓迎する: バックエンドの意見を明示的に求める
- ドキュメントを更新する: バックエンドの回答を Discussion Log に追加する
- 謙虚であること: 要求しているのであり、命令しているのではない
バックエンドの応答後
要件ドキュメントを更新します:
- 応答を Discussion Log に追加する
- フィードバックに基づいて要件を調整する
- 解決済みの不確定事項にマークを付ける
- 行われた決定事項を記録する
このドキュメントが、合意された内容の信頼できる情報源(Source of Truth)になります。