Organize, back up, compress, split, and merge files/folders using rule-driven plans; use when you need safe previews, conflict handling, and verification before executing file operations.
58
67%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./scientific-skills/Other/file-management/SKILL.mdreferences/rule-schema.md).scripts/).Get-ChildItem, Copy-Item, Move-Item, Compress-Archive, Get-FileHashscripts/split_file.pyscripts/merge_parts.py# Inputs (adjust to your case)
$Root = "D:\Inbox"
$Target = "D:\Organized"
$Include = @("*.pdf","*.docx")
$ExcludeDirs = @("node_modules",".git")
$WhatIf = $true # set to $false to execute
# Build a manifest (preview plan)
$files = Get-ChildItem -Path $Root -Recurse -File |
Where-Object {
($Include | ForEach-Object { $_ }) -contains $_.Extension -eq $false
}
# Practical include filter (simple example)
$files = Get-ChildItem -Path $Root -Recurse -File -Include $Include
# Exclude directories by path segment
$files = $files | Where-Object {
$p = $_.FullName
-not ($ExcludeDirs | Where-Object { $p -match [regex]::Escape("\$_\") })
}
$plan = foreach ($f in $files) {
# Example target structure: by extension
$ext = $f.Extension.TrimStart(".").ToLower()
$destDir = Join-Path $Target $ext
$destPath = Join-Path $destDir $f.Name
[pscustomobject]@{
Source = $f.FullName
Destination = $destPath
Action = "Copy" # start with Copy; switch to Move after verification
}
}
# Preview
$plan | Format-Table -AutoSize
# Execute (safe defaults: create dirs; do not overwrite unless you decide to)
foreach ($item in $plan) {
$destDir = Split-Path $item.Destination -Parent
if (-not (Test-Path $destDir)) { New-Item -ItemType Directory -Path $destDir | Out-Null }
if (Test-Path $item.Destination) {
# Default conflict strategy: rename
$base = [IO.Path]::GetFileNameWithoutExtension($item.Destination)
$ext = [IO.Path]::GetExtension($item.Destination)
$dir = Split-Path $item.Destination -Parent
$item.Destination = Join-Path $dir ("{0}_{1}{2}" -f $base, (Get-Date -Format "yyyyMMddHHmmss"), $ext)
}
if ($item.Action -eq "Copy") {
Copy-Item -LiteralPath $item.Source -Destination $item.Destination -WhatIf:$WhatIf
} else {
Move-Item -LiteralPath $item.Source -Destination $item.Destination -WhatIf:$WhatIf
}
}$Source = "D:\Project"
$BackupRoot = "E:\Backups"
$Stamp = Get-Date -Format "yyyyMMdd_HHmmss"
$BackupDir = Join-Path $BackupRoot ("Project_{0}" -f $Stamp)
# Copy backup
Copy-Item -Path $Source -Destination $BackupDir -Recurse
# Create a hash manifest for verification
$manifestPath = Join-Path $BackupDir "hash-manifest.sha256.txt"
Get-ChildItem -Path $BackupDir -Recurse -File |
ForEach-Object {
$h = Get-FileHash -Algorithm SHA256 -LiteralPath $_.FullName
"{0} {1}" -f $h.Hash, ($_.FullName.Substring($BackupDir.Length + 1))
} | Set-Content -Encoding UTF8 $manifestPath$SourceDir = "D:\Project"
$ZipPath = "E:\Archives\Project.zip"
Compress-Archive -Path (Join-Path $SourceDir "*") -DestinationPath $ZipPath -Force# Split into 100MB parts (binary-safe)
python scripts/split_file.py --input "E:\ISO\big.iso" --part-size 100MB --output-dir "E:\ISO\parts"
# Merge parts back (binary-safe)
python scripts/merge_parts.py --input-dir "E:\ISO\parts" --output "E:\ISO\big.iso"Note: CLI flags may vary depending on the scripts’ implementation. If the scripts do not expose flags, adapt the commands to match their actual parameters.
Rule schema and planning
rootPath> N MB)skip, rename, overwrite)references/rule-schema.md as the canonical format for describing these rules.Preview-first execution
(source, destination, action) before any write operation.-WhatIf (or an explicit “dry run” mode) to validate the plan.Conflict handling
Verification
SHA256 via Get-FileHash, stored as a manifest for later validation.Binary-safe splitting/merging
63c61d3
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.