SKILL.md
Sails Feature Workflow
Goal
Keep feature work inside an existing Sails repo on an explicit sequence instead of skipping straight to code edits or bypassing the typed client path.
If the request targets a released contract, a new deployed contract version, or V1->V2 evolution, route through ../sails-program-evolution/SKILL.md before normal implementation work continues.
Required Sequence
- Clarify the feature in
docs/plans/YYYY-MM-DD-<topic>-spec.mdwithidea-to-specand../../assets/spec-template.md. - Plan architecture or public interface in
...-architecture.mdwith../sails-architecture/SKILL.mdand../../assets/architecture-template.md. - If the work targets a released contract, introduces a new deployed version, requires cutover planning, or prepares V1->V2 migration, review
../sails-program-evolution/SKILL.mdbefore task breakdown and coding. - If the feature needs API selection across
gstd, review../gear-gstd-api-map/SKILL.mdbefore coding. - If the feature changes async behavior, replies, delays, reservations, or waitlist semantics, review
../gear-message-execution/SKILL.mdbefore coding. - Break the work into tasks in
...-tasks.mdwithtask-decomposerand../../assets/task-plan-template.md. - If the feature introduces a fungible token, mint/burn roles, token-backed accounting, or native-value exchange, review
../awesome-sails-vft/SKILL.mdbefore coding. - Implement the Rust changes through
sails-rust-implementer. - If the public interface changed, refresh the
.idland regenerate the typed client through the repo's standardbuild.rspath first. For dedicated Rust client crates, prefer thesails-rsbuild-helper path before a manual generator pipeline. - Run
gtestthrough../sails-gtest/SKILL.md. - Run smoke validation only after green
gtest, using../sails-local-smoke/SKILL.md.
Sponsored UX Cases
- If the feature includes gasless or signless UX, see
../../references/voucher-and-signless-flows.mdfor the canonical builder recipes, lifecycle, and failure modes. Define the voucher or session flow in the spec and architecture.
References
../../references/vara-domain-overview.md../../references/sails-cheatsheet.md../../references/gtest-cheatsheet.md../../references/gear-execution-model.md../../references/gear-messaging-and-replies.md../../references/sails-gtest-and-local-validation.md../../references/contract-interface-evolution.md../../references/voucher-and-signless-flows.md../../references/sails-idl-v2-syntax.md— IDL v2 annotations for.idlfiles../../references/sails-header-wire-format.md— interface ID stability for change classification
Guardrails
- Do not skip the document chain for “small” features.
- Do not bypass the generated client path with raw payload encoders, hand-built SCALE payloads, or EVM-style bindings.
- Do not claim completion before
gtestis green and documented. - Do not treat local-node smoke as a substitute for
gtest. - Do not treat released-contract evolution, cutover, or V1->V2 migration as ordinary feature work without routing through the program-evolution flow.