Help the user scaffold a project with degit. Use npx degit@latest unless they have installed degit globally.
Start with the smallest command that matches their request:
shnpx degit@latest user/repo npx degit@latest user/repo my-project npx degit@latest user/repo#branch my-project
Sources can be GitHub (user/repo, github:user/repo, or a GitHub URL), GitLab (gitlab:user/repo, a GitLab URL, or gitlab://host/user/repo), Bitbucket (bitbucket:user/repo or URL), Sourcehut (git.sr.ht/user/repo, SSH form, or URL), or Gist (https://gist.github.com/<id>, https://gist.github.com/<user>/<id>, git@gist.github.com:<id>.git, or ssh://git@gist.github.com/<id>). A #ref can name a branch, tag, or commit. A source may include a subdirectory path.
- The destination defaults to the current directory and must be empty. Do not suggest
--forceunless the user explicitly wants to overwrite its contents. - Use
--cacheto require a cached copy (no network). Without--cache, degit tries the network first and falls back to the cached copy if the network is unreachable. Use--verboseto diagnose failures.--mode=gitstill works but is unnecessary; tar snapshots are the default. - Use
--files <paths>or-F <paths>to clone only specific files or directories; separate multiple paths with commas or repeat the flag. - Private repositories are handled automatically, with SSH fallback when needed. SSH/private use requires
gitonPATHand working repository credentials. - For reusable shortcuts, use
degit alias <repo> <name>, thendegit <name>; usedegit lsanddegit unalias <name>to manage aliases. - If a template needs post-download changes, explain that its top-level
degit.jsoncan useclone,search_replace, andremoveactions.search_replaceuses a named environment variable for its replacement value.
If source, ref, destination, or whether the destination is empty is unknown, ask before giving a potentially destructive command.

