mcpField
L
ln-811-algorithm-optimizer

ln-811-algorithm-optimizer

github.com/levnikolaevich開発58436 回インストール2 日前に更新
リポジトリ

ln-811-algorithm-optimizer について

ベンチマーク可能なテスト対象関数を、測定を伴う実験で最適化するワーカースキルです。テストに合格し改善基準を満たす変更を採用し、結果を記録します。

主な機能

  1. 01ベンチマークの基準値を設定
  2. 02最適化仮説の作成
  3. 03変更のテストと性能測定
  4. 04試行ごとの採用または破棄
  5. 05実験結果の記録

活用シーン

  1. 01テスト済み関数の実行時間短縮
  2. 02候補となるアルゴリズム変更の比較
  3. 03性能変更をテストで検証
  4. 04レビュー用の最適化実験記録

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/levnikolaevich/claude-code-skills --skill ln-811-algorithm-optimizer

インストール後、Claude Code で/ln-811-algorithm-optimizerを入力して読み込まれたか確認します。

同梱ファイルreferences/benchmark_generation.mdreferences/optimization_categories.md

詳細

パス: ファイルパス(shared/、references/、../ln-*)は、skills リポジトリのルートからの相対パスです。CWD に見つからない場合は、この SKILL.md ディレクトリを探し、1 階層上をリポジトリのルートとして使用してください。

ln-811-algorithm-optimizer

タイプ: L3 ワーカー カテゴリ: 8XX 最適化 親: ln-810-performance-optimization-coordinator

自動リサーチループを通じて対象関数のパフォーマンスを最適化します。ベースラインのベンチマークを確立し、ベストプラクティスを調査し、3~7 個の仮説を生成して、それぞれを適用し、保持/破棄を検証します。


概要

項目詳細
入力target_file + target_function(または ln-650 の監査結果)
出力ベンチマークで効果を実証した最適化済み関数、最適化レポート
パターン自動リサーチ:変更 → ベンチマーク → 保持(≥10%)/破棄

ワークフロー

フェーズ: 事前確認 → ベースライン → 調査 → 仮説の生成 → 最適化ループ → レポート


フェーズ 0:事前確認

確認項目必須見つからない場合の対応
対象ファイルが存在するはい最適化をブロック
対象関数を特定できるはい最適化をブロック
テスト基盤はい最適化をブロック(ci_tool_detection.md を参照)
対象関数のテストカバレッジはいブロック — カバレッジがなければ安全網がありません
Git のクリーンな状態はいブロック(元に戻すためにクリーンなベースラインが必要)
ベンチマーク基盤いいえベンチマークを生成(references を参照)

必ず読み込む: shared/references/ci_tool_detection.md を読み込みます。Benchmarks + Test Frameworks セクションを使用してください。

カバレッジの検証

最適化を開始する前に、対象関数にテストカバレッジがあることを確認します。

手順対応
1テストファイルで対象関数名、または対象モジュールからのインポートを検索する
2対象を参照するテストが 1 件以上ある場合 → 続行
3対象を参照するテストが 0 件の場合 → 「no test coverage for {function}」としてブロック

テストカバレッジがなければ、ベンチマークの改善は意味がありません。最適化された関数が誤った結果をより速く返す可能性があります。

ワークツリーとブランチの分離

必ず読み込む: shared/references/git_worktree_fallback.md を読み込みます。ln-811 の行を使用してください。

すべての作業(編集、ベンチマーク、KEEP コミット)はワークツリー内で行います。メインのワークツリーは決して変更しないでください。


フェーズ 1:ベースラインの確立

手順 1.1:ベンチマークを検出または生成する
状況対応
既存のベンチマークが見つかったそのまま使用
ベンチマークが存在しない最小限のベンチマークを生成(benchmark_generation.md を参照)
手順 1.2:ベースラインを実行する
パラメーター値
実行回数5
指標実行時間の中央値
ウォームアップ1 回実行し、結果を破棄
出力baseline_median、baseline_p95

ベースラインの結果を保存します。すべての改善はこの結果を基準に測定します。


フェーズ 2:ベストプラクティスの調査

必ず読み込む: MCP ツールチェーンについて shared/references/research_tool_fallback.md を読み込みます。

調査戦略
優先度ツールクエリテンプレート
1mcp__context7__query-docs"{language} {algorithm_type} optimization techniques"
2mcp__Ref__ref_search_documentation"{language} {function_name} performance best practices"
3WebSearch"{algorithm_type} optimization {language} benchmark {current_year}"
調査結果

対象関数に適用できる最適化手法を収集します。各手法について、次の点を記録します。

  • 名前と説明
  • 期待される改善のカテゴリ(アルゴリズム計算量、メモリ、キャッシュ、並列処理)
  • 適用条件(データサイズ、構造、言語機能)

フェーズ 3:仮説の生成(3~7 個)

仮説の情報源

必ず読み込む: カテゴリのチェックリストとして optimization_categories.md を読み込みます。

情報源優先度
調査結果(フェーズ 2)1
最適化カテゴリのチェックリスト2
コード分析(対象に含まれるアンチパターン)3
仮説の形式
フィールド説明
idH1、H2、... H7
categoryoptimization_categories.md に記載
description変更内容
expected_impact改善率の推定値(%)
risk低/中/高
dependenciesこの仮説が依存する他の仮説
順序

次の順に並べ替えます:expected_impact DESC, risk ASC。依存関係のない独立した仮説を先にします。


フェーズ 4:最適化ループ(採用/却下)

仮説ごとのサイクル
FOR each hypothesis (H1..H7):
  1. APPLY: Edit target function (surgical change, function body only)
  2. VERIFY: Run tests
     IF tests FAIL (assertion) → DISCARD (revert) → next hypothesis
     IF tests CRASH (runtime error, OOM, import error):
       IF fixable (typo, missing import) → fix & re-run ONCE
       IF fundamental (design flaw, incompatible API) → DISCARD + log "crash: {reason}"
  3. BENCHMARK: Run 5 times, take median
  4. COMPARE: improvement = (baseline - new) / baseline * 100
     IF improvement >= 10% → KEEP:
       git add {target_file}
       git commit -m "perf(H{N}): {description} (+{improvement}%)"
       new baseline = new median
     IF improvement < 10%  → DISCARD (revert edit)
  5. LOG: Record result to experiment log + report
安全ルール
ルール説明
範囲対象関数の本体のみ。シグネチャの変更は禁止
依存関係新しいパッケージのインストールは禁止
元に戻す却下時は git checkout -- {target_file} を実行
時間制限すべての仮説を合わせて合計 30 分
複合各採用案を次の仮説の新しいベースラインにする
追跡可能性採用案ごとに、仮説 ID をメッセージに含めて個別の git コミットを作成
分離すべての作業を分離された worktree で行い、メイン worktree は決して変更しない
採用/却下の判断
条件判断対応
テスト失敗却下元に戻し、理由を記録
改善率 ≥ 10%採用ベースラインを更新
改善率 10~20% だが複雑さが増すレビュー「わずかな改善+複雑化」として記録し、却下を優先
改善率 < 10%却下元に戻し、「改善が不十分」として記録
速度低下却下元に戻し、低下量を記録

シンプルさの基準(autorresearch に準拠): 改善がわずか(10~20%)で、変更によってコードの複雑さが大幅に増す場合(行数が 50% 以上増加、深くネストしたロジック、読みにくい構文など)は、却下を優先します。パフォーマンスがほぼ同等なら、よりシンプルなコードを選びます。


フェーズ 5:結果の報告

レポートのスキーマ
フィールド説明
targetファイルパス+関数名
baseline元のベンチマーク中央値
final採用した最適化をすべて適用した後の最終中央値
total_improvement改善率
hypotheses_testedテストした仮説の合計数
hypotheses_kept採用した最適化の数
hypotheses_discarded却下した数+理由
optimizations[]採用した各項目:id、category、description、improvement%
実験ログ

{project_root}/.optimization/ln-811-log.tsv に書き込みます:

列説明
timestampISO 8601
hypothesis_idH1..H7
categoryoptimization_categories.md に記載
description変更内容
baseline_msこの仮説を試す前のベースライン中央値
result_ms変更後の新しい中央値
improvement_pct変化率
statuskeep / discard / crash
commitGit コミットハッシュ(採用した場合)

既存のファイルがある場合は追記します(複数回の実行にわたる追跡が可能になります)。

クリーンアップ
対応条件
生成されたベンチマークを削除ベンチマークが自動生成され、採用した最適化がない場合
生成されたベンチマークを保持最適化を 1 つでも採用した場合(改善の証拠)

設定

Options:
  # Target
  target_file: ""
  target_function: ""

  # Benchmark
  benchmark_runs: 5
  improvement_threshold: 10    # percent
  warmup_runs: 1

  # Hypotheses
  max_hypotheses: 7
  min_hypotheses: 3

  # Safety
  time_budget_minutes: 30
  allow_new_deps: false
  scope: "function_body"       # function_body | module

  # Verification
  run_tests: true
  run_lint: false

エラー処理

エラー原因解決策
ベンチマークフレームワークがないci_tool_detection.md にスタックの記載がないインラインベンチマークを生成
すべての仮説を却下有効な最適化が見つからない「改善が見つかりませんでした」と報告
ベンチマークのノイズが大きすぎる計測時間が一定しない実行回数を 10 回に増やし、p50 を使用
テストの不安定化テストが非決定的1 回再実行し、再び不安定になった場合は仮説をスキップ

参考資料


完了の定義

  • 最適化の前に、対象関数のテストカバレッジを確認する
  • 対象関数を特定し、ベースラインのベンチマークを確立する(5 回実行し、中央値を採用)
  • MCP ツールチェーン(Context7/Ref/WebSearch)を通じて調査を完了する
  • 仮説を 3~7 件立て、期待される効果の大きい順に並べる
  • 各仮説を検証する:適用 → テスト → ベンチマーク → 採用/破棄
  • 採用した最適化はそれぞれ、仮説 ID を付けた別個の git コミットにする
  • 採用した最適化を積み重ねる(それぞれが新たなベースラインになる)
  • 複雑さが増す一方で効果が小さい(10~20%)場合は、シンプルさの基準に照らして検討する
  • 採用した最適化をすべて適用した後、テストに合格する
  • 実験ログを .optimization/ln-811-log.tsv に記録する
  • ベースライン、最終値、改善率、仮説ごとの結果を含むレポートを返す
  • 最適化を何も採用しなかった場合は、生成したベンチマークを削除する
  • すべての変更を独立したブランチにまとめ、リモートにプッシュする

バージョン: 1.0.0 最終更新日: 2026-03-08

コメント