sui-move-object

Enforce Suit Move object-struct definitions, ownership behavior, and dynamic field usage.

4|Updated Feb 13, 2026
One-click install
npx skills add https://github.com/widnyana/eyay-toolkits --skill sui-move-object
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: sui-move-object
Source: https://github.com/widnyana/eyay-toolkits/tree/main/plugins/sui-dev-tools/skills/sui-move-object
Command: npx skills add https://github.com/widnyana/eyay-toolkits --skill sui-move-object

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Building Sui Move packages often fails due to subtle object-model mistakes like incorrect abilities, invalid field ordering, or unsafe UID construction, which can break ownership, transfers, and interoperability.

Core Features & Use Cases

  • Correct struct and ability declarations: Enforces public structs, capability field placement rules, and consistent ability usage (key, store, copy, drop) to align with the Sui object system.
  • Object ownership and transfer guidance: Clarifies which transfer functions are allowed in-module vs public variants, covering owned objects, shared objects, and frozen objects.
  • Dynamic field patterns: Provides canonical approaches for dynamic field and dynamic object field storage and access when keys are extensible or unknown at compile time.
  • Naming conventions for clarity and safety: Standardizes capability suffixing (Cap), error constant casing (EPascalCase), events’ past-tense naming, and dynamic field key struct patterns.

Quick Start

Use the skill’s rules to define your public struct types with the correct abilities (including id: UID as the first field for key structs), then route ownership changes using the appropriate transfer functions and store extensible state via dynamic fields.

Frequently Asked Questions about sui-move-object

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I define a Sui Move struct with the correct key and store capabilities?▼

To define a Sui Move struct with key capabilities, declare it as a public struct and place `id: UID` as the first field. You must construct this UID using `object::new` and apply consistent ability usage like `store` to ensure safe on-chain semantics.

Why does my Sui Move package fail compilation when transferring object ownership?▼

Sui Move packages fail compilation due to invalid object ownership transfers when using incorrect transfer function scoping. You must use in-module transfer functions for owned objects, and apply public variants correctly for shared or frozen objects to prevent unsafe semantics.

What naming conventions should I follow for Sui Move capabilities and events?▼

Sui Move naming conventions require standardizing capability suffixes with `Cap`, error constants in `EPascalCase`, and events using past-tense naming. Following these rules ensures clarity and safety, preventing semantic errors in dynamic field key struct patterns.

When should I use dynamic fields instead of standard struct fields in Sui Move?▼

Use dynamic fields in Sui Move when extensible storage is needed and keys are unknown at compile time. They provide canonical access patterns via `sui::dynamic_field` without requiring changes to existing public struct definitions, avoiding compilation errors.

What are the limitations of using shared objects versus owned objects in Sui Move?▼

Shared objects in Sui Move require specific public transfer function scoping, whereas owned objects are restricted to in-module transfers. Misapplying these transfer flows breaks ownership semantics and causes unsafe on-chain behavior or compilation failures.