safe-change-gate
Skill0 starsChanged 27 days agoMITView on GitHub
Recorrer el checklist de seguridad antes de un cambio riesgoso. Úsala ANTES de editar migraciones o el modelo de datos, control de acceso o permisos, scripts shell, configuración de CI/CD o de despliegue, archivos marcados como PROTEGIDOS, o cualquier cosa que corra contra un ambiente compartido. También antes de ejecutar por primera vez un script cuyo nombre suene inocuo ("setup", "seed", "reset", "limpieza") contra algo que no sea 100% local y descartable.
- Deletes or force-pushes
In this repository8 other files it gives its agents.
- doc-drift-checkSkill
- incident-captureSkill
- pre-publication-auditSkill
- project-onboardingSkill
- requirements-intakeSkill
- ship-changesSkill
- small-model-handoffSkill
- verify-before-claimingSkill
The file
Files
Puerta de seguridad antes de un cambio riesgoso
Cada ítem de aquí nació de un incidente real. La pregunta correcta hecha antes de actuar evita una clase entera de error; la misma pregunta después es un postmortem.
Primero: ¿esto es un cambio riesgoso?
Sí, si toca alguno de estos:
| Área | Por qué |
| Esquema de datos / migraciones | Un sync automático o un script ad-hoc genera drift silencioso |
| Control de acceso / permisos | Un cambio que funciona para tu rol puede romper otros |
| Scripts shell | Un CRLF rompe un container Linux sin dar un error legible |
| CI/CD, despliegue, config por ambiente | El drift rama-vs-rama no se ve en el código |
Archivos PROTEGIDOS en architecture.md | Se extienden, no se modifican |
| Cualquier cosa contra un ambiente compartido | El error no es solo tuyo |
Si no toca ninguno: no necesitas esta skill, seguí adelante.
El checklist
Datos y esquema
- ¿El cambio de esquema va en una migración formal? Nunca un script ad-hoc, nunca "sync automático" del ORM en producción.
- Si el proyecto atraviesa ambientes greenfield y legacy a la vez, ¿la migración es tolerante (idempotente, no asume estado previo)?
- ¿Algún endpoint devuelve un objeto del ORM después del
commit()? Sus relaciones diferidas ya expiraron — serializa antes, o recarga.
Control de acceso
- ¿Verificaste que los roles existentes siguen funcionando para TODOS los roles, no solo el que estás probando?
- ¿Las comparaciones de rol son por nivel (
role.level >= requerido) y no por nombre en string? Un rol se renombra y toda comparación por string se rompe en silencio.
Scripts y line endings
- ¿El archivo
.shva a correr en Linux/container? Entonces LF, aunque lo edites en Windows..gitattributesdebe forzarlo ysafety-checkdebe atraparlo. - ¿El script nuevo tiene el bit de ejecución (
100755)? En100644falla en un clon nuevo.
Configuración por ambiente
- ¿Alguien propuso "compilar/procesar esto una sola vez y reusarlo en los N ambientes"? Confirmá primero si la configuración por ambiente vive en runtime o está horneada en el artefacto de build. Si está horneada, esa optimización rompe los otros ambientes en silencio.
- ¿El gap podría existir solo en el pipeline y no en el código? Comparar el pipeline de las 3 ramas, no solo leer la aplicación.
Acciones destructivas
- ¿La acción borra datos, sobrescribe algo en producción, o rota una credencial compartida? Quien la ejecuta debe entender exactamente qué se va a perder, y no debe poder dispararla por accidente.
- ¿Vas a correr por primera vez un script que suena inocuo contra algo que no sea 100% local?
Leé qué hace realmente. El nombre no es garantía: una tarea llamada "test setup" resultó hacer
DROP DATABASEcontra una conexión que en dos de tres ambientes no apuntaba a una base de test.
Secretos
- ¿Estás por poner un valor real en un archivo trackeado, "solo por ahora"? No hay "lo saco después": una vez pusheado, queda en el historial para siempre aunque un commit posterior lo corrija.
- ¿El secreto se lee en runtime desde un archivo gitignored, y falla con error explícito si falta?
Documentación en el mismo commit
- ¿El cambio agrega/modifica una regla de negocio, una decisión operativa, o un archivo protegido? Actualizá la doc correspondiente en el mismo commit.
- Si el pre-commit avisa que tocaste algo riesgoso sin tocar ninguna doc, no ignores el aviso sin pensarlo dos segundos.
Verificación mecánica
bash scripts/safety-check.sh # o: powershell -File scripts/safety-check.ps1Atrapa line endings, sintaxis y el aviso de doc-viva desincronizada. No sustituye al checklist — el script ve lo mecánico, el checklist ve lo que requiere criterio.
Relacionado
docs/03_architecture_patterns/destructive-action-confirmation.mddocs/03_architecture_patterns/tolerant-migrations.mddocs/03_architecture_patterns/branch-per-environment-config.mddocs/03_architecture_patterns/rbac-cascade.mddocs/03_architecture_patterns/secrets-management.mdskills/incident-capture/SKILL.md— cuando el checklist llega tarde y algo ya se rompió.
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.

