cli-anything-slay-the-spire-ii について
cli-anything-slay-the-spire-iiは、ローカルのSTS2_Bridge Modを介してSlay the Spire 2を操作するステートフルなCLIです。エージェントなどのプログラム利用向けに、正規化されたゲーム状態と、ラン・戦闘・マップ・報酬の操作を提供します。
主な機能
- 01正規化または生のゲーム状態の取得
- 02ランの開始、続行、放棄
- 03カード使用、ポーション使用、ターン終了
- 04マップノードの選択とルームの進行
- 05報酬の獲得と選択操作
- 06対話型REPLとJSON状態
活用シーン
- 01操作前に現在の判断状態を確認
- 02ラン中の戦闘操作を自動化
- 03マップ経路、イベント、焚き火行動を選択
- 04カードとレリックの報酬をプログラムで処理
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ hkuds/ cli-anything --skill cli-anything-slay-the-spire-iiインストール後、Claude Code で/cli-anything-slay-the-spire-iiを入力して読み込まれたか確認します。
詳細
cli-anything-slay-the-spire-ii
ローカルの STS2_Bridge MOD を通じて、実際の Slay the Spire 2 ゲームを操作するためのステートフルなコマンドラインインターフェースです。この CLI は正規化されたゲーム状態を読み取り、localhost:15526 のローカル HTTP API を介してアクションコマンドを送信します。
インストール
この CLI には、ゲームプロセス内で動作するブリッジ MOD が必要です。CLI とブリッジの両方が同じリポジトリから配布されています:
https://github.com/HKUDS/CLI-Anything
1. CLI をインストールする
git clone https://github.com/HKUDS/CLI-Anything.git
cd CLI-Anything/slay_the_spire_ii/agent-harness
pip install -e .
2. ブリッジ MOD をビルドしてインストールする
ブリッジ MOD は .NET 9 プラグインであり、コンパイルしてゲームディレクトリにインストールする必要があります。詳細な手順はリポジトリの README に記載されていますが、簡略版は次のとおりです:
cd CLI-Anything/slay_the_spire_ii/agent-harness/bridge/plugin
./build.sh
cd ../install
./install_bridge.sh
ビルドスクリプトがゲームデータディレクトリを自動検出できない場合は、STS2_GAME_DATA_DIR を明示的に設定してください:
STS2_GAME_DATA_DIR="/path/to/data_sts2" ./build.sh
3. MOD を有効化して確認する
Steam 経由で Slay the Spire 2 を起動し、MOD マネージャーで STS2_Bridge MOD を有効化してから、接続を確認します:
cli-anything-sts2 state
これが JSON を返せば、CLI とブリッジは接続されています。
前提条件:
- Python 3.10+
- Slay the Spire 2 (Steam) で
STS2_BridgeMOD が有効であること .NET 9 SDK(ブリッジ MOD のビルドにのみ必要)
使用方法
基本コマンド
# Read normalized game state (always start here)
cli-anything-sts2 state
# Start interactive REPL mode (default)
cli-anything-sts2
# Show all available commands
cli-anything-sts2 --help
コマンドグループ
状態の検査
| コマンド | 説明 |
|---|---|
state | decision フィールドを含む正規化された状態 |
raw-state | 生のブリッジ JSON |
メインメニュー
| コマンド | 説明 |
|---|---|
continue-game | 保存されたランを続行する |
start-game --character IRONCLAD --ascension 0 | 新しいランを開始する |
abandon-game | 現在のセーブを放棄する |
return-to-main-menu | 任意の画面からメニューに戻る |
キャラクター: IRONCLAD、SILENT、DEFECT、NECROBINDER、REGENT
戦闘
| コマンド | 説明 |
|---|---|
play-card <index> [--target <enemy_id>] | 手札からカードを使用する |
use-potion <slot> [--target <enemy_id>] | ポーションを使用する |
end-turn | 現在のターンを終了する |
マップと部屋の進行
| コマンド | 説明 |
|---|---|
choose-map <index> | マップノードを選択する |
proceed | 現在の部屋を出る |
報酬
| コマンド | 説明 |
|---|---|
claim-reward <index> | 戦闘報酬を受け取る |
pick-card-reward <index> | カード報酬を選択する |
skip-card-reward | カード報酬をスキップする |
claim-treasure-relic <index> | 宝箱のレリックを受け取る |
select-relic <index> | レリックを選択する |
skip-relic-selection | レリックの選択をスキップする |
イベントと休憩地点
| コマンド | 説明 |
|---|---|
event <index> | イベントの選択肢を選ぶ |
advance-dialogue | 会話のみのイベントを進める |
rest <index> | 焚き火のアクションを選ぶ |
ショップ
| コマンド | 説明 |
|---|---|
shop-buy <index> | ショップで購入する |
カード/レリック選択オーバーレイ
| コマンド | 説明 |
|---|---|
select-card <index> | オーバーレイでカードを選択する |
confirm-selection | 現在の選択を確定する |
cancel-selection | 現在の選択をキャンセルする |
combat-select-card <index> | 戦闘オーバーレイ中にカードを選択する |
combat-confirm-selection | 戦闘中のカード選択を確定する |
生アクション
| コマンド | 説明 |
|---|---|
action <name> --kv key=value | 生のブリッジアクションを送信する |
判定状態
state コマンドは、現在のゲーム画面を示す decision フィールドを含む JSON を返します。この値に基づいて次のコマンドをルーティングしてください:
| 判定 | 意味 | 典型的な次のコマンド |
|---|---|---|
menu | メインメニュー | continue-game、start-game |
combat_play | 戦闘中、あなたのターン | play-card、use-potion、end-turn |
hand_select | カード選択オーバーレイ | combat-select-card、combat-confirm-selection |
map_select | マップノード選択 | choose-map |
game_over | ラン終了 | return-to-main-menu |
combat_rewards | 戦闘後の報酬 | claim-reward、proceed |
card_reward | カード報酬の選択 | pick-card-reward、skip-card-reward |
event_choice | イベント画面 | event、advance-dialogue |
rest_site | 焚き火 | rest |
shop | ショップ画面 | shop-buy、proceed |
card_select | カード選択画面 | select-card、confirm-selection |
relic_select | レリック選択 | select-relic、skip-relic-selection |
treasure | 宝物部屋 | claim-treasure-relic、proceed |
設定
| オプション | デフォルト | 説明 |
|---|---|---|
--base-url | http://localhost:15526 | ブリッジ API の URL |
--timeout | 10.0 | HTTP タイムアウト(秒) |
AI エージェント向け
- 必ず最初に
stateを読み取る -decisionフィールドを取得します - 各アクションの後に state を再読み取りする - 戦闘中はインデックスとエナジーが変化します
- リターンコードを確認する - 0 は成功、非ゼロはエラー
- stdout を解析する - JSON 出力のため