--- name: defining-form-specs description: Defines form field specifications including validation rules, error states, and submission behavior. Updates the "フォーム仕様" section in screen spec.md. allowed-tools: [Read, Write, Glob, mcp__figma__get_screenshot, mcp__figma__get_design_context, mcp__figma__get_metadata] --- # Form Specification Skill フォームフィールドの仕様(バリデーションルール、エラー状態、送信動作)を定義するスキルです。 ## 目次 1. [概要](#概要) 2. [適用条件](#適用条件) 3. [クイックスタート](#クイックスタート) 4. [詳細ガイド](#詳細ガイド) 5. [出力形式](#出力形式) ## 概要 このスキルは以下のタスクをサポートします: 1. **フィールド定義**: 入力フィールドの型、必須/任意、制約 2. **バリデーションルール**: 形式、文字数、範囲等の検証ルール 3. **エラーメッセージ**: 各バリデーションエラー時のメッセージ 4. **バリデーションタイミング**: リアルタイム/onBlur/onSubmit 5. **送信動作**: フォーム送信時の挙動 ## 禁止事項 **以下は絶対に行わないこと:** - 実装コードの生成(React Hook Form/Zod等) - バリデーションライブラリの提案 - 技術スタック固有の実装詳細 このスキルの目的は「フォームの仕様」の**情報整理のみ**です。 ## 適用条件 このスキルは**入力フォームがある画面**にのみ適用します。 ### 適用する画面の例 - ログイン/会員登録フォーム - プロフィール編集 - 検索フォーム(複雑な条件入力) - お問い合わせフォーム - 設定画面(入力あり) - データ入力/編集画面 ### 適用しない画面の例 - 一覧表示のみの画面 - 詳細表示のみの画面 - ダッシュボード(入力なし) **入力フォームがない場合**、spec.md のフォーム仕様セクションに「該当なし」と記載します。 ## 出力先 このスキルは**画面仕様書(spec.md)の「フォーム仕様」セクション**を更新します。 ``` .outputs/{screen-id}/ ├── spec.md # ← このスキルが「フォーム仕様」セクションを更新 ├── index.html # 参照用HTML └── assets/ ``` ## クイックスタート ### 基本的な使い方 ``` 以下のFigma画面のフォーム仕様を定義してください: https://figma.com/design/XXXXX/Project?node-id=1234-5678 ``` エージェントは自動的に: 1. 入力フィールドを検出 2. フィールド属性を整理 3. バリデーションルールを推測/文書化 4. **spec.md の「フォーム仕様」セクションを更新** ## 詳細ガイド 詳細な情報は以下のファイルを参照してください: - **[workflow.md](references/workflow.md)**: フォーム仕様定義のワークフロー - **[validation-patterns.md](references/validation-patterns.md)**: 一般的なバリデーションパターン - **[section-template.md](references/section-template.md)**: セクション出力テンプレート ## Workflow フォーム仕様定義時にこのチェックリストをコピー: ``` Form Specification Progress: - [ ] Step 0: spec.md の存在確認 - [ ] Step 1: 入力フィールドを検出 - [ ] Step 2: フィールド属性を整理 - [ ] Step 3: バリデーションルールを定義 - [ ] Step 4: エラーメッセージを定義 - [ ] Step 5: バリデーションタイミングを決定 - [ ] Step 6: 送信動作を定義 - [ ] Step 7: spec.md の「フォーム仕様」セクションを更新 ``` ### Step 0: spec.md の存在確認 ```bash ls .outputs/{screen-id}/spec.md ``` ### Step 1: 入力フィールドを検出 HTMLまたはFigmaから以下を抽出: - `` 各種(text, email, password, number, tel, date等) - `