mcpField
W
webup-buddy-reroll

webup-buddy-reroll

github.com/webupその他134406 回インストール16 週間前に更新
リポジトリ

webup-buddy-reroll について

指定した種族とレア度の `/buddy` を探す Claude Code スキルです。Bun でハッシュを計算し、再抽選のほか、名前や性格の変更、設定への反映にも対応します。

主な機能

  1. 01種族とレア度を指定して検索
  2. 02Bun によるハッシュ計算
  3. 03結果の設定への任意適用
  4. 04コンパニオンの名前や性格の変更
  5. 05Pro/Max 向け OAuth 設定手順

活用シーン

  1. 01`/buddy` の種族とレア度の指定
  2. 02再抽選せずにコンパニオンを改名
  3. 03Pro/Max アカウントで再抽選を設定

インストール

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

$npx skills add https://github.com/webup/skills-cc --skill webup-buddy-reroll

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

scripts/
oauth-setup.mjs
rename.mjs
reroll.mjs

詳細

Buddy Reroll

希望する種族とレア度にハッシュされる userID を見つけ、新しい /buddy のコンパニオンを総当たりで探します。

仕組み

Claude Code はコンパニオンを決定論的に生成します:hash(userID + SALT) → mulberry32 PRNG → レア度、種族、目、帽子、色違い。同じ userID なら、常に同じコンパニオンになります。

リロールするには、~/.claude.json の userID を置き換え、companion フィールドをクリアしてから、再起動します。

重要:Claude Code は Bun にバンドルされているため、正しいハッシュ関数は Bun.hash()(xxHash64)です。Node.js の FNV-1a では正しい結果が得られません。このスクリプトは必ず Bun で実行してください。

スクリプトのディレクトリ

重要:すべてのスクリプトは、このスキルの scripts/ サブディレクトリにあります。

エージェントの実行手順:

  1. この SKILL.md ファイルのディレクトリパスを SKILL_DIR として特定します
  2. スクリプトのパス = ${SKILL_DIR}/scripts/<script-name>.mjs
  3. このドキュメント内のすべての ${SKILL_DIR} を実際のパスに置き換えます

スクリプト一覧:

スクリプト用途
scripts/reroll.mjs対象の種族とレア度を総当たりで検索し、必要に応じて設定に適用します
scripts/oauth-setup.mjsPro/Max 加入者向けの OAuth 設定ヘルパー(--check/--prepare/--verify/--restore)
scripts/rename.mjsコンパニオンの名前や性格を変更します(--name/--desc)

前提条件

  • Claude Code >= 2.1.89 — /buddy システムはこのバージョンで導入されました。スクリプトはバージョンを自動確認し、古すぎる場合は終了します。
  • Bun — 正しいハッシュ計算に必要です。グローバルにインストールされていない場合は、npx -y bun を使用してください。
  • API ユーザー:そのまま動作します。~/.claude.json の userID は自由に置き換えられます。
  • Pro/Max 加入者:最初に OAuth を設定する必要があります(このスキルで自動化されています)。Pro/Max アカウントには accountUuid があり、/buddy は userID の代わりにこれを使用します。OAuth 方式ではこれを回避します。以下のワークフローを参照してください。

使用方法

# Direct (if bun is installed globally)
bun ${SKILL_DIR}/scripts/reroll.mjs --species dragon --rarity legendary --apply

# Via npx (works even without global bun install)
npx -y bun ${SKILL_DIR}/scripts/reroll.mjs --species dragon --rarity legendary --apply
オプション
フラグデフォルト説明
--species <name>dragon対象の種族(以下の一覧を参照)
--rarity <level>legendary最低レア度:common / uncommon / rare / epic / legendary
--max <n>1000000総当たりの最大反復回数
--applyoff結果を ~/.claude.json に自動書き込みし、companion をクリアします
種族(18種類)
duckgooseblobcatdragonoctopus
owlpenguinturtlesnailghostaxolotl
capybaracactusrobotrabbitmushroomchonk
レア度
レア度星確率発見までの反復回数(目安)
common★60%~30
uncommon★★25%~72
rare★★★10%~180
epic★★★★4%~450
legendary★★★★★1%~1800

呼び出し方法

このスキルは、引数ありでも引数なしでも呼び出せます:

  • 引数なし(/webup-buddy-reroll):実行前に AskUserQuestion を使って対話形式でユーザーに確認します。
  • リロールのみ(/webup-buddy-reroll dragon legendary):確認を省略し、指定された種族とレア度に固定します。
  • リロールして名前変更(/webup-buddy-reroll dragon legendary 海の九粟 昼寝好きの小さな竜):リロール後、指定された名前と性格をすぐに適用します。
  • 名前変更のみ(/webup-buddy-reroll 名前を海の九粟に変更、性格は昼寝好きの小さな竜):リロールを省略し、名前や性格のみを変更します。
引数の解析(自然言語)

引数文字列は自由形式のテキストです。NLP を使って、以下のフィールドを抽出します。

  1. species — 既知の18種の名前(duck、goose、blob、cat、dragon、octopus、owl、penguin、turtle、snail、ghost、axolotl、capybara、cactus、robot、rabbit、mushroom、chonk)と照合します。中国語/日本語の同義語も認識します(龙=dragon、猫=cat など)。
  2. rarity — 5つのティア(common、uncommon、rare、epic、legendary)または同義語(传说=legendary、史诗=epic など)と照合します。
  3. name — コンパニオンの短い固有名(例:「沧海九粟」、「Nimbus」、「小火」)。「叫X」、「名字X」、「named X」、「name X」のようなパターンや、種/レア度のキーワードではない単独の固有名詞を探します。
  4. personality — コンパニオンの雰囲気や性格の説明(例:「爱打盹的小龙」、「sarcastic robot」)。「个性X」、「性格X」、「personality X」のようなパターンや、種/レア度/名前ではない説明的なフレーズを探します。

4つのフィールドはすべて任意です。どのような組み合わせも有効です。

意図を検出します:

  • species または rarity が見つかった場合 → リロールワークフロー(name/personality も見つかった場合は、リロール後に名前を変更)
  • name および/または personality のみが見つかった場合(species/rarity なし) → 名前変更ワークフロー
  • 引数がまったくない場合 → 対話形式で尋ね、ユーザーのメッセージからリロールか名前変更のどちらを希望しているかを検出

リロールワークフロー

  1. アカウントの種類を検出します:確認スクリプトを実行し、~/.claude.json に accountUuid が存在するか確認します:
    npx -y bun ${SKILL_DIR}/scripts/oauth-setup.mjs --check
    
    • 終了コード0(accountUuid なし):API ユーザー、または OAuth の設定がすでに完了しています。ステップ1に進みます。
    • 終了コード1(accountUuid が見つかった場合):Pro/Max サブスクライバーです。以下の OAuth のセットアップを実行してから、ステップ1に進みます。
OAuth のセットアップ(Pro/Max のみ)

原則:CLAUDE_CODE_OAUTH_TOKEN 環境変数を使ってログインすると、Claude Code は accountUuid を ~/.claude.json に書き込みません。そのため、/buddy は userID にフォールバックし、自由に置き換えられます。

a. ユーザーに別のターミナルを開き、claude setup-token を実行して OAuth トークンを取得するよう伝えます。取得したトークンをここに貼り付けてもらいます。

b. トークンを受け取ったら、設定を準備します(バックアップ+リセット): bash npx -y bun ${SKILL_DIR}/scripts/oauth-setup.mjs --prepare

c. ユーザーに別のターミナルで次を実行するよう伝えます(<TOKEN> を実際のトークンに置き換えます): bash CLAUDE_CODE_OAUTH_TOKEN=<TOKEN> claude Claude の読み込みが完全に終わるまで待ち、その後すぐに終了するよう伝えます。/buddy は使用しないでください。

d. ユーザーが実行したことを確認したら、設定を検証します: bash npx -y bun ${SKILL_DIR}/scripts/oauth-setup.mjs --verify 検証に失敗した場合は、--restore を実行してバックアップを復元し、ステップ(a)からやり直します。

e. ステップ1に進みます。


  1. 引数が指定されていない場合:AskUserQuestion を使い、1つのプロンプト内で種とレア度を選ぶようユーザーに尋ねます(質問は2つです)。

    • 種の質問:人気のある選択肢を4つ(dragon、cat、axolotl、capybara)提示します。各選択肢の description には、ユーザーが「その他」で選べる残りの種を記載します。例として、最初の選択肢の説明は「または次のいずれかを入力してください:duck、goose、blob、octopus、owl、penguin、turtle、snail、ghost、cactus、robot、rabbit、mushroom、chonk」とします。
    • レア度の質問:5つのティアすべてを提示します(推奨の legendary を最初にし、続けて epic、rare、uncommon、common の順)。
    • このステップを省略してはいけません。ユーザーが種について言及していても、必ず選択を確認します。

    引数から種/レア度を解析できた場合:プロンプトをスキップし、そのまま次に進みます。

  2. --apply を付けてスクリプトを実行します:

    npx -y bun ${SKILL_DIR}/scripts/reroll.mjs --species <choice> --rarity <choice> --apply
    
  3. 引数から name または personality を解析できた場合:リロールの直後に名前変更スクリプトを実行します(その間に再起動する必要はありません):

    npx -y bun ${SKILL_DIR}/scripts/rename.mjs --name "<parsed name>" --desc "<parsed personality>"
    

    どちらか一方のみが解析された場合は、--name または --desc のうち該当しない方を省略します。

  4. Claude Code を再起動し、/buddy を実行して新しいコンパニオンを孵化させるようユーザーに伝えます。

    • OAuth を使用した場合:accountUuid が書き戻されないよう、通常の claude ではなく CLAUDE_CODE_OAUTH_TOKEN=<TOKEN> claude で Claude を起動するよう念押しします。

手動適用

--apply を使用しなかった場合:

  1. 出力された userID をコピーします
  2. ~/.claude.json を編集します:"userID" の値を置き換え、"companion": null に設定します
  3. Claude Code を再起動して → /buddy を実行します

コンパニオンの名前変更/カスタマイズ

種族やレアリティを再抽選せずに、コンパニオンの名前や性格の説明を変更します。

名前変更のワークフロー

名前や性格が引数から解析された場合:手順 1~3 をスキップし、解析された値を使って手順 4 に進みます。性格が引数で直接指定された場合は、そのまま使用し、AI による生成手順をスキップします。

  1. AskUserQuestion を使って、変更したい内容を質問します(質問は 1 つ、複数選択可):
    • 名前:「コンパニオンの名前を変更」
    • 性格:「コンパニオンの性格/説明を変更」
  2. 名前の場合:ユーザーに正確な名前を尋ねます。そのまま渡します。
  3. 性格の場合:簡単な特徴や雰囲気をユーザーに尋ねます(例:「キーボードが大好きな怠け者の猫」、「皮肉っぽいロボット」)。次に、あなた(Claude Code)が楽しくて創造的な性格の説明(コンパニオンの種族とユーザーの特徴に合った 1~2 文)を作成します。適用する前に、生成した文章をユーザーに確認してもらいます。
  4. 名前変更スクリプトを実行します:
    npx -y bun ${SKILL_DIR}/scripts/rename.mjs --name "<name>" --desc "<personality>"
    
    変更する項目が 1 つだけの場合は、--name または --desc を省略します。
  5. 変更を反映するには Claude Code の再起動が必要であることをユーザーに伝えます。

注意事項

  • userID はテレメトリーのバケット分けと buddy のシード値にのみ影響します。会話、API キー、ローカル設定には影響しません
  • SALT は friend-2026-401 です(Claude Code 2.1.89)。今後のバージョンで変更された場合は、スクリプトを更新してください
  • 1M 回の反復で、最新のハードウェアでは数秒でレジェンダリーが見つかります

コメント