suins-integration
Integrate SuiNS names into a Sui dapp. Use when the user mentions SuiNS or wants name resolution on Sui.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Integrate SuiNS names into a Sui dapp. Use when the user mentions SuiNS or wants name resolution on Sui.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Pick a brand name, color palette, or typography for a Sui product. Use when the user wants to name or brand a Sui project.
Build an AI agent that signs Sui transactions or runs onchain actions. Use when the user wants an AI agent on Sui.
Build a Sui data indexer or analytics pipeline. Use when the user wants to index Sui events, build a pipeline, or query Sui RPC data.
Build a mobile Sui app with React Native or the Sui Mobile SDK. Use when the user wants iOS, Android, or mobile Sui flows.
Pair with a coding agent to build a Sui MVP step by step. Use when the user wants to build the MVP iteratively with an agent.
Author Sui Move modules and packages with a senior Move dev as your pair. Use when the user wants to write, build, author, add, or scaffold Move code, smart contracts, or Sui programs at the module or function level, in any phrasing.
| name | suins-integration |
| description | Integrate SuiNS names into a Sui dapp. Use when the user mentions SuiNS or wants name resolution on Sui. |
# Suiperpower telemetry. Routes through the CLI so projects.json + Convex stay in sync.
# Silent on failure so the skill never blocks. Opt out: SUIPERPOWER_TELEMETRY=off.
#
# AGENT NOTE: when this skill finishes, run the matching completion command:
# suiperpower track suins-integration build completed
# Or use "failed" / "aborted" if it ended that way.
command -v suiperpower >/dev/null 2>&1 && suiperpower track suins-integration build started >/dev/null 2>&1 &
true
If TEL_PROMPTED is no, before doing real work, ask the user:
Help suiperpower get better. We track which skills get used and how long they take. No code, no file paths, no PII. Change anytime in
~/.suiperpower/config.json.A) Sure, anonymous B) No thanks
Write the answer to ~/.suiperpower/config.json telemetryTier field and create ~/.suiperpower/.telemetry-prompted. Then continue.
Integrates SuiNS name resolution and/or Move Registry (MVR) named packages into a Sui project. On the resolution side: resolve .sui names to addresses, reverse-lookup addresses to names, and read name metadata. On the registration side: register names, set target addresses, set default names, and attach user data (e.g., Walrus site IDs). On the MVR side: replace raw package addresses with human-readable @org/package names in Move dependencies and TypeScript transaction builds.
.sui names to Sui addresses (forward lookup)..sui name for a given address (reverse lookup)..sui name programmatically.find-next-sui-idea first.scaffold-project first.build-with-move.deploy-to-testnet.If you activated this and the user actually wants something else, consult skills/SKILL_ROUTER.md and hand off.
.suiperpower/build-context.md from scaffold-project. Read it if present.If unclear, interview the user for:
TypeScript integration code using @mysten/suins for resolution and/or registration.
Optional: MVR CLI setup and namedPackagesPlugin wiring for TypeScript transaction builds.
Optional: Move.toml updates for MVR-resolved dependencies via mvr add.
Append to .suiperpower/build-context.md:
## suins-integration session, <timestamp>
- features: <resolution | registration | mvr | combination>
- package: @mysten/suins
- network: <mainnet | testnet>
- mvr packages added: <list or none>
- open issues: <list>
Context gathering
.suiperpower/build-context.md if it exists.@mysten/sui installed (peer dependency for @mysten/suins).Install dependencies
npm install @mysten/suins (or pnpm/yarn equivalent).@mysten/sui is already installed as a peer dependency. If not, install it.npm install -g @aspect-run/mvr for the CLI, or @mysten/sui already includes namedPackagesPlugin.Name resolution (if needed)
SuinsClient with the user's SuiClient and target network.suinsClient.getNameRecord('name.sui') returns a NameRecord with targetAddress, expirationTimestampMs, avatar, walrusSiteId, and other metadata. Returns null if the name does not exist or is expired.getAddress() or getName() methods. Use getNameRecord() for all resolution.references/suins-quickstart.md for the full API surface.Name registration (if needed)
SuinsTransaction for registration mutations.register() with domain, years, coinConfig (SUI, USDC, or NS), payment coin, maxAmount, and priceInfoObjectId (required for SUI/NS, not USDC).renew() to extend an existing name's registration period.setTargetAddress() to point the name at a Sui address.setDefault() to set the reverse-lookup name for the signer.setUserData() for custom key-value pairs (Walrus site, avatar, etc.).burnExpired() to destroy expired names and recover storage deposits.references/suins-quickstart.md for registration patterns and pricing.MVR integration (if needed)
mvr add @org/package --network mainnet to add named dependencies.namedPackagesPlugin from @mysten/sui/transactions to resolve @org/package in PTBs at build time or runtime.@mysten/mvr-static.references/suins-quickstart.md for MVR setup details.Test the integration
.sui name and confirm it returns the expected address.Writeback
.suiperpower/build-context.md.Closing handoff
.suiperpower/intent.md exists and the session was non-trivial (new module, new sponsor integration, or material changes to public functions), recommend verify-against-intent as the next step so drift is caught before shipping.intent.md exists and the session was non-trivial, surface that gap once: offer clarify-intent to backfill, do not force it.Base prices per year in USDC (SUI/NS amounts fluctuate via Pyth oracle):
| Name length | Cost per year (USDC) |
|---|---|
| 3 characters | ~500 |
| 4 characters | ~100 |
| 5+ characters | ~20 |
Three payment options: SUI, USDC, NS token. SUI and NS require a priceInfoObjectId from the Pyth price feed. USDC does not. Use suinsClient.calculatePrice() for exact amounts. Surface this table when the user is registering names so they understand the cost before committing a transaction.
Before reporting done, the skill asks itself the following and refuses to declare success if any answer is no:
@mysten/suins installed (not an older/incorrect package name)?SuinsClient use the correct network matching the user's deployment target?priceInfoObjectId correctly sourced (not hardcoded stale values)?setDefault only run when the signer matches the target address?If any answer is no, the skill reports the gap and works through it before claiming the integration is complete.
On-demand references (load when relevant to the user's question):
references/suins-quickstart.md: SuinsClient init, resolution API, registration API, MVR setup, and code examples.references/suins-pitfalls.md: Common mistakes with SuiNS integration and how to avoid them.External docs (fetch at runtime for the latest API surface):
claude "/suiper:suins-integration <your message>"codex "/suins-integration <your message>"grok, then /suins-integration <your message> in the session~/.cursor/rules/suins-integration.mdc and reference it.If you activated this and the user actually wants something else, consult skills/SKILL_ROUTER.md and hand off.