mcpField
R
redoing-implementations

redoing-implementations

github.com/bostonaholic開発263 回インストール今日更新
リポジトリ

redoing-implementations について

制約やエッジケースを把握した後、実装を一から作り直すコーディングエージェント向けスキルです。事前承認、変更前のチェック記録、対象ファイルだけのリセットを重視します。

主な機能

  1. 01本質的な複雑さと偶発的な複雑さの区別
  2. 02設計案を提示して承認を待機
  3. 03変更前のチェック結果を記録
  4. 04対象ファイルのみ保存・リセット
  5. 05再実装後に基準チェックを再実行

活用シーン

  1. 01エッジケースの確認後に実装を簡素化
  2. 02不要な抽象化を小さな設計に置き換え
  3. 03他の変更を保ったまま安全に再試行

インストール

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

$npx skills add https://github.com/bostonaholic/skills --skill redoing-implementations

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

同梱ファイルagents/openai.yamlscripts/save-and-reset-attempt.sh

詳細

Elegant Redo

問題に取り組み、その制約や境界条件を把握したら、それらを満たす最もシンプルな設計で一から実装し直します。

  1. 設計するか、やめるか。 会話をもとに、明らかになった制約や境界条件といった本質的な複雑さと、偶発的な複雑さを切り分けます。現在の実装が、すべてを把握したシニアエンジニアが受け入れる最小限の設計になっているなら、その旨を伝えて終了します。理由もなく書き直してはいけません。そうでなければ、新しいアプローチを3〜5文で説明します。構成要素を減らし、間接的な処理を減らします。
  2. 承認を得る。 返信は、ステップ1の設計だけを記した3〜5文の段落で始めます。返信する前に文数を数えます。その段落の後に、変更内容とその改善理由、さらにすべての詳細(境界条件、行番号、順序など)をリストまたはコードのスケッチで示します。変更またはコミットした追跡対象ファイルと、新規作成した未追跡ファイルを、2つのグループに分けて列挙します。ステップ4では、列挙したファイルだけをリセットまたは削除します。変更したファイルはすべて、どちらかのグループに含めます。保存とリセットの対象から外すファイルがある場合は、リストの後で確認します。承認を待ちます。
  3. ベースラインを記録する。 現在の実装で成功しているすべてのチェック(テスト、リンター、型チェック、会話にある手動チェック)を実行し、それぞれの結果を記録します。
  4. 保存してから、今回の作業で変更したファイルだけをリセットする。 リポジトリのルートから、次のコマンドを実行します。 scripts/save-and-reset-attempt.sh <base> <topic> <out> -- <files> <base> は今回の作業を開始したコミット(コミットしていない場合は HEAD、コミットした場合は最初のコミットの親)、<topic> は作業を表す短いブランチ名の単語、<out> は作業ツリーの外に作成する新しいディレクトリ(mktemp -d)、<files> はステップ2のリストにあるすべてのファイルです。作業ツリー全体をリセットまたはクリーンアップしてはいけません。他の作業はそのまま残します。
    • 終了コードが0の場合:none ではない branch=、patch=、tar= の保存先をユーザーに伝え、今回の作業を復元する方法として restore= コマンドを順番に示します。
    • 終了コードが1の場合:保存時のチェックに失敗しており、リセットは行われていません。停止して、標準エラー出力を報告します。
    • 終了コードが2または3の場合:指定された引数を修正するか、指定されたツールをインストールしてから、新しい <out> を指定して再実行します。
    • 終了コードが4の場合:保存は完了していますが、リセットに失敗しています。停止して、標準エラー出力と <out> を報告します。
  5. きれいに実装する。 以前の試行から抽象化、回避策、不要なコードを引き継がず、新しい設計を一から書きます。パッチを当ててはいけません。
  6. ベースラインを再確認する。 ステップ3のチェックを実行します。以前の試行で成功していたすべてのチェックが再び成功するまで、修正と再実行を続け、結果が変わったチェックがあればそれぞれ報告します。

コメント