mcpField
C
conductorscore

conductorscore

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

conductorscore について

ConductorScore は、ローカルのコーディングエージェントの利用指標を確認したい開発者向けのスキルです。スコアや関連する名前をアップロードし、会話テキストは送信せず、セッションをローカルの HTML タイムラインにも表示できます。

主な機能

  1. 01ローカルのコーディングエージェントセッションをスキャン
  2. 02利用指標を計算してアップロード
  3. 03Claude Code、Codex、Cursor に対応
  4. 04セッションのタイムラインをローカル HTML に描画
  5. 05デバッグ表示では既定でテキストを伏せる

活用シーン

  1. 01コーディングエージェントのセッションスコアを確認
  2. 02ローカルセッションのツール利用や待機時間を確認
  3. 03会話テキストを送信せずに利用状況を分析

MCP 対応

スキャンでは、セッションで呼び出された MCP サーバー名をプロフィール情報としてアップロードします。会話テキストはアップロードしません。

インストール

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

$npx skills add https://github.com/flatironconsulting/conductorscore --skill conductorscore

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

同梱ファイル

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

scripts/
__init__.py
_http.py
approval_counter.py
auth_store.py
build_skill_package.py
commit_counter.py
config_scanner.py
scripts/agents/
__init__.py
base.py
consent.py
registry.py
scripts/agents/claude/
__init__.py
config.py
discovery.py
events.py
taxonomy.py
scripts/agents/codex/
__init__.py
config.py
discovery.py
events.py
taxonomy.py
scripts/agents/cursor/
__init__.py
cli_events.py
config.py
discovery.py
events.py
store.py
taxonomy.py
scripts/core/
__init__.py
normalized.py

詳細

ConductorScore は、ローカルのコーディングエージェントのトランスクリプトを読み取り、算出された数値(スコア)のみをアップロードします。トランスクリプトのテキストは一切アップロードしません。

実行方法

ユーザーがこのスキルを呼び出したら、「ConductorScore を計算しています」と伝え、次の行にスクリプトが報告するスキルのバージョンを表示してください(スクリプトの最初の出力行はVersion X.Y.Zです)。たとえば、見出しの下にVersion 0.5.0と表示します。オーケストレーターはこのスキル自身のディレクトリ(このSKILL.mdがあるフォルダーで、scripts/サブディレクトリにrun.pyがある場所)から実行してください。場所が固定だと想定しないでください。エージェントやインストーラーによって、スキルは~/.claude/skills/conductorscore/、~/.codex/skills/conductorscore/、~/.cursor/skills/conductorscore/、または~/.agents/skills/conductorscore/に配置される場合があります。このファイルの隣にあるscripts/run.pyを使用してください。

python3 <this-skill-dir>/scripts/run.py

Windowsでpython3が見つからない場合は、代わりにpythonまたはpy -3を使用してください。

スクリプトが↑ vX.Y.Z available — run: gh skill update …と出力した場合は、その行をユーザーに伝えて更新できるようにしてから、通常どおり続行してください。

スクリプトが処理の流れを制御します。手順を説明したり、進捗行を言い換えたりしないでください。担当するのは、(a) スクリプトの実行、(b) 以下のCONDUCTORSCORE_ASK行への対応、(c) スキャン完了時にCONDUCTORSCORE_RESULT行から最終レポートを表示すること(「最終レポート」を参照)です。

ASKの中継ルール

出力行がCONDUCTORSCORE_ASK <id> "<question>" [opt A] [opt B] …で始まる場合、スクリプトは停止してユーザーに判断を求めています。<question>を角括弧内の選択肢を使って複数選択肢として提示し(質問UIを使用し、説明文を追加しないでください)、対応するフラグを付けてrun.pyを再実行してください。

  • login → スクリプトが出力したGitHubのURLとコードを表示し、ユーザーにブラウザーで認証してもらいます。認証したとユーザーが確認したら(「認証しました」)、新しいフラグを付けずにrun.pyを再実行します。ログインが再開され、処理が続行されます。キャンセルされた場合は停止してください。
  • providers → --providers=all(すべて)、--providers=claude(Claude Code)、--providers=codex(Codex)、または--providers=cursor(Cursor)を付けて再実行します。キャンセルされた場合は停止してください。
  • daily → 選択肢を**「はい」と「いいえ」**のちょうど2つだけ提示してください(キャンセルやほかの選択肢は不可)。--daily=yesまたは--daily=noのみを付けて再実行してください。--providersは追加しないでください。これにより1日1回のフックを有効化または拒否します。再スキャンは行いません。

最終レポート

スキャンが完了すると、スクリプトは次の1行を出力します。 CONDUCTORSCORE_RESULT {"score":N,"url":"...","sessions":N,"verified_github":bool}。 この生の行は表示しないでください。dailyの質問が解決した後、次の形式で最終レポートをユーザーに提示してください(✓、📊、箇条書きはそのまま残してください)。

✓ ConductorScore: <score>

📊 View your full breakdown: <url>

- Scanned <sessions> sessions from your local transcripts
- <Daily auto-refresh enabled — your score updates once per day | Daily auto-refresh not enabled>
- Only your score (the numbers) was uploaded — never any transcript text

セッションのデバッグ/可視化 — /conductorscore debug

/conductorscore debug はセッションをローカルで自己完結型の HTML タイムライン(HITL/AFK/Tool/Idle)としてレンダリングし、ブラウザーで開きます。すべてユーザーのマシン上で実行され、スキャンで送信される数値さえ含め、何もアップロードしません。 ユーザーが /conductorscore debug … と入力した場合、またはセッションを可視化/表示/デバッグしたい、タイムラインを表示したい、あるいはHITL/AFK/Tool/Idle の内訳を確認したいと依頼した場合に、この方法を使います。

スラッシュインターフェースは session_viewer.py インターフェースそのものです。ユーザーが debug の後に入力した内容をそのまま Python CLI に渡してください。以下のフラグはすべて 1 対 1 で対応しているため、/conductorscore debug <ARGS> は session_viewer.py <ARGS> を実行します。

python3 <this-skill-dir>/scripts/session_viewer.py [ARGS]

(session_viewer.py は、このスキルの scripts/ 内で run.py の隣にあります。スキルのインストール先は問いません。Windows で python3 が見つからない場合は、python または py -3 を使用してください。)

サポートされている引数(Python CLI の全機能):

  • (引数なし) → ユーザーが現在参加しているセッションです。SessionStart フックが現在のトランスクリプトを記録するため、引数なしで実行するとアクティブなセッションが可視化されます。以前のセッションを調べるには、まず組み込みのピッカー(claude --resume / /resume、または codex resume)でそのセッションに移動してから、/conductorscore debug を実行します。別の方法でその移動を実装しないでください。
  • <path.jsonl> → 指定したトランスクリプトをレンダリングします。
  • --list → 検出可能なローカルセッション(インデックス、日付、ID、プロジェクト)を表示して終了します。
  • --pick N → --list の N 番目のセッションをレンダリングします(新しい順)。
  • --no-redact → 実際のトランスクリプトテキストを表示します。デフォルトでは編集済みです。吹き出しにはワイヤー上と同等の表示(ハッシュ+トークン数、ツール名のみ。生テキストなし)が表示され、スキャンでアップロードされる内容と完全に一致するため、ページを安全に共有できます。--no-redact はローカルで安全に使え(マシンの外部には何も送信されません)、実際にデバッグする場合に最適です。
  • --out <path> → HTML を ~/.cache/conductorscore/ 以外の場所に書き込みます。
  • --no-open → ブラウザーを起動せずにレンダリングします。

スクリプトはローカル限定のデバッグ概要(ソースのトランスクリプト、編集モード、メッセージ/ターン/連続回数/レバレッジの件数、および「何もアップロードされない」という明示的な保証)を表示した後、HTML を書き込んで開きます。スクリプトのコンソール概要と Rendered … → <path> の行をそのまま伝えてください。数値を改めて説明したり、言い換えたりしないでください。

デバイスフローによるログイン

初回実行時に https://github.com/login/device の URL とコードが表示され、その後停止します(バックグラウンドでポーリングは行いません)。URL とコードをユーザーに提示し、ブラウザーで認証してもらいます。ユーザーが認証を確認したら run.py を再実行してください。保留中のログインを再開して認証を完了し、スキャンを続行します。

プライバシーとデータの取り扱い

ConductorScore はすべてお使いのマシン上で実行されます。ローカルのコーディングエージェントのトランスクリプトを読み取ってメトリクスを計算し、次の情報のみをアップロードします。

  • 数値 — 件数、トークンの合計、タイミング、派生スコア。
  • 使用したことで既に表示される名前 — セッションで呼び出されたスキル、スラッシュコマンド、MCP サーバー、プラグイン、モデル ID(これらは公開プロフィールに表示されます)。名前のみで、引数や内容は含みません。

トランスクリプトやメッセージのテキスト、プロンプト、コード、ファイルの内容、ファイルパスはアップロードされません。メッセージとファイルのテキストは、メトリクスの計算前にデバイス上で切り詰められた SHA-256 ハッシュに変換されます(重複排除/類似性判定にのみ使用)。ワイヤー上の正確なペイロードは WIRE_FORMAT.md に記載され、確認できます(wire_format_sample.json は実際のサンプルです)。アップロードは、このデバイスをペアリングした後に限り、スキャンに同意したエージェントについてのみ行われます。ペアリングされていないマシンではアップロードされません。

コメント