mcpField
A
autoresearch-finalize

autoresearch-finalize

github.com/davebcn87開発8.2k45 回インストール3 週間前に更新
リポジトリ

autoresearch-finalize について

autoresearch-finalizeは、autoresearchブランチを目的別の独立したブランチに整理するスキルです。保持した実験を論理的な変更ごとに分類し、ファイルの重複や依存関係を確認してから、スクリプトでブランチを作成・検証します。

主な機能

  1. 01保持した実験を変更セットに分類
  2. 02ファイルの重複と依存関係を確認
  3. 03マージベースからブランチを作成
  4. 04統合結果と元ブランチを照合
  5. 05ブランチとクリーンアップ情報を報告

活用シーン

  1. 01長期の実験ブランチをレビューしやすく分割
  2. 02個別に統合できる最適化変更を準備

インストール

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

$npx skills add https://github.com/davebcn87/pi-autoresearch --skill autoresearch-finalize

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

同梱ファイルfinalize.sh

詳細

Autoresearch を整理する

まとまりのない Autoresearch ブランチを、論理的な変更ごとに 1 つずつ、マージベースから始まる独立したブランチに整理します。

ステップ 1 — 分析してグループを提案する

  1. .auto/log.jsonl(旧形式:autoresearch.jsonl)を読み込みます。採用された実験だけに絞り込みます。
  2. .auto/prompt.md(旧形式:autoresearch.md)を読み込み、背景を確認します。
  3. すべての短いコミットハッシュを完全なハッシュに展開します:git rev-parse <short_hash>
  4. マージベースを取得します:git merge-base HEAD main
  5. 採用された各コミットについて、差分の統計を取得します(最初のコミットでは $BASE..<commit>、それ以降では <prev_kept>..<commit> を使用します)。
  6. 採用されたコミットを、論理的な変更セットにグループ化します:
    • 適用順序を維持します。 グループ N はグループ N+1 より前に配置します。
    • 複数のグループで同じファイルに変更を加えてはいけません。 各ブランチはそれぞれ独立してマージベースに適用されるため、ファイルが重複すると競合します。2 つのグループが同じファイルに変更を加える場合は、1 つのグループにまとめます。
    • ファイル間の依存関係に注意します。 各ブランチは独立しているため、グループ 1 が api.js に API を追加し、グループ 2 が parser.js でそれを呼び出す場合、グループ 2 のブランチは単独では動作しません。グループを提案する際は、依存関係を明示します:「グループ 2 はグループ 1 に依存しています — まとめて確認してください。」依存関係が強い場合は、グループを統合します。
    • 各グループは、小さく焦点を絞ったものにします。 1 つのアイデア、1 つのテーマを 1 グループにします。
    • グループ数を固定しないでください。 2 つの場合もあれば、15 個の場合もあります。

提案するグループ分けをユーザーに提示します:

Proposed branches (each from merge-base, independent):

1. **Switch test runner to forks pool** (commits abc1234, def5678)
   Files: vitest.config.ts, package.json
   Metric: 42.3s → 38.1s (-9.9%)

2. **Tune worker count and timeouts** (commits ghi9012, jkl3456)
   Files: test/setup.ts
   Metric: 38.1s → 31.7s (-16.8%)

続行する前に、必ず承認を得てください。

ステップ 2 — groups.json を作成して実行する

groups.json を作成します:

{
  "base": "<full merge-base hash>",
  "trunk": "main",
  "final_tree": "<full hash of current HEAD>",
  "goal": "short-slug",
  "groups": [
    {
      "title": "Switch to forks pool",
      "body": "Why + what changed.\n\nExperiments: #3, #5\nMetric: total_time 42.3s → 38.1s (-9.9%)",
      "last_commit": "<full hash of last kept commit in this group>",
      "slug": "forks-pool"
    }
  ]
}

主なルール:

  • last_commit は完全なハッシュでなければなりません。 jsonl 内の短いハッシュを git rev-parse で展開します。
  • 複数のグループで同じファイルを共有してはいけません。 スクリプトはこれを検証し、違反があれば失敗します。

次に、以下を実行します:

bash <SKILL_DIR>/finalize.sh /tmp/groups.json

スクリプトは、各グループについてマージベースからブランチを作成し、すべての変更を合わせた結果が元のブランチと一致することを検証したうえで、すべてのブランチ、クリーンアップコマンド、および .auto/ideas.md(旧形式:autoresearch.ideas.md)にあるアイデアを含む概要を出力します。

作成に失敗した場合:ロールバックします(ブランチを削除し、元のブランチに戻し、stash を適用します)。 検証に失敗した場合:ゼロ以外の終了コードで終了しますが、確認できるようにブランチはそのまま残します。

ステップ 3 — 報告する

スクリプトの実行後、以下をユーザーに報告します:

  • 作成したブランチと、それぞれに含まれる内容
  • 全体のメトリクス改善(ベースライン → 最良値)
  • スクリプトの概要出力にあるクリーンアップコマンド

エッジケース

  • 採用された実験が 1 件のみの場合:ブランチは 1 つで問題ありません。無理に分割しないでください。
  • グループ間でファイルが重複している場合:スクリプトは、該当ファイル名を示すエラーで失敗します。重複しているグループを統合して、再試行してください。
  • ブランチに実験以外のコミットがある場合:スキップします。jsonl から採用された実験だけを処理します。

コメント