Communitygithub.com

mvanhorn/printing-press-library

Great Clips オンラインチェックイン用CLI:エンドポイントの形状とホストルートを完全網羅し、認証後に実際の呼び出しが可能。トリガーフレーズ:`great clips wait time`、`check me into great clips`、`how long is the wait at great clips`、`add me and my kids to the great clips wait list`、`great clips request shape`、`use greatclips`、`run greatclips`。

printing-press-library とは?

このスキルは、Great Clips オンラインチェックインSPAが送信するのと同一のHTTPリクエストをコマンドラインから送信できるCLIツール「greatclips-pp-cli」を駆動します。ドライラン(--dry-run)やJSON出力(--json)に対応しており、全エンドポイントのリクエスト形状が同梱されているため、エージェントがその上にフローを構築できます。v0.1時点では実際のAPIコールにはログイン済みChromeセッションからのCookie手動取り込みが必要で、将来のバージョンでベアラートークン対応が予定されています。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/mvanhorn/printing-press-library/tree/HEAD/cli-skills/pp-greatclips

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Great Clips — Printing Press CLI

前提条件:CLIのインストール

このスキルは greatclips-pp-cli バイナリを駆動します。このスキルのコマンドを呼び出す前に、CLIがインストールされていることを確認する必要があります。 存在しない場合は、最初にインストールしてください。

  1. Printing Press インストーラを使ってインストールします。バイナリは、macOS/Linux では $HOME/.local/bin に、Windows では %LOCALAPPDATA%\Programs\PrintingPress\bin にデフォルトで配置されます。
    npx -y @mvanhorn/printing-press-library install greatclips --cli-only
    
  2. 確認:greatclips-pp-cli --version
  3. 通知されたインストールディレクトリが、このスキルを呼び出すエージェント/ランタイムの $PATH に含まれていることを確認します。

npx インストールが失敗した場合(Nodeなし、オフラインなど)、直接Goインストールにフォールバックします(Go 1.26.6 以降が必要)。

go install github.com/mvanhorn/printing-press-library/library/other/greatclips/cmd/greatclips-pp-cli@latest

インストール後も --version で「command not found」と表示される場合、ランタイムがバイナリディレクトリを $PATH 上で認識できていません。確認が成功するまでスキルコマンドを実行しないでください。

このCLIを使用するタイミング

このCLIは、Great Clips オンラインチェックインSPAが送信するのとまったく同じHTTPリクエストを、コマンドラインから、ドライランおよび --json 出力付きで送信します。v0.1 では全エンドポイントのリクエスト形状を同梱しているため、エージェントはその上にフローを構築できます。実際の呼び出しには、ログイン済みのChromeセッションからCookieを手動で取得する必要があります。

HTTP トランスポート

このCLIは、ブラウザ向けエンドポイントに対してChrome互換のHTTPトランスポートを使用します。通常のAPI呼び出しにブラウザプロセスを常駐させる必要はありません。

検出シグナル

このCLIは、ブラウザで観測されたトラフィックコンテキストをもとに生成されました。

  • キャプチャ範囲:22のネットワークエントリ中9のAPIエントリ
  • プロトコル:(信頼度0%), (信頼度0%), (信頼度0%)
  • 生成ヒント:Two-host single-auth: webservices.greatclips.com と www.stylewaretouch.net の両方を処理する単一のベアラートークンクライアントを生成。POST /api/store/waitTime は {storeNumber} オブジェクトのJSON配列をボディとして受け取る(単一オブジェクトではない)。1店舗の呼び出しは長さ1の配列を送信。認証はログイン済みChromeセッションからClaude-in-Chrome MCP経由でライブキャプチャ。印刷されたCLIには同等のフロー用の auth login --chrome ヘルパーコマンドを同梱すべき。

コマンドリファレンス

cancel — アクティブなチェックインをキャンセルする

  • greatclips-pp-cli cancel — このアカウントのアクティブなチェックインをキャンセルします

checkin — 自分と同行者(1~5人)のチェックインを送信する

  • greatclips-pp-cli checkin — 自分と、オプションで他の同行者をサロンの待機リストに追加します

customer — Great Clips の顧客プロフィール(名前、電話番号、お気に入り、最近の来店)を読み取る

  • greatclips-pp-cli customer — 認証された顧客のプロフィールを取得します

geo — 郵便番号または市区町村名を緯度/経度に変換する

  • greatclips-pp-cli geo — 郵便番号を緯度/経度/市区町村/都道府県に変換します

hours — サロンの営業時間(今日と14日間の予測、特別営業時間を含む)を読み取る

  • greatclips-pp-cli hours — 1店舗の14日間の営業時間予測を取得します

salons — Great Clips サロンの検索と参照

  • greatclips-pp-cli salons get — サロン番号で1店舗のサロンを取得します
  • greatclips-pp-cli salons search — 郵便番号、市区町村名、または半径内の座標でサロンを検索します

status — アクティブなチェックインの現在の待ち順位を確認する

  • greatclips-pp-cli status — アクティブなチェックインのステータス(待ち順位、推定待ち時間)を取得します

wait — ICS Net Check-In サービスから推定待ち時間を読み取る

  • greatclips-pp-cli wait — 1店舗の待ち時間を取得します(ボディは {storeNumber} の単一要素配列)

適切なコマンドの見つけ方

何をしたいかはわかっているが、どのコマンドがそれを行うかわからない場合は、CLIに直接問い合わせます。

greatclips-pp-cli which "<あなたの言葉で機能を説明>"

which は、自然言語での機能クエリを、このCLIの厳選された機能インデックスから最適なコマンドに解決します。終了コード 0 は少なくとも1つの一致を意味し、終了コード 2 は信頼できる一致がないことを意味します — その場合は --help にフォールバックするか、より狭いクエリを使用します。

レシピ

4人組のチェックインリクエストボディ

greatclips-pp-cli checkin --first-name Matt --last-name VanHorn --phone-number '(206) 555-0100' --salon-number 8991 --guests 4 --dry-run --json

Island Square での4人組のチェックインのために、www.stylewaretouch.net/api/customer/checkIn にPOSTされる正確なJSONボディを出力します。

サロンの待ち時間リクエスト

greatclips-pp-cli wait --store-number 8991 --dry-run --json

ICS Net Check-In waitTime エンドポイントのリクエスト形状。

郵便番号近くのサロン

greatclips-pp-cli salons search --term 98040 --radius 5 --dry-run --json

半径5マイルのサロン検索/termエンドポイントのリクエスト形状。

14日間の営業時間予測

greatclips-pp-cli hours --salon 8991 --dry-run

1店舗の salon-hours/upcoming を呼び出します。レスポンスには特別営業時間や休業日が含まれます。

郵便番号のジオコーディング

greatclips-pp-cli geo --query 98040 --dry-run --json --select results.city,results.state,results.lat,results.lng

郵便番号を geo-names エンドポイント経由で緯度/経度/市区町村/都道府県に変換します。

認証設定

Great Clips は、cid.greatclips.com の Auth0 テナントからの HttpOnly セッション Cookie を使用します。ブラウザスニッフィングにより、すべての呼び出しが Authorization ヘッダーではなく、ブラウザによって添付された Cookie で成功することが確認されています。このCLIのv0.1はリクエスト形状とホストルーティングを提供します。実際の呼び出しを行うには、ログイン済みChromeセッションからCookieをコピーし、~/.config/greatclips-pp-cli/config.toml に貼り付けてください。GREATCLIPS_TOKEN にはプレースホルダを設定して doctor が通るようにします(この環境変数はv0.2でベアラーサポートが追加される可能性があるため保持されています)。

greatclips-pp-cli doctor を実行して設定を確認します。

エージェントモード

任意のコマンドに --agent を追加します。次のように展開されます:--json --compact --no-input --no-color --yes

  • パイプ可能 — JSONをstdoutに、エラーをstderrに出力

  • フィルタ可能 — --select でフィールドのサブセットを保持します。ドット区切りパスはネスト構造を下降し、配列は要素ごとに走査します。冗長なAPIでコンテキストを小さく保つために重要です。

    greatclips-pp-cli salons get --num example-value --agent --select id,name,status
    
  • プレビュー可能 — --dry-run でリクエストを送信せずに表示

  • 非対話型 — プロンプトを表示せず、すべての入力はフラグで指定

  • 明示的なリトライ — --idempotent は、既存の作成が成功としてカウントされるべき場合にのみ使用します

エージェントフィードバック

あなた(またはエージェント)がこのCLIについて何かおかしいと感じた場合は、次のように記録します。

greatclips-pp-cli feedback "--since フラグは包括的だが、ドキュメントでは排他的と書かれている"
greatclips-pp-cli feedback --stdin < notes.txt
greatclips-pp-cli feedback list --json --limit 10

エントリは ~/.greatclips-pp-cli/feedback.jsonl にローカルに保存されます。GREATCLIPS_FEEDBACK_ENDPOINT が設定されていて、かつ --send が渡されるか GREATCLIPS_FEEDBACK_AUTO_SEND=true の場合を除き、POSTされることはありません。デフォルトの動作はローカルのみです。

バグ報告ではなく、驚いたことを書いてください。短く、具体的に、1行で:それが積み重なる部分です。

出力配信

すべてのコマンドは --deliver <sink> を受け付けます。出力は、stdoutに加えて(または代わりに)指定されたシンクに送られるため、エージェントは手動でパイプせずにコマンド結果をルーティングできます。次の3つのシンクがサポートされています。

シンク効果
stdoutデフォルト。stdoutにのみ書き込みます
file:<path>出力を <path> にアトミックに書き込みます(tmp + リネーム)
webhook:<url>出力ボディをURLにPOSTします(application/json または --compact 時は application/x-ndjson)

未知のスキームは、サポートされているセットを指定する構造化エラーで拒否されます。Webhookの失敗は非ゼロを返し、stderrにURLとHTTPステータスを記録します。

名前付きプロファイル

プロファイルは、保存されたフラグ値のセットであり、呼び出し間で再利用されます。スケジュールされたエージェントが毎回同じ構成で同じコマンドを呼び出す場合に使用します — HeyGen の「Beacon」パターンです。

greatclips-pp-cli profile save briefing --json
greatclips-pp-cli --profile briefing salons get --num example-value
greatclips-pp-cli profile list --json
greatclips-pp-cli profile show briefing
greatclips-pp-cli profile delete briefing --yes

明示的なフラグは常にプロファイル値より優先され、プロファイル値はデフォルトより優先されます。agent-context は available_profiles の下にすべての利用可能なプロファイルをリストするため、内省的なエージェントは実行時にそれらを発見できます。

終了コード

コード意味
0成功
2使用法エラー(誤った引数)
3リソースが見つかりません
4認証が必要です
5APIエラー(上流の問題)
7レート制限(待ってから再試行)
10設定エラー

引数の解析

$ARGUMENTS を解析します。

  1. 空、help、または --help → greatclips-pp-cli --help の出力を表示
  2. install で始まる → mcp で終わる場合はMCPインストール。そうでない場合は上記の前提条件を参照
  3. その他 → 直接使用(--agent を付けてCLIコマンドとして実行)

MCPサーバーのインストール

このCLIの公開されているパブリックライブラリエントリまたはプレビルドリリースからMCPバイナリをインストールし、登録します。

claude mcp add greatclips-pp-mcp -- greatclips-pp-mcp

確認:claude mcp list

直接使用

  1. インストールされているか確認:which greatclips-pp-cli 見つからない場合は、インストールを提案します(このスキルの先頭にある前提条件を参照)。
  2. ユーザークエリを、上記のユニーク機能とコマンドリファレンスから最適なコマンドにマッチングします。
  3. --agent フラグを付けて実行します。
    greatclips-pp-cli <command> [subcommand] [args] --agent
    
  4. あいまいな場合は、サブコマンドのヘルプを表示します:greatclips-pp-cli <command> --help。

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

mvanhorn/pp-espn

Use this skill whenever the user asks about live sports scores, standings, team stats, game summaries (with box score, leaders, scoring plays, odds, and win probability), NFL / NBA / MLB / NHL / NCAA / MLS / EPL / WNBA games, team schedules, polls, or rankings. ESPN sports CLI with live scores across 10 leagues, offline search, head-to-head comparisons, and rich per-game summary payloads. No API key required. Triggers on natural phrasings like 'what's the score of the Lakers game', 'Patriots schedule this week', 'NFL standings', 'box score for tonight's Mavs game', 'Chiefs vs Eagles head to head', 'who's on top of the AP poll'.

mvanhorn/pp-flight-goat

Search Google Flights, scan Kayak long-haul routes, and join FlightAware AeroAPI reliability, alerts, and tracking from one CLI.

mvanhorn/pp-movie-goat

The movie CLI that combines TMDb's discovery engine with OMDb's multi-source ratings — and ships a SQLite watchlist that flags what's streaming on your services right now. Trigger phrases: `what should I watch tonight`, `where can I stream <title>`, `rate <title>`, `compare <title> and <title>`, `what's <person>'s filmography`, `plan a <franchise> marathon`, `use movie-goat`, `run movie-goat`.

mvanhorn/pp-recipe-goat

Find the best version of any recipe across 37 trusted sites — with offline cookbook, pantry match, substitution lookup, meal planning, and USDA-backed nutrition. Trigger phrases: `find the best recipe for`, `what can I make with`, `substitute for <ingredient>`, `nutrition for <recipe>`, `use recipe-goat`.

関連スキル