Claude CodeのCircle SkillsプラグインでUSDC決済とコントラクトを実装する
Circle公式のcircle-skillsは、USDC決済・ウォレット・スマートコントラクトの実装指針を19のスキルとMCPでClaude Codeに足します。導入手順、スキルの選び方、SKILL.mdの落とし穴をまとめます。
circle-skillsは、ステーブルコインUSDCを発行するCircleが配っているClaude Codeプラグインです。USDCの決済、チェーンをまたぐ送金、ウォレット、スマートコントラクトのデプロイまでを、実装時の判断基準と落とし穴としてスキルにまとめています。あわせてCircleのMCPサーバーも使えます。
ブロックチェーン周りは、SDKのメソッド名もコントラクトアドレスも版ごとに変わります。モデルの記憶だけで書かせると、動かないコードが出やすい領域です。このプラグインは、その手前の「どのウォレットを選ぶか」「どこで失敗するか」を先に読ませるためのものです。導入、スキルの選び方、決済・ウォレット・コントラクトそれぞれの使いどころ、鍵を守る設定までを順に扱います。
circle-skillsに入っているもの
マーケットプレイスの掲載ページでは、提供元はCircle、インストール数は495と表示されています。リポジトリのライセンスはApache 2.0です。
circle-skillsの構成
スキル
19
README の Skills 表に載る数
MCPサーバー
1
circle(コード生成用)
インストール数
495
掲載ページの表示
READMEは、スキルとMCPの役割を分けています。スキルは「アーキテクチャの選び方、UXの指針、よくある間違い」といった変わりにくい内容を持ちます。SDKのメソッド署名、コントラクトアドレス、チェーンIDのように頻繁に変わる情報は、MCPサーバーに任せる設計です。MCPサーバーは不要かという問いには、スキル単体でも動くが、バージョンで変わるSDKの細部の正確さはMCPで上がる、と答えています。
READMEのFAQには「スキルがコードを書いてくれるのか」という項目もあります。答えはいいえで、スキルは指示と実装パターンであり、コードを生成するのはエージェント側です。
導入する
Claude Codeでは、マーケットプレイスを登録してからプラグインを入れます。READMEの手順は次の2行です。
/plugin marketplace add circlefin/skills
/plugin install circle-skills@circleClaude Codeのドキュメントによると、セッション内の /plugin install はその場では入れず、プラグインの詳細画面を開きます。内容を確認し、スコープを選んでから入れる流れです。チームで共有したい場合は、プロジェクトスコープを選ぶと .claude/settings.json に有効化の記述が入ります。ただし、この記述だけでは他のメンバーの手元にダウンロードされません。各自が claude plugin install <name>@<marketplace> --scope project を一度実行する必要があります。
MCPサーバーは別に追加します。Circleの開発者ドキュメントにあるClaude Code向けのコマンドは次のとおりです。
claude mcp add --transport http circle \
https://api.circle.com/v1/codegen/mcp --scope user
claude mcp get circle2行目の claude mcp get circle は、登録できたかの確認用です。ドキュメントはこの後に「Wallets、Contracts、CCTP、Gatewayのコードを生成できる」と続けています。
更新はプラグイン側が /plugin marketplace update、Vercel Skills CLIで入れた場合は npx skills update です。READMEは、スキルがローカルファイルであり、少し古くても使えるように変わりにくい内容で作ってあると説明しています。
19本のスキルを目的で選ぶ
README上のスキル名は用途ごとにまとまっています。実装したいものから逆引きすると次のとおりです。
| やりたいこと | 使うスキル | 一言で言うと |
|---|---|---|
| EVM・SolanaでUSDCを動かす | 使うスキルuse-usdc | 一言で言うと残高確認、送金、承認、取引の検証 |
| APIをUSDCの従量課金にする | 使うスキルaccept-agent-payments | 一言で言うとx402の売り手側とNanopaymentsが既定 |
| チェーン間でUSDCを動かす | 使うスキルbridge-tokens use-gateway unify-balance | 一言で言うとCCTP、Gateway、残高の統合 |
| ウォレットを選んで作る | 使うスキルuse-circle-wallets と各ウォレット用スキル | 一言で言うと3種類のウォレットの比較と実装 |
| コントラクトをデプロイ・監視する | 使うスキルuse-smart-contract-platform | 一言で言うとバイトコードやテンプレートからのデプロイ |
| Arcチェーンで作る | 使うスキルuse-arc | 一言で言うとUSDCがネイティブのガストークン |
| スワップ・購入UIを組み込む | 使うスキルswap-tokens buy-crypto | 一言で言うとキーレスのスワップ、カード購入のウィジェット |
| AIエージェントに支払わせる | 使うスキルuse-circle-cli use-agent-wallet pay-via-agent-wallet fund-agent-wallet agent-wallet-policy recover-eco-funds | 一言で言うとCircle CLIのエージェント用ウォレット |
表の最後の行は、Circle CLI(@circle-fin/cli)を中心にした6本です。エージェント用ウォレットの作成、x402対応サービスへの支払い、入金、支出上限の確認、旧Eco預入からの資金回収を扱います。
一つだけ、名前の食い違いがあります。Circleの開発者ドキュメントのエージェント向け案内は bridge-stablecoin というスキル名を挙げ、README側の表は bridge-tokens と書いています。案内文が名前を挙げるのは9本で、READMEの19本とは範囲も違います。インストール後に実際にどの名前で並ぶかは、/plugin の詳細画面かプラグインのフォルダで確かめるのが確実です。
USDC決済を組み込む
決済まわりでスキルが先に教えるのは、コードの前の判断です。READMEは「CCTPとGatewayのどちらを使うか」「どのウォレット型が合うか」を意思決定の枠組みとして挙げ、正しいパターンとして「USDCは6桁小数」「approveしてからdepositする流れ」を挙げています。
6桁小数は、実装で最初に踏む地雷です。ERC-20の多くは18桁なので、parseUnits(value, 18) で書くと桁がずれます。modular walletsのスキルには、USDCの金額には parseUnits(value, 6) を使い、18は使わないという記述があります。
プロンプトは、目的と環境を絞ると効きます。例えば次のような依頼です(例示であり、実際の応答は環境で変わります)。
Base Sepoliaのテストネットで、USDCを別アドレスに送る処理を
TypeScriptで書いて。まず use-usdc のスキルを読み、金額は6桁小数で扱うこと。
残高確認と、送金後のトランザクション検証まで含める。APIを有料にしたい場合は accept-agent-payments が入口です。説明文によると、HTTPエンドポイントをUSDCの呼び出し単位の課金にし、既定はGateway Nanopaymentsです。x402の売り手側の実装、支払い済み呼び出しの検証、Agent Marketplaceへの掲載準備も範囲に入っています。
ウォレットは3種類から選ぶ
ウォレット系のスキルは、まず use-circle-wallets で型を決めさせる作りです。説明文では、developer-controlled、user-controlled、modularの3種類を、カストディの形、鍵の管理、用途で比べるとあります。
3種類のウォレットの分かれ目
developer-controlled
支払い、資金管理、自動化のようなカストディ型の流れに向きます。ウォレットの作成と鍵の保管は開発者側の責任です。
user-controlled
Google、Facebook、Apple、メールのOTP、PINでログインでき、シードフレーズを見せずに済む埋め込み型です。
modular
パスキーで認証し、ガス代の肩代わりもできます。ERC-4337のアカウント抽象化に基づきます。
「ウォレットのスマートコントラクト」にあたるのは三つ目のmodularです。use-modular-wallets によると、これはモジュールで機能を足せるスマートコントラクトアカウント(MSCA)で、ERC-4337とERC-6900の上に作られています。アカウントのデプロイは最初の送信まで遅延されます。
スキルに書かれた注意点を、実装前に拾っておきます。
- 利用前にCircle Consoleでクライアントキーを作り、パスキーのドメインを設定する。パスキーはドメインに結び付く
- ガス代をユーザーに負担させないなら、ユーザーオペレーションに
paymaster: trueを渡す - パスキーの資格情報は永続化して復元する。参照実装は手軽さのために
localStorageを使うが、本番では使わないと明記されている - ドメインが合わないと
SecurityError、既に登録済みの資格情報を再登録するとInvalidStateErrorになる
最後の項目は、Claudeにエラーを貼って原因を聞くとき、スキルが読み込まれていれば切り分けの出発点になります。
スマートコントラクトをデプロイして監視する
コントラクトまわりは use-smart-contract-platform が担当します。説明文では、バイトコードからのデプロイ、ERC-20・721・1155とエアドロップのテンプレート、ABIを使った読み書き、イベントのウェブフック監視が範囲です。Solidityを書かずに、監査済みテンプレートから出す道も用意されています。
このスキルの本体は、Claudeが自力では知り得ない運用上の制約です。
デプロイ前に知っておく4つの制約
クライアントを二つ使う
デプロイと読み取り、イベント監視はSmart Contract Platformのクライアント、書き込みトランザクションはDeveloper-Controlled Walletsのクライアントです。書き込みにSCP側は使いません。
冪等キーはUUID v4
変更を伴う操作には
idempotencyKeyが必要で、UUID v4以外だと「API parameter invalid」という分かりにくいエラーになります。EVMバージョンはparis以前
Solidity 0.8.20以降の既定はShanghaiで、PUSH0命令が入ります。ArcなどShanghai未対応のチェーンではデプロイが失敗します。
デプロイは非同期
レスポンスは開始を示すだけです。
getContract()のdeploymentStatusをポーリングして完了を待ちます。
3つ目は、Claudeにコンパイル設定まで任せたときに起きやすい失敗です。スキルには「Solidity 0.8.20以降を既定のEVMバージョンでコンパイルしない」と強い調子で書かれています。デプロイ失敗時のエラー文字列として ESTIMATION_ERROR と Create2: Failed on deploy が挙がっているので、症状から原因をたどれます。
環境変数は2つです。ここにSDKの初期化で使う秘密情報が集中します。
# .env(コミットしない)
CIRCLE_API_KEY= # 形式は PREFIX:ID:SECRET
ENTITY_SECRET= # Developer-Controlled Wallets 用に登録した秘密エラーコードの表も有用です。例えば175404は、TEST用のAPIキーをメインネットに、またはLIVE用のキーをテストネットに使ったときのエラーで、キーの接頭辞とネットワークを合わせるのが対処です。175004はコントラクトの重複で、listContracts で既存のIDを探して使い回します。
対応チェーンはArbitrum、Arc、Avalanche、Base、Ethereum、Monad、OP Mainnet、Polygon PoS、Unichainです。SolanaとAptos、NEARではSCPは使えません。
鍵を守る設定をClaude Code側に置く
スキルが教えてくれるのはCircleのAPIの使い方で、手元の秘密情報をClaudeに読ませない仕組みは別に必要です。ENTITY_SECRET やAPIキーを置く .env は、権限設定で読み取りを拒否できます。Claude Codeの設定ドキュメントにある permissions.deny の書き方に沿った例です。
{
"permissions": {
"deny": [
"Read(./.env)",
"Read(./.env.*)"
]
}
}あわせて、CLAUDE.mdに作業の境界を書いておくと、依頼のたびに言い直さずに済みます。
## Circle連携の作業ルール
- ネットワークはテストネット(Base Sepolia / Arc Testnet)のみ。メインネットのキーは使わない
- APIキーとENTITY_SECRETはコードに直書きせず、環境変数から読む
- USDCの金額はparseUnits(value, 6)で扱う
- デプロイ前に、コンパイルのevmVersionがparis以前かを確認するメインネットへの送信は取り消せません。READMEの免責事項も、出力に誤りや古い情報が含まれうること、手数料の設定にCircle側へ手数料が流れるオプションが含まれうることを挙げ、出力と手数料設定の確認は利用者の責任としています。生成されたコードは、実行前に金額・宛先・手数料の設定を目で確かめてください。
他のプラグインとの組み合わせ
Webhookでコントラクトのイベントを受けるなら、手元のサーバーをローカルから公開する手段が要ります。手順はngrokプラグインの記事にあります。ログイン処理をCircleのウォレットではなく外部の認証基盤に寄せるなら、descopeプラグインが比較対象になります。クラウド側のIAMやIaCはaws-coreプラグインのスキルが受け持つ領域で、circle-skillsはチェーンまわりに絞った作りです。
プラグイン自体の仕組みはClaude Codeの全体像にあります。
まとめ
circle-skillsの価値は、コードの生成力ではなく、実装前に読ませる判断基準にあります。ウォレット型の選択、6桁小数、UUID v4の冪等キー、paris以前のEVMバージョンのように、知らなければ数時間つぶれる条件が先に読み込まれます。細部が変わるSDKの署名やアドレスはMCPで補い、秘密情報は permissions.deny で遠ざけておく。この三点を揃えてから、テストネットで一往復動かすのが、最も事故の少ない始め方です。