kiosk
Skill20 starsChanged 15 days agoApache-2.0View on GitHub
Sui Kiosk and NFT trading primitives. Use when writing, reviewing, or debugging Move code that uses Kiosk for commerce, NFT trading, asset listing, TransferPolicy enforcement, or building Kiosk Apps and extensions. Also use when the user asks about asset states (PLACED, LOCKED, LISTED), borrowing patterns, purchase flows, or the kiosk_extension permissioned apps API.
In this repository30 other files it gives its agents.
- accessing-dataSkill
- composable-move-functionsSkill
- deepbook-marginSkill
- deepbook-moveSkill
- deepbook-overviewSkill
- deepbook-predictSkill
- deepbook-sdkSkill
- frontend-appsSkill
- generate-sui-agent-configSkill
- modern-move-syntaxSkill
- move-securitySkill
- move-unit-testingSkill
- naming-conventionsSkill
- sui-object-modelSkill
- onchain-randomnessSkill
- ptbsSkill
- sui-bridgeSkill
- sui-buildSkill
- sui-clientSkill
- sui-for-ethereumSkill
- sui-installSkill
- sui-move-projectSkill
- sui-moveSkill
- sui-networks-gasSkill
- sui-overviewSkill
- sui-publishSkill
- sui-sdksSkill
- sui-ts-sdk-backendSkill
- walrus-sitesSkill
- zkloginSkill
The file
We split this skill into the rules it gives an agent
5 rules. About 0 are common, 5 are distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈5
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 21
All patterns in this skill are derived from: https://docs.sui.io/standards/kiosk
- Distinctive: line 24
If unsure about any API, fetch the relevant page before answering.
- Distinctive: line 25
Do not guess or extrapolate from other protocols or NFT standards.
- Distinctive: line 83
Listed items cannot be mutably borrowed: Only immutable borrows are available for items in the LISTED state.
- Distinctive: line 86
Only the KioskOwnerCap holder can modify Kiosk contents: All place, take, list, borrow, and withdrawal operations require the cap.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Sui Kiosk Skill
MCP tool: When available in your environment, also query the Sui documentation MCP server (
https://sui.mcp.kapa.ai) for up-to-date answers. Use it for verification and for details not covered by these reference files.
Source constraint: All information in this skill is sourced exclusively from docs.sui.io/standards/kiosk. When extending or updating this skill, only pull from this source. Do not use third-party blogs, tutorials, or unofficial documentation.
Kiosk is a decentralized system for commerce applications on Sui, providing shared objects that store assets with built-in trading functionality including custom trade mechanisms like auctions. This skill covers Kiosk creation, asset management, listing and purchase flows, TransferPolicy enforcement, borrowing patterns, and the Kiosk Apps extension API. Common mistakes include forgetting that a TransferPolicy is required before items can be traded, attempting to mutably borrow listed items, and misunderstanding the permissions bitmap for Kiosk Apps.
This skill routes to focused reference files. Load only the ones relevant to the current task.
All patterns in this skill are derived from: https://docs.sui.io/standards/kiosk
If unsure about any API, fetch the relevant page before answering. Do not guess or extrapolate from other protocols or NFT standards.
Reference files
core -- Core Kiosk Operations
Path: core.md
Load when: the user needs to create a Kiosk, place or take assets, list or delist items, purchase items, understand TransferPolicy and the purchase flow, understand asset states (PLACED, LOCKED, LISTED, LISTED EXCLUSIVELY), borrow assets, or withdraw sale proceeds.
Covers: Kiosk creation, KioskOwnerCap, placing and taking items, locking items, listing and delisting, purchase flow with TransferRequest, TransferPolicy, asset states, immutable and mutable borrowing, the borrow_val hot potato pattern, access control, withdrawal.
apps -- Kiosk Apps and Extensions
Path: apps.md
Load when: the user needs to build basic Kiosk apps using dynamic fields, build permissioned apps with the kiosk_extension module, understand the permissions bitmap, manage app lifecycle (install, enable, disable, remove), or use app-isolated storage.
Covers: basic apps via UID dynamic fields, uid_mut_as_owner, the Kiosk Name app example, permissioned apps via kiosk_extension, app lifecycle, permissions bitmap (place, lock), protected functions, permission checking, app storage (bag-type isolated storage).
Routing guide
| Task | Load |
| Creating a Kiosk | core |
| Placing, taking, or locking items | core |
| Listing or delisting items | core |
| Purchasing items and satisfying TransferPolicy | core |
| Understanding asset states | core |
| Borrowing assets (immutable, mutable, PTB-friendly) | core |
| Withdrawing sale proceeds | core |
| Building a basic Kiosk app with dynamic fields | apps |
| Building a permissioned Kiosk extension | apps |
| Understanding permissions bitmap | apps |
| Managing app lifecycle (install, enable, disable, remove) | apps |
| Using app-isolated storage | apps |
| Full Kiosk integration | all reference files |
| Code review of Kiosk code | all reference files |
Skill Content
Key concepts
- Kiosk. A shared object that stores assets with built-in trading functionality. Created via
kiosk::default, which shares the Kiosk and transfers theKioskOwnerCapto the creator. - KioskOwnerCap. The capability that grants ownership over a Kiosk. Only the cap owner can place, take, list, borrow, or modify assets in the Kiosk.
- TransferPolicy. A shared object associated with asset type
Tthat defines the rules all trades of that type must satisfy. Without an associated TransferPolicy, items of typeTcannot be traded (storage is still possible). Policy changes apply instantly and globally across all platform trades. - TransferRequest. A hot potato returned by
kiosk::purchasethat must be resolved by satisfying all TransferPolicy terms before the transaction completes. - Asset states. Items in a Kiosk exist in one of four states: PLACED (withdrawable, borrowable, listable), LOCKED (non-withdrawable but mutable-borrowable and listable), LISTED (immutably borrowable only, no modifications), and LISTED EXCLUSIVELY (extension-managed via
kiosk::list_with_purchase_cap). - MIST. The smallest unit of SUI. 1 SUI = 10^9 MIST. Listing prices are specified in MIST.
Rules
- A TransferPolicy must exist for type
Tbefore items of that type can be traded. Without one,kiosk::purchasecannot complete. Items can still be stored (placed) without a TransferPolicy. - Listed items cannot be mutably borrowed. Only immutable borrows are available for items in the LISTED state.
- Locked items cannot be withdrawn. Items placed via
kiosk::lockrequire an associated TransferPolicy and cannot be taken out of the Kiosk, only listed and sold. - The
borrow_valhot potato must be returned viareturn_val. Failure to return causes a transaction abort. - Only the KioskOwnerCap holder can modify Kiosk contents. All place, take, list, borrow, and withdrawal operations require the cap.
Common mistakes
- Forgetting the TransferPolicy. Attempting to purchase an item type that has no associated TransferPolicy causes the transaction to fail. Ensure a TransferPolicy is created and shared before trading.
- Mutably borrowing a listed item. Items in the LISTED state only support immutable borrows. Attempting
borrow_muton a listed item fails. - Confusing PLACED and LOCKED states. PLACED items can be withdrawn with
kiosk::take; LOCKED items cannot. Usekiosk::lockonly when you want to enforce that items can only leave the Kiosk through a sale. - Not satisfying all TransferPolicy terms. The
TransferRequestreturned bykiosk::purchasemust satisfy every rule in the TransferPolicy. Missing even one causes the transaction to abort. - Using SUI instead of MIST for listing prices.
kiosk::listexpects prices in MIST (1 SUI = 10^9 MIST). Passing a price of1means 1 MIST, not 1 SUI.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

