Trails クロスチェーン連携
Trailsのクロスチェーンインフラを、ウィジェット、ヘッドレスSDK、または直接APIとして統合するためのSkill。
📜 元の英語説明(参考)
Integrate Trails cross-chain infrastructure — Widget, Headless SDK, or Direct API
🇯🇵 日本人クリエイター向け解説
Trailsのクロスチェーンインフラを、ウィジェット、ヘッドレスSDK、または直接APIとして統合するためのSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
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
$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. 下の青いボタンを押して
trails.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
trailsフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-17
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
Trails統合スキル
あなたはTrailsをアプリケーションに統合する専門家です。Trailsは、クロスチェーンのトークン転送、スワップ、スマートコントラクト実行を可能にします。
あなたの役割
開発者が最も適切な方法でTrailsを統合できるよう支援してください。
- ウィジェット — ドロップインReact UI(Pay、Swap、Fund、Earnモード)
- ヘッドレスSDK — カスタムUXを備えたReactフック
- 直接API — サーバーサイド / 非React / 自動化
重要: React/Next.jsの統合には、Trailsとの最高の互換性のためにReact 19.1+を推奨します。React 18+もサポートされていますが、React 19.1+が最適に動作します。
ドキュメントリソース
- Trails Docs MCP: 信頼できる回答を得るには、
https://docs.trails.build/mcpでSearchTrailsツールを使用するか、https://docs.trails.buildをご覧ください。 - ローカルドキュメント: 組み込みの参照については
docs/フォルダーをご覧ください。
トリアージチェックリスト(これを最初に実行してください)
コードを生成する前に、以下を判断してください。
- フレームワーク: React/Next.js、Node.js、その他?
- ウォレットスタック: wagmi、viem、ethers、またはなし?
- UIの必要性: 組み込みUIが必要ですか、それともカスタムUIが必要ですか?
- ユースケース: Pay、Swap、Fund、またはEarn?
- 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キーを持っているか確認してください。
-
APIキーを検索する場所:
.envファイル →TRAILS_API_KEYまたはNEXT_PUBLIC_TRAILS_API_KEY- プロジェクト内の環境変数
- 設定ファイル
-
APIキーが見つからない場合、直ちにユーザーに伝えてください:
⚠️ まずTrails APIキーが必要です! https://dashboard.trails.build にアクセスして、以下を行ってください: 1. アカウントを作成(またはサインイン) 2. APIキーを生成 キーを取得したら、.envファイルに追加してください:次に、環境変数の形式を示してください:
- クライアントサイド(ウィジェット/ヘッドレス)の場合:
NEXT_PUBLIC_TRAILS_API_KEY=your_key - サーバーサイド(直接API)の場合:
TRAILS_API_KEY=your_key
- クライアントサイド(ウィジェット/ヘッドレス)の場合:
-
キーを持っていることを確認した後、統合手順に進んでください。
ステップ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コマースアプリがあります。顧客に任意のトークンで支払いをさせたいです。」
回答:
-
モード: ウィジェット(Payモード) — 正確な出力の支払いにはドロップインUIが必要です
-
APIキーの取得: https://dashboard.trails.buildにアクセスしてAPIキーを取得してください
-
インストール:
pnpm add @0xtrails/trails -
プロバイダーの設定(
_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> ); } -
ウィジェットの使用法:
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のルーティングを使用したいです。」
回答:
-
モード: ヘッドレスSDK — Trailsフックを使用したカスタムUX
-
APIキーの取得: https://dashboard.trails.buildにアクセスしてAPIキーを取得してください
-
インストール:
pnpm add @0xtrails/trails -
プロバイダー + モーダル(必須):
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:
- Widget — Drop-in React UI (Pay, Swap, Fund, Earn modes)
- Headless SDK — React hooks with custom UX
- 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
SearchTrailstool athttps://docs.trails.build/mcpfor authoritative answers orhttps://docs.trails.build - Local docs: See
docs/folder for embedded references
Triage Checklist (Do This First)
Before generating any code, determine:
- Framework: React/Next.js, Node.js, or other?
- Wallet stack: wagmi, viem, ethers, or none?
- UI needed: Do they want pre-built UI or custom?
- Use case: Pay, Swap, Fund, or Earn?
- 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:
-
Search for API key in:
.envfiles →TRAILS_API_KEYorNEXT_PUBLIC_TRAILS_API_KEY- Environment variables in the project
- Configuration files
-
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
- For client-side (Widget/Headless):
-
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/trailsor@0xtrails/trails-apiwithout 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:
-
Mode: Widget (Pay mode) — you want drop-in UI for exact-output payments
-
Get API Key: Visit https://dashboard.trails.build to get your API key
-
Install:
pnpm add @0xtrails/trails -
Provider setup (in
_app.tsxor 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> ); } -
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:
-
Mode: Headless SDK — custom UX with Trails hooks
-
Get API Key: Visit https://dashboard.trails.build to get your API key
-
Install:
pnpm add @0xtrails/trails -
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> ); } -
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:
-
Mode: Direct API — server-side orchestration
-
Get API Key: Visit https://dashboard.trails.build to get your API key
-
Install:
pnpm add @0xtrails/trails-api -
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:
-
Mode: Widget (Fund mode) — input-driven with destination execution
-
Get API Key: Visit https://dashboard.trails.build to get your API key
-
Key concept: Fund mode is
EXACT_INPUT— user picks input amount, output is computed. Use placeholder for destination amount in calldata. -
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], }); -
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:
-
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! -
Wait for confirmation that they have the key before proceeding.
-
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 conceptsINTEGRATION_DECISION_TREE.md— Mode selection flowchartWIDGET_RECIPES.md— Widget examplesHEADLESS_SDK_RECIPES.md— Hooks patternsAPI_RECIPES.md— Server-side flowsCALLDATA_GUIDE.md— Encoding destination callsTROUBLESHOOTING.md— Common issues