[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71DCRPFRCXH4SST1J7MQRC0":3,"skill-same:01M71DCRPFRCXH4SST1J7MQRC0":619},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":15,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":27,"linkOnly":28,"markdownContent":29,"markdownBody":29,"frontMatter":30,"refName":31,"commitSha":32,"skillDirectory":5,"forksCount":33,"repositoryHtmlUrl":34,"repositoryHomepageUrl":35,"ownerHtmlUrl":36,"ownerBlogUrl":35,"ownerDescription":37,"updatedAt":38,"install":39,"resources":52},"01M71DCRPFRCXH4SST1J7MQRC0","percolator-cli-master",null,"x402agent\u002Fopenclawd-main","x402agent","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F243432990?v=4","01M71D6NTS5STS5KG360KMCGNJ","ClawdBot 🦞","01M71D6NVEWQSFGXWT7QDCXEM7",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fskill.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26],"cli","master","percolator cli master","2026-11-10 10:12:30",false,"# Percolator CLI Agent Skill Guide\n\nThis document describes how an AI agent can use the Percolator CLI and API to deploy and operate perpetual futures markets on Solana.\n\n## Overview\n\nPercolator is an on-chain perpetuals DEX that uses a \"slab\" architecture - a single account containing all market state. Markets can be configured with:\n- Standard or inverted price feeds (e.g., SOL\u002FUSD vs USD\u002FSOL)\n- Admin-controlled or decentralized oracle authority\n- Customizable risk parameters (margins, fees, liquidation thresholds)\n\n## Prerequisites\n\n```bash\n# Install dependencies\nnpm install\n\n# Set up Solana wallet\nexport SOLANA_KEYPAIR=~\u002F.config\u002Fsolana\u002Fid.json\n\n# Configure RPC endpoint\nexport SOLANA_RPC_URL=https:\u002F\u002Fapi.devnet.solana.com\n```\n\n## Global CLI Flags\n\nAll commands support these flags:\n- `--simulate` - Simulate transaction without sending\n- `--json` - Output results as JSON\n- `--config \u003Cpath>` - Custom config file path\n\n---\n\n## Market Deployment Scenarios\n\n### Scenario 1: Standard Market (No Inversion, No Admin)\n\nDeploy a standard SOL\u002FUSD perpetual market using Pyth oracle:\n\n```bash\n# 1. Create slab account (pre-allocate space)\nsolana create-account slab.json 200000 2SSnp35m7FQ7cRLNKGdW5UzjYFF6RBUNq7d3m5mqNByp\n\n# 2. Create vault token account for collateral\nspl-token create-account So11111111111111111111111111111111111111112 vault.json\n\n# 3. Initialize market\npercolator init-market \\\n  --slab \u003CSLAB_PUBKEY> \\\n  --mint So11111111111111111111111111111111111111112 \\\n  --vault \u003CVAULT_PUBKEY> \\\n  --index-feed-id ef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d \\\n  --max-staleness-secs 60 \\\n  --conf-filter-bps 100 \\\n  --invert 0 \\\n  --unit-scale 0 \\\n  --warmup-period 100 \\\n  --maintenance-margin-bps 500 \\\n  --initial-margin-bps 1000 \\\n  --trading-fee-bps 10 \\\n  --max-accounts 1000 \\\n  --new-account-fee 10000000 \\\n  --risk-reduction-threshold 1000000000 \\\n  --maintenance-fee-per-slot 1000 \\\n  --max-crank-staleness 100 \\\n  --liquidation-fee-bps 250 \\\n  --liquidation-fee-cap 100000000 \\\n  --liquidation-buffer-bps 50 \\\n  --min-liquidation-abs 1000000\n```\n\n### Scenario 2: Inverted Market (USD\u002FSOL Price)\n\nFor an inverted market where price represents USD\u002FSOL (how many SOL per USD):\n\n```bash\npercolator init-market \\\n  --slab \u003CSLAB_PUBKEY> \\\n  --mint So11111111111111111111111111111111111111112 \\\n  --vault \u003CVAULT_PUBKEY> \\\n  --index-feed-id ef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d \\\n  --max-staleness-secs 60 \\\n  --conf-filter-bps 100 \\\n  --invert 1 \\                    # \u003C-- Enable inversion\n  --unit-scale 1000 \\             # \u003C-- Scale for better precision\n  --warmup-period 100 \\\n  --maintenance-margin-bps 500 \\\n  --initial-margin-bps 1000 \\\n  --trading-fee-bps 10 \\\n  --max-accounts 1000 \\\n  --new-account-fee 10000000 \\\n  --risk-reduction-threshold 1000000000 \\\n  --maintenance-fee-per-slot 1000 \\\n  --max-crank-staleness 100 \\\n  --liquidation-fee-bps 250 \\\n  --liquidation-fee-cap 100000000 \\\n  --liquidation-buffer-bps 50 \\\n  --min-liquidation-abs 1000000\n```\n\n### Scenario 3: Market with Admin Oracle Authority\n\nFor testing or controlled environments, set up admin-controlled price feeds:\n\n```bash\n# 1. Initialize market normally first\n# 2. Set oracle authority to admin key\npercolator set-oracle-authority \\\n  --slab \u003CSLAB_PUBKEY> \\\n  --authority \u003CADMIN_PUBKEY>\n\n# 3. Push prices manually\npercolator push-oracle-price \\\n  --slab \u003CSLAB_PUBKEY> \\\n  --price 150000000 \\      # Price in e6 format (e.g., 150.0)\n  --timestamp $(date +%s)\n```\n\n### Scenario 4: Fully Decentralized (Remove Admin)\n\nTo make a market fully decentralized after setup:\n\n```bash\n# Update admin to burn address\npercolator update-admin \\\n  --slab \u003CSLAB_PUBKEY> \\\n  --new-admin 11111111111111111111111111111111\n\n# Remove oracle authority (require Pyth\u002FChainlink)\npercolator set-oracle-authority \\\n  --slab \u003CSLAB_PUBKEY> \\\n  --authority 11111111111111111111111111111111\n```\n\n### Scenario 5: Binary\u002FPremarket (Event-Based Resolution)\n\nBinary markets resolve to one of two outcomes (YES\u002FNO). Unlike perpetuals, they have a finite lifecycle ending in settlement.\n\n#### Creating a Binary Market\n\n```bash\n# 1. Create slab and vault as in Scenario 1\n\n# 2. Initialize as Hyperp mode (admin oracle, no external feed)\npercolator init-market \\\n  --slab \u003CSLAB_PUBKEY> \\\n  --mint So11111111111111111111111111111111111111112 \\\n  --index-feed-id 0000000000000000000000000000000000000000000000000000000000000000 \\\n  --initial-mark-price 500000 \\  # 50% probability (0.5 in e6)\n  --max-staleness-secs 3600 \\\n  # ... other params\n\n# 3. Set oracle authority (for pushing settlement price)\npercolator set-oracle-authority \\\n  --slab \u003CSLAB_PUBKEY> \\\n  --authority \u003CADMIN_PUBKEY>\n```\n\n#### Settlement Workflow\n\n```typescript\n\u002F\u002F 1. Push settlement price when outcome is known\n\u002F\u002F    YES outcome = 1_000_000 (1.0 in e6)\n\u002F\u002F    NO outcome  = 1 (essentially 0)\nawait encodePushOraclePrice({ priceE6: \"1000000\", timestamp: Date.now() \u002F 1000 });\n\n\u002F\u002F 2. Resolve market (blocks new activity)\nawait encodeResolveMarket();\n\n\u002F\u002F 3. Force-close all positions via KeeperCrank (paginated, 64 accounts per crank)\nwhile (hasOpenPositions) {\n  await encodeKeeperCrank({ callerIdx: 65535, allowPanic: false });\n}\n\n\u002F\u002F 4. Withdraw insurance fund (only after all positions closed)\nawait encodeWithdrawInsurance();\n\n\u002F\u002F 5. Users withdraw remaining capital and close accounts\nawait encodeWithdrawCollateral({ userIdx, amount });\nawait encodeCloseAccount({ userIdx });\n\n\u002F\u002F 6. Admin closes slab\nawait encodeCloseSlab();\n```\n\n#### Binary Market State Flags\n\n- **RESOLVED flag** (header offset 13, bit 0): When set:\n  - `InitUser`, `InitLP`, `DepositCollateral`, `Trade*`, `TopUpInsurance` are BLOCKED\n  - `WithdrawCollateral`, `CloseAccount` are ALLOWED\n  - `KeeperCrank` enters force-close branch (settles positions at admin oracle price)\n\n#### Settlement Math\n\n```\nPnL = position_size * (settlement_price - entry_price) \u002F 1_000_000\n\nExample (YES outcome, price=1_000_000):\n  LONG 100 @ 500_000 entry → PnL = 100 * (1_000_000 - 500_000) \u002F 1e6 = +50\n  SHORT 100 @ 500_000 entry → PnL = -100 * (1_000_000 - 500_000) \u002F 1e6 = -50\n```\n\n---\n\n## Account Management\n\n### Initialize LP Account\n\nLP accounts provide liquidity and can be configured with custom matchers:\n\n```bash\npercolator init-lp \\\n  --slab \u003CSLAB_PUBKEY> \\\n  --matcher-program \u003CMATCHER_PROGRAM_ID> \\\n  --matcher-context \u003CMATCHER_CONTEXT_PUBKEY> \\\n  --fee-payment 10000000\n```\n\n### Initialize User Account\n\n```bash\npercolator init-user \\\n  --slab \u003CSLAB_PUBKEY> \\\n  --fee-payment 10000000\n```\n\n### Deposit Collateral\n\n```bash\npercolator deposit \\\n  --slab \u003CSLAB_PUBKEY> \\\n  --user-idx 5 \\\n  --amount 1000000000   # 1 SOL in lamports\n```\n\n### Withdraw Collateral\n\n```bash\npercolator withdraw \\\n  --slab \u003CSLAB_PUBKEY> \\\n  --user-idx 5 \\\n  --amount 500000000    # 0.5 SOL\n```\n\n### Close Account\n\n```bash\npercolator close-account \\\n  --slab \u003CSLAB_PUBKEY> \\\n  --user-idx 5\n```\n\n---\n\n## Trading\n\n### Execute Trade via CPI (Recommended)\n\nTrades through CPI require matcher program validation:\n\n```bash\npercolator trade-cpi \\\n  --slab \u003CSLAB_PUBKEY> \\\n  --lp-idx 0 \\\n  --user-idx 5 \\\n  --size 50000000000 \\           # Positive = long, negative = short\n  --matcher-program \u003CMATCHER_ID> \\\n  --matcher-context \u003CMATCHER_CTX>\n```\n\n### Direct Trade (No CPI)\n\nFor LP-to-user trades without matcher:\n\n```bash\npercolator trade-nocpi \\\n  --slab \u003CSLAB_PUBKEY> \\\n  --lp-idx 0 \\\n  --user-idx 5 \\\n  --size -25000000000    # Short position\n```\n\n---\n\n## Market Operations\n\n### Run Keeper Crank\n\nExecutes funding rate updates and maintenance operations:\n\n```bash\n# Permissionless crank (default)\npercolator keeper-crank \\\n  --slab \u003CSLAB_PUBKEY> \\\n  --oracle \u003CORACLE_PUBKEY>\n\n# With custom compute units for complex operations\npercolator keeper-crank \\\n  --slab \u003CSLAB_PUBKEY> \\\n  --oracle \u003CORACLE_PUBKEY> \\\n  --compute-units 1400000\n```\n\n### Liquidate Undercollateralized Position\n\n```bash\npercolator liquidate-at-oracle \\\n  --slab \u003CSLAB_PUBKEY> \\\n  --target-idx 5 \\\n  --oracle \u003CORACLE_PUBKEY>\n```\n\n### Top Up Insurance Fund\n\n```bash\npercolator topup-insurance \\\n  --slab \u003CSLAB_PUBKEY> \\\n  --amount 10000000000  # 10 SOL\n```\n\n---\n\n## Configuration Updates (Admin Only)\n\n### Update Funding Rate Config\n\n```bash\npercolator update-config \\\n  --slab \u003CSLAB_PUBKEY> \\\n  --funding-horizon-slots 100 \\\n  --funding-k-bps 100 \\\n  --funding-inv-scale-notional-e6 1000000 \\\n  --funding-max-premium-bps 1000 \\\n  --funding-max-bps-per-slot 10 \\\n  --thresh-floor 1000000000 \\\n  --thresh-risk-bps 1000 \\\n  --thresh-update-interval-slots 100 \\\n  --thresh-step-bps 100 \\\n  --thresh-alpha-bps 500 \\\n  --thresh-min 100000000 \\\n  --thresh-max 10000000000 \\\n  --thresh-min-step 10000000\n```\n\n### Set Risk Threshold\n\n```bash\npercolator set-risk-threshold \\\n  --slab \u003CSLAB_PUBKEY> \\\n  --new-threshold 2000000000\n```\n\n### Set Maintenance Fee\n\n```bash\npercolator set-maintenance-fee \\\n  --slab \u003CSLAB_PUBKEY> \\\n  --new-fee 2000\n```\n\n---\n\n## State Inspection Commands\n\n### View Market Config\n\n```bash\npercolator slab-config --slab \u003CSLAB_PUBKEY>\n```\n\n### View Engine State\n\n```bash\npercolator slab-engine --slab \u003CSLAB_PUBKEY>\n```\n\n### View Risk Parameters\n\n```bash\npercolator slab-params --slab \u003CSLAB_PUBKEY>\n```\n\n### View Account State\n\n```bash\npercolator slab-account --slab \u003CSLAB_PUBKEY> --idx 5\n```\n\n### List All Accounts\n\n```bash\npercolator slab-accounts --slab \u003CSLAB_PUBKEY>\n```\n\n### Get Best Price\n\n```bash\npercolator best-price --slab \u003CSLAB_PUBKEY>\n```\n\n### List All Markets\n\n```bash\npercolator list-markets\n```\n\n---\n\n## Programmatic API Usage\n\n### TypeScript SDK Pattern\n\n```typescript\nimport { Connection, Keypair, PublicKey, Transaction, ComputeBudgetProgram, sendAndConfirmTransaction, SYSVAR_CLOCK_PUBKEY } from \"@solana\u002Fweb3.js\";\nimport { TOKEN_PROGRAM_ID, NATIVE_MINT } from \"@solana\u002Fspl-token\";\nimport { fetchSlab, parseEngine, parseConfig, parseAccount, parseUsedIndices, AccountKind } from \".\u002Fsrc\u002Fsolana\u002Fslab.js\";\nimport { encodeKeeperCrank, encodeTradeCpi, encodeWithdrawCollateral, encodeDepositCollateral } from \".\u002Fsrc\u002Fabi\u002Finstructions.js\";\nimport { buildAccountMetas, ACCOUNTS_KEEPER_CRANK, ACCOUNTS_TRADE_CPI, ACCOUNTS_WITHDRAW_COLLATERAL, ACCOUNTS_DEPOSIT_COLLATERAL } from \".\u002Fsrc\u002Fabi\u002Faccounts.js\";\nimport { buildIx } from \".\u002Fsrc\u002Fruntime\u002Ftx.js\";\n\nconst PROGRAM_ID = new PublicKey(\"2SSnp35m7FQ7cRLNKGdW5UzjYFF6RBUNq7d3m5mqNByp\");\n\n\u002F\u002F Read market state\nasync function getMarketState(conn: Connection, slab: PublicKey) {\n  const data = await fetchSlab(conn, slab);\n  const engine = parseEngine(data);\n  const config = parseConfig(data);\n\n  const accounts = [];\n  for (const idx of parseUsedIndices(data)) {\n    const acc = parseAccount(data, idx);\n    if (acc) {\n      accounts.push({\n        idx,\n        kind: acc.kind === AccountKind.LP ? \"LP\" : \"USER\",\n        position: BigInt(acc.positionSize || 0),\n        capital: BigInt(acc.capital || 0),\n        pnl: BigInt(acc.pnl || 0),\n        entryPrice: acc.entryPriceE6,\n      });\n    }\n  }\n\n  return { engine, config, accounts };\n}\n\n\u002F\u002F Deposit collateral\nasync function deposit(conn: Connection, payer: Keypair, slab: PublicKey, userIdx: number, amount: bigint) {\n  const { config } = await getMarketState(conn, slab);\n\n  const keys = buildAccountMetas(ACCOUNTS_DEPOSIT_COLLATERAL, [\n    payer.publicKey,           \u002F\u002F user\n    slab,                      \u002F\u002F slab\n    userAta,                   \u002F\u002F userAta\n    config.vaultPubkey,        \u002F\u002F vault\n    TOKEN_PROGRAM_ID,          \u002F\u002F tokenProgram\n    SYSVAR_CLOCK_PUBKEY,       \u002F\u002F clock\n  ]);\n\n  const ix = buildIx({\n    programId: PROGRAM_ID,\n    keys,\n    data: encodeDepositCollateral({ userIdx, amount: amount.toString() }),\n  });\n\n  const tx = new Transaction().add(\n    ComputeBudgetProgram.setComputeUnitLimit({ units: 200_000 }),\n    ix\n  );\n\n  await sendAndConfirmTransaction(conn, tx, [payer]);\n}\n\n\u002F\u002F Execute trade\nasync function trade(conn: Connection, payer: Keypair, slab: PublicKey, lpIdx: number, userIdx: number, size: bigint, matcherProgram: PublicKey, matcherContext: PublicKey) {\n  const { config } = await getMarketState(conn, slab);\n\n  \u002F\u002F Derive LP PDA\n  const [lpPda] = PublicKey.findProgramAddressSync(\n    [Buffer.from(\"lp\"), slab.toBuffer(), Buffer.from([lpIdx])],\n    PROGRAM_ID\n  );\n\n  const keys = buildAccountMetas(ACCOUNTS_TRADE_CPI, [\n    payer.publicKey,           \u002F\u002F user (signer)\n    lpOwnerPubkey,             \u002F\u002F lpOwner (NOT a signer - LP delegated to matcher)\n    slab,                      \u002F\u002F slab\n    SYSVAR_CLOCK_PUBKEY,       \u002F\u002F clock\n    config.indexFeedId,        \u002F\u002F oracle\n    matcherProgram,            \u002F\u002F matcherProg\n    matcherContext,            \u002F\u002F matcherCtx\n    lpPda,                     \u002F\u002F lpPda\n  ]);\n\n  const ix = buildIx({\n    programId: PROGRAM_ID,\n    keys,\n    data: encodeTradeCpi({ lpIdx, userIdx, size: size.toString() }),\n  });\n\n  const tx = new Transaction().add(\n    ComputeBudgetProgram.setComputeUnitLimit({ units: 400_000 }),\n    ix\n  );\n\n  await sendAndConfirmTransaction(conn, tx, [payer]);\n}\n\n\u002F\u002F Run keeper crank\nasync function crank(conn: Connection, payer: Keypair, slab: PublicKey, oracle: PublicKey) {\n  const keys = buildAccountMetas(ACCOUNTS_KEEPER_CRANK, [\n    payer.publicKey,\n    slab,\n    SYSVAR_CLOCK_PUBKEY,\n    oracle,\n  ]);\n\n  const ix = buildIx({\n    programId: PROGRAM_ID,\n    keys,\n    data: encodeKeeperCrank({ callerIdx: 65535, allowPanic: false }),\n  });\n\n  const tx = new Transaction().add(\n    ComputeBudgetProgram.setComputeUnitLimit({ units: 1_400_000 }),\n    ix\n  );\n\n  await sendAndConfirmTransaction(conn, tx, [payer]);\n}\n```\n\n---\n\n## Key Concepts\n\n### PnL Calculation\n\n- **Realized PnL**: Stored in account's `pnl` field after closing positions\n- **Unrealized PnL**: `position * (current_price - entry_price) \u002F 1e6`\n- For **LONG** positions: profit when price goes UP\n- For **SHORT** positions: profit when price goes DOWN\n\n### Insurance Fund\n\n- Surplus = `insurance_balance - threshold`\n- Profit withdrawals limited to insurance surplus\n- Threshold auto-adjusts based on LP risk exposure\n\n### Price Units\n\n- All prices stored in e6 format (multiply by 1,000,000)\n- Example: $150.50 = 150500000\n- Inverted markets: price represents reciprocal (USD\u002FSOL instead of SOL\u002FUSD)\n\n### Position Size\n\n- Positive size = LONG position\n- Negative size = SHORT position\n- Size in base units (scaled by `unit_scale` if configured)\n\n---\n\n## Common Pyth Feed IDs\n\n| Asset | Feed ID (Hex) |\n|-------|---------------|\n| SOL\u002FUSD | ef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d |\n| BTC\u002FUSD | e62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43 |\n| ETH\u002FUSD | ff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace |\n\n---\n\n## Error Handling\n\nCommon errors and solutions:\n\n| Error | Cause | Solution |\n|-------|-------|----------|\n| `AccountMismatch` | Wrong account order | Check ACCOUNTS_* arrays for correct order |\n| `OracleStale` | Price too old | Run keeper-crank or check oracle |\n| `InsufficientMargin` | Not enough collateral | Deposit more or reduce position |\n| `InsuranceInsufficient` | Insurance below threshold | Cannot withdraw profit |\n| `NotAuthorized` | Wrong signer | Use correct admin\u002Fauthority key |\n\n---\n\n## Creating Secure Matcher Contexts\n\n### Security Requirements\n\nWhen creating an LP with a custom matcher, you **MUST** use an atomic compound transaction to prevent race conditions. The matcher context must store the LP PDA for signature verification.\n\n### Why Atomicity Matters\n\nThe matcher context stores the LP PDA that will sign trade calls. If you create the matcher context in a separate transaction from the LP, an attacker could:\n1. Initialize your matcher context with their own LP PDA\n2. Use your context to execute unauthorized trades\n\n### Correct: Atomic Compound Transaction\n\n```typescript\n\u002F\u002F All three operations in ONE atomic transaction\nconst atomicTx = new Transaction().add(\n  ComputeBudgetProgram.setComputeUnitLimit({ units: 300000 }),\n\n  \u002F\u002F 1. Create matcher context account (owned by matcher program)\n  SystemProgram.createAccount({\n    fromPubkey: payer.publicKey,\n    newAccountPubkey: matcherCtxKp.publicKey,\n    lamports: matcherRent,\n    space: MATCHER_CTX_SIZE,  \u002F\u002F 320 bytes minimum\n    programId: MATCHER_PROGRAM_ID,\n  }),\n\n  \u002F\u002F 2. Initialize matcher context WITH LP PDA\n  {\n    programId: MATCHER_PROGRAM_ID,\n    keys: [\n      { pubkey: lpPda, isSigner: false, isWritable: false },  \u002F\u002F LP PDA stored for verification\n      { pubkey: matcherCtxKp.publicKey, isSigner: false, isWritable: true },\n    ],\n    data: initMatcherData,\n  },\n\n  \u002F\u002F 3. Initialize LP in percolator (references the matcher context)\n  buildIx({ programId: PROGRAM_ID, keys: initLpKeys, data: initLpData })\n);\n\nawait sendAndConfirmTransaction(conn, atomicTx, [payer, matcherCtxKp]);\n```\n\n### Critical: Finding the Correct LP Index\n\nThe percolator program uses a **LIFO freelist** for slot allocation:\n\n```rust\n\u002F\u002F Percolator's allocate_slot():\nlet idx = self.free_head;\nself.free_head = self.next_free[idx as usize];  \u002F\u002F LIFO pop\n```\n\n**Important:** This differs from a bitmap scan after GC operations:\n\n| Scenario | Bitmap Scan | LIFO Freelist |\n|----------|-------------|---------------|\n| Fresh market (sequential alloc) | Same | Same |\n| After freeing slot 1, then slot 2 | Returns 1 (lowest free) | Returns 2 (most recently freed) |\n\n```typescript\n\u002F\u002F WRONG: May skip freed slots entirely\nconst lpIndex = Math.max(...usedIndices) + 1;\n\n\u002F\u002F WRONG after GC: Bitmap scan doesn't match LIFO order\nconst usedSet = new Set(parseUsedIndices(slabData));\nlet lpIndex = 0;\nwhile (usedSet.has(lpIndex)) {\n  lpIndex++;\n}\n\n\u002F\u002F SAFE: For fresh markets only (no GC history), bitmap scan works.\n\u002F\u002F After GC, you must read the freelist from the slab or use retry logic.\n```\n\n### Matcher Security Checks\n\n**CRITICAL**: The matcher program MUST error if the LP PDA is not a signer. The percolator program signs the LP PDA via `invoke_signed` during CPI - if the matcher accepts unsigned calls, attackers can bypass LP authorization and execute unauthorized trades.\n\nThe matcher program MUST verify:\n\n```rust\n\u002F\u002F 1. Context must be initialized before accepting trades\nif !MatcherCtx::is_initialized(&data) {\n    return Err(ProgramError::UninitializedAccount);\n}\n\n\u002F\u002F 2. LP PDA must match the stored PDA (prevents unauthorized callers)\nif !lp_pda.is_signer {\n    return Err(ProgramError::MissingRequiredSignature);\n}\nlet stored_pda = Pubkey::new_from_array(ctx.lp_pda);\nif *lp_pda.key != stored_pda {\n    return Err(ProgramError::InvalidAccountData);\n}\n\n\u002F\u002F 3. Cannot re-initialize (prevents state manipulation)\nif MatcherCtx::is_initialized(&data) {\n    return Err(ProgramError::AccountAlreadyInitialized);\n}\n```\n\n### Unified MatcherCtx Layout (Version 3)\n\n```\nOffset  Size  Field                    Description\n0       8     magic                    0x5045_5243_4d41_5443 (\"PERCMATC\")\n8       4     version                  3\n12      1     kind                     0=Passive, 1=vAMM\n13      3     _pad0\n16      32    lp_pda                   LP PDA for signature verification\n48      4     trading_fee_bps          Fee on fills (e.g., 5 = 0.05%)\n52      4     base_spread_bps          Minimum spread (e.g., 10 = 0.10%)\n56      4     max_total_bps            Cap on total cost\n60      4     impact_k_bps             Impact at full liquidity\n64      16    liquidity_notional_e6    Quoting depth (u128)\n80      16    max_fill_abs             Max fill per trade (u128)\n96      16    inventory_base           LP inventory state (i128)\n112     8     last_oracle_price_e6     Last oracle price seen\n120     8     last_exec_price_e6       Last execution price\n128     16    max_inventory_abs        Inventory limit (u128)\n144     112   _reserved\nTotal: 256 bytes (stored at offset 64 in 320-byte context account)\n```\n\n---\n\n## Deployment Checklist\n\n1. [ ] Create slab account with sufficient space (200KB recommended)\n2. [ ] Create vault token account owned by vault PDA\n3. [ ] Initialize market with correct parameters\n4. [ ] **Use atomic transaction** for LP + matcher context creation\n5. [ ] Verify LP PDA stored in matcher context matches expected\n6. [ ] Fund insurance with initial capital\n7. [ ] Test with small trades before production\n8. [ ] Set up keeper bot for regular cranks\n9. [ ] (Optional) Remove admin for decentralization\n\n---\n\n## Program Deployment\n\n### Standard Deployment\n\n```bash\ncd percolator-prog\n\n# Build program\ncargo build-sbf\n\n# Deploy to devnet\nsolana program deploy target\u002Fdeploy\u002Fpercolator_prog.so \\\n  --program-id \u003CPROGRAM_KEYPAIR> \\\n  -u devnet\n```\n\n### With unsafe_close Feature\n\nThe `unsafe_close` feature allows closing slabs without draining vault\u002Finsurance first. Useful for recovering rent from abandoned test markets.\n\n```bash\n# Build with feature\ncargo build-sbf --features unsafe_close\n\n# Deploy\nsolana program deploy target\u002Fdeploy\u002Fpercolator_prog.so \\\n  --program-id \u003CEXISTING_PROGRAM_ID> \\\n  -u devnet\n\n# Close old slab (bypasses vault\u002Finsurance validation)\nnpx tsx scripts\u002Fclose-old-slab.ts\n```\n\n**Warning**: Only enable `unsafe_close` on devnet\u002Ftest deployments. Production should NOT have this feature.\n\n---\n\n## Binary Market CLI Commands\n\n### Create Binary Market\n\n```bash\n# 1. Create slab (same as perpetual)\nsolana-keygen new -o slab-keypair.json\nSLAB=$(solana-keygen pubkey slab-keypair.json)\nsolana create-account slab-keypair.json 200000 2SSnp35m7FQ7cRLNKGdW5UzjYFF6RBUNq7d3m5mqNByp -u devnet\n\n# 2. Create vault\nspl-token create-account So11111111111111111111111111111111111111112 --owner \u003CVAULT_PDA>\n\n# 3. Initialize as binary market (hyperp mode, no oracle feed)\nnpx tsx src\u002Fcli.ts init-market \\\n  --slab $SLAB \\\n  --mint So11111111111111111111111111111111111111112 \\\n  --index-feed-id 0000000000000000000000000000000000000000000000000000000000000000 \\\n  --initial-mark-price 500000 \\\n  --max-staleness-secs 86400 \\\n  -u devnet\n\n# 4. Set admin as oracle authority\nnode dist\u002Findex.js set-oracle-authority --slab $SLAB --authority \u003CADMIN> --rpc https:\u002F\u002Fapi.devnet.solana.com\n```\n\n### Resolve Binary Market\n\n```bash\n# 1. Push settlement price (YES=1000000, NO=1)\nnode dist\u002Findex.js push-oracle-price --slab $SLAB --price 1000000 --rpc https:\u002F\u002Fapi.devnet.solana.com\n\n# 2. Resolve market (sets RESOLVED flag, blocks new trading)\nnode dist\u002Findex.js resolve-market --slab $SLAB --rpc https:\u002F\u002Fapi.devnet.solana.com\n\n# 3. Force-close all positions (run until all closed)\n# The crank will settle each position at the admin oracle price\nwhile node dist\u002Findex.js slab:engine --slab $SLAB --rpc https:\u002F\u002Fapi.devnet.solana.com | grep \"Total Open Interest\" | grep -v \": *0\"; do\n  node dist\u002Findex.js keeper-crank --slab $SLAB --oracle $ORACLE --rpc https:\u002F\u002Fapi.devnet.solana.com\n  sleep 2\ndone\n\n# 4. Withdraw insurance fund (after all positions closed)\nnode dist\u002Findex.js withdraw-insurance --slab $SLAB --rpc https:\u002F\u002Fapi.devnet.solana.com\n\n# 5. Users withdraw remaining capital\nnode dist\u002Findex.js withdraw --slab $SLAB --user-idx \u003CIDX> --amount \u003CAMT> --rpc https:\u002F\u002Fapi.devnet.solana.com\n\n# 6. Close user accounts (optional, recovers rent)\nnode dist\u002Findex.js close-account --slab $SLAB --user-idx \u003CIDX> --rpc https:\u002F\u002Fapi.devnet.solana.com\n\n# 7. Close slab (admin only, after all accounts closed)\nnode dist\u002Findex.js close-slab --slab $SLAB --rpc https:\u002F\u002Fapi.devnet.solana.com\n```\n\n### Verify Binary Market Instructions\n\n```bash\n# Test encoding (offline)\nnpx tsx scripts\u002Fverify-binary-instructions.ts\n\n# Test on devnet (simulates against real program)\nnpx tsx scripts\u002Fverify-binary-devnet.ts\n```\n",{},"main","58c363db4179b9a612289d4a328d877ac3e7e04d",1,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main","https:\u002F\u002Fsolanaclawd.com","https:\u002F\u002Fgithub.com\u002Fx402agent","The official Github of ClawdBot.","2026-05-16 13:16:08",{"source":7,"skillName":5,"commands":40,"prompt":50,"zipAvailable":51},[41,44,47],{"tool":42,"command":43},"npx","npx skills add x402agent\u002Fopenclawd-main --skill percolator-cli-master",{"tool":45,"command":46},"bunx","bunx skills add x402agent\u002Fopenclawd-main --skill percolator-cli-master",{"tool":48,"command":49},"pnpm","pnpm dlx skills add x402agent\u002Fopenclawd-main --skill percolator-cli-master","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fskill.md",true,[53,59,63,69,73,77,81,85,89,93,97,101,107,111,115,119,123,127,131,135,139,143,147,151,155,159,163,167,171,175,179,183,187,191,195,199,203,207,211,215,219,223,227,231,235,239,243,247,251,255,259,263,267,271,275,279,283,287,291,295,299,303,307,311,315,319,323,327,331,335,339,343,347,351,355,359,363,367,371,375,379,383,387,391,395,399,403,407,411,415,419,423,427,431,435,439,443,447,451,455,459,463,467,471,475,479,483,487,491,495,499,503,507,511,515,519,523,527,531,535,539,543,547,551,555,559,563,567,571,575,579,583,587,591,595,599,603,607,611,615],{"path":54,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":57,"sourceHtmlUrl":58},".env.example","OTHER","其他",82,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002F.env.example",{"path":60,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":61,"sourceHtmlUrl":62},".gitignore",41,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002F.gitignore",{"path":64,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":67,"sourceHtmlUrl":68},"DEPLOY_CHECKLIST.md","REFERENCE","参考文档",10005,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002FDEPLOY_CHECKLIST.md",{"path":70,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":71,"sourceHtmlUrl":72},"devnet-market.json",1534,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fdevnet-market.json",{"path":74,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":75,"sourceHtmlUrl":76},"docs\u002Faudit\u002Flp_issue.md",9206,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fdocs\u002Faudit\u002Flp_issue.md",{"path":78,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":79,"sourceHtmlUrl":80},"docs\u002Faudit\u002Fstatus.md",14089,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fdocs\u002Faudit\u002Fstatus.md",{"path":82,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":83,"sourceHtmlUrl":84},"immutable-market-keypair.json",222,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fimmutable-market-keypair.json",{"path":86,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":87,"sourceHtmlUrl":88},"issue.md",20102,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fissue.md",{"path":90,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":92,"sourceHtmlUrl":15},"LICENSE","许可证",10255,{"path":94,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":95,"sourceHtmlUrl":96},"mainnet-market.json",1743,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fmainnet-market.json",{"path":98,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":99,"sourceHtmlUrl":100},"market.json",5017,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fmarket.json",{"path":102,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":105,"sourceHtmlUrl":106},"measure-cu-scaling.sh","SCRIPT","脚本",2706,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fmeasure-cu-scaling.sh",{"path":108,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":109,"sourceHtmlUrl":110},"package.json",850,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fpackage.json",{"path":112,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":113,"sourceHtmlUrl":114},"percolator-cli.json",180,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fpercolator-cli.json",{"path":116,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":117,"sourceHtmlUrl":118},"pnpm-lock.yaml",73743,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fpnpm-lock.yaml",{"path":120,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":121,"sourceHtmlUrl":122},"README.md",21006,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002FREADME.md",{"path":124,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":125,"sourceHtmlUrl":126},"scripts\u002F_default-market.ts",8544,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fscripts\u002F_default-market.ts",{"path":128,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":129,"sourceHtmlUrl":130},"scripts\u002Fadd-vamm-lp.ts",8483,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fscripts\u002Fadd-vamm-lp.ts",{"path":132,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":133,"sourceHtmlUrl":134},"scripts\u002Fadmin-free-test.ts",7889,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fscripts\u002Fadmin-free-test.ts",{"path":136,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":137,"sourceHtmlUrl":138},"scripts\u002Fadversarial-test.ts",14002,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fscripts\u002Fadversarial-test.ts",{"path":140,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":141,"sourceHtmlUrl":142},"scripts\u002Fchallenge-analyze.sh",17371,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fscripts\u002Fchallenge-analyze.sh",{"path":144,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":145,"sourceHtmlUrl":146},"scripts\u002Fcheck-authorities.ts",15864,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fscripts\u002Fcheck-authorities.ts",{"path":148,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":149,"sourceHtmlUrl":150},"scripts\u002Fcheck-conservation.ts",3493,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fscripts\u002Fcheck-conservation.ts",{"path":152,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":153,"sourceHtmlUrl":154},"scripts\u002Fcheck-funding.ts",2596,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fscripts\u002Fcheck-funding.ts",{"path":156,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":157,"sourceHtmlUrl":158},"scripts\u002Fcheck-indices.ts",808,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fscripts\u002Fcheck-indices.ts",{"path":160,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":161,"sourceHtmlUrl":162},"scripts\u002Fcheck-liquidation.ts",2848,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fscripts\u002Fcheck-liquidation.ts",{"path":164,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":165,"sourceHtmlUrl":166},"scripts\u002Fcheck-maint-fees.ts",12814,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fscripts\u002Fcheck-maint-fees.ts",{"path":168,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":169,"sourceHtmlUrl":170},"scripts\u002Fcheck-params.ts",943,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fscripts\u002Fcheck-params.ts",{"path":172,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":173,"sourceHtmlUrl":174},"scripts\u002Fclose-all-slabs.ts",3475,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fscripts\u002Fclose-all-slabs.ts",{"path":176,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":177,"sourceHtmlUrl":178},"scripts\u002Fclose-slabs.ts",3066,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fscripts\u002Fclose-slabs.ts",{"path":180,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":181,"sourceHtmlUrl":182},"scripts\u002Fcomplete-setup.ts",9753,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fscripts\u002Fcomplete-setup.ts",{"path":184,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":185,"sourceHtmlUrl":186},"scripts\u002Fcrank-bot.ts",4624,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fscripts\u002Fcrank-bot.ts",{"path":188,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":189,"sourceHtmlUrl":190},"scripts\u002Fdeploy-immutable.sh",14065,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fscripts\u002Fdeploy-immutable.sh",{"path":192,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":193,"sourceHtmlUrl":194},"scripts\u002Fdisable-oracle-authority.ts",1678,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fscripts\u002Fdisable-oracle-authority.ts",{"path":196,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":197,"sourceHtmlUrl":198},"scripts\u002Fdump-market.ts",10306,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fscripts\u002Fdump-market.ts",{"path":200,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":201,"sourceHtmlUrl":202},"scripts\u002Fdump-state.ts",9910,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fscripts\u002Fdump-state.ts",{"path":204,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":205,"sourceHtmlUrl":206},"scripts\u002Ffind-user.ts",1394,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fscripts\u002Ffind-user.ts",{"path":208,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":209,"sourceHtmlUrl":210},"scripts\u002Ffund-lp.ts",1983,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fscripts\u002Ffund-lp.ts",{"path":212,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":213,"sourceHtmlUrl":214},"scripts\u002Flive-verify.ts",30479,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fscripts\u002Flive-verify.ts",{"path":216,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":217,"sourceHtmlUrl":218},"scripts\u002Fmainnet-crank.ts",3008,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fscripts\u002Fmainnet-crank.ts",{"path":220,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":221,"sourceHtmlUrl":222},"scripts\u002Fmainnet-liquidator.ts",5847,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fscripts\u002Fmainnet-liquidator.ts",{"path":224,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":225,"sourceHtmlUrl":226},"scripts\u002Fmainnet-watch.ts",6636,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fscripts\u002Fmainnet-watch.ts",{"path":228,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":229,"sourceHtmlUrl":230},"scripts\u002Fmonitor-soft-burn.ts",4106,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fscripts\u002Fmonitor-soft-burn.ts",{"path":232,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":233,"sourceHtmlUrl":234},"scripts\u002Frandom-traders.ts",37124,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fscripts\u002Frandom-traders.ts",{"path":236,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":237,"sourceHtmlUrl":238},"scripts\u002Fset-maintenance-fee.ts",2595,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fscripts\u002Fset-maintenance-fee.ts",{"path":240,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":241,"sourceHtmlUrl":242},"scripts\u002Fsetup-devnet-market.ts",21049,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fscripts\u002Fsetup-devnet-market.ts",{"path":244,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":245,"sourceHtmlUrl":246},"scripts\u002Fsetup-mainnet-market.ts",18557,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fscripts\u002Fsetup-mainnet-market.ts",{"path":248,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":249,"sourceHtmlUrl":250},"scripts\u002Fshow-lp-contexts.ts",1226,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fscripts\u002Fshow-lp-contexts.ts",{"path":252,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":253,"sourceHtmlUrl":254},"scripts\u002Fshow-lp-owners.ts",1441,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fscripts\u002Fshow-lp-owners.ts",{"path":256,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":257,"sourceHtmlUrl":258},"scripts\u002Fstress-bankrun.ts",18063,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fscripts\u002Fstress-bankrun.ts",{"path":260,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":261,"sourceHtmlUrl":262},"scripts\u002Ftest-comprehensive.ts",39914,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fscripts\u002Ftest-comprehensive.ts",{"path":264,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":265,"sourceHtmlUrl":266},"scripts\u002Ftest-deep-invariants.ts",20262,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fscripts\u002Ftest-deep-invariants.ts",{"path":268,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":269,"sourceHtmlUrl":270},"scripts\u002Ftest-edge-cases.ts",31762,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fscripts\u002Ftest-edge-cases.ts",{"path":272,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":273,"sourceHtmlUrl":274},"scripts\u002Ftest-happy-path.ts",38018,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fscripts\u002Ftest-happy-path.ts",{"path":276,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":277,"sourceHtmlUrl":278},"scripts\u002Ftest-hyperp-market.ts",25822,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fscripts\u002Ftest-hyperp-market.ts",{"path":280,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":281,"sourceHtmlUrl":282},"scripts\u002Ftest-keeper-candidates.ts",19227,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fscripts\u002Ftest-keeper-candidates.ts",{"path":284,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":285,"sourceHtmlUrl":286},"scripts\u002Ftest-profitable-withdrawal.ts",15362,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fscripts\u002Ftest-profitable-withdrawal.ts",{"path":288,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":289,"sourceHtmlUrl":290},"setup-cu-test.sh",1872,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fsetup-cu-test.sh",{"path":292,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":293,"sourceHtmlUrl":294},"src\u002Fabi\u002Faccounts.ts",15291,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fsrc\u002Fabi\u002Faccounts.ts",{"path":296,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":297,"sourceHtmlUrl":298},"src\u002Fabi\u002Fencode.ts",3054,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fsrc\u002Fabi\u002Fencode.ts",{"path":300,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":301,"sourceHtmlUrl":302},"src\u002Fabi\u002Ferrors.ts",5109,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fsrc\u002Fabi\u002Ferrors.ts",{"path":304,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":305,"sourceHtmlUrl":306},"src\u002Fabi\u002Finstructions.ts",14667,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fsrc\u002Fabi\u002Finstructions.ts",{"path":308,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":309,"sourceHtmlUrl":310},"src\u002Fcli.ts",4229,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fsrc\u002Fcli.ts",{"path":312,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":313,"sourceHtmlUrl":314},"src\u002Fcommands\u002Faudit-cu.ts",7191,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fsrc\u002Fcommands\u002Faudit-cu.ts",{"path":316,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":317,"sourceHtmlUrl":318},"src\u002Fcommands\u002Fbest-price.ts",9109,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fsrc\u002Fcommands\u002Fbest-price.ts",{"path":320,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":321,"sourceHtmlUrl":322},"src\u002Fcommands\u002Fclose-account.ts",2567,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fsrc\u002Fcommands\u002Fclose-account.ts",{"path":324,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":325,"sourceHtmlUrl":326},"src\u002Fcommands\u002Fclose-all-slabs.ts",4909,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fsrc\u002Fcommands\u002Fclose-all-slabs.ts",{"path":328,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":329,"sourceHtmlUrl":330},"src\u002Fcommands\u002Fclose-slab.ts",2389,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fsrc\u002Fcommands\u002Fclose-slab.ts",{"path":332,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":333,"sourceHtmlUrl":334},"src\u002Fcommands\u002Fdeposit.ts",2495,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fsrc\u002Fcommands\u002Fdeposit.ts",{"path":336,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":337,"sourceHtmlUrl":338},"src\u002Fcommands\u002Finit-lp.ts",2657,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fsrc\u002Fcommands\u002Finit-lp.ts",{"path":340,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":341,"sourceHtmlUrl":342},"src\u002Fcommands\u002Finit-market.ts",7261,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fsrc\u002Fcommands\u002Finit-market.ts",{"path":344,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":345,"sourceHtmlUrl":346},"src\u002Fcommands\u002Finit-user.ts",2323,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fsrc\u002Fcommands\u002Finit-user.ts",{"path":348,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":349,"sourceHtmlUrl":350},"src\u002Fcommands\u002Fkeeper-crank.ts",5542,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fsrc\u002Fcommands\u002Fkeeper-crank.ts",{"path":352,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":353,"sourceHtmlUrl":354},"src\u002Fcommands\u002Fliquidate-at-oracle.ts",2114,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fsrc\u002Fcommands\u002Fliquidate-at-oracle.ts",{"path":356,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":357,"sourceHtmlUrl":358},"src\u002Fcommands\u002Flist-markets.ts",4534,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fsrc\u002Fcommands\u002Flist-markets.ts",{"path":360,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":361,"sourceHtmlUrl":362},"src\u002Fcommands\u002Fpush-oracle-price.ts",1848,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fsrc\u002Fcommands\u002Fpush-oracle-price.ts",{"path":364,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":365,"sourceHtmlUrl":366},"src\u002Fcommands\u002Fresolve-market.ts",1730,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fsrc\u002Fcommands\u002Fresolve-market.ts",{"path":368,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":369,"sourceHtmlUrl":370},"src\u002Fcommands\u002Fset-oracle-authority.ts",2001,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fsrc\u002Fcommands\u002Fset-oracle-authority.ts",{"path":372,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":373,"sourceHtmlUrl":374},"src\u002Fcommands\u002Fslab-account.ts",4983,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fsrc\u002Fcommands\u002Fslab-account.ts",{"path":376,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":377,"sourceHtmlUrl":378},"src\u002Fcommands\u002Fslab-accounts.ts",2844,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fsrc\u002Fcommands\u002Fslab-accounts.ts",{"path":380,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":381,"sourceHtmlUrl":382},"src\u002Fcommands\u002Fslab-bitmap.ts",2360,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fsrc\u002Fcommands\u002Fslab-bitmap.ts",{"path":384,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":385,"sourceHtmlUrl":386},"src\u002Fcommands\u002Fslab-config.ts",2579,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fsrc\u002Fcommands\u002Fslab-config.ts",{"path":388,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":389,"sourceHtmlUrl":390},"src\u002Fcommands\u002Fslab-engine.ts",5658,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fsrc\u002Fcommands\u002Fslab-engine.ts",{"path":392,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":393,"sourceHtmlUrl":394},"src\u002Fcommands\u002Fslab-get.ts",3306,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fsrc\u002Fcommands\u002Fslab-get.ts",{"path":396,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":397,"sourceHtmlUrl":398},"src\u002Fcommands\u002Fslab-header.ts",1984,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fsrc\u002Fcommands\u002Fslab-header.ts",{"path":400,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":401,"sourceHtmlUrl":402},"src\u002Fcommands\u002Fslab-nonce.ts",991,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fsrc\u002Fcommands\u002Fslab-nonce.ts",{"path":404,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":405,"sourceHtmlUrl":406},"src\u002Fcommands\u002Fslab-params.ts",4080,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fsrc\u002Fcommands\u002Fslab-params.ts",{"path":408,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":409,"sourceHtmlUrl":410},"src\u002Fcommands\u002Ftopup-insurance.ts",2312,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fsrc\u002Fcommands\u002Ftopup-insurance.ts",{"path":412,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":413,"sourceHtmlUrl":414},"src\u002Fcommands\u002Ftrade-cpi.ts",3381,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fsrc\u002Fcommands\u002Ftrade-cpi.ts",{"path":416,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":417,"sourceHtmlUrl":418},"src\u002Fcommands\u002Ftrade-nocpi.ts",2777,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fsrc\u002Fcommands\u002Ftrade-nocpi.ts",{"path":420,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":421,"sourceHtmlUrl":422},"src\u002Fcommands\u002Fupdate-admin.ts",2036,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fsrc\u002Fcommands\u002Fupdate-admin.ts",{"path":424,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":425,"sourceHtmlUrl":426},"src\u002Fcommands\u002Fupdate-config.ts",6028,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fsrc\u002Fcommands\u002Fupdate-config.ts",{"path":428,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":429,"sourceHtmlUrl":430},"src\u002Fcommands\u002Fwithdraw-insurance.ts",2192,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fsrc\u002Fcommands\u002Fwithdraw-insurance.ts",{"path":432,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":433,"sourceHtmlUrl":434},"src\u002Fcommands\u002Fwithdraw.ts",2753,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fsrc\u002Fcommands\u002Fwithdraw.ts",{"path":436,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":437,"sourceHtmlUrl":438},"src\u002Fconfig.ts",2224,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fsrc\u002Fconfig.ts",{"path":440,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":441,"sourceHtmlUrl":442},"src\u002Findex.ts",238,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fsrc\u002Findex.ts",{"path":444,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":445,"sourceHtmlUrl":446},"src\u002Fruntime\u002Fcontext.ts",706,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fsrc\u002Fruntime\u002Fcontext.ts",{"path":448,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":449,"sourceHtmlUrl":450},"src\u002Fruntime\u002Ftx.ts",4677,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fsrc\u002Fruntime\u002Ftx.ts",{"path":452,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":453,"sourceHtmlUrl":454},"src\u002Fsolana\u002Fata.ts",574,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fsrc\u002Fsolana\u002Fata.ts",{"path":456,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":457,"sourceHtmlUrl":458},"src\u002Fsolana\u002Foracle.ts",1617,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fsrc\u002Fsolana\u002Foracle.ts",{"path":460,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":461,"sourceHtmlUrl":462},"src\u002Fsolana\u002Fpda.ts",709,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fsrc\u002Fsolana\u002Fpda.ts",{"path":464,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":465,"sourceHtmlUrl":466},"src\u002Fsolana\u002Fslab.ts",27493,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fsrc\u002Fsolana\u002Fslab.ts",{"path":468,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":469,"sourceHtmlUrl":470},"src\u002Fsolana\u002Fwallet.ts",675,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fsrc\u002Fsolana\u002Fwallet.ts",{"path":472,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":473,"sourceHtmlUrl":474},"src\u002Fvalidation.ts",4932,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fsrc\u002Fvalidation.ts",{"path":476,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":477,"sourceHtmlUrl":478},"state.json",5708,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Fstate.json",{"path":480,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":481,"sourceHtmlUrl":482},"test-cu.sh",5112,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Ftest-cu.sh",{"path":484,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":485,"sourceHtmlUrl":486},"test-vectors.sh",19428,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Ftest-vectors.sh",{"path":488,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":489,"sourceHtmlUrl":490},"test\u002Fabi.test.ts",13271,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Ftest\u002Fabi.test.ts",{"path":492,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":493,"sourceHtmlUrl":494},"test\u002Foracle.test.ts",3756,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Ftest\u002Foracle.test.ts",{"path":496,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":497,"sourceHtmlUrl":498},"test\u002Fpda.test.ts",2325,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Ftest\u002Fpda.test.ts",{"path":500,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":501,"sourceHtmlUrl":502},"test\u002Fslab.test.ts",10392,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Ftest\u002Fslab.test.ts",{"path":504,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":505,"sourceHtmlUrl":506},"test\u002Fvalidation.test.ts",5580,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Ftest\u002Fvalidation.test.ts",{"path":508,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":509,"sourceHtmlUrl":510},"tests\u002Fharness.ts",43670,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Ftests\u002Fharness.ts",{"path":512,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":513,"sourceHtmlUrl":514},"tests\u002Finvariants.ts",13469,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Ftests\u002Finvariants.ts",{"path":516,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":517,"sourceHtmlUrl":518},"tests\u002Fpreflight.ts",98261,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Ftests\u002Fpreflight.ts",{"path":520,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":521,"sourceHtmlUrl":522},"tests\u002Frunner.ts",6958,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Ftests\u002Frunner.ts",{"path":524,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":525,"sourceHtmlUrl":526},"tests\u002Ft1-market-boot.ts",6491,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Ftests\u002Ft1-market-boot.ts",{"path":528,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":529,"sourceHtmlUrl":530},"tests\u002Ft10-adversarial.ts",8327,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Ftests\u002Ft10-adversarial.ts",{"path":532,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":533,"sourceHtmlUrl":534},"tests\u002Ft11-inverted-markets.ts",11387,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Ftests\u002Ft11-inverted-markets.ts",{"path":536,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":537,"sourceHtmlUrl":538},"tests\u002Ft12-trade-cpi.ts",12595,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Ftests\u002Ft12-trade-cpi.ts",{"path":540,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":541,"sourceHtmlUrl":542},"tests\u002Ft13-withdrawal-after-trade.ts",18305,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Ftests\u002Ft13-withdrawal-after-trade.ts",{"path":544,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":545,"sourceHtmlUrl":546},"tests\u002Ft14-liquidation.ts",15002,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Ftests\u002Ft14-liquidation.ts",{"path":548,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":549,"sourceHtmlUrl":550},"tests\u002Ft15-funding.ts",18549,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Ftests\u002Ft15-funding.ts",{"path":552,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":553,"sourceHtmlUrl":554},"tests\u002Ft16-risk-reduction.ts",15054,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Ftests\u002Ft16-risk-reduction.ts",{"path":556,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":557,"sourceHtmlUrl":558},"tests\u002Ft17-edge-cases.ts",14974,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Ftests\u002Ft17-edge-cases.ts",{"path":560,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":561,"sourceHtmlUrl":562},"tests\u002Ft18-inverted-market-e2e.ts",14063,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Ftests\u002Ft18-inverted-market-e2e.ts",{"path":564,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":565,"sourceHtmlUrl":566},"tests\u002Ft19-pyth-live-prices.ts",10863,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Ftests\u002Ft19-pyth-live-prices.ts",{"path":568,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":569,"sourceHtmlUrl":570},"tests\u002Ft2-user-lifecycle.ts",14043,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Ftests\u002Ft2-user-lifecycle.ts",{"path":572,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":573,"sourceHtmlUrl":574},"tests\u002Ft20-chainlink-oracle.ts",13839,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Ftests\u002Ft20-chainlink-oracle.ts",{"path":576,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":577,"sourceHtmlUrl":578},"tests\u002Ft21-live-trading.ts",37590,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Ftests\u002Ft21-live-trading.ts",{"path":580,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":581,"sourceHtmlUrl":582},"tests\u002Ft22-devnet-stress.ts",11041,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Ftests\u002Ft22-devnet-stress.ts",{"path":584,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":585,"sourceHtmlUrl":586},"tests\u002Ft3-capital.ts",10092,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Ftests\u002Ft3-capital.ts",{"path":588,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":589,"sourceHtmlUrl":590},"tests\u002Ft4-trading.ts",5929,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Ftests\u002Ft4-trading.ts",{"path":592,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":593,"sourceHtmlUrl":594},"tests\u002Ft5-oracle.ts",5740,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Ftests\u002Ft5-oracle.ts",{"path":596,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":597,"sourceHtmlUrl":598},"tests\u002Ft6-liquidation.ts",5198,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Ftests\u002Ft6-liquidation.ts",{"path":600,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":601,"sourceHtmlUrl":602},"tests\u002Ft7-socialization.ts",4048,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Ftests\u002Ft7-socialization.ts",{"path":604,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":605,"sourceHtmlUrl":606},"tests\u002Ft8-crank.ts",6187,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Ftests\u002Ft8-crank.ts",{"path":608,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":609,"sourceHtmlUrl":610},"tests\u002Ft9-determinism.ts",6692,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Ftests\u002Ft9-determinism.ts",{"path":612,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":613,"sourceHtmlUrl":614},"tsconfig.json",400,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Ftsconfig.json",{"path":616,"resourceType":103,"resourceTypeDesc":104,"sizeBytes":617,"sourceHtmlUrl":618},"tsup.config.ts",272,"https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fpercolator-cli-master\u002Ftsup.config.ts",[620,649,677,709,741,748],{"skillNo":621,"name":622,"nameZh":6,"description":623,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":624,"licenseFileUrl":625,"sourceHtmlUrl":626,"categories":627,"keywords":629,"publishedAt":27},"01M71DSB11KY88J1ND0GGSJACW","qedgen","Formally verify programs by writing Lean 4 proofs. Trigger this skill whenever the user wants to formally verify code, generate Lean 4 proofs, prove properties about algorithms or smart contracts, verify invariants, convert program logic into formal specifications, or anything involving Lean 4 and formal verification. Also trigger when the user mentions \"qedgen\", \"lean proof\", \"formal proof\", \"verify my code\", \"prove correctness\", \"formal verification\", or wants mathematical guarantees about their implementation.","MIT","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fsolana-formal-verification\u002FSKILL.md",[628],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[622,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648],"lean","writing","when","code","program","verification","generate","invariants","my","contracts","algorithms","trigger","prove","correctness","convert","verify","logic","properties","specifications",{"skillNo":650,"name":651,"nameZh":6,"description":652,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":653,"sourceHtmlUrl":654,"categories":655,"keywords":657,"publishedAt":27},"01M71DS25B2H00XQNAB45VRD82","skill-creator","Create, edit, improve, or audit AgentSkills. Use when creating a new skill from scratch or when asked to improve, review, audit, tidy up, or clean up an existing skill or SKILL.md file. Also use when editing or restructuring a skill directory (moving files to references\u002F or scripts\u002F, removing stale content, validating against the AgentSkills spec). Triggers on phrases like \"create a skill\", \"author a skill\", \"tidy up a skill\", \"improve this skill\", \"review the skill\", \"clean up the skill\", \"audit the skill\".","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fskill-creator\u002Flicense.txt","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fskill-creator\u002FSKILL.md",[656],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[658,659,660,661,662,663,664,665,632,666,667,668,669,670,671,672,673,674,675,676],"skill creator","creator","up","clean","improve","tidy","new","files","review","create","references","audit","directory","scripts","edit","a skill","new skill","existing skill","editing",{"skillNo":678,"name":679,"nameZh":6,"description":680,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":624,"licenseFileUrl":681,"sourceHtmlUrl":682,"categories":683,"keywords":690,"publishedAt":27},"01M71DMZWVVYEN2RXNW32VTFBT","clawd-code-skill","Control Clawd via MCP protocol. Trigger with \"plan\" to write a precise execution plan then feed it to Clawd. Also supports direct commands, persistent sessions, agent teams, and advanced tool control.","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fclawd-code-skill-main\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002Fskills\u002Fclawd-code-skill-main\u002FSKILL.md",[684,685],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":686,"categoryName":687,"taxonomyType":688,"taxonomyTypeDesc":689},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[633,691,692,693,694,695,696,697,698,699,700,701,702,703,641,704,705,706,707,708],"clawd","code skill","clawd code skill","agent teams","advanced","local","MCP","plan","write","node","commands","direct","execution plan","tool","sessions","teams","execution","use",{"skillNo":710,"name":711,"nameZh":6,"description":712,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":624,"licenseFileUrl":713,"sourceHtmlUrl":714,"categories":715,"keywords":724,"publishedAt":27},"01M71DM1RK8B85JEQNDY6D8G62","solana-clawd","solana-clawd — an open-source Solana AI agent framework built from Clawd Code's leaked agentic engine and the SolanaOS operator runtime. TypeScript MCP server for Clawd Desktop, Cursor, VS Code, or headless node. 31+ tools for Solana trading, on-chain intelligence, wallet management, Pump.fun scanning, MawdBot trading agents, Honcho v3 memory, Privy agentic wallets, and multi-venue perp execution (Hyperliquid + Aster). Use when asked about Solana trading, memecoin analysis, Pump.fun launches, MawdBot operations, OODA loops, wallet management, token research, agentic wallets, or any SolanaOS\u002Fsolana-clawd surface.","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fsolana-clawd\u002FSKILL.md",[716,719,722,723],{"categoryNo":717,"categoryName":718,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":720,"categoryName":721,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":686,"categoryName":687,"taxonomyType":688,"taxonomyTypeDesc":689},[691,725,726,727,728,729,730,731,732,733,734,697,735,736,737,632,738,739,740,633],"solana clawd","solana","solanaos","Wallet","headless","chain","memory","fun","privy","open","token research","agent framework","ai agent","agentic","mcp server","analysis",{"skillNo":742,"name":622,"nameZh":6,"description":623,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":624,"licenseFileUrl":743,"sourceHtmlUrl":744,"categories":745,"keywords":747,"publishedAt":27},"01M71DJZVSXC21XA2CM4FG6VYW","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fskills\u002Fsolana-formal-verification\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fskills\u002Fsolana-formal-verification\u002FSKILL.md",[746],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[622,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648],{"skillNo":749,"name":750,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":624,"licenseFileUrl":751,"sourceHtmlUrl":752,"categories":753,"keywords":754,"publishedAt":27},"01M71DJV1FZRP9ZMK9GQ5F9WBQ","solana-dev-skill-main","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fskills\u002Fsolana-dev-skill-main\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fx402agent\u002Fopenclawd-main\u002Fblob\u002Fmain\u002Fskills\u002Fsolana-dev-skill-main\u002FSKILL.md",[],[755,756,31,726,757,758],"dev","solana dev skill main","solana dev","solana dev skill"]