mcpField
S
souldinals

souldinals

github.com/aibtcdevエージェントワークフロー11110 回インストール1 日前に更新
リポジトリ

souldinals について

Souldinals を管理するコマンドラインスキルです。Agent のアイデンティティや特性を記録した Markdown を、Bitcoin L1 上でジェネシス刻印の子 Ordinals として登録できます。二段階のコミット・リビールのほか、刻印の一覧、読み込み、解析に対応します。

主な機能

  1. 01コミット・リビール式の刻印フロー
  2. 02ウォレット所有の soul 刻印一覧
  3. 03最古の soul 刻印の読み込み
  4. 04Markdown からアイデンティティ特性を解析
  5. 05刻印トランザクションの手数料率指定

活用シーン

  1. 01soul.md を親刻印の下に登録
  2. 02確認済みコミットトランザクションの完了
  3. 03ウォレットに紐づく soul 刻印の確認
  4. 04刻印からアイデンティティや価値観を抽出

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/aibtcdev/skills --skill souldinals

インストール後、Claude Code で/souldinalsを入力して読み込まれたか確認します。

同梱ファイルAGENT.mdsouldinals.ts

詳細

Souldinals スキル

Souldinals を管理します。Souldinals は、ジェネシス親インスクリプションの子オーディナルとして刻まれた soul.md ファイルです。ソウルインスクリプションには、エージェントのアイデンティティ、価値観、特性が Markdown 形式で Bitcoin L1 に記録されます。

すべての書き込み操作(inscribe-soul、reveal-soul)には、SegWit アドレスに BTC 残高があるロック解除済みのウォレットが必要です。

使用方法

bun run souldinals/souldinals.ts <subcommand> [options]

サブコマンド

inscribe-soul

soul.md ファイルを親インスクリプションの子インスクリプションとして刻みます — ステップ 1:コミットトランザクションをブロードキャストします。

soul.md ファイルを読み取り、base64 エンコードして、コミットトランザクションをブロードキャストします。コミットが承認されたら、保存したパラメーターを指定して reveal-soul を呼び出し、インスクリプションを完了します。

bun run souldinals/souldinals.ts inscribe-soul \
  --parent-inscription-id <id> \
  [--soul-file ./SOUL.md] \
  [--fee-rate fast|medium|slow|<number>]

オプション:

  • --parent-inscription-id(必須)— ジェネシス親インスクリプション ID(形式:{txid}i{index})
  • --soul-file(任意)— soul.md ファイルへのパス(デフォルト:./SOUL.md)
  • --fee-rate(任意)— fast、medium、slow、または sat/vB 単位の数値(デフォルト:medium)

必要条件:BTC 残高があるロック解除済みのウォレット。

出力:

{
  "status": "commit_broadcast",
  "message": "Soul commit transaction broadcast. Wait for confirmation, then call reveal-soul.",
  "commitTxid": "abc123...",
  "commitExplorerUrl": "https://mempool.space/tx/abc123...",
  "revealAddress": "bc1p...",
  "revealAmount": 3200,
  "commitFee": 1640,
  "feeRate": 8,
  "parentInscriptionId": "def456...i0",
  "soulFile": "./SOUL.md",
  "contentType": "text/markdown",
  "contentSize": 1024,
  "contentBase64": "...",
  "nextStep": "After commit confirms, call: bun run souldinals/souldinals.ts reveal-soul ..."
}
reveal-soul

ソウルインスクリプションを完了します — ステップ 2:リビールトランザクションをブロードキャストします。

inscribe-soul のコミットトランザクションが承認された後に呼び出してください。

bun run souldinals/souldinals.ts reveal-soul \
  --commit-txid <txid> \
  --reveal-amount <satoshis> \
  --content-base64 <base64> \
  [--fee-rate fast|medium|slow|<number>]

オプション:

  • --commit-txid(必須)— 承認済みコミットのトランザクション ID(64 桁の 16 進数)
  • --reveal-amount(必須)— コミット出力の金額(サトシ単位。inscribe-soul のレスポンスから取得)
  • --content-base64(必須)— soul.md の内容を base64 エンコードしたもの(inscribe-soul のレスポンスから取得)
  • --fee-rate(任意)— リビールトランザクションの手数料率(デフォルト:medium)

必要条件:ロック解除済みのウォレット。

出力:

{
  "status": "success",
  "message": "Soul inscription created successfully!",
  "inscriptionId": "def456...i0",
  "contentType": "text/markdown",
  "contentSize": 1024,
  "commit": {
    "txid": "abc123...",
    "explorerUrl": "https://mempool.space/tx/abc123..."
  },
  "reveal": {
    "txid": "def456...",
    "fee": 960,
    "explorerUrl": "https://mempool.space/tx/def456..."
  },
  "recipientAddress": "bc1p...",
  "note": "Soul inscription will appear at the recipient address once the reveal transaction confirms."
}
list-souls

ウォレットの Taproot アドレスが所有するすべてのソウルインスクリプション(テキスト/Markdown)を一覧表示します。

Unisat Ordinals API に問い合わせ、コンテンツタイプが text/markdown のものに絞り込みます。

bun run souldinals/souldinals.ts list-souls

必要条件:ロック解除済みのウォレット(Taproot アドレスの取得に使用)。

出力:

{
  "address": "bc1p...",
  "count": 2,
  "souls": [
    {
      "id": "abc123...i0",
      "number": 78345,
      "contentType": "text/markdown",
      "contentLength": 1024,
      "timestamp": "2024-01-15T12:00:00.000Z",
      "genesisBlockHeight": 835000
    }
  ]
}
load-soul

ウォレットにある最も古いソウルインスクリプションの全内容を読み込み、表示します。

最も古い text/markdown インスクリプションを見つけ、Unisat Ordinals API 経由でその内容を取得します。

bun run souldinals/souldinals.ts load-soul

必要条件:ロック解除済みのウォレット(Taproot アドレスの取得に使用)。

出力:

{
  "inscriptionId": "abc123...i0",
  "contentType": "text/markdown",
  "contentSize": 1024,
  "timestamp": "2024-01-15T12:00:00.000Z",
  "content": "# My Soul\n\n..."
}
display-soul

ID で指定したインスクリプションからソウル特性を解析して表示します。

インスクリプションの内容を取得し、Markdown のセクションを解析して、アイデンティティの特性(名前、説明、価値観、重点分野、カスタムセクション)を抽出します。

bun run souldinals/souldinals.ts display-soul --inscription-id <id>

オプション:

  • --inscription-id(必須)— インスクリプション ID(形式:{txid}i{index})

出力:

{
  "inscriptionId": "abc123...i0",
  "contentType": "text/markdown",
  "traits": {
    "name": "...",
    "description": "...",
    "values": ["..."],
    "focusAreas": ["..."],
    "sections": {
      "Identity": "...",
      "Values": "..."
    }
  },
  "rawContent": "# Soul\n\n..."
}

2 ステップのソウルインスクリプションワークフロー

# Step 1: Broadcast commit (soul.md defaults to ./SOUL.md)
bun run souldinals/souldinals.ts inscribe-soul \
  --parent-inscription-id <genesisInscriptionId>
# Save: commitTxid, revealAmount, contentBase64

# Wait for commit to confirm (check mempool.space)

# Step 2: Reveal (finalizes inscription)
bun run souldinals/souldinals.ts reveal-soul \
  --commit-txid <commitTxid> \
  --reveal-amount <revealAmount> \
  --content-base64 <contentBase64>

注意事項

  • inscribe-soul と reveal-soul には、bun run wallet/wallet.ts unlock でロック解除したウォレットが必要です
  • 資金の支払いには、SegWit(bc1q/tb1q)アドレスに BTC 残高が必要です
  • ソウルインスクリプションは Taproot(bc1p/tb1p)アドレスで受け取ります
  • --parent-inscription-id は、Souldinals コレクション内でソウルを子として紐付けます
  • list-souls、load-soul、display-soul は Unisat Ordinals API を使用します(より高いレート制限を利用するには UNISAT_API_KEY 環境変数を設定してください。無料枠:5 リクエスト/秒)

コメント