mcpField
P
pp-espn

pp-espn

github.com/mvanhornその他2.1k3.8k 回インストール今日更新
リポジトリ

pp-espn について

pp-espnは、ESPNのスポーツデータを調べるAgent向けのコマンドラインスキルです。複数リーグの横断検索とSQLiteへの同期により、オフライン検索や分析にも対応します。

主な機能

  1. 01複数リーグの試合結果とトレンド
  2. 02試合概要、スコア、プレー記録
  3. 03順位、選手成績、負傷情報
  4. 04SQLiteへの同期とオフライン検索
  5. 05ローカルデータへの読み取り専用SQL

活用シーン

  1. 01各リーグの今日の試合結果を確認
  2. 02試合のオッズ、成績、勝率を調査
  3. 03同期済みの試合やニュースをオフライン検索

MCP 対応

READMEには、別途 espn-pp-mcp をインストールしてClaudeに登録する手順があります。

インストール

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

$npx skills add https://github.com/mvanhorn/printing-press-library --skill pp-espn

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

詳細

ESPN — Printing Press CLI

前提条件:CLI をインストールする

このスキルでは espn-pp-cli バイナリを使用します。**このスキルのコマンドを実行する前に、必ず CLI がインストールされていることを確認してください。**インストールされていない場合は、先にインストールしてください。

  1. Printing Press インストーラーを使用してインストールします。バイナリの既定のインストール先は、macOS/Linux では $HOME/.local/bin、Windows では %LOCALAPPDATA%\Programs\PrintingPress\bin です。
    npx -y @mvanhorn/printing-press-library install espn --cli-only
    
  2. 確認します:espn-pp-cli --version
  3. このスキルを実行するエージェント/ランタイムの $PATH に、報告されたインストールディレクトリが含まれていることを確認します。

npx によるインストールに失敗した場合(Node がない、オフラインなど)は、Go を直接インストールしてください(Go 1.26.6 以降が必要です)。

go install github.com/mvanhorn/printing-press-library/library/media-and-entertainment/espn/cmd/espn-pp-cli@latest

インストール後に --version が「command not found」と報告する場合、ランタイムからバイナリディレクトリが $PATH 上に見えていません。確認に成功するまで、このスキルのコマンドを実行しないでください。

この CLI を使う場面

現在のスコア、順位表、今後の試合日程、直接対決の成績、または試合ごとの詳細な要約(ボックススコア、リーダー、得点プレー、オッズ、勝率)など、スポーツ情報を手早く調べたい場合に使用してください。また、リーグを横断した検索(today)や、同期済みデータのオフライン検索にも適しています。

Stats Perform や Sportradar など、より整ったデータを提供する有料フィードをユーザーが利用している場合や、リアルタイムの WebSocket 更新が必要な場合は使用しないでください(ESPN のエンドポイントはポーリングのみです)。賭けのオッズだけを調べる場合、試合ごとの summary ペイロードにはオッズが含まれますが、リーグ全体のオッズを取得するコマンドはありません。

独自の機能

ローカル同期とリーグ横断ツールによってのみ利用できるコマンドです。

リーグ横断の検索
  • today — 主要スポーツすべての本日のスコアを、1 回の呼び出しで取得します。最初にスポーツを選ばずに「今夜は何があるか」を知る最速の方法です。

  • trending — 現在の人気順に並べた、全リーグで最も注目されている選手とチームです。スポーツを指定せずに「今、注目されているのは誰か」を調べるのに適しています。

  • dashboard — ~/.config/espn-pp-cli/config.toml の [favorites] を読み込み、各リーグのお気に入りチームのスコアを 1 回の呼び出しで表示します。

  • watch <sport> <league> --event <game_id> — 特定の試合のライブスコアを更新します(30 秒ごとにポーリング)。scores または today で試合を見つけてから、watch でライブ観戦してください。

試合状況のインテリジェンス
  • summary <sport> <league> --event <game_id> — ボックススコア、リーダー、得点プレー、オッズ、勝率を含む詳細な試合要約です。試合ごとに取得できる情報量が最も多いペイロードです。

  • boxscore <event_id> — イベント ID の選手別ボックススコアのみを取得します。最近のスコアボードのキャッシュヒットからスポーツとリーグを推定します。推定を省略するには --sport/--league を指定します。

  • plays <sport> <league> --event <id> — 特定のイベントのプレーごとのフィードです。--limit は省略可能です(既定値は 200)。

  • recap <sport> <league> — リーグで直近に終了した試合の、ボックススコアとリーダーを含む試合後の振り返りです。

  • scoreboard <sport> <league> — 日付フィルター、週/グループセレクター、競技メタデータを備えたライブスコアボードです。

  • odds <sport> <league> — 今夜の試合一覧のスプレッド、オーバー/アンダー、マネーラインです。スコアボードのペイロードから取得されるため、試合ごとの要約呼び出しは不要です。

順位表とランキング
  • standings <sport> <league> — カンファレンス/ディビジョンの順位表です。

  • rankings <sport> <league> — 最新の AP、Coaches、CFP の投票ランキングです(NCAAF/NCAAM)。

  • streak <sport> <league> — 同期済みデータから算出した、リーグ内の各チームの現在の連勝/連敗記録です。

  • rivals <sport> <league> — 同期済みデータに基づく、リーグ内のチーム間の直接対決成績です。

  • h2h <team1> <team2> --sport <s> --league <l> — 特定の 1 組について、平均スコアや直近の対戦一覧を含む、より詳細な直接対決情報です。

  • sos <sport> <league> — 順位表のペイロードから取得したチームごとの対戦日程の強さを、降順で表示します。

人物
  • leaders <sport> <league> [--category <name>] — カテゴリ別の統計リーダー。任意のフィルターを指定できます。

  • compare <athlete1> <athlete2> --sport <s> --league <l> — 2 人の選手のシーズン成績を並べて比較します。名前が曖昧な場合は候補を表示して終了コード 2 で終了します。

  • injuries <sport> <league> — リーグ全体の現在の負傷者レポートをチーム別に表示します。

  • transactions <sport> <league> — 最近のトレード、契約、ウェーバー公示を表示します。

ローカルストア
  • sync — スポーツとリーグのデータセットをローカルの SQLite に取り込み、オフライン分析に利用できるようにします。

  • search "<query>" — 同期済みの試合とニュースを全文検索します。

  • sql <query> — ローカルデータベースに対して読み取り専用の SQL クエリを実行します。

コマンドリファレンス

ライブアクション:

  • espn-pp-cli scores <sport> <league> — 現在のスコア
  • espn-pp-cli today — 主要スポーツ全体の今日のスコア
  • espn-pp-cli scoreboard <sport> <league> — 日付で絞り込み可能なスコアボード
  • espn-pp-cli watch <sport> <league> --event <game_id> — 1 試合のライブスコアをポーリングします
  • espn-pp-cli standings <sport> <league> — リーグの順位表
  • espn-pp-cli trending — 各リーグで最も注目されている選手とチーム
  • espn-pp-cli dashboard — ~/.config/espn-pp-cli/config.toml のお気に入りの概要

チームの詳細:

  • espn-pp-cli teams <sport> <league> <team_id> — 1 チームのスケジュール(過去および今後の試合)
  • espn-pp-cli teams get <sport> <league> <team_id> — チームの成績、リンク、ロゴ
  • espn-pp-cli teams list <sport> <league> — リーグ内の全チーム
  • espn-pp-cli streak <sport> <league> — 同期済みデータから現在の連勝・連敗を表示します
  • espn-pp-cli rivals <sport> <league> — 同期済みデータからチーム間の対戦成績を表示します
  • espn-pp-cli h2h <team1> <team2> --sport <s> --league <l> — 2 チーム間の詳細(平均得点、対戦数)
  • espn-pp-cli sos <sport> <league> — スケジュールの強さを降順で表示します

試合の詳細:

  • espn-pp-cli summary <sport> <league> --event <game_id> — 試合の全概要(ボックススコア、リーダー、得点プレー、オッズ、勝利確率)
  • espn-pp-cli boxscore <event_id> — ボックススコアのサブツリーのみを表示します(スポーツとリーグはキャッシュから推定)
  • espn-pp-cli plays <sport> <league> --event <id> — 試合経過フィード(任意の --limit を指定できます。既定値は 200)
  • espn-pp-cli recap <sport> <league> — 直近で終了した試合のレビュー
  • espn-pp-cli odds <sport> <league> — 今夜の試合一覧のハンディキャップ、合計得点予想、マネーライン

人物:

  • espn-pp-cli leaders <sport> <league> [--category <name>] — カテゴリ別の統計リーダー
  • espn-pp-cli compare <athlete1> <athlete2> --sport <s> --league <l> — 選手の成績を並べて比較します
  • espn-pp-cli injuries <sport> <league> — 現在の負傷者レポート
  • espn-pp-cli transactions <sport> <league> — 最近のトレード、契約、ウェーバー公示

投票とランキング:

  • espn-pp-cli rankings <sport> <league> — AP、Coaches、CFP のランキング

情報:

  • espn-pp-cli news <sport> <league> — 最新ニュース

検索とローカル機能:

  • espn-pp-cli search "<query>" — 同期済みの試合とニュースを全文検索します
  • espn-pp-cli sync — スポーツとリーグのデータをローカルの SQLite に同期します
  • espn-pp-cli sql "<query>" — ローカルストアに対して読み取り専用の SQL を実行します
  • espn-pp-cli load — 担当者ごとの作業量の分布を表示します(同期済みデータ)
  • espn-pp-cli orphans / stale — ローカルストアのメンテナンス用ビュー
  • espn-pp-cli doctor — 接続と設定を確認します

スポーツの値:football、basketball、baseball、hockey、soccer。 リーグの値:nfl、nba、mlb、nhl、ncaaf、ncaam、ncaaw、mls、eng.1(EPL)、wnba。

レシピ

朝のスポーツチェック
espn-pp-cli today --agent --select events.shortName,events.status
espn-pp-cli scores football nfl --agent --select events.shortName,events.competitions.competitors.team.displayName,events.status.type.detail
espn-pp-cli standings football nfl --agent

today を 1 回呼び出すと複数リーグの試合状況を確認でき、気になるリーグに対して scores を 1 回、状況把握のために standings を 1 回実行します。入れ子になった --select パスを使えば、スコアボードのペイロードを数十 KB から、実際に必要なフィールドだけに絞り込めます。エージェントのコンテキストを小さく保つために不可欠です。

同期済みデータを使った試合前調査
espn-pp-cli sync --sport football --league nfl
espn-pp-cli rivals football nfl --agent         # historical records from synced data
espn-pp-cli streak football nfl --agent         # current streaks
espn-pp-cli summary football nfl --event <id> --agent   # full game payload incl. odds and box score

sync を一度実行すれば、その後は rivals と streak がローカルストアから即座に応答します。特定の試合について最も情報量の多い単一のペイロードを返すのは summary です(ボックススコア、リーダー、得点プレー、オッズ、勝率)。

同期後のオフライン検索
espn-pp-cli sync --sport football --league nfl
espn-pp-cli search "Mahomes"                    # finds in local store

接続状態の悪い環境での繰り返し検索や、過去データの一括分析に便利です。

お気に入りダッシュボード

~/.config/espn-pp-cli/config.toml に [favorites] ブロックを追加します。

[favorites]
nfl = ["KC", "BAL"]
nba = ["LAL"]

次に、以下を実行します。

espn-pp-cli dashboard --agent

1 回の呼び出しで、お気に入りに登録したすべてのチームについて、今夜の対戦状況をリーグ別にまとめて表示します。リーグごとの取得は並行して実行され、部分的な失敗は成功した結果と併せて報告されます。

試合前のオッズと選手の詳細調査
espn-pp-cli odds basketball nba --agent          # tonight's spreads / totals / moneylines
espn-pp-cli leaders basketball nba --category points --agent
espn-pp-cli compare "LeBron James" "Stephen Curry" --sport basketball --league nba --agent
espn-pp-cli boxscore <event_id> --agent          # post-game player stats
espn-pp-cli plays basketball nba --event <id> --limit 50 --agent

odds はスコアボードのイベントごとのラインを読み込みます(試合ごとのサマリー呼び出しは行いません)。leaders --category は、1 つのスタッツカテゴリーに絞り込みます。compare は名前から選手 ID を解決し、候補を一覧表示します。曖昧さがある場合は 2 で終了します。boxscore は、直近のキャッシュヒットからスポーツとリーグを推定します。推定を省略するには --sport/--league を指定します。

認証の設定

不要です。 ESPN の公開エンドポイントでは API キーは必要ありません。auth コマンドは一貫性を保つために存在しますが、何も実行しません。

任意の設定:

  • ESPN_CONFIG — 設定ファイルのパスを上書きします
  • ESPN_BASE_URL — ベース URL を上書きします(プロキシまたはミラー用)
  • NO_COLOR — 標準の色なし環境変数

エージェントモード

任意のコマンドに --agent を追加します。これは --json --compact --no-input --no-color --yes に展開されます。フィールドを選んで取得するには --select、リクエストを事前確認するには --dry-run、GET キャッシュをバイパスするには --no-cache を使用します。

出力のフィルタリング

--select は、ネストされたレスポンスをたどるためのドット区切りパスを受け付けます。配列は各要素をたどります。

espn-pp-cli <command> --agent --select id,name
espn-pp-cli <command> --agent --select items.id,items.owner.name

これを使って、膨大なペイロードから実際に必要なフィールドだけに絞り込みます。深くネストされた API レスポンスでは特に重要です。

レスポンスエンベロープ

データレイヤーのコマンドは、出力を {"meta": {...}, "results": <data>} でラップします。データには .results を、ソースが live かローカルかを確認するには .meta.source を解析してください。N results (live) のサマリーは、stdout が TTY の場合にのみ stderr に出力されます。パイプやエージェントの利用者には、stdout に純粋な JSON が表示されます。

終了コード

コード意味
0成功
2使用方法のエラー
3見つかりません(チーム、試合、選手)
5API エラー
7レート制限

インストール

go install github.com/mvanhorn/printing-press-library/library/media-and-entertainment/espn/cmd/espn-pp-cli@latest
espn-pp-cli doctor
MCP サーバー
go install github.com/mvanhorn/printing-press-library/library/media-and-entertainment/espn/cmd/espn-pp-mcp@latest
claude mcp add espn-pp-mcp -- espn-pp-mcp

引数の解析

$ARGUMENTS が与えられた場合:

  1. 空、help、または --help → espn-pp-cli --help を実行
  2. install → CLI、install mcp → MCP
  3. その他すべて → ユーザーの意図から <sport> <league> を解決します(例:「Lakers」→ basketball nba)。which espn-pp-cli を確認し、見つからない場合はインストールを提案してから、--agent を付けて実行します。

自動学習

2 回の呼び出しで行うプロトコルです。探索の前に recall を実行し、出力する前に teach & を実行します。CLI はエンティティを考慮した一致検証を行い、クエリの種類に応じて保存済みのプレイブックも提示します。エンベロープを読み取り、6 分岐の判断ツリーに従ってください。どちらかを省略すると、今後のセッションで無料の再呼び出しヒットを得られなくなります。

ステップ 1:探索の前に recall を実行

新しいユーザーの質問に対して、scoreboard、teams、boxscore、search、standings など、どの探索コマンドを実行する前にも、以下を実行します。

espn-pp-cli recall "<user's question>" --agent

レスポンスエンベロープ:

{
  "query": "...",
  "normalized": "game tonight",
  "query_entities": ["Niners"],
  "found": true | false,
  "match_score": 0.0,
  "results": [
    { "resource_id": "...", "resource_type": "events|news|...", "venue": "...",
      "confidence": 2, "entity_match": "exact|partial|unknown",
      "source": "taught|preseed|pattern", "warnings": ["..."] }
  ],
  "mismatches": [ /* only when --debug-mismatches */ ],
  "warnings": [ /* top-level */ ],
  "playbook": {
    "query_family": "...",
    "playbook": {
      "steps": [ { "cmd": "teams basketball nba {team.id}", "purpose": "..." }, ... ],
      "entity_slots": ["$TEAM", "$STATS"],
      "expected_tool_calls": 3
    },
    "slots_resolved": { "$TEAM": { "token": "pistons", "canonical": "Detroit Pistons" } },
    "notes": "byathlete needs seasontype=2; categories has dup labels"
  },
  "notes": "byathlete needs seasontype=2; categories has dup labels"
}
ステップ 2:6 分岐の判断ツリー

この順番で playbook、notes、results[0]、警告を確認します。

if Playbook present:
    -> READ Playbook.notes verbatim FIRST (workarounds + gotchas the CLI surface doesn't expose)
    -> replay Playbook.steps in order, substituting Playbook.slots_resolved entries
       for the entity slot tokens. If a step's slot is unresolved, fall back to
       discovery for that step only.
    -> the Playbook's expected_tool_calls is a budget; if you find yourself running
       materially more, record the divergence via teach-playbook at end-of-session.

elif Notes present (no Playbook):
    -> read Notes verbatim before any discovery step; they carry known gotchas
       for this query family even when no structured choreography exists yet.

elif Found AND Results[0].EntityMatch == "exact" AND Results[0].Confidence >= 2:
    -> skip discovery; fetch live data for Results[*].ResourceID in parallel
       (e.g., espn-pp-cli boxscore <eid> for an event, espn-pp-cli teams ... for a team)

elif Found AND Results[0].EntityMatch == "partial":
    -> candidate hint, NOT a hit; read the resource title to validate before trusting

elif (any row in Mismatches[] when --debug-mismatches was passed):
    -> treat as cold start; the stored learning is for a different entity
       (e.g., a "Cowboys" learning won't satisfy a "Niners" query — different canonical)

else:  // Found == false, no playbook, no notes
    -> cold start; run discovery normally; teach the answer afterward AND record
       a playbook + notes via teach --playbook-file --playbook-notes-file so the
       next session of the same family is faster.

プレイブックとノートは、リソースごとのパスとは別のものです。recall のレスポンスには、プレイブックと Results[] のヒットの両方が含まれる場合があります。両方を活用してください。プレイブックは実行する手順を示し、リソースのヒットは特定のステップを省略できます。既定では mismatches をスキップし、コールドスタート時の予想外の動作を調査する場合にのみ --debug-mismatches を渡します。

ステップ 3:常に warnings を確認する
  • low_confidence:confidence<2 の行が存在します。ヒントとして扱い、発見を省略できるものとして扱わないでください。
  • resource_not_in_store:ローカルストアに、学習データが参照しているリソースがありません。一致検証でエンティティを分類できなかったため、直接取得して再評価してください。
  • トップレベルの no_learnings_for_query_family:Jaccard の下限を超える行がテーブルにありませんでした。完全なコールドスタートです。
ステップ 4:応答を確定した後に teach &

イベント ID/チーム ID を含むユーザー向け応答を組み立てた後、ただしそれを送信する前に、バックグラウンドで teach 呼び出しを実行してください。シェルの & を末尾に付けて、呼び出しがすぐに戻り、ユーザー向け応答をブロックしないようにします。

espn-pp-cli teach --query "<user's question>" --resource-type <events|news|teams> --resource <id1> --resource <id2>
# (append shell `&` to background it)

成功時は何も表示しません。最も具体的なリソースを学習させてください。たとえば、ユーザーが「次の Spurs の試合はいつ?」と尋ね、チームのスコアボードを調べてイベント 401747632 を見つけた場合、チーム ID ではなく、そのイベント ID を学習させます。CLI は想起時の別名解決に、シード済みの entity_lookups(Niners/49ers/SF のような別名を含む NFL/NBA/MLB/MLS のチーム名簿)を使用するため、「Niners」で学習させれば、今後の「49ers」というクエリにも自動的に対応できます。

ステップ 5:発見に 5 回を超える呼び出しがかかった場合はプレイブックを記録する

質問に回答するためにツール呼び出しを 5 回より多く実行し、CLI では見つけられなかった回避策(黙って無視されるフラグ、文書化されていないパラメーター、ページネーションの工夫、ペイロードの注意点)を発見した場合は、次回に同じクエリファミリーを処理するセッションがその発見作業を省けるよう、記録してください。記録先は 2 つあります。

# Common case: along with the resource teach
espn-pp-cli teach --query "<question>" --resource-type <type> --resource <id> \
  --playbook-file ~/playbooks/season-recap.json \
  --playbook-notes-file ~/playbooks/season-recap-notes.md
# (append shell `&` to background it)

# Standalone: notes-only or recipe-only
espn-pp-cli teach-playbook --query "<question>" \
  --playbook-file ~/playbooks/season-recap.json \
  --notes "byathlete needs seasontype=2; categories has dup labels"

プレイブックファイルは、steps、entity_slots、expected_tool_calls を含む JSON です。ノートファイルは、注意点をそのまま記載する Markdown です。どちらのフィールドも空にできますが、両方が空の場合は拒否されます。プレイブックは構造上のクエリファミリー(エンティティを除いたもの)に基づいてキー付けされるため、「Warriors はどのようにシーズンを終えた?」で学習した手順は、同じ形式の他のチームのクエリである Pistons や Heat などにも適用されます。

今後の想起でプレイブックが見つかった場合は、それを信頼できる情報源として扱ってください。slots_resolved による置換を行って手順を再実行し、手順がすでに記録している調査は省略して、どの手順よりも先に notes を読んでください。

ステップ 6:デバッグ応答で修正点を特定した場合は playbook amend &

デバッグプロトコルに基づく応答で、ノートやプレイブックに記録すべき具体的な修正点(回避策、文書化されていないエンドポイントの形式、古くなったフィールド名、確認されたスキーマの変化、空のペイロードへのフォールバック)が見つかった場合は、ユーザー向け応答を送信する前に playbook amend を実行してください。teach と同じく、完了を待たずに実行します。

espn-pp-cli playbook amend \
  --query "<exact recall query string>" \
  --add-note "<your concrete correction>"
# (append shell `&` to background it)

修正として記録する価値があるもの:今回のセッションで実際に確認した動作で、将来の自分に役立つ情報です。修正する価値がある例:

  • 「summary エンドポイントはレスポンスを {meta, results} でラップする。データは .header ではなく .results.header にある」
  • 「現在のプレーオフに出場していない選手の場合、compare は空の team フィールドを返す」
  • 「今シーズン、byathlete の avgRebounds カテゴリーインデックスが general[9] から general[11] に変わった」

ノートに含めてはいけないもの:

  • 年ごとの回答(「Curry は直近の試合で 4-16 の成績だった」など)。これは応答であり、学習内容ではありません。
  • プレイブックが実行時にすでに取得する、チームごとまたは選手ごとのデータ。
  • 既存のノートの内容を言い換えただけの記述。

amend コマンドは、ファミリーの既存のノートにタイムスタンプ付きのマーカー([amend YYYY-MM-DDTHH:MMZ]: <text>)を追加します。複数の amend が蓄積され、監査履歴を確認できます。そのファミリーのプレイブックがまだ存在しない場合、amend はノートのみのプレイブックを作成するため、コールドスタートで見つかった修正も記録されます。

使用例
  1. コールド:「次のスパーズの試合はいつ?」 — recall は found=false を返します。チームのスコアボードをたどり、次に予定されているスパーズのイベント ID を見つけて回答します。イベントを学習させます。

    espn-pp-cli recall "when's next Spurs game?" --agent
    # found=false -> discovery
    espn-pp-cli teams basketball nba 24 --agent --select events.id,events.shortName,events.date
    # ...answer "Tue May 26 SA @ OKC, event 401747632"...
    espn-pp-cli teach --query "when's next Spurs game?" --resource-type events --resource 401747632
    # (append shell `&` to background it)
    
  2. ウォーム:「今夜のナイナーズの試合」 — recall は found=true、results[0].entity_match="exact"、results[0].confidence>=2 を返します。探索を省略し、ボックススコアを直接取得します。

    espn-pp-cli recall "Niners game tonight" --agent
    # found=true, results=[{resource_id: "401547432", entity_match: "exact"}]
    espn-pp-cli boxscore 401547432 --agent
    
  3. 別名経由のヒット:「今夜の49ersの試合」 — 直接教えたことはありません。recall は entity_lookups(nfl_team 種別)を使って「49ers」を「San Francisco 49ers」という正規名に解決し、同じ正規名を持つ「Niners game tonight」の学習内容を見つけて、found=true を返します。探索を省略します。

  4. エンティティの不一致:「今夜のカウボーイズの試合」 — 上記のナイナーズの学習内容は、エンティティ以外のトークン(game、tonight)については Jaccard の下限を上回りますが、エンティティの正規名が異なります(Dallas Cowboys ≠ San Francisco 49ers)。mismatches に振り分けられ、recall は found=false を返します。コールドスタートとして扱います。

このループが機能していない場合:learnings list --warnings でローカルの問題を確認できます。espn-pp-cli feedback "<what tripped you up>" で問題点を記録すると、次回の出力で修正できます。


エージェントワークフロー機能

この CLI は、cli-printing-press の PR #218 から取り込まれた、エージェントワークフロー向けの共有機能を 3 つ提供します。

名前付きプロファイル

フラグのセットを名前付きで保存し、複数の呼び出しで再利用します。

# Save the current non-default flags as a named profile
espn-pp-cli profile save <name>

# Use a profile — overlays its values onto any flag you don't set explicitly
espn-pp-cli --profile <name> <command>

# List / inspect / remove
espn-pp-cli profile list
espn-pp-cli profile show <name>
espn-pp-cli profile delete <name> --yes

フラグの優先順位:明示的なフラグ > 環境変数 > プロファイル > デフォルト。

--deliver

コマンドの出力先を標準出力以外に指定します。エージェントが、余計な接続処理をせずに結果をファイル、Webhook、または別のプロセスに渡す必要がある場合に便利です。

espn-pp-cli <command> --deliver file:/path/to/out.json
espn-pp-cli <command> --deliver webhook:https://hooks.example/in

ファイル出力先にはアトミックに書き込みます(一時ファイル + リネーム)。Webhook 出力先には application/json(または --compact が設定されている場合は application/x-ndjson)を POST します。不明なスキームが指定された場合は、対応しているスキームの一覧を含む構造化された拒否を返します。

feedback

エージェント側のループから、この CLI に関するインバンドフィードバックを記録します。デフォルトではローカルのみのため、設定なしで安全に呼び出せます。

espn-pp-cli feedback "what surprised you or tripped you up"
espn-pp-cli feedback list         # show local entries
espn-pp-cli feedback clear --yes  # wipe

エントリーは ~/.espn-pp-cli/feedback.jsonl に JSON Lines 形式で追記されます。ESPN_FEEDBACK_ENDPOINT が設定され、--send が渡されるか ESPN_FEEDBACK_AUTO_SEND=true の場合、エントリーは上流にも POST されます(ノンブロッキングのため、ローカルへの書き込みは常に成功します)。

コメント