identity について
identityは、ERC-8004 identity-registryコントラクトでオンチェーンのエージェントIDを管理するスキルです。ウォレット不要の読み取り操作と、アンロック済みウォレットが必要な書き込み操作を提供します。
主な機能
- 01エージェントIDの登録と移転
- 02ID情報と最新IDの照会
- 03URIとメタデータの読み取り・更新
- 04オペレーター承認の設定・解除
- 05エージェントウォレットの設定・解除
活用シーン
- 01新しいオンチェーンIDの登録
- 02所有者とメタデータの確認
- 03オペレーターによる情報更新の許可
- 04ID移転後のウォレット関連付け変更
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ aibtcdev/ skills --skill identityインストール後、Claude Code で/identityを入力して読み込まれたか確認します。
同梱ファイルAGENT.mdidentity.ts
詳細
Identity Skill
identity-registry コントラクトを使用して、ERC-8004 オンチェーンエージェントの ID 操作を行います。読み取り操作(get、get-metadata、get-last-id)はウォレットなしで実行できます。書き込み操作(register、set-uri、set-metadata、set-approval、set-wallet、unset-wallet、transfer)にはロック解除されたウォレットが必要です。
Usage
bun run identity/identity.ts <subcommand> [options]
Subcommands
register
ERC-8004 identity registry を使用して、新しいエージェント ID をオンチェーンに登録します。トランザクション ID が返されます。割り当てられたエージェント ID を取得するには、トランザクションの結果を確認してください。ロック解除されたウォレットが必要です。
bun run identity/identity.ts register [--uri <uri>] [--metadata <json>] [--fee <fee>] [--sponsored]
Options:
--uri(任意) — エージェントのメタデータを指す URI(IPFS、HTTP など)--metadata(任意) —{"key": "...", "value": "<hex>"}のペアを含む JSON 配列(値は 16 進数でエンコードされたバッファーです)--fee(任意) — 手数料のプリセット(low、medium、high)または micro-STX の金額--sponsored(フラグ) — スポンサー付きトランザクションとして送信します
Output:
{
"success": true,
"txid": "0xabc...",
"message": "Identity registration transaction submitted. Check transaction result to get your agent ID.",
"network": "mainnet",
"explorerUrl": "https://explorer.hiro.so/txid/0xabc..."
}
get
ERC-8004 identity registry からエージェント ID 情報を取得します。所有者アドレス、URI、設定されている場合はウォレットが返されます。
bun run identity/identity.ts get --agent-id <id>
Options:
--agent-id(必須) — 検索するエージェント ID(0 以上の整数)
Output:
{
"success": true,
"agentId": 42,
"owner": "SP1...",
"uri": "ipfs://...",
"wallet": "SP2...",
"network": "mainnet"
}
set-uri
エージェント ID の URI を更新します。呼び出し元はエージェントの所有者または承認済みのオペレーターである必要があります。ロック解除されたウォレットが必要です。
bun run identity/identity.ts set-uri --agent-id <id> --uri <uri> [--fee <fee>] [--sponsored]
Options:
--agent-id(必須) — 更新するエージェント ID(0 以上の整数)--uri(必須) — エージェントのメタデータを指す新しい URI(IPFS、HTTP など)--fee(任意) — 手数料のプリセット(low、medium、high)または micro-STX の金額--sponsored(フラグ) — スポンサー付きトランザクションとして送信します
Output:
{
"success": true,
"txid": "0xdef...",
"message": "Identity URI update transaction submitted.",
"agentId": 42,
"uri": "ipfs://newuri...",
"network": "mainnet",
"explorerUrl": "https://explorer.hiro.so/txid/0xdef..."
}
set-metadata
エージェント ID のメタデータのキーと値のペアを設定します。値は 16 進数でエンコードされたバッファーである必要があります(最大 512 バイト)。キー agentWallet は予約済みのため、コントラクトによって拒否されます。呼び出し元はエージェントの所有者または承認済みのオペレーターである必要があります。ロック解除されたウォレットが必要です。
bun run identity/identity.ts set-metadata --agent-id <id> --key <key> --value <hex> [--fee <fee>] [--sponsored]
Options:
--agent-id(必須) — 更新するエージェント ID(0 以上の整数)--key(必須) — メタデータのキー(文字列)--value(必須) — 16 進数でエンコードされたバッファー形式のメタデータ値(例:"alice"を表す616c696365)--fee(任意) — 手数料のプリセット(low、medium、high)または micro-STX の金額--sponsored(フラグ) — スポンサー付きトランザクションとして送信します
Output:
{
"success": true,
"txid": "0xghi...",
"message": "Metadata set transaction submitted.",
"agentId": 42,
"key": "name",
"valueHex": "616c696365",
"network": "mainnet",
"explorerUrl": "https://explorer.hiro.so/txid/0xghi..."
}
set-approval
エージェント ID のオペレーターを承認または取り消します。承認されたオペレーターは、所有者に代わって URI、メタデータ、ウォレットを更新できます。NFT の所有者のみが呼び出せます。ロック解除されたウォレットが必要です。
bun run identity/identity.ts set-approval --agent-id <id> --operator <address> [--approved] [--fee <fee>] [--sponsored]
Options:
--agent-id(必須) — 更新するエージェント ID(0 以上の整数)--operator(必須) — 承認または取り消しの対象となるオペレーターの Stacks アドレス--approved(フラグ) — 承認を付与します(指定しない場合は取り消します)--fee(任意) — 手数料のプリセット(low、medium、high)または micro-STX の金額--sponsored(フラグ) — スポンサー付きトランザクションとして送信します
Output:
{
"success": true,
"txid": "0xjkl...",
"message": "Operator SP3... approved for agent 42.",
"agentId": 42,
"operator": "SP3...",
"approved": true,
"network": "mainnet",
"explorerUrl": "https://explorer.hiro.so/txid/0xjkl..."
}
set-wallet
ID に紐づくエージェントウォレットを tx-sender(アクティブなウォレットアドレス)に設定します。別途署名を行わずに、アクティブな Stacks アドレスをエージェント ID に紐づけます。呼び出し元はエージェントの所有者または承認済みのオペレーターである必要があります。ロック解除されたウォレットが必要です。
bun run identity/identity.ts set-wallet --agent-id <id> [--fee <fee>] [--sponsored]
Options:
--agent-id(必須) — 更新するエージェント ID(0 以上の整数)--fee(任意) — 手数料のプリセット(low、medium、high)または micro-STX の金額--sponsored(フラグ) — スポンサー付きトランザクションとして送信します
Output:
{
"success": true,
"txid": "0xmno...",
"message": "Agent wallet set to tx-sender (SP1...) for agent 42.",
"agentId": 42,
"wallet": "SP1...",
"network": "mainnet",
"explorerUrl": "https://explorer.hiro.so/txid/0xmno..."
}
unset-wallet
エージェント ID からエージェントウォレットの紐づけを解除します。呼び出し元はエージェントの所有者または承認済みのオペレーターである必要があります。ロック解除されたウォレットが必要です。
bun run identity/identity.ts unset-wallet --agent-id <id> [--fee <fee>] [--sponsored]
Options:
--agent-id(必須) — 更新するエージェント ID(0 以上の整数)--fee(任意) — 手数料のプリセット(low、medium、high)または micro-STX の金額--sponsored(フラグ) — スポンサー付きトランザクションとして送信します
Output:
{
"success": true,
"txid": "0xpqr...",
"message": "Agent wallet cleared for agent 42.",
"agentId": 42,
"network": "mainnet",
"explorerUrl": "https://explorer.hiro.so/txid/0xpqr..."
}
transfer
エージェント ID NFT を新しい所有者に移転します。アクティブなウォレット(tx-sender)は現在の所有者と一致している必要があります。移転すると、エージェントのウォレットとの関連付けは自動的に解除されます。ウォレットのロック解除が必要です。
bun run identity/identity.ts transfer --agent-id <id> --recipient <address> [--fee <fee>] [--sponsored]
オプション:
--agent-id(必須) — 移転するエージェント ID(トークン ID)(0 以上の整数)--recipient(必須) — 新しい所有者の Stacks アドレス--fee(任意) — 手数料プリセット(low、medium、high)またはマイクロ STX 単位の金額--sponsored(フラグ) — スポンサー付きトランザクションとして送信します
出力:
{
"success": true,
"txid": "0xstu...",
"message": "Identity NFT transfer submitted for agent 42.",
"agentId": 42,
"sender": "SP1...",
"recipient": "SP4...",
"network": "mainnet",
"explorerUrl": "https://explorer.hiro.so/txid/0xstu..."
}
get-metadata
ERC-8004 ID レジストリから、キーを指定してメタデータ値を読み取ります。生のバッファ値を 16 進数文字列として返します。ウォレットは不要です。
bun run identity/identity.ts get-metadata --agent-id <id> --key <key>
オプション:
--agent-id(必須) — 照会するエージェント ID(0 以上の整数)--key(必須) — 読み取るメタデータキー
出力:
{
"success": true,
"agentId": 42,
"key": "name",
"valueHex": "616c696365",
"network": "mainnet"
}
get-last-id
ERC-8004 ID レジストリから、最後にミントされたエージェント ID を取得します。エージェントが登録されていない場合は null を返します。ウォレットは不要です。
bun run identity/identity.ts get-last-id
出力:
{
"success": true,
"lastAgentId": 99,
"network": "mainnet"
}
注意事項
- 読み取り操作(get、get-metadata、get-last-id)はウォレットなしで実行できます
- 書き込み操作には、ロック解除済みのウォレットが必要です(
bun run wallet/wallet.ts unlock) - エージェント ID は登録時にコントラクトによって割り当てられます。割り当てられた ID を確認するには、トランザクション結果を確認してください
- オペレーターの承認により、委任先アドレスがエージェントの URI、メタデータ、ウォレットを更新できます
- 移転すると、エージェントのウォレットとの関連付けは自動的に解除されます。必要に応じて、移転後に
set-walletを使用してください agentWalletキーは予約済みです。代わりにset-wallet/unset-walletサブコマンドを使用してください