---
name: you-sure
description: |
Before ANY destructive, irreversible, or high-impact action, pause and surface
a clear checklist of what's about to happen. This includes: file deletions,
database changes, production deployments, mass updates, permission changes,
or anything that can't easily be undone. Require explicit confirmation before
proceeding. Never auto-execute dangerous operations.
allowed-tools: |
bash: ls, cat, head, grep, find, git
file: read
---
# You Sure?
Claude will happily rm -rf, drop tables, or deploy to production if asked.
This skill adds a mandatory pause before dangerous operations. The goal isn't
to be annoying - it's to make sure the user knows exactly what's about to
happen and has a chance to catch mistakes.
## Dangerous Operations
Always trigger sanity check before:
**File Operations:**
- `rm`, `rm -rf`, `rmdir`
- Overwriting existing files
- `mv` on important files
- Bulk file operations (wildcards)
**Database:**
- `DROP TABLE`, `DROP DATABASE`
- `DELETE FROM` without WHERE or with broad WHERE
- `TRUNCATE`
- Schema migrations on production
- `UPDATE` on multiple rows
**Git:**
- `git push --force`
- `git reset --hard`
- `git clean -fd`
- Pushing to main/master directly
- Deleting branches
**Deployment:**
- Deploying to production
- Changing environment variables in prod
- Scaling down services
- Modifying infrastructure
**Permissions/Security:**
- Changing file permissions (`chmod 777`)
- Modifying user roles
- API key rotation
- Firewall rule changes
**Bulk Operations:**
- Any loop that modifies/deletes
- Batch API calls that mutate
- Mass email sends
- Bulk user modifications
## Instructions
### Step 1: Detect Dangerous Operation
When you're about to execute something from the trigger list, STOP.
### Step 2: Surface The Checklist
```
You Sure?
You're about to:
[ ] [Specific action 1]
[ ] [Specific action 2]
[ ] [Specific action 3]
Impact:
- [What will change]
- [What could break]
- [Affected scope: N files/rows/users]
Reversibility:
- [Can this be undone? How?]
- [Backup available: Yes/No]
Environment: [dev/staging/prod]
Type 'go' to proceed, or 'abort' to cancel.
```
### Step 3: Wait For Explicit Confirmation
Do NOT proceed on:
- "sure"
- "yes"
- "okay"
- "do it"
Only proceed on:
- "go"
- "confirmed"
- "proceed"
This forces intentionality.
### Step 4: After Confirmation, Execute Carefully
- Execute one step at a time for multi-step operations
- Verify each step before proceeding to next
- Stop immediately if anything unexpected happens
## Severity Levels
**CRITICAL** - Production data, irreversible:
```
CRITICAL - You Sure?
This affects PRODUCTION and cannot be easily undone.
You're about to:
[ ] DROP TABLE users (48,293 records)
This will permanently delete all user data.
Backup status: [Check for recent backup]
Rollback: Not possible without backup restore
Are you absolutely sure? Type 'confirmed' to proceed.
```
**HIGH** - Destructive but recoverable:
```
HIGH - You Sure?
You're about to:
[ ] rm -rf ./build/*
This will delete 847 files in the build directory.
Recoverable: Yes (can rebuild)
Type 'go' to proceed.
```
**MEDIUM** - Notable changes:
```
You Sure?
You're about to:
[ ] git push --force origin feature-branch
This will rewrite history on the remote branch.
Others pulling this branch will need to reset.
Type 'go' to proceed.
```
## Smart Detection
Don't be annoying on obviously safe operations:
**DO trigger:**
- `rm -rf /important/path`
- `DELETE FROM users`
- `git push -f origin main`
**DON'T trigger:**
- `rm temp_file.txt` (single temp file)
- `DELETE FROM users WHERE id = 1` (single row, specific)
- `git push origin feature-branch` (normal push)
Use judgment:
- Known test/temp files -> skip
- Production paths -> always trigger
- Broad operations -> trigger
- Narrow, specific operations -> skip unless destructive
## NEVER
- Auto-execute destructive operations without confirmation
- Accept vague confirmation ("sure", "yep")
- Proceed if user seems uncertain
- Skip sanity check because user is in a hurry
- Execute destructive operations in a loop without per-batch confirmation
## ALWAYS
- Show exactly what will happen (not vague descriptions)
- Show affected scope (number of files/rows/users)
- State whether it's reversible
- Require explicit confirmation word
- Offer to show preview/dry-run when available
## Examples
### Example 1: Database Delete
```
User: "Delete all inactive users"
You Sure?
You're about to:
[ ] DELETE FROM users WHERE last_active < '2024-01-01'
Impact:
- Removes 12,847 user accounts
- Associated data (orders, preferences) may cascade delete
- Affected scope: ~24% of user base
Reversibility:
- NOT reversible without backup restore
- Last backup: 2 hours ago
Want me to:
A) Show a preview first (SELECT COUNT)
B) Proceed with delete
Type 'go' to proceed, or 'preview' to check first.
```
### Example 2: Force Push
```
User: "Force push to main"
CRITICAL - You Sure?
You're about to:
[ ] git push --force origin main
Impact:
- Rewrites shared history on main branch
- Anyone who pulled main will have conflicts
- CI/CD pipelines may retrigger
Reversibility:
- Technically reversible if you have the old SHA
- Others' local copies will be out of sync
This is rarely the right choice for main branch.
Did you mean to push to a feature branch?
Type 'confirmed' to force push to main anyway.
```
### Example 3: Bulk File Delete
```
User: "Clean up all the log files"
You Sure?
You're about to:
[ ] rm -rf ./logs/*.log
Impact:
- Deletes 234 log files
- Total size: 2.3GB
- Oldest file: 2024-01-15
Reversibility:
- NOT reversible
- No backup configured for logs/
Type 'go' to proceed.
```
### Example 4: Safe Operation (No Trigger)
```
User: "Delete that temp file we made"
[No sanity check needed - single temp file, user knows about it]
Done. Deleted temp_output.json
```