skills/sails-rust-implementer/SKILL.md
Use when approved Gear or Vara tasks require Rust or Sails code changes in a real workspace. Do not use when the spec or architecture is still unsettled, or when the task is only review or deployment.
npx skillsauth add gear-foundation/vara-skills sails-rust-implementerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Implement approved tasks in Sails-first Rust workspaces without freelancing new scope. If the task touches a released contract, preserve public routes, reply shapes, emitted events, and generated-client expectations unless the approved architecture explicitly changes them.
../../references/sails-cheatsheet.md — core Sails patterns and APIs../../references/sails-rs-imports.md — import paths for sails-rs types../../references/delayed-message-pattern.md — delayed self-message recipe../../references/vara-domain-overview.md — Vara domain context../../references/gear-sails-production-patterns.md — production patterns../../references/gear-messaging-and-replies.md — messaging and reply flows../../references/gear-gas-reservations-and-waitlist.md — gas and waitlist../../references/sails-syscall-mapping.md — Syscall::* API mapping (use instead of raw gcore::*/msg::*/exec::*)Additional references by task type:
../../references/awesome-sails-token-patterns.md../../references/contract-interface-evolution.mdConsume the approved spec, architecture, and tasks artifacts before changing code.
If the target crate explicitly builds an ethexe path, stop and hand back to a dedicated ethexe workflow instead of extending this standard Sails pack.
#[export], events use emit_event, and shared types use #[sails_type] (expands to Encode + Decode + TypeInfo + ReflectHash with correct crate paths). Prefer #[sails_type] over manual derives for all service types, command/query params, and event payloads. Use #[sails_type(crate = my_crate)] when re-exporting from a different crate.Syscall::message_source() == Syscall::program_id() guard pattern instead of ad hoc routing bytes.Syscall::gas_available() for remaining-gas checks in execution paths.Syscall::* for all runtime accessors instead of raw gcore::*, msg::*, or exec::* calls. Full mapping: ../../references/sails-syscall-mapping.md (listed in Inputs).ReadOnly or write-disable handling.#[export] UsageAll public service methods must be annotated with #[export]. For standard (non-ethexe) Sails apps, no transport flags are needed — #[export] enables SCALE transport by default. Transport flags (scale, ethabi, payable) are ethexe-specific; see the sails-ethexe-implementer skill for details.
development
Use when approved tasks require Rust code changes in a Sails ethexe workspace with the ethexe feature enabled. Do not use for standard Gear/Vara Sails apps without ethexe, or when the spec or architecture is still unsettled.
development
Use when a builder needs to design or review architecture for a Sails ethexe app with dual-transport, payable methods, Solidity interface generation, or Ethereum-style events. Do not use for standard Gear/Vara Sails apps without ethexe.
development
Use when a builder needs to design or debug calls from a standard Gear/Vara Sails program into runtime builtin actors such as BLS12-381, staking, proxy, or ETH bridge, including ActorId derivation, request encoding, reply decoding, and gas or ED budgeting. Do not use for regular program-to-program messaging, Vara.eth or ethexe-only work, non-Sails repositories, or runtime-maintenance tasks inside the Gear repo.
development
Use when a builder needs a read-side indexer and query API for a standard Gear/Vara Sails app using program events, IDL-driven decoding, projected read models, and optional on-chain query enrichment. Do not use for command-side backends, generic Node APIs, non-Sails repositories, Vara.eth or ethexe-first work.