Notificaciones push y SMS

avisar a tiempo sin duplicar mensajes ni convertirte en spam.

esfuerzo varios días80 apps del cementerio la necesitan

cómo se usa · 3 pasos

  1. Copia el archivo.Botón copiar archivo. Es un SKILL.md: texto en Markdown con instrucciones para tu agente, ya con el encabezado que los agentes esperan. No tienes que entenderlo ni editarlo.
  2. Guárdalo en tu carpeta de skills.Una carpeta con el nombre de la skill y dentro el archivo SKILL.md, tal cual. En tu carpeta personal sirve para todos tus proyectos, no hace falta copiarla en cada uno. Claude Code: ~/.claude/skills/notificaciones-push-y-sms/SKILL.md · Codex: ~/.agents/skills/notificaciones-push-y-sms/SKILL.md · Cursor lee esas dos carpetas, no necesita otra. ¿Solo para un proyecto? La misma ruta sin ~/, dentro de la carpeta del proyecto.
  3. Pídele la app.Abre tu agente y escríbele en español qué quieres construir («una agenda para mi consultorio con recordatorios por WhatsApp»). Él carga la skill solo cuando hace falta; también puedes llamarla tú: /notificaciones-push-y-sms en Claude Code y Cursor, $notificaciones-push-y-sms en Codex. Cuando se trabe, vuelve a en qué te vas a trabar.

archivo de la skill

---
name: notificaciones-push-y-sms
description: avisar a tiempo sin duplicar mensajes ni convertirte en spam.
---

# Notificaciones push y SMS

Instrucciones para el agente que está construyendo esta app. Sigue esta skill cuando
mandes alertas fuera de la sesión por Web Push, push móvil o SMS.

## Cuándo usar esta skill

Actívala en cuanto se cumpla cualquiera de estas condiciones:

- El aviso pierde valor si la persona lo ve hasta abrir la app.
- Hay recordatorios de citas, incidentes, entregas o acciones urgentes.
- Necesitas un canal alterno cuando el correo no llega.
- El producto promete alertas configurables por evento y horario.

No agregues tres canales por reflejo. Empieza por el canal que el usuario ya espera y
mide entrega, interacción y bajas antes de sumar otro.

## Cómo armarla

Usa **Web Push con VAPID** para web. Para apps nativas usa **FCM/APNs** mediante Expo si
el proyecto ya usa Expo. Para SMS usa **Twilio** o **Bird** con cobertura comprobada en
cada país objetivo.

1. Modela una notificación lógica separada de sus entregas. Una alerta puede intentar
   push y después SMS, pero conserva un solo `notificationId` para evitar duplicados.
2. Guarda preferencias por tipo de evento, canal, zona horaria y horario silencioso.
   Pide permiso de push después de explicar el valor, no al cargar la primera pantalla.
3. Cifra suscripciones Web Push y tokens móviles; bórralos cuando el proveedor responda
   que expiraron. Nunca uses el token como identificador de usuario.
4. Encola cada entrega con una llave idempotente. Registra proveedor, intento, estado,
   código de error y fecha de entrega cuando exista callback.
5. Para SMS, normaliza a E.164 y verifica que el país y tipo de remitente estén
   soportados. Respeta consentimiento, baja y restricciones A2P locales.
6. Calcula segmentos antes de enviar SMS: Unicode y textos largos pueden multiplicar el
   costo. Manda enlaces cortos bajo tu propio dominio, no acortadores opacos.
7. Consulta precios vigentes por país y operador, incluidos número, remitente y cargos
   del carrier. Guarda un presupuesto diario y corta envíos anómalos.
8. Implementa fallback solo para avisos críticos y después de un timeout definido. Un
   mensaje `delivered` no necesita repetirse por todos los canales.

## En qué te vas a trabar

- **Push no garantiza entrega.** El sistema operativo decide cuándo mostrarlo y puede
  revocar tokens; diseña la app para que el estado correcto también exista adentro.
- **SMS funciona distinto en cada país.** El remitente, registro, contenido permitido y
  recepción de respuestas cambian; verifica México, Brasil, Colombia o el mercado real
  por separado.
- **El fraude por bombeo de SMS genera facturas reales.** Deshabilita destinos que no
  operas, limita intentos por cuenta, IP y número, y alerta ante picos.
- **Los costos no son una tarifa LATAM única.** Usa la API o tabla vigente del proveedor
  y revisa el costo efectivo por mensaje entregado, no una cifra copiada de un blog.

## Qué NO hacer

- No uses SMS para secretos permanentes ni incluyas datos sensibles en la pantalla bloqueada.
- No pidas permiso de notificaciones sin contexto ni lo conviertas en requisito de registro.
- No reintentes un error permanente como número inválido o baja del destinatario.
- No anuncies entrega garantizada cuando el proveedor solo confirmó aceptación.

## Checklist

- [ ] Cada tipo de aviso tiene finalidad, canal y urgencia definidos.
- [ ] Preferencias, consentimiento, baja y horario silencioso funcionan por usuario.
- [ ] Tokens inválidos se eliminan y los webhooks de estado son idempotentes.
- [ ] El fallback no produce avisos dobles cuando el primer canal entrega tarde.
- [ ] Países no usados están bloqueados y existen límites contra bombeo de SMS.
- [ ] Costos por país, segmento y carrier se miden con tarifas vigentes.
- [ ] El contenido sensible no aparece en push ni SMS.

cópialo en tu agente de código: Claude Code, Codex, Cursor · pégalo como su archivo de skill y sigue las instrucciones tal cual.