Claude Code Plugins

Community-maintained marketplace

Feedback
1
0

Defines form field specifications including validation rules, error states, and submission behavior. Updates the "フォーム仕様" section in screen spec.md.

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

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

フォーム仕様定義時にこのチェックリストをコピー:

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 の存在確認

ls .outputs/{screen-id}/spec.md

Step 1: 入力フィールドを検出

HTMLまたはFigmaから以下を抽出:

  • <input> 各種(text, email, password, number, tel, date等)
  • <textarea>
  • <select> / ドロップダウン
  • チェックボックス / ラジオボタン
  • トグルスイッチ
  • ファイルアップロード
  • カスタム入力コンポーネント

Step 2: フィールド属性を整理

各フィールドについて:

属性 説明
フィールド名 表示ラベル
フィールドID 識別子
入力タイプ text/email/password/number等
必須/任意 required or optional
初期値 デフォルト値
プレースホルダー 入力ヒント
最大文字数 maxlength
入力マスク 電話番号、日付等のフォーマット

Step 3: バリデーションルールを定義

各フィールドのバリデーションルール:

  • 形式: メール、URL、電話番号等
  • 文字数: 最小/最大文字数
  • 範囲: 数値の最小/最大値
  • パターン: 正規表現
  • 依存関係: 他フィールドとの関係
  • カスタムルール: ビジネスロジック固有

Step 4: エラーメッセージを定義

各バリデーションエラーに対するメッセージ:

ルール エラーメッセージ
必須 「{フィールド名}を入力してください」
形式 「有効な{形式}を入力してください」
文字数(最小) 「{N}文字以上で入力してください」
文字数(最大) 「{N}文字以内で入力してください」

Step 5: バリデーションタイミングを決定

タイミング 説明 適用例
onChange 入力のたびに検証 文字数カウント
onBlur フォーカス離脱時に検証 形式チェック
onSubmit 送信時に検証 全フィールド最終チェック
debounced 入力停止後に検証 重複チェック(API)

Step 6: 送信動作を定義

  • 送信ボタンの活性/非活性条件
  • 送信中の状態(loading)
  • 成功時の挙動
  • 失敗時の挙動
  • 再送信の可否

Step 7: spec.md の「フォーム仕様」セクションを更新

  1. セクションを特定(## フォーム仕様
  2. ステータスを「完了 ✓」に更新
  3. {{FORM_SPECS_CONTENT}} を内容に置換
  4. 完了チェックリストを更新
  5. 変更履歴に追記

出力形式

spec.md「フォーム仕様」セクションの内容

## フォーム仕様

> **ステータス**: 完了 ✓  
> **生成スキル**: defining-form-specs  
> **更新日**: 2024-01-15

### フォーム概要

| 項目 | 値 |
|------|-----|
| フォーム名 | ユーザー登録フォーム |
| フィールド数 | 5 |
| 必須フィールド数 | 3 |

### フィールド一覧

| フィールド | 型 | 必須 | 最大文字数 | 備考 |
|-----------|-----|:----:|-----------|------|
| メールアドレス | email | ✓ | 254 | - |
| パスワード | password | ✓ | 128 | 8文字以上 |
| パスワード確認 | password | ✓ | 128 | パスワードと一致 |
| ニックネーム | text | - | 20 | - |
| 利用規約同意 | checkbox | ✓ | - | - |

### フィールド詳細

#### メールアドレス

| 項目 | 値 |
|------|-----|
| フィールドID | email |
| 入力タイプ | email |
| 必須 | ✓ |
| プレースホルダー | example@email.com |
| バリデーション | RFC 5322準拠、最大254文字 |
| エラーメッセージ | 有効なメールアドレスを入力してください |
| バリデーションタイミング | onBlur |

#### パスワード

| 項目 | 値 |
|------|-----|
| フィールドID | password |
| 入力タイプ | password |
| 必須 | ✓ |
| プレースホルダー | 8文字以上の英数字 |
| バリデーション | 8文字以上、英字と数字を含む |
| エラーメッセージ | パスワードは8文字以上で英数字を含めてください |
| バリデーションタイミング | onBlur |
| 追加機能 | パスワード表示トグル、強度インジケーター |

### バリデーションルール

| フィールド | ルール | 条件 | エラーメッセージ |
|-----------|--------|------|-----------------|
| メールアドレス | required | - | メールアドレスを入力してください |
| メールアドレス | format | RFC 5322 | 有効なメールアドレスを入力してください |
| メールアドレス | maxLength | 254 | メールアドレスは254文字以内で入力してください |
| パスワード | required | - | パスワードを入力してください |
| パスワード | minLength | 8 | パスワードは8文字以上で入力してください |
| パスワード | pattern | /^(?=.*[A-Za-z])(?=.*\d)/ | パスワードは英数字を含めてください |
| パスワード確認 | required | - | パスワード確認を入力してください |
| パスワード確認 | match | password | パスワードが一致しません |

### バリデーションタイミング

| タイミング | 対象フィールド |
|-----------|---------------|
| onChange | - |
| onBlur | メールアドレス、パスワード、パスワード確認、ニックネーム |
| onSubmit | 全フィールド |
| debounced (500ms) | メールアドレス(重複チェック) |

### 送信動作

| 項目 | 値 |
|------|-----|
| 送信ボタン | 登録する |
| 活性条件 | 必須フィールド入力済み & エラーなし |
| 送信中 | ボタン非活性 + ローディング表示 |
| 成功時 | 確認メール送信完了画面へ遷移 |
| 失敗時 | エラーメッセージ表示、フォーム維持 |
| 再送信 | エラー解消後に可能 |

### 特記事項

- メールアドレスの重複チェックはAPI経由で実行
- パスワード強度インジケーター: 弱/中/強の3段階
- 利用規約リンクは別タブで開く

完了チェックリスト

生成後、以下を確認:

- [ ] spec.md の「フォーム仕様」セクションが更新されている
- [ ] ステータスが「完了 ✓」になっている
- [ ] 全ての入力フィールドがリストされている
- [ ] バリデーションルールが明確
- [ ] エラーメッセージが定義されている
- [ ] バリデーションタイミングが決定されている
- [ ] 送信動作が定義されている
- [ ] 完了チェックリストが更新されている
- [ ] 変更履歴に記録が追加されている

フォームがない場合

入力フォームがない画面の場合、以下のように記載:

## フォーム仕様

> **ステータス**: 該当なし  
> **生成スキル**: defining-form-specs  
> **更新日**: 2024-01-15

この画面には入力フォームがありません。

注意事項

他のセクションを変更しない

このスキルは「フォーム仕様」セクションのみを更新します。

バリデーションルールの推測

Figmaデザインからバリデーションルールが明確でない場合:

  1. フィールドタイプから一般的なルールを推測
  2. 「要確認」として明示
  3. 設計者/PMへの確認事項としてリスト

extracting-interactions との違い

観点 extracting-interactions defining-form-specs
対象 全インタラクティブ要素 フォームフィールドのみ
内容 状態変化、トランジション バリデーション、送信動作
重複 focus/error状態 バリデーションルール詳細

フィールドのfocus/error状態は両方で扱いますが、観点が異なります。

参照