documenting-ui-states

Documents all UI state variations (default, empty, error, loading, success) from Figma designs. Use when defining complete UI specifications before implementation.

allowed_tools: Read, Write, Glob, mcp__figma__get_screenshot, mcp__figma__get_design_context, mcp__figma__get_metadata

$ Installieren

git clone https://github.com/farmanlab/ai_agent_orchestra /tmp/ai_agent_orchestra && cp -r /tmp/ai_agent_orchestra/.agents/skills/documenting-ui-states ~/.claude/skills/ai_agent_orchestra

// tip: Run this command in your terminal to install the skill


name: documenting-ui-states description: Documents all UI state variations (default, empty, error, loading, success) from Figma designs. Use when defining complete UI specifications before implementation. allowed-tools: [Read, Write, Glob, mcp__figma__get_screenshot, mcp__figma__get_design_context, mcp__figma__get_metadata]

UI States Documentation Skill

Figmaデザインから全てのUI状態バリエーション(default, empty, error, loading等)を抽出・整理するスキルです。

目次

  1. 概要
  2. クイックスタート
  3. 詳細ガイド
  4. 出力形式

概要

このスキルは以下のタスクをサポートします:

  1. 状態バリエーション検出: Figmaフレーム名から状態を自動検出
  2. 状態一覧の整理: 各状態の条件・表示内容を文書化
  3. 未定義状態の特定: 実装に必要だがFigmaに存在しない状態を明示
  4. 状態遷移の整理: 状態間の遷移条件を文書化

禁止事項

以下は絶対に行わないこと:

  • 実装コードの生成(React/Vue/SwiftUI等)
  • 状態管理ライブラリの提案(Redux/Zustand等)
  • 技術スタック固有の実装詳細

このスキルの目的は「どのような状態があるか」の情報整理のみです。

出力先

このスキルは画面仕様書(spec.md)の「UI状態」セクションを更新します。

.outputs/{screen-id}/
├── spec.md                 # ← このスキルが「UI状態」セクションを更新
├── index.html              # converting-figma-to-htmlで生成済み
└── assets/                 # 画像等

重要: 単独ファイル(ui_states.md)は生成しません。必ず spec.md 内のセクションを更新してください。

クイックスタート

基本的な使い方

以下のFigma画面のUI状態を整理してください:
https://figma.com/design/XXXXX/Project?node-id=1234-5678

エージェントは自動的に:

  1. Figmaフレーム一覧を取得
  2. 状態バリエーションを検出(_Empty, _Error, _Loading等)
  3. 各状態のスクリーンショット・情報を取得
  4. spec.md の「UI状態」セクションを更新

詳細ガイド

詳細な情報は以下のファイルを参照してください:

Workflow

状態整理時にこのチェックリストをコピー:

UI States Documentation Progress:
- [ ] Step 0: spec.md の存在確認(なければ初期化)
- [ ] Step 1: Figmaフレーム一覧を取得
- [ ] Step 2: 状態バリエーションを検出
- [ ] Step 3: 各状態のデザイン情報を取得
- [ ] Step 4: 状態一覧を整理
- [ ] Step 5: 未定義状態を特定
- [ ] Step 6: 状態遷移条件を整理
- [ ] Step 7: spec.md の「UI状態」セクションを更新

Step 0: spec.md の存在確認

# spec.md が存在するか確認
ls .outputs/{screen-id}/spec.md

# 存在しない場合はテンプレートから初期化
cp .agents/templates/screen-spec.md .outputs/{screen-id}/spec.md
# 基本情報({{SCREEN_NAME}}等)を置換

Step 1: Figmaフレーム一覧を取得

mcp__figma__get_metadata(fileKey, nodeId)

親フレーム(ページまたはセクション)を指定し、子フレーム一覧を取得。

Step 2: 状態バリエーションを検出

フレーム名から状態を自動検出:

パターン検出される状態
Screen_Default, Screendefault
Screen_Empty, Screen_NoDataempty
Screen_Error, Screen_Failederror
Screen_Loading, Screen_Skeletonloading
Screen_Success, Screen_Completesuccess
Screen_Disableddisabled
Screen_Selected, Screen_Activeselected
Screen_Expanded, Screen_Openexpanded
Screen_Collapsed, Screen_Closedcollapsed

Step 3: 各状態のデザイン情報を取得

検出した各状態フレームに対して:

mcp__figma__get_screenshot(fileKey, nodeId)
mcp__figma__get_design_context(fileKey, nodeId)

Step 4: 状態一覧を整理

各状態について以下を文書化:

  • 状態名: default, empty, error, loading等
  • 条件: この状態になる条件
  • 表示内容: 主要な表示要素の説明
  • Figma Node: 参照用ノードID
  • 差分: default状態との違い

Step 5: 未定義状態を特定

一般的に必要だがFigmaに存在しない状態を明示。

Step 6: 状態遷移条件を整理

状態間の遷移を文書化(Mermaid stateDiagram-v2)。

Step 7: spec.md の「UI状態」セクションを更新

重要: 以下の手順で spec.md を更新

  1. セクションを特定
<!-- 
================================================================================
SECTION: UI状態
Generated by: documenting-ui-states
================================================================================
-->

## UI状態
  1. ステータスを更新
> **ステータス**: 完了 ✓  
> **生成スキル**: documenting-ui-states  
> **更新日**: {DATE}
  1. プレースホルダー {{UI_STATES_CONTENT}} を内容に置換

  2. 完了チェックリストを更新

- [x] UI状態 (documenting-ui-states)
  1. 変更履歴に追記
| {DATE} | UI状態 | documenting-ui-statesにより生成 |

出力形式

spec.md「UI状態」セクションの内容

## UI状態

> **ステータス**: 完了 ✓  
> **生成スキル**: documenting-ui-states  
> **更新日**: 2024-01-15

### 状態一覧

| 状態 | 条件 | Figma Node |
|------|------|------------|
| default | データが正常に取得できた場合 | `1234:5679` |
| empty | データが0件の場合 | `1234:5680` |
| loading | API通信中 | `1234:5681` |
| error | API通信失敗 | `1234:5682` |

### 状態詳細

#### default
- **条件**: データが正常に取得できた場合
- **表示内容**: メインコンテンツを表示
- **Figma Node**: `1234:5679`

#### empty
- **条件**: データが0件の場合
- **表示内容**: 空状態イラスト + メッセージ + アクションボタン
- **Figma Node**: `1234:5680`
- **default との差分**: リスト部分が空状態UIに置換

[他の状態も同様...]

### 未定義状態

| 状態 | 必要性 | 推奨対応 |
|------|--------|----------|
| partial_error | 🟡 中 | 一部成功時の表示を設計者に確認 |

### 状態遷移図

\```mermaid
stateDiagram-v2
    [*] --> loading
    loading --> default: データあり
    loading --> empty: データなし
    loading --> error: API失敗
    error --> loading: リトライ
\```

### 状態遷移表

| From | To | トリガー | 条件 |
|------|-----|----------|------|
| [*] | loading | 画面表示 | - |
| loading | default | APIレスポンス | 成功 & データあり |
| loading | empty | APIレスポンス | 成功 & データなし |
| loading | error | APIレスポンス | 失敗 |
| error | loading | リトライボタン | - |

完了チェックリスト

生成後、以下を確認:

- [ ] spec.md の「UI状態」セクションが更新されている
- [ ] ステータスが「完了 ✓」になっている
- [ ] 全ての状態バリエーションが記載されている
- [ ] 各状態の条件が明確に記載されている
- [ ] default状態との差分が明示されている
- [ ] 未定義状態がリストアップされている
- [ ] 状態遷移が整理されている
- [ ] 完了チェックリストが更新されている
- [ ] 変更履歴に記録が追加されている

注意事項

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

このスキルは「UI状態」セクションのみを更新します。 他のセクション(構造・スタイル、インタラクション等)は変更しないでください。

Figma命名規則

状態バリエーションの検出はFigmaのフレーム命名規則に依存します。 命名規則が不明確な場合は、設計者に確認してください。

部分状態 vs 画面状態

  • 画面状態: 画面全体の状態(loading, error等)→ このスキルで扱う
  • 部分状態: 画面内の特定コンポーネントの状態(ボタンのhover等)→ extracting-interactions で扱う

参照