conductor-revert について
conductor-revertは、GitリポジトリでConductorのトラック、フェーズ、個別タスクを取り消すためのワークフロースキルです。コミットの特定から明示的な確認、実行、検証までを案内し、履歴の保持とエラーや競合時の停止を重視します。
主な機能
- 01トラック、フェーズ、タスク単位の取り消し
- 02Git状態とリポジトリの事前確認
- 03コミットの特定と検証
- 04実行前の明示的な確認
- 05競合対応と取り消し後の検証
活用シーン
- 01完了したConductorトラックの取り消し
- 02特定フェーズと後続フェーズの取り消し
- 03特定タスクのコミットの取り消し
- 04Git履歴を変更する前の安全手順の確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ sickn33/ agentic-awesome-skills --skill conductor-revertインストール後、Claude Code で/conductor-revertを入力して読み込まれたか確認します。
詳細
トラックのリバート
Git の状態を完全に把握したうえで、論理的な作業単位ごとに変更をリバートします。トラック全体、特定のフェーズ、個々のタスクのリバートに対応しています。
このスキルを使用する場面
- トラックのリバートに関するタスクやワークフローに取り組む場合
- トラックのリバートに関するガイダンス、ベストプラクティス、チェックリストが必要な場合
このスキルを使用しない場面
- タスクがトラックのリバートに関係しない場合
- この範囲外の別の分野やツールが必要な場合
手順
- 目標、制約、必要な入力を明確にします。
- 関連するベストプラクティスを適用し、結果を検証します。
- 実行可能な手順と検証方法を提示します。
事前確認
-
Conductor が初期化されていることを確認します。
conductor/tracks.mdが存在するか確認します。- 存在しない場合:エラーを表示し、最初に
/conductor:setupを実行するよう案内します。
-
Git リポジトリを確認します。
-
git statusを実行して Git リポジトリであることを確認します。 -
未コミットの変更がないか確認します。
-
未コミットの変更がある場合:
警告:未コミットの変更が検出されました 変更のあるファイル: {list of files} 選択肢: 1. 変更をスタッシュして続行する 2. 先に変更をコミットする 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 の重複を取り除き、すでにリバート済みかどうかを確認してから実行します。プランファイルの編集を禁止するユーザー指示を尊重します。無関係な作業を自動的にスタッシュ、コミット、削除してはいけません。
タスクのリバート
-
Git ログを検索して、タスク固有のコミットを特定します。
git log --oneline --grep="{trackId}" --grep="Task {X.Y}" --all-match -
plan.mdの更新コミットも見つけます。git log --oneline --grep="mark task {X.Y} complete" --grep="{trackId}" --all-match -
一致するコミット SHA をすべて収集します。
フェーズのリバート
-
plan.mdを読み、フェーズのタスク範囲を特定します。 -
そのフェーズ内のすべてのタスクコミットを検索します。
git log --oneline --grep="{trackId}" | grep -E "Task {N}\.[0-9]" -
フェーズの検証コミットがあれば見つけます。
-
フェーズ内のタスクに関する
plan.mdの更新コミットをすべて見つけます。 -
一致するコミット SHA を時系列順にすべて収集します。
トラック全体のリバート
-
トラックに言及しているすべてのコミットを見つけます。
git log --oneline --grep="{trackId}" -
トラックの作成コミットを見つけます。
git log --oneline -- "conductor/tracks/{trackId}/" -
一致するコミット 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 を更新します。
- 現在の
plan.mdを読みます。 - リバートしたタスクごとに、マーカーを変更します。
[x]->[ ][~]->[ ]
- 更新した
plan.mdを書き込みます。 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
================================================================================
安全ルール
git reset --hardは絶対に使用しないでください -git revertのみを使用しますgit push --forceは絶対に使用しないでください - 安全なプッシュ操作のみを使用します- 競合を自動解決しないでください - 必ず停止して人間の対応を求めます
- 必ず計画全体を提示してください - ユーザーが実行内容を正確に把握できるようにします
- 明示的な「YES」を必須とします - 「y」や Enter ではなく、「YES」のみです
- エラーが発生したら必ず停止してください - 失敗後に処理を続けようとしないでください
- 履歴を保持してください - 履歴の書き換えより、コミットの取り消しを優先します
エッジケース
トラックが一度もコミットされていない場合
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.
制限事項
- タスクが上記の対象範囲に明確に当てはまる場合にのみ、このスキルを使用してください。
- 出力を、環境固有の検証、テスト、または専門家によるレビューの代わりとして扱わないでください。
- 必要な入力、権限、安全上の境界、または成功基準が不足している場合は、停止して確認を求めてください。