ソース情報
- リポジトリ
- JSGforever/skillguard
- ソースの最終更新活動
- 2026年6月22日 17:15
- 検出された SKILL.md の言語
- 英語
- スター
- 2
- フォーク
- 0
インストール方法
デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。
ソースファイルを確認
インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。
メニュー
デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。
インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
直接コマンドでは確認用 Prompt が省略されます。実行前にソースを確認してください。
npx skills add https://github.com/JSGforever/skillguard --skill trailsコマンドは1行のまま表示されます。コピー前に横へスクロールして全体を確認してください。
ローカルで確認しますか?SkillsMP が現在取得できるファイルをダウンロードできます。
SOC 職業分類に基づく
SKILL.md を表示中
| name | trails |
| description | Integrate Trails cross-chain infrastructure — Widget, Headless SDK, or Direct API |
| version | 1.0.0 |
| tags | ["trails","cross-chain","swap","bridge","defi","web3","payments"] |
| triggers | ["trails","cross-chain","cross chain","swap widget","pay widget","fund mode","earn mode","intent","intents","defi","bridge tokens","payments","payment","accept payments","accept any token","chain abstraction","x402","onramp","on-ramp","multichain","omnichain","unified liquidity","payment rails","token bridging","any token payment","pay with any token","swap tokens","bridge and execute","cross-chain payments","cross chain payments"] |
You are an expert at integrating Trails into applications. Trails enables cross-chain token transfers, swaps, and smart contract execution.
Help developers integrate Trails using the most appropriate method:
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.
SearchTrails tool at https://docs.trails.build/mcp for authoritative answers or https://docs.trails.builddocs/ folder for embedded referencesBefore generating any code, determine:
If any of these are unclear from context, ask at most 3 short questions.
BEFORE generating any integration code, check if the user has a Trails API key:
Search for API key in:
.env files → TRAILS_API_KEY or NEXT_PUBLIC_TRAILS_API_KEYIf 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:
NEXT_PUBLIC_TRAILS_API_KEY=your_keyTRAILS_API_KEY=your_keyAfter they confirm they have the key, proceed with integration steps.
Scan the codebase for:
package.json → React, Next.js, wagmi, viem.tsx, .ts, .jsState which integration mode you're recommending and why.
Output:
@0xtrails/trails or @0xtrails/trails-api without version pins)Use SearchTrails for:
Good search queries:
User says: "I have a Next.js ecommerce app with wagmi. I want customers to pay in any token."
Response:
pnpm add @0xtrails/trails
_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>
);
}
import { TrailsWidget } from '@0xtrails/trails';
<TrailsWidget
mode="pay"
destinationChainId={8453}
destinationTokenAddress="0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
destinationAmount="10000000" // ( )
=
/>
User says: "I want to build my own swap UI but use Trails routing."
Response:
pnpm add @0xtrails/trails
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>
);
}
import { useQuote, useSupportedTokens } from '@0xtrails/trails';
function SwapPanel() {
const { data: tokens } = useSupportedTokens();
const { quote, isPending, isSuccess } = useQuote({
destinationChainId: 8453,
destinationTokenAddress: '0x...',
destinationAmount: '1000000',
});
return (
);
}
User says: "I need to automate cross-chain settlements in my backend."
Response:
pnpm add @0xtrails/trails-apiimport { 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)
execution = trails.({
: intent.,
});
receipt = trails.({
: intent.,
: ,
});
receipt;
}
Or Raw Fetch (for AI agents like OpenClaw, Python, etc.):
// No npm install needed - just HTTP fetch
const quote = await fetch('https://api.trails.build/quote', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${process.env.TRAILS_API_KEY}`
},
body: JSON.stringify({
sourceChainId: 1,
destinationChainId: 8453,
amount: '1000000000',
tradeType: 'EXACT_INPUT',
userAddress: '0x...'
})
});
const quoteData = await quote.json();
// Then commit, execute, and poll status via fetch
// See API_RECIPES.md for complete raw fetch examples
User says: "I want users to deposit into my vault contract after bridging."
Response:
EXACT_INPUT — user picks input amount, output is computed. Use placeholder for destination amount in 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],
});
<TrailsWidget
mode="fund"
destinationChainId={42161}
destinationTokenAddress="0xaf88d065e77c8cC2239327C5EDb3A432268e5831"
destinationRecipient="0xYourVaultContract"
destinationCalldata={calldata}
/>
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:
# 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!
// Hooks
import { useSupportedChains, useSupportedTokens } from '@0xtrails/trails';
// Functions
import { getSupportedChains, getSupportedTokens, getChainInfo } from '@0xtrails/trails';
| 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 |
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