moonwell-supply
Moonwell USDC supply strategy via governance proposals — supply to lending market, earn yield, redeem on settlement
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Moonwell USDC supply strategy via governance proposals — supply to lending market, earn yield, redeem on settlement
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Turns any agent into a fund manager. Creates autonomous investment syndicates that pool capital and run composable onchain strategies across DeFi, lending, trading, and more. Agents manage. Contracts enforce. Humans watch. Triggers on syndicate creation, vault management, agent registration, strategy execution, governance proposals, voting, settlement, depositor approvals, allowance disbursements, Venice funding, token trading (buy/sell/swap via Uniswap), memecoin signal scanning, position monitoring, and general Sherwood CLI operations.
Signal-driven memecoin trading on Base via Uniswap Trading API — buy, sell, swap tokens, scan for opportunities, monitor positions, auto-exit on signals. Uses Messari/Nansen research, Venice inference for sentiment. Triggers on trade, swap, buy, sell, memecoin, scan, monitor, uniswap, position, P&L.
Venice VVV staking loan model — vault lends asset to agent for private inference, agent repays principal + profit from off-chain strategy
Instructs an AI agent acting as a Syndicate Vault Owner (guardian) on Sherwood — continuously monitors governance proposals, simulates execution on forks, vetoes malicious proposals, tracks live strategy health, and triggers emergency actions to protect LP capital. Triggers on vault owner duties, proposal monitoring, veto decisions, settlement tracking, or guardian operations.
Executes Sherwood's levered swap strategy on Base — deposits WETH as collateral on Moonwell, borrows USDC, and swaps into a target token via Uniswap V3. Guides step-by-step through token research (DexScreener), risk assessment, parameter selection, simulation, and on-chain execution. Triggers on leveraged trading, collateral + borrow strategies, levered swaps, or entering positions.
Integrate Uniswap swaps into applications. Use when user says "integrate swaps", "uniswap", "trading api", "add swap functionality", "build a swap frontend", "create a swap script", "smart contract swap integration", "use Universal Router", "Trading API", or mentions swapping tokens via Uniswap.
| name | moonwell-supply |
| description | Moonwell USDC supply strategy via governance proposals — supply to lending market, earn yield, redeem on settlement |
| allowed-tools | Read, Glob, Grep, Bash(sherwood *), Bash(npm *), Bash(npx *), WebFetch, WebSearch, AskUserQuestion |
| model | sonnet |
| license | MIT |
| metadata | {"author":"sherwood","version":"0.1.0"} |
Supply USDC (or other supported tokens) to Moonwell's lending market to earn yield. Uses MoonwellSupplyStrategy (ERC-1167 clonable) — any syndicate, any agent, any proposal can use it as a lego block.
Vault (holds USDC)
↓ governance proposal
MoonwellSupplyStrategy clone
↓ execute: pull USDC → approve mToken → mint mUSDC
Strategy holds mUSDC (accruing yield)
↓ settle: redeem all mUSDC → verify min output → push USDC back to vault
Vault (holds USDC + yield)
# Confirm agent wallet is configured
sherwood config show
# Confirm agent has ERC-8004 identity
sherwood identity show
# Confirm agent is registered in the syndicate vault
sherwood vault info --vault <vault-address>
The vault must allowlist the protocol addresses used by the strategy. Do this before creating a proposal.
# Required for Moonwell Supply
sherwood vault add-target --target 0xEdc817A28E8B93B03976FBd4a3dDBc9f7D176c22 # Moonwell mUSDC
sherwood vault add-target --target 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 # USDC
# Strategy clone address — add after cloning (Step 3 prints it)
The strategy propose command handles everything: clones the template, initializes it, builds batch calls, and optionally submits the proposal.
# Generate execute/settle JSON files (clone + init happens on-chain)
sherwood strategy propose moonwell-supply \
--vault <vault-address> \
--amount 100 \
--min-redeem 99.5 \
--token USDC \
--write-calls ./moonwell-calls
# Add the clone address to vault allowlist
sherwood vault add-target --target <clone-address>
# Submit the proposal
sherwood proposal create \
--vault <vault-address> \
--name "Moonwell USDC Yield" \
--description "Supply 100 USDC to Moonwell for 7 days" \
--performance-fee 1000 \
--duration 7d \
--execute-calls ./moonwell-calls/execute.json \
--settle-calls ./moonwell-calls/settle.json
Or submit directly (skip --write-calls):
sherwood strategy propose moonwell-supply \
--vault <vault-address> \
--amount 100 --min-redeem 99.5 --token USDC \
--name "Moonwell USDC Yield" --performance-fee 1000 --duration 7d
# Check proposal status
sherwood proposal list
# After voting period ends (optimistic — passes unless vetoed)
sherwood proposal execute --id <proposal-id>
# After strategy duration expires
sherwood proposal settle --id <proposal-id>
Settlement calls strategy.settle() which:
minRedeemAmount (slippage protection)The governor then calculates P&L (new vault balance minus snapshot) and distributes fees.
While the strategy is in Executed state, the proposer can tune params without a new proposal:
# Update min redeem amount (e.g., if market moved)
# Call updateParams directly on the strategy clone
# Encode: (uint256 newSupplyAmount, uint256 newMinRedeemAmount) — pass 0 to keep current
[
{
"target": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"data": "0x095ea7b3<clone-address-padded><amount-padded>",
"value": "0"
},
{
"target": "<strategy-clone-address>",
"data": "0x61461954",
"value": "0"
}
]
USDC.approve(strategyClone, supplyAmount)strategyClone.execute() — pulls USDC, mints mUSDC[
{
"target": "<strategy-clone-address>",
"data": "0x845980e8",
"value": "0"
}
]
strategyClone.settle() — redeems mUSDC, pushes USDC to vaultThe CLI generates these automatically via sherwood strategy propose --write-calls.
| Field | Type | Description |
|---|---|---|
underlying | address | Token to supply (e.g., USDC) |
mToken | address | Moonwell market token (e.g., mUSDC) |
supplyAmount | uint256 | Amount of underlying to supply |
minRedeemAmount | uint256 | Minimum underlying to accept on settlement (slippage protection) |
Pending → execute() → Executed → settle() → Settled
supplyAmount, minRedeemAmountabi.encode(uint256, uint256) to updateParams() — pass 0 to keep current valuesherwood vault add-target. Without this, executeGovernorBatch will revert.| Contract | Address |
|---|---|
| USDC | 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 (6 decimals) |
| Moonwell mUSDC | 0xEdc817A28E8B93B03976FBd4a3dDBc9f7D176c22 |
| Moonwell mWETH | 0x628ff693426583D9a7FB391E54366292F509D457 |
| Moonwell Comptroller | 0xfBb21d0380beE3312B33c4353c8936a0F13EF26C |
sherwood vault add-target --target 0xEdc817A28E8B93B03976FBd4a3dDBc9f7D176c22 # Moonwell mUSDC
sherwood vault add-target --target 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 # USDC
sherwood vault add-target --target <strategy-clone-address> # Your strategy contract