<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>GitHub on KnightLi Blog</title>
        <link>https://knightli.com/es/tags/github/</link>
        <description>Recent content in GitHub on KnightLi Blog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>es</language>
        <lastBuildDate>Mon, 25 May 2026 00:19:14 +0800</lastBuildDate><atom:link href="https://knightli.com/es/tags/github/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Qué es GitHub Spec Kit: usar el desarrollo guiado por especificaciones para encauzar la programación con IA</title>
        <link>https://knightli.com/es/2026/05/25/github-spec-kit-spec-driven-development/</link>
        <pubDate>Mon, 25 May 2026 00:19:14 +0800</pubDate>
        
        <guid>https://knightli.com/es/2026/05/25/github-spec-kit-spec-driven-development/</guid>
        <description>&lt;p&gt;&lt;strong&gt;Spec Kit&lt;/strong&gt; de GitHub es un nuevo conjunto de herramientas para programación con IA. Su objetivo es ayudar a los desarrolladores a practicar &lt;strong&gt;Spec-Driven Development&lt;/strong&gt;, es decir, desarrollo guiado por especificaciones.&lt;/p&gt;
&lt;p&gt;El problema que aborda es muy directo: muchos flujos actuales de programación con IA se parecen demasiado a &amp;ldquo;chatear mientras se escribe código&amp;rdquo;. Una persona da una idea aproximada y el Agent empieza de inmediato a modificar el código. A corto plazo parece rápido, pero los límites de los requisitos, los criterios de aceptación, las decisiones técnicas y la división de tareas a menudo no quedan asentados. En cuanto el proyecto se vuelve un poco complejo, es fácil que termine convertido en vibe coding de una sola vez.&lt;/p&gt;
&lt;p&gt;La idea de Spec Kit es la contraria: primero escribir claramente la especificación y luego pasar a la planificación, las tareas y la implementación. El código ya no es el primer paso. La especificación lo es.&lt;/p&gt;
&lt;h2 id=&#34;qué-es-spec-kit&#34;&gt;Qué es Spec Kit
&lt;/h2&gt;&lt;p&gt;Spec Kit es el conjunto de herramientas open source de GitHub para desarrollo guiado por especificaciones. Proporciona la CLI &lt;code&gt;specify&lt;/code&gt;, plantillas, scripts y comandos orientados a AI coding agents, para que los equipos puedan avanzar alrededor de un mismo conjunto de artefactos estructurados.&lt;/p&gt;
&lt;p&gt;Lo que enfatiza no es &amp;ldquo;hacer que la IA pregunte menos&amp;rdquo;, sino hacer que la IA genere y refine estos elementos antes de escribir código:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Principios del proyecto: restricciones del equipo sobre calidad, pruebas, experiencia, rendimiento y aspectos similares;&lt;/li&gt;
&lt;li&gt;Especificaciones funcionales: qué se va a construir, por qué se construye, historias de usuario y requisitos funcionales;&lt;/li&gt;
&lt;li&gt;Plan técnico: qué stack tecnológico se usará, cómo se aterrizará y qué decisiones de arquitectura están involucradas;&lt;/li&gt;
&lt;li&gt;Lista de tareas: dividir el plan en pasos ejecutables;&lt;/li&gt;
&lt;li&gt;Proceso de implementación: modificar el código paso a paso según las tareas, en lugar de hacer una tanda caótica de cambios.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Este flujo hace que la programación con IA se parezca más a una colaboración de ingeniería y menos a una demostración basada en un único prompt.&lt;/p&gt;
&lt;h2 id=&#34;flujo-básico-de-uso&#34;&gt;Flujo básico de uso
&lt;/h2&gt;&lt;p&gt;El README oficial describe un flujo inicial parecido a este:&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;/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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;uv tool install specify-cli --from git+https://github.com/github/spec-kit.git@vX.Y.Z
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;specify init my-project --integration copilot
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; my-project
&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;Después de la inicialización, el proyecto genera un directorio &lt;code&gt;.specify&lt;/code&gt;, plantillas, scripts y comandos para la integración con el Agent. Luego se usan comandos &lt;code&gt;/speckit.*&lt;/code&gt; dentro de un AI coding agent compatible para impulsar el desarrollo.&lt;/p&gt;
&lt;p&gt;Una secuencia típica es:&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;/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;/speckit.constitution
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/speckit.specify
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/speckit.clarify
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/speckit.plan
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/speckit.tasks
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/speckit.implement
&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;Aquí, &lt;code&gt;/speckit.constitution&lt;/code&gt; establece los principios del proyecto, &lt;code&gt;/speckit.specify&lt;/code&gt; describe los requisitos del producto, &lt;code&gt;/speckit.clarify&lt;/code&gt; completa los puntos ambiguos, &lt;code&gt;/speckit.plan&lt;/code&gt; genera el plan técnico, &lt;code&gt;/speckit.tasks&lt;/code&gt; divide el trabajo en tareas y, al final, &lt;code&gt;/speckit.implement&lt;/code&gt; ejecuta la implementación.&lt;/p&gt;
&lt;p&gt;Esto es muy distinto de decirle directamente a un Agent: &amp;ldquo;ayúdame a construir una aplicación&amp;rdquo;. Spec Kit exige aclarar primero qué se va a construir y cómo se aceptará, y solo después dejar que el Agent empiece a trabajar.&lt;/p&gt;
&lt;h2 id=&#34;cambia-el-punto-de-entrada-de-la-programación-con-ia&#34;&gt;Cambia el punto de entrada de la programación con IA
&lt;/h2&gt;&lt;p&gt;La programación tradicional con IA suele empezar desde el código:&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-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Quiero crear una aplicación de gestión de tareas. Ayúdame a escribirla.
&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;Spec Kit se parece más a esto:&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;/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;Primero define los usuarios, escenarios, límites funcionales, criterios de aceptación y no objetivos de esta aplicación de gestión de tareas;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;luego elige la solución técnica según esas especificaciones;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;después divídelo en tareas;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;finalmente impleméntalo paso a paso.
&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;Este cambio es importante. La IA es muy buena ejecutando a partir de contexto, pero si el contexto en sí es disperso, cuanto más rápida sea la ejecución, más rápido puede desviarse la dirección. Spec Kit convierte el contexto en archivos y plantillas, de modo que los requisitos, planes y tareas puedan revisarse, modificarse y versionarse.&lt;/p&gt;
&lt;p&gt;Dicho de otra forma, no hace que la IA sea más &amp;ldquo;libre&amp;rdquo;; le da una vía de ingeniería más clara para que pueda desplegarse con libertad.&lt;/p&gt;
&lt;h2 id=&#34;cómo-entender-los-comandos-principales&#34;&gt;Cómo entender los comandos principales
&lt;/h2&gt;&lt;h3 id=&#34;speckitconstitution&#34;&gt;&lt;code&gt;/speckit.constitution&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;Esta es la &amp;ldquo;constitución&amp;rdquo; del proyecto. Genera o actualiza &lt;code&gt;.specify/memory/constitution.md&lt;/code&gt;, que registra los principios a largo plazo del proyecto, por ejemplo calidad del código, estándares de pruebas, consistencia de experiencia de usuario, requisitos de rendimiento y reglas para decisiones técnicas.&lt;/p&gt;
&lt;p&gt;Este paso es adecuado para escribir consensos del equipo, no requisitos de una única función.&lt;/p&gt;
&lt;h3 id=&#34;speckitspecify&#34;&gt;&lt;code&gt;/speckit.specify&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;Esta es la fase de especificación funcional. Hay que describir qué se quiere construir, quiénes son los usuarios, qué problema se resuelve y cuáles son los flujos principales.&lt;/p&gt;
&lt;p&gt;La guía oficial enfatiza especialmente que en esta fase no se debe prestar atención demasiado pronto al stack tecnológico. Primero hay que aclarar el what y el why, y luego discutir el how.&lt;/p&gt;
&lt;h3 id=&#34;speckitclarify&#34;&gt;&lt;code&gt;/speckit.clarify&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;Esta es la fase para completar preguntas. Muchos requisitos tienen huecos cuando se escriben por primera vez: cómo se gestionan los permisos, cuáles son los estados de error, si los datos deben persistirse, cómo se aceptan las condiciones límite.&lt;/p&gt;
&lt;p&gt;El valor de &lt;code&gt;/speckit.clarify&lt;/code&gt; está en permitir que el Agent detecte activamente los puntos inciertos de la especificación y registre las respuestas de vuelta en el documento, reduciendo retrabajo más adelante.&lt;/p&gt;
&lt;h3 id=&#34;speckitplan&#34;&gt;&lt;code&gt;/speckit.plan&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;Esta es la fase de planificación técnica. Solo aquí se empieza a definir el framework, la base de datos, la arquitectura, las APIs, la estrategia de pruebas y las restricciones.&lt;/p&gt;
&lt;p&gt;Si &lt;code&gt;/speckit.specify&lt;/code&gt; es lenguaje de producto, &lt;code&gt;/speckit.plan&lt;/code&gt; es lenguaje de ingeniería.&lt;/p&gt;
&lt;h3 id=&#34;speckittasks&#34;&gt;&lt;code&gt;/speckit.tasks&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;Este paso divide el plan en tareas ejecutables. Una buena lista de tareas debería permitir que el Agent avance paso a paso, y también permitir que las personas entiendan el propósito de cada paso.&lt;/p&gt;
&lt;h3 id=&#34;speckitimplement&#34;&gt;&lt;code&gt;/speckit.implement&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;Solo al final se entra en la implementación. El Agent modifica el código según las especificaciones, planes y tareas asentados previamente. En ese momento ya no está adivinando requisitos a partir de un gran prompt, sino ejecutando dentro de un conjunto de documentos estructurados.&lt;/p&gt;
&lt;h2 id=&#34;por-qué-encaja-con-la-programación-con-ia&#34;&gt;Por qué encaja con la programación con IA
&lt;/h2&gt;&lt;p&gt;El valor de Spec Kit no está en un comando mágico concreto, sino en recuperar lo que más fácilmente se pierde en la programación con IA:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Los requisitos se pueden revisar;&lt;/li&gt;
&lt;li&gt;Los planes se pueden discutir;&lt;/li&gt;
&lt;li&gt;Las tareas se pueden rastrear;&lt;/li&gt;
&lt;li&gt;Las decisiones tienen contexto;&lt;/li&gt;
&lt;li&gt;Los artefactos pueden entrar en el historial de Git;&lt;/li&gt;
&lt;li&gt;Los equipos pueden reutilizar plantillas y principios;&lt;/li&gt;
&lt;li&gt;La implementación del Agent ya no depende solo de un registro de chat de una sola vez.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Esto es especialmente útil para proyectos complejos. Cuanto más involucre un proyecto colaboración entre varias personas, mantenimiento a largo plazo y requisitos de calidad altos, menos puede depender solo de prompts temporales para impulsar el desarrollo.&lt;/p&gt;
&lt;h2 id=&#34;extensions-y-presets&#34;&gt;Extensions y Presets
&lt;/h2&gt;&lt;p&gt;Spec Kit también ofrece dos tipos de personalización:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Extensions&lt;/strong&gt;: añadir nuevos comandos, nuevas plantillas o integraciones con herramientas externas;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Presets&lt;/strong&gt;: cambiar el formato y la terminología de las plantillas existentes de especificación, plan y tareas.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En términos simples: si quieres añadir una capacidad nueva, usa Extension; si quieres transformar el estilo del flujo de trabajo, usa Preset.&lt;/p&gt;
&lt;p&gt;Por ejemplo, un equipo puede usar un Preset para exigir revisión de seguridad, trazabilidad regulatoria, terminología de dominio o reglas de pruebas primero. También puede usar una Extension para añadir integración con Jira, revisión de código, comprobaciones de salud del proyecto y otras fases nuevas.&lt;/p&gt;
&lt;p&gt;Esto muestra que Spec Kit no intenta encerrar a todos los equipos en el mismo flujo. Proporciona un esqueleto extensible para desarrollo guiado por especificaciones.&lt;/p&gt;
&lt;h2 id=&#34;para-quién-es-adecuado&#34;&gt;Para quién es adecuado
&lt;/h2&gt;&lt;p&gt;Spec Kit encaja en escenarios como estos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Usar un AI coding agent para crear el prototipo de un proyecto nuevo;&lt;/li&gt;
&lt;li&gt;Convertir vibe coding en un flujo que se pueda revisar posteriormente;&lt;/li&gt;
&lt;li&gt;Unificar el formato de requisitos y planificación antes de que el equipo deje que la IA genere código;&lt;/li&gt;
&lt;li&gt;Proyectos que necesitan criterios de aceptación y requisitos de pruebas claros;&lt;/li&gt;
&lt;li&gt;Incorporar requisitos, planes, tareas y proceso de implementación al control de versiones;&lt;/li&gt;
&lt;li&gt;Equipos que están explorando usos colectivos de GitHub Copilot, Claude Code, Codex CLI y herramientas similares.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;No necesariamente encaja con scripts muy pequeños de una sola vez. Para problemas que se resuelven con unas pocas líneas de código, el flujo completo de especificación puede sentirse pesado. Pero en cuanto una tarea empieza a involucrar varias páginas, varios módulos, gestión de estado, permisos, modelos de datos o mantenimiento a largo plazo, el beneficio estructural de Spec Kit se vuelve evidente.&lt;/p&gt;
&lt;h2 id=&#34;mi-lectura&#34;&gt;Mi lectura
&lt;/h2&gt;&lt;p&gt;Spec Kit representa un giro importante en las herramientas de programación con IA: pasar de &amp;ldquo;hacer que el Agent escriba código más rápido&amp;rdquo; a &amp;ldquo;hacer que el Agent participe de forma más fiable en la ingeniería de software&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;La programación con IA del pasado se centraba en prompts y capacidad del modelo. Spec Kit presta más atención al proceso, los artefactos y las restricciones. Nos recuerda que cuanto más rápido escribe código la IA, menos podemos permitirnos omitir especificaciones, planes y aceptación.&lt;/p&gt;
&lt;p&gt;Si ya estás acostumbrado a dejar que la IA implemente funciones directamente, puedes probar a cambiar el movimiento inicial con Spec Kit:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Primero deja que la IA te ayude a escribir los requisitos como una especificación; después deja que escriba el código.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Ese paso puede parecer más lento, pero en la práctica reduce el retrabajo posterior de &amp;ldquo;el código está terminado, pero no es lo que quería&amp;rdquo;.&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://github.com/github/spec-kit&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;github/spec-kit&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>¿Qué es oh-my-pi? Un asistente de programación con IA que conecta la terminal, el IDE y el depurador</title>
        <link>https://knightli.com/es/2026/05/23/oh-my-pi-ai-coding-agent-terminal-ide-lsp-debugger/</link>
        <pubDate>Sat, 23 May 2026 19:02:20 +0800</pubDate>
        
        <guid>https://knightli.com/es/2026/05/23/oh-my-pi-ai-coding-agent-terminal-ide-lsp-debugger/</guid>
        <description>&lt;p&gt;&lt;code&gt;oh-my-pi&lt;/code&gt; es un AI Coding Agent para la terminal y el editor. Nace como un fork del proyecto &lt;code&gt;Pi&lt;/code&gt; de Mario Zechner y fue ampliado por &lt;code&gt;can1357&lt;/code&gt;. Su objetivo no es ofrecer solo una interfaz de chat en línea de comandos, sino conectar lectura de archivos, búsqueda de código, ediciones estructuradas, LSP, depuradores, navegador, subagentes y múltiples proveedores de modelos dentro de un mismo flujo de trabajo.&lt;/p&gt;
&lt;p&gt;Según el README del proyecto, se parece más a una capa de herramientas para programación con IA que a un asistente sencillo: se puede usar de forma interactiva en la terminal, conectar con editores mediante ACP o integrar en proyectos Node mediante el SDK. Para quienes ya usan Claude Code, Codex CLI, Cline, Cursor u otras herramientas tipo Agent, lo interesante de &lt;code&gt;oh-my-pi&lt;/code&gt; es que convierte muchas capacidades normalmente dispersas en herramientas externas en una superficie integrada.&lt;/p&gt;
&lt;h2 id=&#34;qué-problema-intenta-resolver&#34;&gt;Qué problema intenta resolver
&lt;/h2&gt;&lt;p&gt;En muchas herramientas de programación con IA, el punto débil no es el modelo, sino la interfaz de herramientas que lo rodea. Si el modelo quiere modificar código pero solo puede leer archivos completos de forma poco precisa, hacer reemplazos frágiles de cadenas y ejecutar shell de una sola vez, la propia herramienta amplifica los fallos.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;oh-my-pi&lt;/code&gt; intenta reducir esos puntos de fricción:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Al leer archivos, prioriza resúmenes estructurados en vez de meter archivos completos en el contexto.&lt;/li&gt;
&lt;li&gt;Search, glob, find, resaltado de sintaxis y conteo de tokens se implementan de forma nativa cuando es posible, reduciendo la dependencia de comandos externos.&lt;/li&gt;
&lt;li&gt;Al escribir código, puede usar LSP para que renombrados, referencias y movimientos de archivos se comporten más como operaciones de IDE.&lt;/li&gt;
&lt;li&gt;Para depurar, puede usar herramientas DAP como &lt;code&gt;lldb&lt;/code&gt;, &lt;code&gt;dlv&lt;/code&gt; y &lt;code&gt;debugpy&lt;/code&gt;, en vez de depender solo de logs y suposiciones.&lt;/li&gt;
&lt;li&gt;Las tareas complejas se pueden dividir entre subagentes y devolver como resultados estructurados.&lt;/li&gt;
&lt;li&gt;Las ediciones usan anclas de contenido y vista previa para reducir la posibilidad de que un patch incorrecto se escriba directamente en disco.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Estas decisiones muestran que el foco no es &amp;ldquo;si el modelo puede responder&amp;rdquo;, sino &amp;ldquo;si el modelo puede completar de forma fiable un cambio real en el código&amp;rdquo;.&lt;/p&gt;
&lt;h2 id=&#34;instalación&#34;&gt;Instalación
&lt;/h2&gt;&lt;p&gt;El proyecto ofrece varias vías de instalación. En macOS y Linux se puede usar el script de instalación:&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -fsSL https://omp.sh/install &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sh
&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 usas Bun, el README recomienda instalar globalmente el paquete npm:&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bun install -g @oh-my-pi/pi-coding-agent
&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;En Windows PowerShell:&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-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;irm &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;https&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;omp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sh&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;install&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;ps1&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;iex
&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 README también menciona fijar versiones con &lt;code&gt;mise&lt;/code&gt;:&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mise use -g github:can1357/oh-my-pi
&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;Antes de instalar, conviene revisar el requisito de versión de Bun. El README indica soporte para macOS, Linux y Windows, y requiere &lt;code&gt;bun &amp;gt;= 1.3.14&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;capacidades-que-conviene-observar&#34;&gt;Capacidades que conviene observar
&lt;/h2&gt;&lt;h3 id=&#34;1-las-llamadas-a-herramientas-van-más-allá-del-shell&#34;&gt;1. Las llamadas a herramientas van más allá del shell
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;oh-my-pi&lt;/code&gt; incluye herramientas para leer archivos, buscar, escribir, editar, hacer ediciones AST, usar navegador, dividir tareas, depurar y trabajar con LSP. El README menciona 32 herramientas integradas, 13 operaciones LSP y 27 operaciones DAP.&lt;/p&gt;
&lt;p&gt;Eso significa que el Agent no tiene que envolver todo como salida de línea de comandos. La búsqueda de referencias puede ir por LSP, los PR e issues pueden leerse mediante una interfaz unificada parecida a un sistema de archivos, y las páginas web o PDF pueden convertirse a Markdown conservando la estructura de enlaces antes de entregarse al modelo.&lt;/p&gt;
&lt;h3 id=&#34;2-la-integración-lsp-sirve-en-bases-de-código-reales&#34;&gt;2. La integración LSP sirve en bases de código reales
&lt;/h3&gt;&lt;p&gt;En proyectos grandes, renombrar o mover archivos suele romper re-exports, imports con alias, barrel files o referencias entre directorios. El README de &lt;code&gt;oh-my-pi&lt;/code&gt; destaca que las rutas de escritura pueden pasar por LSP. Por ejemplo, los renombrados de archivos usan &lt;code&gt;workspace/willRenameFiles&lt;/code&gt;, acercando la edición a una operación semántica de IDE.&lt;/p&gt;
&lt;p&gt;Esto es útil para refactorizaciones diarias en TypeScript, Rust, Go, Python y proyectos similares, sobre todo cuando el cambio manual es posible pero fácil de dejar incompleto.&lt;/p&gt;
&lt;h3 id=&#34;3-el-depurador-es-una-herramienta-de-primera-clase&#34;&gt;3. El depurador es una herramienta de primera clase
&lt;/h3&gt;&lt;p&gt;Muchos flujos de programación con IA siguen depurando mediante logs, nuevas ejecuciones y lectura de salida. &lt;code&gt;oh-my-pi&lt;/code&gt; conecta depuradores DAP a la superficie de herramientas. El README da ejemplos con programas en C usando &lt;code&gt;lldb&lt;/code&gt;, servicios Go usando &lt;code&gt;dlv&lt;/code&gt; y procesos Python usando &lt;code&gt;debugpy&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Esto cambia cómo un Agent aborda un bug: puede pausar un proceso, inspeccionar frames de la pila, leer variables locales y decidir el siguiente paso, en vez de adivinar solo desde el texto del error.&lt;/p&gt;
&lt;h3 id=&#34;4-hashline-reduce-fallos-de-patch&#34;&gt;4. Hashline reduce fallos de patch
&lt;/h3&gt;&lt;p&gt;El proyecto enfatiza &lt;code&gt;Hashline&lt;/code&gt;, un método de edición basado en anclas de contenido. La idea es que el modelo apunte al contenido que quiere cambiar, en lugar de emitir diffs grandes una y otra vez. Esto reduce errores causados por espacios, contexto obsoleto o fallos al encontrar cadenas.&lt;/p&gt;
&lt;p&gt;Para una herramienta tipo Agent, este mecanismo importa mucho. Aunque el modelo sea capaz, si la interfaz de escritura falla constantemente, la experiencia termina siendo una cadena de reintentos.&lt;/p&gt;
&lt;h3 id=&#34;5-subagentes-y-aislamiento-de-workspace&#34;&gt;5. Subagentes y aislamiento de workspace
&lt;/h3&gt;&lt;p&gt;El README presenta la capacidad de subagentes con &lt;code&gt;task&lt;/code&gt;: una tarea puede dividirse entre workers aislados, y los resultados vuelven como objetos estructurados. El proyecto también incluye lógica de aislamiento de workspace para tareas paralelas, exploración por ramas y prevención de ediciones solapadas.&lt;/p&gt;
&lt;p&gt;Esto encaja con revisión de código, migraciones, arreglos masivos e investigación de tests. El valor no es solo que sea más rápido en paralelo, sino que separa mejor los caminos de exploración y sus cambios.&lt;/p&gt;
&lt;h3 id=&#34;6-puede-heredar-reglas-y-configuraciones-existentes&#34;&gt;6. Puede heredar reglas y configuraciones existentes
&lt;/h3&gt;&lt;p&gt;En el primer arranque, &lt;code&gt;oh-my-pi&lt;/code&gt; puede leer reglas y configuraciones dejadas por otras herramientas, incluyendo &lt;code&gt;.claude&lt;/code&gt;, &lt;code&gt;.cursor&lt;/code&gt;, &lt;code&gt;.windsurf&lt;/code&gt;, &lt;code&gt;.gemini&lt;/code&gt;, &lt;code&gt;.codex&lt;/code&gt;, &lt;code&gt;.cline&lt;/code&gt;, &lt;code&gt;.github/copilot&lt;/code&gt; y &lt;code&gt;.vscode&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Esto es práctico. Muchos equipos ya han escrito reglas para varias herramientas de IA. Migrarlas de nuevo para cada herramienta es costoso, así que &lt;code&gt;oh-my-pi&lt;/code&gt; intenta reutilizar lo que ya existe en disco.&lt;/p&gt;
&lt;h2 id=&#34;cuatro-formas-de-entrada&#34;&gt;Cuatro formas de entrada
&lt;/h2&gt;&lt;p&gt;El proyecto ofrece cuatro formas principales de uso:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;TUI interactiva: ejecutar &lt;code&gt;omp&lt;/code&gt; directamente en la terminal.&lt;/li&gt;
&lt;li&gt;Comando de una sola vez: usar &lt;code&gt;omp -p&lt;/code&gt; para enviar un único prompt.&lt;/li&gt;
&lt;li&gt;Node SDK: integrarlo en un proyecto Node o TypeScript mediante &lt;code&gt;@oh-my-pi/pi-coding-agent&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;RPC / ACP: conectar otros programas y editores mediante stdio o Agent Client Protocol.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Esto significa que no está pensado solo para usuarios individuales de terminal. También deja espacio para IDE, plugins, plataformas de automatización y herramientas internas.&lt;/p&gt;
&lt;h2 id=&#34;para-quién-tiene-sentido&#34;&gt;Para quién tiene sentido
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;oh-my-pi&lt;/code&gt; encaja especialmente con:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Desarrolladores que editan, depuran y revisan código a menudo desde la terminal.&lt;/li&gt;
&lt;li&gt;Personas que ya usan AI Coding Agents, pero no están satisfechas con la lectura de archivos, patch, búsqueda o depuración.&lt;/li&gt;
&lt;li&gt;Desarrolladores que quieren conectar un Agent a un editor, una capa RPC o un servicio Node.&lt;/li&gt;
&lt;li&gt;Usuarios que necesitan alternar entre varios modelos y proveedores en una misma herramienta.&lt;/li&gt;
&lt;li&gt;Creadores de herramientas interesados en LSP, DAP, edición AST y flujos con subagentes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si solo quieres un asistente de código tipo chat que funcione de inmediato, la curva de aprendizaje puede parecer alta. Está más orientado a quienes aceptan entender la cadena de herramientas y tratar el Agent como un entorno de desarrollo configurable.&lt;/p&gt;
&lt;h2 id=&#34;qué-tener-en-cuenta&#34;&gt;Qué tener en cuenta
&lt;/h2&gt;&lt;p&gt;Primero, &lt;code&gt;oh-my-pi&lt;/code&gt; sigue siendo un proyecto open source de evolución rápida. Hay commits frecuentes y muchos issues y pull requests, así que la instalación y el uso pueden cambiar.&lt;/p&gt;
&lt;p&gt;Segundo, sus capacidades dependen mucho del entorno local. LSP, depuradores, Bun, autenticación de proveedores de modelos, configuración de terminal y diferencias entre Windows y Unix pueden afectar la experiencia.&lt;/p&gt;
&lt;p&gt;Tercero, tener muchas herramientas integradas no significa que haya que activarlas todas en cada caso. En la práctica conviene habilitar las necesarias para la tarea y configurar bien reglas, permisos y límites de workspace.&lt;/p&gt;
&lt;p&gt;Cuarto, un AI Agent puede escribir código, pero también puede cambiar el código equivocado. Incluso con vistas previas y ediciones ancladas por contenido, los proyectos importantes siguen necesitando control de versiones, tests y revisión humana.&lt;/p&gt;
&lt;h2 id=&#34;resumen&#34;&gt;Resumen
&lt;/h2&gt;&lt;p&gt;Lo interesante de &lt;code&gt;oh-my-pi&lt;/code&gt; no es que sea otra shell de IA para la terminal. Lo interesante es que reorganiza la capa de herramientas que suele frenar la programación con IA: lectura de archivos, búsqueda, edición, LSP, depuración, navegador, subagentes e integración SDK dentro de un único flujo de Agent.&lt;/p&gt;
&lt;p&gt;Vale la pena seguirlo si te interesa la infraestructura de programación con IA o si quieres comparar distintas rutas de Coding Agent. La competencia entre herramientas de programación con IA ya no va solo de la calidad de las respuestas del modelo. También consiste en quién logra conectar los modelos de forma fiable con bases de código reales, flujos reales de depuración y reglas reales de equipo. &lt;code&gt;oh-my-pi&lt;/code&gt; es un intento open source ambicioso en esa dirección.&lt;/p&gt;
&lt;p&gt;Referencias:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Proyecto en GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/can1357/oh-my-pi&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/can1357/oh-my-pi&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Sitio oficial: &lt;a class=&#34;link&#34; href=&#34;https://omp.sh/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://omp.sh/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Documentación del SDK: &lt;a class=&#34;link&#34; href=&#34;https://omp.sh/docs/sdk&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://omp.sh/docs/sdk&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Verificación de parches con poc-lab: confirma si las vulnerabilidades recientes de alta severidad están corregidas, incluidas Chrome CSSFontFeatureValuesMap UAF, NGINX Rift, Dirty Frag y Fragnesia</title>
        <link>https://knightli.com/es/2026/05/22/poc-lab-recent-cve-poc-reproduction-scripts/</link>
        <pubDate>Fri, 22 May 2026 23:13:24 +0800</pubDate>
        
        <guid>https://knightli.com/es/2026/05/22/poc-lab-recent-cve-poc-reproduction-scripts/</guid>
        <description>&lt;p&gt;&lt;code&gt;poc-lab&lt;/code&gt; es un repositorio de PoC y scripts de reproducción para vulnerabilidades de alta severidad divulgadas recientemente. Se centra en material de reproducción de CVE recientes e impactantes, incluyendo vulnerabilidades del kernel Linux, Windows, macOS, contenedores, componentes de servicio y navegadores.&lt;/p&gt;
&lt;p&gt;Por su enfoque, el repositorio se parece más a una base de materiales para investigación de seguridad que a una colección de herramientas de un clic para usuarios generales. Cada directorio de vulnerabilidad suele incluir scripts PoC, archivos de compilación y documentación para ayudar a investigadores a entender el impacto, las condiciones de reproducción y las referencias.&lt;/p&gt;
&lt;h2 id=&#34;contenido-principal-del-proyecto&#34;&gt;Contenido principal del proyecto
&lt;/h2&gt;&lt;p&gt;El repositorio está organizado actualmente por identificador de vulnerabilidad o por nombre público. Los nombres completos de vulnerabilidades listados incluyen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CVE-2026-2441&lt;/code&gt;: Chrome &lt;code&gt;CSSFontFeatureValuesMap&lt;/code&gt; use-after-free, también listado como Chrome CSSFontFeatureValuesMap UAF.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CVE-2026-27623&lt;/code&gt;: Pre-Authentication Denial of Service from malformed RESP request.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CVE-2026-31429&lt;/code&gt;: Slab Cross-Cache, una línea de explotación de cross-cache en slab del kernel Linux.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CVE-2026-31431&lt;/code&gt;: Copy Fail, una vulnerabilidad relacionada con el kernel Linux.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CVE-2026-31635&lt;/code&gt;: DirtyDecrypt, una vulnerabilidad relacionada con límites de seguridad del sistema.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CVE-2026-42945&lt;/code&gt;: NGINX Rift, una vulnerabilidad de alta severidad relacionada con NGINX.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CVE-2026-43284&lt;/code&gt;: Dirty Frag, una vulnerabilidad relacionada con el kernel Linux.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CVE-2026-43494&lt;/code&gt;: PinTheft, una vulnerabilidad relacionada con permisos o límites de seguridad de credenciales.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CVE-2026-43500&lt;/code&gt;: Dirty Frag, una vulnerabilidad relacionada con el kernel Linux.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CVE-2026-46300&lt;/code&gt;: Fragnesia, una vulnerabilidad relacionada con el kernel Linux.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CVE-2026-46333&lt;/code&gt;: SSH Keysign pwn, una vulnerabilidad relacionada con el límite de seguridad de SSH keysign.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Estos nombres muestran que el proyecto no se limita a una sola plataforma. Abarca navegadores, kernel Linux, componentes de servidor y límites de seguridad del sistema operativo. Para quienes trabajan en análisis de vulnerabilidades, validación de parches, escritura de reglas de detección y laboratorios de formación en seguridad, este tipo de material puede servir como referencia.&lt;/p&gt;
&lt;h2 id=&#34;estructura-de-directorios&#34;&gt;Estructura de directorios
&lt;/h2&gt;&lt;p&gt;El README del proyecto indica que cada directorio de vulnerabilidad intenta mantener una estructura consistente. Los archivos habituales incluyen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;exploit.py&lt;/code&gt; o &lt;code&gt;exploit.sh&lt;/code&gt;: script PoC&lt;/li&gt;
&lt;li&gt;&lt;code&gt;README.md&lt;/code&gt;: información de la vulnerabilidad, versiones afectadas, pasos de reproducción y referencias&lt;/li&gt;
&lt;li&gt;&lt;code&gt;build&lt;/code&gt; o archivos de compilación relacionados: usados para compilar o preparar el entorno de reproducción&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La estructura aproximada del repositorio es:&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;poc-lab/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── CVE-2026-XXXXX/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── exploit
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── build
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   └── README.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── VULN-NAME/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── exploit.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   └── README.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&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;Si una vulnerabilidad ya tiene identificador CVE, el directorio suele usar ese nombre. Si aún no tiene CVE asignado, puede usar el nombre público de la vulnerabilidad.&lt;/p&gt;
&lt;h2 id=&#34;casos-de-uso-adecuados&#34;&gt;Casos de uso adecuados
&lt;/h2&gt;&lt;p&gt;Este tipo de repositorio es más adecuado para los siguientes usos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Investigadores de seguridad que reproducen condiciones de activación de vulnerabilidades.&lt;/li&gt;
&lt;li&gt;Equipos de seguridad empresarial que verifican si un parche es efectivo.&lt;/li&gt;
&lt;li&gt;Ingenieros de detección que escriben reglas IDS, EDR, WAF o reglas basadas en logs.&lt;/li&gt;
&lt;li&gt;Cursos de seguridad o formación interna que construyen entornos de laboratorio aislados.&lt;/li&gt;
&lt;li&gt;Investigadores que comparan requisitos de explotación e ideas defensivas entre vulnerabilidades.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;No es adecuado para escaneo directo en producción, y no debe usarse contra sistemas no autorizados. El valor de un PoC está en ayudar a entender el riesgo y verificar defensas, no en ampliar la superficie de ataque.&lt;/p&gt;
&lt;h2 id=&#34;qué-tener-en-cuenta-al-usarlo&#34;&gt;Qué tener en cuenta al usarlo
&lt;/h2&gt;&lt;p&gt;Primero, las pruebas deben realizarse en un entorno aislado. La reproducción de vulnerabilidades puede provocar caídas, cambios de privilegios, corrupción de archivos o indisponibilidad del servicio. No debe ejecutarse directamente en equipos de trabajo, servidores de producción o sistemas de terceros.&lt;/p&gt;
&lt;p&gt;Segundo, hay que leer primero el &lt;code&gt;README.md&lt;/code&gt; dentro de cada directorio de vulnerabilidad. Cada PoC tiene dependencias, versiones objetivo, condiciones de activación y riesgos distintos. Leer solo el README raíz no es suficiente.&lt;/p&gt;
&lt;p&gt;Tercero, confirma los límites de autorización. Aunque un PoC sea público, ejecutarlo contra un sistema que no te pertenece o para el que no tienes permiso explícito puede crear riesgos legales y de cumplimiento.&lt;/p&gt;
&lt;p&gt;Cuarto, después de reproducir, hay que volver al flujo defensivo. Eso incluye confirmar versiones parcheadas, añadir reglas de detección, revisar la superficie expuesta, actualizar inventarios de activos y documentar procedimientos de respuesta.&lt;/p&gt;
&lt;h2 id=&#34;por-qué-vale-la-pena-seguir-este-tipo-de-repositorio&#34;&gt;Por qué vale la pena seguir este tipo de repositorio
&lt;/h2&gt;&lt;p&gt;En los últimos años, el tiempo entre la divulgación de vulnerabilidades de alta severidad y la aparición de detalles públicos de reproducción se ha acortado. Para los defensores, los avisos de seguridad y las descripciones CVE a menudo no bastan. Los equipos también necesitan entender condiciones de activación, límites de explotación y señales de detección en entornos realistas.&lt;/p&gt;
&lt;p&gt;El valor de repositorios como &lt;code&gt;poc-lab&lt;/code&gt; está en organizar material disperso de reproducción de vulnerabilidades de alta severidad por directorio, ayudando a los investigadores a completar la validación de riesgos con más rapidez. No sustituye los avisos oficiales, los parches de proveedores ni las líneas base de seguridad, pero puede servir como material complementario para la verificación de parches y la ingeniería de detección.&lt;/p&gt;
&lt;p&gt;También existe riesgo. Los PoC públicos reducen la barrera de reproducción. Si una organización no tiene gestión de parches e inventario de activos oportunos, el material público de reproducción puede ampliar la ventana de exposición. Para los equipos de seguridad empresarial, seguir estos proyectos importa, pero construir un proceso rápido de evaluación y remediación importa aún más.&lt;/p&gt;
&lt;h2 id=&#34;resumen&#34;&gt;Resumen
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;poc-lab&lt;/code&gt; es una colección de PoC y scripts de reproducción para vulnerabilidades recientes de alta severidad, con cobertura de kernel Linux, navegadores, componentes de servicio y problemas de seguridad del sistema operativo. Es útil para investigación de seguridad, verificación de parches y desarrollo de reglas de detección, pero debe usarse dentro de límites de autorización, aislamiento y divulgación responsable.&lt;/p&gt;
&lt;p&gt;Para lectores generales, el punto no es &amp;ldquo;cómo ejecutar un PoC&amp;rdquo;. La lección importante es que, después de que una vulnerabilidad crítica se hace pública, la verificación y la explotación avanzan más rápido. Los equipos de seguridad necesitan completar identificación de activos, evaluación de parches, refuerzo de detección y cierre de riesgos con mayor rapidez.&lt;/p&gt;
&lt;p&gt;Referencias:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Proyecto en GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/Unclecheng-li/poc-lab/tree/main&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/Unclecheng-li/poc-lab/tree/main&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;README en chino: &lt;a class=&#34;link&#34; href=&#34;https://github.com/Unclecheng-li/poc-lab/blob/main/README.zh-CN.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/Unclecheng-li/poc-lab/blob/main/README.zh-CN.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Clasificación de proyectos open source de AI en GitHub: de Coding Agent a bases de conocimiento RAG</title>
        <link>https://knightli.com/es/2026/05/21/github-ai-projects-site-statistics/</link>
        <pubDate>Thu, 21 May 2026 08:53:13 +0800</pubDate>
        
        <guid>https://knightli.com/es/2026/05/21/github-ai-projects-site-statistics/</guid>
        <description>&lt;p&gt;Esta página organiza proyectos de AI en GitHub por dirección de uso: AI Coding y Coding Agents, skills y flujos Agent, RAG y bases de conocimiento, creación multimodal, modelos locales e inferencia, aplicaciones verticales y automatización, e infraestructura para desarrollar aplicaciones de AI. Cuando aparezcan nuevos proyectos, pueden añadirse con la misma estructura.&lt;/p&gt;
&lt;h2 id=&#34;resumen-por-categoría&#34;&gt;Resumen por categoría
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Categoría&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;Proyectos&lt;/th&gt;
          &lt;th&gt;Para quién empezar aquí&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;AI Coding y Coding Agents&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;22&lt;/td&gt;
          &lt;td&gt;Usuarios que trabajan con Claude Code, Codex, Cursor, agents de terminal o automatización de repositorios&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Skills y flujos Agent&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;7&lt;/td&gt;
          &lt;td&gt;Usuarios que quieren estandarizar AI Coding, investigación o flujos de creación&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RAG, bases de conocimiento y memoria&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;7&lt;/td&gt;
          &lt;td&gt;Usuarios que necesitan búsqueda documental, bases de conocimiento, memoria de largo plazo, crawling web o extracción estructurada&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Aplicaciones verticales y automatización&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;7&lt;/td&gt;
          &lt;td&gt;Usuarios interesados en finanzas, trading, monitoreo de Xianyu, control de escritorio, automatización de navegador y otros escenarios prácticos&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Multimodal y creación de contenido&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;5&lt;/td&gt;
          &lt;td&gt;Usuarios que trabajan con imágenes, video, transcripción, librerías de prompts y distribución de contenido&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Infraestructura para aplicaciones de AI&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;5&lt;/td&gt;
          &lt;td&gt;Desarrolladores que construyen apps de AI, automatización de navegador o toolchains Prompt/MCP&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Modelos locales e inferencia&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;1&lt;/td&gt;
          &lt;td&gt;Usuarios interesados en DeepSeek local, motores de inferencia y adaptación de hardware&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;La distribución muestra varias direcciones frecuentes en los proyectos open source actuales de AI: las herramientas de AI Coding son las más numerosas, seguidas por flujos Agent, bases de conocimiento RAG y escenarios aplicados. Hay menos proyectos centrados solo en inferencia local porque mucho contenido de despliegue local se organiza alrededor de modelos, GPUs o planes de despliegue, no de un único proyecto de GitHub.&lt;/p&gt;
&lt;h2 id=&#34;ai-coding-y-coding-agents&#34;&gt;AI Coding y Coding Agents
&lt;/h2&gt;&lt;p&gt;Esta categoría se centra en comprensión de código, modificación de código, flujos de ingeniería y agents de terminal. Es el grupo más grande, con &lt;strong&gt;22&lt;/strong&gt; proyectos.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Proyecto&lt;/th&gt;
          &lt;th&gt;Artículo&lt;/th&gt;
          &lt;th&gt;GitHub&lt;/th&gt;
          &lt;th&gt;Uso principal&lt;/th&gt;
          &lt;th&gt;Para quién&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Ralph&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/04/27/ralph-autonomous-agent-loop-claude-code-amp/&#34; &gt;Ralph: convertir Claude Code y Amp en un ciclo autónomo de desarrollo&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/snarktank/ralph&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;snarktank/ralph&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Guiar Claude Code / Amp por PRD, planificación, ejecución y revisión&lt;/td&gt;
          &lt;td&gt;Quienes quieren ordenar el flujo de AI Coding&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Claude-Mem&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/05/01/claude-mem-persistent-memory-for-claude-code/&#34; &gt;Claude-Mem: memoria de largo plazo entre sesiones para Claude Code&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/thedotmack/claude-mem&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;thedotmack/claude-mem&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Añadir memoria entre sesiones a Claude Code&lt;/td&gt;
          &lt;td&gt;Usuarios intensivos de Claude Code&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Claude Code Hooks Mastery&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/05/01/claude-code-hooks-mastery-guide/&#34; &gt;Claude Code Hooks Mastery: introducción a 13 etapas del ciclo de hooks&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/disler/claude-code-hooks-mastery&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;disler/claude-code-hooks-mastery&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Aprender el ciclo de vida de hooks y control de automatización&lt;/td&gt;
          &lt;td&gt;Quienes quieren personalizar Claude Code&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Compound Engineering Plugin&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/05/01/compound-engineering-plugin-ai-coding-workflow/&#34; &gt;Compound Engineering Plugin: convertir AI Coding en ciclos de planificación, ejecución y revisión&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EveryInc/compound-engineering-plugin&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;EveryInc/compound-engineering-plugin&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Dividir AI Coding en planificación, ejecución y revisión&lt;/td&gt;
          &lt;td&gt;Usuarios que buscan ingeniería más disciplinada&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;free-claude-code&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/05/01/free-claude-code-anthropic-compatible-proxy/&#34; &gt;free-claude-code: conectar Claude Code a OpenRouter, DeepSeek y modelos locales&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Alishahryar1/free-claude-code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Alishahryar1/free-claude-code&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Conectar Claude Code a distintos backends mediante proxy&lt;/td&gt;
          &lt;td&gt;Usuarios que quieren reducir costes&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Hermes Agent&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/04/12/hermes-agent-intro-guide-vs-openclaw/&#34; &gt;Qué es Hermes Agent: visión general, ventajas, inicio rápido y comparación con OpenClaw&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/NousResearch/hermes-agent&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NousResearch/hermes-agent&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Framework local de Agent con herramientas y ejecución de tareas&lt;/td&gt;
          &lt;td&gt;Usuarios que quieren correr Agents locales&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;OpenHarness&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/04/12/openharness-basic-functions/&#34; &gt;Qué puede hacer OpenHarness como Agent Harness open source&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/HKUDS/OpenHarness&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;HKUDS/OpenHarness&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Agent Harness y ejecución multi-agent&lt;/td&gt;
          &lt;td&gt;Investigadores de orquestación Agent&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CodexBridge&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/05/13/codexbridge-openai-compatible-api/&#34; &gt;Usar Codex con modelos nacionales: API compatibles con OpenAI y CodexBridge&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/begonia599/CodexBridge&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;begonia599/CodexBridge&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Conectar Codex a APIs compatibles con OpenAI&lt;/td&gt;
          &lt;td&gt;Usuarios que quieren usar Codex con modelos nacionales&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ccx&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/05/13/ccx-ai-api-proxy-gateway/&#34; &gt;Usar CCX para gestionar APIs compatibles con OpenAI para Codex y modelos nacionales&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/BenedictKing/ccx&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;BenedictKing/ccx&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Gestionar proxies de API para Claude, Codex, Gemini y más&lt;/td&gt;
          &lt;td&gt;Usuarios que alternan varios modelos&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;cc-haha&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/05/14/cc-haha-claude-code-desktop-workbench/&#34; &gt;cc-haha: un escritorio de trabajo para Claude Code&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/NanmiCoder/cc-haha&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NanmiCoder/cc-haha&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Workspace de escritorio y entrada Computer Use para Claude Code&lt;/td&gt;
          &lt;td&gt;Usuarios de Claude Code que prefieren GUI&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;DeepSeek-TUI&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/05/16/deepseek-tui-terminal-coding-agent/&#34; &gt;DeepSeek-TUI: convertir DeepSeek V4 en un agente de programación en terminal&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Hmbown/DeepSeek-TUI&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Ejecutar un agente de programación DeepSeek en terminal&lt;/td&gt;
          &lt;td&gt;Usuarios de DeepSeek y línea de comandos&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Open Design&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/05/18/open-design-open-source-claude-design-alternative/&#34; &gt;Open Design: convertir Claude Code y Codex en herramientas de diseño AI&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/nexu-io/open-design&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;nexu-io/open-design&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Llevar Claude Code / Codex a generación de diseño&lt;/td&gt;
          &lt;td&gt;Usuarios que quieren agentes para prototipos&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;agentmemory&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/05/19/agentmemory-persistent-memory-ai-coding-agents/&#34; &gt;agentmemory: memoria persistente para Claude Code, Codex y Cursor&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/rohitg00/agentmemory&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;rohitg00/agentmemory&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Añadir memoria persistente a coding agents&lt;/td&gt;
          &lt;td&gt;Desarrolladores con proyectos largos&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Graphify&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/05/21/safishamsi-graphify-ai-code-knowledge-graph/&#34; &gt;Graphify: convertir una base de código en un grafo consultable por AI&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/safishamsi/graphify&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;safishamsi/graphify&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Convertir código en grafo de conocimiento para reducir lecturas repetidas&lt;/td&gt;
          &lt;td&gt;Usuarios con bases de código grandes&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;oh-my-pi&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/05/23/oh-my-pi-ai-coding-agent-terminal-ide-lsp-debugger/&#34; &gt;Qué es oh-my-pi: un asistente de AI coding que conecta terminal, IDE y depurador&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/can1357/oh-my-pi&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;can1357/oh-my-pi&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Conectar terminal, IDE, LSP y depurador como consola local de AI coding&lt;/td&gt;
          &lt;td&gt;Desarrolladores que quieren unir flujos CLI e IDE&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Claude Plugins Official&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/05/23/claude-plugins-official-claude-code-plugin-directory/&#34; &gt;Claude Code ya tiene directorio de plugins: qué instalar, cómo instalarlo y qué cuidar&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/anthropics/claude-plugins-official&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;anthropics/claude-plugins-official&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Directorio oficial de plugins de Claude Code y punto de instalación&lt;/td&gt;
          &lt;td&gt;Usuarios que quieren ampliar Claude Code&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CodeGraph&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/05/23/codegraph-local-code-knowledge-graph-ai-coding-agent/&#34; &gt;Qué es CodeGraph: un mapa local de código para Claude Code, Codex y Cursor&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/colbymchenry/codegraph&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;colbymchenry/codegraph&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Generar índices locales y grafos de relación para ayudar a Coding Agents a entender proyectos&lt;/td&gt;
          &lt;td&gt;Desarrolladores que mantienen bases de código medianas o grandes&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CC Switch&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/05/06/cc-switch-ai-cli-manager/&#34; &gt;CC Switch: gestionar Claude Code, Codex, Gemini CLI y OpenClaw en una herramienta de escritorio&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/farion1231/cc-switch&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;farion1231/cc-switch&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Gestionar varias CLI de AI y cambios de cuenta/configuración&lt;/td&gt;
          &lt;td&gt;Usuarios de varias CLI&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Warp&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/05/07/warpdotdev-warp-open-source-agentic-terminal/&#34; &gt;Warp open source: del terminal al Agentic Development Environment&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/warpdotdev/warp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;warpdotdev/warp&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Terminal y entorno de desarrollo agentic&lt;/td&gt;
          &lt;td&gt;Usuarios intensivos de terminal&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;opencode&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/05/08/opencode-open-source-ai-coding-agent/&#34; &gt;opencode vs Claude Code vs Codex: guía de herramientas open source de AI Coding&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/anomalyco/opencode&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;anomalyco/opencode&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Agent open source para AI Coding&lt;/td&gt;
          &lt;td&gt;Quienes buscan alternativas a Claude Code / Codex&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;9Router&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/05/08/9router-ai-coding-router-token-saver/&#34; &gt;9Router: conectar Claude Code, Codex y Cursor a un único router de AI&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/decolua/9router&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;decolua/9router&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Ruteo de modelos para AI Coding y control de coste de tokens&lt;/td&gt;
          &lt;td&gt;Usuarios multi-herramienta y multi-modelo&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;goose&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/05/08/goose-open-source-ai-agent-desktop-cli-api/&#34; &gt;goose: AI Agent open source para escritorio, CLI y API&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/aaif-goose/goose&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;aaif-goose/goose&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Agent open source en escritorio, CLI y API&lt;/td&gt;
          &lt;td&gt;Usuarios que quieren un workspace Agent general&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;skills-y-flujos-agent&#34;&gt;Skills y flujos Agent
&lt;/h2&gt;&lt;p&gt;Esta categoría convierte capacidades de AI en skills, procesos y especificaciones repetibles. Incluye &lt;strong&gt;7&lt;/strong&gt; proyectos.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Proyecto&lt;/th&gt;
          &lt;th&gt;Artículo&lt;/th&gt;
          &lt;th&gt;GitHub&lt;/th&gt;
          &lt;th&gt;Uso principal&lt;/th&gt;
          &lt;th&gt;Para quién&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;mattpocock/skills&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/05/15/matt-pocock-skills-ai-engineering-workflow/&#34; &gt;Rechazar Vibe Coding: el repo skills de Matt Pocock añade restricciones de ingeniería&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/mattpocock/skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;mattpocock/skills&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Usar skills para controlar flujos de AI Coding&lt;/td&gt;
          &lt;td&gt;Quienes quieren disciplina de ingeniería para Agents&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Superpowers&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/05/15/obra-superpowers-agentic-skills-framework/&#34; &gt;Superpowers: devolver Coding Agents al flujo de ingeniería&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/obra/superpowers&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;obra/superpowers&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Framework de skills agentic y metodología de desarrollo&lt;/td&gt;
          &lt;td&gt;Quienes quieren flujos sistemáticos con Coding Agents&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Prompt-Vault&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/05/15/prompt-vault-coding-prompt-benchmark/&#34; &gt;Prompt-Vault: biblioteca de especificaciones de prompts para probar AI Coding&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/w512/Prompt-Vault&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;w512/Prompt-Vault&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Reunir prompts de prueba para AI Coding&lt;/td&gt;
          &lt;td&gt;Evaluadores de modelos y herramientas&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;web-video-presentation&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/05/15/web-video-presentation-agent-skill/&#34; &gt;web-video-presentation: skill Agent para convertir artículos en videos web grabables&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/ConardLi/garden-skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ConardLi/garden-skills&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Convertir artículos en videos web grabables&lt;/td&gt;
          &lt;td&gt;Creadores y usuarios de automatización&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;nuwa-skill&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/04/22/nuwa-skill-distill-how-someone-thinks/&#34; &gt;nuwa-skill: convertir “destilar una persona” en un flujo ejecutable&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/alchaincyf/nuwa-skill&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;alchaincyf/nuwa-skill&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Reproducir estilo expresivo y flujo de pensamiento con skill&lt;/td&gt;
          &lt;td&gt;Usuarios que construyen Agents de estilo&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Scientific Agent Skills&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/05/17/scientific-agent-skills/&#34; &gt;Scientific Agent Skills: entregar flujos científicos a AI Agents&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/K-Dense-AI/scientific-agent-skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;K-Dense-AI/scientific-agent-skills&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Colección de skills para investigación científica&lt;/td&gt;
          &lt;td&gt;Investigadores, analistas y redactores técnicos&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;easy-vibe&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/05/16/easy-vibe-vibe-coding-learning-map/&#34; &gt;easy-vibe: mapa de aprendizaje para principiantes de Vibe Coding&lt;/a&gt;&lt;/td&gt;
          &lt;td&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;datawhalechina/easy-vibe&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Mapa de aprendizaje de Vibe Coding&lt;/td&gt;
          &lt;td&gt;Principiantes de AI Coding&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;rag-bases-de-conocimiento-y-memoria&#34;&gt;RAG, bases de conocimiento y memoria
&lt;/h2&gt;&lt;p&gt;Esta categoría aborda búsqueda documental, construcción de bases de conocimiento, memoria de largo plazo y extracción estructurada. Incluye &lt;strong&gt;7&lt;/strong&gt; proyectos.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Proyecto&lt;/th&gt;
          &lt;th&gt;Artículo&lt;/th&gt;
          &lt;th&gt;GitHub&lt;/th&gt;
          &lt;th&gt;Uso principal&lt;/th&gt;
          &lt;th&gt;Para quién&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;LangExtract&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/05/01/google-langextract-llm-structured-data-extraction/&#34; &gt;Google LangExtract: extraer datos estructurados de textos largos con LLM&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/google/langextract&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;google/langextract&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Extraer información estructurada de textos largos&lt;/td&gt;
          &lt;td&gt;Usuarios de extracción de información y datos&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;qmd&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/05/01/qmd-markdown-search-for-ai-agents/&#34; &gt;qmd: búsqueda local en Markdown para AI Agents&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/tobi/qmd&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;tobi/qmd&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Búsqueda local en documentos Markdown&lt;/td&gt;
          &lt;td&gt;Usuarios que gestionan conocimiento en Markdown&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Firecrawl&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/04/15/firecrawl-ai-web-data-api/&#34; &gt;Firecrawl: búsqueda, crawling e interacción web para AI Agents&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/firecrawl/firecrawl&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;firecrawl/firecrawl&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Crawling web, búsqueda y entrada de datos estructurados&lt;/td&gt;
          &lt;td&gt;Usuarios de RAG e ingestión de datos para Agents&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RAGFlow&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/04/15/ragflow-rag-engine-guide/&#34; &gt;RAGFlow: funciones y uso de un motor RAG open source&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/infiniflow/ragflow&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;infiniflow/ragflow&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Motor RAG open source&lt;/td&gt;
          &lt;td&gt;Bases de conocimiento empresariales y Q&amp;amp;A documental&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;OpenHuman&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/05/15/openhuman-open-source-personal-ai-agent/&#34; &gt;OpenHuman: ruta de escritorio para AI Agent personal open source&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/tinyhumansai/openhuman&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;tinyhumansai/openhuman&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Agent personal local-first y capa de memoria&lt;/td&gt;
          &lt;td&gt;Usuarios que quieren integrar datos personales&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;OpenKB&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/05/17/openkb-llm-knowledge-base/&#34; &gt;OpenKB: compilar documentos en bases de conocimiento LLM actualizables&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/VectifyAI/OpenKB&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;VectifyAI/OpenKB&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Compilar documentos en bases de conocimiento actualizables&lt;/td&gt;
          &lt;td&gt;Mantenedores de documentación y conocimiento&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;PageIndex&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/05/20/vectifyai-pageindex-vectorless-rag/&#34; &gt;PageIndex: indexación RAG razonada sin bases vectoriales&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/VectifyAI/PageIndex&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;VectifyAI/PageIndex&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Indexación documental razonada sin bases vectoriales&lt;/td&gt;
          &lt;td&gt;Usuarios que siguen nuevas rutas de RAG&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;multimodal-y-creación-de-contenido&#34;&gt;Multimodal y creación de contenido
&lt;/h2&gt;&lt;p&gt;Esta categoría cubre imágenes, video, transcripción y distribución de contenido. Incluye &lt;strong&gt;5&lt;/strong&gt; proyectos.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Proyecto&lt;/th&gt;
          &lt;th&gt;Artículo&lt;/th&gt;
          &lt;th&gt;GitHub&lt;/th&gt;
          &lt;th&gt;Uso principal&lt;/th&gt;
          &lt;th&gt;Para quién&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;rembg&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/04/19/rembg-background-removal-notes/&#34; &gt;rembg: herramienta local para quitar fondos de imágenes&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/danielgatis/rembg&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;danielgatis/rembg&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Eliminación local de fondos&lt;/td&gt;
          &lt;td&gt;E-commerce, diseño y procesamiento de imágenes&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;awesome-gpt-image-2-prompts&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/05/02/awesome-gpt-image-2-prompts-case-index/&#34; &gt;Biblioteca de prompts GPT-Image 2: e-commerce, pósters, retratos y UI&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/EvoLinkAI/awesome-gpt-image-2-prompts&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;EvoLinkAI/awesome-gpt-image-2-prompts&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Prompts y casos para GPT-Image 2&lt;/td&gt;
          &lt;td&gt;Usuarios de AI Art y prompts&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;faster-whisper&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/05/01/faster-whisper-speech-to-text/&#34; &gt;faster-whisper: motor Whisper más rápido para transcripción&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/SYSTRAN/faster-whisper&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SYSTRAN/faster-whisper&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Speech-to-text de alto rendimiento&lt;/td&gt;
          &lt;td&gt;Usuarios de subtítulos, transcripción y voz&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Pixelle-Video&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/05/07/pixelle-video-ai-short-video-engine/&#34; &gt;Pixelle-Video: motor AI open source para generar videos cortos desde un tema&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/AIDC-AI/Pixelle-Video&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AIDC-AI/Pixelle-Video&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Flujo para generar videos cortos desde un tema&lt;/td&gt;
          &lt;td&gt;Creadores de videos cortos y AIGC&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AiToEarn&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/05/19/aitoearn-ai-content-marketing-agent/&#34; &gt;¿Demasiadas plataformas de contenido? AiToEarn usa Agents para ahorrar trabajo&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/yikart/AiToEarn&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;yikart/AiToEarn&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Distribución multicanal y automatización para creadores&lt;/td&gt;
          &lt;td&gt;Operadores de contenido y creadores&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;modelos-locales-e-inferencia&#34;&gt;Modelos locales e inferencia
&lt;/h2&gt;&lt;p&gt;Esta categoría se centra en ejecución local de modelos y experimentos de inferencia. Actualmente tiene menos proyectos, con &lt;strong&gt;1&lt;/strong&gt; proyecto.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Proyecto&lt;/th&gt;
          &lt;th&gt;Artículo&lt;/th&gt;
          &lt;th&gt;GitHub&lt;/th&gt;
          &lt;th&gt;Uso principal&lt;/th&gt;
          &lt;th&gt;Para quién&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;ds4&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/05/11/deepseek-v4-flash-ds4-metal/&#34; &gt;Ejecutar DeepSeek 4 localmente: Antirez ds4 en Apple Silicon Mac&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/antirez/ds4&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;antirez/ds4&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Experimentar con DeepSeek 4 en Apple Silicon&lt;/td&gt;
          &lt;td&gt;Usuarios de modelos locales e inferencia&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;aplicaciones-verticales-y-automatización&#34;&gt;Aplicaciones verticales y automatización
&lt;/h2&gt;&lt;p&gt;Esta categoría aplica Agents o AI a finanzas, trading, navegadores, escritorio, monitoreo de comercio electrónico y otros escenarios concretos. Incluye &lt;strong&gt;7&lt;/strong&gt; proyectos.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Proyecto&lt;/th&gt;
          &lt;th&gt;Artículo&lt;/th&gt;
          &lt;th&gt;GitHub&lt;/th&gt;
          &lt;th&gt;Uso principal&lt;/th&gt;
          &lt;th&gt;Para quién&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;TradingAgents-CN&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/05/01/tradingagents-cn-multi-agent-financial-research-framework/&#34; &gt;TradingAgents-CN: framework multi-agent para investigación de trading financiero en chino&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/hsliuping/TradingAgents-CN&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;hsliuping/TradingAgents-CN&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Framework multi-agent de investigación financiera&lt;/td&gt;
          &lt;td&gt;Investigadores quant, financieros y de Agents&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;FinceptTerminal&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/05/01/finceptterminal-open-source-financial-terminal/&#34; &gt;FinceptTerminal: terminal financiero open source, investigación quant y workspace AI Agent&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Fincept-Corporation/FinceptTerminal&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Fincept-Corporation/FinceptTerminal&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Terminal financiero, investigación quant y workspace Agent&lt;/td&gt;
          &lt;td&gt;Analistas financieros y usuarios quant&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Anthropic financial-services&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/05/16/anthropic-financial-services-agent-templates/&#34; &gt;Anthropic financial-services: plantillas reutilizables para escenarios Agent financieros&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/anthropics/financial-services&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;anthropics/financial-services&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Plantillas de Agents para servicios financieros&lt;/td&gt;
          &lt;td&gt;Usuarios que crean soluciones AI financieras&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ai-goofish-monitor&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/05/17/ai-goofish-monitor/&#34; &gt;ai-goofish-monitor: sistema open source de monitoreo AI para productos de Xianyu&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Usagi-org/ai-goofish-monitor&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Usagi-org/ai-goofish-monitor&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Monitoreo de productos y automatización de Xianyu&lt;/td&gt;
          &lt;td&gt;Usuarios de monitoreo de segunda mano&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CloakBrowser&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/05/19/cloakbrowser-stealth-chromium-browser-automation/&#34; &gt;CloakBrowser: navegador más humano para Playwright y Puppeteer&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/CloakHQ/CloakBrowser&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CloakHQ/CloakBrowser&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Entorno de automatización de navegador más humano&lt;/td&gt;
          &lt;td&gt;Automatización de navegador y operación Agent&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;UI-TARS-desktop&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/05/19/ui-tars-desktop-multimodal-ai-agent-stack/&#34; &gt;¿Dejar que AI use el ordenador? UI-TARS-desktop conecta escritorio, navegador y herramientas&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/bytedance/UI-TARS-desktop&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;bytedance/UI-TARS-desktop&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Agent para operar escritorio, navegador y herramientas&lt;/td&gt;
          &lt;td&gt;Usuarios que quieren que AI opere el ordenador&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;AI-Trader&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/05/19/ai-trader-agent-native-trading-platform/&#34; &gt;Qué es AI-Trader: plataforma para señales y simulación de trading con Agents&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/HKUDS/AI-Trader&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;HKUDS/AI-Trader&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Señales de trading y simulación con AI Agent&lt;/td&gt;
          &lt;td&gt;Investigadores de trading y Agents financieros&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;infraestructura-para-aplicaciones-de-ai&#34;&gt;Infraestructura para aplicaciones de AI
&lt;/h2&gt;&lt;p&gt;Esta categoría ofrece componentes base para construir aplicaciones de AI y toolchains Agent. Incluye &lt;strong&gt;5&lt;/strong&gt; proyectos.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Proyecto&lt;/th&gt;
          &lt;th&gt;Artículo&lt;/th&gt;
          &lt;th&gt;GitHub&lt;/th&gt;
          &lt;th&gt;Uso principal&lt;/th&gt;
          &lt;th&gt;Para quién&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Prompt Optimizer&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/05/01/prompt-optimizer-prompt-engineering-tool/&#34; &gt;Prompt Optimizer: optimización, pruebas y herramientas MCP open source&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/linshenkx/prompt-optimizer&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;linshenkx/prompt-optimizer&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Optimización de prompts, pruebas y MCP&lt;/td&gt;
          &lt;td&gt;Usuarios de prompt engineering y ajuste de apps&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Playwright CLI&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/04/12/playwright-cli-getting-started/&#34; &gt;Playwright CLI: instalación, skills, sesiones y comandos comunes&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/microsoft/playwright-cli&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;microsoft/playwright-cli&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;CLI de automatización de navegador para coding agents&lt;/td&gt;
          &lt;td&gt;Usuarios Agent que necesitan operar navegador&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Vercel AI SDK&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/05/17/vercel-ai-sdk-typescript-agent-toolkit/&#34; &gt;Qué es Vercel AI SDK: toolkit unificado para apps AI en TypeScript&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/vercel/ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;vercel/ai&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;SDK para aplicaciones AI en TypeScript&lt;/td&gt;
          &lt;td&gt;Desarrolladores front-end y full-stack&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CLIProxyAPI&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/05/24/cliproxyapi-cli-to-api-gateway/&#34; &gt;CLIProxyAPI: envolver Codex, Claude Code y Gemini CLI como APIs unificadas&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/router-for-me/CLIProxyAPI&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;router-for-me/CLIProxyAPI&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Envolver varias CLI de AI y estados OAuth como APIs compatibles&lt;/td&gt;
          &lt;td&gt;Usuarios que quieren acceso unificado a Codex, Claude Code y Gemini CLI&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CLIProxyAPI Management Center&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://knightli.com/es/2026/05/24/cliproxyapi-management-center/&#34; &gt;CLIProxyAPI Management Center: una consola visual para administrar CLIProxyAPI&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/router-for-me/Cli-Proxy-API-Management-Center&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;router-for-me/Cli-Proxy-API-Management-Center&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Interfaz web para configuración, cuentas, logs y OAuth de CLIProxyAPI&lt;/td&gt;
          &lt;td&gt;Usuarios que usan CLIProxyAPI como gateway de equipo o pool de cuentas&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&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://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://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>
