Ejercicio 02: restringe un skill por path
Crea un skill que se autoactive solo cuando el usuario está trabajando con archivos de migración de base de datos. Este ejercicio se centra en el campo paths y en escribir un cuerpo de skill que haga cumplir convenciones estructurales.
Objetivo
El skill debe:
-
Autoactivarse cuando el usuario abre, edita o referencia un archivo que coincide con:
migrations/**(cualquier archivo bajo un directorio de migraciones)*.sql(cualquier archivo SQL en la raíz del proyecto)db/migrate/**(directorio de migraciones estilo Rails)
-
Comprobar convenciones de nombrado de archivos de migración:
- Formato con prefijo de timestamp:
YYYYMMDDHHMMSS_description.sql(p. ej.,20260513143207_add_user_roles.sql) - Formato secuencial:
NNNN_description.sql(p. ej.,0042_add_user_roles.sql) - Reportar nombres no conformes como advertencia
- Formato con prefijo de timestamp:
-
Avisar sobre operaciones SQL potencialmente peligrosas:
DROP TABLEsin una comprobación previa (comoDROP TABLE IF EXISTS)DELETEsin una cláusulaWHEREUPDATEsin una cláusulaWHERETRUNCATEen cualquier tabla- Eliminación de columnas (
DROP COLUMN) — la marca como aviso, no necesariamente como error
-
Buscar un rollback o un comentario que marque la migración como irreversible.
Qué escribir
Crea SKILL.md en un nuevo directorio. Piensa en:
- ¿Qué patrones
pathscubren las tres convenciones de directorio de migración anteriores? - ¿Debería ser
user-invocable: falseo dejarse por defecto? - ¿Necesita este skill algún
allowed-tools? - ¿Debería estar
disable-model-invocationactivado?
Formato de salida
El skill debe producir un checklist:
Migration review: 20260513143207_add_user_roles.sql
[ ] Naming convention: PASS / FAIL: <reason>[ ] Rollback present: YES / NO / MARKED IRREVERSIBLE[ ] Dangerous operations: NONE / WARNING: <list each one with line number>Validación
- Crea un archivo de migración de prueba con al menos una operación peligrosa y un nombre no conforme.
- Abre ese archivo en Claude Code.
- Confirma que el skill se activa automáticamente (sin que tú escribas
/skill-name). - Confirma que la salida coincide con el formato de checklist esperado.
- Confirma también que el skill NO se activa cuando abres un archivo TypeScript o Python normal.
Solución
Una solución desarrollada está en solutions/02-migration-guard/SKILL.md.