# Ender Puentes

> Una década construyendo producto y arquitectura en producción. TypeScript, Node.js y orquestación con IA — sistemas que se pueden operar.

Construyo sistemasen producción.

Fronteras explícitas y sistemas que se pueden explicar. Sin humo.

Ender Puentes. Buenos Aires, Argentina.

- [LinkedIn](https://www.linkedin.com/in/enderpuentes)
- [GitHub](https://github.com/enderpuentes)
- [Telegram](https://t.me/enderpuentes)
- [Twitter](https://x.com/enderpuents)
- [Discord](https://discord.com/users/646413570313027604)

Ender Puentes. Buenos Aires, Argentina.

- [LinkedIn](https://www.linkedin.com/in/enderpuentes)
- [GitHub](https://github.com/enderpuentes)
- [Telegram](https://t.me/enderpuentes)
- [Twitter](https://x.com/enderpuents)
- [Discord](https://discord.com/users/646413570313027604)

## Cómo construyo y por qué

Si llegaste hasta aquí, probablemente quieras saber un poco más de mí. Llevo muchos años construyendo software y todavía me importa lo mismo que al principio: ver una idea convertirse en algo que realmente funciona.

El código es solo una parte del trabajo. A veces toca pensar producto, otras arquitectura, revisar un deploy o quedarme hasta entender por qué algo que funcionaba ayer dejó de funcionar hoy. Así es producción: tiene personalidad propia.

También disfruto ayudar a otros a crecer: un buen code review no solo dice qué está mal, deja a la otra persona entendiendo algo que antes no entendía.

No me interesa escribir código para llenar tickets ni perseguir tecnologías de moda: me interesa entender el problema, discutir las decisiones cuando hace falta y encontrar la forma más simple y sólida de llevarlo a producción.

Trabajo principalmente con TypeScript y Node.js, sigo de cerca lo que pasa con IA y agentes porque el trabajo está cambiando rápido, pero mantengo una regla simple: no adopto algo porque se vea impresionante en una demo, sino cuando realmente mejora el producto, el equipo o la forma en que trabajamos.

Estoy terminando Ingeniería de Sistemas, aunque mi carrera no esperó al título: la mayor parte de lo que sé lo aprendí construyendo y equivocándome en sistemas reales.

Abierto a nuevos proyectos, desafíos técnicos y colaboraciones con impacto — seas recruiter, founder o colega engineer. Escribí por el formulario o al email de esta página. Trabajo desde Buenos Aires (GMT-3) y respondo en español o inglés.

Ender Puentes. Buenos Aires, Argentina.

- [LinkedIn](https://www.linkedin.com/in/enderpuentes)
- [GitHub](https://github.com/enderpuentes)
- [Telegram](https://t.me/enderpuentes)
- [Twitter](https://x.com/enderpuents)
- [Discord](https://discord.com/users/646413570313027604)

- Formulario: https://www.enderpuentes.com/contact

Tu información es privada y nunca se comparte.

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

- [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 — lo cableás con triggers. Una convención de nombres para que el catálogo se entienda rápido, vos 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.

Herramientas y recursos que uso, organizados por categoría — diseño, backend, IA, CI/CD y más.

- [Microsoft Clarity](https://www.enderpuentes.com/resources/analytics/microsoft-clarity): Session recordings y heatmaps gratis. Clicks, scroll, rage clicks, insights. Ver la sesión sin instrumentar events. Un script. No es product analytics.
- [Sentry](https://www.enderpuentes.com/resources/analytics/sentry): Error tracking, performance y tracing. Stack traces, breadcrumbs, replay. El crash report del deploy, no el funnel. Cloud o self-host. Source getsentry/sentry.
- [Ahrefs](https://www.enderpuentes.com/resources/analytics/ahrefs): Crawl e índice SEO — backlinks, keywords, site audit, rank tracker, content explorer. Research competitivo contra un índice a escala web, no contra tu propia analytics.
- [PostHog](https://www.enderpuentes.com/resources/analytics/posthog): Analytics de producto open source, replay, flags, experiments y error tracking en un solo stack. Cloud o self-host. Events, persons, HogQL. MIT + ee.
- [21st](https://www.enderpuentes.com/resources/design-ui/21st): Registry comunitario de componentes React + Tailwind en formato shadcn — copiás un prompt a Cursor/Claude, o npx shadcn add. El source queda en el repo. No es un paquete.
- [shadcn/ui](https://www.enderpuentes.com/resources/design-ui/shadcn): Componentes React accesibles que copiás al repo — Radix o Base UI, Tailwind, registry CLI. No es una librería npm. El código es tuyo.
- [TanStack Charts](https://www.enderpuentes.com/resources/design-ui/tanstack-charts): Gramática de visualización en TypeScript para charts SSR, accesibles y responsive — primitivas D3, marks tree-shakeable. Pre-alpha. @tanstack/charts.
- [TanStack Form](https://www.enderpuentes.com/resources/data-backend/tanstack-form): Estado de forms headless y type-safe para React, Vue, Angular, Solid y Lit. Validadores por evento, suscripciones granulares, sin UI kit.
- [TanStack Query](https://www.enderpuentes.com/resources/data-backend/tanstack-query): Server-state asíncrono para React, Vue, Solid y Svelte — cache, dedupe, retries, refetch de fondo, mutations. El estándar que este sitio usa para listados.
- [Liquid Gooey](https://www.enderpuentes.com/resources/design-ui/liquid-gooey): Efectos Morph y Move líquidos para React — gooey blur, contraste, springs. npm install liquid-gooey. Para menús y blobs que se funden en vez de hacer fade.
- [morphicons](https://www.enderpuentes.com/resources/design-ui/morphicons): Cualquier icono de stroke morphs a cualquier otro — Lucide, Tabler, Heroicons — con física de spring. Cero deps, ~7 KB gzip. React, Vue, Svelte, RN y web component.
- [Mono Charts](https://www.enderpuentes.com/resources/design-ui/mono-charts): 30 visualizadores de charts monocromáticos en React — heatmaps, sparklines, donuts, candlesticks, sankey — geometría redondeada, copy-into-code con el CLI de Amicro.
- [Bucles explicados: Claude, GPT, Mira y lo que realmente funciona](https://www.enderpuentes.com/resources/ai-ml/loops-explained): Qué es un bucle en IA — objetivo, verificador, estado, parada — cuándo vale la pena, cómo lo corre Claude Code, y por qué sin un gate solo quema tokens.
- [Portal Labs](https://www.enderpuentes.com/resources/team-productivity/portal-labs): Más de 40 componentes e interacciones UI premium para Flutter, sin dependencias — knobs, carruseles, inputs morfológicos, gestos con física. Dart/Flutter puro.
- [Especificación Conventional Commits](https://www.enderpuentes.com/resources/cicd-code/conventional-commits-spec): Especificación oficial v1.0.0 para mensajes de commit legibles por humanos y máquinas. Define tipos feat/fix, scopes opcionales, breaking changes y footers — la referencia detrás de SemVer automatizado y changelogs.
- [Knip](https://www.enderpuentes.com/resources/cicd-code/knip): Una herramienta para encontrar código, exports y dependencias que ya no se utilizan en proyectos JavaScript y TypeScript.
- [React Flow / xyflow](https://www.enderpuentes.com/resources/design-ui/xyflow): Monorepo open source de React Flow y Svelte Flow — librerías para UIs basadas en nodos: workflows, editores visuales y diagramas. MIT, listas para usar y muy personalizables.
- [Pretext](https://www.enderpuentes.com/resources/design-ui/pretext): Biblioteca TypeScript para medir y maquetar texto multilínea sin reflow del DOM. prepare() cachea métricas de fuente vía Canvas una sola vez; layout() calcula saltos de línea y altura a cualquier ancho con aritmética pura — pensada para Canvas, SVG, WebGL, chat virtualizado y layouts editoriales.
- [Anti-Cliché Agent](https://www.enderpuentes.com/resources/ai-ml/anti-cliche-agent): Reglas anti-cliché en prosa, código, UI/UX y arquitectura Next.js/Tailwind/React. Instalación: npx skills add enderpuentes/ai-agent-skills --skill anti-cliche-agent
- [Clinical Tone](https://www.enderpuentes.com/resources/team-productivity/clinical-tone): Comunicación objetiva estilo CTO — diagnóstico directo, sin relleno ni cheerleading. Instalación: npx skills add enderpuentes/ai-agent-skills --skill clinical-tone
- [Code Review](https://www.enderpuentes.com/resources/cicd-code/code-review): Auditoría UI/React contra develop: Tailwind bloat, cn() mal usado, constantes de clase y SRP. Instalación: npx skills add enderpuentes/ai-agent-skills --skill code-review
- [Conventional Commits](https://www.enderpuentes.com/resources/cicd-code/conventional-commits): Generá y validá mensajes de commit según la especificación Conventional Commits. Instalación: npx skills add enderpuentes/ai-agent-skills --skill conventional-commits
- [Grill Me](https://www.enderpuentes.com/resources/team-productivity/grill-me): Stress-test de un plan o diseño con preguntas incisivas hasta resolver cada decisión. Instalación: npx skills add enderpuentes/ai-agent-skills --skill grill-me
- [GSAP](https://www.enderpuentes.com/resources/design-ui/gsap): Animaciones JavaScript de alto rendimiento con GSAP — timelines, ScrollTrigger y patrones React. Instalación: npx skills add enderpuentes/ai-agent-skills --skill gsap
- [JSDoc](https://www.enderpuentes.com/resources/cicd-code/jsdoc): Escribí y mantené comentarios JSDoc para APIs JavaScript y TypeScript. Instalación: npx skills add enderpuentes/ai-agent-skills --skill jsdoc
- [JSON-LD](https://www.enderpuentes.com/resources/content-cms/json-ld): Agregá y validá structured data schema.org para rich results en SEO. Instalación: npx skills add enderpuentes/ai-agent-skills --skill json-ld
- [llms.txt](https://www.enderpuentes.com/resources/content-cms/llms-txt): Creá llms.txt según llmstxt.org para asistentes de IA y discoverability AEO/GEO. Instalación: npx skills add enderpuentes/ai-agent-skills --skill llms-txt
- [PageSpeed Insights](https://www.enderpuentes.com/resources/monitoring/pagespeed-insights): Auditoría de performance web siguiendo las guías de Google PageSpeed Insights. Instalación: npx skills add enderpuentes/ai-agent-skills --skill pagespeed-insights
- [Sitemap](https://www.enderpuentes.com/resources/content-cms/sitemap): Creá y mantené sitemaps XML según sitemaps.org para descubrimiento por buscadores. Instalación: npx skills add enderpuentes/ai-agent-skills --skill sitemap
- [Split Commit](https://www.enderpuentes.com/resources/cicd-code/split-commit): Analizá cambios locales y devolvé una secuencia de commits lógicos para copiar y pegar. Instalación: npx skills add enderpuentes/ai-agent-skills --skill split-commit
- [Storybook](https://www.enderpuentes.com/resources/design-ui/storybook): Desarrollá componentes UI aislados con Storybook — stories CSF, patrones colocados y addons. Instalación: npx skills add enderpuentes/ai-agent-skills --skill storybook
- [Tailwind CSS](https://www.enderpuentes.com/resources/design-ui/tailwind-css): Configuración y uso de Tailwind CSS v4 con Next.js, Vite o CLI — tema vía @theme, sin tailwind.config.js. Instalación: npx skills add enderpuentes/ai-agent-skills --skill tailwind-css
- [TypeScript](https://www.enderpuentes.com/resources/cicd-code/typescript): JavaScript con tipos: interfaces, genéricos, narrowing, tsconfig y modo strict. Instalación: npx skills add enderpuentes/ai-agent-skills --skill typescript
- [Zod](https://www.enderpuentes.com/resources/data-backend/zod): Validación de esquemas TypeScript-first con inferencia estática para forms, APIs y env vars. Instalación: npx skills add enderpuentes/ai-agent-skills --skill zod
- [shadcn/ui](https://www.enderpuentes.com/resources/design-ui/shadcn-ui): Instalá y componé componentes shadcn/ui con Tailwind v4 y Next.js App Router. Instalación: npx skills add enderpuentes/ai-agent-skills --skill shadcn-ui
