careful-delete

SKILL.md

Careful Delete

Prerequisites

This elixir works best with these skills installed:

Skill Purpose If Missing
pre-mortem Blast radius assessment Falls back to built-in checklist
you-sure Explicit confirmation gate Falls back to built-in confirmation
retrospective Document what happened Skipped (optional)

When To Activate

Database operations:

  • DROP TABLE, DROP DATABASE
  • DELETE FROM without WHERE (or with broad WHERE)
  • TRUNCATE
  • Schema migrations that drop columns/tables

Git operations:

  • git push --force (especially to main/master)
  • git branch -D (force delete)
  • git reset --hard
  • git clean -fd
  • Deleting remote branches

Cloud/Infrastructure:

  • Deleting cloud resources
  • Terminating instances
  • Removing DNS records
  • Revoking credentials

Keywords in user request:

  • "delete all", "remove everything", "wipe", "nuke"
  • "force push", "hard reset"
  • "drop the table", "truncate"

Instructions

Phase 1: Assess Blast Radius

<phase_blast_radius> If pre-mortem skill installed: Invoke with focus on "what could go wrong."

If not installed:

## Blast Radius Assessment

**What's being deleted:**
- [ ] Specific items: [list them]
- [ ] Estimated count: [number of files/rows/resources]
- [ ] Size/scope: [GB, row count, etc.]

**Affected systems:**
- [ ] Production data at risk?
- [ ] Other services depend on this?
- [ ] Users will be affected?
- [ ] Backups exist?

**Recovery options:**
- [ ] Can be restored from backup: [Yes/No, how long]
- [ ] Can be recreated: [Yes/No, effort required]
- [ ] Truly irreversible: [Yes/No]

**Risk level:** [Low / Medium / High / STOP]

GATE: Do not proceed if:

  • Risk level is "STOP"
  • Production data at risk AND no backup verified
  • You can't list exactly what will be deleted
  • Blast radius is unclear

If high risk: Suggest safer alternatives first. </phase_blast_radius>

Phase 2: Confirm Explicitly

<phase_confirm> If you-sure skill installed: Invoke it now.

If not installed:

Present the confirmation checklist:

## Confirmation Required

**You are about to:**
[Exact command or operation]

**This will delete:**
- [Item 1]
- [Item 2]
- [Item N]

**This action is:** [Reversible / Irreversible]

**Backup status:** [Verified / Not verified / No backup]

---

⚠️ Type the following to confirm:

"I confirm deletion of [specific thing] with [consequence]"

Example: "I confirm deletion of users table with loss of 50k records"

GATE: Do not proceed without:

  • User typing the exact confirmation phrase
  • NOT just "yes" or "confirm" or "do it"
  • The confirmation must include WHAT is being deleted

If user tries to skip: Repeat the requirement. This gate exists for a reason. </phase_confirm>

Phase 3: Execute

<phase_execute> After confirmation received:

  1. Execute the exact command discussed (no modifications)
  2. Capture the output
  3. Note the timestamp
## Execution Log

**Timestamp:** [ISO 8601]
**Command:** [exact command run]
**Output:**

[captured output]

**Status:** [Success / Failed / Partial]

</phase_execute>

Phase 4: Document (Brief)

<phase_document> If retrospective skill installed: Invoke for significant deletions.

If not installed, capture minimally:

## Deletion Record

**Date:** [date]
**What was deleted:** [brief description]
**Why:** [reason]
**Deleted by:** [who requested]
**Recovery possible:** [Yes/No]

For routine deletions (temp files, test data): Skip this phase. For significant deletions (production data, important branches): Always document. </phase_document>

Output Format

## Careful Delete: [Brief description]

### Blast Radius
- Deleting: [what]
- Count: [how many]
- Reversible: [Yes/No]
- Backup: [status]

### Confirmation
User confirmed: "[their confirmation phrase]"

### Execution
- Command: `[command]`
- Timestamp: [time]
- Result: [success/failure]

### Record
[Brief note if significant deletion]

NEVER

  • Execute destructive commands without explicit confirmation
  • Accept "yes" or "do it" as confirmation (require specific phrase)
  • Proceed when blast radius is unclear
  • Skip confirmation because "it's just test data" (verify first)
  • Run broader deletion than what was confirmed
  • Assume backups exist without verification

ALWAYS

  • List exactly what will be deleted before asking for confirmation
  • Require confirmation phrase that includes the specific thing being deleted
  • Verify backup status for important data
  • Capture execution output
  • Suggest safer alternatives when risk is high

Example

User: "Delete the old user sessions table, we migrated to Redis"

Phase 1 - Blast Radius:

Blast Radius Assessment:

What's being deleted:

  • Table: user_sessions
  • Estimated rows: 2.3 million
  • Size: ~400MB

Affected systems:

  • Production data - but confirmed migrated to Redis
  • Other services depend on this - checked, none reference it
  • Users affected - no, sessions now in Redis
  • Backups exist - daily backup from 6 hours ago

Recovery: Can restore from backup within 30 minutes if needed

Risk level: Medium (production table, but verified unused)

Phase 2 - Confirm:

You are about to run:

DROP TABLE user_sessions;

This will permanently delete:

  • 2.3 million session records
  • 400MB of data

This action is: Irreversible (but restorable from backup)

⚠️ Type to confirm: "I confirm deletion of user_sessions table with 2.3M records"

User: "I confirm deletion of user_sessions table with 2.3M records"

Phase 3 - Execute:

Execution Log:

  • Timestamp: 2024-01-15T14:32:00Z
  • Command: DROP TABLE user_sessions;
  • Output: Query OK, 0 rows affected (0.45 sec)
  • Status: Success

Phase 4 - Document:

Deletion Record:

  • Table user_sessions dropped
  • 2.3M records removed
  • Reason: Migrated to Redis, table no longer used
  • Backup available: daily_backup_20240115
Weekly Installs
5
GitHub Stars
51
First Seen
Feb 3, 2026
Installed on
opencode5
codex5
claude-code4
github-copilot4
amp4
kimi-cli4