Cómo refactorizar una función en toda la base de código sin romper nada
Cuándo usarlo: Necesitas renombrar una función, cambiar su firma o inlinear un helper — y se usa en 30+ archivos en todo el repositorio.
Requisitos previos
- Árbol de trabajo git limpio —
git statusno muestra nada staged — para que puedas usargit diffpara revisar ygit restoresi es necesario - Raíz del filesystem limitada al repositorio — Inicia con
npx -y @modelcontextprotocol/server-filesystem /abs/path/to/repo
Flujo
-
Encuentra cada sitio de llamadaBusca en la base de código cada uso de
getUserProfile(. Agrupa los resultados por archivo y dame un conteo por archivo.✓ Copiado→ Lista de archivos con conteos de coincidencias, sin distinguir entre tests y código fuente -
Ensayo de la edición en un archivoMuéstrame cómo se vería la edición en src/api/users.ts — un diff, no el archivo completo. No escribas aún.✓ Copiado→ Parche diff mínimo, no una reescritura completa del archivo
-
Aplica a todos los archivos e informaAplica la misma transformación a cada archivo del paso 1. Usa edit_file (a nivel de línea), no write_file (sobrescribir). Cuéntame cualquier archivo donde el patrón no coincidiera limpiamente.✓ Copiado→ Log de éxito/omisión por archivo
Resultado: Un diff de git enfocado y revisable en el que puedas ejecutar pruebas — sin reescrituras sorpresa de archivos completos.
Errores comunes
- Claude usa
write_filey silenciosamente pierde la mitad del archivo cuando la edición es compleja — Requiere explícitamenteedit_filepara cambios in-place; permitewrite_filesolo para archivos creados nuevos - Las coincidencias afectan código no relacionado (p. ej.
getUserProfileAvatar) — Ancla la búsqueda:getUserProfile(con el paréntesis final, o usa una regex de límite de palabra