From sui-dev-agents
Generates TypeScript types from Move ABI, creates contract API wrappers, subscribes to on-chain events via gRPC, and provides E2E integration testing patterns.
How this skill is triggered — by the user, by Claude, or both
Slash command
/sui-dev-agents:sui-fullstack-integrationThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
> **Scope:** This skill covers Move ↔ TypeScript bridging: type generation, event handling, ABI wrappers. For dApp UI setup and wallet integration, use the `sui-frontend` skill. For PTB construction and SDK client patterns, use the `sui-ts-sdk` skill.
Scope: This skill covers Move ↔ TypeScript bridging: type generation, event handling, ABI wrappers. For dApp UI setup and wallet integration, use the
sui-frontendskill. For PTB construction and SDK client patterns, use thesui-ts-sdkskill.
Targets: @mysten/sui 2.17.0 (^2.16), @mysten/kiosk 1.2.6 (^1.2). Tested: 2026-05-21.
Compatibility notes: @mysten/[email protected] accepts only SuiJsonRpcClient | SuiGraphQLClient, so the kiosk example in this skill instantiates a JSON-RPC client even though other examples use gRPC. Re-check on the next kiosk minor bump — once kiosk types SuiGrpcClient, the example can be migrated.
Seamlessly integrate Move smart contracts with frontend applications.
This skill bridges Move contracts and frontend code through:
# Build Move package and generate TypeScript types
npx ts-node scripts/generate-types.ts
Output: frontend/src/types/contracts.ts
// @check:skip
import { MarketplaceAPI } from './api/marketplace';
const api = new MarketplaceAPI(suiClient, packageId);
const txb = api.createListing({ nft_id: '0x...', price: 1000000000n });
// @check:skip
useNFTPurchasedEvents((event) => {
console.log(`NFT ${event.nft_id} sold for ${event.price}`);
});
./scripts/dev.sh # Starts local node + deploys + frontend
| Pattern | Description |
|---|---|
| Type Generation | Auto-generate TS types from Move ABI |
| API Wrapper | Type-safe transaction builders |
| React Hooks | useMarketplaceAPI() for component integration |
| Event Subscriptions | Real-time updates via gRPC streaming (replaces WebSocket subscribeEvent) |
| Error Handling | Map Move abort codes to user messages |
| Move Type | TypeScript Type |
|---|---|
u8 | number |
u64 | number | bigint |
u128 | bigint |
bool | boolean |
address | string |
vector<u8> | Uint8Array |
String | string |
ID, UID | string |
project/
├── contracts/
│ └── sources/*.move
├── frontend/
│ ├── src/
│ │ ├── api/ # API wrappers
│ │ ├── hooks/ # React hooks
│ │ ├── types/ # Generated types
│ │ └── lib/ # Error handling
│ └── .env.local
└── scripts/
├── generate-types.ts
└── dev.sh
client.core.* namespace for core RPC methods"type": "module" in package.json or .mts files)coinWithBalance for non-SUI coin transfers (not just SUI)$extend() for ecosystem integration:import { SuiJsonRpcClient, getJsonRpcFullnodeUrl } from '@mysten/sui/jsonRpc';
import { kiosk } from '@mysten/kiosk';
const client = new SuiJsonRpcClient({ url: getJsonRpcFullnodeUrl('mainnet'), network: 'mainnet' })
.$extend(kiosk());
This skill is invoked by sui-full-stack after Phase 2 (contracts) and Phase 3 (frontend).
Query latest integration patterns:
// @check:skip
const patterns = await sui_docs_query({
type: "github",
target: "dapp-kit",
query: "transaction building patterns"
});
❌ Manual type definitions instead of generating from Move ABI
generate-types.ts after Move contract changes❌ Not handling u64/u128 correctly in TypeScript
bigint for u64/u128, number | bigint for safety❌ Forgetting to update package ID after redeployment
❌ Not mapping Move abort codes to user messages
lib/errors.ts❌ Polling for updates instead of subscribing to events
subscribeEvent is deprecated)❌ Not testing integration locally
dev.sh to run local node + contracts + frontend together❌ Hardcoding transaction arguments
Bridge Move contracts and modern frontend - type-safe, real-time, production-ready integration!
Provides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
npx claudepluginhub first-mover-tw/sui-dev-agents --plugin sui-dev-agents