メインコンテンツまでスキップ

CLI リファレンス

speca の各サブコマンドのリファレンスです。実行時にも speca <subcommand> --help で確認できます。

speca doctor

ローカル環境を検証します。

speca doctor

Node.js / Python (uv) / Claude Code 認証 / MCP サーバー (fetch, tree_sitter) を確認し、失敗ごとに具体的な対処コマンドを表示します。

speca auth login · speca auth status

Claude API 認証情報を管理します。

speca auth login # 対話式: API キー or claude セッション
speca auth status # 現在の認証ソースを表示

認証情報は ~/.config/speca/auth.json に保存されます。環境変数 ANTHROPIC_API_KEY も使えます。

speca init

outputs/TARGET_INFO.jsonoutputs/BUG_BOUNTY_SCOPE.json を生成します。これらがパイプライン全体の入力になります。

speca init

フラグ (すべて任意。未指定値は対話で尋ねられる):

フラグ説明
--project-name <name>プロジェクト名 (デフォルト: cwd の basename)
--target-repo <url>対象リポジトリ URL
--target-commit <ref>コミット / ブランチ / タグ (デフォルト: HEAD)
--target-language <lang>Solidity / Rust / Go / Nim / TypeScript / C / C++ / …
--target-layer <layer>consensus / execution / application / library / …
--rubric <mode>default (ethereum.org rubric) または custom
--output-dir <dir>出力ディレクトリ (デフォルト $SPECA_OUTPUT_DIR または ./outputs/)
--force, --yes既存ファイルを確認なしで上書き
--non-interactive対話を拒否 — すべての値をフラグで渡す

JSON スキーマは 設定ファイル を参照してください。

speca run

パイプラインを実行します。デフォルトでは TUI ダッシュボードが流れます。

speca run --target 04 --workers 4
speca run --phase 01a 01b 01e
speca run --phase 03 --force --json

フラグ:

フラグ説明
--phase <id…>1 つ以上のフェーズを ID 指定 (例: --phase 01a 01b)
--target <id><id> までの依存関係を全て実行
--workers <N>フェーズあたりのワーカー数 (デフォルト 4)
--max-concurrent <N>Claude 同時起動数の上限 (デフォルト 8)
--forceresume 状態を無視して再実行
--budget <usd>コスト上限をオーケストレータに渡す
--output-dir <path>出力ディレクトリ (SPECA_OUTPUT_DIR を設定)
--no-tuiプレーンテキスト出力 (CI 向け)
--jsonNDJSON イベントを stdout に流す

resume は自動です。<phase>_PARTIAL_*.json に書かれた項目はスキップされます。--force で無効化できます。Ctrl-C での中断は安全で、再実行で続きから処理されます。

フェーズ ID の意味は パイプライン概要 を参照してください。

speca browse

Phase 04 finding の TUI ビューア。

speca browse # デフォルト glob
speca browse outputs/04_PARTIAL_*.json
speca browse --severity Critical
speca browse --filter "severity:High AND verdict:CONFIRMED_*"

フィルタ DSL:

トークンマッチ
severity:Criticalseverity 完全一致 (大文字小文字区別なし)
severity:Critical,Highカンマ区切り OR
verdict:CONFIRMED_*ワイルドカード後方一致
prop:PROP-6a4*property_id のワイルドカード一致
repo:lighthouseソースファイルパスへの部分一致
text:reentrancysummary / proof / attack / notes の部分一致
... AND ..., ... OR ..., NOT ..., 括弧真偽値合成

TUI キー: ↑/↓ (または j/k) で移動、Enter で詳細展開、c でコード覗き、f でフィルタ編集、/ でクイックテキスト検索、s でソート切替、r で再読込、q で終了。

--no-tui / --json ではマッチした findings を stdout に出力します。

speca ask

1 つの finding のコンテキストを事前にロードした Claude Code セッションを開きます。

speca ask # 最初の finding を対話的に選択
speca ask PROP-abc-001 --from outputs/04_PARTIAL_*.json
speca ask --session 9f1c2e0a-... # 既存セッションを再開
speca ask --no-tui --from finding.json --max-context 10000

「証明のどのステップが失敗しているか」「最小修正パッチを示せ」「これは本当の脆弱性か FP か」といった質問を投げるのに使います。

speca version

CLI バージョン (および対応するパイプラインスキーマバージョン) を表示します。

終了コード

コード意味
0成功
1ユーザー可視のエラー (CLI が対処ヒントを表示)
2呼び出し誤り (未知のフラグ・必須引数欠落)
64予算超過 — --budget に到達
65サーキットブレーカー作動 — 連続失敗が閾値超過

64 と 65 は CI スクリプトで捕捉できるよう設計されています。暴走したランで予算を食いつぶすのを防げます。