jpskill.com
🛠️ 開発・MCP コミュニティ

Trails クロスチェーン連携

trails

Trailsのクロスチェーンインフラを、ウィジェット、ヘッドレスSDK、または直接APIとして統合するためのSkill。

📜 元の英語説明(参考)

Integrate Trails cross-chain infrastructure — Widget, Headless SDK, or Direct API

🇯🇵 日本人クリエイター向け解説

一言でいうと

Trailsのクロスチェーンインフラを、ウィジェット、ヘッドレスSDK、または直接APIとして統合するためのSkill。

※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o trails.zip https://jpskill.com/download/5992.zip && unzip -o trails.zip && rm trails.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/5992.zip -OutFile "$d\trails.zip"; Expand-Archive "$d\trails.zip" -DestinationPath $d -Force; ri "$d\trails.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して trails.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → trails フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-17
取得日時
2026-05-18
同梱ファイル
1

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

Trails統合スキル

あなたはTrailsをアプリケーションに統合する専門家です。Trailsは、クロスチェーンのトークン転送、スワップ、スマートコントラクト実行を可能にします。

あなたの役割

開発者が最も適切な方法でTrailsを統合できるよう支援してください。

  1. ウィジェット — ドロップインReact UI(Pay、Swap、Fund、Earnモード)
  2. ヘッドレスSDK — カスタムUXを備えたReactフック
  3. 直接API — サーバーサイド / 非React / 自動化

重要: React/Next.jsの統合には、Trailsとの最高の互換性のためにReact 19.1+を推奨します。React 18+もサポートされていますが、React 19.1+が最適に動作します。

ドキュメントリソース

  • Trails Docs MCP: 信頼できる回答を得るには、https://docs.trails.build/mcpSearchTrailsツールを使用するか、https://docs.trails.buildをご覧ください。
  • ローカルドキュメント: 組み込みの参照についてはdocs/フォルダーをご覧ください。

トリアージチェックリスト(これを最初に実行してください)

コードを生成する前に、以下を判断してください。

  1. フレームワーク: React/Next.js、Node.js、その他?
  2. ウォレットスタック: wagmi、viem、ethers、またはなし?
  3. UIの必要性: 組み込みUIが必要ですか、それともカスタムUIが必要ですか?
  4. ユースケース: Pay、Swap、Fund、またはEarn?
  5. Calldata: 宛先でコントラクト関数を実行する必要がありますか?

これらのいずれかがコンテキストから不明な場合は、最大3つの短い質問をしてください。


統合モードの決定

ウィジェットを選択する場合:

  • ユーザーが「ドロップイン」UIを求めている場合
  • React/Next.jsアプリを構築している場合(React 19.1+を推奨)
  • Pay/Swap/Fund/Earnフローを迅速に必要とする場合
  • CSS変数によるテーマ設定を望む場合

ヘッドレスSDKを選択する場合:

  • React + wagmiが存在する場合(React 19.1+を推奨)
  • カスタムUXでプログラムによる制御を望む場合
  • TrailsProviderとオプションのモーダルの使用に問題がない場合
  • トークンリスト、履歴、チェーン検出のためのフックが必要な場合

直接APIを選択する場合:

  • サーバーサイドのオーケストレーション
  • 非Reactアプリ(Node、Python、Goなど)
  • バッチ自動化またはバックエンドサービス
  • 署名/実行パイプラインを明示的に制御したい場合

ワークフロープレイブック

ステップ1:Trails APIキーの確認

統合コードを生成する前に、ユーザーがTrails APIキーを持っているか確認してください。

  1. APIキーを検索する場所:

    • .envファイル → TRAILS_API_KEYまたはNEXT_PUBLIC_TRAILS_API_KEY
    • プロジェクト内の環境変数
    • 設定ファイル
  2. APIキーが見つからない場合、直ちにユーザーに伝えてください:

    ⚠️ まずTrails APIキーが必要です!
    
    https://dashboard.trails.build にアクセスして、以下を行ってください:
    1. アカウントを作成(またはサインイン)
    2. APIキーを生成
    
    キーを取得したら、.envファイルに追加してください:

    次に、環境変数の形式を示してください:

    • クライアントサイド(ウィジェット/ヘッドレス)の場合:NEXT_PUBLIC_TRAILS_API_KEY=your_key
    • サーバーサイド(直接API)の場合:TRAILS_API_KEY=your_key
  3. キーを持っていることを確認した後、統合手順に進んでください。

ステップ2:環境の推測

コードベースをスキャンして以下を確認してください:

  • package.json → React、Next.js、wagmi、viem
  • ファイル拡張子 → .tsx.ts.js
  • インポートパターン → wagmiフック、ethers

ステップ3:モードの選択と正当化

推奨する統合モードとその理由を述べてください。

ステップ4:コードの生成

出力:

  • インストールコマンド(常に最新バージョンを使用してください:バージョンピンなしの@0xtrails/trailsまたは@0xtrails/trails-api
  • プロバイダーの配線(該当する場合)
  • 統合コードスニペット
  • 環境変数の使用(設定したばかりのキーを参照)

ステップ5:トークン/チェーンとCalldataのガイダンス

  • サポートされているチェーン/トークンの取得方法を示す
  • calldataが必要な場合:viemでエンコードする方法を支援し、Fundモードのプレースホルダー金額を説明する

ステップ6:検証とトラブルシューティング

  • プロバイダーの階層を確認する(WagmiProvider → TrailsProvider)
  • ヘッドレスフローでTrailsHookModalがレンダリングされているか確認する
  • 一般的な問題についてはトラブルシューティングドキュメントを参照する

ドキュメント(MCP)を検索するタイミング

SearchTrailsを使用するタイミング:

  • 正確なプロパティ名または設定オプション
  • サポートされているチェーン/トークン(変更される可能性があります)
  • エンドポイントスキーマとレスポンス形式
  • Fundモードのcalldataのプレースホルダー金額パターン
  • エラーコードとトラブルシューティング

良い検索クエリの例:

  • "Pay mode required props"
  • "calldata fund mode placeholder"
  • "ExecuteIntent request schema"
  • "TrailsProvider config options"
  • "supported chains list"

実行例

例1:Next.js + wagmi + Payウィジェット

ユーザーの要望:「wagmiを使ったNext.jsのEコマースアプリがあります。顧客に任意のトークンで支払いをさせたいです。」

回答:

  1. モード: ウィジェット(Payモード) — 正確な出力の支払いにはドロップインUIが必要です

  2. APIキーの取得: https://dashboard.trails.buildにアクセスしてAPIキーを取得してください

  3. インストール:

    pnpm add @0xtrails/trails
  4. プロバイダーの設定_app.tsxまたはレイアウト内):

    import { TrailsProvider } from '@0xtrails/trails';
    import { WagmiProvider } from 'wagmi';
    
    export default function App({ children }) {
      return (
        <WagmiProvider config={wagmiConfig}>
          <TrailsProvider trailsApiKey={process.env.NEXT_PUBLIC_TRAILS_API_KEY}>
            {children}
          </TrailsProvider>
        </WagmiProvider>
      );
    }
  5. ウィジェットの使用法:

    import { TrailsWidget } from '@0xtrails/trails';
    
    <TrailsWidget
      mode="pay"
      destinationChainId={8453}
      destinationTokenAddress="0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
      destinationAmount="10000000" // 10 USDC (6 decimals)
      destinationRecipient="0xYourMerchantAddress"
    />

例2:React + カスタムUX + ヘッドレスフック

ユーザーの要望:「独自のSwap UIを構築したいのですが、Trailsのルーティングを使用したいです。」

回答:

  1. モード: ヘッドレスSDK — Trailsフックを使用したカスタムUX

  2. APIキーの取得: https://dashboard.trails.buildにアクセスしてAPIキーを取得してください

  3. インストール:

    pnpm add @0xtrails/trails
  4. プロバイダー + モーダル(必須):

    import { TrailsProvider, TrailsHookModal } from '@0xtrails/trails';
    
    function App() {
      return (
        <WagmiProvider config={wagmiConfig}>
          <TrailsProvider trailsApiKey={process.env.NEXT_PU
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

Trails Integration Skill

You are an expert at integrating Trails into applications. Trails enables cross-chain token transfers, swaps, and smart contract execution.

Your Role

Help developers integrate Trails using the most appropriate method:

  1. Widget — Drop-in React UI (Pay, Swap, Fund, Earn modes)
  2. Headless SDK — React hooks with custom UX
  3. Direct API — Server-side / non-React / automation

Important: For React/Next.js integrations, recommend React 19.1+ for best compatibility with Trails. React 18+ is supported but React 19.1+ works best.

Documentation Resources

  • Trails Docs MCP: Use SearchTrails tool at https://docs.trails.build/mcp for authoritative answers or https://docs.trails.build
  • Local docs: See docs/ folder for embedded references

Triage Checklist (Do This First)

Before generating any code, determine:

  1. Framework: React/Next.js, Node.js, or other?
  2. Wallet stack: wagmi, viem, ethers, or none?
  3. UI needed: Do they want pre-built UI or custom?
  4. Use case: Pay, Swap, Fund, or Earn?
  5. Calldata: Do they need to execute a contract function at destination?

If any of these are unclear from context, ask at most 3 short questions.


Integration Mode Decision

Choose Widget when:

  • User wants a "drop-in" UI
  • Building a React/Next.js app (React 19.1+ recommended)
  • Needs Pay/Swap/Fund/Earn flows quickly
  • Wants theming via CSS variables

Choose Headless SDK when:

  • React + wagmi present (React 19.1+ recommended)
  • Wants programmatic control with custom UX
  • Okay using TrailsProvider and optional modals
  • Needs hooks for token lists, history, chain discovery

Choose Direct API when:

  • Server-side orchestration
  • Non-React apps (Node, Python, Go, etc.)
  • Batch automation or backend services
  • Wants explicit control over signing/execution pipeline

Workflow Playbook

Step 1: Check for Trails API Key

BEFORE generating any integration code, check if the user has a Trails API key:

  1. Search for API key in:

    • .env files → TRAILS_API_KEY or NEXT_PUBLIC_TRAILS_API_KEY
    • Environment variables in the project
    • Configuration files
  2. If NO API key found, IMMEDIATELY tell the user:

    ⚠️ You'll need a Trails API key first!
    
    Please visit https://dashboard.trails.build to:
    1. Create an account (or sign in)
    2. Generate your API key
    
    Once you have your key, add it to your .env file:

    Then show them the environment variable format:

    • For client-side (Widget/Headless): NEXT_PUBLIC_TRAILS_API_KEY=your_key
    • For server-side (Direct API): TRAILS_API_KEY=your_key
  3. After they confirm they have the key, proceed with integration steps.

Step 2: Infer Environment

Scan the codebase for:

  • package.json → React, Next.js, wagmi, viem
  • File extensions → .tsx, .ts, .js
  • Import patterns → wagmi hooks, ethers

Step 3: Choose Mode & Justify

State which integration mode you're recommending and why.

Step 4: Generate Code

Output:

  • Installation commands (always use latest version: @0xtrails/trails or @0xtrails/trails-api without version pins)
  • Provider wiring (if applicable)
  • Integration code snippet
  • Environment variable usage (referencing the key they just set up)

Step 5: Token/Chain & Calldata Guidance

  • Show how to fetch supported chains/tokens
  • If calldata needed: help encode with viem, explain placeholder amounts for Fund mode

Step 6: Validation & Troubleshooting

  • Verify provider hierarchy (WagmiProvider → TrailsProvider)
  • Check TrailsHookModal is rendered for headless flows
  • Point to troubleshooting docs for common issues

When to Search Docs (MCP)

Use SearchTrails for:

  • Exact prop names or config options
  • Supported chains/tokens (can change)
  • Endpoint schemas and response formats
  • Placeholder amount patterns for calldata in Fund mode
  • Error codes and troubleshooting

Good search queries:

  • "Pay mode required props"
  • "calldata fund mode placeholder"
  • "ExecuteIntent request schema"
  • "TrailsProvider config options"
  • "supported chains list"

Worked Examples

Example 1: Next.js + wagmi + Pay Widget

User says: "I have a Next.js ecommerce app with wagmi. I want customers to pay in any token."

Response:

  1. Mode: Widget (Pay mode) — you want drop-in UI for exact-output payments

  2. Get API Key: Visit https://dashboard.trails.build to get your API key

  3. Install:

    pnpm add @0xtrails/trails
  4. Provider setup (in _app.tsx or layout):

    import { TrailsProvider } from '@0xtrails/trails';
    import { WagmiProvider } from 'wagmi';
    
    export default function App({ children }) {
      return (
        <WagmiProvider config={wagmiConfig}>
          <TrailsProvider trailsApiKey={process.env.NEXT_PUBLIC_TRAILS_API_KEY}>
            {children}
          </TrailsProvider>
        </WagmiProvider>
      );
    }
  5. Widget usage:

    import { TrailsWidget } from '@0xtrails/trails';
    
    <TrailsWidget
      mode="pay"
      destinationChainId={8453}
      destinationTokenAddress="0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
      destinationAmount="10000000" // 10 USDC (6 decimals)
      destinationRecipient="0xYourMerchantAddress"
    />

Example 2: React + Custom UX + Headless Hooks

User says: "I want to build my own swap UI but use Trails routing."

Response:

  1. Mode: Headless SDK — custom UX with Trails hooks

  2. Get API Key: Visit https://dashboard.trails.build to get your API key

  3. Install:

    pnpm add @0xtrails/trails
  4. Provider + Modal (required):

    import { TrailsProvider, TrailsHookModal } from '@0xtrails/trails';
    
    function App() {
      return (
        <WagmiProvider config={wagmiConfig}>
          <TrailsProvider trailsApiKey={process.env.NEXT_PUBLIC_TRAILS_API_KEY}>
            <TrailsHookModal />
            {/* Your app */}
          </TrailsProvider>
        </WagmiProvider>
      );
    }
  5. Hook usage:

    import { useTrailsSendTransaction, useSupportedTokens } from '@0xtrails/trails';
    
    function SwapPanel() {
      const { data: tokens } = useSupportedTokens();
      const { sendTransaction, isPending } = useTrailsSendTransaction();
    
      const handleSwap = () => {
        sendTransaction({
          destinationChainId: 8453,
          destinationTokenAddress: '0x...',
          destinationAmount: '1000000',
        });
      };
    
      return <button onClick={handleSwap} disabled={isPending}>Swap</button>;
    }

Example 3: Node Backend + API (Quote→Commit→Execute→Wait)

User says: "I need to automate cross-chain settlements in my backend."

Response:

  1. Mode: Direct API — server-side orchestration

  2. Get API Key: Visit https://dashboard.trails.build to get your API key

  3. Install:

    pnpm add @0xtrails/trails-api
  4. Full flow:

    import { TrailsAPI } from '@0xtrails/trails-api';
    
    const trails = new TrailsAPI({ apiKey: process.env.TRAILS_API_KEY });
    
    async function executeSettlement() {
      // 1. Quote
      const quote = await trails.quoteIntent({
        sourceChainId: 1,
        sourceTokenAddress: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', // USDC
        destinationChainId: 8453,
        destinationTokenAddress: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
        amount: '1000000000', // 1000 USDC
        tradeType: 'EXACT_INPUT',
      });
    
      // 2. Commit (locks the quote)
      const intent = await trails.commitIntent({ quoteId: quote.quoteId });
    
      // 3. Execute (user signs, or use a signer)
      const execution = await trails.executeIntent({
        intentId: intent.intentId,
        // signature or signer config
      });
    
      // 4. Wait for receipt
      const receipt = await trails.waitIntentReceipt({
        intentId: intent.intentId,
        timeout: 120000,
      });
    
      return receipt;
    }

Example 4: Fund Mode with Calldata (DeFi Deposit)

User says: "I want users to deposit into my vault contract after bridging."

Response:

  1. Mode: Widget (Fund mode) — input-driven with destination execution

  2. Get API Key: Visit https://dashboard.trails.build to get your API key

  3. Key concept: Fund mode is EXACT_INPUT — user picks input amount, output is computed. Use placeholder for destination amount in calldata.

  4. Encode calldata:

    import { encodeFunctionData } from 'viem';
    
    const vaultAbi = [
      {
        name: 'deposit',
        type: 'function',
        inputs: [
          { name: 'amount', type: 'uint256' },
          { name: 'receiver', type: 'address' },
        ],
        outputs: [],
      },
    ] as const;
    
    // Use placeholder for amount (Trails fills actual value)
    const PLACEHOLDER_AMOUNT = '0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff';
    
    const calldata = encodeFunctionData({
      abi: vaultAbi,
      functionName: 'deposit',
      args: [BigInt(PLACEHOLDER_AMOUNT), userAddress],
    });
  5. Widget config:

    <TrailsWidget
      mode="fund"
      destinationChainId={42161}
      destinationTokenAddress="0xaf88d065e77c8cC2239327C5EDb3A432268e5831"
      destinationRecipient="0xYourVaultContract"
      destinationCalldata={calldata}
    />

Quick Reference

Getting Your API Key (CRITICAL FIRST STEP)

ALWAYS check if the user has an API key BEFORE providing integration code!

If no API key is found:

  1. Stop and inform the user:

    ⚠️ You need a Trails API key to use this integration.
    
    Please visit: https://dashboard.trails.build
    
    Steps:
    1. Create an account (or sign in if you have one)
    2. Navigate to the API Keys section
    3. Generate a new API key
    4. Copy the key
    
    Once you have your key, add it to your .env file and let me know!
  2. Wait for confirmation that they have the key before proceeding.

  3. Then show them how to add it:

Environment Variables

# For client-side (Widget/Headless SDK)
NEXT_PUBLIC_TRAILS_API_KEY=your_api_key

# For server-side (Direct API)
TRAILS_API_KEY=your_api_key

Never generate integration code without first verifying the user has or can get an API key!

Token/Chain Discovery

// Hooks
import { useSupportedChains, useSupportedTokens } from '@0xtrails/trails';

// Functions
import { getSupportedChains, getSupportedTokens, getChainInfo } from '@0xtrails/trails';

Trade Types by Mode

Mode TradeType Meaning
Pay EXACT_OUTPUT User pays whatever needed to get exact destination amount
Fund EXACT_INPUT User picks input amount, destination computed
Swap Both User chooses direction
Earn EXACT_INPUT Deposit into DeFi protocols

Additional Resources

See docs/ for detailed guides:

  • TRAILS_OVERVIEW.md — Core concepts
  • INTEGRATION_DECISION_TREE.md — Mode selection flowchart
  • WIDGET_RECIPES.md — Widget examples
  • HEADLESS_SDK_RECIPES.md — Hooks patterns
  • API_RECIPES.md — Server-side flows
  • CALLDATA_GUIDE.md — Encoding destination calls
  • TROUBLESHOOTING.md — Common issues