starchild-ai-agent/official-skills

ethena

Ethena staking: stake USDe for sUSDe yield, unstake with cooldown, view rates. Use when farming stablecoin yield via Ethena (e.g. stake 1000 USDe, check sUSDe APY, unstake my position, current cooldown).

First seen Apr 20, 2026

Installation

$ npx skills add starchild-ai-agent/official-skills --skill ethena

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from starchild-ai-agent/official-skills · top by installs.

npx skills add starchild-ai-agent/official-skills

Browse all from starchild-ai-agent/official-skills

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 26
Default branch main
Open issues 0
Status Active

Skill metadata

Parsed from SKILL.md frontmatter.

Version1.2.1
More metadata
starchild
{"emoji":"🟣","skillKey":"ethena"}

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 7,781 B
  • docs SUMMARY.md 216 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 249 installs

SKILL.md

⛔ HARD RULES (read first, always)

  • ALWAYS call ethena_rate before any on-chain operation — cooldown duration is live from chain, not a constant
  • NEVER call wallettransfer directly — use ethena* native tools only (wallet_transfer triggers UI block in deny-all policy)
  • NEVER hardcode cooldown as "7 days" — actual value is fetched per request (currently ~24h)
  • NEVER guess or assume the sUSDe/USDe exchange rate — call ethena_rate
  • HARD LIMIT: max 5 tool calls per user request
  • ON-CHAIN EXECUTION: after ethena* returns calldata, sign and broadcast via walletsign_transaction — NEVER skip or simulate

Ethena — USDe Staking

Ethena lets users stake USDe to receive sUSDe, an ERC4626 yield-bearing token. Rewards accrue from ETH staking + funding rate delta-hedging. sUSDe value only increases or stays flat — never decreases.

Key Contracts (Ethereum Mainnet)

Contract Address
USDe 0x4c9EDD5852cd905f086C759E8383e09bff1E68B3
sUSDe (StakedUSDe) 0x9D39A5DE30e57443BfF2A8307A4256c8797A3497
USDeSilo (cooldown) 0x7FC7c91D556B400AFa565013E3F32055a0713425

Native Tools

Tool When to use Returns
ethena_rate() Rate query, before any tx, cooldown check rate, totalAssets, totalSupply, cooldown_seconds
ethena_apy() APY / yield / return question apycurrent, apy7d, apy30d, tvlusd
ethena_balance(wallet) Balance check usdebalance, susdebalance, cooldownendts
ethena_stake(amount, receiver) Stake USDe 2 tx calldata (approve + deposit)
ethenacooldownstart(amount) Start unstake cooldown tx calldata + live cooldown_hours
ethena_unstake(receiver) Claim after cooldown unstake tx calldata

End-to-End Execution — Sign & Broadcast

ethena_* tools return unsigned calldata. To actually execute on-chain:

ethena_stake / ethena_cooldown_start / ethena_unstake
        ↓  returns tx dict  {to, data, value, chain_id}
wallet_sign_transaction(tx)          ← wallet skill
        ↓  returns signed_tx hex
wallet_sign_transaction broadcast    ← same call, auto-broadcasts

Standard Flow (stake example)

Step 1  ethena_rate()                    # confirm rate + cooldown before tx
Step 2  ethena_stake("100", receiver)    # returns [approve_tx, deposit_tx]
Step 3  wallet_sign_transaction(approve_tx, broadcast=True)
Step 4  wallet_sign_transaction(deposit_tx, broadcast=True)

Standard Flow (unstake)

Step 1  ethena_rate()                    # get live cooldown duration
Step 2  ethena_cooldown_start("100")     # returns cooldown_tx
Step 3  wallet_sign_transaction(cooldown_tx, broadcast=True)
Step 4  [wait cooldown_hours]
Step 5  ethena_unstake(receiver)         # returns unstake_tx
Step 6  wallet_sign_transaction(unstake_tx, broadcast=True)

Cross-skill dependency

Load wallet-policy skill first to confirm wildcard policy is active. walletsigntransaction is part of the wallet skill — it is available natively; no extra install needed.

Error handling

Error Cause Fix
403 on sign Privy policy deny-all Approve wildcard policy in Web UI
nonce conflict Two txs broadcast too fast Wait for Step 3 receipt before Step 4
gas estimate fail Approve not mined yet Add 5s delay between approve and deposit

Tool Routing — IF/THEN

IF "APY" OR "yield" OR "return" OR "收益率" OR "年化"
  → ethena_apy()

IF "rate" OR "price" OR "how much USDe per sUSDe" OR "汇率" OR "多少USDe"
  → ethena_rate()

IF "balance" OR "how much do I have" OR "余额"
  → ethena_balance(wallet_address)

IF "stake" OR "deposit" OR "质押" AND amount given
  → ethena_stake(amount, receiver)

IF "unstake" OR "redeem" OR "cooldown" OR "withdraw" OR "赎回" — starting flow
  → ethena_cooldown_start(amount)

IF "claim" OR "unstake" OR "withdraw" AND cooldown already done
  → ethena_unstake(receiver)

IF "how long" OR "cooldown duration" OR "等多久"
  → ethena_rate()  ← returns cooldown_seconds live from chain

Few-Shot Examples

ETH-01 — APY query

"sUSDe 现在的 APY 是多少?"

ethena_apy()
→ "当前 APY 3.72%,7日均值 3.68%"

ETH-02 — Rate query

"1 sUSDe 能换多少 USDe?"

ethena_rate()
→ "1 sUSDe = 1.227675 USDe(totalAssets/totalSupply 实时计算)"

ETH-03 — Balance

"我有多少 USDe 和 sUSDe?"

ethena_balance("0x...")
→ {usde_balance: 500.0, susde_balance: 81.46, susde_in_usde: 100.0}

ETH-04 — Stake

"帮我质押 100 USDe"

ethena_rate()          # get live rate for estimate
ethena_stake("100", receiver="0x...")
→ [{approve tx}, {deposit tx}]  # execute in order

ETH-04b — Stake end-to-end (sign & broadcast)

"帮我质押 100 USDe,直接执行到链上"

ethena_rate()                                   # Step 1: confirm rate
ethena_stake("100", receiver="0x...")           # Step 2: get calldata
→ [approve_tx, deposit_tx]
wallet_sign_transaction(approve_tx, broadcast=True)   # Step 3
wallet_sign_transaction(deposit_tx, broadcast=True)   # Step 4
→ tx_hash confirmed

ETH-06b — Unstake end-to-end (sign & broadcast)

"帮我开始赎回 50 sUSDe,直接发链上"

ethena_rate()                                         # Step 1: get cooldown
ethena_cooldown_start("50")                           # Step 2: get calldata
→ {cooldown_tx, cooldown_hours: 24.0}
wallet_sign_transaction(cooldown_tx, broadcast=True)  # Step 3
→ tx_hash confirmed, 等待 24h 后再调 ethena_unstake

ETH-05 — Cooldown duration

"赎回要等多久?"

ethena_rate()
→ "cooldown_seconds: 86400 → 当前需等待 24 小时"

ETH-06 — Start cooldown

"开始赎回 50 USDe 的 sUSDe"

ethena_cooldown_start("50")
→ {transaction: {...}, cooldown_hours: 24.0}

ETH-07 — Claim after cooldown

"cooldown 到了,帮我提款"

ethena_unstake("0x...")
→ {transaction: {...}}

ETH-08 — English yield query

"What's the current yield for staking USDe?"

ethena_apy()
→ "Current APY: 3.72%"

How Staking Works

  1. Stake: ethena_stake → approve USDe + deposit → receive sUSDe (ERC4626)
  2. Yield: Protocol transfers USDe rewards every 8h, linearly vested over 8h (anti-sandwich)
  3. Unstake: ethenacooldownstart → wait cooldown (query live, currently ~24h) → ethena_unstake

sUSDe/USDe rate only goes up. Cooldown duration may change — always query ethena_rate.

After generating calldata via any ethena* tool, always follow up with walletsign_transaction(tx, broadcast=True) to actually submit on-chain. Never stop at calldata generation.

Prerequisites — Wallet Policy

Before any on-chain operation, ensure a wildcard wallet policy is active (deny key export + allow *). Load the wallet-policy skill if needed.

Gotchas

  • Cooldown is ~24h (not 7 days) — but always verify with ethena_rate() as it can change via governance
  • No negative rewards — sUSDe value can only go up or stay flat
  • Rewards every 8h — linearly vested, no sandwich opportunities
  • sUSDe can be sold on DEXes without cooldown if liquidity exists
  • EU/EEA restriction — sUSDe acquisition not offered in EU/EEA