Every errand is a few hundred lines, reviewed, versioned, and pinned. You pick one, fill in its parameters, set the leash, and spawn. All errands run against tokenized stocks, ETFs and stablecoins on Robinhood Chain.
Buy a fixed amount of one asset on a schedule. Optional price band: skip the run if price moved more than X% since last run.
errand: dca asset: TSLAx amount: $25 skip_if_moved: 3%
Hold target weights across up to eight assets. Trades only when drift exceeds a threshold, and only the minimum needed.
errand: rebalance
targets: {TSLAx: 60%, USDC: 40%}
threshold: 2%Consolidate any balance under a floor into a single asset. Skips if fees would exceed a share of the value swept.
errand: sweep floor: $1 into: USDC max_fee_share: 5%
Buy a fixed amount of any new asset that matches a filter. The filter is a rule; a model may classify inputs but never authorises the buy.
errand: watch filter: us_equity && cap > 5B amount: $50
Claim accrued yield or dividends and reinvest into a chosen asset, or route to a wallet.
errand: harvest reinvest_into: SPYx
Pull limit orders older than N hours. Optionally re-place them around the current price.
errand: cancel_stale older_than: 12h replace: false
Place a ladder of limit orders at fixed steps below (buy) or above (sell) the current price. Re-lays the ladder each run.
errand: ladder side: buy steps: 5 step_size: 1% per_step: $20
Keep a wallet above a minimum balance by selling from a reserve asset.
errand: topup wallet: 0x… min: $100 from: USDC
Move between two assets when a simple signal flips: moving-average cross, or a price relative to a reference.
errand: rotate between: [SPYx, USDC] signal: ma(50) > ma(200)
Write an errand in the skee DSL, submit it for review. Accepted errands are pinned, audited and added to the library for everyone.
skee errand new my_errand skee errand test skee errand submit
Deterministic given inputs. Same balances, same prices, same leash → same decision. Model calls, where present, are cached per run and only ever classify.
At most one transaction per run. Errands that need more (rebalance, ladder) batch into a single atomic call.
Idempotent. If a run is retried, it must not double-act. Every action is keyed by run id.
Explains itself. Every errand must produce a one-sentence plain-English receipt for every outcome, including "did nothing".