mcpField
C
conductor-revert

conductor-revert

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

conductor-revert について

conductor-revertは、GitリポジトリでConductorのトラック、フェーズ、個別タスクを取り消すためのワークフロースキルです。コミットの特定から明示的な確認、実行、検証までを案内し、履歴の保持とエラーや競合時の停止を重視します。

主な機能

  1. 01トラック、フェーズ、タスク単位の取り消し
  2. 02Git状態とリポジトリの事前確認
  3. 03コミットの特定と検証
  4. 04実行前の明示的な確認
  5. 05競合対応と取り消し後の検証

活用シーン

  1. 01完了したConductorトラックの取り消し
  2. 02特定フェーズと後続フェーズの取り消し
  3. 03特定タスクのコミットの取り消し
  4. 04Git履歴を変更する前の安全手順の確認

インストール

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

$npx skills add https://github.com/sickn33/agentic-awesome-skills --skill conductor-revert

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

詳細

トラックのリバート

Git の状態を完全に把握したうえで、論理的な作業単位ごとに変更をリバートします。トラック全体、特定のフェーズ、個々のタスクのリバートに対応しています。

このスキルを使用する場面

  • トラックのリバートに関するタスクやワークフローに取り組む場合
  • トラックのリバートに関するガイダンス、ベストプラクティス、チェックリストが必要な場合

このスキルを使用しない場面

  • タスクがトラックのリバートに関係しない場合
  • この範囲外の別の分野やツールが必要な場合

手順

  • 目標、制約、必要な入力を明確にします。
  • 関連するベストプラクティスを適用し、結果を検証します。
  • 実行可能な手順と検証方法を提示します。

事前確認

  1. Conductor が初期化されていることを確認します。

    • conductor/tracks.md が存在するか確認します。
    • 存在しない場合:エラーを表示し、最初に /conductor:setup を実行するよう案内します。
  2. Git リポジトリを確認します。

    • git status を実行して Git リポジトリであることを確認します。

    • 未コミットの変更がないか確認します。

    • 未コミットの変更がある場合:

      警告:未コミットの変更が検出されました
      
      変更のあるファイル:
      {list of files}
      
      選択肢:
      1. 変更をスタッシュして続行する
      2. 先に変更をコミットする
      3. リバートをキャンセルする
      
  3. リバートを安全に行える状態か確認します。

    • マージが進行中でないこと
    • リベースが進行中でないこと
    • 問題が見つかった場合:処理を停止し、解決手順を説明します。

対象の選択

引数が指定されている場合:

引数の形式を解析します。

トラック全体: {trackId}

  • 例:auth_20250115
  • トラック全体のすべてのコミットをリバートします。

特定のフェーズ: {trackId}:phase{N}

  • 例:auth_20250115:phase2
  • フェーズ N と、それ以降のすべてのフェーズのコミットをリバートします。

特定のタスク: {trackId}:task{X.Y}

  • 例:auth_20250115:task2.3
  • タスク X.Y のコミットのみをリバートします。
引数が指定されていない場合:

ガイド付きの選択メニューを表示します。

What would you like to revert?

Currently In Progress:
1. [~] Task 2.3 in dashboard_20250112 (most recent)

Recently Completed:
2. [x] Task 2.2 in dashboard_20250112 (1 hour ago)
3. [x] Phase 1 in dashboard_20250112 (3 hours ago)
4. [x] Full track: auth_20250115 (yesterday)

Options:
5. Enter specific reference (track:phase or track:task)
6. Cancel

Select option:

コミットの特定

メッセージの一致は候補として扱い、証拠とはみなしません。トラック ID はリテラルな識別子として検証し(パストラバーサルやシェルへの埋め込みがないこと)、コミットの差分全体と祖先関係を調べ、無関係または複数の目的が混在するコミットは除外します。マージコミットには明示的に選択されたメインラインが必要です。-m を推測してはいけません。SHA の重複を取り除き、すでにリバート済みかどうかを確認してから実行します。プランファイルの編集を禁止するユーザー指示を尊重します。無関係な作業を自動的にスタッシュ、コミット、削除してはいけません。

タスクのリバート
  1. Git ログを検索して、タスク固有のコミットを特定します。

    git log --oneline --grep="{trackId}" --grep="Task {X.Y}" --all-match
    
  2. plan.md の更新コミットも見つけます。

    git log --oneline --grep="mark task {X.Y} complete" --grep="{trackId}" --all-match
    
  3. 一致するコミット SHA をすべて収集します。

フェーズのリバート
  1. plan.md を読み、フェーズのタスク範囲を特定します。

  2. そのフェーズ内のすべてのタスクコミットを検索します。

    git log --oneline --grep="{trackId}" | grep -E "Task {N}\.[0-9]"
    
  3. フェーズの検証コミットがあれば見つけます。

  4. フェーズ内のタスクに関する plan.md の更新コミットをすべて見つけます。

  5. 一致するコミット SHA を時系列順にすべて収集します。

トラック全体のリバート
  1. トラックに言及しているすべてのコミットを見つけます。

    git log --oneline --grep="{trackId}"
    
  2. トラックの作成コミットを見つけます。

    git log --oneline -- "conductor/tracks/{trackId}/"
    
  3. 一致するコミット SHA を時系列順にすべて収集します。

実行計画の表示

リバート操作を行う前に、計画全体を表示します。

================================================================================
                           REVERT EXECUTION PLAN
================================================================================

Target: {description of what's being reverted}

Commits to revert (in reverse chronological order):
  1. abc1234 - feat: add chart rendering (dashboard_20250112)
  2. def5678 - chore: mark task 2.3 complete (dashboard_20250112)
  3. ghi9012 - feat: add data hooks (dashboard_20250112)
  4. jkl3456 - chore: mark task 2.2 complete (dashboard_20250112)

Files that will be affected:
  - src/components/Dashboard.tsx (modified)
  - src/hooks/useData.ts (will be deleted - was created in these commits)
  - conductor/tracks/dashboard_20250112/plan.md (modified)

Plan updates:
  - Task 2.2: [x] -> [ ]
  - Task 2.3: [~] -> [ ]

================================================================================
                              !! WARNING !!
================================================================================

This operation will:
- Create {N} revert commits
- Modify {M} files
- Reset {P} tasks to pending status

This CANNOT be easily undone without manual intervention.

================================================================================

Type 'YES' to proceed, or anything else to cancel:

重要:明示的な「YES」の確認を必須とします。「y」、「yes」、または Enter では続行してはいけません。

リバートの実行

新しいコミットから順に、逆時系列でリバートを実行します。

Executing revert plan...

[1/4] Reverting abc1234...
      git revert --no-edit abc1234
      ✓ Success

[2/4] Reverting def5678...
      git revert --no-edit def5678
      ✓ Success

[3/4] Reverting ghi9012...
      git revert --no-edit ghi9012
      ✓ Success

[4/4] Reverting jkl3456...
      git revert --no-edit jkl3456
      ✓ Success
マージコンフリクトが発生した場合

リバートでマージコンフリクトが発生した場合:

================================================================================
                           MERGE CONFLICT DETECTED
================================================================================

Conflict occurred while reverting: {sha} - {message}

Conflicted files:
  - src/components/Dashboard.tsx

Options:
1. Show conflict details
2. Abort revert sequence (keeps completed reverts)
3. Open manual resolution guide

IMPORTANT: Reverts 1-{N} have been completed. You may need to manually
resolve this conflict before continuing or fully undo the revert sequence.

Select option:

コンフリクトが発生したら直ちに停止します。自動解決を試みてはいけません。

plan.md の更新

Git のリバートが正常に完了した後、plan.md を更新します。

  1. 現在の plan.md を読みます。
  2. リバートしたタスクごとに、マーカーを変更します。
    • [x] -> [ ]
    • [~] -> [ ]
  3. 更新した plan.md を書き込みます。
  4. metadata.json を更新します。
    • tasks.completed を減らします。
    • 必要に応じて status を更新します。
    • updated のタイムスタンプを更新します。

許可されたメタデータの調整は、別途確認して報告します。実際にコミットされるまでは未コミットとして報告してください。カウンターを無条件に減らしたり、ユーザーが保護しているプランを書き換えたりしてはいけません。

トラックのステータス更新

トラック全体をリバートする場合:
  • tracks.md で [x] または [~] を [ ] に変更します。
  • トラックのディレクトリ全体を削除するかどうかをユーザーに確認します。
不完全な状態に戻す場合:
  • tracks.md で、部分的に完了している場合は [~]、完全に元に戻した場合は [ ] としてマークされていることを確認します

検証

元に戻す操作の完了後:

================================================================================
                           REVERT COMPLETE
================================================================================

Summary:
  - Reverted {N} commits
  - Reset {P} tasks to pending
  - {M} files affected

Git log now shows:
  {recent commit history}

Plan.md status:
  - Task 2.2: [ ] Pending
  - Task 2.3: [ ] Pending

================================================================================

Verify the revert was successful:
  1. Run tests: {test command}
  2. Check application: {relevant check}

If issues are found, you may need to:
  - Fix conflicts manually
  - Re-implement the reverted tasks
  - Inspect and revert only the exact recorded revert SHAs to undo this operation

================================================================================

安全ルール

  1. git reset --hard は絶対に使用しないでください - git revert のみを使用します
  2. git push --force は絶対に使用しないでください - 安全なプッシュ操作のみを使用します
  3. 競合を自動解決しないでください - 必ず停止して人間の対応を求めます
  4. 必ず計画全体を提示してください - ユーザーが実行内容を正確に把握できるようにします
  5. 明示的な「YES」を必須とします - 「y」や Enter ではなく、「YES」のみです
  6. エラーが発生したら必ず停止してください - 失敗後に処理を続けようとしないでください
  7. 履歴を保持してください - 履歴の書き換えより、コミットの取り消しを優先します

エッジケース

トラックが一度もコミットされていない場合
No commits found for track: {trackId}

The track exists but has no associated commits. This may mean:
- Implementation never started
- Commits used different format

Options:
1. Delete track directory only
2. Cancel
コミットがすでに取り消されている場合
Some commits appear to already be reverted:
  - abc1234 was reverted by xyz9876

Options:
1. Skip already-reverted commits
2. Cancel and investigate
リモートにすでにプッシュされている場合
WARNING: Some commits have been pushed to remote

Commits on remote:
  - abc1234 (origin/main)
  - def5678 (origin/main)

Reverting will create new revert commits that you'll need to push.
This is the safe approach (no force push required).

Continue with revert? (YES/no):

取り消し操作を元に戻す

ユーザーが取り消し操作自体を元に戻す必要がある場合:

To undo this revert operation:

  git revert <exact-revert-sha>  # inspect each recorded revert, newest first

This will create new commits that restore the reverted changes.

Do not use reset plus checkout as a shortcut: it can discard unrelated work.

制限事項

  • タスクが上記の対象範囲に明確に当てはまる場合にのみ、このスキルを使用してください。
  • 出力を、環境固有の検証、テスト、または専門家によるレビューの代わりとして扱わないでください。
  • 必要な入力、権限、安全上の境界、または成功基準が不足している場合は、停止して確認を求めてください。

コメント