# Apuntes desde la construcción.

Notas sobre ingeniería de IA, datos, plataforma, arquitectura de software y SEO/AEO — deep-dives prácticos desde aplicaciones en producción.

- [La API del tercero no es tu modelo: adapters con Zod](https://www.enderpuentes.com/notes/software-architecture/la-api-del-tercero-no-es-tu-modelo): Cuando una API te suelta `f_title` y `userid`, TypeScript no se queja si lo copias. Al otro día el listado ya habla como ellos. Yo lo traduzco en el server con Zod: entra `f_title`, sale `title`, y a las pantallas les llega el objeto que sí quiero manejar.
- [El equipo es la nueva ventana de contexto](https://www.enderpuentes.com/notes/ai-engineering/el-equipo-es-la-nueva-ventana-de-contexto): La IA hace más rápido al developer individual, pero no necesariamente al equipo. Diez developers con las mismas herramientas terminan con diez formas distintas de trabajar, y esa fricción se paga a nivel de equipo. La respuesta no es uniformar a las personas, es una base común de reglas, skills y criterios de review.
- [Cuando el contexto empieza a jugar en contra](https://www.enderpuentes.com/notes/ai-engineering/cuando-el-contexto-empieza-a-jugar-en-contra): Una hora de Grill.me sobre un sistema de permisos. Dejé al agente trabajar y volví a una implementación a medias: el contexto de esa conversación se había hinchado y el plan original ya no cabía. Lo bajé a un archivo por fases, una conversación nueva por fase, y ahí sí cerró.
- [Anti-Cliché: antes tardaba más arreglando que escribiendo](https://www.enderpuentes.com/notes/ai-engineering/antes-tardaba-mas-arreglando-que-escribiendo): Llevo un par de años usando Cursor. Empecé en el Tab. Cuando pasé a agentes, una parte del rato se me iba en revisar y corregir lo que generaban. Armé Anti-Cliché.
- [Knip: código muerto cuando los agentes escriben más rápido](https://www.enderpuentes.com/notes/platform-engineering/knip-encontrar-codigo-muerto-antes-de-que-se-acumule): Los agentes de IA aceleran cuánto código generamos. Knip ayuda a detectar archivos, exports y dependencias que ya nadie usa, y a convertir esa higiene en una regla automática del proyecto.
- [Grill.me: la skill que cambió mi forma de trabajar con agentes de IA](https://www.enderpuentes.com/notes/ai-engineering/grill-me-the-skill-that-changed-how-i-work-with-ai-agents): Por qué el contexto importa más que mejores prompts—y cómo Grill.me, la skill de Matt Pocock, convirtió el descubrimiento en parte explícita de mi flujo con IA.
- [Autohostear agent skills en tu sitio web](https://www.enderpuentes.com/notes/ai-engineering/self-host-agent-skills-on-your-website): Tu sitio puede alojar skills instalables para IA — no hace falta GitHub. Lo monté con Next.js en una app en producción; lo más delicado fue alinear el redirect a www para que npx skills add funcione, y dar al agente contexto persistente del producto en lugar de respuestas genéricas.
- [.agents: reglas y skills centralizados para cualquier editor de IA](https://www.enderpuentes.com/notes/ai-engineering/agents-centralized-rules-and-skills-for-any-ai-editor): Cuando cada dev usa un editor de IA distinto, las rules se desincronizan entre .cursor, .agent y .claude. Centralizamos todo en .agents/ con symlinks y escondimos el cableado en VS Code para que el repo no distraiga.
- [Git Auditor: hooks nativos con shell para auditoría de equipo](https://www.enderpuentes.com/notes/platform-engineering/git-auditor-native-shell-hooks-for-team-standards): Cuando un equipo crece, los estilos de commit se dispersan y el lint llega tarde. Git Auditor usa hooks shell versionados en .githooks/ para aplicar una base común acordada — en local, antes de la CI.
- [Convención de nombres para triggers en PostgreSQL (Supabase)](https://www.enderpuentes.com/notes/data-engineering/postgres-trigger-naming-convention): PostgreSQL no actualiza timestamps ni limpia filas relacionadas solo — hay que cablearlo con triggers. Una convención de nombres para que el catálogo se entienda rápido, sea una persona o un agente de IA en Supabase.
- [Mantenimiento de logs en Supabase: Edge Functions y Cron Jobs](https://www.enderpuentes.com/notes/data-engineering/supabase-log-cleanup-maintenance): Tras trabajar en varios proyectos con backend en Supabase, repetí el mismo problema silencioso de disco: tablas de logs que crecen sin límite. Aquí está la función cleanup_logs() y cómo operarla con seguridad.
- [Optimizando el manejo de formularios con useTransition en lugar de useState](https://www.enderpuentes.com/notes/software-architecture/optimizing-form-handling-with-usetransition-instead-of-usestate): Reemplazar booleanos isLoading con useTransition hace que los formularios se sientan más rápidos, mantiene la UI responsiva mientras corren las peticiones y reduce el estado que hay que manejar.
- [Usando Parallel Routes para la gestión dinámica de múltiples interfaces en Next.js](https://www.enderpuentes.com/notes/software-architecture/using-parallel-routes-for-the-dynamic-management-of-multiple-interfaces-in-next-js-14): Parallel Routes en Next.js 14 dejan renderizar layouts distintos a la vez — ejemplo con app de delivery y slots @client y @delivery.
