Install any skill in seconds. Free to start, no credit card required.
Get Started Free →internet-court/okx-growth-competition
List OKX Agentic Wallet exclusive trading competitions, register users for contests, track participation and leaderboard rankings, and claim won rewards.
Passed 9 of 16 test cases with the skill, and 6 of 16 without it.
and 6 more in the full report
9 fixed3 passed either way5 still failing5 broke
Tokens, turns and time describe resource use, not a dollar price.
One of 9 test cases the skill fixed. Same model, same prompt, with and without the skill.
If I run `onchainos competition list` without any flags, what competitions are returned by default?
| Checked | Without skill | With skill |
|---|---|---|
| The response states that default competition list queries filter for active competitions (status 0) | Missed | Passed |
The instructions your model reads when the skill loads.
Agentic Wallet exclusive trading competitions. Full lifecycle split across focused references:
references/participation.mdreferences/details.mdreferences/rank.mdreferences/claim.mdreferences/cli-reference.mdThis SKILL.md holds the global rules (facts, identity invariants, routing, output rules, time formatting, status codes, error handling) that ALL references depend on. Always read this file first; then jump into the matching reference for the user's intent.
Treat the following as factual ground truth when the user asks about how a competition works. The two chain-related fields play distinct, non-overlapping roles — never conflate them:
chainId — single id. The claim / reward chain ONLY (rewards are paid on this chain; its contract address lives here). It is NOT a trading chain unless it also appears in participateChainIds.participateChainIds — array of ids returned by both list and detail endpoints. The trading chain set. Trades on any chain in this list count toward the same competition standing.Trading-chain set = participateChainIds. Claim chain = chainId. These are two separate concepts; the display rules below NEVER union them.
1 → Ethereum, 196 → X Layer, 501 → Solana.participateChainIds.myRankInfo.userTotal = 0 means the user has not yet hit the qualifying threshold or the backend metric pipeline has not picked up their trades yet — it does NOT mean the user's chain is unsupported.competition_rank takes a single optional wallet. Omit it for self-rank — the tool sends your accountId (covers every chain in participateChainIds in one call; no chain pick). Pass an explicit address ONLY when querying someone else's rank; the address chain family (EVM 0x... else Solana) must match the activity's primary chain or the tool rejects the call (no silent wrong-chain queries).The query identity for competition_rank and competition_user_status is mutually exclusive: backend accepts EITHER accountId (self) OR walletAddress (cross-user) — never both. The answer to "which identity did you use?" is deterministic from the call shape.
| Call shape | Identity sent |
|---|---|
competition_user_status (any) | accountId — covers every chain in participateChainIds in one call |
competition_rank without wallet | accountId |
competition_rank with wallet=<addr> | walletAddress — tool validates addr's chain family (EVM 0x... else Solana) matches activity's chainId; mismatch → rejected |
competition_claim (pre-check) | accountId |
For multi-activity competition_user_status (no activity_name), the same accountId is reused across all activities — backend joins by accountId.
test cases passed, vs 6 / 16 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.