Agent skill

downloads-organizer

Automatically organize and clean up downloads folder by categorizing files, removing duplicates, and optimizing storage space

Stars 36
Forks 8

Install this agent skill to your Project

npx add-skill https://github.com/ttmouse/skills/tree/main/downloads-organizer

SKILL.md

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

Problem: "Permission denied" when moving files

Solution:

bash
# Fix permissions
chmod -R u+rw ~/Downloads

# Run with sudo (last resort)
sudo python scripts/organizer.py --cleanup

Slow Performance

Problem: Organization takes too long

Solution:

bash
# Exclude large directories
python scripts/organizer.py --exclude "Projects/,Backups/"

# Use parallel processing
python scripts/organizer.py --parallel --workers 4

# Skip hash comparison for duplicates
python scripts/organizer.py --find-duplicates --quick

Resources

  • Main script: scripts/organizer.py
  • Configuration guide: references/configuration.md
  • File type mappings: references/file-types.yaml
  • Troubleshooting: references/troubleshooting.md

Safety Features

Backup Before Cleanup

Always create backup before major cleanup:

bash
python scripts/organizer.py --backup --dest ~/Downloads-backup

Undo Functionality

Roll back changes:

bash
python scripts/organizer.py --undo --from ~/Downloads-backup

Confirmation Prompts

Confirm destructive actions:

bash
python scripts/organizer.py --cleanup --confirm

Logging

Detailed logging for audit:

bash
python scripts/organizer.py --organize --log-level debug --log-file organizer.log

Last Updated: 2026-01-15 Version: 1.0.0

Expand your agent's capabilities with these related and highly-rated skills.

ttmouse/skills

template-skill

Replace with description of the skill and when Claude should use it.

36 8
Explore
ttmouse/skills

prompt-analyzer

提示词分析与洞察 - 查看Prompt详情、对比差异、推荐相似提示词、元素库统计

36 8
Explore
ttmouse/skills

meta-skill

元技能 - 对话复盘与技能进化。在对话结束后分析:已用技能是否可优化、未形成技能的流程是否值得沉淀。当用户说"复盘"、"回顾对话"、"优化技能"、"沉淀经验"、"这个流程可以复用吗"、"技能体系复盘"、"技能健康检查"等关键词时触发,或用户显式调用 /meta-skill。

36 8
Explore
ttmouse/skills

doc-coauthoring

Guide users through a structured workflow for co-authoring documentation. Use when user wants to write documentation, proposals, technical specs, decision docs, or similar structured content. This workflow helps users efficiently transfer context, refine content through iteration, and verify the doc works for readers. Trigger when user mentions writing docs, creating proposals, drafting specs, or similar documentation tasks.

36 8
Explore
ttmouse/skills

gemini-gen

Generates images using Google's Gemini model. Prioritizes standard resolution to save quota. Automatically opens images on macOS.

36 8
Explore
ttmouse/skills

universal-writer

通用写作技能:从数据到文章的自动化写作工作流。 支持多种写作模板(专题、教程、分析、总结、文档),可根据数据源或交互式生成文章。 当用户说"写作"、"生成文章"、"写文档"、"universal-writer"时触发。

36 8
Explore

Didn't find tool you were looking for?

Be as detailed as possible for better results