1inch について
エージェント向けの 1inch 取引スキルです。ローカルの Python スクリプトで 1inch API とウォレットサービスを呼び出し、トークン検索、見積もり、承認、スワップを行います。スクリプトは JSON を出力し、一連のスワップ後に残高変化を確認します。
主な機能
- 01チェーン上のトークン一覧と検索
- 02スワップ見積もりの取得
- 03Allowance の確認と承認送信
- 04トークンスワップの実行
- 05見積もり、スワップ、残高確認の一括処理
活用シーン
- 01対応チェーンのトークンを検索
- 02スワップ前に見積もりを確認
- 03トークン承認を確認または送信
- 04スワップ後の残高変化を検証
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ starchild-ai-agent/ official-skills --skill 1inchインストール後、Claude Code で/1inchを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
__init__.py_trade_report.pyclient.pyexports.pyfusion_client.pyfusion_tools.pyorderbook_tools.pytools.pyscripts/_cost_track.py_oneinch_lib.pyapprove.pycheck_allowance.pyquote.pyrun_cross_chain_flow.pyrun_limit_order_flow.pyrun_limit_order_v2.pyrun_swap_flow.pyswap.pytest_create_limit_order_v3.pytokens.pyscripts/fusion_node/build_order.jspackage.json詳細
1inch (スクリプトファースト、インストールしてすぐ使える)
このスキルはあなたのアーキテクチャ向けに設計されています: プラットフォームが注入するツールに依存しないでください。
- ✅
skills/1inch/scripts/配下のスキルローカルスクリプトのみを使用します - ✅ エージェントは
bash(python3 ...) 経由でスクリプトを実行します - ✅
oneinch_*ツール呼び出しは不要です
このバージョンが「tool not found」を解決する理由
旧設計は実行時のツール登録 (oneinch_quote、oneinch_swap、...) に依存していました。
ツールの注入が失敗すると、エージェントはブロックされてしまいます。
新設計では決定的なローカルスクリプトを使用します:
- 1inch HTTP API を直接呼び出す
- ウォレットサービスを直接呼び出す (
/.fly/api経由の OIDC) - JSON 結果を出力する
そのため、インストール後はエージェントが常に実行可能なパスを持ちます。
ファイル
scripts/_oneinch_lib.py— 共有クライアント + ウォレット/OIDC ヘルパーscripts/tokens.py— トークンの検索/一覧scripts/quote.py— クォートのみscripts/check_allowance.py— アローランスの確認scripts/approve.py— approve トランザクションのブロードキャストscripts/swap.py— スワップの実行 (任意で自動 approve)scripts/run_swap_flow.py— ワンコマンドフロー (クォート + 任意の approve + スワップ + 取引後の残高検証)
環境
必須:
ONEINCH_API_KEYWALLET_SERVICE_URL(デフォルトのフォールバックあり)- 1inch API 向けの sc-proxy 接続性 (必須)
前提:
- OIDC トークンの発行のために
/.fly/apiunix ソケットを持つ Fly Machine 上で実行されていること。
sc-proxy の要件 (重要)
このスキルは 1inch 呼び出しを sc-proxy 経由で強制します。
- まず
HTTP_PROXY/HTTPS_PROXYからプロキシを読み取り、なければPROXY_HOST+PROXY_PORTにフォールバックします。 - プロキシの環境変数が見つからない場合、スクリプトはサイレントに直接接続するのではなく、明確なエラーで即座に失敗します。
対応チェーン
ethereum, arbitrum, base, optimism, polygon, bsc, avalanche, gnosis
エージェントの実行ルール (重要)
ユーザーが 1inch の操作を求めた場合、次の正確なパターンに従ってください:
- 絶対に
oneinch_*ツールを呼び出さない bash+python3 skills/1inch/scripts/<script>.py ...でローカルスクリプトを実行する- JSON 出力を解析し、簡潔な要約で応答する
- 書き込み操作については、常にウォレット残高ツール (利用可能な場合) またはスクリプトベースのチェックの再実行で事後確認を行う
標準的なマッピング
- 「トークンアドレスを調べる / トークンを一覧表示する」 →
tokens.py - 「先にクォートする / いくらに交換できるか見る」 →
quote.py - 「承認を確認する」 →
check_allowance.py - 「承認する」 →
approve.py - 「交換を実行する」 →
swap.py
コマンド例
1) トークンを検索
python3 skills/1inch/scripts/tokens.py --chain polygon --search POL --limit 10
2) クォート: 1 USDC -> POL
python3 skills/1inch/scripts/quote.py --chain polygon --from USDC --to POL --amount 1
3) アローランスを確認 (USDC)
python3 skills/1inch/scripts/check_allowance.py --chain polygon --token USDC
4) USDC を承認 (無制限)
python3 skills/1inch/scripts/approve.py --chain polygon --token USDC
5) スワップ: 1 USDC -> POL (必要に応じて自動 approve)
python3 skills/1inch/scripts/swap.py --chain polygon --from USDC --to POL --amount 1 --slippage 1.0 --auto-approve
6) ワンコマンドのフルフロー (推奨)
python3 skills/1inch/scripts/run_swap_flow.py --chain polygon --from USDC --to POL --amount 1 --slippage 1.0 --auto-approve
必要に応じてリトライを調整:
python3 skills/1inch/scripts/run_swap_flow.py --chain polygon --from USDC --to POL --amount 1 --slippage 1.0 --auto-approve --swap-retries 3 --swap-retry-backoff 2
「X USDC 分の POL を買う」のデフォルトワークフロー
推奨される決定的な手順:
run_swap_flow.py --auto-approve- JSON 結果を読み取り、クォート、トランザクション送信結果、検証の差分を報告する
フォールバックの手動手順 (ユーザーがステップバイステップを求めた場合):
quote.py(予想される出力を確認)swap.py --auto-approve- 最新の残高で検証する (前後)
スワップがウォレットポリシーによる拒否を返した場合:
wallet-policyスキルをロードする- ワイルドカードのベースライン (
DENY exportPrivateKey、ALLOW *) を提案する - ユーザーが確認した後、スワップコマンドを再実行する
エラーハンドリング
Unknown chain→ ユーザーに対応チェーンを選ぶよう求める1inch API 4xx/5xx→ 生のエラーを表示する。run_swap_flow.pyは一時的な/swapの 5xx を自動的にリトライします (デフォルト: 指数バックオフで 2 回リトライ)- 1inch からの
Not enough <token> balance→ シンボルが別のトークンバリアント (例: USDC.e と USDC) にマッピングされている可能性が高いです。tokens.pyから明示的なトークンアドレスを指定して再実行してください Wallet API 4xx/5xx→ 生のエラーを表示し、tx ハッシュを捏造しないinsufficient allowance(自動 approve なし) →--auto-approveを付けて再実行するか、approve.pyを実行するpolicyによる拒否 → ポリシー更新を提案してからリトライする
注意事項
- 金額入力は人間単位です(例:
--amount 1= 1 USDC)。小数点変換はスクリプトが処理します。 - トークンシンボルの解決は、選択したチェーン上の 1inch
/tokensから行われます。 - チェーン上でシンボルに複数のバリアントがある場合(例:
USDC/USDC.e)、曖昧さを避けるためにトークンコントラクトアドレスを明示的に渡すことを推奨します。 - ネイティブトークンを入力する場合は、
native/ETHを使用してください。
クイックスモークテスト
python3 skills/1inch/scripts/quote.py --chain polygon --from USDC --to POL --amount 1
これが動作すれば、スキルはスクリプトモードで機能しています。
スクリプトリファレンス(CLI 引数)
このスキルはスクリプトを公開しています(Python 関数ではありません)。bash +
python3 skills/1inch/scripts/<name>.py <args> で実行してください。すべてのスクリプトは
stdout に JSON を出力します — json.loads(...) でパースするか、そのまま出力を表示してください。
共通引数
| 引数 | 必須 | 備考 |
|---|---|---|
--chain | はい | ethereum、arbitrum、base、optimism、polygon、bsc、avalanche、gnosis のいずれか |
--from、--to | はい(swap/quote) | トークンシンボル(USDC、POL など)またはコントラクトアドレス。ネイティブガストークンには native / ETH を使用してください。 |
--amount | はい(swap/quote) | 人間単位(例: 1 = 1 USDC、小数点変換は内部で処理されます) |
--slippage | 任意 | パーセント(デフォルト 1.0) |
--token | はい(allowance/approve) | トークンシンボルまたはアドレス |
--auto-approve | 任意フラグ | swap/run_swap_flow のみ — allowance が不足している場合に approve を自動ブロードキャストします |
--swap-retries | 任意 | run_swap_flow のみ — /swap の 5xx でリトライします(デフォルト 2) |
--swap-retry-backoff | 任意 | run_swap_flow のみ — バックオフ秒数(デフォルト 1) |
スクリプト
| スクリプト | 目的 | 必須引数 |
|---|---|---|
tokens.py | チェーン上のトークンを一覧表示または検索 | --chain + --search SYM および/または --limit N |
quote.py | クォートを取得(ブロードキャストなし) | --chain --from --to --amount |
check_allowance.py | 1inch ルーターへの ERC-20 allowance を確認 | --chain --token |
approve.py | approve トランザクションをブロードキャスト(無制限) | --chain --token |
swap.py | スワップを実行 | --chain --from --to --amount(+ 任意の --slippage、--auto-approve) |
run_swap_flow.py | ワンコマンドでクォート +(自動 approve)+ スワップ + トレード後の残高確認 | swap.py と同じ(+ 任意のリトライ引数) |
推奨フロー
ユーザーからの「X を Y にスワップ」というあらゆるリクエストに対して、デフォルトで run_swap_flow.py --auto-approve を使用してください。これはチェーン全体をエンドツーエンドで処理し、ブロードキャスト後の
ウォレット残高読み取りによって検証します。
ユーザーが「クォートだけで、実行はしないで」と依頼した場合 → quote.py のみ。
出力スキーマ(run_swap_flow.py)
以下のトップレベルキーを持つ JSON:
quote—{fromToken, toToken, fromAmount, toAmount, estimatedGas, ...}approve—{required, txHash, success}(--auto-approveの場合のみ)swap—{txHash, success, error?}verification—{from_balance_before, from_balance_after, to_balance_before, to_balance_after, delta_in, delta_out}
ウォレットがポリシー拒否を返した場合、swap.success = false となり、
swap.error に policy が含まれます。wallet-policy スキルを読み込み、
ワイルドカードのベースラインを提案してから再実行してください。