ship-sails-app
Skill17 starsChanged 7 months agoMITView on GitHub
Use when a builder needs the top-level router for a standard Gear/Vara Sails app workflow from spec through gtest and local smoke. Routes ethexe-specific work to dedicated ethexe skills. Do not use for raw gstd-only programs or non-Sails tasks.
We split this skill into the rules it gives an agent
14 rules. About 0 are common, 4 are distinctive, and 10 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
10
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 26
If output shows UPGRADE_AVAILABLE <old> <new>: read ../vara-skills-upgrade/SKILL.md and follow the "Inline upgrade flow" (auto-upgrade if …
- Distinctive: line 32
Use this as the first stop for the provisional Sails-builder pack.
- Very specific: line 49
Start with Sails for standard Vara work, not raw low-level gstd.
- Very specific: line 53
Treat direct sails-client-gen-v2 and sails-idl-gen wiring as a manual pipeline for explicitly non-standard repo layouts.
- Very specific: line 57
Treat the program .idl as the source of truth.
- Very specific: line 59
If shared DTO derives or event derives start failing in a standard Sails crate, check the #[codec(crate = sails_rs::scale_codec)] and …
- Very specific: line 62
If the flow checks remaining execution budget, use Syscall::gas_available().
- Very specific: line 65
Check the repo's build.rs before inventing manual generation commands.
- Very specific: line 81
No repo or greenfield workspace request: ../sails-new-app/SKILL.md
- Very specific: line 96
Keep the builder on this document chain inside docs/plans/:
- Distinctive: line 100
Use shared templates from:
- Distinctive: line 114
Treat this as a candidate first-wave catalog, not a frozen public taxonomy.
- Distinctive: line 115
Keep the flow standard Gear/Vara Sails only.
- Very specific: line 116
If the task jumps straight to deployment or a live network without green gtest, redirect to testing first.
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Preamble (run first)
_VS_DIR=""
for _d in \
"${VARA_SKILLS_DIR:-}" \
"$HOME/.claude/skills/vara-skills" \
".claude/skills/vara-skills" \
"$HOME"/.claude/plugins/cache/vara-skills/vara-skills/*; do
if [ -n "$_d" ] && [ -f "$_d/bin/vara-skills-update-check" ]; then
_VS_DIR="$_d"; break
fi
done
if [ -n "$_VS_DIR" ]; then
export VARA_SKILLS_DIR="$_VS_DIR"
_UPD=$("$_VS_DIR/bin/vara-skills-update-check" 2>/dev/null || true)
[ -n "$_UPD" ] && echo "$_UPD" || true
fiIf output shows UPGRADE_AVAILABLE <old> <new>: read ../vara-skills-upgrade/SKILL.md and follow the "Inline upgrade flow" (auto-upgrade if configured, otherwise ask user with 3 options, write snooze if declined). If JUST_UPGRADED <from> <to>: tell user "Running vara-skills v{to} (upgraded from v{from})!" and continue.
Ship Sails App
Role
Use this as the first stop for the provisional Sails-builder pack. Route the builder by repo state and next required artifact, then hand off to the narrower skill.
Local Handbook
../../references/gear-execution-model.md../../references/gear-messaging-and-replies.md../../references/gear-gas-reservations-and-waitlist.md../../references/sails-rs-imports.md../../references/delayed-message-pattern.md../../references/sails-program-and-service-architecture.md../../references/sails-idl-client-pipeline.md../../references/sails-gtest-and-local-validation.md../../references/scale-binary-decoding-guide.md../../references/voucher-and-signless-flows.md
Standard Defaults
- Start with Sails for standard Vara work, not raw low-level
gstd. Usesails-rs 1.0.0as the current baseline unless the target repo already pins a different version. - In standard Sails repos,
cargo buildrunsbuild.rs: program or wasm crates usually callsails_rs::build_wasm(), while the repo may also emit.idland typed client outputs from that same build flow. - For dedicated Rust client crates, prefer
sails-rs = { version = "...", features = ["build"] }withsails_rs::build_client::<Program>(). - Treat direct
sails-client-gen-v2andsails-idl-genwiring as a manual pipeline for explicitly non-standard repo layouts. - In
#[program], public constructors returnSelf; name that constructor shape and the chosen state ownership pattern explicitly in planning artifacts. - In
#[service], only methods tagged with#[export]are public Sails routes. Event-producing paths should useemit_event. - Standard Vara account addresses are Substrate
SS58addresses, not Ethereum0xaddresses. Local tooling commonly uses Vara prefix137. - Treat the program
.idlas the source of truth. The normal JS or TS path issails-jsorsails-cliplusGearApi, generating outputs such aslib.tsand typed program or service classes. UseparseIdlonly for an explicitly dynamic runtime path. - For normal Sails constructor or service calls, generated clients or equivalent Sails Header-aware encoding are the default path; do not model the payload as a bare raw struct.
- If shared DTO derives or event derives start failing in a standard Sails crate, check the
#[codec(crate = sails_rs::scale_codec)]and#[scale_info(crate = sails_rs::scale_info)]pattern before deeper debugging. - Deferred work uses delayed messages measured in blocks. A program can send a delayed message to itself or another actor. If the flow needs gas to survive across blocks, use reserved gas or
ReservationId; reservation duration is bounded and is not a value top-up. - For delayed self-messages, use the named payload-plus-guard recipe in
../../references/delayed-message-pattern.mdinstead of inventing a one-off byte layout. - If the flow checks remaining execution budget, use
Syscall::gas_available(). - For gasless and signless UX patterns (vouchers, sessions, EZ-transactions), see
../../references/voucher-and-signless-flows.md. - For local validation, use dev accounts or user-provided
SS58addresses, keep seed phrases and private keys out of commit-ready examples, and do not invent program IDs, voucher IDs, or account addresses. - Check the repo's
build.rsbefore inventing manual generation commands. Prefer this order:sails_rs::build_client::<Program>()- explicit
sails_idl_gen::generate_idl_to_file::<Program>(...)plusClientGenerator::from_idl_path(...)
- For binary decoding questions, match the decoder to the source: generated client or
.idlfor standard Sails interface paths,ProgramMetadatafor full state, andstate.meta.wasmfor state-function output. Use plainDecode::<T>only when the bytes are known to be a bare SCALE payload.
Greenfield Bootstrap
- For a new Sails/Vara project from scratch, prefer the official template bootstrap:
cargo sails new <project-name>. - This creates the standard workspace layout with
app,client,src,tests, top-levelbuild.rs, and baseline Cargo wiring. - For an existing repository, follow the repo’s current layout instead of re-bootstrapping it through the CLI template.
Route By Situation
- Missing local Rust toolchains, Wasm targets,
cargo-sails, or thegearbinary:../sails-dev-env/SKILL.md - No repo or greenfield workspace request:
../sails-new-app/SKILL.md - Existing Sails repo with feature or behavior change:
../sails-feature-workflow/SKILL.md - Confusion about
#[program],#[service], state, or service boundaries:../sails-architecture/SKILL.md - Need to reason about replies, delays, timeouts, reservations, or waitlist behavior:
../gear-message-execution/SKILL.md - Broken
build.rs, missing IDL, or generated client drift:../sails-idl-client/SKILL.md - Need to author or debug
gtest:../sails-gtest/SKILL.md gtestis green and the next step is a typed live-node smoke run:../sails-local-smoke/SKILL.md- Need to add a fungible token or token-backed accounting layer with awesome-sails:
../awesome-sails-vft/SKILL.md - Need a frontend for a Sails app (new or existing project without one):
npx create-vara-app <name> --idl <idl-path>, then../sails-frontend/SKILL.mdfor customization - Need to extend or repair an existing React or TypeScript frontend:
../sails-frontend/SKILL.md - Raw hex, reply-byte ambiguity, event decoding confusion, or metadata-vs-IDL uncertainty:
../gear-message-execution/SKILL.md - Building for the ethexe feature (EVM-compatible Gear programs):
../sails-ethexe-architecture/SKILL.md(planning) or../sails-ethexe-implementer/SKILL.md(implementation)
Required Artifact Chain
Keep the builder on this document chain inside docs/plans/:
YYYY-MM-DD-<topic>-spec.md -> ...-architecture.md -> ...-tasks.md -> ...-gtest.md
Use shared templates from:
../../assets/spec-template.md../../assets/architecture-template.md../../assets/task-plan-template.md../../assets/gtest-report-template.md
Routing Reminder
- Route to the new-app path when the builder is starting from scratch.
- Mention later architecture,
gtest, and local-node validation so the builder sees the full Sails path instead of just the first step.
Guardrails
- Treat this as a candidate first-wave catalog, not a frozen public taxonomy.
- Keep the flow standard Gear/Vara Sails only.
- If the task jumps straight to deployment or a live network without green
gtest, redirect to testing first.
In this repository27 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- vara-skillsSkill
- vara-skillsSkill
- awesome-sails-vftSkill
- gear-architecture-plannerSkill
- gear-builtin-actorsSkill
- gear-gstd-api-mapSkill
- gear-message-executionSkill
- gtest-tdd-loopSkill
- idea-to-specSkill
- sails-architectureSkill
- sails-dev-envSkill
- sails-ethexe-architectureSkill
- sails-ethexe-implementerSkill
- sails-feature-workflowSkill
- sails-frontendSkill
- sails-gtestSkill
- sails-idl-clientSkill
- sails-indexerSkill
- sails-local-smokeSkill
- sails-new-appSkill
- sails-program-evolutionSkill
- sails-rust-implementerSkill
- task-decomposerSkill
- vara-skills-upgradeSkill
- vara-walletSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

