关于 conductor-revert
conductor-revert 是用于在 Git 仓库中撤销 Conductor 工作轨道、阶段或单项任务的工作流技能。它指导提交筛选、明确确认、执行与验证,并强调保留历史以及遇错或冲突时停止。
主要功能
- 01按工作轨道、阶段或任务撤销
- 02Git 状态与仓库预检
- 03提交发现与验证
- 04执行前要求明确确认
- 05冲突处理与撤销后验证
适用场景
- 01撤销已完成的 Conductor 工作轨道
- 02撤销某阶段及其后续阶段
- 03撤销特定任务的提交
- 04在修改 Git 历史前检查安全步骤
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ sickn33/ agentic-awesome-skills --skill conductor-revert安装后在 Claude Code 中输入/conductor-revert确认已加载。
详细介绍
撤销 Track
按逻辑工作单元撤销更改,并充分考虑 Git 状态。支持撤销整个 Track、特定阶段或单个任务。
适用场景
- 处理撤销 Track 相关任务或工作流
- 需要撤销 Track 方面的指导、最佳实践或检查清单
不适用场景
- 任务与撤销 Track 无关
- 需要使用此范围之外的其他领域知识或工具
说明
- 明确目标、约束和所需输入。
- 应用相关最佳实践并验证结果。
- 提供可执行的步骤和验证方法。
执行前检查
-
验证 Conductor 已初始化:
- 检查
conductor/tracks.md是否存在 - 如果不存在:显示错误并建议先运行
/conductor:setup
- 检查
-
验证 Git 仓库:
-
运行
git status,确认当前目录是 Git 仓库 -
检查是否存在未提交的更改
-
如果存在未提交的更改:
WARNING: Uncommitted changes detected Files with changes: {list of files} Options: 1. Stash changes and continue 2. Commit changes first 3. Cancel revert
-
-
验证 Git 状态适合执行撤销:
- 当前没有正在进行的合并
- 当前没有正在进行的变基
- 如果发现问题:停止操作并说明解决步骤
目标选择
如果提供了参数:
解析参数格式:
整个 Track: {trackId}
- 示例:
auth_20250115 - 撤销整个 Track 的所有提交
特定阶段: {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:
查找提交
将提交消息匹配结果视为候选项,而非确凿证据。将 Track ID 验证为字面标识符(不得用于路径遍历或 Shell 插值),检查完整提交差异和提交历史,并排除无关或混合提交。合并提交必须明确指定主线;不得猜测 -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
撤销整个 Track
-
查找所有提及该 Track 的提交:
git log --oneline --grep="{trackId}" -
查找创建该 Track 的提交:
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 或直接按回车均不得继续。
执行撤销
按时间倒序执行撤销(从最新提交开始):
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时间戳
- 减少
单独审查任何经授权的元数据协调操作;只有实际提交后,才能报告为已提交。不得盲目递减计数,也不得改写受用户保护的计划。
更新 Track 状态
如果撤销整个 Track:
- 在
tracks.md中:将[x]或[~]改为[ ] - 可考虑询问用户是否要删除整个 Track 目录
如果恢复到未完成状态:
- 在 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”,也不能只按回车
- 出现任何错误都必须暂停——失败后不得尝试继续
- 保留历史记录——优先使用恢复提交,而不是改写历史记录
边缘情况
从未提交的 Track
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.
限制
- 仅当任务明确符合上述范围时,才使用此技能。
- 不要将输出视为环境特定验证、测试或专家审查的替代品。
- 如果缺少必需的输入、权限、安全边界或成功标准,请停止并请求澄清。