Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when a user wants to fund or bridge from an external wallet through a third-party UI such as Relay, especially when asking for MetaMask Mobile QR codes, bridge links, prefilled deposit URLs, Robinhood Chain USDG, or avoiding high-fee transaction QR mistakes.
.claude/skills/superior-trade-external-deposit/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-20 | ✗→✓ | ▲ Improved | 113% | 0% |
| case-01 | ✗→✓ | ▲ Improved | 160% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 24% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 418% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 2% | 0% |
Use this skill for deposits that should be completed in an external wallet or third-party bridge UI rather than by exporting Superior-managed keys or encoding arbitrary transaction calldata into a QR code.
Use skills/deposit-qr only for simple wallet funding QRs: native token sends or ERC-20 transfer payment URIs to a destination address.
approve(...) or bridge deposit calls into MetaMask Mobile QR/deeplinks. MetaMask Mobile supports native sends and token transfers better than arbitrary transaction calldata; forcing calldata can show wrong or high fees.transfer payment URI instead of Relay.When the source chain, destination chain, and token contract are identical, do not use Relay. Generate an EIP-681 ERC-20 transfer URI:
textethereum:<token-address>@<chain-id>/transfer?address=<recipient>&uint256=<amount-base-units>
The bundled script automatically switches to this mode when --from-chain, --to-chain, --from-token, and --to-token resolve to the same chain/token and --recipient plus --to-amount are provided. In this mode:
mode is direct_erc20_transfer.payment_uri contains the transfer URI.relay_url and quote are null.Supported built-in chains and tokens:
| Chain | Tokens | |---|---| | ethereum | USDC | | arbitrum | USDC | | base | USDC | | avalanche | USDC | | polygon | USDC, USDC.e, pUSD | | robinhood | USDG |
Custom ERC-20 token addresses are also accepted and default to 18 decimals.
Relay supports bridge URLs shaped like:
texthttps://relay.link/bridge/<destination-chain>?toCurrency=<destination-token>&fromChainId=<source-chain-id>&fromCurrency=<source-token>&toAddress=<recipient>&amount=<target-amount>&tradeType=EXPECTED_OUTPUT
Use toAddress, amount, and tradeType=EXPECTED_OUTPUT when a recipient and target output amount are known. Relay's web app uses EXPECTED_OUTPUT to prefill the Buy field; keep using the quote API with EXACT_OUTPUT when you need a live exact-output quote.
For MetaMask Mobile, wrap the Relay URL:
texthttps://link.metamask.io/dapp/<url-encoded-relay-url>
Supported wallet link targets:
| Wallet target | Link format | |---|---| | metamask | https://link.metamask.io/dapp/<encoded-url> | | trust | https://link.trustwallet.com/open_url?coin_id=60&url=<encoded-url> | | okx | okx://wallet/dapp/url?dappUrl=<encoded-url> | | plain | raw Relay URL |
Always include plain as a fallback when a wallet-specific link fails to open.
Example: Arbitrum USDC to Robinhood Chain USDG:
texthttps://relay.link/bridge/robinhood?toCurrency=0x5fc5360d0400a0fd4f2af552add042d716f1d168&fromChainId=42161&fromCurrency=0xaf88d065e77c8cc2239327c5edb3a432268e5831&toAddress=0xF60CA00ef5e510137bC09691b52BA7863F52158F&amount=20&tradeType=EXPECTED_OUTPUT
This opens Relay with the route prefilled. The user still reviews the live quote and signs normal wallet prompts inside Relay.
Use the bundled script:
bashnode skills/external-deposit/scripts/create-relay-bridge-qr.mjs \ --from-chain arbitrum \ --from-token USDC \ --to-chain robinhood \ --to-token USDG \ --wallet metamask \ --wallet trust \ --wallet okx \ --wallet plain \ --recipient 0xF60CA00ef5e510137bC09691b52BA7863F52158F \ --to-amount 20 \ --quote
It prints JSON with:
mode — direct_erc20_transfer for same-chain token sends, otherwise relay_bridge.relay_url — prefilled Relay bridge URL.payment_uri — EIP-681 ERC-20 transfer URI for same-chain direct transfers.wallet_links — wallet-specific dapp URLs and QR URLs for requested targets.metamask_mobile_url — backward-compatible alias for the MetaMask link when requested.qr_url — hosted QR image URL for the default wallet link.quote — live Relay quote summary when --quote is provided.summary — route, token contracts, recipient, and amount.If no --wallet flags are provided, the script emits metamask and plain.
Display the QR in Markdown when the client supports images:
markdown
textRelay Deposit Summary: * From: Arbitrum USDC * Source token: 0xaf88d065e77c8cc2239327c5edb3a432268e5831 * To: Robinhood Chain USDG * Destination token: 0x5fc5360d0400a0fd4f2af552add042d716f1d168 * Recipient: 0xF60CA00ef5e510137bC09691b52BA7863F52158F * Quote: pay 20.14 USDC, receive 20 USDG * Expected gas: tiny Arbitrum ETH gas Scan this QR with your phone camera to open Relay inside MetaMask Mobile. Reject the transaction if MetaMask shows the wrong chain or a high network fee.
approve or deposit calldata and expecting MetaMask Mobile to show a safe transaction popup.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-20 | fail→pass | 8,224 | 3,975 | -52% | 1 | 1 | 0% | 1,202 | 2,560 | +113% | 0 | 0 | — |
case-01 | fail→pass | 16,407 | 26,074 | +59% | 1 | 1 | 0% | 2,792 | 7,253 | +160% | 0 | 0 | — |
case-02 | fail→pass | 29,975 | 21,563 | -28% | 1 | 1 | 0% | 5,345 | 6,616 | +24% | 0 | 0 | — |
case-03 | fail→pass | 4,340 | 10,412 | +140% | 1 | 1 | 0% | 819 | 4,241 | +418% | 0 | 0 | — |
case-04 | pass→pass | 16,687 | 13,473 | -19% | 1 | 1 | 0% | 2,822 | 4,692 | +66% | 0 | 0 | — |
case-05 | pass→pass | 10,437 | 5,711 | -45% | 1 | 1 | 0% | 2,156 | 3,213 | +49% | 0 | 0 | — |
case-06 | fail→pass | 21,645 | 8,688 | -60% | 1 | 1 | 0% | 3,771 | 3,856 | +2% | 0 | 0 | — |
case-07 | fail→pass | 18,405 | 4,990 | -73% | 1 | 1 | 0% | 2,951 | 2,693 | -9% | 0 | 0 | — |
case-08 | pass→pass | 9,991 | 4,815 | -52% | 1 | 1 | 0% | 1,654 | 2,667 | +61% | 0 | 0 | — |
case-09 | fail→pass | 13,401 | 5,864 | -56% | 1 | 1 | 0% | 2,159 | 2,862 | +33% | 0 | 0 | — |
case-10 | fail→pass | 19,357 | 2,807 | -85% | 1 | 1 | 0% | 3,318 | 2,477 | -25% | 0 | 0 | — |
case-11 | fail→pass | 18,595 | 1,558 | -92% | 1 | 1 | 0% | 3,286 | 2,187 | -33% | 0 | 0 | — |
case-12 | pass→pass | 8,229 | 3,631 | -56% | 1 | 1 | 0% | 1,251 | 2,499 | +100% | 0 | 0 | — |
case-13 | fail→pass | 12,781 | 8,475 | -34% | 1 | 1 | 0% | 2,148 | 3,323 | +55% | 0 | 0 | — |
case-14 | fail→fail | 16,554 | 14,141 | -15% | 1 | 1 | 0% | 3,221 | 4,564 | +42% | 0 | 0 | — |
case-15 | pass→pass | 8,879 | 3,655 | -59% | 1 | 1 | 0% | 1,763 | 2,448 | +39% | 0 | 0 | — |
case-16 | fail→pass | 5,372 | 3,343 | -38% | 1 | 1 | 0% | 965 | 2,377 | +146% | 0 | 0 | — |
case-17 | fail→pass | 13,127 | 6,231 | -53% | 1 | 1 | 0% | 2,782 | 2,966 | +7% | 0 | 0 | — |
case-18 | fail→pass | 14,741 | 3,706 | -75% | 1 | 1 | 0% | 2,121 | 2,451 | +16% | 0 | 0 | — |
case-19 | fail→pass | 7,177 | 3,503 | -51% | 1 | 1 | 0% | 1,056 | 2,504 | +137% | 0 | 0 | — |
case-21 | pass→pass | 10,133 | 5,766 | -43% | 1 | 1 | 0% | 1,300 | 2,853 | +119% | 0 | 0 | — |
case-22 | pass→pass | 13,403 | 11,751 | -12% | 1 | 1 | 0% | 2,289 | 3,937 | +72% | 0 | 0 | — |
case-23 | pass→pass | 7,883 | 7,367 | -7% | 1 | 1 | 0% | 1,355 | 3,477 | +157% | 0 | 0 | — |
case-24 | pass→pass | 11,795 | 4,634 | -61% | 1 | 1 | 0% | 1,674 | 2,529 | +51% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 24 cases were attempted. The headline lift of +58 percentage points is the difference between those two pass rates over the 24 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.