Ejercicio 03: renombrado de símbolo con varios argumentos
Crea un skill que reciba tres argumentos nombrados y renombre un símbolo dentro de un alcance especificado. Este ejercicio se centra en el campo arguments, en las referencias a argumentos nombrados en el cuerpo y en una lógica segura de buscar y reemplazar.
Objetivo
El skill recibe tres argumentos:
old-name— el nombre actual del símbolonew-name— el nombre con el que reemplazarloscope— dónde buscar:file,moduleoproject
Ejemplos de invocaciones:
/rename-symbol MyClass MyService file/rename-symbol getUserById fetchUserById module/rename-symbol legacyConfig appConfig projectQué escribir
El skill debe:
- Declarar argumentos nombrados en el frontmatter:
arguments: [old-name, new-name, scope] - Usar
$old-name,$new-namey$scopeen el cuerpo (no$0,$1,$2) - Poner
disable-model-invocation: true— renombrar es una acción con efectos secundarios - Poner
argument-hint: [old-name] [new-name] [file|module|project] - Incluir
allowed-toolspara el tooling que necesita (grep, sed, git diff, etc.)
Definiciones de alcance
file: renombra solo dentro del archivo actual o del archivo mencionado explícitamente en la tarea.
module: renombra dentro del directorio que contiene el archivo actual y sus subdirectorios inmediatos.
project: renombra a lo largo de todo el proyecto, excluyendo node_modules/, .git/, dist/ y build/.
Requisitos de seguridad
El skill NO debe renombrar subcadenas. MyClass no debe renombrar MyClassExtended ni loadMyClass. Usa patrones con límite de palabra en tus comandos grep y sed.
El skill debe mostrar al usuario una vista previa antes de hacer cualquier cambio, y pedir confirmación.
Validación
Escribe el skill y pruébalo en un proyecto pequeño:
- Crea un archivo con un símbolo usado en tres sitios.
- Invoca el skill con alcance
file. - Confirma que muestra correctamente la vista previa de los cambios.
- Confirma que no renombra coincidencias parciales.
- Confirma que
git diffmuestra solo los cambios esperados tras la confirmación.
Solución
Una solución desarrollada está en solutions/03-rename-symbol/SKILL.md.