mcpField
X
xstate-store

xstate-store

github.com/pedronauck開発64485 回インストール1 週間前に更新
リポジトリ

xstate-store について

xstate-storeは、TypeScriptプロジェクトで@xstate/store v4と@xstate/store-react v2を扱うコーディングスキルです。状態プリミティブの選択を案内し、ストアロジック、React連携、テスト、移行の参照情報を提供します。

主な機能

  1. 01状態プリミティブの選択
  2. 02ストアの遷移と副作用の実装
  3. 03アトムとセレクターの利用
  4. 04ストアとReactの連携
  5. 05ストアのテストと移行

活用シーン

  1. 01機能に適した状態モデルの選定
  2. 02非同期副作用とイベント発行の追加
  3. 03ストア状態とReactコンポーネントの接続
  4. 04v3またはZustandストアの移行

インストール

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

$npx skills add https://github.com/pedronauck/skills --skill xstate-store

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
effects-and-events.md
extensions.md
migration-v4.md
react.md
schemas-and-validation.md
selectors-and-atoms.md
store-core.md
store-logic-and-input.md
testing-and-interop.md

詳細

XState Store

@xstate/store v4 および @xstate/store-react v2(TypeScript 5.4+)が対象です。変更する API や動作に対応するリファレンスを読みます。変更に関係する範囲のリファレンスのみ追加で読み、すでに読んだ関連情報は再利用します。

まずプリミティブを選ぶ

状態プリミティブ理由
名前付きイベントを通じて更新されるドメイン状態createStore({ context, on })型付きの trigger、can、イベントの発行、再生可能な遷移
入力から構築するインスタンスごとの状態createStoreLogic({ context: (input) => … })定義は1つで、複数のインスタンスを作成できます。selectors も備わっています
直接設定する単一の値createAtom(value)ストアを正当化するイベントの種類がありません
他のアトムやセレクターから算出する値createAtom(() => …)読み取り専用で、依存関係が変わると再計算されます
モード、ガード、遅延、階層状態、並列状態xstate マシンストアがモデル化するのはデータであり、ライフサイクルではありません

完了条件: この表に基づいてプリミティブが選択され、その選択理由が妥当であること。

分岐

状況リファレンス
ストアの作成、遷移の記述、trigger/send/can の使用、または Immerreferences/store-core.md
エフェクトのキューへの追加、イベントの発行、または非同期処理references/effects-and-events.md
schemas の宣言、またはランタイム検証の有効化references/schemas-and-validation.md
store.select、アトム、派生/非同期/リデューサーアトムによる状態の読み取りreferences/selectors-and-atoms.md
createStoreLogic、入力、または selectors を使った再利用可能/インスタンスごとのストアの構築references/store-logic-and-input.md
persist、undoRedo、reset の追加、または .with(...) による合成references/extensions.md
ストアと React コンポーネントの接続references/react.md
遷移のテスト、ストアの検査、または XState との相互運用references/testing-and-interop.md
v3 ストアの v4 へのアップグレード、または既存の Zustand ストアの移行references/migration-v4.md

変更する動作に関連する技術ルールを適用します。

注意点

遷移 — 完全な次のコンテキスト(古いコンテキストをスプレッド)を返します。イベントを許可しない場合は undefined を返します。これは store.can.*() が報告する内容です。

エフェクト — 遷移内で enqueue.effect、enqueue.emit.*、enqueue.trigger.* を同期的に呼び出します。非同期処理は enqueue.effect(async () => …) 内に記述し、別のイベントをトリガーして結果を返します。

インポート — フレームワークのバインディングは @xstate/store-react(および関連パッケージ)からインポートし、@xstate/store/react からはインポートしません。拡張機能は @xstate/store/persist、/undo、/reset、/validate からインポートします。

スキーマ — schemas はストアの型を定義します。ランタイムで検証するのは .with(validateSchemas()) を指定した場合のみです。

アトム — 算出アトムは .get() で依存関係を読み取ります。最初のパラメーターは前回の算出値なので、使用時は createAtom<T>(…) を指定します。

React — アプリ全体の状態にはモジュールスコープのストアを、コンポーネントスコープの状態には useStore(logic, input) を使用します。getSnapshot() ではなく、useSelector/useAtom で購読します。

コメント