orca-eval について
Claude Code のセッション履歴を評価し、プロセス改善案をまとめるスキルです。要約から修正、反復、摩擦、成功したワークフローを見つけ、変更案を提示した後、ユーザーの承認を待ちます。
主な機能
- 01要約を通じた最近のセッションログのスキャン
- 024 種類のワークフローシグナルの特定
- 03レポートの下書きと Wiki インデックスの更新
- 04各指摘に 1 つの対応案を付与
- 05変更前にユーザーの承認を待機
活用シーン
- 01最近のセッションで繰り返される修正の確認
- 02スキル化候補となる反復コマンドの発見
- 03繰り返すツールエラーやリトライの検出
- 04修正なしで承認されたワークフローの記録
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ rheinmir/ setup --skill orca-evalインストール後、Claude Code で/orca-evalを入力して読み込まれたか確認します。
同梱ファイルassets/orca-eval-scan.sh
詳細
スキル:orca-eval
WHAT
目的とコンテキスト
- 目的: プロセスを自己改善するサイクルです。session logs を読み返す → ベストプラクティス/アンチパターンを抽出する → md レポートを作成する → アクション(スキルへの昇格、CLAUDE.md の修正、hook の追加など)を提案します。レポートは提案です。すべてのアクションは
propose→ ゲートを経る必要があり、自動では実行されません。 - トリガー(使用するタイミング):
/orca-eval [N]— N = スキャンする直近のセッション数(例:5/10/15)- N がない場合 → 現在のセッションのみスキャンします
- ユーザーが「セッションを評価して」「ベストプラクティスを抽出して」「履歴からプロセスを最適化して」と言った場合
- 対象外: アクション(スキルへの昇格、CLAUDE.md の修正、hook の追加)を自動実行しません。session log の修正/削除は行いません。30 セッションごとの自動トリガーは行いません(Phase 2 であり、このスキルには含まれません)。
メンタルモデル
*.jsonl session logs → orca-eval-scan.sh digest(プロンプト · ツールエラー · 繰り返しコマンド)→ 4 つのシグナル(Correction · Repetition · Friction · Win)→ finding → アクションを 1 つだけ選択(promote-to-skill · update-CLAUDE.md · add-hook · keep · ignore)→ レポートのドラフト → 承認を待って停止
入力と出力の契約
| Field | Required? | 意味 | |
|---|---|---|---|
| In | N | いいえ | mtime に基づく直近の session 数 *.jsonl。デフォルト = 現在のセッション |
| In | session logs ~/.claude/projects/<project-slug>/*.jsonl | はい | 読み取り専用 |
| Out | llmwiki/wiki/draft/orca/DDMMYY-eval-report.md | はい | Report template に従う |
| Out | wiki/index.md + wiki/log.md の更新 | はい | — |
| Out | ユーザーに表示するアクション表 | はい | 「完了」= ユーザーが表を確認済み。アクションは未実行 |
ルールと機能
- RULE-01(MUST):session logs は読み取り専用とします —
*.jsonlを修正/削除しません。 - RULE-02(MUST):トランスクリプト全体を読み込みません — 1 つのセッションが数百 KB に及ぶ場合があります。スキャナーの digest を通じて読み取ります。
- RULE-03(MUST):各 finding にはアクションを 1 つだけ紐づけます。アクションはユーザーの承認後にのみ実行します(コード/スキルの変更の場合は
proposeを経由)。 - RULE-04(MUST):Claude Code の JSONL 形式には公開仕様がありません — スキャナーに失敗した場合は現在のセッションにフォールバックして明示的に報告し、空のレポートは作成しません。
- 機能:スキャナー経由でローカルの session log を読み取り、wiki のドラフト + index + log を書き込みます。ネットワークへのアクセスはなく、コード/設定の変更もありません。
失敗時の境界
- スキャナーに失敗 → partial:現在のセッションにフォールバックして明示的に報告します。空のレポートは作成しません。
- シグナルがない → finding が 0 件であることをレポートに明記します(finding を捏造しません)。
- ユーザーが未承認 → アクションは proposed の状態となり、スキルは停止します。
HOW
メインワークフロー
| Step | Type | Inputs | Action | Outputs/exit | Failure/next |
|---|---|---|---|---|---|
| W01 | deterministic | N | リポジトリルートから skills/orca-eval/assets/orca-eval-scan.sh [N] を実行してスキャン | digest | 失敗 → B01 |
| W02 | judgment | digest | 4 種類のシグナルを抽出 | finding の一覧 + 証拠 | — |
| W03 | effect | finding | template に従ってレポートを作成し、index/log を更新 | レポートのドラフト | — |
| W04 | judgment | finding | アクションの提案:ユーザーにアクション表を提示し、停止 | アクション表 | 未承認 → 停止 |
各手順の詳細(W01〜W04 の正本):
- スキャン — リポジトリルートから
skills/orca-eval/assets/orca-eval-scan.sh [N]を実行します。スクリプトは簡潔な digest(ユーザープロンプト、ツールエラー、繰り返された Bash コマンド)を返します。トランスクリプト全体を読み込まないでください — 1 つのセッションが数百 KB に及ぶ場合があります。 - 抽出 — digest から、次の 4 種類のシグナルを探します。
- Correction:ユーザーがエージェントの発言を修正する(「違います、X を使って」「間違っています」「実は…」)→ 新しい対応ルール
- Repetition:セッションをまたいで、コマンド/操作の連続が 3 回以上繰り返される → スキル化の候補
- Friction:ツールエラーの繰り返し、permission prompt の頻発、リトライループ → hook/permission/設定の候補
- Win:ユーザーがすぐに承認し、修正が不要だったワークフロー → 維持すべきベストプラクティスとして記録
- レポート — 以下の template に従って
llmwiki/wiki/draft/orca/DDMMYY-eval-report.mdに記録します。wiki/index.md+wiki/log.mdを更新します。 - アクションの提案 — 各 finding にはアクションを 1 つだけ紐づけます:
promote-to-skill/update-CLAUDE.md/add-hook/keep/ignore。ユーザーにアクション表を提示します。停止 — アクションはユーザーの承認後にのみ実行します(コード/スキルの変更の場合はproposeを経由)。
入力
| パラメーター | 意味 | デフォルト |
|---|---|---|
N | 直近のセッション数(*.jsonl の mtime に基づく) | 現在のセッション |
セッションログは ~/.claude/projects/<project-slug>/*.jsonl にあります。slug は cwd の / を - に置き換えたものです(例:-Users-giatran-orca-workspaces-setup-evaluation)。
分岐
| ID | 種類 | 条件 | 動作 | スキップ/失敗 | 再開先 |
|---|---|---|---|---|---|
| B01 | 復旧 | scanner の失敗(JSONL の形式変更) | 現在のセッションにフォールバックし、レポートで明示します | スキャン対象がない場合 → その旨を伝え、空のレポートは生成しません | W02 |
| B02 | 条件付き必須 | アクションがコード/スキルの変更で、ユーザーが承認した場合 | propose に移行 → ゲート | ユーザーが承認しない場合 → 停止 | — |
検証と停止
scanner は決定論的です。シグナルの分類には判断が必要です。各 finding には、表に証拠(セッション+短い引用)を記載する必要があります。W04 でユーザーの承認を待って完全に停止します。
例
- 肯定例:
/orca-eval 10→ 最新の*.jsonlを 10 件スキャン → ユーザーが「/private/tmp ではなく ./scratchpad/ を使う」と 4 回修正したことを検出(Correction) → finding をupdate-CLAUDE.mdに紐付けます。レポートllmwiki/wiki/draft/orca/DDMMYY-eval-report.mdとアクション一覧を作成し、停止します。 - 境界/失敗例: JSONL の形式変更により
orca-eval-scan.shが失敗 → 現在のセッションにフォールバックし、レポートに scanner の失敗を明記します。シグナルがない場合 → finding が 0 件であることを伝え、空のレポートは生成しません。
参考 — レポートテンプレート
---
type: draft
title: "DDMMYY-eval-report"
status: proposed
tags: [<skill-name>, output-report]
timestamp: YYYY-MM-DD
---
# DDMMYY-eval-report
**Type:** draft
**Status:** proposed
**Tags:** orca-eval, eval-report
**Proposed:** YYYY-MM-DD
**Scope:** <N session / session hiện tại> — <danh sách file jsonl đã quét>
## Best practices
| # | Tín hiệu | Loại | Bằng chứng (session, trích dẫn ngắn) |
|---|----------|------|--------------------------------------|
## Đề xuất action
| # | Finding | Action | Lý do |
|---|---------|--------|-------|
## Origin
- **Sessions:** <paths đã quét>
- **Generated by:** /orca-eval
参考 — 制限事項
- セッションログは読み取り専用です —
*.jsonlの変更/削除は行いません。 - Claude Code の JSONL 形式には公開仕様がありません — scanner が失敗した場合は現在のセッションにフォールバックして明示し、空のレポートは生成しません。
- 30 セッションごとの自動トリガー:Phase 2(Stop-hook とカウンターが必要)であり、このスキルには含まれません。
参考 — 参考資料(コミュニティ — 2026-06-11 時点の主張)
| リポジトリ | 活用できる点 |
|---|---|
| BayramAnnakov/claude-reflect | correction(「no, use X」「remember:」)を検出する正規表現、キュー → 2 段階レビュー、グローバルとプロジェクトの CLAUDE.md の振り分け、/reflect-skills による繰り返しパターンの検出とスキル化 |
| haddock-development/claude-reflect-system | セッション終了時に自動実行する Stop-hook(30 セッションごとの自動トリガーである Phase 2 の参考例)、スキル横断のベストプラクティス抽出 |
| netresearch/claude-coach-plugin | 摩擦の検出 — 改善シグナルとして permission prompt/retry loop の数をカウント |
| robonuggets/skills — calibrate | セッション内での自己改善:現在の会話をレビューし、スキル/メモリーの意図的な修正を提案 |
| a-c-m reflection.md gist | 最小限の 1 ファイル版 — このスキルを簡潔に保ち、過剰な設計を避ける |
起源
- Raw:
llmwiki/raw/evalution-engineering.md - Draft:
wiki/draft/orca/110626-orca-eval-skill.md
コメント
Markdown 対応