mcpField
S
skill-rollback

skill-rollback

github.com/nyldn开发4.3k57 次安装今天更新
代码仓库

关于 skill-rollback

面向 Codex CLI 的回滚技能,可将文件恢复到 Git 检查点,同时保留当前提交历史。执行前要求明确确认、创建安全标签,并在回滚时保留 LESSONS.md。

主要功能

  1. 01列出可用的检查点标签
  2. 02预览回滚影响的文件
  3. 03要求准确输入确认内容
  4. 04创建回滚前安全标签
  5. 05保留 LESSONS.md

适用场景

  1. 01选择恢复点前查看检查点
  2. 02确认受影响变更后恢复文件
  3. 03回滚期间保留累积经验

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/nyldn/claude-octopus --skill skill-rollback

安装后在 Claude Code 中输入/skill-rollback确认已加载。

附带文件agents/openai.yaml

详细介绍

宿主:Codex CLI — 此技能专为 Claude Code 设计,并已适配 Codex。 交叉引用命令在 Codex 中使用已安装的技能名称,而不是 /octo:* 斜杠命令。 使用当前 Codex 会话中的 Shell 和子 Agent 工具。除非当前会话已提供相应功能,否则不要声称某个提供方、模型或宿主子 Agent 可用。 有关宿主工具的对应项,请参阅 skills/blocks/codex-host-adapter.md。

检查点回滚

安全地回滚到之前的检查点,同时保留经验教训。

核心原则: 列出检查点 → 明确确认 → 创建安全备份 → 恢复 → 保留经验教训。

子命令检测

解析用户请求以确定模式:

用户请求模式操作
list、show checkpoints、无参数LIST显示可用检查点
octo-checkpoint-* 标签名称ROLLBACK回滚到指定检查点

模式:LIST(默认)

步骤 1:获取可用检查点
# List all octo checkpoints with dates
git tag -l "octo-checkpoint-*" --sort=-creatordate --format='%(refname:short)|%(creatordate:short)|%(contents:subject)'
步骤 2:呈现检查点表格
## Available Checkpoints

| Tag | Created | Description |
|-----|---------|-------------|
| octo-checkpoint-post-discover-20260203-143022 | 2026-02-03 | After Discover phase |
| octo-checkpoint-post-define-20260203-150145 | 2026-02-03 | After Define phase |

Usage: `/octo:rollback <tag-name>`

如果没有找到检查点:

No checkpoints found. Checkpoints are created automatically after each Octopus phase.

To create a manual checkpoint:
  git tag -a octo-checkpoint-manual-$(date +%Y%m%d-%H%M%S) -m "Manual checkpoint"

模式:ROLLBACK

步骤 1:验证检查点是否存在
# Check if tag exists
git tag -l "$CHECKPOINT_TAG" | grep -q . || echo "TAG_NOT_FOUND"

如果未找到标签:

Checkpoint '$CHECKPOINT_TAG' not found.

Available checkpoints:
[show list output]

停止。不要继续。

步骤 2:显示受影响的内容
# Get list of files that will be changed
git diff --name-status HEAD $CHECKPOINT_TAG

清楚地呈现:

## Rollback Preview

**Rolling back to:** `octo-checkpoint-post-discover-20260203-143022`
**Created:** 2026-02-03 14:30:22
**Description:** After Discover phase

### Files That Will Be Changed

| Status | File |
|--------|------|
| M | src/auth/login.ts |
| D | src/auth/oauth.ts |
| A | src/legacy/old-auth.ts |

Legend: M=Modified, D=Deleted, A=Added (relative to current state)

### Protected Files (Will NOT be changed)
- `.octo/LESSONS.md` - Lessons are always preserved
步骤 3:要求明确确认(必需)
To confirm this rollback, type ROLLBACK exactly.

Any other input will cancel.

等待准确确认:ROLLBACK

重要: 未收到明确的“ROLLBACK”确认时,不要继续。

步骤 4:创建安全检查点

执行任何回滚前,先创建回滚前检查点:

# Generate timestamp
TIMESTAMP=$(date +%Y%m%d-%H%M%S)

# Create safety checkpoint
git tag -a "octo-checkpoint-pre-rollback-$TIMESTAMP" -m "Safety checkpoint before rollback to $CHECKPOINT_TAG"

报告:

Created safety checkpoint: octo-checkpoint-pre-rollback-$TIMESTAMP

You can return to current state with:
  /octo:rollback octo-checkpoint-pre-rollback-$TIMESTAMP
步骤 5:保留 LESSONS.md
# Save current LESSONS.md if it exists
if [ -f ".octo/LESSONS.md" ]; then
  cp .octo/LESSONS.md /tmp/LESSONS_PRESERVED.md
  LESSONS_PRESERVED=true
fi
步骤 6:执行回滚
# Restore files from checkpoint (does NOT move HEAD)
git checkout $CHECKPOINT_TAG -- .

# Restore preserved LESSONS.md
if [ "$LESSONS_PRESERVED" = "true" ]; then
  cp /tmp/LESSONS_PRESERVED.md .octo/LESSONS.md
fi

重要: 此操作使用 git checkout <tag> -- .,它会:

  • 将所有文件恢复到检查点状态
  • 不会移动 HEAD 或更改分支
  • 保留当前提交历史
  • 允许立即提交恢复后的状态
步骤 7:更新 STATE.md(如果存在)
if [ -f ".octo/STATE.md" ]; then
  # Append rollback entry to history
  echo "" >> .octo/STATE.md
  echo "## Rollback - $(date '+%Y-%m-%d %H:%M')" >> .octo/STATE.md
  echo "" >> .octo/STATE.md
  echo "- **Target:** $CHECKPOINT_TAG" >> .octo/STATE.md
  echo "- **Safety checkpoint:** octo-checkpoint-pre-rollback-$TIMESTAMP" >> .octo/STATE.md
  echo "- **Reason:** User requested rollback" >> .octo/STATE.md
fi
步骤 8:报告成功
Rollback Complete

**Restored to:** `$CHECKPOINT_TAG`
**Files restored:** N files
**LESSONS.md:** Preserved (not rolled back)

**Safety checkpoint created:** `octo-checkpoint-pre-rollback-$TIMESTAMP`

### Next Steps

1. Review the restored files
2. Commit the rollback if satisfied:
   ```bash
   git add -A && git commit -m "chore: rollback to $CHECKPOINT_TAG"
  1. 或返回到之前的状态:
    /octo:rollback octo-checkpoint-pre-rollback-$TIMESTAMP
    


## Safety Measures

| Measure | Implementation |
|---------|----------------|
| **Always create safety checkpoint** | Pre-rollback tag created BEFORE any file changes |
| **Preserve LESSONS.md** | Copy before rollback, restore after |
| **Require explicit confirmation** | Must type "ROLLBACK" exactly |
| **Show affected files first** | Preview before confirmation |
| **No history modification** | Uses checkout, not reset |


## Red Flags - Never Do

| Action | Why It's Dangerous |
|--------|-------------------|
| Rollback without confirmation | Loses work unexpectedly |
| Skip safety checkpoint | No recovery path |
| Rollback LESSONS.md | Loses accumulated knowledge |
| Use `git reset --hard` | Destroys commit history |
| Force push after rollback | Affects collaborators |
| Delete checkpoint tags | Removes recovery points |


## Checkpoint Tag Format

All Octopus checkpoints follow this format:

octo-checkpoint-{type}-{timestamp}

其中:

  • type:post-discover、post-define、post-develop、post-deliver、pre-rollback、manual
  • timestamp:YYYYMMDD-HHMMSS

Examples:
- `octo-checkpoint-post-discover-20260203-143022`
- `octo-checkpoint-post-define-20260203-150145`
- `octo-checkpoint-pre-rollback-20260203-161530`
- `octo-checkpoint-manual-20260203-170000`


## Quick Reference

| Command | Action |
|---------|--------|
| `/octo:rollback` | List available checkpoints |
| `/octo:rollback list` | List available checkpoints |
| `/octo:rollback <tag>` | Rollback to specific checkpoint |


## The Bottom Line

回滚 → 已收到确认且已创建安全检查点 否则 → 未执行


**Show preview. Require "ROLLBACK". Create safety tag. Preserve lessons. Execute safely.**

评论

支持 Markdown