[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-sui-sui-sdks":3,"mdc-r9z1rt-key":33,"related-repo-sui-sui-sdks":1837,"related-org-sui-sui-sdks":1942},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":22,"repoUrl":23,"updatedAt":24,"license":25,"forks":26,"topics":27,"repo":28,"sourceUrl":31,"mdContent":32},"sui-sdks","select and configure Sui SDKs","Sui SDK landscape — which SDK to pick (TypeScript, Rust, or community-maintained Python\u002FGo\u002FDart\u002FKotlin\u002FSwift), how they map to each other, and how to install and wire each one up. Use when a user is starting a new Sui project in any language, migrating between languages, comparing APIs across SDKs, or asking \"what SDK should I use for X?\". For deep patterns inside a single SDK, route to that SDK's reference file.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"sui","Sui (Mysten Labs)","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fsui.png","MystenLabs",[13,16,19],{"name":14,"slug":8,"type":15},"Sui","tag",{"name":17,"slug":18,"type":15},"API Development","api-development",{"name":20,"slug":21,"type":15},"SDK","sdk",9,"https:\u002F\u002Fgithub.com\u002FMystenLabs\u002Fskills","2026-08-01T05:44:29.794312",null,2,[],{"repoUrl":23,"stars":22,"forks":26,"topics":29,"description":30},[],"Sui development skills maintained by Mysten Labs","https:\u002F\u002Fgithub.com\u002FMystenLabs\u002Fskills\u002Ftree\u002FHEAD\u002Fsui-sdks","---\nname: sui-sdks\ndescription: >\n  Sui SDK landscape — which SDK to pick (TypeScript, Rust, or community-maintained\n  Python\u002FGo\u002FDart\u002FKotlin\u002FSwift), how they map to each other, and how to install and\n  wire each one up. Use when a user is starting a new Sui project in any language,\n  migrating between languages, comparing APIs across SDKs, or asking \"what SDK\n  should I use for X?\". For deep patterns inside a single SDK, route to that\n  SDK's reference file.\n---\n\n# Sui SDKs\n\n> **MCP tool:** When available in your environment, also query the Sui documentation MCP server (`https:\u002F\u002Fsui.mcp.kapa.ai`) for up-to-date answers. Use it for verification and for details not covered by these reference files.\n\nMost AI agents give confusing, outdated, or cross-wired answers about Sui SDKs. This skill fixes the three most common failure modes:\n\n1. **Recommending a community SDK as if it were official.** Only two SDKs are maintained by Mysten Labs: TypeScript (`@mysten\u002Fsui`) and Rust (`sui-rust-sdk` family of crates). Everything else is community-maintained.\n2. **Mixing up TypeScript SDK generations.** The old `@mysten\u002Fsui.js` package was renamed to `@mysten\u002Fsui` at v1.0. The v2 client API (`client.core.*`, `include` instead of `show*`, `SuiGrpcClient` replacing `SuiClient`) is distinct from v1.\n3. **Not using the installed LLM docs.** Every `@mysten\u002F*` package ships `docs\u002Fllms-index.md` + topic-specific markdown files to `node_modules`. Agents should read those before answering; they are guaranteed to match the installed version.\n\nAll patterns in this skill are derived from:\n- https:\u002F\u002Fdocs.sui.io\u002Freferences\u002Fsui-sdks (canonical SDK inventory)\n- https:\u002F\u002Fsdk.mystenlabs.com\u002Fsui (TypeScript SDK reference)\n- https:\u002F\u002Fsdk.mystenlabs.com\u002Fsui\u002Fllm-docs (bundled LLM docs convention)\n- https:\u002F\u002Fgithub.com\u002FMystenLabs\u002Fsui-rust-sdk (Rust SDK source)\n- https:\u002F\u002Fdocs.rs\u002Fsui-transaction-builder (Rust PTB builder)\n\nIf unsure about any specific API in any SDK, fetch from the relevant doc page — do not extrapolate from a different SDK's surface.\n\n---\n\n## Reference files\n\n### typescript — TypeScript SDK (`@mysten\u002Fsui` v2)\n**Path:** `typescript.md`\n**Load when:** writing, reviewing, or migrating TypeScript\u002FJavaScript code that imports `@mysten\u002Fsui`, constructing PTBs in TS, choosing between `SuiGrpcClient` \u002F `SuiGraphQLClient`, using the v2 Core API, or migrating from SDK v1 (`@mysten\u002Fsui.js`).\n**Covers:** install, imports, client classes and when to use each, v2 Core API, PTB construction, pure\u002Fobject inputs, balance and coin intents, execution & status checking, `waitForTransaction`, keypairs, offline building, sponsored transactions, v1→v2 migration table, `$extend` pattern for kiosk\u002Fsuins\u002Fdeepbook\u002Fwalrus\u002Fseal\u002Fzksend.\n\n### rust — Rust SDK (`sui-*` crates)\n**Path:** `rust.md`\n**Load when:** writing Rust code that interacts with Sui — CLI tools, backend services, validators, indexers. Also when choosing between the new modular crates and the legacy in-monorepo `sui-sdk` crate.\n**Covers:** the five crates (`sui-sdk-types`, `sui-crypto`, `sui-rpc`, `sui-graphql`, `sui-transaction-builder`), `TransactionBuilder` API with an end-to-end example, signing via `sui-crypto`, gRPC client from `sui-rpc`, relationship to the legacy `sui-sdk` crate, and the \"intents\" feature flag (high-level `Coin` \u002F `Balance` intents).\n\n### community — Community SDKs (Python, Go, Dart, Kotlin, Swift, Vue)\n**Path:** `community.md`\n**Load when:** a user asks about or is using a non-TS-non-Rust SDK. Also when assessing risk for a language choice (maintainer responsiveness, feature gaps vs official SDKs).\n**Covers:** for each community SDK — repo, maintainer, install, what's supported\u002Fnot, caveats, and a recommendation on whether to use it or call the Rust\u002FTS SDK from an FFI wrapper instead.\n\n### mapping — Cross-SDK operation mapping\n**Path:** `mapping.md`\n**Load when:** porting code from one SDK to another, writing a polyglot reference, or answering \"how do I do X in SDK Y\".\n**Covers:** side-by-side tables mapping the 10-or-so core Sui operations (build PTB, split gas, moveCall, transfer, sign & execute, wait, query object \u002F owned objects \u002F balance, dry-run) across the TS and Rust SDKs, with syntactic parallels.\n\n### llm-docs — Using bundled docs from node_modules\n**Path:** `llm-docs.md`\n**Load when:** the agent needs authoritative, version-matched TypeScript API docs before writing code. Always check `node_modules\u002F@mysten\u002F*\u002Fdocs\u002Fllms-index.md` first if it exists.\n**Covers:** the `docs\u002Fllms-index.md` convention, which `@mysten\u002F*` packages ship it, how to read the index and target pages, how to wire it into `AGENTS.md` \u002F `CLAUDE.md` for a project.\n\n## Routing guide\n\n| Task | Load |\n|------|------|\n| \"Which SDK should I use?\" | (this file) + mapping |\n| Writing TS\u002FJS code against Sui | typescript + llm-docs |\n| Writing Rust code against Sui | rust |\n| Using pysui \u002F ksui \u002F suikit \u002F sui-go \u002F mofalabs\u002Fsui | community |\n| User mentions Go \u002F Python \u002F Dart \u002F Kotlin \u002F Swift \u002F Vue (even casually, e.g. \"my team uses Go\") | community (always — language constraint trumps perf recommendations) |\n| Porting between languages | mapping + (target SDK file) |\n| Migrating from `@mysten\u002Fsui.js` \u002F SDK v1 | typescript |\n| Frontend \u002F React integration | route to `frontend-apps` skill first (covers React hooks, wallet connection, query patterns), then typescript here for `Transaction` construction |\n| PTB semantics deep dive | route to `ptbs` skill, then language-specific file here |\n| Data access patterns (gRPC vs GraphQL vs indexer) | route to `accessing-data` skill |\n| Full project setup | **all reference files** (or the SDK-specific one + llm-docs) |\n| Code review | **all reference files** |\n\n## Skill Content\n\n### Key concepts\n\n- **Two officially-supported SDKs.** TypeScript (`@mysten\u002Fsui`) and Rust (`sui-rust-sdk` crates). Both are maintained by Mysten Labs and updated alongside protocol changes. For performance-critical paths in non-Rust languages, `sui-rust-sdk` can be called via FFI (Foreign Function Interface) from Python, Go, Swift, etc., giving those languages access to the official SDK without relying on community wrappers.\n- **Everything else is community.** Python (`pysui`), Go (`block-vision\u002Fsui-go-sdk`), Dart (`mofalabs\u002Fsui`), Kotlin (`mcxross\u002Fksui`), Swift (`opendive\u002Fsuikit`), Vue (`SuiFansCN\u002Fsuiue`). They typically lag protocol updates and feature coverage varies. Treat them as best-effort.\n- **The TS SDK has two client generations.** v1 used `SuiClient` + `@mysten\u002Fsui.js`. v2 uses `SuiGrpcClient` \u002F `SuiJsonRpcClient` \u002F `SuiGraphQLClient` from `@mysten\u002Fsui`. JSON-RPC is deprecated; gRPC is the default for new code.\n- **The Rust SDK has two generations.** The new modular crates (`sui-sdk-types`, `sui-crypto`, `sui-rpc`, `sui-transaction-builder`) are the recommended surface. The \"legacy Rust SDK\" is the monolithic `sui-sdk` crate in the sui monorepo; it uses JSON-RPC (deprecated) and is not the recommended target for new code.\n- **Every `@mysten\u002F*` package ships LLM-ready docs.** Look for `node_modules\u002F@mysten\u002Fsui\u002Fdocs\u002Fllms-index.md` and follow its pointers before asking the user to clarify APIs. Matches the installed version exactly.\n- **Frameworks on top of SDKs.** `@mysten\u002Fdapp-kit-react` (React wallet integration; `@mysten\u002Fdapp-kit-core` for Vue\u002Fvanilla\u002FSvelte\u002FWeb Components), `@mysten\u002Fkiosk`, `@mysten\u002Fsuins`, `@mysten\u002Fdeepbook-v3`, `@mysten\u002Fwalrus`, `@mysten\u002Fseal`, `@mysten\u002Fzksend`, `@mysten\u002Fenoki` — all are thin layers over `@mysten\u002Fsui`. The Mysten extensions integrate via the v2 `client.$extend(...)` pattern; dApp Kit does not (it's a React framework, not a client extension — see `frontend-apps` skill). The bare `@mysten\u002Fdapp-kit` package name is the deprecated JSON-RPC-only predecessor.\n\n### Rules\n\n1. **Default to TypeScript or Rust, but respect language constraints.** For any new Sui project, recommend TypeScript (`@mysten\u002Fsui`) or Rust (`sui-rust-sdk` crates) — unless the user has named a language (Go, Python, Dart, Kotlin, Swift, Vue) or said \"my team uses X\". Then `community.md` is the load: name the canonical community SDK (`block-vision\u002Fsui-go-sdk` for Go, `pysui` for Python, etc.), flag the staleness risk, and offer FFI-to-Rust as a fallback. **Do not recommend TypeScript or Rust as a replacement language** when the user has stated their team's language. For example, if the user says \"my team uses Go\", do not suggest rewriting in TypeScript — recommend the Go community SDK and\u002For Rust via FFI.\n2. **For TypeScript, always use `@mysten\u002Fsui`, never `@mysten\u002Fsui.js`.** The `.js`-suffixed package is frozen at v1 and will not receive updates. Legacy code using it should be migrated.\n3. **For TypeScript v2, use `SuiGrpcClient` by default.** `SuiJsonRpcClient` exists for legacy compatibility but JSON-RPC is deprecated; `SuiGraphQLClient` is for specialized relational query flows. See `typescript.md` for the decision.\n4. **For Rust, prefer `sui-rust-sdk` crates over the legacy monorepo `sui-sdk`.** Import `sui-transaction-builder`, `sui-sdk-types`, `sui-crypto`, `sui-rpc` individually — pay only for what you use.\n5. **Check `node_modules\u002F@mysten\u002F*\u002Fdocs\u002Fllms-index.md` before writing TS code.** If the project has `@mysten\u002Fsui` installed, those docs are the authoritative, version-matched source. Read the index, then the targeted page.\n6. **Do not mix v1 and v2 TS patterns.** Code that uses `SuiClient`, `TransactionBlock`, `getFullnodeUrl`, `options: { showEffects }`, `signAndExecuteTransactionBlock`, or `result.effects?.status?.status` is v1. Migrate wholesale or keep everything on v1 — a half-migrated file is a bug surface.\n7. **Community SDK caveat is mandatory.** When recommending or using a community SDK, mention that it's community-maintained and may lag protocol updates. Check the repo's last commit and latest Sui version support before relying on it.\n8. **Frameworks integrate via `$extend()` in v2.** `client.$extend(suins(), deepbook({ address }))` is the v2 pattern. Do not instantiate `SuinsClient` or `DeepBookClient` directly — that's the v1 style.\n9. **Route frontend questions to the `frontend-apps` skill.** When the user asks about React hooks, wallet connection, or dApp Kit query patterns, explicitly direct them to the `frontend-apps` skill for hook-level details. This skill covers SDK selection and `Transaction` construction only.\n9. **Cite the docs when unsure.** Official TS SDK docs live at `sdk.mystenlabs.com`. The inventory list lives at `docs.sui.io\u002Freferences\u002Fsui-sdks`. Rust SDK docs live on `docs.rs` (per-crate) and `mystenlabs.github.io\u002Fsui-rust-sdk\u002F\u003Ccrate_name>\u002F` (e.g., `\u002Fsui_transaction_builder\u002F`).\n\n### Common mistakes\n\n- **Calling a community SDK \"the Python SDK\" or \"the Go SDK\" as if official.** There is no official Python or Go SDK. Name the specific package (`pysui`, `block-vision\u002Fsui-go-sdk`) and flag it as community.\n- **Telling users `SuiClient` is the recommended client.** That was v1. v2 uses `SuiGrpcClient` (or `SuiJsonRpcClient` as a deprecated migration stopgap).\n- **Recommending `@mysten\u002Fsui.js`.** Deprecated package name. Always `@mysten\u002Fsui`.\n- **Confusing the two Rust SDKs.** The new `sui-rust-sdk` crates (on `crates.io` as separate crates like `sui-sdk-types` \u002F `sui-transaction-builder` \u002F `sui-rpc`) are distinct from the legacy `sui-sdk` crate in the sui monorepo. New code should use the former.\n- **Fetching TS docs from the web when they're installed locally.** If the project has `@mysten\u002Fsui` installed, read `node_modules\u002F@mysten\u002Fsui\u002Fdocs\u002Fllms-index.md` instead — it matches the installed version.\n- **Hardcoding a specific SDK version.** SDK APIs evolve. Prefer \"install the latest `@mysten\u002Fsui`\" and then consult the bundled docs, rather than pinning advice to a version.\n- **Recommending `@mysten\u002Fdapp-kit` for backend code.** dApp Kit is a React-oriented frontend framework. Backend or CLI code should use `@mysten\u002Fsui` directly.\n- **Providing React hook details instead of routing to the `frontend-apps` skill.** When a user asks about React hooks, wallet connection patterns, or dApp Kit query patterns, do not answer with hook-level code from this skill. Instead, explicitly tell the user: \"For React hook details, see the `frontend-apps` skill.\" This skill covers SDK selection and `Transaction` construction only — the `frontend-apps` skill has the hook-level guidance.\n- **Using JSON-RPC as the default for any client.** JSON-RPC is deprecated; Sui Foundation mainnet full nodes will disable it the week of July 27, 2026. Default to gRPC (or GraphQL for relational queries). `SuiJsonRpcClient` still exists for migration but should not be the default.\n",{"data":34,"body":35},{"name":4,"description":6},{"type":36,"children":37},"root",[38,46,71,76,205,210,271,276,280,287,301,376,390,504,510,536,542,568,574,637,643,871,877,883,1197,1203,1584,1590],{"type":39,"tag":40,"props":41,"children":42},"element","h1",{"id":4},[43],{"type":44,"value":45},"text","Sui SDKs",{"type":39,"tag":47,"props":48,"children":49},"blockquote",{},[50],{"type":39,"tag":51,"props":52,"children":53},"p",{},[54,60,62,69],{"type":39,"tag":55,"props":56,"children":57},"strong",{},[58],{"type":44,"value":59},"MCP tool:",{"type":44,"value":61}," When available in your environment, also query the Sui documentation MCP server (",{"type":39,"tag":63,"props":64,"children":66},"code",{"className":65},[],[67],{"type":44,"value":68},"https:\u002F\u002Fsui.mcp.kapa.ai",{"type":44,"value":70},") for up-to-date answers. Use it for verification and for details not covered by these reference files.",{"type":39,"tag":51,"props":72,"children":73},{},[74],{"type":44,"value":75},"Most AI agents give confusing, outdated, or cross-wired answers about Sui SDKs. This skill fixes the three most common failure modes:",{"type":39,"tag":77,"props":78,"children":79},"ol",{},[80,107,171],{"type":39,"tag":81,"props":82,"children":83},"li",{},[84,89,91,97,99,105],{"type":39,"tag":55,"props":85,"children":86},{},[87],{"type":44,"value":88},"Recommending a community SDK as if it were official.",{"type":44,"value":90}," Only two SDKs are maintained by Mysten Labs: TypeScript (",{"type":39,"tag":63,"props":92,"children":94},{"className":93},[],[95],{"type":44,"value":96},"@mysten\u002Fsui",{"type":44,"value":98},") and Rust (",{"type":39,"tag":63,"props":100,"children":102},{"className":101},[],[103],{"type":44,"value":104},"sui-rust-sdk",{"type":44,"value":106}," family of crates). Everything else is community-maintained.",{"type":39,"tag":81,"props":108,"children":109},{},[110,115,117,123,125,130,132,138,140,146,148,154,155,161,163,169],{"type":39,"tag":55,"props":111,"children":112},{},[113],{"type":44,"value":114},"Mixing up TypeScript SDK generations.",{"type":44,"value":116}," The old ",{"type":39,"tag":63,"props":118,"children":120},{"className":119},[],[121],{"type":44,"value":122},"@mysten\u002Fsui.js",{"type":44,"value":124}," package was renamed to ",{"type":39,"tag":63,"props":126,"children":128},{"className":127},[],[129],{"type":44,"value":96},{"type":44,"value":131}," at v1.0. The v2 client API (",{"type":39,"tag":63,"props":133,"children":135},{"className":134},[],[136],{"type":44,"value":137},"client.core.*",{"type":44,"value":139},", ",{"type":39,"tag":63,"props":141,"children":143},{"className":142},[],[144],{"type":44,"value":145},"include",{"type":44,"value":147}," instead of ",{"type":39,"tag":63,"props":149,"children":151},{"className":150},[],[152],{"type":44,"value":153},"show*",{"type":44,"value":139},{"type":39,"tag":63,"props":156,"children":158},{"className":157},[],[159],{"type":44,"value":160},"SuiGrpcClient",{"type":44,"value":162}," replacing ",{"type":39,"tag":63,"props":164,"children":166},{"className":165},[],[167],{"type":44,"value":168},"SuiClient",{"type":44,"value":170},") is distinct from v1.",{"type":39,"tag":81,"props":172,"children":173},{},[174,179,181,187,189,195,197,203],{"type":39,"tag":55,"props":175,"children":176},{},[177],{"type":44,"value":178},"Not using the installed LLM docs.",{"type":44,"value":180}," Every ",{"type":39,"tag":63,"props":182,"children":184},{"className":183},[],[185],{"type":44,"value":186},"@mysten\u002F*",{"type":44,"value":188}," package ships ",{"type":39,"tag":63,"props":190,"children":192},{"className":191},[],[193],{"type":44,"value":194},"docs\u002Fllms-index.md",{"type":44,"value":196}," + topic-specific markdown files to ",{"type":39,"tag":63,"props":198,"children":200},{"className":199},[],[201],{"type":44,"value":202},"node_modules",{"type":44,"value":204},". Agents should read those before answering; they are guaranteed to match the installed version.",{"type":39,"tag":51,"props":206,"children":207},{},[208],{"type":44,"value":209},"All patterns in this skill are derived from:",{"type":39,"tag":211,"props":212,"children":213},"ul",{},[214,227,238,249,260],{"type":39,"tag":81,"props":215,"children":216},{},[217,225],{"type":39,"tag":218,"props":219,"children":223},"a",{"href":220,"rel":221},"https:\u002F\u002Fdocs.sui.io\u002Freferences\u002Fsui-sdks",[222],"nofollow",[224],{"type":44,"value":220},{"type":44,"value":226}," (canonical SDK inventory)",{"type":39,"tag":81,"props":228,"children":229},{},[230,236],{"type":39,"tag":218,"props":231,"children":234},{"href":232,"rel":233},"https:\u002F\u002Fsdk.mystenlabs.com\u002Fsui",[222],[235],{"type":44,"value":232},{"type":44,"value":237}," (TypeScript SDK reference)",{"type":39,"tag":81,"props":239,"children":240},{},[241,247],{"type":39,"tag":218,"props":242,"children":245},{"href":243,"rel":244},"https:\u002F\u002Fsdk.mystenlabs.com\u002Fsui\u002Fllm-docs",[222],[246],{"type":44,"value":243},{"type":44,"value":248}," (bundled LLM docs convention)",{"type":39,"tag":81,"props":250,"children":251},{},[252,258],{"type":39,"tag":218,"props":253,"children":256},{"href":254,"rel":255},"https:\u002F\u002Fgithub.com\u002FMystenLabs\u002Fsui-rust-sdk",[222],[257],{"type":44,"value":254},{"type":44,"value":259}," (Rust SDK source)",{"type":39,"tag":81,"props":261,"children":262},{},[263,269],{"type":39,"tag":218,"props":264,"children":267},{"href":265,"rel":266},"https:\u002F\u002Fdocs.rs\u002Fsui-transaction-builder",[222],[268],{"type":44,"value":265},{"type":44,"value":270}," (Rust PTB builder)",{"type":39,"tag":51,"props":272,"children":273},{},[274],{"type":44,"value":275},"If unsure about any specific API in any SDK, fetch from the relevant doc page — do not extrapolate from a different SDK's surface.",{"type":39,"tag":277,"props":278,"children":279},"hr",{},[],{"type":39,"tag":281,"props":282,"children":284},"h2",{"id":283},"reference-files",[285],{"type":44,"value":286},"Reference files",{"type":39,"tag":288,"props":289,"children":291},"h3",{"id":290},"typescript-typescript-sdk-mystensui-v2",[292,294,299],{"type":44,"value":293},"typescript — TypeScript SDK (",{"type":39,"tag":63,"props":295,"children":297},{"className":296},[],[298],{"type":44,"value":96},{"type":44,"value":300}," v2)",{"type":39,"tag":51,"props":302,"children":303},{},[304,309,311,317,322,324,329,331,336,338,344,346,351,353,358,360,366,368,374],{"type":39,"tag":55,"props":305,"children":306},{},[307],{"type":44,"value":308},"Path:",{"type":44,"value":310}," ",{"type":39,"tag":63,"props":312,"children":314},{"className":313},[],[315],{"type":44,"value":316},"typescript.md",{"type":39,"tag":55,"props":318,"children":319},{},[320],{"type":44,"value":321},"Load when:",{"type":44,"value":323}," writing, reviewing, or migrating TypeScript\u002FJavaScript code that imports ",{"type":39,"tag":63,"props":325,"children":327},{"className":326},[],[328],{"type":44,"value":96},{"type":44,"value":330},", constructing PTBs in TS, choosing between ",{"type":39,"tag":63,"props":332,"children":334},{"className":333},[],[335],{"type":44,"value":160},{"type":44,"value":337}," \u002F ",{"type":39,"tag":63,"props":339,"children":341},{"className":340},[],[342],{"type":44,"value":343},"SuiGraphQLClient",{"type":44,"value":345},", using the v2 Core API, or migrating from SDK v1 (",{"type":39,"tag":63,"props":347,"children":349},{"className":348},[],[350],{"type":44,"value":122},{"type":44,"value":352},").\n",{"type":39,"tag":55,"props":354,"children":355},{},[356],{"type":44,"value":357},"Covers:",{"type":44,"value":359}," install, imports, client classes and when to use each, v2 Core API, PTB construction, pure\u002Fobject inputs, balance and coin intents, execution & status checking, ",{"type":39,"tag":63,"props":361,"children":363},{"className":362},[],[364],{"type":44,"value":365},"waitForTransaction",{"type":44,"value":367},", keypairs, offline building, sponsored transactions, v1→v2 migration table, ",{"type":39,"tag":63,"props":369,"children":371},{"className":370},[],[372],{"type":44,"value":373},"$extend",{"type":44,"value":375}," pattern for kiosk\u002Fsuins\u002Fdeepbook\u002Fwalrus\u002Fseal\u002Fzksend.",{"type":39,"tag":288,"props":377,"children":379},{"id":378},"rust-rust-sdk-sui-crates",[380,382,388],{"type":44,"value":381},"rust — Rust SDK (",{"type":39,"tag":63,"props":383,"children":385},{"className":384},[],[386],{"type":44,"value":387},"sui-*",{"type":44,"value":389}," crates)",{"type":39,"tag":51,"props":391,"children":392},{},[393,397,398,404,408,410,416,418,422,424,430,431,437,438,444,445,451,452,458,460,466,468,473,475,480,482,487,489,495,496,502],{"type":39,"tag":55,"props":394,"children":395},{},[396],{"type":44,"value":308},{"type":44,"value":310},{"type":39,"tag":63,"props":399,"children":401},{"className":400},[],[402],{"type":44,"value":403},"rust.md",{"type":39,"tag":55,"props":405,"children":406},{},[407],{"type":44,"value":321},{"type":44,"value":409}," writing Rust code that interacts with Sui — CLI tools, backend services, validators, indexers. Also when choosing between the new modular crates and the legacy in-monorepo ",{"type":39,"tag":63,"props":411,"children":413},{"className":412},[],[414],{"type":44,"value":415},"sui-sdk",{"type":44,"value":417}," crate.\n",{"type":39,"tag":55,"props":419,"children":420},{},[421],{"type":44,"value":357},{"type":44,"value":423}," the five crates (",{"type":39,"tag":63,"props":425,"children":427},{"className":426},[],[428],{"type":44,"value":429},"sui-sdk-types",{"type":44,"value":139},{"type":39,"tag":63,"props":432,"children":434},{"className":433},[],[435],{"type":44,"value":436},"sui-crypto",{"type":44,"value":139},{"type":39,"tag":63,"props":439,"children":441},{"className":440},[],[442],{"type":44,"value":443},"sui-rpc",{"type":44,"value":139},{"type":39,"tag":63,"props":446,"children":448},{"className":447},[],[449],{"type":44,"value":450},"sui-graphql",{"type":44,"value":139},{"type":39,"tag":63,"props":453,"children":455},{"className":454},[],[456],{"type":44,"value":457},"sui-transaction-builder",{"type":44,"value":459},"), ",{"type":39,"tag":63,"props":461,"children":463},{"className":462},[],[464],{"type":44,"value":465},"TransactionBuilder",{"type":44,"value":467}," API with an end-to-end example, signing via ",{"type":39,"tag":63,"props":469,"children":471},{"className":470},[],[472],{"type":44,"value":436},{"type":44,"value":474},", gRPC client from ",{"type":39,"tag":63,"props":476,"children":478},{"className":477},[],[479],{"type":44,"value":443},{"type":44,"value":481},", relationship to the legacy ",{"type":39,"tag":63,"props":483,"children":485},{"className":484},[],[486],{"type":44,"value":415},{"type":44,"value":488}," crate, and the \"intents\" feature flag (high-level ",{"type":39,"tag":63,"props":490,"children":492},{"className":491},[],[493],{"type":44,"value":494},"Coin",{"type":44,"value":337},{"type":39,"tag":63,"props":497,"children":499},{"className":498},[],[500],{"type":44,"value":501},"Balance",{"type":44,"value":503}," intents).",{"type":39,"tag":288,"props":505,"children":507},{"id":506},"community-community-sdks-python-go-dart-kotlin-swift-vue",[508],{"type":44,"value":509},"community — Community SDKs (Python, Go, Dart, Kotlin, Swift, Vue)",{"type":39,"tag":51,"props":511,"children":512},{},[513,517,518,524,528,530,534],{"type":39,"tag":55,"props":514,"children":515},{},[516],{"type":44,"value":308},{"type":44,"value":310},{"type":39,"tag":63,"props":519,"children":521},{"className":520},[],[522],{"type":44,"value":523},"community.md",{"type":39,"tag":55,"props":525,"children":526},{},[527],{"type":44,"value":321},{"type":44,"value":529}," a user asks about or is using a non-TS-non-Rust SDK. Also when assessing risk for a language choice (maintainer responsiveness, feature gaps vs official SDKs).\n",{"type":39,"tag":55,"props":531,"children":532},{},[533],{"type":44,"value":357},{"type":44,"value":535}," for each community SDK — repo, maintainer, install, what's supported\u002Fnot, caveats, and a recommendation on whether to use it or call the Rust\u002FTS SDK from an FFI wrapper instead.",{"type":39,"tag":288,"props":537,"children":539},{"id":538},"mapping-cross-sdk-operation-mapping",[540],{"type":44,"value":541},"mapping — Cross-SDK operation mapping",{"type":39,"tag":51,"props":543,"children":544},{},[545,549,550,556,560,562,566],{"type":39,"tag":55,"props":546,"children":547},{},[548],{"type":44,"value":308},{"type":44,"value":310},{"type":39,"tag":63,"props":551,"children":553},{"className":552},[],[554],{"type":44,"value":555},"mapping.md",{"type":39,"tag":55,"props":557,"children":558},{},[559],{"type":44,"value":321},{"type":44,"value":561}," porting code from one SDK to another, writing a polyglot reference, or answering \"how do I do X in SDK Y\".\n",{"type":39,"tag":55,"props":563,"children":564},{},[565],{"type":44,"value":357},{"type":44,"value":567}," side-by-side tables mapping the 10-or-so core Sui operations (build PTB, split gas, moveCall, transfer, sign & execute, wait, query object \u002F owned objects \u002F balance, dry-run) across the TS and Rust SDKs, with syntactic parallels.",{"type":39,"tag":288,"props":569,"children":571},{"id":570},"llm-docs-using-bundled-docs-from-node_modules",[572],{"type":44,"value":573},"llm-docs — Using bundled docs from node_modules",{"type":39,"tag":51,"props":575,"children":576},{},[577,581,582,588,592,594,600,602,606,608,613,615,620,622,628,629,635],{"type":39,"tag":55,"props":578,"children":579},{},[580],{"type":44,"value":308},{"type":44,"value":310},{"type":39,"tag":63,"props":583,"children":585},{"className":584},[],[586],{"type":44,"value":587},"llm-docs.md",{"type":39,"tag":55,"props":589,"children":590},{},[591],{"type":44,"value":321},{"type":44,"value":593}," the agent needs authoritative, version-matched TypeScript API docs before writing code. Always check ",{"type":39,"tag":63,"props":595,"children":597},{"className":596},[],[598],{"type":44,"value":599},"node_modules\u002F@mysten\u002F*\u002Fdocs\u002Fllms-index.md",{"type":44,"value":601}," first if it exists.\n",{"type":39,"tag":55,"props":603,"children":604},{},[605],{"type":44,"value":357},{"type":44,"value":607}," the ",{"type":39,"tag":63,"props":609,"children":611},{"className":610},[],[612],{"type":44,"value":194},{"type":44,"value":614}," convention, which ",{"type":39,"tag":63,"props":616,"children":618},{"className":617},[],[619],{"type":44,"value":186},{"type":44,"value":621}," packages ship it, how to read the index and target pages, how to wire it into ",{"type":39,"tag":63,"props":623,"children":625},{"className":624},[],[626],{"type":44,"value":627},"AGENTS.md",{"type":44,"value":337},{"type":39,"tag":63,"props":630,"children":632},{"className":631},[],[633],{"type":44,"value":634},"CLAUDE.md",{"type":44,"value":636}," for a project.",{"type":39,"tag":281,"props":638,"children":640},{"id":639},"routing-guide",[641],{"type":44,"value":642},"Routing guide",{"type":39,"tag":644,"props":645,"children":646},"table",{},[647,666],{"type":39,"tag":648,"props":649,"children":650},"thead",{},[651],{"type":39,"tag":652,"props":653,"children":654},"tr",{},[655,661],{"type":39,"tag":656,"props":657,"children":658},"th",{},[659],{"type":44,"value":660},"Task",{"type":39,"tag":656,"props":662,"children":663},{},[664],{"type":44,"value":665},"Load",{"type":39,"tag":667,"props":668,"children":669},"tbody",{},[670,684,697,710,723,736,749,769,798,818,838,856],{"type":39,"tag":652,"props":671,"children":672},{},[673,679],{"type":39,"tag":674,"props":675,"children":676},"td",{},[677],{"type":44,"value":678},"\"Which SDK should I use?\"",{"type":39,"tag":674,"props":680,"children":681},{},[682],{"type":44,"value":683},"(this file) + mapping",{"type":39,"tag":652,"props":685,"children":686},{},[687,692],{"type":39,"tag":674,"props":688,"children":689},{},[690],{"type":44,"value":691},"Writing TS\u002FJS code against Sui",{"type":39,"tag":674,"props":693,"children":694},{},[695],{"type":44,"value":696},"typescript + llm-docs",{"type":39,"tag":652,"props":698,"children":699},{},[700,705],{"type":39,"tag":674,"props":701,"children":702},{},[703],{"type":44,"value":704},"Writing Rust code against Sui",{"type":39,"tag":674,"props":706,"children":707},{},[708],{"type":44,"value":709},"rust",{"type":39,"tag":652,"props":711,"children":712},{},[713,718],{"type":39,"tag":674,"props":714,"children":715},{},[716],{"type":44,"value":717},"Using pysui \u002F ksui \u002F suikit \u002F sui-go \u002F mofalabs\u002Fsui",{"type":39,"tag":674,"props":719,"children":720},{},[721],{"type":44,"value":722},"community",{"type":39,"tag":652,"props":724,"children":725},{},[726,731],{"type":39,"tag":674,"props":727,"children":728},{},[729],{"type":44,"value":730},"User mentions Go \u002F Python \u002F Dart \u002F Kotlin \u002F Swift \u002F Vue (even casually, e.g. \"my team uses Go\")",{"type":39,"tag":674,"props":732,"children":733},{},[734],{"type":44,"value":735},"community (always — language constraint trumps perf recommendations)",{"type":39,"tag":652,"props":737,"children":738},{},[739,744],{"type":39,"tag":674,"props":740,"children":741},{},[742],{"type":44,"value":743},"Porting between languages",{"type":39,"tag":674,"props":745,"children":746},{},[747],{"type":44,"value":748},"mapping + (target SDK file)",{"type":39,"tag":652,"props":750,"children":751},{},[752,764],{"type":39,"tag":674,"props":753,"children":754},{},[755,757,762],{"type":44,"value":756},"Migrating from ",{"type":39,"tag":63,"props":758,"children":760},{"className":759},[],[761],{"type":44,"value":122},{"type":44,"value":763}," \u002F SDK v1",{"type":39,"tag":674,"props":765,"children":766},{},[767],{"type":44,"value":768},"typescript",{"type":39,"tag":652,"props":770,"children":771},{},[772,777],{"type":39,"tag":674,"props":773,"children":774},{},[775],{"type":44,"value":776},"Frontend \u002F React integration",{"type":39,"tag":674,"props":778,"children":779},{},[780,782,788,790,796],{"type":44,"value":781},"route to ",{"type":39,"tag":63,"props":783,"children":785},{"className":784},[],[786],{"type":44,"value":787},"frontend-apps",{"type":44,"value":789}," skill first (covers React hooks, wallet connection, query patterns), then typescript here for ",{"type":39,"tag":63,"props":791,"children":793},{"className":792},[],[794],{"type":44,"value":795},"Transaction",{"type":44,"value":797}," construction",{"type":39,"tag":652,"props":799,"children":800},{},[801,806],{"type":39,"tag":674,"props":802,"children":803},{},[804],{"type":44,"value":805},"PTB semantics deep dive",{"type":39,"tag":674,"props":807,"children":808},{},[809,810,816],{"type":44,"value":781},{"type":39,"tag":63,"props":811,"children":813},{"className":812},[],[814],{"type":44,"value":815},"ptbs",{"type":44,"value":817}," skill, then language-specific file here",{"type":39,"tag":652,"props":819,"children":820},{},[821,826],{"type":39,"tag":674,"props":822,"children":823},{},[824],{"type":44,"value":825},"Data access patterns (gRPC vs GraphQL vs indexer)",{"type":39,"tag":674,"props":827,"children":828},{},[829,830,836],{"type":44,"value":781},{"type":39,"tag":63,"props":831,"children":833},{"className":832},[],[834],{"type":44,"value":835},"accessing-data",{"type":44,"value":837}," skill",{"type":39,"tag":652,"props":839,"children":840},{},[841,846],{"type":39,"tag":674,"props":842,"children":843},{},[844],{"type":44,"value":845},"Full project setup",{"type":39,"tag":674,"props":847,"children":848},{},[849,854],{"type":39,"tag":55,"props":850,"children":851},{},[852],{"type":44,"value":853},"all reference files",{"type":44,"value":855}," (or the SDK-specific one + llm-docs)",{"type":39,"tag":652,"props":857,"children":858},{},[859,864],{"type":39,"tag":674,"props":860,"children":861},{},[862],{"type":44,"value":863},"Code review",{"type":39,"tag":674,"props":865,"children":866},{},[867],{"type":39,"tag":55,"props":868,"children":869},{},[870],{"type":44,"value":853},{"type":39,"tag":281,"props":872,"children":874},{"id":873},"skill-content",[875],{"type":44,"value":876},"Skill Content",{"type":39,"tag":288,"props":878,"children":880},{"id":879},"key-concepts",[881],{"type":44,"value":882},"Key concepts",{"type":39,"tag":211,"props":884,"children":885},{},[886,916,974,1025,1067,1092],{"type":39,"tag":81,"props":887,"children":888},{},[889,894,896,901,902,907,909,914],{"type":39,"tag":55,"props":890,"children":891},{},[892],{"type":44,"value":893},"Two officially-supported SDKs.",{"type":44,"value":895}," TypeScript (",{"type":39,"tag":63,"props":897,"children":899},{"className":898},[],[900],{"type":44,"value":96},{"type":44,"value":98},{"type":39,"tag":63,"props":903,"children":905},{"className":904},[],[906],{"type":44,"value":104},{"type":44,"value":908}," crates). Both are maintained by Mysten Labs and updated alongside protocol changes. For performance-critical paths in non-Rust languages, ",{"type":39,"tag":63,"props":910,"children":912},{"className":911},[],[913],{"type":44,"value":104},{"type":44,"value":915}," can be called via FFI (Foreign Function Interface) from Python, Go, Swift, etc., giving those languages access to the official SDK without relying on community wrappers.",{"type":39,"tag":81,"props":917,"children":918},{},[919,924,926,932,934,940,942,948,950,956,958,964,966,972],{"type":39,"tag":55,"props":920,"children":921},{},[922],{"type":44,"value":923},"Everything else is community.",{"type":44,"value":925}," Python (",{"type":39,"tag":63,"props":927,"children":929},{"className":928},[],[930],{"type":44,"value":931},"pysui",{"type":44,"value":933},"), Go (",{"type":39,"tag":63,"props":935,"children":937},{"className":936},[],[938],{"type":44,"value":939},"block-vision\u002Fsui-go-sdk",{"type":44,"value":941},"), Dart (",{"type":39,"tag":63,"props":943,"children":945},{"className":944},[],[946],{"type":44,"value":947},"mofalabs\u002Fsui",{"type":44,"value":949},"), Kotlin (",{"type":39,"tag":63,"props":951,"children":953},{"className":952},[],[954],{"type":44,"value":955},"mcxross\u002Fksui",{"type":44,"value":957},"), Swift (",{"type":39,"tag":63,"props":959,"children":961},{"className":960},[],[962],{"type":44,"value":963},"opendive\u002Fsuikit",{"type":44,"value":965},"), Vue (",{"type":39,"tag":63,"props":967,"children":969},{"className":968},[],[970],{"type":44,"value":971},"SuiFansCN\u002Fsuiue",{"type":44,"value":973},"). They typically lag protocol updates and feature coverage varies. Treat them as best-effort.",{"type":39,"tag":81,"props":975,"children":976},{},[977,982,984,989,991,996,998,1003,1004,1010,1011,1016,1018,1023],{"type":39,"tag":55,"props":978,"children":979},{},[980],{"type":44,"value":981},"The TS SDK has two client generations.",{"type":44,"value":983}," v1 used ",{"type":39,"tag":63,"props":985,"children":987},{"className":986},[],[988],{"type":44,"value":168},{"type":44,"value":990}," + ",{"type":39,"tag":63,"props":992,"children":994},{"className":993},[],[995],{"type":44,"value":122},{"type":44,"value":997},". v2 uses ",{"type":39,"tag":63,"props":999,"children":1001},{"className":1000},[],[1002],{"type":44,"value":160},{"type":44,"value":337},{"type":39,"tag":63,"props":1005,"children":1007},{"className":1006},[],[1008],{"type":44,"value":1009},"SuiJsonRpcClient",{"type":44,"value":337},{"type":39,"tag":63,"props":1012,"children":1014},{"className":1013},[],[1015],{"type":44,"value":343},{"type":44,"value":1017}," from ",{"type":39,"tag":63,"props":1019,"children":1021},{"className":1020},[],[1022],{"type":44,"value":96},{"type":44,"value":1024},". JSON-RPC is deprecated; gRPC is the default for new code.",{"type":39,"tag":81,"props":1026,"children":1027},{},[1028,1033,1035,1040,1041,1046,1047,1052,1053,1058,1060,1065],{"type":39,"tag":55,"props":1029,"children":1030},{},[1031],{"type":44,"value":1032},"The Rust SDK has two generations.",{"type":44,"value":1034}," The new modular crates (",{"type":39,"tag":63,"props":1036,"children":1038},{"className":1037},[],[1039],{"type":44,"value":429},{"type":44,"value":139},{"type":39,"tag":63,"props":1042,"children":1044},{"className":1043},[],[1045],{"type":44,"value":436},{"type":44,"value":139},{"type":39,"tag":63,"props":1048,"children":1050},{"className":1049},[],[1051],{"type":44,"value":443},{"type":44,"value":139},{"type":39,"tag":63,"props":1054,"children":1056},{"className":1055},[],[1057],{"type":44,"value":457},{"type":44,"value":1059},") are the recommended surface. The \"legacy Rust SDK\" is the monolithic ",{"type":39,"tag":63,"props":1061,"children":1063},{"className":1062},[],[1064],{"type":44,"value":415},{"type":44,"value":1066}," crate in the sui monorepo; it uses JSON-RPC (deprecated) and is not the recommended target for new code.",{"type":39,"tag":81,"props":1068,"children":1069},{},[1070,1082,1084,1090],{"type":39,"tag":55,"props":1071,"children":1072},{},[1073,1075,1080],{"type":44,"value":1074},"Every ",{"type":39,"tag":63,"props":1076,"children":1078},{"className":1077},[],[1079],{"type":44,"value":186},{"type":44,"value":1081}," package ships LLM-ready docs.",{"type":44,"value":1083}," Look for ",{"type":39,"tag":63,"props":1085,"children":1087},{"className":1086},[],[1088],{"type":44,"value":1089},"node_modules\u002F@mysten\u002Fsui\u002Fdocs\u002Fllms-index.md",{"type":44,"value":1091}," and follow its pointers before asking the user to clarify APIs. Matches the installed version exactly.",{"type":39,"tag":81,"props":1093,"children":1094},{},[1095,1100,1101,1107,1109,1115,1117,1123,1124,1130,1131,1137,1138,1144,1145,1151,1152,1158,1159,1165,1167,1172,1174,1180,1182,1187,1189,1195],{"type":39,"tag":55,"props":1096,"children":1097},{},[1098],{"type":44,"value":1099},"Frameworks on top of SDKs.",{"type":44,"value":310},{"type":39,"tag":63,"props":1102,"children":1104},{"className":1103},[],[1105],{"type":44,"value":1106},"@mysten\u002Fdapp-kit-react",{"type":44,"value":1108}," (React wallet integration; ",{"type":39,"tag":63,"props":1110,"children":1112},{"className":1111},[],[1113],{"type":44,"value":1114},"@mysten\u002Fdapp-kit-core",{"type":44,"value":1116}," for Vue\u002Fvanilla\u002FSvelte\u002FWeb Components), ",{"type":39,"tag":63,"props":1118,"children":1120},{"className":1119},[],[1121],{"type":44,"value":1122},"@mysten\u002Fkiosk",{"type":44,"value":139},{"type":39,"tag":63,"props":1125,"children":1127},{"className":1126},[],[1128],{"type":44,"value":1129},"@mysten\u002Fsuins",{"type":44,"value":139},{"type":39,"tag":63,"props":1132,"children":1134},{"className":1133},[],[1135],{"type":44,"value":1136},"@mysten\u002Fdeepbook-v3",{"type":44,"value":139},{"type":39,"tag":63,"props":1139,"children":1141},{"className":1140},[],[1142],{"type":44,"value":1143},"@mysten\u002Fwalrus",{"type":44,"value":139},{"type":39,"tag":63,"props":1146,"children":1148},{"className":1147},[],[1149],{"type":44,"value":1150},"@mysten\u002Fseal",{"type":44,"value":139},{"type":39,"tag":63,"props":1153,"children":1155},{"className":1154},[],[1156],{"type":44,"value":1157},"@mysten\u002Fzksend",{"type":44,"value":139},{"type":39,"tag":63,"props":1160,"children":1162},{"className":1161},[],[1163],{"type":44,"value":1164},"@mysten\u002Fenoki",{"type":44,"value":1166}," — all are thin layers over ",{"type":39,"tag":63,"props":1168,"children":1170},{"className":1169},[],[1171],{"type":44,"value":96},{"type":44,"value":1173},". The Mysten extensions integrate via the v2 ",{"type":39,"tag":63,"props":1175,"children":1177},{"className":1176},[],[1178],{"type":44,"value":1179},"client.$extend(...)",{"type":44,"value":1181}," pattern; dApp Kit does not (it's a React framework, not a client extension — see ",{"type":39,"tag":63,"props":1183,"children":1185},{"className":1184},[],[1186],{"type":44,"value":787},{"type":44,"value":1188}," skill). The bare ",{"type":39,"tag":63,"props":1190,"children":1192},{"className":1191},[],[1193],{"type":44,"value":1194},"@mysten\u002Fdapp-kit",{"type":44,"value":1196}," package name is the deprecated JSON-RPC-only predecessor.",{"type":39,"tag":288,"props":1198,"children":1200},{"id":1199},"rules",[1201],{"type":44,"value":1202},"Rules",{"type":39,"tag":77,"props":1204,"children":1205},{},[1206,1258,1290,1327,1375,1399,1452,1462,1503,1534],{"type":39,"tag":81,"props":1207,"children":1208},{},[1209,1214,1216,1221,1223,1228,1230,1235,1237,1242,1244,1249,1251,1256],{"type":39,"tag":55,"props":1210,"children":1211},{},[1212],{"type":44,"value":1213},"Default to TypeScript or Rust, but respect language constraints.",{"type":44,"value":1215}," For any new Sui project, recommend TypeScript (",{"type":39,"tag":63,"props":1217,"children":1219},{"className":1218},[],[1220],{"type":44,"value":96},{"type":44,"value":1222},") or Rust (",{"type":39,"tag":63,"props":1224,"children":1226},{"className":1225},[],[1227],{"type":44,"value":104},{"type":44,"value":1229}," crates) — unless the user has named a language (Go, Python, Dart, Kotlin, Swift, Vue) or said \"my team uses X\". Then ",{"type":39,"tag":63,"props":1231,"children":1233},{"className":1232},[],[1234],{"type":44,"value":523},{"type":44,"value":1236}," is the load: name the canonical community SDK (",{"type":39,"tag":63,"props":1238,"children":1240},{"className":1239},[],[1241],{"type":44,"value":939},{"type":44,"value":1243}," for Go, ",{"type":39,"tag":63,"props":1245,"children":1247},{"className":1246},[],[1248],{"type":44,"value":931},{"type":44,"value":1250}," for Python, etc.), flag the staleness risk, and offer FFI-to-Rust as a fallback. ",{"type":39,"tag":55,"props":1252,"children":1253},{},[1254],{"type":44,"value":1255},"Do not recommend TypeScript or Rust as a replacement language",{"type":44,"value":1257}," when the user has stated their team's language. For example, if the user says \"my team uses Go\", do not suggest rewriting in TypeScript — recommend the Go community SDK and\u002For Rust via FFI.",{"type":39,"tag":81,"props":1259,"children":1260},{},[1261,1280,1282,1288],{"type":39,"tag":55,"props":1262,"children":1263},{},[1264,1266,1271,1273,1278],{"type":44,"value":1265},"For TypeScript, always use ",{"type":39,"tag":63,"props":1267,"children":1269},{"className":1268},[],[1270],{"type":44,"value":96},{"type":44,"value":1272},", never ",{"type":39,"tag":63,"props":1274,"children":1276},{"className":1275},[],[1277],{"type":44,"value":122},{"type":44,"value":1279},".",{"type":44,"value":1281}," The ",{"type":39,"tag":63,"props":1283,"children":1285},{"className":1284},[],[1286],{"type":44,"value":1287},".js",{"type":44,"value":1289},"-suffixed package is frozen at v1 and will not receive updates. Legacy code using it should be migrated.",{"type":39,"tag":81,"props":1291,"children":1292},{},[1293,1305,1306,1311,1313,1318,1320,1325],{"type":39,"tag":55,"props":1294,"children":1295},{},[1296,1298,1303],{"type":44,"value":1297},"For TypeScript v2, use ",{"type":39,"tag":63,"props":1299,"children":1301},{"className":1300},[],[1302],{"type":44,"value":160},{"type":44,"value":1304}," by default.",{"type":44,"value":310},{"type":39,"tag":63,"props":1307,"children":1309},{"className":1308},[],[1310],{"type":44,"value":1009},{"type":44,"value":1312}," exists for legacy compatibility but JSON-RPC is deprecated; ",{"type":39,"tag":63,"props":1314,"children":1316},{"className":1315},[],[1317],{"type":44,"value":343},{"type":44,"value":1319}," is for specialized relational query flows. See ",{"type":39,"tag":63,"props":1321,"children":1323},{"className":1322},[],[1324],{"type":44,"value":316},{"type":44,"value":1326}," for the decision.",{"type":39,"tag":81,"props":1328,"children":1329},{},[1330,1348,1350,1355,1356,1361,1362,1367,1368,1373],{"type":39,"tag":55,"props":1331,"children":1332},{},[1333,1335,1340,1342,1347],{"type":44,"value":1334},"For Rust, prefer ",{"type":39,"tag":63,"props":1336,"children":1338},{"className":1337},[],[1339],{"type":44,"value":104},{"type":44,"value":1341}," crates over the legacy monorepo ",{"type":39,"tag":63,"props":1343,"children":1345},{"className":1344},[],[1346],{"type":44,"value":415},{"type":44,"value":1279},{"type":44,"value":1349}," Import ",{"type":39,"tag":63,"props":1351,"children":1353},{"className":1352},[],[1354],{"type":44,"value":457},{"type":44,"value":139},{"type":39,"tag":63,"props":1357,"children":1359},{"className":1358},[],[1360],{"type":44,"value":429},{"type":44,"value":139},{"type":39,"tag":63,"props":1363,"children":1365},{"className":1364},[],[1366],{"type":44,"value":436},{"type":44,"value":139},{"type":39,"tag":63,"props":1369,"children":1371},{"className":1370},[],[1372],{"type":44,"value":443},{"type":44,"value":1374}," individually — pay only for what you use.",{"type":39,"tag":81,"props":1376,"children":1377},{},[1378,1390,1392,1397],{"type":39,"tag":55,"props":1379,"children":1380},{},[1381,1383,1388],{"type":44,"value":1382},"Check ",{"type":39,"tag":63,"props":1384,"children":1386},{"className":1385},[],[1387],{"type":44,"value":599},{"type":44,"value":1389}," before writing TS code.",{"type":44,"value":1391}," If the project has ",{"type":39,"tag":63,"props":1393,"children":1395},{"className":1394},[],[1396],{"type":44,"value":96},{"type":44,"value":1398}," installed, those docs are the authoritative, version-matched source. Read the index, then the targeted page.",{"type":39,"tag":81,"props":1400,"children":1401},{},[1402,1407,1409,1414,1415,1421,1422,1428,1429,1435,1436,1442,1444,1450],{"type":39,"tag":55,"props":1403,"children":1404},{},[1405],{"type":44,"value":1406},"Do not mix v1 and v2 TS patterns.",{"type":44,"value":1408}," Code that uses ",{"type":39,"tag":63,"props":1410,"children":1412},{"className":1411},[],[1413],{"type":44,"value":168},{"type":44,"value":139},{"type":39,"tag":63,"props":1416,"children":1418},{"className":1417},[],[1419],{"type":44,"value":1420},"TransactionBlock",{"type":44,"value":139},{"type":39,"tag":63,"props":1423,"children":1425},{"className":1424},[],[1426],{"type":44,"value":1427},"getFullnodeUrl",{"type":44,"value":139},{"type":39,"tag":63,"props":1430,"children":1432},{"className":1431},[],[1433],{"type":44,"value":1434},"options: { showEffects }",{"type":44,"value":139},{"type":39,"tag":63,"props":1437,"children":1439},{"className":1438},[],[1440],{"type":44,"value":1441},"signAndExecuteTransactionBlock",{"type":44,"value":1443},", or ",{"type":39,"tag":63,"props":1445,"children":1447},{"className":1446},[],[1448],{"type":44,"value":1449},"result.effects?.status?.status",{"type":44,"value":1451}," is v1. Migrate wholesale or keep everything on v1 — a half-migrated file is a bug surface.",{"type":39,"tag":81,"props":1453,"children":1454},{},[1455,1460],{"type":39,"tag":55,"props":1456,"children":1457},{},[1458],{"type":44,"value":1459},"Community SDK caveat is mandatory.",{"type":44,"value":1461}," When recommending or using a community SDK, mention that it's community-maintained and may lag protocol updates. Check the repo's last commit and latest Sui version support before relying on it.",{"type":39,"tag":81,"props":1463,"children":1464},{},[1465,1478,1479,1485,1487,1493,1495,1501],{"type":39,"tag":55,"props":1466,"children":1467},{},[1468,1470,1476],{"type":44,"value":1469},"Frameworks integrate via ",{"type":39,"tag":63,"props":1471,"children":1473},{"className":1472},[],[1474],{"type":44,"value":1475},"$extend()",{"type":44,"value":1477}," in v2.",{"type":44,"value":310},{"type":39,"tag":63,"props":1480,"children":1482},{"className":1481},[],[1483],{"type":44,"value":1484},"client.$extend(suins(), deepbook({ address }))",{"type":44,"value":1486}," is the v2 pattern. Do not instantiate ",{"type":39,"tag":63,"props":1488,"children":1490},{"className":1489},[],[1491],{"type":44,"value":1492},"SuinsClient",{"type":44,"value":1494}," or ",{"type":39,"tag":63,"props":1496,"children":1498},{"className":1497},[],[1499],{"type":44,"value":1500},"DeepBookClient",{"type":44,"value":1502}," directly — that's the v1 style.",{"type":39,"tag":81,"props":1504,"children":1505},{},[1506,1518,1520,1525,1527,1532],{"type":39,"tag":55,"props":1507,"children":1508},{},[1509,1511,1516],{"type":44,"value":1510},"Route frontend questions to the ",{"type":39,"tag":63,"props":1512,"children":1514},{"className":1513},[],[1515],{"type":44,"value":787},{"type":44,"value":1517}," skill.",{"type":44,"value":1519}," When the user asks about React hooks, wallet connection, or dApp Kit query patterns, explicitly direct them to the ",{"type":39,"tag":63,"props":1521,"children":1523},{"className":1522},[],[1524],{"type":44,"value":787},{"type":44,"value":1526}," skill for hook-level details. This skill covers SDK selection and ",{"type":39,"tag":63,"props":1528,"children":1530},{"className":1529},[],[1531],{"type":44,"value":795},{"type":44,"value":1533}," construction only.",{"type":39,"tag":81,"props":1535,"children":1536},{},[1537,1542,1544,1550,1552,1558,1560,1566,1568,1574,1576,1582],{"type":39,"tag":55,"props":1538,"children":1539},{},[1540],{"type":44,"value":1541},"Cite the docs when unsure.",{"type":44,"value":1543}," Official TS SDK docs live at ",{"type":39,"tag":63,"props":1545,"children":1547},{"className":1546},[],[1548],{"type":44,"value":1549},"sdk.mystenlabs.com",{"type":44,"value":1551},". The inventory list lives at ",{"type":39,"tag":63,"props":1553,"children":1555},{"className":1554},[],[1556],{"type":44,"value":1557},"docs.sui.io\u002Freferences\u002Fsui-sdks",{"type":44,"value":1559},". Rust SDK docs live on ",{"type":39,"tag":63,"props":1561,"children":1563},{"className":1562},[],[1564],{"type":44,"value":1565},"docs.rs",{"type":44,"value":1567}," (per-crate) and ",{"type":39,"tag":63,"props":1569,"children":1571},{"className":1570},[],[1572],{"type":44,"value":1573},"mystenlabs.github.io\u002Fsui-rust-sdk\u002F\u003Ccrate_name>\u002F",{"type":44,"value":1575}," (e.g., ",{"type":39,"tag":63,"props":1577,"children":1579},{"className":1578},[],[1580],{"type":44,"value":1581},"\u002Fsui_transaction_builder\u002F",{"type":44,"value":1583},").",{"type":39,"tag":288,"props":1585,"children":1587},{"id":1586},"common-mistakes",[1588],{"type":44,"value":1589},"Common mistakes",{"type":39,"tag":211,"props":1591,"children":1592},{},[1593,1616,1647,1669,1720,1743,1760,1783,1820],{"type":39,"tag":81,"props":1594,"children":1595},{},[1596,1601,1603,1608,1609,1614],{"type":39,"tag":55,"props":1597,"children":1598},{},[1599],{"type":44,"value":1600},"Calling a community SDK \"the Python SDK\" or \"the Go SDK\" as if official.",{"type":44,"value":1602}," There is no official Python or Go SDK. Name the specific package (",{"type":39,"tag":63,"props":1604,"children":1606},{"className":1605},[],[1607],{"type":44,"value":931},{"type":44,"value":139},{"type":39,"tag":63,"props":1610,"children":1612},{"className":1611},[],[1613],{"type":44,"value":939},{"type":44,"value":1615},") and flag it as community.",{"type":39,"tag":81,"props":1617,"children":1618},{},[1619,1631,1633,1638,1640,1645],{"type":39,"tag":55,"props":1620,"children":1621},{},[1622,1624,1629],{"type":44,"value":1623},"Telling users ",{"type":39,"tag":63,"props":1625,"children":1627},{"className":1626},[],[1628],{"type":44,"value":168},{"type":44,"value":1630}," is the recommended client.",{"type":44,"value":1632}," That was v1. v2 uses ",{"type":39,"tag":63,"props":1634,"children":1636},{"className":1635},[],[1637],{"type":44,"value":160},{"type":44,"value":1639}," (or ",{"type":39,"tag":63,"props":1641,"children":1643},{"className":1642},[],[1644],{"type":44,"value":1009},{"type":44,"value":1646}," as a deprecated migration stopgap).",{"type":39,"tag":81,"props":1648,"children":1649},{},[1650,1661,1663,1668],{"type":39,"tag":55,"props":1651,"children":1652},{},[1653,1655,1660],{"type":44,"value":1654},"Recommending ",{"type":39,"tag":63,"props":1656,"children":1658},{"className":1657},[],[1659],{"type":44,"value":122},{"type":44,"value":1279},{"type":44,"value":1662}," Deprecated package name. Always ",{"type":39,"tag":63,"props":1664,"children":1666},{"className":1665},[],[1667],{"type":44,"value":96},{"type":44,"value":1279},{"type":39,"tag":81,"props":1670,"children":1671},{},[1672,1677,1679,1684,1686,1692,1694,1699,1700,1705,1706,1711,1713,1718],{"type":39,"tag":55,"props":1673,"children":1674},{},[1675],{"type":44,"value":1676},"Confusing the two Rust SDKs.",{"type":44,"value":1678}," The new ",{"type":39,"tag":63,"props":1680,"children":1682},{"className":1681},[],[1683],{"type":44,"value":104},{"type":44,"value":1685}," crates (on ",{"type":39,"tag":63,"props":1687,"children":1689},{"className":1688},[],[1690],{"type":44,"value":1691},"crates.io",{"type":44,"value":1693}," as separate crates like ",{"type":39,"tag":63,"props":1695,"children":1697},{"className":1696},[],[1698],{"type":44,"value":429},{"type":44,"value":337},{"type":39,"tag":63,"props":1701,"children":1703},{"className":1702},[],[1704],{"type":44,"value":457},{"type":44,"value":337},{"type":39,"tag":63,"props":1707,"children":1709},{"className":1708},[],[1710],{"type":44,"value":443},{"type":44,"value":1712},") are distinct from the legacy ",{"type":39,"tag":63,"props":1714,"children":1716},{"className":1715},[],[1717],{"type":44,"value":415},{"type":44,"value":1719}," crate in the sui monorepo. New code should use the former.",{"type":39,"tag":81,"props":1721,"children":1722},{},[1723,1728,1729,1734,1736,1741],{"type":39,"tag":55,"props":1724,"children":1725},{},[1726],{"type":44,"value":1727},"Fetching TS docs from the web when they're installed locally.",{"type":44,"value":1391},{"type":39,"tag":63,"props":1730,"children":1732},{"className":1731},[],[1733],{"type":44,"value":96},{"type":44,"value":1735}," installed, read ",{"type":39,"tag":63,"props":1737,"children":1739},{"className":1738},[],[1740],{"type":44,"value":1089},{"type":44,"value":1742}," instead — it matches the installed version.",{"type":39,"tag":81,"props":1744,"children":1745},{},[1746,1751,1753,1758],{"type":39,"tag":55,"props":1747,"children":1748},{},[1749],{"type":44,"value":1750},"Hardcoding a specific SDK version.",{"type":44,"value":1752}," SDK APIs evolve. Prefer \"install the latest ",{"type":39,"tag":63,"props":1754,"children":1756},{"className":1755},[],[1757],{"type":44,"value":96},{"type":44,"value":1759},"\" and then consult the bundled docs, rather than pinning advice to a version.",{"type":39,"tag":81,"props":1761,"children":1762},{},[1763,1774,1776,1781],{"type":39,"tag":55,"props":1764,"children":1765},{},[1766,1767,1772],{"type":44,"value":1654},{"type":39,"tag":63,"props":1768,"children":1770},{"className":1769},[],[1771],{"type":44,"value":1194},{"type":44,"value":1773}," for backend code.",{"type":44,"value":1775}," dApp Kit is a React-oriented frontend framework. Backend or CLI code should use ",{"type":39,"tag":63,"props":1777,"children":1779},{"className":1778},[],[1780],{"type":44,"value":96},{"type":44,"value":1782}," directly.",{"type":39,"tag":81,"props":1784,"children":1785},{},[1786,1797,1799,1804,1806,1811,1813,1818],{"type":39,"tag":55,"props":1787,"children":1788},{},[1789,1791,1796],{"type":44,"value":1790},"Providing React hook details instead of routing to the ",{"type":39,"tag":63,"props":1792,"children":1794},{"className":1793},[],[1795],{"type":44,"value":787},{"type":44,"value":1517},{"type":44,"value":1798}," When a user asks about React hooks, wallet connection patterns, or dApp Kit query patterns, do not answer with hook-level code from this skill. Instead, explicitly tell the user: \"For React hook details, see the ",{"type":39,"tag":63,"props":1800,"children":1802},{"className":1801},[],[1803],{"type":44,"value":787},{"type":44,"value":1805}," skill.\" This skill covers SDK selection and ",{"type":39,"tag":63,"props":1807,"children":1809},{"className":1808},[],[1810],{"type":44,"value":795},{"type":44,"value":1812}," construction only — the ",{"type":39,"tag":63,"props":1814,"children":1816},{"className":1815},[],[1817],{"type":44,"value":787},{"type":44,"value":1819}," skill has the hook-level guidance.",{"type":39,"tag":81,"props":1821,"children":1822},{},[1823,1828,1830,1835],{"type":39,"tag":55,"props":1824,"children":1825},{},[1826],{"type":44,"value":1827},"Using JSON-RPC as the default for any client.",{"type":44,"value":1829}," JSON-RPC is deprecated; Sui Foundation mainnet full nodes will disable it the week of July 27, 2026. Default to gRPC (or GraphQL for relational queries). ",{"type":39,"tag":63,"props":1831,"children":1833},{"className":1832},[],[1834],{"type":44,"value":1009},{"type":44,"value":1836}," still exists for migration but should not be the default.",{"items":1838,"total":1941},[1839,1852,1865,1885,1899,1912,1928],{"slug":835,"name":835,"fn":1840,"description":1841,"org":1842,"tags":1843,"stars":22,"repoUrl":23,"updatedAt":1851},"read data from the Sui network","How to read data from the Sui network. Use when choosing or implementing a data access strategy — queries for on-chain state, indexing pipelines, historical lookups, event subscriptions, cross-chain reads, or off-chain blob storage. Covers the two live Sui APIs (gRPC and GraphQL RPC), the Archival Store, the General-Purpose Indexer, the `sui-indexer-alt` custom indexing framework, and Walrus for off-chain blobs.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1844,1847,1848],{"name":1845,"slug":1846,"type":15},"Data Analysis","data-analysis",{"name":14,"slug":8,"type":15},{"name":1849,"slug":1850,"type":15},"Web3","web3","2026-08-01T05:44:32.775598",{"slug":1853,"name":1853,"fn":1854,"description":1855,"org":1856,"tags":1857,"stars":22,"repoUrl":23,"updatedAt":1864},"composable-move-functions","design composable Sui Move functions","Use when writing Move functions on Sui, especially public APIs. Applies to function visibility (public vs entry), parameter ordering, and return patterns. Use whenever designing function signatures or deciding whether functions should transfer objects or return them.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1858,1859,1862,1863],{"name":17,"slug":18,"type":15},{"name":1860,"slug":1861,"type":15},"Smart Contracts","smart-contracts",{"name":14,"slug":8,"type":15},{"name":1849,"slug":1850,"type":15},"2026-07-16T06:02:49.198495",{"slug":787,"name":787,"fn":1866,"description":1867,"org":1868,"tags":1869,"stars":22,"repoUrl":23,"updatedAt":1884},"build Sui dApps with dapp-kit","Sui frontend \u002F dApp development with @mysten\u002Fdapp-kit-react (React) and @mysten\u002Fdapp-kit-core (Vue, vanilla JS, Svelte, Web Components, other frameworks). Use when building browser apps that connect Sui wallets, query on-chain state, or submit transactions. Covers wallet connection, network switching, transaction execution, query patterns with TanStack React Query, and the specific pitfalls of browser + wallet + async-indexer environments. Pair with the `sui-sdks` skill for @mysten\u002Fsui Transaction construction patterns and the `ptbs` skill for PTB semantics.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1870,1873,1876,1877,1880,1883],{"name":1871,"slug":1872,"type":15},"Frontend","frontend",{"name":1874,"slug":1875,"type":15},"React","react",{"name":14,"slug":8,"type":15},{"name":1878,"slug":1879,"type":15},"Svelte","svelte",{"name":1881,"slug":1882,"type":15},"Vue","vue",{"name":1849,"slug":1850,"type":15},"2026-08-01T05:44:28.958473",{"slug":1886,"name":1886,"fn":1887,"description":1888,"org":1889,"tags":1890,"stars":22,"repoUrl":23,"updatedAt":1898},"generate-sui-agent-config","generate configuration files for Sui projects","Generate a CLAUDE.md or AGENT.md configuration file for Sui projects. Use when setting up a new Sui project, when user mentions \"CLAUDE.md\", \"AGENT.md\", \"agent config\", or when working on a Sui project that does not already have a CLAUDE.md or AGENT.md in the project root.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1891,1894,1897],{"name":1892,"slug":1893,"type":15},"Configuration","configuration",{"name":1895,"slug":1896,"type":15},"Documentation","documentation",{"name":14,"slug":8,"type":15},"2026-07-16T06:00:59.981056",{"slug":1900,"name":1900,"fn":1901,"description":1902,"org":1903,"tags":1904,"stars":22,"repoUrl":23,"updatedAt":1911},"modern-move-syntax","write Move 2024 edition code for Sui","Use when writing Move code on Sui to ensure 2024 edition syntax is used. Applies to method calls, string literals, vector operations, option handling, loops, and struct unpacking. Use whenever writing Move code to avoid legacy function-call syntax patterns.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1905,1908,1909,1910],{"name":1906,"slug":1907,"type":15},"Engineering","engineering",{"name":1860,"slug":1861,"type":15},{"name":14,"slug":8,"type":15},{"name":1849,"slug":1850,"type":15},"2026-07-16T06:02:43.277596",{"slug":1913,"name":1913,"fn":1914,"description":1915,"org":1916,"tags":1917,"stars":22,"repoUrl":23,"updatedAt":1927},"move-unit-testing","write unit tests for Sui Move contracts","Use when writing unit tests for Move smart contracts on Sui. Applies to test function naming, assertions, test attributes, context usage, and cleanup patterns. Use whenever user asks to write tests, add tests, or test a Move module.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1918,1921,1922,1923,1926],{"name":1919,"slug":1920,"type":15},"QA","qa",{"name":1860,"slug":1861,"type":15},{"name":14,"slug":8,"type":15},{"name":1924,"slug":1925,"type":15},"Testing","testing",{"name":1849,"slug":1850,"type":15},"2026-08-01T05:44:30.788585",{"slug":1929,"name":1929,"fn":1930,"description":1931,"org":1932,"tags":1933,"stars":22,"repoUrl":23,"updatedAt":1940},"naming-conventions","apply Sui Move naming conventions","Use when writing or reviewing Move smart contracts on Sui. Applies to naming structs, error constants, regular constants, events, getter functions, capability types, hot potato types, and dynamic field keys. Use whenever creating new types, functions, or constants in Move code.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1934,1937,1938,1939],{"name":1935,"slug":1936,"type":15},"Best Practices","best-practices",{"name":1860,"slug":1861,"type":15},{"name":14,"slug":8,"type":15},{"name":1849,"slug":1850,"type":15},"2026-07-16T06:02:48.830052",20,{"items":1943,"total":2058},[1944,1958,1967,1977,1992,2008,2014,2021,2030,2036,2043,2051],{"slug":1945,"name":1945,"fn":1946,"description":1947,"org":1948,"tags":1949,"stars":1955,"repoUrl":1956,"updatedAt":1957},"move-bytecode-comprehension","analyze and disassemble Move bytecode","Use when reading or reasoning about compiled Move bytecode or `sui move disassemble` output. Mental model for the binary format, what survives compilation (and what's lost), and how to read disassembly soundly. Trigger on \"what does this package do?\", \"read this .mv module\", \"interpret this disassembly\", or whenever an analysis needs to interpret bytecode faithfully.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1950,1953,1954],{"name":1951,"slug":1952,"type":15},"Code Analysis","code-analysis",{"name":1906,"slug":1907,"type":15},{"name":14,"slug":8,"type":15},7724,"https:\u002F\u002Fgithub.com\u002FMystenLabs\u002Fsui","2026-07-16T05:59:32.904886",{"slug":1959,"name":1959,"fn":1960,"description":1961,"org":1962,"tags":1963,"stars":1955,"repoUrl":1956,"updatedAt":1966},"official-sui-skills","access official Sui development resources","Pointer to the official Mysten Labs skills for building on Sui — language fundamentals, object model, PTBs, SDKs, publishing, upgrades, frontend integration, accessing on-chain data. Maintained upstream at github.com\u002FMystenLabs\u002Fskills; pinned to the same ref the audit catalog derives from (see maintenance\u002FUPSTREAMS.md). Trigger on \"build a contract\", \"publish a package\", \"upgrade a module or package\", \"use the TypeScript SDK\", \"write a PTB\", \"set up a Sui client\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1964,1965],{"name":1895,"slug":1896,"type":15},{"name":14,"slug":8,"type":15},"2026-07-16T06:00:59.641382",{"slug":1968,"name":1968,"fn":1969,"description":1970,"org":1971,"tags":1972,"stars":1955,"repoUrl":1956,"updatedAt":1976},"sui-and-move-tools","disassemble Sui Move bytecode","Use to get bytecode for a deployed Sui package and produce a disassembled working view. One GraphQL call fetches every module's raw bytecode bytes; `sui move disassemble` (already on the system, running `sui prompt`) produces `.asm` files for analysis. Trigger on \"fetch this package's bytecode\", \"get me the .mv for package X\", \"disassemble this package\", or \"I need to read a deployed Sui package\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1973,1974,1975],{"name":1951,"slug":1952,"type":15},{"name":1906,"slug":1907,"type":15},{"name":14,"slug":8,"type":15},"2026-07-16T06:02:25.3633",{"slug":1978,"name":1978,"fn":1979,"description":1980,"org":1981,"tags":1982,"stars":1955,"repoUrl":1956,"updatedAt":1991},"sui-move-security-review","audit Sui Move smart contracts","Use when auditing, reviewing, or hunting for vulnerabilities in Move code on Sui. Applies equally to source code (.move files) and to disassembly of compiled bytecode (on-chain packages). A checklist of invariants whose VIOLATION causes exploitable bugs: access control & capabilities, struct abilities & type safety, object lifecycle & ownership, shared-object and PTB attack surface, dynamic fields & collections, arithmetic & coins, init\u002FOTW\u002Fpackage upgrades, hot-potato composability, time & on-chain randomness, and test-only code leakage. Trigger on \"audit this Move code\", \"find vulnerabilities in this Sui contract\", \"security review\", \"is this package safe?\", \"I suspect there's a bug in X\", \"something is wrong with this contract\", or when reasoning about whether a Move function can be abused.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1983,1986,1989,1990],{"name":1984,"slug":1985,"type":15},"Code Review","code-review",{"name":1987,"slug":1988,"type":15},"Security","security",{"name":1860,"slug":1861,"type":15},{"name":14,"slug":8,"type":15},"2026-07-16T06:02:55.691149",{"slug":1993,"name":1993,"fn":1994,"description":1995,"org":1996,"tags":1997,"stars":2005,"repoUrl":2006,"updatedAt":2007},"memwal","integrate Walrus Memory SDK","Walrus Memory SDK — portable agent memory that works across apps, sessions, and workflows.\n\nUse when users say:\n- \"add memory to my app\"\n- \"portable agent memory\"\n- \"integrate Walrus Memory\"\n- \"AI agent memory\"\n- \"memory across agents\"\n- \"Walrus memory storage\"\n- \"setup Walrus Memory\"\n- \"recall memories\"\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1998,2001,2004],{"name":1999,"slug":2000,"type":15},"Agents","agents",{"name":2002,"slug":2003,"type":15},"Memory","memory",{"name":20,"slug":21,"type":15},57,"https:\u002F\u002Fgithub.com\u002FMystenLabs\u002FMemWal","2026-07-16T06:02:39.838395",{"slug":835,"name":835,"fn":1840,"description":1841,"org":2009,"tags":2010,"stars":22,"repoUrl":23,"updatedAt":1851},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2011,2012,2013],{"name":1845,"slug":1846,"type":15},{"name":14,"slug":8,"type":15},{"name":1849,"slug":1850,"type":15},{"slug":1853,"name":1853,"fn":1854,"description":1855,"org":2015,"tags":2016,"stars":22,"repoUrl":23,"updatedAt":1864},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2017,2018,2019,2020],{"name":17,"slug":18,"type":15},{"name":1860,"slug":1861,"type":15},{"name":14,"slug":8,"type":15},{"name":1849,"slug":1850,"type":15},{"slug":787,"name":787,"fn":1866,"description":1867,"org":2022,"tags":2023,"stars":22,"repoUrl":23,"updatedAt":1884},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2024,2025,2026,2027,2028,2029],{"name":1871,"slug":1872,"type":15},{"name":1874,"slug":1875,"type":15},{"name":14,"slug":8,"type":15},{"name":1878,"slug":1879,"type":15},{"name":1881,"slug":1882,"type":15},{"name":1849,"slug":1850,"type":15},{"slug":1886,"name":1886,"fn":1887,"description":1888,"org":2031,"tags":2032,"stars":22,"repoUrl":23,"updatedAt":1898},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2033,2034,2035],{"name":1892,"slug":1893,"type":15},{"name":1895,"slug":1896,"type":15},{"name":14,"slug":8,"type":15},{"slug":1900,"name":1900,"fn":1901,"description":1902,"org":2037,"tags":2038,"stars":22,"repoUrl":23,"updatedAt":1911},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2039,2040,2041,2042],{"name":1906,"slug":1907,"type":15},{"name":1860,"slug":1861,"type":15},{"name":14,"slug":8,"type":15},{"name":1849,"slug":1850,"type":15},{"slug":1913,"name":1913,"fn":1914,"description":1915,"org":2044,"tags":2045,"stars":22,"repoUrl":23,"updatedAt":1927},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2046,2047,2048,2049,2050],{"name":1919,"slug":1920,"type":15},{"name":1860,"slug":1861,"type":15},{"name":14,"slug":8,"type":15},{"name":1924,"slug":1925,"type":15},{"name":1849,"slug":1850,"type":15},{"slug":1929,"name":1929,"fn":1930,"description":1931,"org":2052,"tags":2053,"stars":22,"repoUrl":23,"updatedAt":1940},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2054,2055,2056,2057],{"name":1935,"slug":1936,"type":15},{"name":1860,"slug":1861,"type":15},{"name":14,"slug":8,"type":15},{"name":1849,"slug":1850,"type":15},37]