.cursor/skills/zip-project-root/SKILL.md
Creates a zip archive from the project root while excluding .git and downloaded dependency/source folders. Use when the user asks to zip a project without git metadata or dependencies, including short trigger prompts like zipprojectroot, @zipprojectroot, archiveproject, or run zipprojectroot.
npx skillsauth add doesitscript/dotfile-vnext zip-project-rootInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Create a zip archive in the project root that excludes repository metadata and downloaded dependencies/sources.
Treat these short prompts as direct requests to run this skill:
zipprojectroot@zipprojectrootarchiveprojectrun zipprojectroot<project-root>/<project-folder-name>.zip..git — repo metadata (root and any nested sub-repos)node_modules — npm dependencies.venv — Python virtual environment.venv-win — Windows Python virtual environmentvenv — alternate Python venv namevendor — vendored dependenciesdependencies / sources / downloaded / downloads — downloaded contentroles/galaxy — downloaded Ansible Galaxy roles (gitignored)collections/ansible_collections — downloaded Ansible collections (gitignored).facts_cache — Ansible fact cache (gitignored).ansible — Ansible runtime directory (gitignored).direnv — direnv cache (gitignored)-x wildcard * does NOT match / in fnmatch, so */.git/* only matches one level deep. Always include:
.venv/*, .git/*)*/.venv/*, */.git/*)*/*/.git/*) for sub-repos cloned inside the project
On macOS/Unix, use the zip command template below.Run from project root. Exclude root-level, one-level-deep, and two-level-deep nested dirs.
The two-level pattern (*/*/.git/*) covers sub-repos cloned one directory inside the project.
zip -r -q "<project-root>/<project-folder-name>.zip" . \
-x ".git/*" -x "*/.git/*" -x "*/*/.git/*" \
-x ".venv/*" -x "*/.venv/*" \
-x ".venv-win/*" -x "*/.venv-win/*" \
-x "venv/*" -x "*/venv/*" \
-x "node_modules/*" -x "*/node_modules/*" \
-x "vendor/*" -x "*/vendor/*" \
-x "dependencies/*" -x "*/dependencies/*" \
-x "sources/*" -x "*/sources/*" \
-x "downloaded/*" -x "*/downloaded/*" \
-x "downloads/*" -x "*/downloads/*" \
-x "roles/galaxy/*" -x "*/roles/galaxy/*" \
-x "collections/ansible_collections/*" -x "*/collections/ansible_collections/*" \
-x ".facts_cache/*" -x "*/.facts_cache/*" \
-x ".ansible/*" -x "*/.ansible/*" \
-x ".direnv/*" -x "*/.direnv/*"
$root = "<absolute-project-root>"
$projectName = Split-Path $root -Leaf
$zip = Join-Path $root "$projectName.zip"
if (Test-Path $zip) { Remove-Item $zip -Force }
$excludeDirs = @(
'.git', 'node_modules', '.venv', 'venv', 'vendor',
'dependencies', 'sources', 'downloaded', 'downloads'
)
$files = Get-ChildItem -Path $root -Recurse -File | Where-Object {
$full = $_.FullName
-not ($excludeDirs | ForEach-Object { $full -like "*\$_\*" } | Where-Object { $_ })
}
Compress-Archive -Path $files.FullName -DestinationPath $zip -CompressionLevel Optimal
Write-Output "Created: $zip"
For D:\develop\dotfile-vnext, output zip should be:
D:\develop\dotfile-vnext\dotfile-vnext.zip
documentation
Reads .envrc, creates or updates .envrc.sample with sanitized placeholder values safe for committing, and ensures .envrc is in .gitignore. Use when adding secrets to .envrc, setting up a new project environment, creating a sample env file, protecting secrets from git, or when asked to sanitize, clean, or document environment variables.
documentation
Registers remote documentation URLs in project-level .cursor/config.json and processes them for active use. Use when the user provides doc sources, asks to add/index docs, or requests @doc handles with suggested titles.
testing
Stage only related work, exclude unrelated dirty files, and create one or more grouped multiline git commits with clear titles and bodies. Use when the user asks to add and commit current work cleanly, especially in a dirty worktree.
data-ai
Create, refine, close, and reference GitHub issues for concrete brainstorming, resumable work, next-state improvements, and feature follow-ups.