kiosk について
kiosk は、Sui Kiosk の開発とコードレビュー向けのスキルです。基本操作や拡張機能の資料へタスクごとに案内し、公式ドキュメントで API を確認するよう促します。
主な機能
- 01Kiosk の作成とアセット管理
- 02出品、購入、TransferPolicy の処理
- 03アセットの借用と売上金の引き出し
- 04Kiosk Apps の拡張と権限管理
- 05タスクに応じた資料の振り分け
活用シーン
- 01Kiosk での出品と購入の実装
- 02TransferPolicy に関する取引問題の調査
- 03権限付き Kiosk 拡張機能の構築
- 04Kiosk コードとアセット状態のレビュー
MCP 対応
利用可能な場合、資料の検証や未記載情報の確認に Sui ドキュメント MCP サーバーを照会するよう推奨しています。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ mystenlabs/ skills --skill kioskインストール後、Claude Code で/kioskを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
apps.mdcore.mdevals/evals.json詳細
Sui Kiosk スキル
MCP ツール: お使いの環境で利用できる場合は、最新の回答を得るために Sui ドキュメント MCP サーバー(
https://sui.mcp.kapa.ai)にも問い合わせてください。検証や、これらの参照ファイルに記載されていない詳細の確認に使用してください。
情報源の制約: このスキルの情報は、すべて docs.sui.io/standards/kiosk のみに基づいています。このスキルを拡張または更新する場合は、この情報源のみを使用してください。サードパーティのブログ、チュートリアル、非公式ドキュメントは使用しないでください。
Kiosk は、Sui 上のコマースアプリケーション向けの分散型システムです。組み込みの取引機能(オークションなどのカスタム取引メカニズムを含む)を備えた、アセットを格納する共有オブジェクトを提供します。このスキルでは、Kiosk の作成、アセット管理、出品と購入のフロー、TransferPolicy による強制、借用パターン、Kiosk Apps 拡張 API を扱います。よくある間違いには、アイテムを取引する前に TransferPolicy が必要なことを忘れる、出品中のアイテムを可変で借用しようとする、Kiosk Apps の権限ビットマップを誤解する、といったものがあります。
このスキルでは、用途に応じた参照ファイルを案内します。現在のタスクに関係するものだけを読み込んでください。
このスキルのすべてのパターンは、次の情報源に基づいています。 https://docs.sui.io/standards/kiosk
API について不明な点がある場合は、回答する前に該当するページを取得してください。 ほかのプロトコルや NFT 標準から推測したり、外挿したりしないでください。
参照ファイル
core -- Kiosk のコア操作
パス: core.md
読み込む場合: ユーザーが Kiosk の作成、アセットの配置または取り出し、アイテムの出品または出品取り消し、アイテムの購入、TransferPolicy と購入フローの理解、アセット状態(PLACED、LOCKED、LISTED、LISTED EXCLUSIVELY)の理解、アセットの借用、または売上金の引き出しを必要としている場合。
内容: Kiosk の作成、KioskOwnerCap、アイテムの配置と取り出し、アイテムのロック、出品と出品取り消し、TransferRequest を伴う購入フロー、TransferPolicy、アセット状態、不変および可変の借用、borrow_val ホットポテトパターン、アクセス制御、引き出し。
apps -- Kiosk Apps と拡張機能
パス: apps.md
読み込む場合: ユーザーがダイナミックフィールドを使った基本的な Kiosk アプリの構築、kiosk_extension モジュールを使った権限付きアプリの構築、権限ビットマップの理解、アプリのライフサイクル(インストール、有効化、無効化、削除)の管理、またはアプリ専用ストレージの利用を必要としている場合。
内容: UID ダイナミックフィールドを使った基本的なアプリ、uid_mut_as_owner、Kiosk Name アプリの例、kiosk_extension を使った権限付きアプリ、アプリのライフサイクル、権限ビットマップ(place、lock)、保護された関数、権限チェック、アプリストレージ(bag 型の分離ストレージ)。
ルーティングガイド
| タスク | 読み込むファイル |
|---|---|
| Kiosk の作成 | core |
| アイテムの配置、取り出し、またはロック | core |
| アイテムの出品または出品取り消し | core |
| アイテムの購入と TransferPolicy の要件を満たすこと | core |
| アセット状態の理解 | core |
| アセットの借用(不変、可変、PTB 対応) | core |
| 売上金の引き出し | core |
| ダイナミックフィールドを使った基本的な Kiosk アプリの構築 | apps |
| 権限付き Kiosk 拡張機能の構築 | apps |
| 権限ビットマップの理解 | apps |
| アプリのライフサイクルの管理(インストール、有効化、無効化、削除) | apps |
| アプリ専用ストレージの利用 | apps |
| Kiosk の完全な統合 | すべての参照ファイル |
| Kiosk コードのコードレビュー | すべての参照ファイル |
スキルの内容
主な概念
-
Kiosk。 組み込みの取引機能を備え、アセットを格納する共有オブジェクトです。
kiosk::defaultを使用して作成すると、Kiosk が共有され、KioskOwnerCapが作成者に転送されます。 -
KioskOwnerCap。 Kiosk の所有権を付与するケイパビリティです。Kiosk 内のアセットの配置、取り出し、出品、借用、変更を行えるのは、ケイパビリティの所有者だけです。
-
TransferPolicy。 アセット型
Tに関連付けられ、その型のすべての取引が満たす必要のあるルールを定義する共有オブジェクトです。関連付けられた TransferPolicy がない場合、型Tのアイテムは取引できません(保管は可能です)。ポリシーの変更は、プラットフォーム上のすべての取引に即座に適用されます。 -
TransferRequest。
kiosk::purchaseが返すホットポテトで、トランザクションの完了前に、すべての TransferPolicy の条件を満たして解決する必要があります。 -
アセットの状態。 Kiosk 内のアイテムは、4 つの状態のいずれかになります。PLACED(取り出し可能、借用可能、出品可能)、LOCKED(取り出し不可、可変借用および出品可能)、LISTED(不変借用のみ可能、変更不可)、LISTED EXCLUSIVELY(
kiosk::list_with_purchase_capを介して拡張機能が管理)。 -
MIST。 SUI の最小単位です。1 SUI = 10^9 MIST です。出品価格は MIST で指定します。
ルール
- 型
Tのアイテムを取引するには、その前に TransferPolicy が存在している必要があります。 TransferPolicy がない場合、kiosk::purchaseを完了できません。TransferPolicy がなくても、アイテムを保管(配置)することはできます。 - 出品中のアイテムは可変借用できません。 LISTED 状態のアイテムに対して利用できるのは、不変借用のみです。
- ロックされたアイテムは取り出せません。
kiosk::lockで配置されたアイテムには関連付けられた TransferPolicy が必要で、Kiosk から取り出すことはできず、出品して販売することのみ可能です。 borrow_valのホットポテトはreturn_valで返す必要があります。 返さない場合、トランザクションは中断されます。- Kiosk の内容を変更できるのは KioskOwnerCap の保有者のみです。 配置、取り出し、出品、借用、引き出しのすべての操作にケイパビリティが必要です。
よくある間違い
- TransferPolicy を忘れる。 TransferPolicy が関連付けられていない型のアイテムを購入しようとすると、トランザクションは失敗します。取引の前に TransferPolicy を作成して共有してください。
- 出品中のアイテムを可変借用する。 LISTED 状態のアイテムでサポートされるのは不変借用のみです。出品中のアイテムに対して
borrow_mutを試みると失敗します。 - PLACED 状態と LOCKED 状態を混同する。 PLACED アイテムは
kiosk::takeで取り出せますが、LOCKED アイテムは取り出せません。アイテムが販売を通じてのみ Kiosk から出るようにしたい場合に限り、kiosk::lockを使用してください。 - TransferPolicy のすべての条件を満たさない。
kiosk::purchaseが返すTransferRequestは、TransferPolicy のすべてのルールを満たす必要があります。1 つでも満たされていない場合、トランザクションは中断されます。 - 出品価格に MIST ではなく SUI を使う。
kiosk::listが受け取る価格は MIST 単位です(1 SUI = 10^9 MIST)。価格に1を渡すと、1 SUI ではなく 1 MIST を意味します。