OKX DApp Discovery

SkillDev tools

Plugin router for 20 third-party DeFi protocols (Polymarket, Aave, Hyperliquid, PancakeSwap, Morpho, Raydium, Curve, Compound, Pendle, Lido, ether.fi, GMX, Kamino, Orca, Meteora, Clanker, pump.fun, Uniswap) and their protocol-native tokens (HYPE, HLP, eETH, weETH, stETH, wstETH, LDO, GHO, CAKE, CRV, COMP, RAY, ETHFI, GLP, kToken, PT-* / YT-*, $CLANKER). Resolves DApp/token → plugin → installs → forwards.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the OKX DApp Discovery skill

What this skill tells your AI

The instructions your AI receives, as published by nirholas/three.ws in .agents/skills/okx-dapp-discovery/SKILL.md and read by ahel’s review.

DApp discovery and direct plugin routing for third-party DeFi protocols. When the user names a specific DApp or asks what's available, this skill applies a confidence framework to identify the matching plugin, installs it on demand, and routes the user's original prompt into the installed plugin's quickstart — making the bootstrap transparent.

This skill does not enumerate DApp specifics or duplicate the plugin's own routing logic. Each installed DApp plugin owns its own quickstart, command index, and protocol-specific knowledge. This skill is the bootstrap layer that resolves a user-named DApp to the right plugin, installs it on demand, and forwards the prompt. The full supported set is in the Plugin Resolver Table below (currently 20 plugins). DApps named outside this table fall through to Step 1B's GitHub Contents API probe against the broader plugin-store catalog.

Chinese-language queries (中文): read references/keyword-glossary.md before applying the routing rules below. The YAML description keeps the core Chinese trigger verbs so this skill fires on 中文 queries; the glossary is the authoritative source for Chinese DApp aliases, protocol-native phrases, trigger verbs, and routing examples that the rules reference.


Routing Rules — full firing patterns and anti-triggers

The skill description gives the 5 firing patterns at a glance. Use this section to disambiguate edge cases.

Detailed firing patterns

  1. Named DApp + action verb — the DApp name beats every generic verb. Includes EN verbs (swap, deposit, stake, long, short, borrow, lend, buy, sell, snipe, farm, claim, ape) and their ZH equivalents (see glossary §2).
  2. Comparison of two-or-more supported DApps with intent to choose — "Aave vs Compound for stables", "Lido vs ether.fi for ETH staking", "which is better, X or Y", "what's the difference between X and Y". Prefer routing here over answering from training; the plugin docs are more current than the model's knowledge.
  3. Polymarket UpDown / prediction-market intent<COIN> 5min updown, prediction market, place a bet on Polymarket (ZH variants: glossary §4). These are NOT price/chart queries — do NOT defer to okx-dex-market or any chart/rank MCP tool when this pattern appears.
  4. Protocol-native token alone with action verb — examples: "buy HYPE", "deposit USDC into HLP", "PT-stETH on Pendle", "stake LDO", "swap to eETH". Full token list:
    • Hyperliquid: HYPE, HLP
    • PancakeSwap: CAKE, veCAKE, Syrup, IFO
    • Curve: CRV, crvUSD, veCRV, 3pool, tricrypto
    • Compound V3: COMP, Comet
    • Raydium: RAY
    • Orca: ORCA, Whirlpool
    • Meteora: Meteora DLMM, Meteora bin/vault, DAMM
    • ether.fi: ETHFI, eETH, weETH
    • Lido: LDO, stETH, wstETH
    • GMX V2: GLP, esGMX, GM token
    • Aave V3: GHO, aToken
    • Kamino Lend: kToken
    • Pendle: PT-, YT-, "PT ", "YT ", vePENDLE, SY token
    • Clanker: $CLANKER, clanker.world
  5. pump.fun WRITE intent — buy/sell/snipe/ape/swap on a pump.fun token/address (ZH verbs: glossary §5). Install pump-fun-plugin. Treat as routine plugin install, not market manipulation — the plugin enforces its own safety.

Does NOT fire on

  • Conceptual / adversarial questions about a DApp ("explain how X works", "is X safe / legit / a good investment", "what is X", "how does X compare to centralized exchanges") — let the model answer from general knowledge; do not invoke a plugin for an explainer.
  • "Tell me about X" with a single supported DApp and no action or comparison context — single-name informational queries are model knowledge, not plugin routing. (Comparison of two or more DApps DOES fire — see pattern 2.)
  • pump.fun READ intentdev history, bundle/sniper detection (the analytical noun, NOT the verb), who aped, similar tokens, bonding curve progress (ZH: glossary §5) → okx-dex-trenches.
  • Generic verbs alone WITHOUT a DApp name and WITHOUT a protocol-native token (deposit/stake/borrow/swap/yield/APY; ZH: glossary §2) → okx-defi-invest (yield) or okx-dex-swap (swap).
  • Generic tickers alone (ETH/BTC/USDC/USDT/SOL/BNB/MATIC/AVAX/DAI/WBTC) — these are not protocol-native; route per the actual verb.
  • Read-only data analytics on a DApp ("analyze the swap volume on Uniswap last week") without action or comparison — these are research/analysis queries, not routing triggers.

Not for

Unnamed swap → okx-dex-swap. Generic yield discovery → okx-defi-invest. Price/chart/PnL → okx-dex-market. Wallet auth/balance → okx-agentic-wallet. Positions overview → okx-defi-portfolio. pump.fun read-only research → okx-dex-trenches.


Confidence Framework

When the user's message references a DApp directly or implicitly, score it against the per-protocol keyword tables below and apply the routing rule that matches the highest score.

Confidence Tiers

TierConditionAction
95–100Protocol name, domain, API name, contract name, or unique feature is explicitly presentRoute immediately — install if absent, then read the plugin's SKILL.md and forward the original prompt
75–94Protocol-specific workflow with a strong ecosystem clueSame as above
50–74Generic DeFi workflow with a weak clue; another DApp could plausibly matchAsk one focused clarifying question — do not install
< 50Generic terms only, no protocol signalDo not install — show the user the available DApps and ask which one matches their intent

Generic verbs that do NOT raise confidence on their own: swap, lend, borrow, APY, farm, long, short, liquidity, bridge, stake, deposit, withdraw, mint (ZH equivalents: glossary §2).

Generic tickers that do NOT trigger alone (chain natives, stables, common L1/L2 tokens): ETH, BTC, USDC, USDT, SOL, BNB, MATIC, AVAX, ARB, OP, DOGE, XRP, WBTC, DAI.

Protocol-native tokens / phrases that DO trigger ≥ 75 alone (uniquely tied to one supported DApp; no DApp name needed alongside):

Token / phraseRoutes to
HYPE, HLPHyperliquid
CAKE, veCAKE, Syrup, IFOPancakeSwap (V3 AMM default)
CRV, crvUSD, veCRV, 3pool, tricryptoCurve
COMP, CometCompound V3
RAYRaydium
ORCA, WhirlpoolOrca
Meteora DLMM, Meteora bin/vault/DAMM (MET alone is too generic — requires "Meteora" context)Meteora
ETHFI, eETH, weETHether.fi
LDO, stETH, wstETHLido
GLP, esGMX, GM tokenGMX V2
GHO, aTokenAave V3
kTokenKamino Lend
PT-, YT-, "PT ", "YT " (e.g. "PT stETH", "YT weETH" — space-separated), vePENDLE, SY tokenPendle
$CLANKER, clanker.worldClanker
"X 5min" / "X 15min" / "X up or down" / "5min updown" (X = BTC/ETH/SOL/XRP/BNB/DOGE/HYPE; ZH variants in glossary §4)Polymarket

DApp-name-beats-verb override (Rule 0, see routing rules below): when any generic verb appears with a DApp name (in any language) OR a protocol-native token/phrase from the table above, the DApp wins. Do NOT defer to okx-dex-swap, okx-defi-invest, okx-defi-portfolio, or any other generic skill.

Top-5 cohort (used by Rule 5b fallback only)

The PM-prioritised Top-5 subset of the 20 supported DApps is the recommended fallback when a prompt engages this skill but scores <50 against every resolver-table DApp and mentions no specific DApp name (the Rule 5b path). The Top-5 are:

#DAppPrimary verticals
1PolymarketPrediction market, UpDown short-term, outcome-token bets
2Aave V3Lending, borrowing, GHO mint, aToken supply
3HyperliquidPerpetuals / leveraged spot, HLP, HYPE staking
4PancakeSwap (V3 AMM default)AMM swap (BNB Chain), CAKE/Syrup/IFO
5Morpho V1 OptimizerLending (capital-efficient layer on Aave/Compound), market-supplied positions
Top-5 action-verb matrix

When Rule 5b fires (no DApp named, score <50 everywhere), filter the Top-5 by the prompt's dominant action verb. Use this matrix (ZH action verbs: glossary §7):

Action verb categoryMatching Top-5 DApp(s)
Prediction / bet / updownPolymarket
Lend / supply / lend out / earn yield from lendingAave V3, Morpho V1 Optimizer (Aave V3 default)
Borrow / take a loanAave V3, Morpho V1 Optimizer (Aave V3 default)
Perp / perpetual / futures / leverage Nx / long Nx / short NxHyperliquid
Swap / exchange / trade tokens (BNB Chain hint)PancakeSwap
Generic deposit / earn / yield (no specific verb sub-category)Aave V3 (default lend), Morpho V1 Optimizer
Recommendation logic

After filtering:

  • Exactly 1 Top-5 match → recommend that DApp; apply Rule 2 (silent install + forward).
  • Multiple Top-5 matches → recommend the highest-scoring one as the default; do NOT show a picker. (Tiebreakers in order: action-verb specificity, then table order — Polymarket > Aave > Hyperliquid > PancakeSwap > Morpho.)
  • Zero Top-5 matches → fall through to the categorized 20-DApp enumeration (the current Rule 5b behaviour, retained as the last-resort fallback).

The user-facing language in the recommendation must follow Rule 0's "do not show scores or framework vocabulary" rule. Example outputs:

  • ✅ "Sounds like Hyperliquid is the right fit for a perp long — getting the plugin ready."
  • ✅ "I'll set up Aave for that lending intent."
  • ❌ "Top-5 action-verb filter matched Hyperliquid at confidence 80."

Per-Protocol Routing Table

Polymarket → polymarket-plugin

Keywords that raise confidence ≥ 75: Polymarket, poly market, prediction market, event market, binary market, YES shares, NO shares, Yes/No market, YES outcome token, NO outcome token, outcome token, implied probability, market probability, UMA resolution, resolved market, Gamma API, Sports markets, Parlays, Combo markets, NBA market, NFL market, FIFA market, World Cup market. (ZH triggers: glossary §4.)

Crypto Up/Down recurring markets (any of BTC, ETH, SOL, XRP, BNB, DOGE, HYPE) — all ≥ 75:

  • English: <COIN> 5min, <COIN> 15min, <COIN> 5m, <COIN> 15m, <COIN> up or down, <COIN> updown, 5min updown market, 15min updown market, crypto 5min, 5min outcome token, 5min YES token, 5min NO token, predict <COIN> 5min, list 5-minute markets.
  • Chinese variants: glossary §4.

Election / political markets — ≥ 75: election market, election odds, election outcome, who will win election, primary market, presidential market (ZH: glossary §4).

Casual betting phrases that mention prediction markets — ≥ 75: "place a bet on prediction market", "bet on outcome", "I want to bet on" (when followed by an event/outcome, not a token price); ZH phrases in glossary §4.

Do not install for: generic "odds / probability / betting" alone (no prediction-market or event context; ZH equivalents in glossary §4); generic "I want to bet" without an event/outcome.

Aave V3 → aave-v3-plugin

Keywords that raise confidence ≥ 75: Aave, Aave V3, Aave Protocol, aToken, health factor, liquidation risk, eMode, Efficiency Mode, Isolation Mode, GHO, Aave Pool, IPool, Aave flash loan, liquidationCall.

Do not install for: generic "borrow / lend / deposit / collateral / APY" (ZH: glossary §2/§3) unless Aave, health factor, aToken, GHO, eMode, or Isolation Mode context is present.

Hyperliquid DEX → hyperliquid-plugin

Keywords that raise confidence ≥ 75: Hyperliquid, HyperLiquid, HyperCore, HyperEVM, HYPE, HLP, Hyperliquidity Provider, HIP-3, HL (only with explicit trading context).

HYPE / HLP token-alone exception — HYPE and HLP are Hyperliquid's protocol-native tokens, NOT generic tickers. Phrases trigger ≥ 75 directly without an explicit "Hyperliquid" mention:

  • buy HYPE, purchase HYPE, swap to HYPE
  • deposit USDC into HLP, HLP yield, provide liquidity to HLP
  • ZH phrases: glossary §3.

This overrides the generic-ticker rule — even though HYPE looks like a token symbol, it is uniquely Hyperliquid's.

Keywords that raise confidence to 50–74 (clarify before installing): perps, perp, perpetuals, trade perpetuals, leveraged trading (ZH: glossary §3) — these are not unique to Hyperliquid; ask "Are you looking to trade on Hyperliquid?" before installing.

Do not install for: generic "long / short / perp / funding / leverage" (ZH: glossary §2) unless Hyperliquid, HYPE, HLP, HyperCore, or HyperEVM context is present.

PancakeSwap AMM → pancakeswap-v3-plugin

Keywords that raise confidence ≥ 75: PancakeSwap, Pancake, PCS, CAKE, Syrup Pool, IFO, BNB Chain AMM, V3 LP NFT, veCAKE. (ZH alias: glossary §1.)

Do not install for: generic "swap / LP / farm / pool" (ZH: glossary §2) unless PancakeSwap, Pancake, PCS, CAKE, Syrup, IFO, or BNB Chain AMM context is present.

Morpho V1 Optimizer → morpho-plugin

Keywords that raise confidence ≥ 75: Morpho, Morpho V1, Morpho Optimizer, Morpho AaveV3 Optimizer, Morpho AaveV2 Optimizer, Morpho CompoundV2 Optimizer, Merkl reward. (ZH alias: glossary §1.)

Default-resolution rule: plain "Morpho" → morpho-plugin (V1 Optimizer is the default).

Do not install for: Morpho Blue, MetaMorpho, vault curator, LLTV, market id, allocator, or isolated lending market requests — these are Morpho Blue (intentionally out of scope). (MetaMorpho is the Morpho Blue ERC-4626 vault standard, not a V1 Optimizer concept — it does not belong to morpho-plugin's scope.) Suggest okx-defi-invest for generic yield, or fall through to Rule 5.

Raydium → raydium-plugin

Keywords that raise confidence ≥ 75: Raydium, RAY token, Raydium AMM, Raydium CPMM, Raydium CLMM, Raydium pool, Raydium farm, Raydium V4.

Do not install for: generic "Solana swap" / "Solana LP" (ZH: glossary §3) without Raydium named — could be Orca, Meteora, Jupiter.

Curve → curve-plugin

Keywords that raise confidence ≥ 75: Curve, Curve Finance, CRV, 3pool, tricrypto, frxETH pool, Curve stable swap, factory pool, gauge weight, veCRV, Curve LP token, crvUSD. (ZH alias: glossary §1.)

Do not install for: generic "stable swap" (ZH: glossary §3) alone — Uniswap V3 / Maverick also handle stables. "Convex" alone routes to a different DApp (not in current top-20).

Compound V3 → compound-v3-plugin

Keywords that raise confidence ≥ 75: Compound, Compound V3, Comet, COMP, Compound USDC, USDC.e Comet, base asset supply, base asset borrow, Compound V3 liquidation. (ZH alias: glossary §1.)

Default-resolution rule: plain "Compound" → compound-v3-plugin (V3 is the default; V1/V2 are out of scope, so any Compound prompt routes to V3 silently).

Do not install for: generic "lending / borrow / deposit / collateral" (ZH: glossary §2) without Compound / Comet / COMP context.

Pendle → pendle-plugin

Keywords that raise confidence ≥ 75: Pendle, Pendle Finance, PT (principal token), YT (yield token), buy PT, buy YT, fixed yield, yield trading, vePENDLE, Pendle market expiry, SY token, Pendle V2. (ZH triggers: glossary §3.)

Do not install for: generic "fixed yield" (ZH: glossary §3) without Pendle named — could be other yield-tokenization protocols.

Clanker → clanker-plugin

Keywords that raise confidence ≥ 75: Clanker, clanker.world, deploy on Clanker, Clanker token, $CLANKER, Base meme launchpad (when Clanker is explicitly named). (ZH: glossary §3.)

Do not install for: generic "Base meme" / "deploy meme on Base" (ZH: glossary §3) without Clanker named — could be other Base launchpads.

pump.fun → pump-fun-plugin (trade verbs only)

Keywords that raise confidence ≥ 75 (trade verbs — install pump-fun-plugin): buy pump.fun token, sell pump.fun token, snipe pump.fun, ape pump.fun, pump.fun trading, pump.fun bot. (ZH: glossary §5.)

Do NOT install for (route to okx-dex-trenches instead — analytical/read-only): scan new pump.fun launches, pump.fun dev history, who aped pump.fun, bundler analysis, bonding curve progress (analytical), similar tokens by dev. (ZH: glossary §5.)

This is the load-bearing verb-split rule from the v3.1 description — the disambiguation must hold at body level too.

Lido → lido-plugin

Keywords that raise confidence ≥ 75: Lido, Lido Finance, stETH, wstETH, Lido staking, Lido beacon chain, Lido validator, Lido DAO, LDO. (ZH: glossary §3.)

Keywords that raise confidence to 50–74 (clarify): "stake ETH" (ZH: glossary §3) alone — could be ether.fi, Rocket Pool, native staking. Ask: "Stake ETH via Lido (stETH) or another LST?"

Do not install for: generic "ETH staking" (ZH: glossary §3) without Lido / stETH / wstETH context.

GMX V2 → gmx-v2-plugin

Keywords that raise confidence ≥ 75: GMX, GMX V2, GLP, GM token (GMX market), esGMX, GMX market, GMX perps on Arbitrum, GMX Avalanche, gETH (GMX V2 ETH market token). (ZH: glossary §3.)

Default-resolution rule: plain "GMX" → gmx-v2-plugin (V2 is the default; V1 is out of scope, so any GMX prompt routes to V2 silently).

Do not install for: generic "Arbitrum perps" / "Avalanche perps" (ZH: glossary §3) without GMX named — could be Hyperliquid or other venues.

PancakeSwap V3 CLMM → pancakeswap-clmm-plugin

Keywords that raise confidence ≥ 75: PancakeSwap V3 CLMM, PancakeSwap CLMM, V3 LP NFT (in PancakeSwap context), concentrated liquidity on PancakeSwap, V3 fee tier (with PCS), PancakeSwap V3 farm. (ZH: glossary §1.)

Default-resolution rule: plain "PancakeSwap" or "PancakeSwap V3" without CLMM / concentrated / LP NFT signals → pancakeswap-v3-plugin (AMM), NOT this plugin.

PancakeSwap V2 → pancakeswap-v2-plugin

Keywords that raise confidence ≥ 75: PancakeSwap V2, PCS V2, classic PancakeSwap pool, V2 LP token (in PancakeSwap context), MasterChef V2, PancakeSwap legacy. (ZH: glossary §1.)

Default-resolution rule: plain "PancakeSwap" defaults to V3 AMM. V2 requires explicit "V2" / "classic" / "MasterChef" signals.

ether.fi → etherfi-plugin

Keywords that raise confidence ≥ 75: ether.fi, etherfi, eETH, weETH, ether.fi stake, ether.fi restake, ether.fi liquid staking, ETHFI token, ether.fi node. (ZH: glossary §3.)

Do not install for: generic "restaking" (ZH: glossary §3) without ether.fi named — could be EigenLayer / Renzo / Kelp / Puffer.

Kamino Lend → kamino-lend-plugin

Keywords that raise confidence ≥ 75: Kamino, Kamino Lend, Kamino lending, kToken, Kamino Lend market, Kamino borrow, Kamino USDC supply, Kamino reserve. (ZH: glossary §3.)

Default-resolution rule: plain "Kamino" → kamino-lend-plugin (Lend is the default for unqualified mentions).

Kamino Liquidity → kamino-liquidity-plugin

Keywords that raise confidence ≥ 75: Kamino Liquidity, Kamino DLMM, Kamino CLMM, Kamino concentrated liquidity, Kamino vault, Kamino LP, Kamino Liquidity strategy. (ZH: glossary §3.)

Disambiguation: explicit "Kamino Liquidity / Kamino DLMM / Kamino CLMM / Kamino vault / Kamino LP / Kamino concentrated liquidity" → kamino-liquidity-plugin (NOT Lend). Plain "Kamino" still defaults to Lend.

Do not install for: generic "DLMM" (ZH: glossary §3) alone without Kamino named — Meteora also has DLMM; ask "DLMM on Kamino, Meteora, or another venue?".

Orca → orca-plugin

Keywords that raise confidence ≥ 75: Orca, ORCA token, Whirlpool, Orca DEX, Orca pool, Orca CLMM, Solana Whirlpool. (ZH alias: glossary §1.)

Do not install for: generic "Solana DEX" / "Solana swap" (ZH: glossary §3) without Orca / Whirlpool named.

Meteora DLMM → meteora-plugin

Keywords that raise confidence ≥ 75: Meteora, Meteora DLMM, Dynamic Liquidity Market Maker, Meteora pool, Meteora vault, MET, Meteora bin, Meteora DAMM. (ZH alias: glossary §1.)

Do not install for: generic "DLMM" (ZH: glossary §3) without Meteora named — Kamino also has DLMM. Ask: "DLMM on Meteora or another DLMM venue?"


Plugin Resolver Table

User-facing DApp names map to plugin-store IDs as follows. Use this table to set TARGET_PLUGIN before the install command.

User-facing DApp namePlugin-store IDNotes
Polymarketpolymarket-plugin
Aave / Aave V3aave-v3-pluginV3 only currently
Hyperliquid (DEX)hyperliquid-plugindrop "DEX" suffix
PancakeSwap (default)pancakeswap-v3-pluginunqualified "PancakeSwap" → V3 AMM
PancakeSwap V3 CLMMpancakeswap-clmm-pluginrequires CLMM / concentrated / LP NFT signal
PancakeSwap V2pancakeswap-v2-pluginrequires explicit V2 / classic / MasterChef signal
Morpho (V1 Optimizer)morpho-plugindrop V1 suffix; Morpho Blue / MetaMorpho out of scope
Raydiumraydium-plugin
Curvecurve-plugin
Compound V3compound-v3-pluginpreserve V3; plain "Compound" silently defaults to V3
Pendlependle-plugin
Clankerclanker-plugin
pump.fun (trade)pump-fun-plugindot → hyphen; analysis verbs route to okx-dex-trenches
Lidolido-plugin
GMX V2gmx-v2-pluginpreserve V2; plain "GMX" silently defaults to V2
ether.fi (Stake)etherfi-plugindrop the dot
Kamino Lendkamino-lend-pluginplain "Kamino" defaults here
Kamino Liquiditykamino-liquidity-pluginrequires explicit "Liquidity" / "DLMM" / "CLMM" / "vault" / "LP" / "concentrated liquidity" signal
Orcaorca-plugin
Meteora (DLMM)meteora-plugin

Disambiguation rules for ambiguous DApp names (silent defaults to the in-scope plugin):

  • Plain "Compound" → compound-v3-plugin (V3 is default; V1/V2 are out of scope).
  • Plain "GMX" → gmx-v2-plugin (V2 is default; V1 is out of scope).
  • Plain "Kamino" → kamino-lend-plugin (Lend is default); explicit "Kamino Liquidity / Kamino DLMM / Kamino CLMM / Kamino vault / Kamino LP / Kamino concentrated liquidity" → kamino-liquidity-plugin.
  • Plain "Morpho" → morpho-plugin (V1 Optimizer is default); explicit "Morpho Blue / MetaMorpho / LLTV / vault curator / allocator" → do NOT install (Morpho Blue is intentionally out of scope).
  • Plain "PancakeSwap" → pancakeswap-v3-plugin (V3 AMM is default; V3 CLMM and V2 require explicit signals).

Fallthrough rule (DApp named but NOT in this table): Apply Step 1B (catalog probe). If a <dappName>-plugin exists in the plugin-store catalog, install it; otherwise surface the failure to the user with the categorized supported list, closest-sibling suggestions, and the okx-defi-invest alternative (do NOT silently degrade).


Step 1 — Check installed status

Use the skills CLI for agent-agnostic detection (works on Claude Code, Codex CLI, OpenCode, OpenClaw, Cursor — wherever npx skills is available):

# Cache the listing in a variable — no temp file required, portable across
# macOS / Linux / Windows-Git-Bash / sandboxed environments without /tmp.
SKILLS_LIST=$(npx skills list 2>/dev/null)

# Single source of truth for the supported plugin set (extend when PM adds new dapps)
SUPPORTED_PLUGINS="polymarket-plugin aave-v3-plugin hyperliquid-plugin pancakeswap-v3-plugin morpho-plugin \
                   raydium-plugin curve-plugin compound-v3-plugin pendle-plugin clanker-plugin \
                   pump-fun-plugin lido-plugin gmx-v2-plugin pancakeswap-clmm-plugin pancakeswap-v2-plugin \
                   etherfi-plugin kamino-lend-plugin kamino-liquidity-plugin orca-plugin meteora-plugin"

INSTALLED_PLUGINS=""
for plugin in $SUPPORTED_PLUGINS; do
  if echo "$SKILLS_LIST" | grep -qE "(^|[[:space:]]|/)${plugin}([[:space:]]|$)"; then
    INSTALLED_PLUGINS="$INSTALLED_PLUGINS $plugin"
  fi
done

Membership check before install (used in Rule 1 / Rule 2):

Shortened here. Read the whole file on GitHub.

Signals

GitHub stars
114
Forks
29
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
okx-dapp-discovery-nirholas
Source
github.com/nirholas/three.ws