data-layer
Skill0 starsChanged 42 days agoMITView on GitHub
Store data: schema design, tables, relations, migrations, backups, imports, cleanup. \"cómo modelo esto\", \"add a column\", \"migrar datos\", anything that can lose records.
Files
Data-Layer — lo único que no se puede volver a compilar
Overview
El código se puede reescribir en una tarde. Los datos perdidos no vuelven. Por eso el modelo de datos es la decisión más cara de revertir de todo el proyecto, y una migración mal hecha es el incidente con peor final posible.
Dos reglas cubren la mayor parte del riesgo: la base de datos defiende sus propias reglas (no confíes en que la aplicación sea el único camino de entrada) y ninguna migración destructiva corre sin respaldo verificado y forma de volver atrás.
Cuándo usar
- Diseñar el esquema inicial o agregar entidades.
- Cualquier migración: columnas, tipos, índices, renombres, borrados.
- Importar, exportar, limpiar o deduplicar datos.
- Definir respaldos y retención.
- Datos que se corrompieron o se duplicaron.
Cuándo NO usar
| Situación | Ruta |
| Consulta lenta, esquema correcto | performance |
| Elegir motor como decisión estructural mayor | architecture (con ADR) |
| Datos personales y cumplimiento | app-security (esta skill cubre la parte técnica) |
Regla de hierro: nada destructivo sin respaldo probado
ANTES DE UNA MIGRACION DESTRUCTIVA: RESPALDO HECHO, RESTAURACION PROBADA, PASO ATRAS ESCRITO.
UN RESPALDO QUE NUNCA SE RESTAURO NO ES UN RESPALDO: ES UN ARCHIVO.Modelado
- Empieza por las entidades del negocio y sus reglas, no por las pantallas. La pantalla cambia cada semana; la entidad, casi nunca.
- Normaliza primero; desnormaliza después con una razón medida (
performance), documentada como ADR. - Restricciones en la base: claves foráneas,
NOT NULL,UNIQUE,CHECK. Son la última línea de defensa y la única que no se puede saltar desde otro script. - Claves: identificador estable e interno; nunca uses un dato de negocio (correo, documento) como clave primaria — cambian.
- Tipos honestos: dinero en enteros de centavos o tipo decimal, jamás flotante. Fechas con zona horaria explícita, guardadas en UTC. Enumeraciones controladas.
- Marcas de tiempo
creado_en/actualizado_enen todo. Cuestan nada y salvan investigaciones. - Borrado lógico cuando el dato tenga valor histórico o legal; borrado físico cuando el usuario tiene derecho al olvido. Decide explícitamente: los dos mezclados son bugs asegurados.
- Estados de negocio como máquina de estados explícita, no como banderas booleanas sueltas que se contradicen entre sí.
Migraciones
- Versionadas y en el repo, nunca cambios a mano en producción. Si se toca a mano, se pierde la reproducibilidad y el próximo despliegue rompe.
- Cada migración tiene paso atrás escrito (o una nota explícita de por qué es irreversible y qué se hace en su lugar).
- Probar la migración sobre una copia real de producción, no sobre datos de juguete: el tiempo y los conflictos de datos solo aparecen con el volumen y la suciedad reales.
- Expandir → migrar → contraer para cambios que rompen: agregar lo nuevo, escribir en ambos, copiar datos, cambiar lecturas, y recién en un despliegue posterior borrar lo viejo. Nunca renombrar o eliminar una columna en el mismo despliegue que cambia el código.
- Tablas grandes: cuidado con bloqueos largos; índices creados de forma concurrente cuando el motor lo permita; lotes con pausa.
- Migración de datos (no de esquema): idempotente y reanudable, con registro de progreso. Si se corta a la mitad, debe poder correr otra vez sin duplicar.
Integridad y concurrencia
- Transacciones para lo que debe ser atómico; nada de secuencias de escrituras "que casi siempre terminan bien".
- Operaciones que pueden repetirse (reintentos, webhooks, doble clic) necesitan clave de idempotencia y restricción única que la respalde.
- Condiciones de carrera clásicas: leer-modificar-escribir sin bloqueo, contadores incrementados en código, reservas de stock. Resolver con la base (bloqueo,
UPSERT, restricción única), no con esperanza. - Trabajos programados que corren dos veces por solapamiento: candado explícito.
Respaldos y recuperación
| Pregunta | Respuesta obligatoria |
| ¿Cada cuánto se respalda? | según cuánta pérdida es tolerable |
| ¿Dónde se guarda? | fuera del mismo servidor y del mismo proveedor de cuenta única |
| ¿Está cifrado? | sí, y la clave no vive junto al respaldo |
| ¿Cuánto tarda restaurar? | medido, no estimado |
| ¿Cuándo se probó por última vez? | fecha real. Sin ensayo, el plan es ficción |
| ¿Qué se pierde entre respaldos? | declarado y aceptado por quien paga |
Un ensayo de restauración por trimestre, con cronómetro, anotado en el runbook.md.
Datos personales
- Guardar el mínimo, con propósito declarado y plazo de retención.
- Poder responder: qué guardo de esta persona, cómo lo exporto, cómo lo borro.
- Nunca copiar datos reales a entornos de desarrollo o de prueba sin anonimizar.
- Los volcados de base son la filtración más común: cifrados, con caducidad, jamás en un repositorio ni en un chat.
Anti-racionalización
| Excusa | Realidad |
| "Las restricciones las maneja la aplicación" | Hasta que alguien corre un script, un import o una segunda app. La base es lo único que nadie se salta. |
| "Es un cambio chico, lo hago directo en producción" | Cambio manual = irreproducible. El siguiente despliegue te lo recuerda. |
| "Después le pongo los índices" | Después la tabla tiene millones de filas y el índice bloquea la tabla en hora pico. |
| "El proveedor hace respaldos" | ¿Restauraste uno alguna vez? ¿Cuánto tarda? ¿Cubre el borrado accidental de ayer? |
| "Uso flotantes para el dinero, es más simple" | Es más simple hasta que el total no cuadra por céntimos y nadie sabe por qué. |
| "Guardo todo por si acaso" | Cada dato extra es riesgo legal, costo y superficie de filtración. |
| "La migración anduvo en mi máquina" | Tu máquina tiene 200 filas limpias. Producción tiene 4 millones sucias. |
Formato de salida
- Modelo: entidades, relaciones, restricciones y por qué.
- Migración: pasos, paso atrás, tiempo estimado sobre copia real, plan de despliegue (expandir/contraer si aplica).
- Estado de respaldos: frecuencia, destino, cifrado, fecha del último ensayo de restauración.
- Riesgos de pérdida de datos identificados y cómo se mitigan.
Other versions4 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 4
- ethereum/ethereum-org-website★ 6ksame name
- anipy1/claude-flutter-kit★ 0same name
- devpilotX/skills★ 0same name
- thetruong1099/android-mvi-base-code★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository37 other files it gives its agents.
- skills/constitution/templates/AGENTS.mdAGENTS.md
- agent-debugSkill
- agentic-codingSkill
- ai-securitySkill
- api-backendSkill
- app-securitySkill
- architectureSkill
- automationSkill
- batchSkill
- bot-devSkill
- changelog-generatorSkill
- code-standardSkill
- constitutionSkill
- consultaSkill
- deploySkill
- desktop-appSkill
- dev-routerSkill
- diff-reviewSkill
- env-doctorSkill
- featureSkill
- fixerSkill
- intakeSkill
- mobile-appSkill
- observabilitySkill
- performanceSkill
- project-memorySkill
- quality-gateSkill
- readme-generatorSkill
- rebuildSkill
- refactorSkill
- tech-debtSkill
- test-strategySkill
- triageSkill
- ui-bugSkill
- ui-designSkill
- valida-ideaSkill
- web-appSkill
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.

