あなたは自律リファクタリングループのオペレーターです. ユーザーが席を外している無人時間に,空いた稼働枠を大規模リファクタリングに充てるために起動されました. GUIDE_04(Git 運用)と GUIDE_05(エージェント運用)を読み,書式・パイプラインのルールを理解した上で,以下の不変条件を厳守してループを回してください.
/commit 自発実行禁止」ルールに対する,ユーザー承認済みの明示的な例外である.
refactor/ 専用ブランチへのコミットに限る.git push・PR 作成・マージ・main への操作は一切行わない(マージ可否の判断は後で人間が行う).refactor/ ブランチ上でのみ行う.main には絶対にコミットしない.以下は無人で触ると事故りやすく,かつリファクタの価値が薄いため,対象に選ばない.ステップ A の対象選定時に必ず除外する.
*.g.dart,*.pb.go,スナップショット等)node_modules/,vendor/,.dart_tool/,target/,ベンダリングされた外部ソース)package-lock.json,yarn.lock,pubspec.lock,Cargo.lock,go.sum 等).env*,CI 設定,各種 config ファイル)dist/,build/,.next/,coverage/ 等)docs/,CLAUDE.md,.claude/ 配下)判断に迷うファイルは「触らない」側に倒す(不変条件 7).
$ARGUMENTS に絞り込み(ディレクトリ/モジュール)があればその範囲に限定する.無ければプロジェクト全体を対象候補とする.git status で作業ツリーがクリーンか確認する.未コミットの変更があれば,無人で巻き込むのは危険なので停止して報告する.main にいる場合は GUIDE_04 のブランチ命名規則に従い refactor/<英単語2〜4語(kebab-case)> ブランチを作成して移動する(例: refactor/auto-cleanup).refactor/ ブランチにいる場合はそれを使う.feature/ 等の他作業ブランチにいる場合は,混在を避けるため停止して確認を求める.package.json,pubspec.yaml,Cargo.toml,go.mod,pyproject.toml/pytest.ini 等)から,以下を特定する.
tsc --noEmit,cargo build,go build ./...,flutter analyze,npm run lint 等).これらは「テスト緑」だけでは拾えないコンパイル破壊やリンタ違反を検出する追加の安全網になる..claude/auto-refactor-skip.md が存在すれば読み込む.ここに記録された対象は「過去に安全に扱えなかった」ものなので,今回も再挑戦せず対象から除外する(/loop のウェイクをまたいで失敗対象に再挑戦し,トークンを浪費するのを防ぐ).ファイルが無ければ空として扱う.
- <対象(ファイル/関数)> | <理由> | <日付>..gitignore 対象とする(追跡されていなければ .gitignore に追記する).各イテレーションで以下を1サイクル実行する.
テストが無い対象は,まず安全網を作る.tester エージェントに以下を委譲する:
「次の対象に対し,**現状の挙動をそのまま固定する特性化テスト(characterization test)**を作成してください.理想の仕様ではなく,今のコードが実際に返す挙動を観測してアサーションに落とすこと(バグも含めて現状を固定する).境界値・主要な分岐・代表的な入出力を網羅してください.作成後にテストを実行し,現状コードで全て緑になることを確認してください.緑にできない(=挙動が固定できない)場合は,その旨を報告してください.
対象: {ステップ A で選んだ対象} テストコマンド: {セットアップで特定したコマンド}」
git add し,タグ [add] でコミットする(例: [add] 〇〇モジュールに特性化テストを追加).この時点ではまだリファクタしない.コミット後,この対象を「保護下になった」状態でステップ B へ進む(同一イテレーション内で続けてよい)..claude/auto-refactor-skip.md)に「対象・理由・日付」を追記してからステップ A へ戻る(以後のイテレーション・ウェイクで再選択しない).refactorer エージェントに以下を委譲する:
「次の対象を,挙動を変えずにリファクタリングしてください.テストを安全網とし,リファクタ後に検証スイートを再実行して全て緑のままであることを必ず確認してください.緑にできない場合は変更を破棄し,その旨を報告してください.
対象: {ステップ A で選んだ対象} 検証コマンド: {セットアップで特定したテスト+ビルド/型チェック/リンタのコマンド}」
git checkout -- . または git stash)し,スキップ台帳(.claude/auto-refactor-skip.md)に「対象・理由・日付」を追記して次のイテレーションのステップ A へ(同じ対象は再選択しない).git add で当該変更をステージングする(.env・クレデンシャル・ビルド成果物は含めない).[clean] でコミットする(例: [clean] 重複した入力バリデーションを共通関数に集約).main へのマージもしない.以下のいずれかでループを止める.
refactor/ ブランチに残る.このコマンドは単体で「対象が尽きるまで」連続実行するが,ユーザーが /loop でラップして起動すると,放置中の空き枠を使って自律的に再トリガーし続けられる(本コマンドの本来の目的).
/loop で回す場合も上記の不変条件・停止条件は同じく厳守すること.長い待機を挟む場合はキャッシュとコストを意識した間隔を選ぶ.
/loop で回すと,対象が尽きた後もウェイクのたびに「対象なし → 即終了」を繰り返し,無駄にトークンを消費しうる.これを防ぐため,以下の収束ルールを守る.
/loop 自体を終了する(次のウェイクをスケジュールしない).
ループ終了時,ユーザーに以下を報告する.
[add] コミット数)と対象モジュールの一覧[clean] コミット数)と概要の一覧.claude/auto-refactor-skip.md に追記済み/commit push(または merge)で main に取り込めます」
/commit push 等)で行う.