skill-optimizer について
skill-optimizerは、パッチ提案と検証、採用判定を繰り返して既存のSKILL.mdをオフラインで改善するスキルです。学習データが蓄積したスキルを対象とし、予算上限を設定できます。
主な機能
- 01パッチの反復提案と選定
- 02検証に基づく候補の採用判定
- 03予算上限と実行制限の設定
- 04失敗パッチの却下記録
- 05実行データのSQLite保存
活用シーン
- 01learn-ruleデータが蓄積したスキルの改善
- 02重複または肥大化したルールの整理
- 03固定予算内でのスキル改善実行
MCP 対応
プラグインセッションでは、`providers` MCPサーバーの`run_provider_task`ツールを`task: "optimizer"`で実行できます。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ rohitg00/ pro-workflow --skill skill-optimizerインストール後、Claude Code で/skill-optimizerを入力して読み込まれたか確認します。
詳細
スキルオプティマイザー
既存の SKILL.md を、ディープラーニングのオプティマイザーが重みを学習するように訓練します。ロールアウト、勾配に似た振り返り、検証を通過した候補の採用によって行います。モデルの再訓練は行わず、スキルの Markdown のみを変更します。
使用するタイミング
次の場合にこのスキルを使用します。
- プロワークフローのスキルに、学習ルールの行が8件以上蓄積されている
- ユーザーがスキルの「肥大化」や「ルールの繰り返し」を報告している
- ユーザーが、複数のセッションにわたるオフラインでの、予算上限付きの改善を希望している
次の場合は使用しないでください。
- スキルの軌跡が8件未満である(学習材料がありません)
- ユーザーがリアルタイムでの編集を希望している(これはオフラインで一度だけ実行します)
- 選択したプロバイダーに対して、キーが明示的に設定されていない
アーキテクチャ(SkillOpt の6段階ループを反映)
rollout pull recent learnings from SQLite (existing learn-rule rows)
reflect optimizer LLM analyzes a minibatch, proposes add/delete/replace patches
aggregate vote-merge patches across minibatches
select clip by LR budget (default: 3 adds, 2 deletes, 3 replaces per step)
update apply selected patches to a candidate skill content
evaluate evaluator LLM scores candidate against held-out validation items
gate accept candidate only if weighted score >= current + acceptThreshold
slow update at epoch boundary, consolidate accepted edits into a coherent rewrite
失敗した候補は却下バッファーに保存され、次の振り返りステップにフィードバックされます。これにより、オプティマイザーが同じパッチを再提案するのを防ぎます。
実行方法
プラグインのセッションで、providers MCP サーバーの run_provider_task ツールを使用し、task: "optimizer" と args: ["--slug", "<slug>", "--budget-usd", "0.50"] を指定します。キーはプラグインの設定ダイアログから取得します。スタンドアロンの CLI インストールでは、PRO_WORKFLOW_*_API_KEY 変数を明示的に使用します。プロバイダーの設定を参照してください。チャットでキーを要求したり、既存のマシン認証情報を取得したりしないでください。
/skill-optimize <slug> [options]
オプション(すべて任意。デフォルト値は妥当な値に設定されています)。
| フラグ | デフォルト | 説明 |
|---|---|---|
--epochs N | 3 | 外側ループの回数 |
--batch-size N | 8 | ミニバッチあたりの軌跡数 |
--minibatches N | 2 | エポックあたりのミニバッチ数 |
--holdout N | 6 | 検証用に確保する項目数(軌跡の最大約25%) |
--budget-usd X | 0.50 | 上限。消費額が上限に達するとループを中断 |
--optimizer-model M | claude-sonnet-5 | 振り返りとスローアップデートに使用するモデル |
--evaluator-model M | claude-haiku-4-5 | ゲート用モデル(低コスト) |
--max-adds N | 3 | ステップあたりの学習ルール追加上限 |
--max-deletes N | 2 | |
--max-replaces N | 3 | |
--accept-threshold X | 0.0 | 候補の採用に必要な最小スコア差分 |
--max-skill-tokens N | 2000 | 候補の長さの上限 |
--slow-every N | 2 | 統合パスの間隔(エポック数) |
--json | オフ | 機械可読な出力 |
停止スイッチ:touch ~/.pro-workflow/STOP を実行すると、ステップ間でループを中断します。
出力
- 候補が採用される → SKILL.md を上書きし、HTML コメントにハッシュスタンプを追記
- 実行の詳細は
optimization_runs、optimization_candidates、optimization_patches、optimization_rejectionsに保存されます - 検証セットは
optimization_validationに保存され、以降の実行でも再利用できます
実行後に確認するには:
sqlite3 ~/.pro-workflow/data.db "SELECT id, skill_slug, initial_score, best_score, accepted_steps, rejected_steps, spent_usd FROM optimization_runs ORDER BY id DESC LIMIT 5"
ルール
- 検証セットは実行開始時に固定されます。実行中に新たな修正から再導出しないでください。
- 各ステップで候補は1つだけです。並列ブランチは使用しません。
- スローアップデートの出力自体も候補です。最良の候補を置き換えるには、ゲートを通過する必要があります。
- オプティマイザーの LLM と評価器の LLM には、異なるモデルを使用できます。強力なオプティマイザーと低コストの評価器の組み合わせが、SkillOpt 推奨の構成です。
- いずれかのステップ境界で
spent_usd >= budget_usdとなった場合、stopped_reason="budget exhausted"でループが終了します。 - アンカーがスキル内に存在しなくなったパッチ(同じステップの先行パッチによって削除された場合)は、理由
anchor_missingとともに却下として記録されます。
出典
Microsoft SkillOpt(arXiv:2605.23904)に着想を得ています。6段階のロールアウト/振り返り/集約/選択/更新/評価のパイプライン、学習ルールの予算、却下バッファー、スロー更新およびメタ更新の仕組みは、pro-workflow の既存の SQLite +学習ルールのデータプレーンに合わせて採用されています。SkillOpt のコードは再利用していません。「ReflACT」は SkillOpt の用語ではなく、ここでは使用しません。このループは各段階の名称のみで呼びます。