skills/sablier-create-airdrop/SKILL.md
This skill should be used when the user asks to create "token airdrops", "Merkle airdrops", "community airdrops", "Sablier airdrop", "vested airdrops", "claimable airdrops", "token claim campaigns", "ERC-20 airdrops", "BEP-20 airdrops", or "BEP20 airdrops" with Sablier Airdrops, wants to distribute tokens to many recipients on Ethereum or EVM-compatible chains using Merkle proofs, or needs an agent to run onchain airdrop-campaign-creation transactions on their behalf.
npx skillsauth add sablier-labs/sablier-skills sablier-create-airdropInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Create token airdrops using the Sablier Merkle system. A campaign creator deploys a campaign contract via a factory, storing a Merkle root. Anyone can then fund the campaign by transferring tokens to it. Recipients claim individually using Merkle proofs, paying their own gas.
Funding does not have to happen in the same session as deployment. For CLI execution, deploy first, then ask whether the user wants to fund immediately or later. If they defer funding, finish successfully after deployment, share the campaign URL plus key metadata, and warn that claims will fail until the campaign holds at least the aggregate amount.
The local CLI route generates the campaign artifact locally and uploads it to IPFS through Pinata v3, so it requires a Pinata JWT with Files: Write permission.
This skill is a coordinator for airdrop campaign creation and execution routing.
| Argument | Description |
| -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| chain_name | EVM chain where to create the airdrop campaign |
| token_address | ERC-20 token contract address to distribute. Token symbols cannot be resolved to addresses — the user must provide the exact contract address. |
| airdrop_details_with_csv | Campaign type, recipient list in CSV, vesting schedule (if applicable) |
| Type | Code | Distribution Method | | -------- | ------------- | ------------------------------------------------------------------ | | Instant | MerkleInstant | Direct token transfer on claim | | Linear | MerkleLL | Creates a Lockup Linear stream per claim (vesting over time) | | Tranched | MerkleLT | Creates a Lockup Tranched stream per claim (discrete unlock steps) |
Q1: Do recipients need vesting after claiming?
├─ No → ✅ Instant
└─ Yes → Q2
Q2: Do tokens unlock continuously or in discrete steps?
├─ Continuously (with optional cliff) → ✅ MerkleLL
└─ At discrete intervals (monthly, quarterly, etc.) → ✅ MerkleLT
sablier-create-vesting. If this skill is unavailable, recommend installing it with:npx skills add sablier-labs/sablier-skills --skill sablier-create-vesting
Stop and call out unsupported requests before selecting an execution path.
Treat the following as unsupported by this skill and by Sablier Airdrops:
If any of the following are missing or ambiguous from the user's input, use the AskUserQuestion tool to ask the user to clarify before proceeding:
0 in the factory call)If the missing detail is the token address, tell the user they can look it up on a blockchain explorer such as Etherscan.
Do not guess or silently apply defaults for the campaign type, recipient list, or vesting schedule. Only proceed once all required inputs are confirmed.
| Intent | EVM | | ---------------------------------------------- | ----------------------------------------------- | | Airdrop campaign creation on the user's behalf | Use cli.md | | Onchain integration guidance | Use evm-onchain.md |
For the EVM CLI route:
AskUserQuestion tool to ask whether the user wants to fund now or later.If you encounter any issues or unexpected errors with this skill, please file an issue at sablier-labs/sablier-skills.
data-ai
This skill should be used when the user asks to "withdraw flow stream", "withdraw from Sablier Flow", "claim flow payment", "claim from Sablier Flow", "drain my flow streams", "withdraw all my Sablier Flow streams", "withdraw from open-ended stream", "claim open-ended stream", or wants an agent to withdraw available tokens from one or more Sablier Flow open-ended payment streams on Ethereum or any EVM-compatible chain on their behalf. Supports batching across multiple streams on a single chain.
data-ai
This skill should be used when the user asks to "cancel a vesting stream", "cancel Sablier vesting", "stop vesting for X", "revoke a Sablier stream", "claw back unvested tokens", "refund unvested tokens", "kill a Sablier Lockup stream", or wants an agent to cancel one or more Sablier Lockup vesting streams as the stream sender on Ethereum or any EVM-compatible chain on their behalf.
data-ai
This skill should be used when the user asks to "cancel a Flow stream", "void a Sablier Flow stream", "stop streaming to X", "refund my Flow deposit", "kill a Sablier Flow payment", "claw back unstreamed funds", "stop a Sablier open-ended stream", or wants an agent to cancel one or more Sablier Flow open-ended payment streams (void + refund where applicable) on Ethereum or any EVM-compatible chain on their behalf.
data-ai
This skill should be used when the user asks to "withdraw vested tokens", "withdraw from Sablier vesting", "withdraw all my Sablier streams", "claim everything", "claim all unlocked tokens", "drain my vesting streams", "claim from Sablier", or wants an agent to withdraw unlocked tokens from one or more Sablier Lockup vesting streams on their behalf. Supports EVM chains (batched withdrawal across multiple streams on a single chain via `withdrawMultiple`) and Solana mainnet-beta (single-stream withdrawals from Lockup Linear v0.1).