check-portfolio
Read all agent on-chain positions via the check-portfolio.ts script. Use this instead of raw curl/cast calls to avoid hex encoding mistakes.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Read all agent on-chain positions via the check-portfolio.ts script. Use this instead of raw curl/cast calls to avoid hex encoding mistakes.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | check-portfolio |
| description | Read all agent on-chain positions via the check-portfolio.ts script. Use this instead of raw curl/cast calls to avoid hex encoding mistakes. |
Reads wallet balances, FeeLocker claimable DIEM, and Uniswap v3 LP positions via viem. Always use this script for on-chain reads — never construct raw hex calls manually.
node --env-file=.env --import tsx scripts/check-portfolio.ts
# Writes output to memory/logs/YYYY-MM-DD.md
Dry-run (no log written):
node --env-file=.env --import tsx scripts/check-portfolio.ts --no-log
| Field | Method | Notes |
|---|---|---|
| ETH balance | eth_getBalance | Warn if < 0.002 ETH |
| DIEM wallet | balanceOf(agent) on DIEM ERC-20 | |
| VVV/sVVV | balanceOf(agent) on VVV + VVV_STAKING | sVVV ≥ 1 = key active |
| FeeLocker | availableFees(feeOwner, token) | Both args required — see below |
| LP position | positions(tokenId) on NFPM_V3 | tokenId from memory/lp-positions.jsonl |
| Pool tick | slot0() on ETH_DIEM_V3 pool | In-range = tickLower < tick < tickUpper |
Both availableFees and claim take TWO address args (feeOwner, token):
// CORRECT
availableFees(agentAddress, ADDRESSES.DIEM)
claim(agentAddress, ADDRESSES.DIEM)
// WRONG — reverts
claim(ADDRESSES.DIEM) // missing feeOwner
Raw selector: availableFees(address,address) = 0x8296535a.
Always use format(tokenId, '064x') to produce the 32-byte padded hex for raw calls.
Never manually compute hex — use BigInt(tokenId).toString(16).padStart(64, '0').
// CORRECT
const calldata = '0x99fbab88' + BigInt(5119885).toString(16).padStart(64, '0');
// WRONG — off-by-one digits silently queries wrong position
const calldata = '0x99fbab88' + '000...0004e12d'; // 319789, not 5119885
| Asset | Value |
|---|---|
| ETH | 0.000988 (low) |
| sVVV | 4.54 (~$11,190) |
| FeeLocker | 6.75 DIEM claimable |
| LP tokenId 5119885 | [5000,5400] tick=5354 IN RANGE, liquidity=76479966455004343465 |
If FeeLocker > 0.1 DIEM: run scripts/claim.ts then scripts/stake-diem.ts.
If LP out of range: run scripts/reposition.ts (has guard — aborts if target range would be single-sided).
Decide how to allocate DIEM between Venice compute staking, WETH swap for x402 API access, Uniswap LP, and Aerodrome LP. Run once per tick before any capital movement.
Claim DIEM from FeeLocker, run accumulate-vs-build analysis, and route earnings to LP or Venice staking. Scheduled every 12 hours via aeon. DRY-RUN BY DEFAULT — pass --live to execute.
Launch a Liquid Protocol token with a LiquidPresaleVault presale. STAKE MODE ONLY (policy 2026-06-12) — depositors lock DIEM and always get it back; allocation is lock-to-earn. One vault per launch, 10% of supply, 60d default lock.
Working in the deploy-autonomous GitHub template repo — agent harness, identity layer, Venice provider, safety modules, and the create-identity CLI.
Proactive health check — skill failures, LP state, memory flags, FeeLocker balance. Run 3× daily to surface issues before they compound.
Mint a single-sided DIEM LP position in the ETH/DIEM Uniswap v3 1% pool on Base. Use when reinvesting claimed DIEM fees in accumulate mode.