Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Roll back to a previous checkpoint via git — use when a change went wrong and you need to revert
.claude/skills/hashgraph-online-skill-rollback/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | 62% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 174% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 102% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 92% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 21% | 0% |
> Host: Codex CLI — This skill was designed for Claude Code and adapted for Codex. > Cross-reference commands use installed skill names in Codex rather than /octo:* slash commands. > Use the active Codex shell and subagent tools. Do not claim a provider, model, or host subagent is available until the current session exposes it. > For host tool equivalents, see skills/blocks/codex-host-adapter.md.
Safely rollback to a previous checkpoint while preserving lessons learned.
Core principle: List checkpoints → Confirm explicitly → Create safety backup → Restore → Preserve lessons.
Parse the user's request to determine mode:
| User Request | Mode | Action | |--------------|------|--------| | list, show checkpoints, no argument | LIST | Show available checkpoints | | octo-checkpoint-* tag name | ROLLBACK | Rollback to specific checkpoint |
bash# List all octo checkpoints with dates git tag -l "octo-checkpoint-*" --sort=-creatordate --format='%(refname:short)|%(creatordate:short)|%(contents:subject)'
markdown## 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>`
If no checkpoints found:
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"bash# Check if tag exists git tag -l "$CHECKPOINT_TAG" | grep -q . || echo "TAG_NOT_FOUND"
If tag not found:
Checkpoint '$CHECKPOINT_TAG' not found.
Available checkpoints:
[show list output]STOP. Do not proceed.
bash# Get list of files that will be changed git diff --name-status HEAD $CHECKPOINT_TAG
Present clearly:
markdown## 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
To confirm this rollback, type ROLLBACK exactly.
Any other input will cancel.Wait for exact confirmation: ROLLBACK
CRITICAL: Do NOT proceed without explicit "ROLLBACK" confirmation.
Before any rollback, create a pre-rollback checkpoint:
bash# 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"
Report:
Created safety checkpoint: octo-checkpoint-pre-rollback-$TIMESTAMP
You can return to current state with:
/octo:rollback octo-checkpoint-pre-rollback-$TIMESTAMPbash# 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
bash# 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
Important: This uses git checkout <tag> -- . which:
bashif [ -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
markdownRollback 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" ``` 3. Or return to previous state: ```bash /octo:rollback octo-checkpoint-pre-rollback-$TIMESTAMP ```
| 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 |
| 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 |
All Octopus checkpoints follow this format:
octo-checkpoint-{type}-{timestamp}
Where:
- type: post-discover, post-define, post-develop, post-deliver, pre-rollback, manual
- timestamp: YYYYMMDD-HHMMSSExamples:
octo-checkpoint-post-discover-20260203-143022octo-checkpoint-post-define-20260203-150145octo-checkpoint-pre-rollback-20260203-161530octo-checkpoint-manual-20260203-170000| Command | Action | |---------|--------| | /octo:rollback | List available checkpoints | | /octo:rollback list | List available checkpoints | | /octo:rollback <tag> | Rollback to specific checkpoint |
Rollback → Confirmation received AND safety checkpoint created
Otherwise → Not executedShow preview. Require "ROLLBACK". Create safety tag. Preserve lessons. Execute safely.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 7,308 | 15,354 | +110% | 1 | 1 | 0% | 1,208 | 2,285 | +89% | 0 | 0 | — |
case-02 | fail→fail | 4,712 | 11,227 | +138% | 1 | 1 | 0% | 514 | 2,356 | +358% | 0 | 0 | — |
case-03 | fail→fail | 14,110 | 13,001 | -8% | 1 | 1 | 0% | 411 | 2,438 | +493% | 0 | 0 | — |
case-04 | fail→fail | 34,366 | 6,089 | -82% | 1 | 1 | 0% | 285 | 2,213 | +676% | 0 | 0 | — |
case-05 | fail→fail | 19,136 | 20,882 | +9% | 1 | 1 | 0% | 795 | 2,610 | +228% | 0 | 0 | — |
case-06 | fail→fail | 12,417 | 13,605 | +10% | 1 | 1 | 0% | 1,998 | 2,399 | +20% | 0 | 0 | — |
case-07 | fail→pass | 15,306 | 6,393 | -58% | 1 | 1 | 0% | 1,979 | 3,207 | +62% | 0 | 0 | — |
case-08 | fail→pass | 11,323 | 4,023 | -64% | 1 | 1 | 0% | 966 | 2,646 | +174% | 0 | 0 | — |
case-09 | fail→pass | 8,384 | 6,210 | -26% | 1 | 1 | 0% | 1,425 | 2,883 | +102% | 0 | 0 | — |
case-14 | fail→fail | 13,293 | 3,756 | -72% | 1 | 1 | 0% | 1,651 | 2,462 | +49% | 0 | 0 | — |
case-10 | pass→pass | 16,242 | 9,111 | -44% | 1 | 1 | 0% | 1,778 | 3,774 | +112% | 0 | 0 | — |
case-11 | fail→pass | 8,451 | 3,754 | -56% | 1 | 1 | 0% | 1,378 | 2,639 | +92% | 0 | 0 | — |
case-12 | pass→pass | 19,192 | 4,100 | -79% | 1 | 1 | 0% | 2,155 | 2,698 | +25% | 0 | 0 | — |
case-13 | fail→pass | 15,774 | 8,606 | -45% | 1 | 1 | 0% | 2,251 | 2,729 | +21% | 0 | 0 | — |
case-15 | fail→fail | 16,668 | 2,114 | -87% | 1 | 1 | 0% | 2,611 | 2,350 | -10% | 0 | 0 | — |
case-16 | fail→pass | 16,332 | 11,524 | -29% | 1 | 1 | 0% | 2,039 | 3,240 | +59% | 0 | 0 | — |
case-17 | fail→pass | 18,886 | 11,147 | -41% | 1 | 1 | 0% | 2,367 | 3,099 | +31% | 0 | 0 | — |
case-18 | fail→pass | 10,122 | 11,182 | +10% | 1 | 1 | 0% | 1,994 | 3,048 | +53% | 0 | 0 | — |
case-19 | pass→pass | 13,542 | 2,962 | -78% | 1 | 1 | 0% | 848 | 2,366 | +179% | 0 | 0 | — |
case-20 | pass→pass | 19,122 | 30,763 | +61% | 1 | 1 | 0% | 1,798 | 3,551 | +97% | 0 | 0 | — |
case-21 | pass→pass | 12,923 | 5,520 | -57% | 1 | 1 | 0% | 1,299 | 2,754 | +112% | 0 | 0 | — |
case-22 | pass→pass | 6,841 | 8,885 | +30% | 1 | 1 | 0% | 1,095 | 2,536 | +132% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 16 counted toward the lift figure. The other 6 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +36 percentage points is the difference between those two pass rates over the 16 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.