clone-repo
Skill1 starsChanged 12 days agoMITView on GitHub
Clona un repositorio git dejando su contenido **directamente en el directorio actual** en vez de en un subdirectorio, preservando los ficheros ocultos que un copiado ingenuo se deja atrás (`.git`, `.github`, `.githooks`, `.gitignore`) y el histórico completo. Clona a un temporal y mueve, así que no duplica el `.git` de un repo grande. Antes de mover **inventaria las colisiones** con lo que ya hay en el directorio y pide confirmación: nunca borra a ciegas. Úsalo cuando el usuario diga "clona el repo aquí", "clonar repositorio en esta carpeta", "quiero los ficheros en este directorio, no en una subcarpeta", "clone a repo here", "pull repo contents into the current directory", o pegue una URL de GitHub/GitLab/Bitbucket dejando claro que quiere el contenido donde está. Cubre PowerShell y Bash.
In this repository22 other files it gives its agents.
- bitcoin-custody-auditSkill
- docker-cleanupSkill
- docker-compose-doctorSkill
- functional-user-flow-testerSkill
- git-pushSkill
- md-lint-fixSkill
- md-to-docSkill
- pre-commit-guardSkill
- preliminary-product-testerSkill
- pre-push-guardSkill
- python-deps-pinningSkill
- python-lint-guardSkill
- python-version-controlSkill
- release-evidence-auditorSkill
- repo-coherence-auditSkill
- security-auditSkill
- software-resilience-state-testerSkill
- sync-forkSkill
- nombre-del-skillSkill
- version-bumpSkill
- web-snapSkill
- yaml-controlSkill
The file
We split this skill into the rules it gives an agent
2 rules. About 0 are common, 2 are distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 138
Destino ya es un repo git: No lo sobrescribas: ofrece clonar a un subdirectorio o cambiar de carpeta.
- Distinctive: line 145
Submódulos: No se inicializan solos: si el repo los usa, hace falta git submodule update --init --recursive después.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
clone-repo — clonar dentro del directorio actual
git clone <url> crea siempre un subdirectorio. Cuando el directorio actual
es el destino —un worktree ya preparado, una carpeta de proyecto recién
creada, un repo que alguien clonó mal y hay que rehacer— hace falta otro flujo.
El error clásico al resolverlo a mano es perder los ficheros ocultos: un
mv repo/* . deja fuera .git (adiós histórico), .github (adiós CI),
.gitignore y .githooks. Este skill los mueve todos.
Alcance y permisos
| Capacidades del script | ninguna — es un skill de criterio, sin script ejecutable |
| Qué toca | Invoca git clone y mueve ficheros dentro del directorio actual, incluidos los ocultos (.git, .github, .githooks). |
| Qué nunca toca | No borra nada sin inventariar antes las colisiones. |
| Herramientas retiradas | WebFetch, WebSearch |
No declara allowed-tools, y es deliberado: ese campo preaprueba herramientas —se salta la confirmación durante el turno que invoca el skill— en vez de limitarlas. Declararlo aquí no acotaría nada: quitaría la confirmación del usuario. disallowed-tools sí retira herramientas del pool mientras el skill está activo, y ahí es donde se acota de verdad.
Mueve ficheros del directorio de trabajo, así que cada paso se confirma.
Cuándo usar
- El usuario entrega una URL y quiere el contenido «aquí» / «en esta carpeta».
- El directorio actual está vacío o debe recibir el repo tal cual.
- Alguien corrió
git clone <url>y obtuvo un subdirectorio que no quería.
Cuándo NO usar
- Si el objetivo es un subdirectorio: eso es
git clone <url> <dir>y no hace falta ningún skill. - Si el directorio actual ya es un repo git con trabajo propio: mover un
.gitencima destruye el historial local. Detente y dilo.
Pasos
- Obtén la URL del mensaje del usuario o de
args. Si no hay URL, pídela antes de tocar nada. - Comprueba el destino antes de clonar:
git rev-parse --is-inside-work-treey un listado del directorio actual incluyendo ocultos. Si el destino ya es un repo git, para y avisa. - Crea un temporal único para evitar colisiones.
- Clona en el temporal — avisa primero si el repo es grande.
- Inventaria las colisiones: qué entradas de primer nivel del repo ya existen en el destino. Si hay alguna, enséñalas y pide confirmación explícita antes de sobrescribir. Sin colisiones, sigue.
- Mueve todo, ocultos incluidos. Mover y no copiar evita duplicar el
.git. - Limpia el temporal, que queda vacío.
- Confirma: lista las entradas de primer nivel que llegaron y la rama y el
commit en el que quedó (
git log --oneline -1).
Implementación · Windows (PowerShell)
$url = "<REPO_URL>"
$tmpDir = Join-Path $env:TEMP "claude-clone-$(Get-Random)"
git clone $url $tmpDir
if ($LASTEXITCODE -ne 0) { throw "git clone falló" }
# Paso 5 — inventario de colisiones ANTES de mover nada.
$items = Get-ChildItem -Path $tmpDir -Force
$colisiones = $items | Where-Object { Test-Path (Join-Path (Get-Location) $_.Name) }
if ($colisiones) {
Write-Host "Ya existen en el destino:"
$colisiones | ForEach-Object { Write-Host " - $($_.Name)" }
# No continúes sin confirmación explícita del usuario.
throw "Colisiones detectadas: confirma antes de sobrescribir"
}
$items | ForEach-Object { Move-Item -Path $_.FullName -Destination (Get-Location) }
Remove-Item -Recurse -Force $tmpDirClaves:
-ForceenGet-ChildItemes lo que hace visibles.git,.github,.gitignorey compañía. Sin él, el clon llega mutilado y en silencio.- El inventario de colisiones corre antes del primer
Move-Item: o se mueve todo o no se mueve nada, en vez de dejar el destino a medias. Get-Locationen vez de una ruta fija: el skill funciona desde cualquier directorio.
Implementación · Linux · macOS · Git Bash
url="<REPO_URL>"
tmpDir=$(mktemp -d)
git clone "$url" "$tmpDir" || exit 1
shopt -s dotglob # los dotfiles entran en el glob
# Paso 5 — inventario de colisiones ANTES de mover nada.
colisiones=()
for item in "$tmpDir"/*; do
[ -e "$(pwd)/$(basename "$item")" ] && colisiones+=("$(basename "$item")")
done
if [ ${#colisiones[@]} -gt 0 ]; then
printf 'Ya existen en el destino:\n'
printf ' - %s\n' "${colisiones[@]}"
exit 1 # confirma con el usuario antes de sobrescribir
fi
mv "$tmpDir"/* "$(pwd)/"
rmdir "$tmpDir"Casos borde
- Destino no vacío. Es el caso que más daño hace. El inventario del paso 5 lo convierte en una decisión del usuario en vez de un borrado silencioso.
- Destino ya es un repo git. No lo sobrescribas: ofrece clonar a un subdirectorio o cambiar de carpeta.
- Repos grandes. El clon puede tardar; avísalo antes de empezar.
- Repos privados.
git clonepide credenciales como siempre; el skill no gestiona autenticación, deja que git la resuelva. - Solo el último snapshot. Si el usuario no quiere el histórico, sugiere
git clone --depth 1y ajusta. - Submódulos. No se inicializan solos: si el repo los usa, hace falta
git submodule update --init --recursivedespués.
Límites
- No gestiona autenticación ni tokens: delega en git.
- No resuelve un destino que ya es repo git — se detiene por diseño, porque
no hay forma segura de fusionar dos
.gitdistintos. - No verifica la procedencia del código clonado. Clonar es traerse código ajeno: trátalo como no confiable hasta revisarlo (no ejecutes sus scripts ni sus hooks a ciegas).
- No mueve permisos ni ACLs especiales más allá de lo que haga
mv/Move-Itemen esa plataforma. - No es atómico frente a interrupciones: si el proceso muere a mitad del
mv, parte del contenido queda en el temporal, cuya ruta se reporta.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

