Communitygithub.com

自己改善オーケストレータ

トーナメント選択を用いた自律的な進化的コード改善エンジン。目標設定から研究、計画、実行、評価までを完全自動ループで実行します。

自己改善オーケストレータ とは?

Self-Improvement Orchestratorは、AIエージェントが自律的にコードベースを改善するためのトーナメント選択ベースの進化的ループです。ユーザーは目標とベンチマークを設定するだけで、システムは研究エージェントが仮説を生成し、プランナーが実装計画を作成し、アーキテクトと批評家がレビューし、エグゼキュータが並行して実装・評価を行い、最も優れた変更を選択してメイン分岐にマージします。このスキルは、Claude CodeやCursor、CodexなどのAIエージェントプラットフォームで動作し、設定された停止条件(最大イテレーション数、プラトー検出、目標値達成など)が満たされるまで自動的に改善を繰り返します。トーナメント選択により、最高スコアの変更のみが採用されるため、品質が保証されます。また、ベンチマークコードは封印され、評価の自己改変を防ぐ仕組みも備えています。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Yeachan-Heo/oh-my-claudecode/tree/main/skills/self-improve

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

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

ドキュメント

自己改善オーケストレータ は何をしますか?

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


自律実行ポリシー

改善ループ中は、決してユーザーに問い合わせたり、一時停止したりしてはいけません。ゲートチェックを通過してループが開始されたら、停止条件が満たされるまで完全に自律的に実行します。

  • イテレーション間やイテレーション内のステップ間で確認を求めないでください。
  • 要約して待機せず、次のステップを即座に実行してください。
  • エージェント障害時: 1回再試行し、それでも失敗したらそのエージェントをスキップし、残りのエージェントで続行します。イテレーション履歴に失敗を記録します。
  • すべての計画が拒否された場合: 記録し、自動的に次のイテレーションに進みます。
  • すべての実行者が失敗した場合: 記録し、自動的に次のイテレーションに進みます。
  • ベンチマークエラー時: エラーを記録し、その実行者を失敗としてマークし、他の実行者で続行します。
  • ループを停止する唯一の条件は、ステップ11の停止条件です。
  • 信頼境界: ループはターゲットリポジトリ内でベンチマークコマンドをそのまま実行します。ユーザーはセットアップ時にリポジトリパスとベンチマークコマンドを明示的に確認します。ループはパッケージのインストール、システム設定の変更、またはベンチマークコマンドが行う以上のネットワークリソースへのアクセスを行いません。
  • 封印ファイル: validate.shは、ループがベンチマークコードを変更できないように強制し、評価の自己改変を防ぎます。

状態管理

self-improveの成果物は、scripts/resolve-paths.mjsによって解決されたルートの下に配置されます。

  • 新しい実行はデフォルトで.omc/self-improve/topics/default/に置かれます。
  • ユーザーがトピックやスラッグを指定した場合は、.omc/self-improve/topics/{topic_slug}/を使用します。
  • レガシーな単一トラック状態.omc/self-improve/は、トピックやスラッグが指定されておらず、そのフラットなレイアウトがすでに存在する場合のみ、互換性のためのフォールバックとして有効です。

以下では<self-improve-root>/を解決済みのルートとします:

<self-improve-root>/
├── config/                    # ユーザー設定
│   ├── settings.json          # エージェント、ベンチマーク、閾値、封印ファイル
│   ├── goal.md                # 改善目標+ターゲット指標
│   ├── harness.md             # ガードレールルール (H001/H002/H003)
│   └── idea.md                # ユーザーの実験アイデア
├── state/                     # 実行時状態
│   ├── agent-settings.json    # イテレーション数、最高スコア、ステータス、カウンタ
│   ├── iteration_state.json   # イテレーション内の進捗(再開可能性)
│   ├── research_briefs/       # ラウンドごとの研究出力
│   ├── iteration_history/     # ラウンドごとの完全な履歴
│   ├── merge_reports/         # トーナメント結果
│   └── plan_archive/          # アーカイブされた計画(永続)
├── plans/                     # アクティブな計画(現在のラウンド)
└── tracking/                  # 可視化データ
    ├── raw_data.json          # すべての候補スコア
    ├── baseline.json          # 初期ベンチマークスコア
    ├── events.json            # 設定変更
    └── progress.png           # 生成されたチャート

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


エージェントマッピング

すべての拡張は、起動時にタスク説明コンテキストとして提供されます。既存のエージェント.mdファイルは変更しません。

ステップ役割OMCエージェントモデル
研究コードベース分析+仮説生成general-purpose Agentopus
計画仮説→構造化計画oh-my-claudecode:planneropus
アーキテクチャレビュー6項目計画レビューoh-my-claudecode:architectopus
批評家レビューガードレールルールの強制oh-my-claudecode:criticopus
実行計画の実装+ベンチマーク実行oh-my-claudecode:executoropus
Git操作アトミックマージ/タグ/PRoh-my-claudecode:git-mastersonnet
目標設定インタラクティブインタビュー(このスキル内で直接)N/A
ベンチマーク設定ベンチマークの作成+検証カスタムエージェントopus

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

ベンチマークビルダー: このスキルディレクトリからsi-benchmark-builder.mdを読み込み、その内容をエージェントプロンプトとして渡します。

目標明確化: このスキルディレクトリから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. <self-improve-root>を解決するために、node {skill_dir}/scripts/resolve-paths.mjs --project-root {repo_path} [--topic "..."] [--slug "..."] --ensure-dirsを実行します。
  3. このスキルディレクトリのtemplates/から解決されたconfig/ルートにディレクトリ構造をコピーして、<self-improve-root>/ディレクトリ構造を作成します。
  4. <self-improve-root>/state/agent-settings.jsonを読み込みます。si_setting_goal、si_setting_benchmark、si_setting_harnessを確認します。
  5. 信頼確認(必須、スキップ不可): a. agent-settings.jsonでtrust_confirmedがすでにtrueの場合、ステップ5にスキップします(再開パス)。 b. ターゲットリポジトリパスを表示し、ユーザーに確認を求めます: "自己改善は {repo_path} 内でベンチマークコマンドを実行します。これにより、そのリポジトリ内で任意のコードが実行されます。確認しますか? [yes/no]" c. ユーザーが拒否した場合: セットアップを中止して終了します。続行しないでください。 d. 同意を記録: agent-settings.jsonでtrust_confirmed: trueを設定します。
  6. 解決されたルートがトピックスコープの場合、topic_slugをconfig/settings.jsonに永続化し、将来の再開が同じトラックに留まるようにします。
  7. 目標が設定されていない場合→このスキルディレクトリからsi-goal-clarifier.mdを読み込み、このコンテキストで直接4次元ソクラテスインタビュー(目標、指標、ターゲット、スコープ)を実行します。結果を<self-improve-root>/config/goal.mdに書き込みます。
  8. ベンチマークが設定されていない場合→このスキルディレクトリからsi-benchmark-builder.mdを読み込み、その内容をプロンプトとしてカスタムエージェント(model=opus)を起動します。エージェントはリポジトリを調査し、ベンチマークを作成またはラップし、3回検証し、ベースラインを記録します。 ベンチマークが設定された後、ユーザーにベンチマークコマンドを確認します: "ベンチマークコマンド: {benchmark_command}。これはループ中に繰り返し実行されます。確認しますか? [yes/no]" ユーザーが拒否した場合: セットアップを中止して終了します。
  9. ハーネスが設定されていない場合→デフォルトのハーネスルール(H001/H002/H003)をユーザーに確認するか、カスタマイズします。
  10. ゲート: si_setting_goal、si_setting_benchmark、si_setting_harness、trust_confirmedのすべてがtrueでなければなりません。
  11. 改善ブランチを作成(存在しない場合):
    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に永続化します。
  12. モード排他性: state_list_activeを呼び出します。autopilotまたはralphがアクティブな場合、開始を拒否します。
  13. 初期状態を書き込みます: 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} — 敗北したブランチは削除前にタグ付けされます。
  • ワークツリー設定(SKILL.mdが各実行者より前に作成):
    git -C {repo_path} worktree add worktrees/round_{n}_executor_{id} -b experiment/round_{n}_executor_{id} improve/{goal_slug}
    
  • 勝者マージはoh-my-claudecode:git-master経由:
    Merge experiment/round_{n}_executor_{winner_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 — 古いワークツリーのクリーンアップ(必須、毎イテレーション実行)

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

  1. ターゲットリポジトリ内のすべてのワークツリーを一覧表示: git -C {repo_path} worktree list
  2. worktrees/round_*に一致し、現在のイテレーションに属さないワークツリーを削除: git -C {repo_path} worktree remove {path} --force
  3. git -C {repo_path} worktree pruneを実行して、古い参照をクリーンアップします。
  4. これによりクラッシュリカバリが処理されます — 中断されたイテレーションから孤立したワークツリーは、新しいイテレーションが開始される前にクリーンアップされます。

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

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

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

state_read(mode='self-improve')で状態を読み取ります。

状態がクリアされている(キャンセルが呼び出された)場合、またはステータスがuser_stoppedの場合: a. <self-improve-root>/state/agent-settings.jsonでstatus: "user_stopped"を設定します。 b. iteration_state.jsonを更新: status: "interrupted"を設定し、current_stepを記録します。 c. 現在のラウンドのアクティブなワークツリーをクリーンアップします(ステップ0のロジック)。 d. ログ: "ユーザーによりイテレーション {N}、ステップ {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(研究ブリーフスキーマ)の内容

期待される出力: 研究ブリーフJSON → <self-improve-root>/state/research_briefs/round_{n}.json

研究者が失敗した場合、履歴のみで続行します。

ステップ5 — 計画

N個のoh-my-claudecode:planner(model=opus)エージェントを並行して起動します(N = settings.jsonのnumber_of_agents)。

各プランナーのプロンプトに以下を渡します:

  • プランナーID (planner_a, planner_b, planner_c...)
  • 研究ブリーフへのパス
  • イテレーション履歴へのパス
  • <self-improve-root>/config/harness.mdのガードレールルール
  • 計画ドキュメントのデータコントラクトスキーマ
  • オーバーライド手順: JSON(マークダウンではない)を出力し、インタビューモードをスキップし、計画ごとに正確に1つのテスト可能な仮説を生成し、approach_familyタグとhistory_referenceを含めます。
  • ユーザーアイデア(ある場合、planner_aが優先)

期待される出力: 計画ドキュメントJSON → <self-improve-root>/plans/round_{n}/plan_planner_{id}.json

ステップ6 — レビュー

各計画に対して、順次(アーキテクトの前に批評家):

6a. アーキテクチャレビュー: 計画+6項目チェックリストをoh-my-claudecode:architectに渡します:

  1. テスト可能性 — 仮説はテスト可能か?
  2. 新規性 — 以前の試みと異なるか?
  3. スコープ — 適切なサイズか?
  4. ターゲットファイル — 存在するか、封印されていないか?
  5. 実装の明確さ — 実行者が推測せずに実装できるか?
  6. 期待される成果 — 証拠に基づき現実的か?

アーキテクトの判定は助言のみです。

6b. 批評家レビュー: 計画+ガードレールルールをoh-my-claudecode:criticに渡します:

  • H001: 正確に1つの仮説(0または複数の場合は拒否)
  • H002: approach_familyの連続が3以上ないこと
  • H003: ラウンド内多様性(同じラウンドで同じファミリーの計画が2つ以上ないこと)
  • data_contracts.mdに対するスキーマ検証
  • 履歴認識チェック

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

すべての計画が拒否された場合、記録してステップ9にスキップします。

ステップ7 — 実行

承認された各計画に対して、oh-my-claudecode:executor(model=opus)を並行して起動します。

起動前に、ワークツリーを作成します:

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

各実行者に以下のプロンプトを渡します:

  • 承認された計画JSON
  • ワークツリーディレクトリパス
  • settings.jsonのベンチマークコマンド
  • settings.jsonの封印ファイルリスト
  • このスキルディレクトリのscripts/validate.shへのパス
  • ベンチマーク結果のデータコントラクトスキーマ
  • オーバーライド手順: 計画を忠実に実装し、ベンチマーク前にvalidate.shを実行し、ベンチマークコマンドを実行し、出力としてベンチマーク結果JSONを生成します。

期待される出力: ベンチマーク結果JSON(実行者によって書き込まれるか、出力として返されます)。

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

SKILL.mdはこれを直接行います(委譲されません):

  1. すべての実行者結果を収集します。

…[翻訳のため省略]

ステップ9 — マージ

oh-my-claudecode:git-masterを使用して、トーナメントの勝者をimprove/{goal_slug}にマージします。

git -C {repo_path} merge --no-ff experiment/round_{n}_executor_{winner_id}

ステップ10 — 履歴記録

<self-improve-root>/state/iteration_history/round_{n}.jsonに記録します。

ステップ11 — 停止条件の評価

以下の停止条件をチェックします:

  1. 最大イテレーション数に達した場合: 停止。
  2. 目標値に達した場合: 停止。
  3. プラトー検出(連続して改善がない場合): 停止。
  4. 回帰検出(スコアが大幅に低下): 停止。
  5. ユーザーが停止を要求した場合: 停止。

停止条件が満たされていない場合、ステップ0に戻ります。

ステップ12 — クリーンアップ

state_write(mode='self-improve', active=false, status='completed')を設定します。


エラーハンドリング

すべてのエラーはイテレーション履歴に記録され、ループは可能な限り続行します。


設定ファイルのスキーマ

data_contracts.mdを参照してください。

Individual skills in this repo

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

agent-doc-discipline

Writing-time discipline for documents agents consume (the five surfaces, specs, tickets, .omc/skills/) — every rule checkable and carrying a why, steps before reference, one meaning in one home, no restating what the environment already says. Mandatory at drydock seed generation and the launch C5 sediment pass; opt-in for any other agent-facing doc edit. The companion of minimal-code-discipline: that one disciplines code, this one disciplines papers.

ai-slop-cleaner

Clean AI-generated code slop with a regression-safe, deletion-first workflow and optional reviewer-only mode

ask

Process-first advisor routing for Claude, Codex, Gemini, Antigravity, Grok, or Cursor via `omc ask`, with artifact capture and no raw CLI assembly

ask-navigator

Shipyard

autopilot

Full autonomous execution from idea to working code

autoresearch

Stateful single-mission improvement loop with strict evaluator contract, markdown decision logs, and max-runtime stop behavior

cancel

Cancel any active OMC mode (autopilot, ralph, ultragoal, swarm, ultrapilot, pipeline, team) and clean up retired legacy state

configure-notifications

Configure notification integrations (Telegram, Discord, Slack) via natural language

debug

Diagnose the current OMC session or repo state using logs, traces, state, and focused reproduction

deepinit

Deep codebase initialization with hierarchical AGENTS.md documentation

deep-interview

Socratic deep interview with mathematical ambiguity gating before explicit execution approval

drydock

Lay the keel of the shipyard harness in any repo — the 4-pillar shared environment (Context, Rules, Tools, Standards) across 5 surfaces (CLAUDE.md, skills, design-system, mcp/cli, shared context) so that every human and agent inherits the same design language and anyone can ship. Run once per repo; re-run with --check to audit drift.

execute

Carry an approved task through to working, verified code

external-context

Invoke parallel document-specialist agents for external web searches and documentation lookup

graph

Deterministic orchestration graph runtime - declarative DAG pipelines with journal-based crash recovery

harbor

Harbor intake for external work — the captain only handles unresolved decisions. Sweeps incoming issues and PRs, verifies every claim before disposition, reuses every decision already made, and hands the maintainer a docket whose pending items each carry one question with options, recommendation, impact and evidence. Agent-autonomous for facts and for actions covered by standing authorization; signed for every new judgment. Never merges.

hud

Configure HUD display options (layout, presets, display elements)

launch

Shipyard

loft

Loft the shape before cutting steel — answer a design question that prose cannot settle by building a throwaway artifact: a pure logic module in a clickable shell, or structurally different UI variants behind one route. The captain reacts to the artifact; the answer folds into the decision; the artifact never docks. Use when a design question stalls in words, when a navigator map carries a loft ticket, or when a spec discussion reaches

minimal-code-discipline

YAGNI-ladder coding discipline for writing changes — existence-first, reuse before writing, dependency ladder, shortest correct diff, with non-negotiables that must never be minimized away

関連スキル