mystenlabs/sui-dev-skills/setup
Claude Code and agent skill by mystenlabs/sui-dev-skills
- community
Checking that the SKILL.md file is still in the repository.
Move package setup (Move.toml, edition, dependencies), building, testing, and common pitfalls from other Move dialects.
Install
npx vskill@latest install mystenlabs/sui-dev-skills/setupSKILL.md
1. Package Setup
Always use the Move 2024 edition (edition = "2024" in Move.toml). The name in [package] defines the package's address name and must match what your Move code uses (e.g., module my_package::m requires name = "my_package"):
Implicit framework dependencies (Sui 1.45+) — do not list Sui, MoveStdlib, Bridge, or SuiSystem in [dependencies]. They are implicit:
No `[addresses]` section (Sui CLI 1.63+) — named addresses are derived from the [package] name and [dependencies] keys. Do not add an [addresses] or [dev-addresses] section.
Run sui move build after any significant change to verify the code compiles before proceeding.
2. Building and Testing
Always verify code compiles and tests pass using the Sui CLI:
Test conventions
Naming — do not prefix test functions with test_. The #[test] attribute already signals intent:
Merge attributes — combine #[test] and #[expected_failure] on one line:
Don't clean up in `expected_failure` tests — let them abort naturally, don't add scenario.end() or other teardown:
Use `tx_context::dummy()` for simple tests — only reach for test_scenario when you genuinely need multi-transaction or multi-sender behaviour:
Assertions — prefer assert_eq! over assert! for value comparisons (shows both sides on failure), and never pass abort codes to assert!:
Destroying objects in tests — use sui::test_utils::destroy, never write custom destroy_for_testing functions:
3. What Move on Sui is NOT
| Pattern | Source | Do NOT use on Sui | |
|---|---|---|---|
acquires, move_to, move_from, borrow_global | Aptos / Core Move | Sui has no global storage | |
signer type | Aptos / Core Move | Use &mut TxContext and ctx.sender() | |
Script functions | Aptos | Use entry functions instead | |
public(friend) | Legacy Move | Use public(package) | |
Struct without public keyword | Legacy Move | All structs must be public | |
let x = ... for mutable vars | Legacy Move | Use let mut x = ... | |
use inside function bodies for module-level imports | Style issue | Put use at the top of the module | |
&signer | Rust / Aptos | Does not exist on Sui |
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingmove/setup/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/mystenlabs/sui-dev-skills/setup)