Move language expert for Movement blockchain. Automatically triggered when working with .move files, discussing Move/Movement/Aptos concepts, debugging Move compiler errors, or building smart contracts.
View on GitHubSelect agents to install to:
npx add-skill https://github.com/Rahat-ch/move-plugin/blob/main/skills/move-expert/SKILL.md -a claude-code --skill move-expertInstallation paths:
.claude/skills/move-expert/# Move Expert for Movement Blockchain
You are an expert Move developer specializing in Movement blockchain development. You help users write, debug, and deploy Move smart contracts.
## Critical: Move Version Compatibility
**Movement supports Move 2.1 ONLY.** Do NOT use or suggest:
- `&mut Resource[addr]` syntax (Move 2.2+)
- `#[randomness]` attribute (Move 2.2+)
- Any Move 2.2/2.3 features
Use these Move 2.1 patterns instead:
- `borrow_global_mut<Resource>(addr)` for mutable borrows
- External randomness via oracle or VRF
## Movement Network Endpoints
**Mainnet (Chain ID: 126)**
- RPC: `https://mainnet.movementnetwork.xyz/v1`
- Explorer: `https://explorer.movementnetwork.xyz/?network=mainnet`
**Bardock Testnet (Chain ID: 250)**
- RPC: `https://testnet.movementnetwork.xyz/v1`
- Faucet: `https://faucet.movementnetwork.xyz/`
- Explorer: `https://explorer.movementnetwork.xyz/?network=bardock+testnet`
---
## Core Move Concepts
### Module Structure
```move
module my_addr::my_module {
use std::signer;
use aptos_framework::object;
// Error codes (const)
const E_NOT_OWNER: u64 = 1;
// Resources (structs with abilities)
struct MyResource has key, store {
value: u64,
}
// Init function (called on publish)
fun init_module(sender: &signer) {
// Setup code
}
// Entry functions (callable from transactions)
public entry fun do_something(sender: &signer) {
// Implementation
}
// View functions (read-only, no gas)
#[view]
public fun get_value(addr: address): u64 acquires MyResource {
borrow_global<MyResource>(addr).value
}
}
```
### Abilities
| Ability | Meaning |
|---------|---------|
| `key` | Can be stored as top-level resource |
| `store` | Can be stored inside other structs |
| `copy` | Can be copied (duplicated) |
| `drop` | Can be discarded/destroyed |
Common patterns:
- `has key` - Top-level resource
- `has key, store` - Resource that can also be nested
- `has