Cuda Streams
pytorch/pytorch
Manage tensor lifetimes across CUDA streams and decide whether recordstream is avoidable.
Create and manage token vesting streams using the Sablier Lockup protocol (linear, dynamic, tranched).
$ npx skills add LeoYeAI/openclaw-master-skills --skill sablier-vesting -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills sablier-vesting --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/token-vesting .claude/skills/sablier-vesting && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "sablier-vesting" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/token-vesting into .claude/skills/sablier-vesting/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sablier-vesting", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/token-vestingType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add LeoYeAI/openclaw-master-skills --skill sablier-vesting -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills sablier-vesting --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/token-vesting .agents/skills/sablier-vesting && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "sablier-vesting" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/token-vesting into .agents/skills/sablier-vesting/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sablier-vesting", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add LeoYeAI/openclaw-master-skills --skill sablier-vesting -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills sablier-vesting --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/token-vesting .cursor/skills/sablier-vesting && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "sablier-vesting" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/token-vesting into .cursor/skills/sablier-vesting/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sablier-vesting", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/LeoYeAI/openclaw-master-skills.git --path skills/token-vesting--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add LeoYeAI/openclaw-master-skills --skill sablier-vesting -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills sablier-vesting --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/token-vesting .gemini/skills/sablier-vesting && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "sablier-vesting" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/token-vesting into .gemini/skills/sablier-vesting/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sablier-vesting", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install LeoYeAI/openclaw-master-skills sablier-vestingInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add LeoYeAI/openclaw-master-skills --skill sablier-vesting -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/token-vesting .github/skills/sablier-vesting && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "sablier-vesting" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/token-vesting into .github/skills/sablier-vesting/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sablier-vesting", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add LeoYeAI/openclaw-master-skills --skill sablier-vesting -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills sablier-vesting --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/token-vesting .opencode/skills/sablier-vesting && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "sablier-vesting" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/token-vesting into .opencode/skills/sablier-vesting/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sablier-vesting", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
sablier-vestingCreate and manage token vesting streams using the Sablier Lockup protocol (linear, dynamic, tranched).
Sablier Vesting is an agent skill from LeoYeAI/openclaw-master-skills. Create and manage token vesting streams using the Sablier Lockup protocol (linear, dynamic, tranched).
Its SKILL.md is about 4.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file (for example `_meta.json`).
The repository describes itself as: 🧠 Curated collection of 1209+ best OpenClaw skills — weekly updated by MyClaw.ai. The licence is MIT.
2 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit e5199b5. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
bunFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
eth-mainnet.g.alchemy.comAlso links to:
docs.sablier.comgithub.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
ETH_PRIVATE_KEYPRIVATE_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Sablier Vesting loads about 4.5k tokens when it runs. Until then it costs about 30 tokens; SKILL.md has 1,130 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from LeoYeAI/openclaw-master-skills at commit e5199b5, republished under its MIT licence (© LeoYeAI). 1,130 words, ~4,452 tokens.
.claude/skills/sablier-vesting/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.You are an AI agent that creates and manages token vesting streams on EVM-compatible blockchains using the Sablier Lockup v3.0 protocol. Sablier is a token streaming protocol where the creator locks up ERC-20 tokens in a smart contract and the recipient's allocation increases every second until the stream ends.
Use this skill when the user asks you to:
These rules are mandatory. Follow them in every interaction.
$PRIVATE_KEY, $ETH_PRIVATE_KEY) or a secure signing method instead.--ledger or --trezor flags (most secure, no key exposure)cast wallet import): --account <name> (encrypted on disk, password-prompted at sign time)--private-key $ETH_PRIVATE_KEY (key stays in the shell environment, never appears in command text)--private-key 0x...: Discourage this. Only acceptable for throwaway testnets where the key holds no real value.Option 1 -- Hardware wallet (recommended for mainnet):
No setup required. Just add --ledger or --trezor to any cast send / forge script command.
Option 2 -- Foundry encrypted keystore (recommended default):
# Import a key once (you'll be prompted for the private key and an encryption password)
cast wallet import my-deployer --interactive
# Then use it in any command
cast send ... --account my-deployerThe key is stored encrypted at ~/.foundry/keystores/my-deployer. You only type your password at sign time; the private key is never exposed in shell history or process arguments.
Option 3 -- Environment variable (acceptable):
# Export in your shell session (not in a file that gets committed)
export ETH_PRIVATE_KEY=0x...
# Reference the variable (the key value never appears in the command itself)
cast send ... --private-key $ETH_PRIVATE_KEYRPC URLs may contain API keys. Follow the same principles:
# Set once in your shell
export ETH_RPC_URL=https://eth-mainnet.g.alchemy.com/v2/<YOUR_KEY>
# cast and forge automatically read ETH_RPC_URL, so --rpc-url can be omitted
cast send <ADDRESS> "approve(address,uint256)" ...Alternatively, configure the RPC in foundry.toml under [rpc_endpoints].
Sablier Lockup v3.0 uses a single unified SablierLockup contract per chain. There are three stream models:
| Model | Best For | Function (durations) | Function (timestamps) |
|---|---|---|---|
| Linear | Constant-rate vesting, salaries | createWithDurationsLL | createWithTimestampsLL |
| Dynamic | Exponential curves, custom curves | createWithDurationsLD | createWithTimestampsLD |
| Tranched | Periodic unlocks (monthly, quarterly) | createWithDurationsLT | createWithTimestampsLT |
All chains use the same contract pattern. Key mainnet deployments:
| Chain | SablierLockup | SablierBatchLockup |
|---|---|---|
| Ethereum | 0xcF8ce57fa442ba50aCbC57147a62aD03873FfA73 | 0x0636d83b184d65c242c43de6aad10535bfb9d45a |
| Arbitrum | 0xF12AbfB041b5064b839Ca56638cDB62fEA712Db5 | 0xf094baa1b754f54d8f282bc79a74bd76aff29d25 |
| Base | 0xe261b366f231b12fcb58d6bbd71e57faee82431d | 0x8882549b29dfed283738918d90b5f6e2ab0baeb6 |
| OP Mainnet | 0xe2620fB20fC9De61CD207d921691F4eE9d0fffd0 | 0xf3aBc38b5e0f372716F9bc00fC9994cbd5A8e6FC |
| Polygon | 0x1E901b0E05A78C011D6D4cfFdBdb28a42A1c32EF | 0x3395Db92edb3a992E4F0eC1dA203C92D5075b845 |
| BNB Chain | 0x06bd1Ec1d80acc45ba332f79B08d2d9e24240C74 | 0xFEd01907959CD5d470F438daad232a99cAffe67f |
| Avalanche | 0x7e146250Ed5CCCC6Ada924D456947556902acaFD | 0x7125669bFbCA422bE806d62B6b21E42ED0D78494 |
| Gnosis | 0x87f87Eb0b59421D1b2Df7301037e923932176681 | 0xb778B396dD6f3a770C4B4AE7b0983345b231C16C |
| Scroll | 0xcb60a39942CD5D1c2a1C8aBBEd99C43A73dF3f8d | 0xa57C667E78BA165e8f09899fdE4e8C974C2dD000 |
| Sonic | 0x763Cfb7DF1D1BFe50e35E295688b3Df789D2feBB | 0x84A865542640B24301F1C8A8C60Eb098a7e1df9b |
| Monad | 0x003F5393F4836f710d492AD98D89F5BFCCF1C962 | 0x4FCACf614E456728CaEa87f475bd78EC3550E20B |
| Berachain | 0xC37B51a3c3Be55f0B34Fbd8Bd1F30cFF6d251408 | 0x35860B173573CbDB7a14dE5F9fBB7489c57a5727 |
For testnets, see: https://docs.sablier.com/guides/lockup/deployments
castThe preferred method is using Foundry's cast CLI tool which the agent has access to.
--account <KEYSTORE_NAME> if they have one set up, or --ledger for mainnet. See the Security section above.cast send <TOKEN_ADDRESS> \
"approve(address,uint256)" \
<SABLIER_LOCKUP_ADDRESS> <AMOUNT_IN_WEI> \
--rpc-url <RPC_URL> \
--account <KEYSTORE_NAME>
# Or: --ledger | --trezor | --private-key $ETH_PRIVATE_KEYThis creates a linear vesting stream. The CreateWithDurations struct is ABI-encoded as a tuple.
Parameters for createWithDurationsLL:
function createWithDurationsLL(
Lockup.CreateWithDurations calldata params,
LockupLinear.UnlockAmounts calldata unlockAmounts,
LockupLinear.Durations calldata durations
) external returns (uint256 streamId);Where:
Lockup.CreateWithDurations = (address sender, address recipient, uint128 depositAmount, address token, bool cancelable, bool transferable, string shape)LockupLinear.UnlockAmounts = (uint128 start, uint128 cliff)LockupLinear.Durations = (uint40 cliff, uint40 total)Example: 1-year linear vesting of 10,000 tokens with no cliff:
# Calculate values
# 10000 tokens with 18 decimals = 10000000000000000000000
# 52 weeks in seconds = 31449600
cast send <SABLIER_LOCKUP_ADDRESS> \
"createWithDurationsLL((address,address,uint128,address,bool,bool,string),(uint128,uint128),(uint40,uint40))" \
"(<SENDER>,<RECIPIENT>,10000000000000000000000,<TOKEN>,true,true,)" \
"(0,0)" \
"(0,31449600)" \
--rpc-url <RPC_URL> \
--account <KEYSTORE_NAME>
# Or: --ledger | --trezor | --private-key $ETH_PRIVATE_KEYExample: 4-year vesting with 1-year cliff:
# cliff = 365 days = 31536000 seconds
# total = 4 years = 126144000 seconds
cast send <SABLIER_LOCKUP_ADDRESS> \
"createWithDurationsLL((address,address,uint128,address,bool,bool,string),(uint128,uint128),(uint40,uint40))" \
"(<SENDER>,<RECIPIENT>,<AMOUNT_WEI>,<TOKEN>,true,true,)" \
"(0,0)" \
"(31536000,126144000)" \
--rpc-url <RPC_URL> \
--account <KEYSTORE_NAME>
# Or: --ledger | --trezor | --private-key $ETH_PRIVATE_KEYExample: With initial unlock of 1000 tokens and cliff unlock of 2000 tokens (out of 10000 total):
cast send <SABLIER_LOCKUP_ADDRESS> \
"createWithDurationsLL((address,address,uint128,address,bool,bool,string),(uint128,uint128),(uint40,uint40))" \
"(<SENDER>,<RECIPIENT>,10000000000000000000000,<TOKEN>,true,true,)" \
"(1000000000000000000000,2000000000000000000000)" \
"(31536000,126144000)" \
--rpc-url <RPC_URL> \
--account <KEYSTORE_NAME>
# Or: --ledger | --trezor | --private-key $ETH_PRIVATE_KEYFor periodic unlocks (monthly, quarterly, etc.).
function createWithDurationsLT(
Lockup.CreateWithDurations calldata params,
LockupTranched.TrancheWithDuration[] calldata tranches
) external returns (uint256 streamId);Where TrancheWithDuration = (uint128 amount, uint40 duration)
Example: 4 quarterly unlocks of 2500 tokens each:
# Each quarter ≈ 13 weeks = 7862400 seconds
cast send <SABLIER_LOCKUP_ADDRESS> \
"createWithDurationsLT((address,address,uint128,address,bool,bool,string),(uint128,uint40)[])" \
"(<SENDER>,<RECIPIENT>,10000000000000000000000,<TOKEN>,true,true,)" \
"[(2500000000000000000000,7862400),(2500000000000000000000,7862400),(2500000000000000000000,7862400),(2500000000000000000000,7862400)]" \
--rpc-url <RPC_URL> \
--account <KEYSTORE_NAME>
# Or: --ledger | --trezor | --private-key $ETH_PRIVATE_KEYFor exponential curves and custom distribution.
function createWithTimestampsLD(
Lockup.CreateWithTimestamps calldata params,
LockupDynamic.Segment[] calldata segments
) external returns (uint256 streamId);Where:
Lockup.CreateWithTimestamps = (address sender, address recipient, uint128 depositAmount, address token, bool cancelable, bool transferable, (uint40,uint40) timestamps, string shape)Lockup.Timestamps = (uint40 start, uint40 end)LockupDynamic.Segment = (uint128 amount, UD2x18 exponent, uint40 timestamp)Example: Exponential stream (2 segments):
# Get current timestamp
CURRENT_TS=$(cast block latest --rpc-url <RPC_URL> -f timestamp)
START_TS=$((CURRENT_TS + 100))
MID_TS=$((CURRENT_TS + 2419200)) # +4 weeks
END_TS=$((CURRENT_TS + 31449600)) # +52 weeks
cast send <SABLIER_LOCKUP_ADDRESS> \
"createWithTimestampsLD((address,address,uint128,address,bool,bool,(uint40,uint40),string),(uint128,uint64,uint40)[])" \
"(<SENDER>,<RECIPIENT>,<DEPOSIT_AMOUNT>,<TOKEN>,true,true,($START_TS,$END_TS),)" \
"[(<AMOUNT_0>,1000000000000000000,$MID_TS),(<AMOUNT_1>,3140000000000000000,$END_TS)]" \
--rpc-url <RPC_URL> \
--account <KEYSTORE_NAME>
# Or: --ledger | --trezor | --private-key $ETH_PRIVATE_KEYNote: The exponent in segments uses UD2x18 format (18 decimals). 1e18 = linear, 2e18 = quadratic, 3.14e18 = steeper curve.
cast call <SABLIER_LOCKUP_ADDRESS> "statusOf(uint256)(uint8)" <STREAM_ID> --rpc-url <RPC_URL>Status values: 0=PENDING, 1=STREAMING, 2=SETTLED, 3=CANCELED, 4=DEPLETED
cast call <SABLIER_LOCKUP_ADDRESS> "withdrawableAmountOf(uint256)(uint128)" <STREAM_ID> --rpc-url <RPC_URL># First, calculate the minimum fee
FEE=$(cast call <SABLIER_LOCKUP_ADDRESS> "calculateMinFeeWei(uint256)(uint256)" <STREAM_ID> --rpc-url <RPC_URL>)
cast send <SABLIER_LOCKUP_ADDRESS> \
"withdrawMax(uint256,address)" \
<STREAM_ID> <RECIPIENT_ADDRESS> \
--value $FEE \
--rpc-url <RPC_URL> \
--account <KEYSTORE_NAME>
# Or: --ledger | --trezor | --private-key $ETH_PRIVATE_KEYcast send <SABLIER_LOCKUP_ADDRESS> \
"cancel(uint256)" \
<STREAM_ID> \
--rpc-url <RPC_URL> \
--account <KEYSTORE_NAME>
# Or: --ledger | --trezor | --private-key $ETH_PRIVATE_KEYcast send <SABLIER_LOCKUP_ADDRESS> \
"renounce(uint256)" \
<STREAM_ID> \
--rpc-url <RPC_URL> \
--account <KEYSTORE_NAME>
# Or: --ledger | --trezor | --private-key $ETH_PRIVATE_KEYcast call <SABLIER_LOCKUP_ADDRESS> "streamedAmountOf(uint256)(uint128)" <STREAM_ID> --rpc-url <RPC_URL>cast call <SABLIER_LOCKUP_ADDRESS> "getRecipient(uint256)(address)" <STREAM_ID> --rpc-url <RPC_URL>If the user prefers Solidity scripts over raw cast calls, you can create a Forge script. Reference the @sablier/lockup npm package.
forge init sablier-vesting && cd sablier-vesting
bun add @sablier/lockup// SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity >=0.8.22;
import { Script } from "forge-std/Script.sol";
import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import { ISablierLockup } from "@sablier/lockup/src/interfaces/ISablierLockup.sol";
import { Lockup } from "@sablier/lockup/src/types/Lockup.sol";
import { LockupLinear } from "@sablier/lockup/src/types/LockupLinear.sol";
contract CreateVestingStream is Script {
function run(
address lockupAddress,
address tokenAddress,
address recipient,
uint128 depositAmount,
uint40 cliffDuration,
uint40 totalDuration
) external {
ISablierLockup lockup = ISablierLockup(lockupAddress);
IERC20 token = IERC20(tokenAddress);
vm.startBroadcast();
// Approve Sablier to spend tokens
token.approve(lockupAddress, depositAmount);
// Build params
Lockup.CreateWithDurations memory params;
params.sender = msg.sender;
params.recipient = recipient;
params.depositAmount = depositAmount;
params.token = token;
params.cancelable = true;
params.transferable = true;
LockupLinear.UnlockAmounts memory unlockAmounts = LockupLinear.UnlockAmounts({ start: 0, cliff: 0 });
LockupLinear.Durations memory durations = LockupLinear.Durations({
cliff: cliffDuration,
total: totalDuration
});
uint256 streamId = lockup.createWithDurationsLL(params, unlockAmounts, durations);
vm.stopBroadcast();
}
}Run with:
forge script script/CreateVestingStream.s.sol \
--sig "run(address,address,address,uint128,uint40,uint40)" \
<LOCKUP_ADDRESS> <TOKEN_ADDRESS> <RECIPIENT> <AMOUNT_WEI> <CLIFF_SECONDS> <TOTAL_SECONDS> \
--rpc-url <RPC_URL> \
--account <KEYSTORE_NAME> \
--broadcast
# Or: --ledger | --trezor | --private-key $ETH_PRIVATE_KEYamount * 1e18). Use cast --to-wei <amount> to convert.cancelable is true, the sender can cancel and reclaim unvested tokens. Set to false for trustless vesting.true, the recipient can transfer the stream NFT to another address.| Duration | Seconds |
|---|---|
| 1 day | 86400 |
| 1 week | 604800 |
| 30 days | 2592000 |
| 90 days (quarter) | 7776000 |
| 180 days (half year) | 15552000 |
| 365 days (1 year) | 31536000 |
| 730 days (2 years) | 63072000 |
| 1095 days (3 years) | 94608000 |
| 1461 days (4 years) | 126230400 |
© LeoYeAI, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file in skills/token-vesting of LeoYeAI/openclaw-master-skills.
Open the folder on GitHubat commit e5199b5
Sablier Vesting next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Sablier Vesting this skillLeoYeAI/openclaw-master-skills | 2.2k | — | ~4.5k | Automated safety check: Pass | MIT | |
| Cuda Streamspytorch/pytorch | 104k | — | ~796 | Automated safety check: Pass | Custom licence | |
| Monitor Streamruvnet/ruflo | 74k | — | ~188 | Automated safety check: Pass | MIT | |
| Streaming HTMLthedaviddias/Front-End-Checklist | 74k | — | ~553 | Automated safety check: Pass | MIT | |
| Streamingalsk1992/CloddsBot | 3k | — | ~810 | Automated safety check: Pass | MIT | |
| Assistant UI Streamingcompozy/compozy | 2.8k | — | ~813 | Automated safety check: Pass | MIT |
pytorch/pytorch
Manage tensor lifetimes across CUDA streams and decide whether recordstream is avoidable.
ruvnet/ruflo
Stream live swarm events using the Monitor tool for real-time observability
thedaviddias/Front-End-Checklist
A skill your agent uses when reviewing server-side rendering setup, Next.js App Router pages, or Node.js HTTP handlers to verify that HTML is streamed incrementally rather than buffered until…
alsk1992/CloddsBot
Response streaming configuration and real-time output. An agent skill from alsk1992/CloddsBot.
compozy/compozy
Guide for assistant-stream package and streaming protocols. An agent skill from compozy/compozy.
Guides agents to interactively discover customer requirements for live, bidirectional multi-agent AI systems that process continuous streams of multimodal data for real-time technical guidance and…
LeoYeAI/openclaw-master-skills
Manages pipelines on a DevOps quality and efficiency platform through its OpenAPI: list workspaces and templates, create, update, run and cancel pipelines, and read run records.
LeoYeAI/openclaw-master-skills
Patches OpenClaw's Feishu extension so an edited document triggers an isolated agent session that reads the doc and replies inline, turning it into a live chat space.
LeoYeAI/openclaw-master-skills
Multi-context memory management system for OpenClaw agents with group-isolated storage, global shared memory, workspace organization, and group-specific skills isolation.
LeoYeAI/openclaw-master-skills
Runs a brand's AI-search visibility work end to end: diagnosing how AI platforms represent it, repositioning it, producing AI-optimized content and monitoring ongoing mentions.
LeoYeAI/openclaw-master-skills
Installs and authenticates the gws CLI, then automates Gmail, Drive, Sheets, Calendar, Docs, Chat and Tasks with ready-made recipes, persona bundles and security audits.
LeoYeAI/openclaw-master-skills
Runs four advisor roles, a fitness coach, nutritionist, data analyst and TCM practitioner, to build a health profile and track workouts, diet and wellness over time.
Create and manage token vesting streams using the Sablier Lockup protocol (linear, dynamic, tranched). Sablier Vesting is an agent skill from LeoYeAI/openclaw-master-skills. Create and manage token vesting streams using the Sablier Lockup protocol (linear, dynamic, tranched).
Run `npx skills add LeoYeAI/openclaw-master-skills --skill sablier-vesting -a claude-code`. Or copy the skill folder (skills/token-vesting in LeoYeAI/openclaw-master-skills) into .claude/skills/sablier-vesting in your project. Claude Code loads it when a task matches its description.
Run `npx skills add LeoYeAI/openclaw-master-skills --skill sablier-vesting -a codex`. Or copy the skill folder (skills/token-vesting in LeoYeAI/openclaw-master-skills) into .agents/skills/sablier-vesting in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add LeoYeAI/openclaw-master-skills --skill sablier-vesting -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/sablier-vesting, .gemini/skills/sablier-vesting, .github/skills/sablier-vesting and .opencode/skills/sablier-vesting in your project.
Going by SKILL.md and its folder, Sablier Vesting needs the command-line tools its instructions call (bun) and credentials named ETH_PRIVATE_KEY and PRIVATE_KEY. Our summary lists: A credential in ETH_PRIVATE_KEY; A credential in PRIVATE_KEY.
SKILL.md names 3 domains. In commands or code: eth-mainnet.g.alchemy.com; the agent is likely to contact it when it follows the instructions. As links in the text: docs.sablier.com and github.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Sablier Vesting is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.5k tokens (SKILL.md is roughly 18k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Sablier Vesting: Cuda Streams (pytorch/pytorch, 104k stars), Monitor Stream (ruvnet/ruflo, 74k stars), Streaming HTML (thedaviddias/Front-End-Checklist, 74k stars) and Streaming (alsk1992/CloddsBot, 3k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
LeoYeAI (a GitHub user) maintains it in LeoYeAI/openclaw-master-skills, which has 2,161 GitHub stars. The repository holds 1,235 skills in this directory. The repository was last updated on July 20, 2026.
Source: LeoYeAI/openclaw-master-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.