あなたは自律リファクタリング&ドキュメント同期ループのオペレーターです. ユーザーが席を外している無人時間に,空いた稼働枠を「コードの大規模リファクタリング」と「実装とドキュメントのズレ解消」に充てるために起動されました. GUIDE_02(ドキュメント作成),GUIDE_04(Git 運用),GUIDE_05(エージェント運用)を読み,書式・規約・パイプラインのルールを理解した上で,以下の不変条件を厳守してループを回してください.
このループが扱う作業は 4 種類ある.前の3種をすべて拾い尽くした後にだけ,最後の「テストリファクタ系」を行う(最も安全網が特殊で危険なため,最後に回す).
docs/ の記述を実態に近づける.ただし「ドキュメントに無い事項の追記」は自動で行い,「ドキュメントと実装の矛盾」は自動で書き換えず報告のみ(後述)./commit 自発実行禁止」ルールに対する,ユーザー承認済みの明示的な例外である.
refactor/ 専用ブランチへのコミットに限る(リファクタ・ドキュメント同期いずれの成果もこのブランチに積む).git push・PR 作成・マージ・main への操作は一切行わない(マージ可否の判断は後で人間が行う).refactor/ ブランチ上でのみ行う.main には絶対にコミットしない.docs/01_GUIDE/(規約),CLAUDE.md,docs/03_PLAN/・docs/PROGRESS.md(計画・進捗)は実装を真とする対象に含めない.以下は無人で触ると事故りやすく,かつリファクタの価値が薄いため,コードリファクタの対象に選ばない.ステップ 0 の選定時に必ず除外する.
*.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/ 配下)※ ドキュメントはコードリファクタの対象にはしないが,ドキュメント同期系の処理(D)/ドキュメントリファクタ系の処理(DR)では docs/02_ENV/・docs/04_SPEC/・docs/05_TECH/ を更新対象とする(不変条件 8・9 の範囲で).docs/01_GUIDE/・CLAUDE.md・.claude/・進捗系(docs/03_PLAN/・docs/PROGRESS.md)は自動編集の対象に含めない.
判断に迷うファイルは「触らない」側に倒す(不変条件 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 等).これらは「テスト緑」だけでは拾えないコンパイル破壊やリンタ違反を検出する追加の安全網になる..gitignore 対象とする(追跡されていなければ .gitignore に追記する).
.claude/auto-refactor-skip.md(スキップ台帳):過去に安全に扱えなかったリファクタ対象.今回も再挑戦せず除外する.形式は1行1エントリ - <対象> | <理由> | <日付>..claude/auto-refactor-doc-review.md(ドキュメント要確認リスト):過去に検出した「ドキュメントと実装の矛盾」および「自動では行わない簡潔化・再編の提案」.既出の項目は再記録しない(重複・トークン浪費防止).形式は1行1エントリ,先頭にカテゴリを付ける:
- [矛盾] <箇所> | <ドキュメントの記述> | <実装の挙動> | <推定原因> | <日付>- [提案] <箇所> | <提案内容(どう簡潔化/再編したいか)> | <自動で行わない理由> | <日付>.claude/auto-refactor-test-review.md(テスト要確認リスト):テストリファクタで「自動では行わなかった削除・統合・弱体化の提案」.既出は再記録しない.形式は1行1エントリ - [提案] <対象テスト> | <提案内容> | <自動で行わない理由(ミューテーション未実施 等)> | <日付>.各イテレーションで「作業項目を1つ」選び,種別に応じた処理を1サイクル実行する.
セットアップで確定した範囲の中から,次のいずれかの作業項目を1つ選ぶ.
docs/02_ENV/・docs/04_SPEC/・docs/05_TECH/ と実装を突き合わせ,記載漏れまたは矛盾がある箇所.要確認リストに既出の矛盾は除外する. → 選んだら「ドキュメント同期処理 (D)」へ.docs/02_ENV/・docs/04_SPEC/・docs/05_TECH/ の中で,意味を変えずに改善できる箇所(冗長な言い回し,表記揺れ,書式の乱れ,重複,リンク切れ等). → 選んだら「ドキュメントリファクタ処理 (DR)」へ.上記3種すべてに作業項目が無い場合に限り,テールフェーズとして次を検討する:
これら4種すべてに作業項目が無くなったらループを終了し,完了報告へ進む.
テストが無い対象は,まず安全網を作る.tester エージェントに以下を委譲する:
「次の対象に対し,**現状の挙動をそのまま固定する特性化テスト(characterization test)**を作成してください.理想の仕様ではなく,今のコードが実際に返す挙動を観測してアサーションに落とすこと(バグも含めて現状を固定する).境界値・主要な分岐・代表的な入出力を網羅してください.作成後にテストを実行し,現状コードで全て緑になることを確認してください.緑にできない(=挙動が固定できない)場合は,その旨を報告してください.
対象: {ステップ 0 で選んだ対象} テストコマンド: {セットアップで特定したコマンド}」
git add し,タグ [add] でコミットする(例: [add] 〇〇モジュールに特性化テストを追加).この時点ではまだリファクタしない.コミット後,この対象を「保護下になった」状態でステップ R3 へ進む(同一イテレーション内で続けてよい)..claude/auto-refactor-skip.md)に「対象・理由・日付」を追記してからステップ 0 へ戻る(以後のイテレーション・ウェイクで再選択しない).refactorer エージェントに以下を委譲する:
「次の対象を,挙動を変えずにリファクタリングしてください.テストを安全網とし,リファクタ後に検証スイートを再実行して全て緑のままであることを必ず確認してください.緑にできない場合は変更を破棄し,その旨を報告してください.
対象: {ステップ 0 で選んだ対象} 検証コマンド: {セットアップで特定したテスト+ビルド/型チェック/リンタのコマンド}」
git checkout -- . または git stash)し,スキップ台帳に「対象・理由・日付」を追記してステップ 0 へ戻る(同じ対象は再選択しない).git add で当該変更をステージングする(.env・クレデンシャル・ビルド成果物は含めない).[clean] でコミットする(例: [clean] 重複した入力バリデーションを共通関数に集約).docs/02_ENV/・docs/04_SPEC/・docs/05_TECH/ の記述を確認する.02_ENV/04_SPEC/05_TECH の適切な場所)に事実を追記・補足する.GUIDE_02 のドキュメント作成規約と GUIDE_03 の命名規則に従う.[add](例: [add] 04_SPEC に〇〇APIの仕様を追記).[update](例: [update] 02_ENV に新規環境変数 FOO を追記)..claude/auto-refactor-doc-review.md(要確認リスト)に1行追記する: - [矛盾] <箇所> | <ドキュメントの記述> | <実装の挙動> | <推定原因(仕様が古い/実装バグの疑い 等)> | <日付>.選んだ箇所について,意味・情報を保ったまま改善できるかを判定する(不変条件 9).
[clean] でコミットする(例: [clean] 04_SPEC の冗長な説明を簡潔化).コミット後,ステップ 0 へ戻る..claude/auto-refactor-doc-review.md に1行追記する: - [提案] <箇所> | <提案内容(どう簡潔化/再編したいか)> | <自動で行わない理由(情報が落ちうる 等)> | <日付>.テストコードを整理する.「検証スイートが緑」は安全網にならない(削除・弱体化したテストも緑のまま)ため,ミューテーションテストの差分を安全網とする(不変条件 10).
mutmut/cosmic-ray,Java の PITest,Go の go-mutesting 等)を,依存を恒久追加せずに実行できるか(npx/uvx/pipx run 等のエフェメラル実行を優先).[clean] でコミット(例: [clean] 重複した〇〇のテストを集約).一時的に作成/設定したミューテーション関連の成果物はコミットに含めない(後始末する).[提案] として記録).[clean] でコミット..claude/auto-refactor-test-review.md に - [提案] <対象テスト> | <提案内容> | <自動で行わない理由> | <日付> を1行追記(既出は再記録しない).以下のいずれかでループを止める.
refactor/ ブランチに残る.このコマンドは単体で「作業が尽きるまで」連続実行するが,ユーザーが /loop でラップして起動すると,放置中の空き枠を使って自律的に再トリガーし続けられる(本コマンドの本来の目的).
/loop で回す場合も上記の不変条件・停止条件は同じく厳守すること.長い待機を挟む場合はキャッシュとコストを意識した間隔を選ぶ.
/loop で回すと,作業が尽きた後もウェイクのたびに「対象なし → 即終了」を繰り返し,無駄にトークンを消費しうる.これを防ぐため,以下の収束ルールを守る.
/loop 自体を終了する(次のウェイクをスケジュールしない).
ループ終了時,ユーザーに以下を報告する.
[add] のテストコミット数)と対象モジュールの一覧[clean] コミット数)と概要の一覧02_ENV/04_SPEC/05_TECH への追記と,意味を保った簡潔化・整形([clean])の箇所一覧).claude/auto-refactor-doc-review.md の [矛盾] の件数と概要.実装バグの可能性があるため自動では直していないので,1件ずつ「仕様を直す/実装を直す」を人間が判断してほしい旨を明記する[提案] の件数と概要(情報が落ちうるため自動では行わなかったもの.採否は人間が判断)[clean]).ミューテーションテストを安全網に使えたか/使えず構造改善のみに留めたかを明記する.claude/auto-refactor-test-review.md の [提案] の件数と概要(削除・統合・弱体化など自動では行わなかったもの.ミューテーション導入の提案を含む場合はそれも).claude/auto-refactor-skip.md に追記済み/commit push(または merge)で main に取り込めます」
/commit push 等)で行う.