Aerodrome Slipstream

Aerodrome Slipstream workflow and evidence

Galleon Labs

@galleonlabs

Install

$ openclaw skills install @galleonlabs/galleon-aerodrome-slipstream

Aerodrome Slipstream

Return the NFT's range, custodian, emissions eligibility, claim estimate, and exact next action. Aerodrome has both classic stable/volatile ERC-20 pools and Slipstream concentrated NFT pools. Identify the model before using any gauge ABI. This recipe covers Slipstream; an ERC-20 LP amount requires the classic pool's own router/gauge flow.

Identify the real position

  1. Pin Base chain ID and read block. Resolve deployment addresses through official Aerodrome sources, then verify on-chain code and ABI/version. An arbitrary link, token symbol or APR widget does not establish the correct pool.
  2. Read manager positions(tokenId) and ownerOf(tokenId). Slipstream's pool key uses tickSpacing, unlike Uniswap v3's fee field. Read factory getPool(token0,token1,tickSpacing) and compare the returned pool's token order, spacing and current price. Do not assume fee equals spacing or remains fixed.
  3. Resolve the pool's gauge through the verified voter gauges(pool). Verify gauge pool(), nft(), voter(), token0(), token1() and tickSpacing() against those reads. Read isAlive(gauge) on its voter. A dead gauge is not a deposit candidate even when the pool remains swappable.
  4. If ownerOf is the wallet, the NFT is unstaked. If it is the gauge, read stakedContains(wallet,tokenId) or stakedValues(wallet). A gauge-owned NFT with no matching depositor record is unresolved custody, not a lost NFT or wallet-owned position. Unknown vault/Sickle ownership requires its withdrawal procedure.

Decide between fees and emissions

For the verified gauge model, staking receives emissions instead of the unstaked position's trading fees. Show these alternatives separately, using the user's range and active liquidity rather than adding both headline APRs. Read rewardToken(), token decimals, periodFinish(), rewardRate() and current range. Out-of-range capital does not earn in-range emissions merely because its NFT is staked.

Read earned(wallet,tokenId) only for a confirmed stake. Treat the result as block/version-specific; inspect whether that implementation requires a reward-growth update for an accurate simulation. Do not send a state-changing update solely to obtain a quote. Simulate the relevant claim path when available.

Current upstream includes depositTimestamp(tokenId) and gauge-factory penaltyRate()/minStakeTimes(pool). These are version-dependent, not promises about every deployed gauge. Confirm deployed selectors/source first. Where supported, compute the earliest penalty-free time and simulate the actual claim/withdrawal. Do not subtract a penalty again if earned already returns net claimable reward. An older implementation without these methods needs its own verified semantics.

Prepare the selected lifecycle

  • Stake: verify ownership, matching pool, alive gauge and positive liquidity. Prepare NFT-specific approve(gauge,tokenId) if needed, then gauge deposit(tokenId). Re-read custody and depositor membership. Do not substitute an ERC-20 approve or require blanket setApprovalForAll.
  • Claim: use the owner's getReward(uint256 tokenId) overload. The getReward(address account) overload can be voter-restricted. Include reward token, expected net amount, penalty assumptions and gas cost.
  • Exit gauge: gauge withdraw(tokenId) returns custody and may collect emissions/fees in the verified implementation. Confirm ownerOf and membership before any manager operation; do not assume a second claim remains necessary.
  • Remove liquidity: after withdrawal, use the deployed manager's decrease and collect interface with minimums, recipient and deadline. Some newer versions support special staked-liquidity operations; use them only after verifying that implementation. A normal wallet-owned manager recipe cannot simply operate on a gauge-owned NFT.
  • Recenter: withdraw, remove, collect, rebalance if requested, mint a new range, then optionally stake. Keep each dependent ID and amount unresolved until observed or atomically simulated.

The skill is independently usable through reads and an unsigned official UI/tool handoff. Installation does not authorize signing, approvals or transfers. For an explicitly requested action, use an existing authorized wallet tool, exact terms and simulation; never build a signer here. Do not resend an uncertain deposit or withdrawal. Read the original receipt and both custody records first.

Worked output

Synthetic NFT 42: owner is verified gauge G; stakedContains(Alice,42)=true; current tick equals tickUpper. Report staked, out of range, not missing. Suppose this deployed version's earned read returns 90 AERO net of a 10% early-claim penalty and penalty-free time is in 1 hour. The present claim estimate is 90, not 81. Compare waiting against market and gas costs without guaranteeing a future 100. For a user-requested exit, prepare withdraw(42) first, then verify Alice owns it before decrease/collect.

Sources and maintenance

Primary sources checked 2026-09-27. Protocol recipes and sources contain the concrete calls. Recheck deployments and API schemas before preparing financial actions; documentation access alone proves no live position or transaction.

Top skills in this category

Free Ride - Unlimited free AI

@shaivpidadi

Manages free AI models from OpenRouter for OpenClaw. Automatically ranks models by quality, configures fallbacks for rate-limit handling, and updates opencla...

49172k

Playwright (Automation + MCP + Scraper)

@ivangdavila

Automates, tests, and debugs browsers with Playwright: locators, auto-waiting, traces, CI runs, and MCP browser control. Use when a test is flaky, times out, or fails only in CI or headless; when a locator matches multiple elements or the wrong one (strict mode violation); when clicks need force, waits become sleeps, or networkidle never settles; for storageState and login setup, request mocking and HAR replay, uploads and downloads, iframes and shadow DOM, popups and dialogs, screenshot diffs that change per machine, trace and report artifacts, sharding a slow suite, device and permission emulation, accessibility checks, driving a real browser through Playwright MCP, extracting data from JS-rendered pages, or porting a Cypress, Puppeteer, or Selenium suite to Playwright. Not for maintaining an existing Cypress or Puppeteer suite (cypress, puppeteer) or for work a plain HTTP request answers (http).

13043k

n8n

@thomasansems

Manage n8n workflows and automations via API. Use when working with n8n workflows, executions, or automation tasks - listing workflows, activating/deactivating, checking execution status, manually triggering workflows, or debugging automation issues.

6121k

google-slides

@byungkyu

Google Slides API integration with managed OAuth. Create presentations, add slides, insert content, and manage slide formatting. Use this skill when users want to interact with Google Slides. For other third party apps, use the api-gateway skill (https://clawhub.ai/byungkyu/api-gateway). Calls run through the `maton` CLI with OAuth login, or over raw HTTP with a Maton API key where the CLI cannot be installed. Every call is authenticated as the user's connection and reaches only what that connection's authorization allows, which the provider enforces on every request; the endpoints documented here are the ones this skill uses, and any other endpoint of this app needs the user to ask for it by name. Default to read and list calls, and confirm every write or new connection with the user. This file also documents the three constructs that turn a Google Slides connection into automation, in the order they are used: the connection (the first step), a hosted function that runs a Google Slides action through the Maton SDK, and a trigger that calls that function on a schedule or on an event. Those sections are the platform's own reference text, shared with the api-gateway skill, with Google Slides examples; they add no Google Slides capability - Google Slides is not an event source, a trigger cannot read Google Slides data, and the files under `references/<source>/triggers.md` are the platform's event catalogues for the sources Maton offers (time, Calendly, GitHub, Gmail, HubSpot, Linear, Notion, Slack, Stripe).

3420k

Superpowers Dev Workflow

@wlshlad85

Spec-first, TDD, subagent-driven software development workflow. Use when: (1) building any new feature or app — triggers brainstorm → plan → subagent executi...

2129k