evm-deployment
npx skills add https://github.com/sablier-labs/agent-skills --skill evm-deployment
Agent 安装分布
Skill 文档
Overview
End-to-end deployment workflow for Sablier EVM contracts. Supports Comptroller, Flow, Lockup, and Airdrops with protocol-specific adaptations.
Prerequisites
Version Check
Before proceeding, verify Foundry version:
forge -V
Stop if version is below 1.3.6.
Protocol Detection
Detect the current EVM protocol from package.json:
| Package Name | Protocol | SDK Path |
|---|---|---|
@sablier/evm-utils |
Comptroller | ../sdk/deployments/comptroller |
@sablier/flow |
Flow | ../sdk/deployments/flow |
@sablier/lockup |
Lockup | ../sdk/deployments/lockup |
@sablier/airdrops |
Airdrops | ../sdk/deployments/airdrops |
Extract version from package.json â "version": "x.y.z" â SDK version is v<x.y>
Workflow
Execute steps in order, tracking state between each:
Step 1: Deploy Contracts
Reference: ./references/deploy.md | Examples: ./references/examples.md
Deploy protocol contracts using Foundry. Handles:
- RPC configuration
- Deterministic (CREATE2) vs non-deterministic (CREATE) deployment
- Contract verification on block explorer
Step 2: Update SDK (optional)
Reference: ./references/copy-to-sdk.md
Copy broadcast artifacts to SDK repository:
- Broadcast JSON file
- Update README.md with deployment info
- Update deployments.ts with contract addresses
Step 3: Create Test Data (optional)
Reference: ./references/deploy-streams.md
For Flow and Lockup protocols only. Creates sample streams for testing:
- Mint or verify ERC20 token balance
- Run Init.s.sol script to create test streams
State Tracking
Track and carry forward between steps:
| State | Source |
|---|---|
| Protocol name | Detected from package.json |
| Chain ID | From deployment or user input |
| Chain name | Lowercase (e.g., ethereum, arbitrum) |
| Deployment type | deterministic or non-deterministic |
| Contract addresses | From broadcast JSON returns field |
| Block number | From deployment receipt (hex â decimal) |
| SDK version | From package.json version |
Protocol-Specific Scripts
| Protocol | Deterministic Script | Non-deterministic Script |
|---|---|---|
| Comptroller | DeployDeterministicComptrollerProxy.s.sol |
DeployComptrollerProxy.s.sol |
| Flow | DeployDeterministicProtocol.s.sol |
DeployProtocol.s.sol |
| Lockup | DeployDeterministicProtocol.s.sol |
DeployProtocol.s.sol |
| Airdrops | DeployDeterministicFactories.s.sol |
DeployFactories.s.sol |
Output Summary
After completion, provide:
- Protocol deployed
- Chain and deployment type
- Contract addresses (factories + campaigns if applicable)
- Verification status
- SDK files updated (if applicable)
- Test data created (if applicable)
Airdrops Campaign Contracts
When deploying Airdrops test data, campaigns are created via factory:
| Factory | Campaign Contract |
|---|---|
SablierFactoryMerkleInstant |
SablierMerkleInstant |
SablierFactoryMerkleLL |
SablierMerkleLL |
SablierFactoryMerkleLT |
SablierMerkleLT |
SablierFactoryMerkleVCA |
SablierMerkleVCA |
Campaign addresses are returned in broadcast returns field, not contractAddress.