mcpField
S
sui-move

sui-move

github.com/mystenlabs開発19377 回インストール今日更新
リポジトリ

sui-move について

Sui Move 開発者向けのリファレンススキルです。言語の基礎、イベント、コインをタスク別に整理し、リソース安全性やよくある誤りも扱います。

主な機能

  1. 01Move の型、能力、リソース安全性
  2. 02イベントとコイン操作のガイド
  3. 03タスクに応じた資料の案内
  4. 04よくある誤りと安全規則

活用シーン

  1. 01Move モジュールや構造体の作成
  2. 02代替可能トークンの作成とイベント処理
  3. 03アクセス制御やオブジェクト破棄の確認

MCP 対応

利用可能な環境では、Sui ドキュメント MCP サーバーに問い合わせて回答を検証し、資料にない詳細を補えます。

インストール

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

$npx skills add https://github.com/mystenlabs/skills --skill sui-move

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

同梱ファイル

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

events-coins.md
move.md
evals/
code-evals.json
evals.json

詳細

Sui Move

MCP ツール: お使いの環境で利用できる場合は、最新情報の回答を得るために Sui ドキュメントの MCP サーバー(https://sui.mcp.kapa.ai)にも問い合わせてください。回答の検証や、これらのリファレンスファイルに記載されていない詳細の確認に利用してください。

情報源の制約: このスキルの情報は、docs.sui.io と move-book.com のみを情報源としています。このスキルを拡張または更新する場合は、これらの情報源のみを使用してください。サードパーティのブログ、チュートリアル、非公式ドキュメントは使用しないでください。

Move は Sui のスマートコントラクト言語で、リソースの安全性とオブジェクト中心のデータモデルを基盤に設計されています。このスキルでは、型システム、能力、リソースの安全性、イベント、コインといった Move 言語の基本を扱います。

このスキルから、目的に応じたリファレンスファイルに移動できます。現在のタスクに関連するものだけを読み込んでください。


リファレンスファイル(このスキル)

move — Move 言語の基礎

パス: move.md 読み込むタイミング: Move コードの記述、能力、TxContext、時刻/Clock、init 関数、One-Time Witness、internal::Permit<T>、type_name の非推奨化、パッケージ、モジュール、構造体、リソースの安全性、アクセス制御のパターン、管理者の交代、拒否リスト、セキュリティレビュー、または高度な設計パターン(能力の割り当て、ファントムイベント、共有オブジェクトの並行処理、レシーバー構文、エラー属性、transfer::receive、フィールドのプライバシー、マクロ)を扱う場合。 内容: 4 つの能力と一般的な組み合わせ、TxContext のメソッド、Clock オブジェクト、init 関数、OTW パターン、型レベルの認可を行う internal::Permit<T>、type_name の非推奨化、パッケージとアップグレード、モジュール、構造体、リソースの安全性とオブジェクトの破棄、Greeting の実例、管理者の交代(2 段階の移譲)、規制対象のコインと拒否リスト、セキュリティレビューのチェックリスト、高度な設計パターン(能力の割り当て、ファントム型イベント、イベントの非正規化、共有オブジェクトの & と &mut、レシーバー構文の順序、#[error] 定数、transfer::receive のプライバシー、フィールドのプライバシー、マクロでの注意点)。

events-coins — イベントとコイン

パス: events-coins.md 読み込むタイミング: イベントの発行、オフチェーンでのイベントの購読、代替性トークンの作成、またはコイン操作(ミント、バーン、分割、結合)を扱う場合。 内容: イベントの発行、イベント構造体の要件、coin::create_currency、TreasuryCap、CoinMetadata、標準的なコイン操作。


関連スキル(別のスキルディレクトリから読み込み)

トピックスキル読み込むタイミング
オブジェクトモデル、所有権、動的フィールド、コレクション、Display、転送パターンobject-model/データモデルの設計、所有権の種類の選択、動的フィールドまたはコレクションの使用、Object Display の設定
プログラマブルトランザクションブロック、コマンド、二重実行ptbs/PTB の構築、トランザクションの合成、スポンサー付きトランザクション、トランザクションエラーのトラブルシューティング
フロントエンドの dApp 開発、dApp Kit、ウォレット接続frontend-apps/React/Vue フロントエンドの構築、ウォレット連携、ブラウザーからのオンチェーン状態の照会
プロジェクトのセットアップ、Move.toml、依存関係、公開sui-move-project/Move プロジェクトの作成、Move.toml の設定、ビルドエラーの解決、パッケージの公開
Move 2024 の構文、メソッド構文、マクロmodern-move-syntax/メソッド構文、ベクターリテラル、option/loop マクロなどの Move 2024 エディション機能の使用
合成可能な関数の設計composable-move-functions/PTB の合成可能性を考慮した関数の設計、パラメーターの順序、戻り値のパターン
ユニットテストの規約move-unit-testing/Move のユニットテストの作成、テストパターン、expected_failure、クリーンアップ
命名規約naming-conventions/エラー、定数、ケイパビリティ、イベント、ゲッター、動的フィールドキーの命名

ルーティングガイド

タスク読み込むもの
abilities を持つ Move struct の作成move
TxContext または Clock オブジェクトの使用move
init 関数または OTW の作成move
type_name 関数の使用move
internal::Permit<T> によるモジュール権限の証明move
パッケージの公開またはアップグレードmove
drop なしでのオブジェクトの破棄move
イベントの発行または購読events-coins
代替可能トークンの作成move + events-coins
オブジェクトのデータモデルの設計object-model/ スキル
shared オブジェクトと owned オブジェクトの選択object-model/ スキル
dynamic fields またはコレクションの使用object-model/ スキル
Object Display のセットアップobject-model/ スキル
PTB の構築ptbs/ スキル
スポンサードトランザクションの実装ptbs/ スキル
フロントエンドの構築frontend-apps/ スキル
Move.toml のセットアップsui-move-project/ スキル
スマートコントラクト全体の作成move + events-coins + object-model/ + naming-conventions/ + modern-move-syntax/
コードレビューmove + events-coins + composable-move-functions/ + naming-conventions/ + modern-move-syntax/
セキュリティレビュー/アクセス制御監査move + object-model/(パターン)+ events-coins
高度な設計パターン/パフォーマンスチューニングmove

ルール

  • UID の作成には、必ず object::new(ctx) を使用してください。他に方法はありません。
  • オブジェクトが store を持ち、呼び出し元が定義元モジュールの外部である場合は、transfer ではなく public_transfer を使用してください。
  • イベントの struct は copy と drop の abilities を持つ必要があります。
  • 数値型に as キャストを使用しないでください。from/into または try_from/try_into を使用してください。
  • drop なしでオブジェクトを破棄するには、struct をアンパックし、UID に対して object::delete(id) を呼び出してください。

よくある間違い

  • transfer と public_transfer を混同する。 非公開のほうは定義元モジュール内でのみ動作します。別のモジュールから呼び出すと、コンパイルエラーになります。
  • UID の削除を忘れる。 オブジェクトを破棄するときは、UID フィールドに対して object::delete(id) を呼び出す必要があります。
  • ctx.epoch_timestamp_ms() が正確だと思い込む。 これはエポックの開始時刻を返します。リアルタイムのタイムスタンプには Clock オブジェクト(0x6)を使用してください。

コメント