Safe Project Organizer
Overview
This skill enables Claude Code to analyze project structure and suggest safe organizational improvements like moving files, removing unused directories, and restructuring folders. It prioritizes safety through multi-stage validation, dry-run previews, and explicit user confirmation.
Core Safety Principles
1. Read-Only Analysis Phase
- All analysis operations are read-only
- No modifications occur during scanning
- Complete project snapshot before any changes
2. Dry-Run Validation
- All operations preview changes before execution
- Show exact file paths being affected
- Calculate impact metrics (files moved, deleted, created)
3. Explicit User Confirmation
- Require confirmation for each operation category
- Display detailed change summary
- Allow selective approval of suggestions
4. Atomic Operations with Rollback
- Each operation is reversible
- Create backup references before modifications
- Maintain operation log for audit trail
5. Protected File Patterns
Never modify files matching these patterns:
.git/,.svn/,.hg/(version control)node_modules/,vendor/,venv/,.venv/(dependencies).env*,secrets.*,credentials.*(sensitive data)package-lock.json,yarn.lock,pnpm-lock.yaml(lock files)dist/,build/,.next/,.nuxt/(build artifacts)
When to Use This Skill
Use this skill when you encounter any of these scenarios:
Project Cleanup:
- "My project root is messy with too many files"
- "I have empty directories that should be cleaned up"
- "Documentation files are scattered everywhere"
Standardization:
- "This project doesn't follow standard directory structure"
- "Source files are mixed with config files in root"
- "I need to organize files by type for better maintainability"
Migration Preparation:
- "I'm about to hand off this project and need to clean it up"
- "This codebase needs better organization before adding new features"
- "I want to standardize the project structure"
Safety Concerns:
- "I'm nervous about accidentally breaking something"
- "I need to see exactly what will change before making changes"
- "I want a safe way to reorganize without losing data"
Safe Usage Workflow
Step 1: Initial Scan (Read-Only)
Execute the project organizer script with --scan flag:
python3 scripts/project_organizer.py /path/to/project --scan
What it does:
- Scans entire project structure
- Identifies file types, counts, sizes
- Detects empty directories
- Lists protected files
- No modifications made
Example Output:
π Scanning project: /path/to/project
π This is a READ-ONLY scan. No changes will be made.
β
Scan complete!
π Directories: 24
π Files: 156
π Protected items: 42
π Empty directories: 3
Step 2: Generate Suggestions (Still Read-Only)
Use --analyze flag to generate organizational suggestions:
python3 scripts/project_organizer.py /path/to/project --analyze
What it does:
- Performs full analysis
- Generates organizational suggestions
- Displays suggestion count
- Still no modifications
Step 3: Preview Changes (Detailed Review)
Use --preview flag to see exactly what will change:
python3 scripts/project_organizer.py /path/to/project --preview
What it does:
- Shows detailed preview of ALL suggestions
- Groups by action type (move, delete, create)
- Displays risk levels (π’ low, π‘ medium, π΄ high)
- Shows safety checks for each operation
- Lists exact file paths affected
- Zero modifications
Example Preview Output:
π PREVIEW MODE - No changes will be made
============================================================
π Total Suggestions: 8
π― By Action:
MOVE: 5
DELETE: 2
CREATE_DIR: 1
β οΈ By Risk Level:
π’ LOW: 6
π‘ MEDIUM: 2
π Detailed Suggestions:
MOVE Operations (5):
1. π’ Documentation/config files organized in docs/ directory
FROM: CONTRIBUTING.md
TO: docs/CONTRIBUTING.md
Safety Checks:
β File is not a primary config
β No imports reference this file path
β Not in protected patterns
DELETE Operations (2):
1. π’ Empty directory with no files or subdirectories
PATH: old_backup/temp
Safety Checks:
β Directory is empty
β Not a protected path
β No version control markers
Step 4: Dry Run (Simulation Only)
Use --execute flag for dry-run simulation:
python3 scripts/project_organizer.py /path/to/project --execute
What it does:
- Simulates ALL operations
- Shows what WOULD happen
- Validates all safety checks
- Reports success/failure/skipped
- No actual changes made
Step 5: Real Execution (Requires Confirmation)
Use --execute-real flag only after thorough review:
python3 scripts/project_organizer.py /path/to/project --execute-real
What it does:
- Prompts for explicit confirmation
- Executes approved changes
- Creates audit log (
.project_organizer.log) - Shows real-time progress
- Actually modifies project
Confirmation Prompt:
β οΈ WARNING: This will make REAL changes. Type 'yes' to confirm: yes
Operation Types and Safety
Move Operations
Low Risk (π’):
- Moving documentation files to
docs/ - Moving config files to
config/ - Moving scripts to
scripts/
Medium Risk (π‘):
- Grouping source files by type
- Creating organizational directories
Safety Checks Performed:
- Source file exists and is accessible
- Source is not in protected patterns
- Destination doesn't already exist
- Parent directories can be created safely
Delete Operations
Low Risk (π’):
- Removing truly empty directories
- Deleting temporary files
Safety Checks Performed:
- Target exists
- Directory is completely empty
- Not a protected path
- No version control markers
Create Directory Operations
Low Risk (π’):
- Creating standard directories (
src/,docs/,tests/) - Creating organizational structure
Safety Checks Performed:
- Target doesn't already exist
- No naming conflicts
- Standard directory pattern
- Parent directories can be created
Protected File Patterns
The skill automatically protects these paths from modification:
Version Control
.git/,.git/**.svn/,.svn/**.hg/,.hg/**
Dependencies
node_modules/,node_modules/**vendor/,vendor/**venv/,venv/**.venv/,.venv/**
Build Artifacts
dist/,dist/**build/,build/**.next/,.next/**.nuxt/,.nuxt/**out/,out/**
Sensitive Data
.env*secrets.*credentials.*
Lock Files
package-lock.jsonyarn.lockpnpm-lock.yamlGemfile.lockPipfile.lockpoetry.lock
Cache Files
__pycache__/,__pycache__/**
Best Practices
Before Running the Skill
- Commit Changes: Ensure all current work is committed to version control
- Backup Important Files: Have a recent backup or git stash available
- Review Project: Understand what files and directories are important
- Test Access: Verify you have necessary permissions
During Execution
- Always Start with Scan: Begin with
--scanto understand the project - Review Suggestions Carefully: Look through all generated suggestions
- Use Preview Mode: Always use
--previewbefore any execution - Test with Dry Run: Use
--executeto simulate changes safely
After Execution
- Verify Project Works: Test that your project still builds/runs correctly
- Review Operation Log: Check
.project_organizer.logfor what was changed - Commit Separately: Commit organizational changes separately from functional changes
- Update Documentation: Update any documentation that references old file paths
Safety Checklist
Before using --execute-real, verify:
- [ ] Project is committed to version control
- [ ] All suggestions reviewed in preview mode
- [ ] Dry run completed successfully
- [ ] No critical files are being moved
- [ ] Build/test processes still work
- [ ] Team members notified if shared project
Error Handling and Troubleshooting
Common Issues
Permission Denied:
- Ensure you have write permissions
- Check file ownership
- May need appropriate privileges
Path Protected:
- Review protected patterns
- Confirm the path should be modified
- Adjust patterns if needed
Changes Not Appearing:
- Verify you used
--execute-real(not just--execute) - Check the operation log
- Confirm "yes" was entered at confirmation prompt
Recovery Options
Git Recovery:
git status # See what changed
git checkout -- . # Restore all changes
git reset --hard HEAD # Full reset to last commit
Operation Log Review:
cat .project_organizer.log # Review detailed operation log
Customization
Adding Custom Protected Patterns
Edit the PROTECTED_PATTERNS list in the script:
PROTECTED_PATTERNS = [
# Existing patterns...
'my_important_dir/**', # Custom protection
'*.critical', # Protect critical files
]
Custom Organization Rules
Edit MOVABLE_ROOT_FILES dictionary:
MOVABLE_ROOT_FILES = {
'assets': ['*.png', '*.jpg', '*.svg'], # Move images to assets/
'data': ['*.csv', '*.json', '*.xml'], # Move data files
}
Custom Safety Validators
Extend the SafeProjectOrganizer class:
def _custom_safety_check(self, path: Path) -> bool:
"""Your custom safety logic"""
# Return True if safe, False if should be protected
return True
Integration with Claude Code
As a Skill Tool
This skill integrates naturally with Claude Code's workflow:
- User Request: "Organize my project structure"
- Skill Activation: Safe Project Organizer loads
- Sequential Execution: Follows the 5-step workflow automatically
- User Confirmation: Confirms each step before proceeding
- Safety Validation: All operations include safety checks
Example User Interactions
Simple Cleanup:
User: "My project root is messy, can you help organize it?"
Claude: [Uses skill to scan and suggest safe improvements]
Targeted Organization:
User: "I have too many documentation files scattered around"
Claude: [Uses skill to identify and suggest grouping docs/ folder]
Pre-Migration Cleanup:
User: "I need to clean up before handing this project to another team"
Claude: [Uses skill for comprehensive safe reorganization]
Resources
scripts/
project_organizer.py- The main safe project organizer script with comprehensive safety features
The script includes:
- Multi-phase analysis and execution
- Protected pattern detection
- Risk level classification
- Comprehensive safety checks
- Audit trail generation
- Rollback information preservation
This script can be executed independently of Claude Code for manual project organization tasks.
Safety Guarantee: This skill never modifies files without explicit confirmation, always previews changes, and includes comprehensive safety checks to protect important project data.
MANDATORY USER VERIFICATION REQUIREMENT
Policy: No Fix Claims Without User Confirmation
CRITICAL: Before claiming ANY issue, bug, or problem is "fixed", "resolved", "working", or "complete", the following verification protocol is MANDATORY:
Step 1: Technical Verification
- Run all relevant tests (build, type-check, unit tests)
- Verify no console errors
- Take screenshots/evidence of the fix
Step 2: User Verification Request
REQUIRED: Use the AskUserQuestion tool to explicitly ask the user to verify the fix:
"I've implemented [description of fix]. Before I mark this as complete, please verify:
1. [Specific thing to check #1]
2. [Specific thing to check #2]
3. Does this fix the issue you were experiencing?
Please confirm the fix works as expected, or let me know what's still not working."
Step 3: Wait for User Confirmation
- DO NOT proceed with claims of success until user responds
- DO NOT mark tasks as "completed" without user confirmation
- DO NOT use phrases like "fixed", "resolved", "working" without user verification
Step 4: Handle User Feedback
- If user confirms: Document the fix and mark as complete
- If user reports issues: Continue debugging, repeat verification cycle
Prohibited Actions (Without User Verification)
- Claiming a bug is "fixed"
- Stating functionality is "working"
- Marking issues as "resolved"
- Declaring features as "complete"
- Any success claims about fixes
Required Evidence Before User Verification Request
- Technical tests passing
- Visual confirmation via Playwright/screenshots
- Specific test scenarios executed
- Clear description of what was changed
Remember: The user is the final authority on whether something is fixed. No exceptions.