Skip to content

Skills

Skills are the harness. Every project sailor init scaffolds carries 22 on-demand skills under .agents/skills/, following the open Agent Skills standard: a slim, always-loaded AGENTS.md carries the project map and hard invariants, while the detailed procedures live in the skills, loaded on demand. Any coding agent reads them natively and follows the same verified path in every project.

They exist so the safe order of operations is encoded once — register → configure → simulate → verify — instead of being re-derived by every agent. Skills are plain markdown; an agent that doesn’t scan skills follows the routing table in AGENTS.md to the same files.

The skills are organized around the five-station journey AGENTS.md lays out (each station names its owning skill, entry gate, and exit check):

SkillWhat it does
sailor-onboardingSet up a new (or resume a partial) project — SMA deployment, agent-wallet creation, address prediction, multi-chain deployment. The entry point when you say “start” or “continue”.
SkillWhat it does
sailor-strategyThe guided conversation that turns your intent (“DCA into ETH”, “earn yield on USDC”, “pay contributors weekly”) into a complete, concrete spec at .sail/strategy.md — every later station reads it.
SkillWhat it does
sailor-mandate-plannerStation-3 entry: route each action of the strategy spec to a shared template or to bespoke authoring.
sailor-templatesThe registry + reuse guide — which primitives exist and the register → configure reuse flow.
sailor-template-*One skill per shared template (seven — see below).
sailor-mandatesThe full custom-IPermission lifecycle — designing bounds, authoring Solidity, Foundry testing, deploying, simulating, authorizing, revoke/update/list.
SkillWhat it does
sailor-agent-buildBuild the agent’s tick loop in src/agent.ts from the strategy spec and the registered mandate — from a typecheck-verified skeleton.
sailor-transactionsHow dispatches work — the selective dispatch model, signing, batching, permission resolution, and why a transaction is denied or reverted.
sailor-memoryThe agent’s append-only, chain-reconciled memory ledger (.sail/memory/ledger.jsonl) so a fresh process recovers its own trading history.
SkillWhat it does
sailor-automationRun the agent unattended — four options: GitHub Actions runner, self-hosted runner, Docker on any VM, or a local daemon.
sailor-operateOperate a live agent — “what did it do”, “why was it denied”, pause, tune caps, widen/narrow the mandate, withdraw funds, exit.
sailor-extendOptional: extend a live agent with notifications (Telegram, email) and a strategy-specific dashboard.
SkillWhat it does
sailor-project-infoRead-only state — “what’s set up”, “am I ready”, preflight, which chains, what permissions are registered.
sailor-serversStart / stop / health-check the two local servers — the dashboard and the signing server — plus Docker/remote access.
sailor-token-resolveResolve tokens by symbol/address into on-chain metadata and a cross-chain, cross-DEX liquidity map. Keyless, no gas.
sailor-swap-quoteFetch a live Uniswap V3 quote and compute the slippage-adjusted amountOutMinimum floor the agent embeds in every swap.

Each of the protocol’s seven shared permission templates has its own dedicated skill — it encodes that template’s exact parameter schema, the safe register → configure → simulate → verify sequence, and the per-template footguns:

SkillTemplateGates
sailor-template-swapSwapPermissionOracle-gated DEX swaps: router + token allowlists, per-tx cap, mandatory oracle slippage band (large trades)
sailor-template-swap-no-oracleSwapPermissionNoOracleThe default bounded-swap tier: allowlists + cap + live-pool sanity band (not manipulation-resistant)
sailor-template-borrowBorrowPermissionBounded borrows (Aave/Morpho/Compound) with protocol + asset allowlist, cap, on-chain LTV check
sailor-template-depositDepositPermissionDeposits into ERC-4626 vaults / Aave with target + token allowlist and a per-tx cap
sailor-template-withdrawWithdrawPermissionBounded position exits — ERC-4626 vault withdraw/redeem and Aave v2/v3 pool withdraw — proceeds paid only to the account (target allowlist + per-tx cap)
sailor-template-transferTransferPermissionERC-20 transfers within a per-tx cap to a recipient allowlist
sailor-template-approve-batchApproveAndCallBatchPermissionAtomic approve → call → reset-to-zero batches with token/spender/target/selector allowlists

Templates are registered and configured through these skills because the CLI provides the primitives (sailor mandate register / configure / simulate) and the skill is the checklist that sequences them correctly. sailor mandate register only registers a template — you must also configure the per-account bounds. See Configure a shared template.


The skills in your scaffold (or in the repo under scaffold/.agents/skills/) are the authoritative procedures; this page is the map. For the design rationale, see the repo’s templates-and-skills.md.