キャビマンワークフロー発見

リポジトリ内のすべてのLLMワークフローを発見しラベル付けすることで、Caveman Cloudの支出をワークフロー別に分類できるようにします。「ワークフローを発見」やLLM支出のワークフロー別分割に使用します。

キャビマンワークフロー発見 とは?

このスキルは、Caveman Cloudプラットフォームにおいて、LLMワークフローを自動的に発見・ラベル付けするためのものです。ワークフローとは「サポートチケットに回答する」「ナイトリーダイジェストを構築する」「評価スイートを実行する」といった、コードが実行するジョブを指します。Caveman Cloudでは、すべてのゲートウェイリクエストにワークフローラベルを付与でき、ラベル付けされていないトラフィックは「unlabeled-workflow」という一つのバケットにまとめられます。このスキルは、リポジトリのエントリポイント(HTTP/RPCハンドラ、スケジュールジョブ、CLIコマンド、評価フレームワークなど)を調査し、ワークフローを特定して命名し、各呼び出し元に適切なラベル付け機構(ヘッダー、環境変数、SDKオプションなど)を適用します。また、変更を加える前にユーザーに承認を求める提案テーブルを表示し、検証ステップでは実際にラベル付けされたパスをテストして正しく動作することを確認します。このスキルはClaude Code、Cursor、CodexなどのAIエージェントと連携して動作するように設計されており、繰り返し実行しても既にラベル付けされたリポジトリに変更を加えない(冪等性)ことが特徴です。

対応✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/JuliusBrussee/caveman/tree/main/skills/caveman-discover

Installed? Explore more 生産性&コラボレーション skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

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

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

ドキュメント

あなたはこのリポジトリのLLMワークフローをCaveman Cloud向けにラベル付けしています。ワークフローとは、コードが実行するジョブです(例:「サポートチケットに回答する」「ナイトリーダイジェストを構築する」「評価スイートを実行する」)。テクノロジーではありません。すべてのゲートウェイリクエストにはワークフローラベルを付与できます。ラベル付けされていないトラフィックはすべてunlabeled-workflowバケットにまとめられます。あなたの仕事は、ワークフローを見つけ、適切に命名し、ラベルを設定し、何も壊れていないことを確認することです。

これはコードを変更するため、ユーザーの通常のレビュープロセスを経ます。最初にテーブルを提案し、ユーザーが同意した後に適用してください。 既にラベル付けされたリポジトリで再実行しても何も変更してはなりません(冪等性)。

このスキルはオペレーターによって呼び出されます。unlabeled-traffic Cave Planの観察結果はレビューのみであり、アドバイザリファイル、提案、Draft PRを作成してはいけません。テレメトリーがコールサイトを選択したり編集を許可したりしたと推測してはいけません。独立してリポジトリを調査し、ラベル付けテーブルを提示し、コードを変更する前にユーザーの承認を待ちます。

ステップ1 — ワークフローを調査する

リポジトリをインポートからではなく、エントリポイントから確認します:

  • HTTP/RPCハンドラでLLMを呼び出すもの(直接またはレイヤーを介して)
  • スケジュールジョブ:cron定義、キューコンシューマー、ワーカー、LLMコードを呼び出すGitHub Actions
  • CLIコマンドとスクリプト(scripts/、bin/、package.jsonのscripts)
  • 実際のトークンを使用する評価/テストハーネス
  • フレームワーク内の個別のエージェントまたはチェーン(各LangGraphグラフ、各クルー、各エージェント定義は通常、それ自体が1つのワークフローです)

1つのワークフロー = 人間が名前を付けるであろう1つのジョブです。同じリクエストハンドラ内の10箇所の呼び出し元は1つのワークフローです。1つの共有llm.tsヘルパーを3つのジョブで使用している場合は3つのワークフローです(共有ヘルパーではなく、呼び出し元でラベル付けします)。

ステップ2 — 命名する

スラッグ文法(ゲートウェイで強制):小文字の[a-z0-9_-]、1〜96文字。テクノロジーではなくジョブの名前を付けます:

  • 良い例:support-reply、nightly-digest、pr-review、eval-suite、onboarding-email
  • 悪い例:openai-calls(テクノロジー)、main(意味がない)、SupportReply(無効)、johns-test-3(意味が変わらない)

名前はほぼ永久です。後で名前を変更すると支出履歴が分割されます。コードからジョブの目的が明確でない場合は、ファイル名からスラッグを導出し、目的をでっち上げる代わりにテーブルでreviewとマークします。

ステップ3 — 提案し、適用する

以下のテーブルを提示し、続行するかどうかを尋ねます:

| workflow | job | where | how it gets labeled |
|---|---|---|---|
| support-reply | インバウンドチケットに回答 | src/bot/reply.ts:41 | 返信クライアントのdefaultHeaders |
| nightly-digest | 02:00の要約ジョブ | jobs/digest.ts:12 | ダイジェストクライアントのヘッダー |
| eval-suite (review) | scripts/eval.ts:8 — ファイル名から目的を推測 | scripts/eval.ts:8 | 呼び出し時の環境変数オーバーライド |

次に、各呼び出し元で利用可能な最も軽量なメカニズムを使用してラベルを設定します:

  • @caveman-ai/sdk / caveman_cloud SDK:トレースごとのworkflowオプション、またはシングルジョブサービスが構築するクライアントのdefaultWorkflow。
  • 生のプロバイダーSDK(OpenAI/Anthropic/LangChain/LiteLLM/Vercel):既にx-cave-api-keyを保持しているdefaultHeaders / default_headers / extra_headersブロックに"x-cave-workflow": "<slug>"を追加します。複数のジョブで使用される共有クライアント → 呼び出しごとにヘッダーを渡す(上記のすべてのSDKはリクエストごとのヘッダーオーバーライドをサポート)、または各ジョブに独自のシンクライアントを与えます。
  • ラップされたコーディングエージェント(caveman wrap):呼び出し元(cron行、CIステップ)で--workflow <slug>フラグまたはCAVE_WORKFLOW=<slug>環境変数。
  • 生のHTTP:リクエストにx-cave-workflowヘッダーを追加します。

呼び出し元にラベルを付け、差分を最小限にし、リポジトリのスタイルに合わせます。呼び出し元がまったくCavemanゲートウェイを経由していない場合は、ラベルを付けず、レポートの「未配線」の下にリストします(ラベルはゲートウェイトラフィック上でのみ移動します。配線はcaveman-setupスキルの仕事です)。

ステップ4 — 検証する

リポジトリがすでに使用しているものを実行して、ラベル付けされたパスを1つテストします(テスト、開発スクリプト、1回のcurl)。その後、以下を確認します:リクエストが依然として成功すること(ゲートウェイは無効なラベルを400 cave_invalid_request_headerで拒否します。その場合はスラッグを修正します)。ラベル付けされた支出がダッシュボードの/activity?tab=workflowsに表示され、各ワークフローが次回実行されたときに確認できます。スケジュールされたジョブは、スケジュールがトリガーされたときに表示されます。これはレポートで述べる価値があり、あたかもライブであるかのように装うべきではありません。

ステップ5 — レポート

## ラベル付けされたワークフロー

| workflow | job | where |
|---|---|---|
| support-reply | インバウンドチケットに回答 | src/bot/reply.ts:41 |
| nightly-digest | 02:00の要約ジョブ | jobs/digest.ts:12 |

検証済み:<実際に実行したラベル付けパスと、観察された内容>
ダッシュボード:<ダッシュボード>/activity?tab=workflows — 各行は、そのワークフローが次回実行されたときに表示されます。まだラベル付けされていないものは`unlabeled-workflow`として表示されます。
未配線(ゲートウェイルーティングなし、そのためラベルなし):<リストまたは「なし」>
レビューマーク:<ファイル名から目的を推測したスラッグ、または「なし」>

LLMエントリポイントがまったく見つからなかった場合:その旨を正確に述べ、テーブルを作成する代わりにセットアップスキル(<ドキュメントのルート>/docs/agent-setup.md)を参照してください。

Individual skills in this repo

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

JuliusBrussee/caveman-evidence-review

Read-only review of Caveman Cloud evidence: cost, Cave Score, workflows, traces, latency, errors, routing, savings. Use when asked what Caveman found or where LLM spend goes.

JuliusBrussee/caveman-explore

Read-only repository explorer for cold-start orientation, broad cross-file localization, or when a direct search failed. Skip it when the exact file or symbol is already named. Returns path:line citations only; its reads stay out of main context.

JuliusBrussee/caveman-learn

Act on a Caveman learn report - review the ranked token sinks, apply cost-lowering fixes with per-edit consent, and report what those fixes returned. Use when asked to lower an agent's token cost, what caveman has saved, to trim a heavy CLAUDE.md, or to offload re-pasted context into cavemem.

JuliusBrussee/caveman-manage

Inspect Caveman Cloud's experiment lifecycle and block unsafe execution. Use when asked to start, approve, cancel, promote or roll back a Caveman experiment.

JuliusBrussee/caveman-optimize

Turn a Caveman optimization observation into an operator-chosen candidate with a paired baseline evaluation. Use when asked to inspect or evaluate a Caveman optimization report. Needs explicit approval.

JuliusBrussee/caveman-setup

Wire a repository through the Caveman Cloud gateway so every LLM request is measured, with no behavior change. Use for "set up caveman" or adding LLM spend observability.

JuliusBrussee/investigate-first

Diagnose ambiguous failures before editing. Use for unknown causes, intermittent behavior, performance regressions, or investigations needing evidence-ranked hypotheses.

JuliusBrussee/lean-build

Build feature work with high overbuilding risk. Use for new behavior, product slices, or integrations where repository reuse, strict scope, and an explicit stop condition matter.

JuliusBrussee/migration

Implement reversible compatibility-safe transitions. Use for schema, data, API, protocol, configuration, or dependency migrations requiring rollback and preservation proof.

JuliusBrussee/safe-refactor

Restructure code while preserving behavior. Use for extraction, consolidation, ownership moves, or cleanup where verification must bracket structural edits.

JuliusBrussee/surgical-patch

Fix bugs and small behavior changes at the narrowest responsible layer. Use when regression proof, preserved surrounding behavior, and task-relevant tests matter.

JuliusBrussee/verify-and-stop

Prove existing work meets acceptance conditions without expanding scope. Use for validation-only tasks, completion checks, focused gate runs, and last-mile proof.

関連スキル