ktg-plugin-marketplace/plugins/config-audit/commands/rollback.md

2.6 KiB

name description argument-hint allowed-tools model
config-audit:rollback Restore configuration from backup — list available backups or rollback a specific one [backup-id] Read, Write, Glob, Grep, Bash, AskUserQuestion sonnet

Config-Audit: Rollback

Restore configuration files from a previous backup. Without arguments, lists available backups. With a backup ID, restores files from that backup.

Arguments

  • $ARGUMENTS may contain a backup ID (format: YYYYMMDD_HHMMSS)

Behavior

List mode (no argument)

List available backups from ~/.claude/config-audit/backups/:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 Available Backups
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 1. 20260403_163045 — 3 files (settings.json, hooks.json, typescript.md)
 2. 20260403_141230 — 1 file (CLAUDE.md)
 3. 20260402_092015 — 5 files (full audit)

 Usage: /config-audit rollback 20260403_163045
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Read each backup's manifest.yaml to extract file list and timestamps.

Restore mode (with backup ID)

  1. Read manifest from ~/.claude/config-audit/backups/{backup-id}/manifest.yaml
  2. Show files that will be restored — ask for confirmation:
    AskUserQuestion:
      question: "Restore 3 files from backup 20260403_163045?"
      options:
        - "Yes, restore"
        - "Cancel"
    
  3. For each file in manifest: a. Read backup file from ~/.claude/config-audit/backups/{backup-id}/files/{safeName} b. Write to original path c. Verify checksum matches manifest
  4. Show result:
    Restored 3 files from backup 20260403_163045
    - .claude/settings.json (checksum verified)
    - hooks/hooks.json (checksum verified)
    - .claude/rules/typescript.md (checksum verified)
    

Delete mode

If user says "delete" after listing, confirm and remove the backup directory.

Implementation

Use the backup and rollback libraries directly:

import { listBackups, restoreBackup, deleteBackup } from '../scanners/rollback-engine.mjs';
import { parseManifest } from '../scanners/lib/backup.mjs';

Or via Bash:

# List backups
ls -1 ~/.claude/config-audit/backups/

# Read manifest
cat ~/.claude/config-audit/backups/{id}/manifest.yaml

# Restore (copy back)
cp ~/.claude/config-audit/backups/{id}/files/{safeName} {originalPath}