Agent skill
file-organizer
Comprehensive file organization workflow for SORT/ directory. Validates filenames, renames to CLAUDE.md standards, relocates to correct directories, runs OPSEC agents, and generates detailed reports. Main orchestrator for automated file organization pipeline.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/security/file-organizer-mattnigh-skills-collection
SKILL.md
File Organizer
Overview
This is the main orchestrator skill for the comprehensive file organization workflow. It coordinates all utility skills (filename-validator, file-renamer, file-relocator) and OPSEC agents (data-breach-agent, organization-sanitation-agent) to provide a complete, automated solution for organizing files from the SORT/ directory.
When to Use This Skill
- Primary use case: Organizing files from SORT/ directory
- After receiving new media or documentation assets
- During repository cleanup and standardization
- As part of periodic maintenance workflows
- When integrating external contributions
Complete Workflow Overview
┌─────────────────────────────────────────────────────────────┐
│ FILE ORGANIZER WORKFLOW │
└─────────────────────────────────────────────────────────────┘
1. SCAN SORT/ → Inventory all files
↓
2. VALIDATE → filename-validator skill
↓
3. ANALYZE → Extract metadata, categorize
↓
4. INTERACTIVE → Prompt user for unclear files
↓
5. RENAME → file-renamer skill
↓
6. RELOCATE → file-relocator skill
↓
7. OPSEC CHECK → data-breach-agent
↓
8. ORGANIZATION → organization-sanitation-agent
↓
9. REPORT → Generate comprehensive report
↓
10. COMPLETE → Summary and next steps
Phase-by-Phase Execution
Phase 1: Scan and Inventory
Goal: Discover all files in SORT/ directory and create initial inventory
Actions:
# Find all files in SORT/
find SORT/ -type f > sort_inventory.txt
# Count files by type
echo "Image files: $(find SORT/ -type f \( -name "*.png" -o -name "*.jpg" -o -name "*.svg" \) | wc -l)"
echo "Document files: $(find SORT/ -type f \( -name "*.pdf" -o -name "*.docx" \) | wc -l)"
echo "Markdown files: $(find SORT/ -type f -name "*.md" | wc -l)"
echo "Other files: $(find SORT/ -type f ! \( -name "*.png" -o -name "*.jpg" -o -name "*.svg" -o -name "*.pdf" -o -name "*.docx" -o -name "*.md" \) | wc -l)"
Output:
## Phase 1: Scan and Inventory
**SORT/ Directory Contents:**
- Total files: 25
- Image files: 15 (.png, .jpg, .svg)
- Document files: 7 (.pdf, .docx)
- Markdown files: 2 (.md)
- Other files: 1
**Files Discovered:**
1. Bear_Market_Strategy__When_Competitors_Exit.png
2. TerraHash Logo Final.PNG
3. Smart DIP Buying Banner.jpg
4. PRD - Smart Contract Implementation.pdf
5. ...
**Status:** ✅ Inventory complete
Phase 2: Filename Validation
Goal: Use filename-validator skill to identify non-compliant files
Invoke Skill:
Use the filename-validator skill to validate all files in SORT/
Expected Output:
- List of valid files (already compliant)
- List of invalid files with specific issues
- Categorization of violations (uppercase, spaces, missing components, etc.)
Decision Point:
- If all files valid → Skip to Phase 6 (Relocate)
- If some invalid → Continue to Phase 3
Phase 3: Content Analysis and Metadata Extraction
Goal: Analyze file contents to assist with categorization and renaming
For Images:
# Get image dimensions
identify -format "%f: %wx%h\n" SORT/*.png SORT/*.jpg SORT/*.svg 2>/dev/null
# Example output:
# Bear_Market_Strategy.png: 1920x1080
# TerraHash_Logo.PNG: 512x512
For Documents:
# Extract first page text to understand content
pdftotext -l 1 "SORT/document.pdf" - | head -20
# Or for DOCX
pandoc "SORT/document.docx" -t plain | head -20
For All Files:
def analyze_file_for_components(filename, file_type, content_preview=None):
"""
Use AI to suggest components based on filename and content
"""
filename_lower = filename.lower()
suggestions = {}
# Organization detection
if 'terrahash' in filename_lower or 'ths' in filename_lower:
suggestions['org'] = 'ths'
suggestions['product'] = 'stack'
elif 'ryno' in filename_lower:
suggestions['org'] = 'ryno'
suggestions['product'] = 'crypto'
# Type/category detection from filename
type_keywords = {
'logo': 'logo',
'banner': 'banner',
'diagram': 'diagram',
'infographic': 'infographic',
'icon': 'icon',
'screenshot': 'screenshot',
'prd': 'prd',
'guide': 'guide',
'api': 'api-docs',
'spec': 'specs',
'whitepaper': 'whitepaper'
}
for keyword, category in type_keywords.items():
if keyword in filename_lower:
if file_type == 'image':
suggestions['type'] = category
else:
suggestions['category'] = category
break
# Version detection
import re
version_patterns = [
r'v(\d+)[-.]?(\d+)?[-.]?(\d+)?',
r'version\s*(\d+)',
r'final',
r'draft'
]
for pattern in version_patterns:
match = re.search(pattern, filename_lower)
if match:
if pattern == r'final':
suggestions['version'] = 'v1-0'
elif pattern == r'draft':
suggestions['version'] = 'v0-1'
else:
major = match.group(1)
minor = match.group(2) or '0'
patch = match.group(3) or '0'
suggestions['version'] = f'v{major}-{minor}-{patch}'
break
# If no version found, default
if 'version' not in suggestions:
suggestions['version'] = 'v1-0'
# Descriptor/title extraction
# Remove known components and clean up remaining text
descriptor = filename_lower
for keyword in ['terrahash', 'ths', 'ryno', 'crypto', 'stack', 'mining',
'logo', 'banner', 'diagram', 'prd', 'guide', 'final', 'draft']:
descriptor = descriptor.replace(keyword, '')
# Clean up
descriptor = re.sub(r'[^a-z0-9\s]', '', descriptor)
descriptor = re.sub(r'\s+', '-', descriptor.strip())
descriptor = descriptor[:50] # Limit length
if descriptor:
suggestions['descriptor'] = descriptor
return suggestions
Output:
## Phase 3: Content Analysis
**File:** Bear_Market_Strategy__When_Competitors_Exit.png
- **Dimensions:** 1920x1080
- **AI Suggestions:**
- org: ths
- product: stack
- descriptor: bear-market-strategy
- type: infographic
- version: v1-0
**File:** TerraHash Logo Final.PNG
- **Dimensions:** 512x512
- **AI Suggestions:**
- org: terrahash
- product: stack
- descriptor: logo
- type: icon
- version: v1-0
**Status:** ✅ Analysis complete for 25 files
Phase 4: Interactive Prompts
Goal: Get user input for files where components cannot be determined automatically
For each unclear file, use AskUserQuestion:
**User Input Required**
We need your help categorizing these files:
**File 1:** Unclear_Diagram.png (1920x1080)
Please provide:
1. **Organization:** ryno, ths, or terrahash
2. **Product:** crypto, stack, or mining
3. **Descriptor:** (e.g., "architecture", "workflow", "comparison")
4. **Type:** banner, logo, icon, infographic, diagram, screenshot
AI Suggestions: org=ths, product=stack, type=diagram
Implementation:
def prompt_user_for_file(filename, file_type, ai_suggestions):
"""
Use AskUserQuestion tool to get user input
"""
if file_type == 'image':
questions = [{
"question": f"How should we categorize: {filename}?",
"header": "File Category",
"multiSelect": False,
"options": [
{
"label": "Ryno Crypto Services",
"description": "org=ryno, product=crypto"
},
{
"label": "TerraHash Stack",
"description": "org=ths, product=stack"
},
{
"label": "TerraHash Mining",
"description": "org=terrahash, product=mining"
}
]
}, {
"question": "What type of image is this?",
"header": "Image Type",
"multiSelect": False,
"options": [
{"label": "Banner", "description": "Wide marketing banner"},
{"label": "Logo/Icon", "description": "Branding or icon"},
{"label": "Diagram", "description": "Technical diagram"},
{"label": "Infographic", "description": "Data visualization"}
]
}]
# Similar for documents...
return questions
Handling User Input:
- If user provides all required info → Proceed with full rename
- If user provides partial info → Use AI suggestions for missing components
- If user skips → Move file to SORT/NEEDS_REVIEW/ for later
Output:
## Phase 4: User Input Collection
**Files Requiring Input:** 3
**Resolved:**
- ✅ unclear-diagram.png → User selected: ths/stack, type=diagram
- ✅ mystery-doc.pdf → User selected: ryno/crypto, category=guide
**Deferred:**
- ⏭️ ambiguous-file.dat → Moved to SORT/NEEDS_REVIEW/
**Status:** ✅ User input collected
Phase 5: Batch Rename
Goal: Use file-renamer skill to rename all non-compliant files
Invoke Skill:
Use the file-renamer skill to rename all files in SORT/ according to CLAUDE.md standards
Process:
- For each file with validation issues:
- Combine AI suggestions + user input
- Construct compliant filename
- Validate new filename
- Execute rename (use git mv when possible)
- Verify rename successful
Output:
## Phase 5: Batch Rename
**Files Renamed:** 18
**Files Skipped:** 5 (already compliant)
**Errors:** 0
**Rename Operations:**
1. ✅ Bear_Market_Strategy__When_Competitors_Exit.png
→ ths-stack-bear-market-strategy-infographic-1920x1080-v1-0.png
2. ✅ TerraHash Logo Final.PNG
→ terrahash-stack-logo-icon-512x512-v1-0.png
3. ✅ Smart DIP Buying Banner.jpg
→ ryno-crypto-smart-dip-buying-banner-1920x1080-v1-0.jpg
4. ✅ PRD - Smart Contract Implementation.pdf
→ ryno-crypto-prd-smart-contract-implementation-v1-0.pdf
**Rename Log:** SORT/rename_log_20251121_103000.txt
**Status:** ✅ Batch rename complete
Phase 6: Batch Relocate
Goal: Use file-relocator skill to move files to correct directories
Invoke Skill:
Use the file-relocator skill to relocate all files from SORT/ to their proper destinations
Process:
- For each renamed file:
- Determine destination based on filename pattern
- Create destination directory if needed
- Check for conflicts
- Execute relocation (use git mv)
- Verify file at destination
Output:
## Phase 6: Batch Relocate
**Files Relocated:** 20
**Directories Created:** 2
**Conflicts Resolved:** 1
**Relocations by Destination:**
### assets/images/ryno-crypto/ (8 files)
- ✅ ryno-crypto-logo-icon-512x512-v1-0.png
- ✅ ryno-crypto-smart-dip-buying-banner-1920x1080-v1-0.jpg
- ✅ ryno-crypto-architecture-diagram-2560x1440-v1-0.svg
### assets/images/terrahash-stack/ (5 files)
- ✅ terrahash-stack-logo-icon-512x512-v1-0.png
- ✅ ths-stack-bear-market-strategy-infographic-1920x1080-v1-0.png
### prd/active/ (4 files)
- ✅ ryno-crypto-prd-smart-contract-implementation-v1-0.pdf
- ✅ ths-stack-prd-tokenomics-v2-0.pdf
### docs/guides/ (3 files)
- ✅ terrahash-mining-guide-overview-v1-0.pdf
**New Directories Created:**
- assets/diagrams/infographics/
- docs/research/
**Status:** ✅ Batch relocation complete
Phase 7: Data Breach Detection
Goal: Run data-breach-agent to ensure no sensitive information
Invoke Agent:
Execute data-breach-agent.md to scan for sensitive data
What It Checks:
- Financial data (budgets, revenue, costs)
- AI/ML models and training data
- Treasury addresses and private keys
- NOC operational data
- Partnership agreements
- Proprietary algorithms
If Issues Found:
- ❌ BLOCK commit
- Generate OPSEC_ALERT.md
- Generate RECOVERY_PLAN.md
- Provide sanitization instructions
If Clean:
- ✅ PASS - No sensitive data detected
Output:
## Phase 7: Data Breach Detection
**Agent:** data-breach-agent
**Status:** ✅ PASS
**Scan Results:**
- Files scanned: 20
- Sensitive data found: 0
- Open source compliance: 78% (within threshold)
**Details:**
- No financial data detected
- No API keys or secrets found
- No proprietary algorithms exposed
- Open source / proprietary balance: COMPLIANT
**Status:** ✅ Data breach check passed
Phase 8: Organization Sanitation
Goal: Run organization-sanitation-agent for final validation
Invoke Agent:
Execute organization-sanitation-agent.md in full mode
What It Validates:
- Directory structure compliance
- File naming convention adherence
- Content placement accuracy
- Missing documentation
- Metadata completeness
Modes: audit, rename, redact, relocate, full
For This Workflow: Use full mode (all checks)
Output:
## Phase 8: Organization Sanitation
**Agent:** organization-sanitation-agent
**Mode:** full
**Status:** ✅ PASS
**Validation Results:**
### Directory Structure
- ✅ All required directories present
- ✅ No unauthorized directories created
- ✅ Subdirectories properly nested
### File Naming
- ✅ 20/20 files comply with naming conventions
- ✅ All components present and valid
- ✅ Versioning properly formatted
### File Placement
- ✅ All images in correct directories
- ✅ All documents in correct categories
- ✅ No misplaced files detected
### Content Validation
- ✅ No sensitive data in public files
- ✅ License information present
- ✅ Metadata complete
**Report Generated:** ORGANIZATION_AUDIT_REPORT.md
**Status:** ✅ Organization sanitation complete
Phase 9: Generate Comprehensive Report
Goal: Create detailed report of entire organization operation
Report Structure:
# File Organization Report
**Date:** 2025-11-21T10:30:00Z
**Operation ID:** org-20251121-103000
**Duration:** 5 minutes 23 seconds
---
## Executive Summary
- **Files Processed:** 25
- **Files Renamed:** 18
- **Files Relocated:** 20
- **Files Skipped:** 3
- **Errors:** 0
- **OPSEC Status:** ✅ PASS
- **Organization Status:** ✅ PASS
---
## Phase 1: Scan and Inventory
[Details from Phase 1]
---
## Phase 2: Filename Validation
[Details from Phase 2]
---
## Phase 3: Content Analysis
[Details from Phase 3]
---
## Phase 4: User Input
[Details from Phase 4]
---
## Phase 5: Batch Rename
[Details from Phase 5]
---
## Phase 6: Batch Relocation
[Details from Phase 6]
---
## Phase 7: Data Breach Detection
[Details from Phase 7]
---
## Phase 8: Organization Sanitation
[Details from Phase 8]
---
## Files Organized
### Images → assets/images/
1. ryno-crypto-logo-icon-512x512-v1-0.png
2. ryno-crypto-smart-dip-buying-banner-1920x1080-v1-0.jpg
3. ths-stack-bear-market-strategy-infographic-1920x1080-v1-0.png
4. terrahash-stack-logo-icon-512x512-v1-0.png
5. ...
### Documents → prd/, docs/
1. ryno-crypto-prd-smart-contract-implementation-v1-0.pdf
2. ths-stack-prd-tokenomics-v2-0.pdf
3. terrahash-mining-guide-overview-v1-0.pdf
4. ...
---
## Quality Metrics
- **Naming Compliance:** 100% (20/20 files)
- **Directory Structure:** ✅ Compliant
- **OPSEC Compliance:** ✅ PASS
- **Organization Quality:** ✅ Excellent
---
## Next Steps
1. ✅ Review organized files in their new locations
2. ✅ Verify all files accessible and uncorrupted
3. 🔲 Create git commit (pending user approval)
4. 🔲 Push to remote repository (pending user approval)
5. 🔲 Delete SORT/ directory (pending confirmation)
6. 🔲 Update README.md if needed
---
## Logs and Artifacts
- **Rename Log:** SORT/rename_log_20251121_103000.txt
- **Relocation Log:** relocation_log_20251121_103000.txt
- **OPSEC Report:** ORGANIZATION_AUDIT_REPORT.md
- **Rollback Script:** rollback_relocation_20251121_103000.sh
- **This Report:** FILE_ORGANIZATION_REPORT_20251121_103000.md
---
## Rollback Information
If you need to undo this organization:
```bash
# Rollback relocation
./rollback_relocation_20251121_103000.sh
# Rollback renames
# See: SORT/rename_log_20251121_103000.txt
Operation Status: ✅ SUCCESS
All files successfully organized according to CLAUDE.md standards. OPSEC compliance verified. Ready for commit.
**Save Report:**
```bash
# Save comprehensive report
cat > "FILE_ORGANIZATION_REPORT_$(date +%Y%m%d_%H%M%S).md" << 'EOF'
[report content]
EOF
Phase 10: Completion and Next Steps
Goal: Provide clear summary and actionable next steps
Output:
## ✅ File Organization Complete
**Summary:**
- 20 files successfully organized
- All files comply with CLAUDE.md standards
- OPSEC checks passed
- Ready for git commit
**What Changed:**
- Renamed 18 files to proper naming convention
- Relocated 20 files to correct directories
- Created 2 new subdirectories
- Generated comprehensive documentation
**SORT/ Directory Status:**
- Original files: 25
- Organized: 20
- Needs review: 3 (in SORT/NEEDS_REVIEW/)
- Remaining: 2 (README, .gitkeep)
**Next Steps:**
1. **Review Changes** (Recommended)
- Check files in new locations
- Verify filenames are accurate
- Ensure content is correct
2. **Create Git Commit** (Required)
- Stage all changes
- Create descriptive commit message
- See suggested message below
3. **Push to Remote** (Required)
- Push to origin
- Verify GitHub shows changes
4. **Clean Up** (Optional)
- Delete SORT/ directory (keep NEEDS_REVIEW if applicable)
- Archive logs and reports
- Update README.md if needed
**Suggested Commit Message:**
feat(organization): organize 20 files from SORT/ directory
- Renamed 18 files to comply with CLAUDE.md standards
- Relocated files to proper directories (assets/, prd/, docs/)
- Created subdirectories: assets/diagrams/infographics/, docs/research/
- Verified OPSEC compliance (data-breach-agent: PASS)
- Validated organization (organization-sanitation-agent: PASS)
Images organized:
- 8 files → assets/images/ryno-crypto/
- 5 files → assets/images/terrahash-stack/
- 2 files → assets/diagrams/
Documents organized:
- 4 files → prd/active/
- 3 files → docs/guides/
See FILE_ORGANIZATION_REPORT_20251121_103000.md for full details.
🤖 Generated with Claude Code Co-Authored-By: Claude noreply@anthropic.com
**Commands to Execute:**
```bash
# Stage all changes
git add assets/ prd/ docs/ SORT/
# Commit with message
git commit -m "$(cat <<'EOF'
feat(organization): organize 20 files from SORT/ directory
[full message above]
EOF
)"
# Push to remote
git push origin main
Files for Your Records:
- 📄 FILE_ORGANIZATION_REPORT_20251121_103000.md (comprehensive report)
- 📄 ORGANIZATION_AUDIT_REPORT.md (OPSEC validation)
- 📄 rename_log_20251121_103000.txt (rename details)
- 📄 relocation_log_20251121_103000.txt (relocation details)
- 🔧 rollback_relocation_20251121_103000.sh (rollback script)
Thank you for using file-organizer! 🎉
## Error Handling and Recovery
### Critical Errors
**If rename fails:**
- Stop workflow
- Keep original files in SORT/
- Report error with details
- Do not proceed to relocation
**If relocation fails:**
- Files remain in SORT/ with new names
- Can retry relocation
- Rollback script available
**If OPSEC check fails:**
- ❌ BLOCK entire workflow
- Generate OPSEC_ALERT.md
- Provide sanitization instructions
- Require manual intervention
### Recovery Procedures
**Undo relocation:**
```bash
./rollback_relocation_[timestamp].sh
Undo renaming:
# Use rename log to reverse
while read line; do
new_name=$(echo $line | cut -d' ' -f1)
old_name=$(echo $line | cut -d' ' -f3)
git mv "$new_name" "$old_name"
done < rename_log.txt
Complete rollback:
# If changes committed but not pushed
git reset --hard HEAD~1
# If changes not committed
git reset --hard HEAD
git clean -fd
Quality Assurance
Before marking organization complete:
- ✅ All files scanned and inventoried
- ✅ Validation completed for all files
- ✅ User input collected for unclear files
- ✅ All files renamed according to standards
- ✅ All files relocated to correct directories
- ✅ Data breach check passed
- ✅ Organization sanitation passed
- ✅ Comprehensive report generated
- ✅ Rollback scripts created
- ✅ No files lost or corrupted
- ✅ Git history preserved (used git mv)
- ✅ Next steps clearly documented
Integration with Commands
This skill is typically invoked by:
/sort-filescommand (primary use case)/cleanupcommand- Pre-commit hooks (for validation)
- Manual invocation for troubleshooting
Configuration Options
Can be customized via environment variables or parameters:
# Skip phases
SKIP_VALIDATION=false
SKIP_USER_INPUT=false
SKIP_RENAME=false
SKIP_RELOCATE=false
SKIP_OPSEC=false
# Behavior
INTERACTIVE_MODE=true
AUTO_COMMIT=false
AUTO_PUSH=false
DRY_RUN=false
# Logging
VERBOSE=true
LOG_LEVEL=INFO
Performance Considerations
For large file sets (100+ files):
- Process in batches of 25
- Show progress indicators
- Provide time estimates
- Allow pausing/resuming
For small file sets (< 10 files):
- Complete workflow in single pass
- Minimal user interaction
- Quick turnaround
Related Documentation:
- CLAUDE.md (Repository standards - source of truth)
- .claude/skills/filename-validator/skill.md (Phase 2)
- .claude/skills/file-renamer/skill.md (Phase 5)
- .claude/skills/file-relocator/skill.md (Phase 6)
- .claude/agents/data-breach-agent.md (Phase 7)
- .claude/agents/organization-sanitation-agent.md (Phase 8)
- .claude/commands/sort-files.md (Primary command interface)
Didn't find tool you were looking for?