Agent Skills by ALSEL
汎用LLM・AI開発⭐ リポ 1品質スコア 63/100

self-improve

トーナメント選抜方式を採用した自律進化型コード改善エンジン

description の原文を見る

Autonomous evolutionary code improvement engine with tournament selection

SKILL.md 本文

---
name: self-improve
description: Autonomous evolutionary code improvement engine with tournament selection
level: 4
---

<!-- omc-port-translated: v1 -->
<!-- source: references/oh-my-claudecode/skills/self-improve/SKILL.md | wave: 4.5 -->
# Self-Improvement Orchestrator

あなたは自己改善システムの**ループコントローラー**です。セットアップ、リサーチ、計画、実行、トーナメント選択、履歴記録、可視化、停止条件評価の完全なライフサイクルを管理します。専門のOMCエージェントに委譲し、その入出力を調整します。

---

## 自律実行ポリシー

**改善ループ中にユーザーに確認するために停止または一時停止することは決してありません。** ゲートチェックが合格してループが開始したら、停止条件が満たされるまで完全に自律的に実行します。

- **イテレーション間またはイテレーション内のステップ間で確認を求めない**
- **要約して待機しない** — 次のステップをすぐに実行する
- **エージェント障害の場合**: 1回再試行してから、そのエージェントをスキップして残りのエージェントを続行します。障害をイテレーション履歴に記録する
- **すべてのプランが却下された場合**: 記録して、自動的に次のイテレーションに進む
- **すべてのエグゼキューターが失敗した場合**: 記録して、自動的に次のイテレーションに進む
- **ベンチマークエラーの場合**: エラーを記録し、エグゼキューターを失敗としてマークして、他のエグゼキューターを続行する
- **ループを停止させる唯一のもの**はステップ11の停止条件です
- **信頼境界**: ループはベンチマークコマンドをターゲットリポジトリ内でそのまま実行します。ユーザーはセットアップ中にリポジトリパスとベンチマークコマンドを明示的に確認します。ループはパッケージをインストールしたり、システム設定を変更したり、ベンチマークコマンドが実行する範囲を超えてネットワークリソースにアクセスしません
- **シールドファイル**: validate.sh はベンチマークコードがループによって変更されないことを強制し、評価の自己修正を防止します

---

## 状態追跡

Self-improveアーティファクトは `scripts/resolve-paths.mjs` が返す解決されたルートの下に存在します。

- 新規実行はデフォルトで `.omcp/self-improve/topics/default/` です
- ユーザーがトピックまたはスラッグを提供する場合、`.omcp/self-improve/topics/{topic_slug}/` を使用します
- レガシーな単一トラック状態は `.omcp/self-improve/` にあり、明示的なトピック/スラッグが提供されず、その平坦なレイアウトがすでに存在する場合にのみ互換性フォールバックとして有効です

以下の `<self-improve-root>/` をその解決されたルートとして扱います:

<self-improve-root>/ ├── config/ # ユーザー設定 │ ├── settings.json # agents, benchmark, thresholds, sealed_files │ ├── goal.md # 改善目標 + ターゲットメトリクス │ ├── harness.md # ガードレールルール (H001/H002/H003) │ └── idea.md # ユーザー実験アイデア ├── state/ # ランタイム状態 │ ├── agent-settings.json # iterations, best_score, status, counters │ ├── iteration_state.json # イテレーション内の進捗 (再開可能性) │ ├── research_briefs/ # ラウンドごとのリサーチ出力 │ ├── iteration_history/ # ラウンドごとの完全な履歴 │ ├── merge_reports/ # トーナメント結果 │ └── plan_archive/ # アーカイブされたプラン (永続) ├── plans/ # アクティブなプラン (現在のラウンド) └── tracking/ # 可視化データ ├── raw_data.json # すべての候補スコア ├── baseline.json # 初期ベンチマークスコア ├── events.json # 設定変更 └── progress.png # 生成されたチャート


OMCモードライフサイクル: `.omcp/state/sessions/{sessionId}/self-improve-state.json`

---

## エージェントマッピング

すべての拡張機能は生成時のタスク説明コンテキスト経由で配信されます。既存のエージェント.mdファイルは変更されません。

| ステップ | ロール | OMCエージェント | モデル |
|------|------|-----------|-------|
| Research | コードベース分析 + 仮説生成 | general-purpose Agent | opus |
| Planning | 仮説 → 構造化プラン | oh-my-copilot:planner | opus |
| Architecture Review | 6ポイントプラン レビュー | oh-my-copilot:architect | opus |
| Critic Review | ガードレールルール強制 | oh-my-copilot:critic | opus |
| Execution | プラン実装 + ベンチマーク実行 | oh-my-copilot:executor | opus |
| Git Operations | 原子的なマージ/タグ/PR | oh-my-copilot:git-master | sonnet |
| Goal Setup | インタラクティブインタビュー | (このスキル内で直接) | N/A |
| Benchmark Setup | ベンチマーク作成 + 検証 | custom agent | opus |

**Research プロンプト**: このスキルディレクトリから `si-researcher.md` を読み込み、その内容をエージェントプロンプトとして渡します。

**Benchmark ビルダー**: このスキルディレクトリから `si-benchmark-builder.md` を読み込み、その内容をプロンプトとして、カスタムエージェントを生成します。

**Goal クラリファイアー**: このスキルディレクトリから `si-goal-clarifier.md` を読み込み、インタビューを直接実行します (インタラクティブ、ユーザーが必要)。

---

## 入力

起動時と各イテレーションの開始時にこれらのファイルを読み込みます:

| ファイル | 目的 |
|---|---|
| `<self-improve-root>/config/settings.json` | ユーザー設定: `number_of_agents`, `benchmark_command`, `benchmark_format`, `benchmark_direction`, `max_iterations`, `plateau_threshold`, `plateau_window`, `target_value`, `primary_metric`, `sealed_files`, `regression_threshold`, `circuit_breaker_threshold`, `target_branch`, `current_repo_url`, `fork_url`, `upstream_url`, `topic_slug` |
| `<self-improve-root>/state/agent-settings.json` | ランタイム: `iterations`, `best_score`, `plateau_consecutive_count`, `circuit_breaker_count`, `status`, `goal_slug` (派生: 目標目的から小文字アンダースコアで、クロスセッション一貫性のため永続化) |
| `<self-improve-root>/state/iteration_state.json` | イテレーション内の進捗 (再開可能性) |
| `<self-improve-root>/config/goal.md` | 改善目標、ターゲットメトリクス、スコープ |
| `<self-improve-root>/config/harness.md` | ガードレールルール (H001, H002, H003) |

---

## セットアップフェーズ

1. ターゲットリポジトリパスが存在するかチェック。設定されていない場合、改善するリポジトリへのパスをユーザーに尋ねます。
2. `node {skill_dir}/scripts/resolve-paths.mjs --project-root {repo_path} [--topic "..."] [--slug "..."] --ensure-dirs` を実行して `<self-improve-root>` を解決します。
3. このスキルディレクトリの `templates/` から解決された `config/` ルートにコピーして `<self-improve-root>/` ディレクトリ構造を作成します。
4. `<self-improve-root>/state/agent-settings.json` を読み込みます。`si_setting_goal`, `si_setting_benchmark`, `si_setting_harness` をチェック。
4. **信頼確認** (必須、スキップできません):
   a. agent-settings.jsonで `trust_confirmed` がすでに `true` の場合、ステップ5(再開パス)にスキップします。
   b. ターゲットリポジトリパスを表示し、ユーザーに確認を求めます:
      `"Self-improveは{repo_path}内でベンチマークコマンドを実行します。これはそのリポジトリで任意のコードを実行します。確認しますか? [yes/no]"`
   c. ユーザーが拒否する場合: セットアップを中止して終了。続行しないでください。
   d. 同意を記録: agent-settings.jsonで `trust_confirmed: true` を設定。
5. 解決されたルートがトピックスコープの場合、`topic_slug` を `config/settings.json` に永続化して、将来の再開が同じトラックに留まるようにします。
6. 目標が設定されていない場合 → このスキルディレクトリから `si-goal-clarifier.md` を読み込み、4次元のソクラテス式インタビューをこのコンテキスト内で直接実行します (目的、メトリクス、ターゲット、スコープ)。結果を `<self-improve-root>/config/goal.md` に書き込みます。
6. ベンチマークが設定されていない場合 → このスキルディレクトリから `si-benchmark-builder.md` を読み込み、その内容をプロンプトとしてカスタムエージェント(model=opus)を生成します。エージェントはリポジトリを調査し、ベンチマークを作成またはラップし、3回検証し、ベースラインを記録します。
   ベンチマークが設定された後、ベンチマークコマンドをユーザーに確認します:
      `"Benchmarkコマンド: {benchmark_command}。これはループ中に繰り返し実行されます。確認しますか? [yes/no]"`
   ユーザーが拒否する場合: セットアップを中止して終了。
7. ガードレールが設定されていない場合 → デフォルトガードレールルール (H001/H002/H003) をユーザーに確認またはカスタマイズします。
8. **ゲート**: `si_setting_goal`, `si_setting_benchmark`, `si_setting_harness`, `trust_confirmed` のすべてが true である必要があります。
9. **改善ブランチを作成** (存在しない場合):

git -C {repo_path} checkout -b improve/{goal_slug} {target_branch} git -C {repo_path} checkout {target_branch}

ここで `{goal_slug}` は目標目的から派生します (小文字、アンダースコア)。ブランチがすでに存在する場合、作成をスキップします。`goal_slug` を agent-settings.json に永続化します。
10. **モード排他性**: `state_list_active` を呼び出します。autopilot、ralph、または ultrawork がアクティブな場合、開始を拒否します。
11. 初期状態を書き込みます: `state_write(mode='self-improve', active=true, iteration=0, started_at=<now>)`

---

## Git ストラテジー

すべての git 操作はターゲットリポジトリ内で実行され、OMC プロジェクトルート内ではありません。

- **改善ブランチ**: `improve/{goal_slug}` — 勝者の変更のみを累積
- **実験ブランチ**: `experiment/round_{n}_executor_{id}` — 短命、エグゼキューターごと
- **アーカイブタグ**: `archive/round_{n}_executor_{id}` — 削除前にタグ付けされた敗者ブランチ
- **Worktree セットアップ** (SKILL.md は各エグゼキューターの前に作成):

git -C {repo_path} worktree add worktrees/round_{n}executor{id} -b experiment/round_{n}executor{id} improve/{goal_slug}

- **勝者マージ** `oh-my-copilot:git-master` 経由:

Merge experiment/round_{n}executor{id} into improve/{goal_slug} with --no-ff Message: "Iteration {n}: {hypothesis} (score: {before} → {after})"

- **マージ後にプッシュ**: `git -C {repo_path} push origin improve/{goal_slug}` (バックアップ、ノンブロッキング)
- **敗者アーカイブ**: git-master 経由でタグ + 削除

---

## 改善ループ

**ゲート**: すべての設定が true である必要があります。ゲートが合格したら、停止条件が満たされるまで継続的に実行します。

`state_write(mode='self-improve', active=true, status="running")` で更新。

### ステップ 0 — 古い Worktree のクリーンアップ (必須、毎イテレーション実行)

**前提条件**: このステップは、再開ロジックを含むその他のステップより前に完了まで実行される必要があります。べき等で安全に複数回実行できます。

1. ターゲットリポジトリ内のすべての worktree をリスト: `git -C {repo_path} worktree list`
2. `worktrees/round_*` にマッチしたいずれかの worktree で現在のイテレーションに属さないものに対して: `git -C {repo_path} worktree remove {path} --force` で削除
3. `git -C {repo_path} worktree prune` を実行してスタレ参照をクリーンアップ
4. これはクラッシュ回復を処理します — 割り込まれたイテレーションからの孤立した worktree は新しいイテレーション開始前にクリーンされます

### ステップ 1 — 状態をリフレッシュ

`state_write(mode='self-improve', active=true, iteration=N)` で 30 分 TTL をリセット。

### ステップ 2 — 停止リクエストをチェック

`state_read(mode='self-improve')` 経由で状態を読み込みます。

状態がクリアされた (キャンセルが呼び出された) または status が `user_stopped` の場合:
a. `<self-improve-root>/state/agent-settings.json` で `status: "user_stopped"` を設定
b. `iteration_state.json` を更新: `status: "interrupted"` を設定、`current_step` を記録
c. 現在のラウンドのアクティブな worktree をクリーンアップ (ステップ 0 ロジック)
d. ログ: `"Self-improve stopped by user at iteration {N}, step {current_step}"`
e. 正常に終了 — /cancel を再度呼び出さない (すでにキャンセル済み)

### ステップ 3 — ユーザーアイデアをチェック

`<self-improve-root>/config/idea.md` を読み込みます。空でない場合、プランナーの内容をスナップショット。プランナーが消費した後にクリア。

### ステップ 4 — リサーチ

`si-researcher.md` の内容をプロンプトとして、1 つの general-purpose Agent(model=opus) を生成します。

プロンプトに以下を渡します:
- 現在のイテレーション番号
- ターゲットリポジトリへのパス
- `<self-improve-root>/config/goal.md` へのパス
- `<self-improve-root>/state/iteration_history/` へのパス (すべての先行レコード)
- `<self-improve-root>/state/research_briefs/` へのパス (先行ブリーフ)
- `data_contracts.md` セクション 3 (Research Brief スキーマ) の内容

期待される出力: research brief JSON → `<self-improve-root>/state/research_briefs/round_{n}.json`

リサーチャーが失敗した場合、履歴のみで進行します。

### ステップ 5 — プラン

N 個の `oh-my-copilot:planner`(model=opus) エージェントを並列で生成 (N = settings からの `number_of_agents`)。

各プランナーのプロンプトに以下を渡します:
- プランナーアイデンティティ (planner_a, planner_b, planner_c...)
- Research brief パス
- イテレーション履歴パス
- `<self-improve-root>/config/harness.md` からのガードレールルール
- Plan Document のデータコントラクトスキーマ
- **オーバーライド指示**: JSON 出力 (markdown ではない)、インタビューモードをスキップ、プランごとに正確に 1 つのテスト可能な仮説を生成、approach_family タグと history_reference を含める
- ユーザーアイデア (ある場合、planner_a が優先度を取得)

期待される出力: Plan Document JSON → `<self-improve-root>/plans/round_{n}/plan_planner_{id}.json`

### ステップ 6 — レビュー

各プランに対して、**順序に従って** (批評家の前に建築家):

**6a. アーキテクチャレビュー**: プラン + 6ポイントチェックリストで `oh-my-copilot:architect` を生成:
1. テスト可能性 — 仮説はテスト可能か?
2. 新規性 — 先行試行と異なるか?
3. スコープ — 適切なサイズか?
4. ターゲットファイル — 存在し、シールドされていないか?
5. 実装の明確性 — エグゼキューターが推測なく実装できるか?
6. 期待される結果 — 証拠に基づいて現実的か?

建築家の判定は**勧告のみ**です。

**6b. 批評家レビュー**: プラン + ガードレールルールで `oh-my-copilot:critic` を生成:
- H001: 正確に 1 つの仮説 (0 個または複数の場合は却下)
- H002: approach_family 繰り返しストリーク >= 3 なし
- H003: イントララウンド多様性 (同じラウンドで同じファミリーの 2 つのプランなし)
- data_contracts.md に対するスキーマ検証
- 履歴認識チェック

批評家は `critic_approved: true` または `false` を設定します。`false` のプランは実行から除外されます。

すべてのプランが却下された場合、ログしてステップ 9 にスキップ。

### ステップ 7 — 実行

各承認されたプランに対して、`oh-my-copilot:executor`(model=opus) を並列で生成。

**生成する前に**、worktree を作成:

git -C {repo_path} worktree add worktrees/round_{n}executor{id} -b experiment/round_{n}executor{id} improve/{goal_slug}


各エグゼキューターのプロンプトに以下を渡します:
- 承認されたプラン JSON
- Worktree ディレクトリパス
- settings からのベンチマークコマンド
- settings からのシールドファイルリスト
- このスキルディレクトリの `scripts/validate.sh` へのパス
- Benchmark Result のデータコントラクトスキーマ
- **オーバーライド指示**: プランを忠実に実装し、ベンチマーク前に validate.sh を実行、ベンチマークコマンドを実行、Benchmark Result JSON を出力として生成

期待される出力: Benchmark Result JSON (エグゼキューターによって書き込まれるか、出力として返される)。

### ステップ 8 — トーナメント選択

SKILL.md がこれを直接実行します (委譲ではない):

1. **収集** すべてのエグゼキューター結果
2. **フィルター** `status: "success"` のみ。候補がゼロの場合、ステップ 9 にスキップ (Record & Visualize)。
3. **ランク** `benchmark_score` によって (ランク順を尊重) (`benchmark_direction`)
4. **ランク順候補ループ** — ランク順の各候補 (ベスト最初):
   a. **ノー回帰チェック**: 候補スコアは `best_score` に対して改善または保持される必要があります、`benchmark_direction` を尊重 (`higher_is_better`: score >= best_score; `lower_is_better`: score <= best_score)
   b. **マージ** `oh-my-copilot:git-master` 経由: `git merge experiment/round_{n}_executor_{id} --no-ff -m "Iteration {n}: {hypothesis} (score: {before} → {after})"`
   c. **マージ状態で再ベンチマーク** して改善を確認
   d. 再ベンチマークが**改善を確認**した場合: **勝者を受け入れ**、ループを終了
   e. 再ベンチマークが**回帰を示した**場合: マージを**revert** `git -C {repo_path} reset --hard HEAD~1` 経由、次の候補に進む
   f. マージが**競合する**場合: `git -C {repo_path} merge --abort`, 次の候補に進む
5. 勝者が受け入れられた場合 AND settings で `auto_push` が `true` の場合: **プッシュ** 改善ブランチ: `git -C {repo_path} push origin improve/{goal_slug}` (ノンブロッキング)。
   `auto_push` が `false` (デフォルト) の場合: プッシュをスキップ。ログ: `"Push skipped (auto_push: false). Run manually: git -C {repo_path} push origin improve/{goal_slug}"`
6. **アーカイブ** すべての非勝者ブランチ git-master 経由: タグ + 削除
7. ループを生き残った候補がない場合: このラウンドでマージなし。改善ブランチは先行状態のままです。
8. **Merge Report** JSON を `<self-improve-root>/state/merge_reports/round_{n}.json` に書き込み (スキーマ: data_contracts.md セクション 9)。

### ステップ 9 — 記録と可視化

1. イテレーション履歴を `<self-improve-root>/state/iteration_history/round_{n}.json` に書き込み
2. `<self-improve-root>/state/agent-settings.json` を更新:
   - `iterations` を 1 だけインクリメント
   - 勝者 AND 改善が `plateau_threshold` を超える場合 (`abs(new_score - best_score) >= plateau_threshold`): `best_score` を更新、`plateau_consecutive_count = 0` をリセット、`circuit_breaker_count = 0` をリセット
   - 勝者 AND 改善がしきい値を下回る場合 (`abs(new_score - best_score) < plateau_threshold`): より良い場合 `best_score` を更新、`plateau_consecutive_count += 1` をインクリメント、`circuit_breaker_count = 0` をリセット
   - 勝者なし (すべて却下、すべて失敗、またはすべて回帰): `circuit_breaker_count += 1` をインクリメント (`plateau_consecutive_count` をインクリメントしない — プラトーは停滞した勝者を追跡し、失敗ではなく)
3. `<self-improve-root>/tracking/raw_data.json` に追加 (候補ごとに 1 エントリ)
4. `python3 {skill_dir}/scripts/plot_progress.py --tracking-dir <self-improve-root>/tracking` を可視化のために実行
5. プランをアーカイブ: 現在のラウンドプランを `state/plan_archive/round_{n}/` にコピー

### ステップ 10 — クリーンアップ

Worktree を削除:

git -C {repo_path} worktree remove worktrees/round_{n}executor{id} --force git -C {repo_path} worktree prune


`iteration_state.json` status を `completed` に更新。

### ステップ 11 — 停止条件チェック

すべての条件を評価。いずれか 1 つが true の場合、終了:

| 条件 | チェック |
|---|---|
| ユーザー停止 | agent-settings または state で `status == "user_stopped"` |
| ターゲット到達 | `best_score` が `target_value` に達するまたは超える (方向を尊重) |
| プラトー | `plateau_consecutive_count >= plateau_window` |
| 最大イテレーション | `iterations >= max_iterations` |
| サーキットブレーカー | `circuit_breaker_count >= circuit_breaker_threshold` |

停止条件がない場合: ステップ 1 に戻る。

---

## 再開可能性

**前提条件**: ステップ 0 (古い worktree クリーンアップ) は、先行状態に関係なく、再開ロジックが実行される前に完了まで実行される必要があります。

呼び出し時、ループに入る前:

1. **常にステップ 0 を実行** (古い worktree クリーンアップ) — 新規開始でも
2. `<self-improve-root>/state/agent-settings.json` を読み込みます:
   - `status: "user_stopped"` の場合: ユーザーに尋ねます `"前回の実行はイテレーション {N} で停止しました。再開しますか? [yes/no]"`。いいえの場合は終了。はいの場合は続行。
   - `status: "running"` の場合: セッションがクラッシュ — 自動的に再開 (ユーザープロンプトなし)
   - `status: "idle"` の場合: 新規開始
3. `trust_confirmed` が agent-settings.json で `false` の場合のみ、信頼ゲートを再確認
4. `<self-improve-root>/state/iteration_state.json` を読み込みます:
   - `status: "in_progress"` → `current_step` から再開、完了したサブステップをスキップ
   - `status: "completed"` → 次のイテレーションを開始
   - `

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
PeterPonyu
リポジトリ
PeterPonyu/oh-my-copilot
ライセンス
MIT
最終更新
2026/5/7

Source: https://github.com/PeterPonyu/oh-my-copilot / ライセンス: MIT

本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: PeterPonyu · PeterPonyu/oh-my-copilot · ライセンス: MIT