--- name: careful-delete description: | Before any destructive or irreversible operation (rm -rf, DROP TABLE, DELETE, force push, branch deletion, truncate), orchestrate a safety cycle: assess blast radius → confirm explicitly → document what happened. Chains pre-mortem and you-sure with built-in documentation. No dangerous operation executes without ceremony. allowed-tools: | bash: git, rm, drop, delete, truncate file: read --- # Careful Delete An elixir for dangerous operations. Destructive commands are irreversible - there's no undo for `rm -rf`, no rollback for a force push to main. This chains risk assessment → explicit confirmation → documentation, adding just enough friction to prevent "oops" moments that ruin your day. ## 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 **File operations:** - `rm -rf` - `rm -r` on directories - Deleting multiple files - Emptying directories **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 **If pre-mortem skill installed:** Invoke with focus on "what could go wrong." **If not installed:** ```markdown ## 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 2: Confirm Explicitly **If you-sure skill installed:** Invoke it now. **If not installed:** Present the confirmation checklist: ```markdown ## 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 3: Execute **After confirmation received:** 1. Execute the exact command discussed (no modifications) 2. Capture the output 3. Note the timestamp ```markdown ## Execution Log **Timestamp:** [ISO 8601] **Command:** [exact command run] **Output:** ``` [captured output] ``` **Status:** [Success / Failed / Partial] ``` ### Phase 4: Document (Brief) **If retrospective skill installed:** Invoke for significant deletions. **If not installed, capture minimally:** ```markdown ## 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. ## Output Format ```markdown ## 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:** > - [x] Production data - but confirmed migrated to Redis > - [ ] Other services depend on this - checked, none reference it > - [ ] Users affected - no, sessions now in Redis > - [x] 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: > ```sql > 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