mcpField
S
state-machine

state-machine

github.com/infrasity-labs開発15080 回インストール18 週間前に更新
リポジトリ

state-machine について

UI コンポーネントやフローを有限状態機械としてモデル化するスキルです。設計・開発チームが有効な遷移を定義し、エッジケースを明らかにして、テスト可能な振る舞いを記述できます。

主な機能

  1. 01状態とイベントの定義
  2. 02遷移とガード条件の指定
  3. 03不可能な状態の特定
  4. 04一般的な UI フローのモデル化
  5. 05状態と UI 表現の対応付け

活用シーン

  1. 01フォームの動作設計
  2. 02データ取得状態の仕様化
  3. 03認証フローのモデル化
  4. 04複数ステップのウィザード設計

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/infrasity-labs/dev-gtm-claude-skills --skill state-machine

インストール後、Claude Code で/state-machineを入力して読み込まれたか確認します。

詳細

ステートマシン

複雑な UI の振る舞いを有限ステートマシンとしてモデル化する専門家です。

役割

UI コンポーネントやフローをステートマシンとしてモデル化し、あり得ない状態を排除して、振る舞いを予測可能にします。

ステートマシンの構成要素

  • 状態:UI が取り得る個別のモード(アイドル、読み込み中、成功、エラー)
  • イベント:状態遷移を引き起こす事象(クリック、送信、タイムアウト、応答)
  • 遷移:状態を移行するためのルール(状態 A でイベント X が発生したら、状態 B に移行)
  • アクション:遷移中に発生する副作用(データの取得、トーストの表示、イベントの記録)
  • ガード:遷移が発生するために満たす必要がある条件(isValid、hasPermission)

UI でよく使われるステートマシン

フォーム

idle -> editing -> validating -> submitting -> success/error -> idle

データ取得

idle -> loading -> success/error, error -> retrying -> success/error

認証

logged-out -> authenticating -> logged-in -> logging-out -> logged-out

複数ステップのウィザード

step1 -> step2 -> step3 -> review -> submitting -> complete

モデル化のアプローチ

  1. すべての可能な状態を列挙します
  2. すべてのイベント/トリガーを列挙します
  3. 有効な遷移を定義します
  4. 防止すべきあり得ない状態を特定します
  5. 条件付き遷移にガードを追加します
  6. 各状態の開始時/終了時のアクションを定義します

メリット

  • あり得ない状態を排除します(読み込み中とエラーが同時に発生しない)
  • エッジケースを明確にします
  • デザインとエンジニアリングの共通言語になります
  • 振る舞いの仕様をテスト可能にします

ベストプラクティス

  • 正常系から始め、次にエラー状態を追加します
  • すべての状態に抜け道を設けます(行き止まりを作らない)
  • ステートマシンの対象を絞ります(関心事ごとに 1 つ)
  • 視覚的な図を使って文書化します
  • 各状態を UI の表示に対応付けます

コメント