downloads-organizer
Automatically organize and clean up downloads folder by categorizing files, removing duplicates, and optimizing storage space
What this skill does
# Downloads Organizer
Automatically organize and clean up your downloads folder with intelligent file categorization, duplicate detection, and storage optimization.
## Overview
Transform a chaotic downloads folder into a well-organized, searchable archive by:
- **Categorizing files** - Organize by type (documents, images, videos, installers, etc.)
- **Removing duplicates** - Detect and eliminate duplicate files
- **Cleaning old files** - Remove outdated installers and temporary files
- **Generating reports** - Provide detailed analysis of storage usage
- **Scheduled cleanup** - Set up automated maintenance
## Basic Workflow
### 1. Analyze Downloads Folder
Get current state:
```bash
cd ~/Downloads
python scripts/organizer.py --analyze
```
Output:
```
๐ Downloads Folder Analysis
Total Size: 45.2 GB
Total Files: 1,234
Total Folders: 87
Largest Files:
1. alma-0.0.204-mac-arm64.dmg (248 MB)
2. Antigravity.Tools_3.3.32_aarch64.dmg (14 MB)
File Distribution:
- Installers: 3.6 GB (8%)
- Documents: 662 MB (1.5%)
- Images: 1.2 GB (2.7%)
- Videos: 5.8 GB (12.8%)
```
### 2. Organize Files
Auto-categorize scattered files:
```bash
python scripts/organizer.py --organize --dry-run
```
Preview:
```
Would move:
- *.dmg โ Installers/ (15 files)
- *.png โ Images/ (42 files)
- *.pdf โ Documents/PDF/ (23 files)
- *.mp4 โ Videos/ (8 files)
- *.json โ Documents/ (12 files)
```
Execute:
```bash
python scripts/organizer.py --organize
```
### 3. Clean Up
Remove old and duplicate files:
```bash
python scripts/organizer.py --cleanup
```
Actions:
- Remove installers older than 60 days
- Delete duplicate files
- Remove empty folders
- Clean temporary files
### 4. Generate Report
Get detailed report:
```bash
python scripts/organizer.py --report --output report.md
```
## Organization Rules
### File Type Categories
**Documents:**
- `*.pdf`, `*.doc`, `*.docx`, `*.txt`, `*.md`, `*.rtf`
- `*.xls`, `*.xlsx`, `*.csv`, `*.json`, `*.yaml`, `*.yml`
**Images:**
- `*.png`, `*.jpg`, `*.jpeg`, `*.gif`, `*.svg`, `*.webp`, `*.bmp`
- `*.tiff`, `*.ico`
**Videos:**
- `*.mp4`, `*.mov`, `*.avi`, `*.mkv`, `*.webm`, `*.flv`
**Audio:**
- `*.mp3`, `*.wav`, `*.m4a`, `*.flac`, `*.aac`, `*.ogg`
**Installers:**
- `*.dmg`, `*.pkg`, `*.app`, `*.zip`, `*.tar.gz`, `*.rar`
- `*.exe`, `*.msi`
**Archives:**
- `*.zip`, `*.tar.gz`, `*.tgz`, `*.rar`, `*.7z`
**Code:**
- `*.py`, `*.js`, `*.ts`, `*.java`, `*.cpp`, `*.c`, `*.h`
- `*.html`, `*.css`, `*.scss`, `*.json`
**Data:**
- `*.csv`, `*.tsv`, `*.sql`, `*.db`, `*.sqlite`
### Folder Structure
```
~/Downloads/
โโโ Archives/ # Compressed archives
โโโ Audio/ # Audio files
โโโ Backups/ # Backup files and folders
โโโ Documents/ # Documents and text files
โ โโโ PDF/
โ โโโ Spreadsheets/
โโโ Images/ # Image files
โโโ Installers/ # Software installers
โโโ Projects/ # Project-related folders
โโโ Videos/ # Video files
โโโ Software/ # Application bundles
โโโ Others/ # Miscellaneous files
```
## Cleanup Strategies
### Time-Based Cleanup
**Installers:**
- Remove `*.dmg`, `*.pkg` files older than 60 days
- Keep only recent installers (last 2 months)
**Temporary Files:**
- Remove `*.tmp`, `*.temp`, `*.cache` files
- Clean `~/.Trash` contents
**Empty Folders:**
- Remove directories with 0 files
- Remove directories older than 90 days with < 5 files
### Duplicate Detection
Find duplicates by:
- **File name** - Exact name match
- **File size** - Same size (quick filter)
- **Hash comparison** - MD5/SHA256 for exact duplicates
Action:
```bash
python scripts/organizer.py --find-duplicates
```
Keep strategy:
- Keep newest file
- Keep file with shortest path
- Ask user for conflicts
### Large File Analysis
Identify space hogs:
```bash
python scripts/organizer.py --large-files --min-size 100MB
```
Output:
```
๐ฆ Large Files (>100MB):
1. alma-0.0.204-mac-arm64.dmg - 248 MB
2. recording_2026-01-10_23-22-53.mp4 - 12 MB
3. generated-1768282547017.png - 25 MB
```
## Automated Maintenance
### Schedule Cleanup
Set up cron job for automatic cleanup:
```bash
# Run cleanup every Sunday at 2 AM
0 2 * * 0 cd ~/Downloads && python scripts/organizer.py --cleanup
# Run organization daily at 9 AM
0 9 * * * cd ~/Downloads && python scripts/organizer.py --organize
```
### Automated Rules
Define custom rules in `config/rules.yaml`:
```yaml
patterns:
- pattern: "*_recording_*.mp4"
destination: Videos/Recordings/
keep_days: 30
- pattern: "generated-*.png"
destination: Images/Generated/
keep_days: 7
- pattern: "Screenshot*.png"
destination: Images/Screenshots/
keep_days: 30
```
## Configuration
### Settings File
Create `~/.downloads-organizer/config.yaml`:
```yaml
downloads_dir: ~/Downloads
dry_run: false
verbose: true
cleanup:
installer_age_days: 60
temp_age_days: 7
duplicate_action: keep_newest
organization:
auto_categorize: true
respect_existing_folders: true
create_missing_folders: true
exclusions:
- "*.locked"
- ".*"
- "node_modules"
- ".git"
```
### Custom Categories
Add custom file types to categories:
```yaml
custom_categories:
design:
extensions: [".sketch", ".fig", ".psd", ".ai"]
folder: "Design/"
data_science:
extensions: [".ipynb", ".r", ".mat", ".h5"]
folder: "DataScience/"
```
## Usage Examples
### Example 1: Weekly Maintenance
```bash
# Full cleanup cycle
python scripts/organizer.py \
--organize \
--cleanup \
--report \
--output ~/Downloads/weekly-report.md
```
### Example 2: Quick Organize
```bash
# Just organize new files
python scripts/organizer.py --organize --new-only
```
### Example 3: Deep Clean
```bash
# Aggressive cleanup with confirmation
python scripts/organizer.py \
--cleanup \
--installer-age 30 \
--remove-duplicates \
--remove-empty-folders \
--confirm
```
### Example 4: Project Cleanup
```bash
# Move project files to Projects/ folder
python scripts/organizer.py \
--move-projects \
--project-pattern "*-project*" \
--destination Projects/
```
## Integration
### Obsidian Integration
Link organized files to Obsidian vault:
```bash
python scripts/organizer.py --link-obsidian --vault ~/Documents/ObsidianVault
```
Creates:
- `[[Downloads/Images/file.png]]` links in Obsidian
- Daily notes with new files
- Mappings for easy searching
### Cloud Sync Integration
Sync organized folders to cloud:
```bash
python scripts/organizer.py --sync-cloud \
--provider icloud \
--folders Documents,Images \
--exclude-backups
```
### Notification Integration
Send cleanup notifications:
```bash
python scripts/organizer.py --cleanup --notify \
--method slack \
--channel #downloads
```
## Best Practices
### Organization
โ
**DO:**
- Organize regularly (daily or weekly)
- Use consistent folder structure
- Keep recent installers accessible
- Archive important files to permanent locations
โ **DON'T:**
- Wait until downloads folder is huge
- Mix unrelated file types
- Delete files without reviewing
- Keep old installers "just in case"
### Cleanup
โ
**DO:**
- Set appropriate age thresholds
- Review duplicates before deleting
- Check large files before cleanup
- Backup important files first
โ **DON'T::**
- Delete files blindly
- Set too aggressive cleanup
- Ignore duplicate warnings
- Skip backup checks
### Performance
โ
**DO:**
- Schedule cleanup during low activity
- Use dry-run first
- Monitor disk space after cleanup
- Keep logs for troubleshooting
โ **DON'T:**
- Run cleanup while downloading
- Organize during file transfers
- Disable safety checks
- Ignore error messages
## Troubleshooting
### File Move Conflicts
**Problem:** "File already exists" error
**Solution:**
```bash
python scripts/organizer.py --organize --handle-conflicts ask
```
Options:
- `ask` - Prompt for each conflict
- `skip` - Skip conflicting files
- `overwrite` - Overwrite existing files
- `rename` - Add timestamp to new files
### Permission Errors
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.