<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Vibe Coding on KnightLi Blog</title>
        <link>https://www.knightli.com/es/tags/vibe-coding/</link>
        <description>Recent content in Vibe Coding on KnightLi Blog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>es</language>
        <lastBuildDate>Sat, 16 May 2026 22:44:43 +0800</lastBuildDate><atom:link href="https://www.knightli.com/es/tags/vibe-coding/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>easy-vibe: un mapa de aprendizaje para principiantes de Vibe Coding</title>
        <link>https://www.knightli.com/es/2026/05/16/easy-vibe-vibe-coding-learning-map/</link>
        <pubDate>Sat, 16 May 2026 22:44:43 +0800</pubDate>
        
        <guid>https://www.knightli.com/es/2026/05/16/easy-vibe-vibe-coding-learning-map/</guid>
        <description>&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/datawhalechina/easy-vibe&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;easy-vibe&lt;/a&gt; es un proyecto open source de Datawhale para aprender Vibe Coding. No está dirigido a desarrolladores que ya dominan herramientas de AI Coding, sino a estudiantes, product managers, diseñadores, equipos de operaciones, indie developers y personas con interés técnico que apenas empiezan con Vibe Coding.&lt;/p&gt;
&lt;p&gt;El valor del proyecto no está en listar otro grupo de herramientas de IA, sino en convertir &amp;ldquo;cómo empezar a construir proyectos con IA&amp;rdquo; en una ruta de aprendizaje más fácil de entender. Para muchos principiantes, lo difícil no es saber que existen Claude Code, Cursor, MCP o los Agents. Lo difícil es saber qué aprender primero, cómo practicar y cuándo pasar a herramientas más avanzadas.&lt;/p&gt;
&lt;h2 id=&#34;lo-que-más-necesitan-los-principiantes-es-una-ruta&#34;&gt;Lo que más necesitan los principiantes es una ruta
&lt;/h2&gt;&lt;p&gt;Vibe Coding se ha vuelto popular en los últimos años, pero no es especialmente amigable para principiantes.&lt;/p&gt;
&lt;p&gt;En apariencia, si sabes describir un requisito, puedes pedir a la IA que escriba código. En la práctica, en cuanto la tarea se vuelve un poco más compleja, aparecen problemas: el requisito no está claro, el modelo modifica el archivo equivocado, la estructura del proyecto no se entiende, los errores no se saben resolver, las dependencias no se instalan, los prompts se vuelven cada vez más confusos y el flujo termina regresando a &amp;ldquo;copiar código en una caja de chat&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Por eso aprender Vibe Coding no puede limitarse a &amp;ldquo;cómo escribir prompts&amp;rdquo;. Como mínimo debe resolver varias cosas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cómo dividir una idea en tareas ejecutables;&lt;/li&gt;
&lt;li&gt;Cómo hacer que la IA entienda la estructura del proyecto;&lt;/li&gt;
&lt;li&gt;Cómo leer el código generado por el modelo;&lt;/li&gt;
&lt;li&gt;Cómo manejar errores e iterar;&lt;/li&gt;
&lt;li&gt;Cómo usar la terminal y el entorno local de desarrollo;&lt;/li&gt;
&lt;li&gt;Cómo pasar del chat web a herramientas reales de AI Coding.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ahí está el sentido de easy-vibe: intenta organizar estos temas en una ruta de aprendizaje, en lugar de dejar que los principiantes se pierdan entre herramientas, tutoriales y términos.&lt;/p&gt;
&lt;h2 id=&#34;no-es-un-tutorial-aislado-sino-una-hoja-de-ruta&#34;&gt;No es un tutorial aislado, sino una hoja de ruta
&lt;/h2&gt;&lt;p&gt;Según la presentación del proyecto, easy-vibe cubre tutoriales básicos, ejercicios interactivos, contenido visual, RAG, herramientas de terminal, herramientas de AI Coding y temas más avanzados como Claude Code, MCP, Skills y Agent Teams.&lt;/p&gt;
&lt;p&gt;Esta forma de organizar el contenido es adecuada para principiantes. AI Coding no es una sola habilidad, sino una combinación de capacidades:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Describir requisitos;&lt;/li&gt;
&lt;li&gt;Dividir tareas;&lt;/li&gt;
&lt;li&gt;Leer proyectos;&lt;/li&gt;
&lt;li&gt;Pedir al modelo que modifique código;&lt;/li&gt;
&lt;li&gt;Ejecutar y verificar;&lt;/li&gt;
&lt;li&gt;Iterar según los errores;&lt;/li&gt;
&lt;li&gt;Convertir flujos repetidos en herramientas o skills.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Si solo aprendes una herramienta, es fácil quedar limitado por su interfaz. Cambias de modelo, editor o CLI, y el flujo vuelve a no estar claro. La ventaja de una hoja de ruta es construir primero el método de trabajo y luego poner las herramientas en el lugar adecuado.&lt;/p&gt;
&lt;h2 id=&#34;es-especialmente-útil-para-no-programadores&#34;&gt;Es especialmente útil para no programadores
&lt;/h2&gt;&lt;p&gt;El mayor atractivo de Vibe Coding es que permite a personas que no son programadoras profesionales crear prototipos.&lt;/p&gt;
&lt;p&gt;Un product manager puede convertir una idea de producto en un demo interactivo. Un diseñador puede validar lógica de interacción. Un equipo de operaciones puede crear herramientas internas. Un estudiante puede construir proyectos de clase rápidamente. Un fundador puede validar demanda en etapas tempranas. Estas personas no necesariamente necesitan convertirse en ingenieros full-time en el sentido tradicional, pero sí necesitan un método para &amp;ldquo;hacer que la IA me ayude a llevar una idea a algo funcional&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Por eso easy-vibe encaja bien con la comunidad china. Muchos usuarios chinos ya saben que la IA puede escribir código, pero aún faltan materiales sistemáticos para empezar: entorno de desarrollo, prompts, estructura de proyecto, depuración y uso de herramientas Agent. Es mejor cuando todo se explica con claridad en chino y se acompaña con ejercicios graduales.&lt;/p&gt;
&lt;p&gt;Para este tipo de usuarios, lo más importante no es aprender un framework complejo desde el primer día, sino completar un ciclo completo: plantear un requisito, generar un proyecto, ejecutarlo, encontrar problemas, seguir modificando y terminar con una versión usable.&lt;/p&gt;
&lt;h2 id=&#34;la-parte-avanzada-se-acerca-a-flujos-reales-de-desarrollo-con-ia&#34;&gt;La parte avanzada se acerca a flujos reales de desarrollo con IA
&lt;/h2&gt;&lt;p&gt;Claude Code, MCP, Skills y Agent Teams, que aparecen en easy-vibe, ya no son solo conceptos introductorios.&lt;/p&gt;
&lt;p&gt;Claude Code representa los Agents de programación en terminal: el modelo puede entrar en un proyecto local, leer archivos, modificar código y ejecutar comandos. MCP resuelve la conexión con herramientas y fuentes de datos, para que el modelo no se quede encerrado en una caja de chat. Skills permite conservar flujos reutilizables, como generación fija de proyectos, organización de documentos, revisión de tests o procesos de producción de contenido. Agent Teams va un paso más allá y divide tareas entre varios agentes.&lt;/p&gt;
&lt;p&gt;Para principiantes, estos temas pueden parecer lejanos, pero vale la pena conocerlos pronto. La dirección de Vibe Coding ya está clara: pasar de &amp;ldquo;hacer que la IA escriba un fragmento de código&amp;rdquo; a &amp;ldquo;hacer que la IA participe en un flujo completo de proyecto&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Si una ruta de aprendizaje se queda solo en prompts, pronto quedará atrás frente a la evolución de las herramientas. Pero si al principio se lanzan todos los conceptos avanzados a la vez, el principiante no sabrá por dónde empezar. El valor razonable de easy-vibe es colocar esos temas en una ruta de actualización gradual.&lt;/p&gt;
&lt;h2 id=&#34;dos-errores-que-conviene-evitar&#34;&gt;Dos errores que conviene evitar
&lt;/h2&gt;&lt;p&gt;El primer error es creer que Vibe Coding significa que, aunque no sepas código, puedes desentenderte por completo del código.&lt;/p&gt;
&lt;p&gt;La IA puede generar muchas cosas, pero el usuario sigue necesitando juzgar si el resultado es correcto. Como mínimo, hay que entender la estructura del proyecto, saber cómo ejecutarlo y ubicar aproximadamente dónde ocurre un error. Aunque no escribas código complejo, necesitas sentido común básico de ingeniería.&lt;/p&gt;
&lt;p&gt;El segundo error es creer que cuanto más avanzada sea la herramienta, mejor.&lt;/p&gt;
&lt;p&gt;Un principiante no necesariamente necesita Claude Code, MCP o múltiples Agents al inicio. Un orden mejor es crear primero un ciclo de feedback con proyectos simples, y luego introducir poco a poco terminal, control de versiones, tests, llamadas a herramientas y flujos automatizados. Las herramientas deben coincidir con la complejidad de la tarea; si no, se convierten en algo que parece potente pero no se sabe para qué usar.&lt;/p&gt;
&lt;h2 id=&#34;cómo-usarlo&#34;&gt;Cómo usarlo
&lt;/h2&gt;&lt;p&gt;Si apenas empiezas con Vibe Coding, puedes usar easy-vibe como una lista de aprendizaje.&lt;/p&gt;
&lt;p&gt;Empieza con conceptos básicos y ejercicios simples. No hace falta perseguir todas las herramientas. Construye un proyecto pequeño, como una página personal, un dashboard de datos, una herramienta de formularios, un script de automatización o una demo de base de conocimiento. Durante el proceso, observa en qué partes ayuda la IA y en cuáles necesitas confirmar por tu cuenta.&lt;/p&gt;
&lt;p&gt;Cuando puedas completar proyectos pequeños de forma estable, empieza con temas más complejos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Usar herramientas de terminal para trabajar con proyectos locales;&lt;/li&gt;
&lt;li&gt;Usar Git para gestionar cada cambio;&lt;/li&gt;
&lt;li&gt;Usar RAG para conectar tus propios materiales;&lt;/li&gt;
&lt;li&gt;Usar MCP para conectar herramientas externas;&lt;/li&gt;
&lt;li&gt;Usar Skills para fijar flujos repetidos;&lt;/li&gt;
&lt;li&gt;Usar Agent Teams para dividir tareas complejas.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Aprender Vibe Coding así no es solo aprender a preguntar a la IA. Es aprender a poner la IA dentro de tu propio flujo de trabajo.&lt;/p&gt;
&lt;h2 id=&#34;conclusión&#34;&gt;Conclusión
&lt;/h2&gt;&lt;p&gt;easy-vibe puede verse como un mapa de entrada en chino para Vibe Coding. Organiza conceptos, herramientas y ejercicios dispersos de AI Coding en una ruta que ayuda al principiante a pasar de &amp;ldquo;he oído que la IA puede escribir código&amp;rdquo; a &amp;ldquo;puedo construir un proyecto con IA&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;El valor real de Vibe Coding no es saltarse todo aprendizaje, sino bajar la barrera entre idea y prototipo. Aún necesitas entender requisitos, organizar tareas, verificar resultados y controlar riesgos. Pero muchos pasos repetitivos, tediosos y fáciles de bloquear pueden hacerse con ayuda de la IA.&lt;/p&gt;
&lt;p&gt;Si quieres una entrada sistemática al AI Coding y no quieres perderte desde el principio entre nombres de herramientas y configuraciones de ingeniería complejas, easy-vibe es un buen punto de partida.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>No subas API Keys a GitHub: guía para evitar fugas de secretos al programar con IA</title>
        <link>https://www.knightli.com/es/2026/05/16/ai-coding-api-key-leak-github/</link>
        <pubDate>Sat, 16 May 2026 16:26:50 +0800</pubDate>
        
        <guid>https://www.knightli.com/es/2026/05/16/ai-coding-api-key-leak-github/</guid>
        <description>&lt;p&gt;La programación con IA reduce la barrera para crear software, pero también lleva muchos problemas de seguridad de ingeniería a principiantes y usuarios no técnicos.&lt;/p&gt;
&lt;p&gt;Uno de los incidentes más comunes es subir a un repositorio público un &lt;code&gt;API Key&lt;/code&gt;, &lt;code&gt;Secret&lt;/code&gt;, &lt;code&gt;Token&lt;/code&gt;, cadena de conexión a una base de datos o archivo &lt;code&gt;.env&lt;/code&gt;. En local, estos archivos parecen simples configuraciones para que la aplicación funcione. En un repositorio público de GitHub, se convierten en credenciales que pueden ser escaneadas, llamadas y abusadas automáticamente.&lt;/p&gt;
&lt;p&gt;Las fugas de secretos no son raras. El informe 2026 de GitGuardian indica que los commits públicos de GitHub en 2025 contenían unos 28,65 millones de nuevas credenciales hardcodeadas, y que las fugas de credenciales relacionadas con servicios de IA crecieron un 81% interanual. El problema ya no es solo descuido: la programación con IA, los prototipos rápidos y el alojamiento público están amplificando la escala.&lt;/p&gt;
&lt;h2 id=&#34;por-qué-los-principiantes-filtran-claves-con-más-facilidad&#34;&gt;Por qué los principiantes filtran claves con más facilidad
&lt;/h2&gt;&lt;p&gt;Muchos agentes de IA y pequeñas herramientas tienen dos “repositorios”: uno en el disco local y otro visible para todo el mundo en GitHub. El problema es que los principiantes a menudo no distinguen bien esa frontera.&lt;/p&gt;
&lt;p&gt;Durante el desarrollo local, &lt;code&gt;config.json&lt;/code&gt;, &lt;code&gt;.env&lt;/code&gt; y &lt;code&gt;settings.yaml&lt;/code&gt; pueden contener API keys. Después de ejecutar &lt;code&gt;git add .&lt;/code&gt;, &lt;code&gt;git commit&lt;/code&gt; y &lt;code&gt;git push&lt;/code&gt;, esos archivos pueden subirse completos. Cuando el repositorio es público, los bots de escaneo no necesitan entender tu negocio: solo necesitan detectar un patrón de secreto.&lt;/p&gt;
&lt;p&gt;La programación con IA agrava esto:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Los ejemplos generados por IA pueden poner &lt;code&gt;OPENAI_API_KEY = &amp;quot;sk-...&amp;quot;&lt;/code&gt; directamente en el código fuente.&lt;/li&gt;
&lt;li&gt;Para “hacer que funcione”, los principiantes tienden a hardcodear secretos en frontend, scripts o archivos de configuración.&lt;/li&gt;
&lt;li&gt;Muchas plataformas de vibe coding despliegan aplicaciones directamente sin pasar por la protección de push de GitHub.&lt;/li&gt;
&lt;li&gt;El usuario puede no saber qué archivos, APIs o permisos predeterminados existen dentro del proyecto generado por IA.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;En resumen, la IA puede ayudarte a crear algo que funciona más rápido. No asume automáticamente la responsabilidad de seguridad.&lt;/p&gt;
&lt;h2 id=&#34;gitignore-no-es-decoración&#34;&gt;&lt;code&gt;.gitignore&lt;/code&gt; no es decoración
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Git&lt;/code&gt; gestiona el historial de versiones, &lt;code&gt;GitHub&lt;/code&gt; aloja el código y &lt;code&gt;.gitignore&lt;/code&gt; le dice a Git qué archivos no deben entrar en ese historial.&lt;/p&gt;
&lt;p&gt;Un proyecto básico de IA debería ignorar al menos:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.env
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.env.*
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;*.key
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;*.pem
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;config.local.*
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;secrets.*
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;credentials.*
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Pero &lt;code&gt;.gitignore&lt;/code&gt; no basta. Solo evita que archivos no rastreados se añadan en el futuro. Si un archivo con secretos ya fue committeado, añadirlo después a &lt;code&gt;.gitignore&lt;/code&gt; no lo elimina del historial.&lt;/p&gt;
&lt;p&gt;Un hábito más seguro:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Crear &lt;code&gt;.gitignore&lt;/code&gt; al inicio del proyecto.&lt;/li&gt;
&lt;li&gt;Guardar API keys solo en variables de entorno o configuración local.&lt;/li&gt;
&lt;li&gt;Proporcionar &lt;code&gt;.env.example&lt;/code&gt; con placeholders, no secretos reales.&lt;/li&gt;
&lt;li&gt;Ejecutar un escáner de secretos antes de hacer commit, como &lt;code&gt;gitleaks&lt;/code&gt;, &lt;code&gt;trufflehog&lt;/code&gt; o GitHub Secret Scanning.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;borrar-el-archivo-no-basta&#34;&gt;Borrar el archivo no basta
&lt;/h2&gt;&lt;p&gt;Si una clave ya llegó a un repositorio público, la primera reacción no debería ser “borro el archivo y hago otro commit”. Primero revoca o rota la clave.&lt;/p&gt;
&lt;p&gt;Git registra el historial. Aunque el último commit elimine el archivo, los commits antiguos, forks, clones, cachés y sistemas de escaneo pueden conservarlo. La documentación de GitHub también recomienda revocar o rotar contraseñas, tokens y credenciales como primer paso.&lt;/p&gt;
&lt;p&gt;Orden recomendado:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Revoca la clave antigua en el panel del proveedor y genera una nueva.&lt;/li&gt;
&lt;li&gt;Revisa facturación, registros de uso, IPs sospechosas y tráfico inusual.&lt;/li&gt;
&lt;li&gt;Elimina secretos hardcodeados y usa variables de entorno o un gestor de secretos.&lt;/li&gt;
&lt;li&gt;Limpia archivos sensibles del historial con &lt;code&gt;git filter-repo&lt;/code&gt; o BFG.&lt;/li&gt;
&lt;li&gt;Activa GitHub Secret Scanning y Push Protection.&lt;/li&gt;
&lt;li&gt;Revisa CI/CD, plataformas de despliegue, funciones cloud y artefactos frontend por si contienen la clave antigua.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;En servicios como OpenAI, Anthropic, DeepSeek, proveedores cloud, pagos, correo o bases de datos, una clave filtrada puede provocar algo más que una factura inesperada: lectura de datos, abuso del servicio, contaminación de la cadena de suministro o bloqueo de cuentas.&lt;/p&gt;
&lt;h2 id=&#34;los-secretos-reales-no-van-en-el-frontend&#34;&gt;Los secretos reales no van en el frontend
&lt;/h2&gt;&lt;p&gt;Muchos principiantes ponen API keys en JavaScript del frontend porque la página funciona:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;apiKey&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;sk-xxxxxxxx&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Eso equivale prácticamente a publicarlas. El código del navegador, las peticiones de red, los Source Map y los artefactos de build se pueden inspeccionar. Cualquier clave que deba ser secreta no debe aparecer en el cliente.&lt;/p&gt;
&lt;p&gt;La forma correcta es que el frontend llame a tu propio backend, y que el backend lea variables de entorno y llame a la API externa:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// frontend
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;fetch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;/api/chat&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;method&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;POST&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;JSON&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;stringify&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;message&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;El servidor usa la variable de entorno:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// server
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;apiKey&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;process&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;env&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;OPENAI_API_KEY&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Esto mantiene el secreto en el entorno del servidor y evita exponerlo a todos los visitantes.&lt;/p&gt;
&lt;h2 id=&#34;vibe-coding-no-elimina-la-responsabilidad-de-seguridad&#34;&gt;Vibe Coding no elimina la responsabilidad de seguridad
&lt;/h2&gt;&lt;p&gt;El problema del vibe coding no se limita a GitHub. Muchas aplicaciones se publican directamente desde plataformas de programación con IA a internet, sin revisión de código, escaneo de repositorio ni pruebas de seguridad tradicionales.&lt;/p&gt;
&lt;p&gt;Investigaciones recientes de RedAccess encontraron una gran cantidad de activos públicos generados o alojados por herramientas de programación con IA, y algunos exponían datos corporativos, información personal o archivos internos. La lección es clara: cuando “se puede desplegar” se vuelve demasiado fácil, se olvida preguntar “¿debería ser público?”, “¿debería ser solo interno?” y “¿tiene control de acceso?”.&lt;/p&gt;
&lt;p&gt;Antes de publicar una app generada por IA, pregunta:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;¿Esta aplicación necesita realmente acceso público?&lt;/li&gt;
&lt;li&gt;¿Tiene login, autenticación y separación de permisos?&lt;/li&gt;
&lt;li&gt;¿Expone URLs de bases de datos, API keys, tokens o webhooks en el frontend?&lt;/li&gt;
&lt;li&gt;¿Tiene límites de cuota, dominio, permisos y caducidad para APIs externas?&lt;/li&gt;
&lt;li&gt;¿Puedes desactivar claves y revertir despliegues rápidamente tras un incidente?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;El código generado por IA también necesita revisión de seguridad. Cuanto menos código hayas escrito personalmente, menos deberías asumir que es seguro.&lt;/p&gt;
&lt;h2 id=&#34;comprobaciones-para-hacer-ahora&#34;&gt;Comprobaciones para hacer ahora
&lt;/h2&gt;&lt;p&gt;Empieza por tu cuenta de GitHub. Busca tu usuario junto con:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;API_KEY
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;SECRET
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;TOKEN
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;OPENAI_API_KEY
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ANTHROPIC_API_KEY
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;DEEPSEEK_API_KEY
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.env
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;config
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;credentials
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si encuentras una clave real, rota primero y limpia después. Si entró alguna vez en un repositorio público, trátala como filtrada.&lt;/p&gt;
&lt;p&gt;Para futuros proyectos con IA, usa un proceso fijo:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Escribe &lt;code&gt;.gitignore&lt;/code&gt; antes del código de negocio.&lt;/li&gt;
&lt;li&gt;Usa &lt;code&gt;.env.example&lt;/code&gt; para documentar las variables necesarias.&lt;/li&gt;
&lt;li&gt;Pon todos los secretos en variables de entorno, no en el código fuente.&lt;/li&gt;
&lt;li&gt;Da a las API keys permisos mínimos, cuotas y fechas de caducidad.&lt;/li&gt;
&lt;li&gt;Activa GitHub Secret Scanning y Push Protection.&lt;/li&gt;
&lt;li&gt;Pide a la IA una revisión de seguridad antes de publicar, pero no confíes solo en su conclusión.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;El verdadero peligro de la programación con IA no es solo que escriba código incorrecto. Es que da a muchas personas, por primera vez, la capacidad de publicar rápidamente aplicaciones inseguras en internet. Escribir rápido no es el problema. Entregar secretos, datos y permisos sí lo es.&lt;/p&gt;
&lt;h2 id=&#34;referencias&#34;&gt;Referencias
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.gitguardian.com/state-of-secrets-sprawl-report-2026&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitGuardian State of Secrets Sprawl 2026&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.github.com/articles/remove-sensitive-data&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub Docs: Removing sensitive data from a repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.github.com/code-security/secret-scanning/push-protection-for-repositories-and-organizations&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub Docs: About push protection&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.axios.com/2026/05/07/loveable-replit-vibe-coding-privacy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Axios: AI vibe-coding apps leak sensitive data&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
