<?xml version="1.0" encoding="UTF-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es"><title>Chemaclass - developer-tools</title><subtitle>Tech Lead compartiendo ideas prácticas sobre artesanía del software, TDD, liderazgo, Bitcoin e IA. Artículos, resúmenes de libros y charlas.</subtitle><link rel="self" type="application/atom+xml" href="https://chemaclass.com/es/tags/developer-tools/atom.xml"/><link rel="alternate" type="text/html" href="https://chemaclass.com"/><generator uri="https://www.getzola.org/">Zola</generator><updated>2026-06-26T00:00:00+00:00</updated><id>https://chemaclass.com/es/tags/developer-tools/atom.xml</id><entry xml:lang="es"><title>Recorta la Factura de Tokens</title><subtitle>Dos fugas, dos parches</subtitle><category term="ai" scheme="https://chemaclass.com/tags/ai/" label="Ai"/><category term="productivity" scheme="https://chemaclass.com/tags/productivity/" label="Productivity"/><category term="developer-tools" scheme="https://chemaclass.com/tags/developer-tools/" label="Developer Tools"/><category term="agentic-coding" scheme="https://chemaclass.com/tags/agentic-coding/" label="Agentic Coding"/><published>2026-06-26T00:00:00+00:00</published><updated>2026-06-26T00:00:00+00:00</updated><author><name>
Chemaclass</name></author><link rel="alternate" type="text/html" href="https://chemaclass.com/es/blog/cut-the-token-bill-on-both-ends/"/><id>https://chemaclass.com/es/blog/cut-the-token-bill-on-both-ends/</id><summary type="html">Dos herramientas pequeñas que se suman: Caveman recorta lo que el agent te responde, RTK recorta lo que la terminal manda de vuelta. Más espacio en el mismo context window, mismo modelo, mismos prompts.</summary><content type="html">&lt;p>Toda sesión agéntica quema tokens en dos direcciones a la vez. El agent te responde, y la terminal escupe su output. Las dos cosas pasan por el mismo context window, y las dos tienen fugas.&lt;/p>
&lt;p>Estira la sesión lo suficiente y chocas con el muro. Las respuestas empeoran y la factura sube.&lt;/p>
&lt;span id="continue-reading">&lt;/span>
&lt;blockquote>
&lt;p>Mismo modelo. Mismos prompts. Factura más ligera.&lt;/p>
&lt;/blockquote>
&lt;p>Abre cualquier transcripción de sesión y los bloques más grandes no son tus prompts:&lt;/p>
&lt;ul>
&lt;li>Respuestas del agent: cháchara, vacilaciones, repeticiones, “Sure! Happy to help…”.&lt;/li>
&lt;li>Output de herramientas: logs de &lt;code>npm install&lt;/code>, muros de texto de &lt;code>git status&lt;/code>, volcados de &lt;code>grep&lt;/code> con rutas completas.&lt;/li>
&lt;/ul>
&lt;p>Las dos herramientas de abajo atacan una de esas cosas cada una. Caveman se ocupa de lo que el agent responde. RTK se ocupa de lo que la shell manda de vuelta.&lt;/p>
&lt;h2 id="caveman-recorta-la-salida">Caveman recorta la salida
&lt;a class="heading-anchor" href="#caveman-recorta-la-salida" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>&lt;strong>&lt;a rel="external" href="https://github.com/JuliusBrussee/caveman">Caveman&lt;/a>&lt;/strong> es un Agent Skill. Ejecuta &lt;code>/caveman full&lt;/code> una vez y el agent deja de rellenar sus respuestas: sin artículos, sin relleno, sin cháchara. Los fragmentos están bien, y los términos técnicos se mantienen exactos.&lt;/p>
&lt;p>Instalación:&lt;/p>
&lt;pre class="giallo" style="color-scheme: light dark; color: light-dark(#24292E, #E1E4E8); background-color: light-dark(#FFFFFF, #24292E);">&lt;code data-lang="shellscript">&lt;span class="giallo-l">&lt;span style="color: light-dark(#6F42C1, #B392F0);">curl&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);"> -&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">fsSL&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> https://raw.githubusercontent.com/JuliusBrussee/caveman/main/install.sh&lt;/span>&lt;span style="color: light-dark(#D73A49, #F97583);"> |&lt;/span>&lt;span style="color: light-dark(#6F42C1, #B392F0);"> bash&lt;/span>&lt;/span>&lt;/code>&lt;/pre>
&lt;p>Lo que muere:&lt;/p>
&lt;ul>
&lt;li>Artículos: a, an, the.&lt;/li>
&lt;li>Rellenos: just, really, basically, actually, simply.&lt;/li>
&lt;li>Cháchara: sure, of course, happy to.&lt;/li>
&lt;li>Vacilaciones: might, perhaps, it depends.&lt;/li>
&lt;/ul>
&lt;p>Lo que sobrevive:&lt;/p>
&lt;ul>
&lt;li>Bloques de código, errores exactos, rutas de archivo, comandos.&lt;/li>
&lt;li>Avisos de seguridad y operaciones destructivas (el skill se aclara solo).&lt;/li>
&lt;/ul>
&lt;details class="deep-dive">
&lt;summary class="deep-dive__header">
&lt;span class="deep-dive__icon">&lt;/span>
&lt;span class="deep-dive__title">Deep Dive: Antes y después&lt;/span>
&lt;/summary>
&lt;div class="deep-dive__content">
&lt;p>Modo normal:&lt;/p>
&lt;blockquote>
&lt;p>Sure! I’d be happy to help you with that. The issue you’re experiencing is likely caused by an off-by-one error in your token expiry check. The middleware compares the current time using &lt;code>&amp;lt;&lt;/code> when it should really be using &lt;code>&amp;lt;=&lt;/code>. Here’s the fix:&lt;/p>
&lt;/blockquote>
&lt;p>Modo caveman:&lt;/p>
&lt;blockquote>
&lt;p>Bug in auth middleware. Token expiry check use &lt;code>&amp;lt;&lt;/code> not &lt;code>&amp;lt;=&lt;/code>. Fix:&lt;/p>
&lt;/blockquote>
&lt;p>Mismo fix, y el bloque de código que viene después es idéntico. Lo único que encoge es la prosa de alrededor, hasta más o menos un cuarto.&lt;/p>
&lt;/div>
&lt;/details>
&lt;p>Hay tres niveles: &lt;code>lite&lt;/code>, &lt;code>full&lt;/code> y &lt;code>ultra&lt;/code>. Empieza en &lt;code>full&lt;/code>, porque &lt;code>ultra&lt;/code> se lee como un telegrama. Si una respuesta te queda demasiado seca, escribe &lt;code>normal mode&lt;/code> y se relaja.&lt;/p>
&lt;blockquote>
&lt;p>El agent no pierde inteligencia cuando le quitas la cháchara.&lt;/p>
&lt;/blockquote>
&lt;h2 id="rtk-recorta-la-entrada">RTK recorta la entrada
&lt;a class="heading-anchor" href="#rtk-recorta-la-entrada" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>&lt;strong>&lt;a rel="external" href="https://github.com/rtk-ai/rtk">RTK&lt;/a>&lt;/strong> (Rust Token Killer) envuelve los comandos que ejecuta tu agent. Un hook reescribe &lt;code>git status&lt;/code> como &lt;code>rtk git status&lt;/code> por detrás, así que no hay nada extra que teclear ni overhead que notar.&lt;/p>
&lt;p>Instalación:&lt;/p>
&lt;pre class="giallo" style="color-scheme: light dark; color: light-dark(#24292E, #E1E4E8); background-color: light-dark(#FFFFFF, #24292E);">&lt;code data-lang="shellscript">&lt;span class="giallo-l">&lt;span style="color: light-dark(#6F42C1, #B392F0);">brew&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> install&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> rtk&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#6F42C1, #B392F0);">rtk&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> init&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);"> -&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">g&lt;/span>&lt;span style="color: light-dark(#6A737D, #6A737D);"> #&lt;/span>&lt;span style="color: light-dark(#6A737D, #6A737D);"> instala el hook que reescribe los comandos&lt;/span>&lt;/span>&lt;/code>&lt;/pre>
&lt;p>Si más tarde &lt;code>rtk gain&lt;/code> da error, se ha colado otra herramienta con el mismo nombre; instala desde el &lt;a rel="external" href="https://github.com/rtk-ai/rtk">repo&lt;/a>.&lt;/p>
&lt;p>La versión envuelta quita el ruido antes de que llegue al agent: códigos de color, separadores repetidos, banners de &lt;code>npm install&lt;/code>, timestamps verbosos.&lt;/p>
&lt;p>Aquí tienes el mismo &lt;code>git status&lt;/code>, en crudo y luego envuelto:&lt;/p>
&lt;pre class="giallo" style="color-scheme: light dark; color: light-dark(#24292E, #E1E4E8); background-color: light-dark(#FFFFFF, #24292E);">&lt;code data-lang="plain">&lt;span class="giallo-l">&lt;span>$ rtk proxy git status&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span>On branch main&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span>Your branch is up to date with &amp;#39;origin/main&amp;#39;.&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;/span>
&lt;span class="giallo-l">&lt;span>Untracked files:&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span> (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to include in what will be committed)&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span> content/blog/new-draft.md&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;/span>
&lt;span class="giallo-l">&lt;span>nothing added to commit but untracked files present (use &amp;quot;git add&amp;quot; to track)&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;pre class="giallo" style="color-scheme: light dark; color: light-dark(#24292E, #E1E4E8); background-color: light-dark(#FFFFFF, #24292E);">&lt;code data-lang="plain">&lt;span class="giallo-l">&lt;span>$ rtk git status&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span>* main...origin/main&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span>? Untracked: 1 file&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span> content/blog/new-draft.md&lt;/span>&lt;/span>&lt;/code>&lt;/pre>
&lt;p>La misma información en la mitad de líneas. En un repo con movimiento la diferencia solo crece, porque decenas de untracked files, pistas de rama y líneas de instrucciones colapsan en un solo bloque pequeño.&lt;/p>
&lt;pre class="giallo" style="color-scheme: light dark; color: light-dark(#24292E, #E1E4E8); background-color: light-dark(#FFFFFF, #24292E);">&lt;code data-lang="shellscript">&lt;span class="giallo-l">&lt;span style="color: light-dark(#6F42C1, #B392F0);">rtk&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> gain&lt;/span>&lt;span style="color: light-dark(#6A737D, #6A737D);"> #&lt;/span>&lt;span style="color: light-dark(#6A737D, #6A737D);"> ver cuántos tokens te ha ahorrado&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#6F42C1, #B392F0);">rtk&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> gain&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);"> -&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">-history&lt;/span>&lt;span style="color: light-dark(#6A737D, #6A737D);"> #&lt;/span>&lt;span style="color: light-dark(#6A737D, #6A737D);"> desglose por comando&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#6F42C1, #B392F0);">rtk&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> discover&lt;/span>&lt;span style="color: light-dark(#6A737D, #6A737D);"> #&lt;/span>&lt;span style="color: light-dark(#6A737D, #6A737D);"> escanea tu historial de agente buscando ganancias&lt;/span>&lt;/span>&lt;/code>&lt;/pre>
&lt;p>RTK reporta &lt;a rel="external" href="https://github.com/rtk-ai/rtk">60-90% menos tokens&lt;/a> en los comandos de desarrollo habituales. Ejecuta &lt;code>rtk gain&lt;/code> tras un uso real para ver tu propio número.&lt;/p>
&lt;p>Nunca toca el payload, solo el ruido a su alrededor, así que los errores y los stack traces salen exactamente como son. Si algún filtro alguna vez se come algo que de verdad necesitas, sáltatelo en esa llamada con &lt;code>rtk proxy &amp;lt;cmd&amp;gt;&lt;/code>.&lt;/p>
&lt;blockquote>
&lt;p>El output que tú no lees sigue siendo output que el modelo tiene que leer.&lt;/p>
&lt;/blockquote>
&lt;h2 id="por-que-la-combinacion-suma">Por qué la combinación suma
&lt;a class="heading-anchor" href="#por-que-la-combinacion-suma" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Por separado, cada herramienta ayuda un poco. Júntalas y el efecto se multiplica, porque atacan mitades distintas del mismo bucle. Un turno va así: tú escribes el prompt, el agent piensa, ejecuta un comando, la terminal responde, el agent lo lee y luego te contesta. RTK encoge la mitad de la terminal y Caveman encoge la respuesta, así que cada turno sale más barato y caben más en una misma ventana.&lt;/p>
&lt;p>Aquí está la prueba real, en un plan de 100 $/mes. Antes de añadirlas llegaba al límite semanal continuamente, a veces con un solo proyecto. Ahora corro varios proyectos en paralelo y el límite casi no aparece. El plan no se hizo más grande; las sesiones se hicieron más pequeñas.&lt;/p>
&lt;h2 id="instalalas-una-vez-y-olvidate">Instálalas una vez y olvídate
&lt;a class="heading-anchor" href="#instalalas-una-vez-y-olvidate" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Las dos instalaciones son globales, y las haces una sola vez. A partir de ahí sigues escribiendo &lt;code>git status&lt;/code>, &lt;code>grep&lt;/code> y &lt;code>npm install&lt;/code> igual que siempre. El hook los reescribe por ti y Caveman se activa solo, así que no hay hábitos nuevos que aprender.&lt;/p>
&lt;p>¿No sabes por dónde empezar? Elige la fuga que más te duela ahora mismo. Si el problema son las respuestas largas en cada arreglo, empieza por Caveman. Si son las inundaciones de output de &lt;code>grep&lt;/code> y &lt;code>npm install&lt;/code>, empieza por RTK. Añade la otra cuando te apetezca, que no se estorban entre sí.&lt;/p>
&lt;blockquote>
&lt;p>No mejoraste el modelo. Dejaste de malgastar su atención.&lt;/p>
&lt;/blockquote>
&lt;p>&lt;img src="/images/blog/2026-06-26/footer.webp" alt="blog-footer" />&lt;/p></content></entry><entry xml:lang="es"><title>Skills por Encima de Agents</title><subtitle>Inteligencia sin experiencia es entretenimiento</subtitle><category term="ai" scheme="https://chemaclass.com/tags/ai/" label="Ai"/><category term="software" scheme="https://chemaclass.com/tags/software/" label="Software"/><category term="craftsmanship" scheme="https://chemaclass.com/tags/craftsmanship/" label="Craftsmanship"/><category term="productivity" scheme="https://chemaclass.com/tags/productivity/" label="Productivity"/><category term="developer-tools" scheme="https://chemaclass.com/tags/developer-tools/" label="Developer Tools"/><published>2026-05-19T00:00:00+00:00</published><updated>2026-05-19T00:00:00+00:00</updated><author><name>
Chemaclass</name></author><link rel="alternate" type="text/html" href="https://chemaclass.com/es/blog/skills-over-agents/"/><id>https://chemaclass.com/es/blog/skills-over-agents/</id><summary type="html">Por qué los skills de Claude Code superan a los agentes especializados. El contexto bajo demanda decide la calidad. Librería que viaja con tu código.</summary><content type="html">&lt;p>La gente compara agentes de código. Claude Code, Codex, Gemini CLI. Cuál es más listo, más rápido, más barato. Los benchmarks salen nuevos cada mes.&lt;/p>
&lt;p>Pregunta equivocada.&lt;/p>
&lt;p>Tras un año metiendo agentes en proyectos reales, lo que más cambió las cosas no fue el agente. Fueron los skills que le escribí.&lt;/p>
&lt;span id="continue-reading">&lt;/span>&lt;h2 id="los-agentes-son-un-commodity">Los agentes son un commodity
&lt;a class="heading-anchor" href="#los-agentes-son-un-commodity" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Todo agente de código tiene la misma forma. Un modelo de lenguaje, un runtime, acceso al filesystem. Leer, razonar, escribir. Generalista por diseño.&lt;/p>
&lt;p>Dos equipos usan el mismo agente. Uno entrega código limpio y testado. El otro entrega basura que parece buena. Mismo modelo. Distinta enseñanza.&lt;/p>
&lt;blockquote>
&lt;p>El modelo es el motor. Los skills son el mapa. Sin mapa, con un motor potente te pierdes antes.&lt;/p>
&lt;/blockquote>
&lt;h2 id="inteligencia-no-es-experiencia">Inteligencia no es experiencia
&lt;a class="heading-anchor" href="#inteligencia-no-es-experiencia" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>¿Quién lleva tus impuestos? ¿Un genio con 300 de IQ que nunca leyó una ley fiscal, o un asesor con 20 años presentando declaraciones?&lt;/p>
&lt;p>El asesor sabe qué deducciones aplican, qué declaraciones necesita tu negocio, qué errores te marcan. No es inteligencia. Es experiencia.&lt;/p>
&lt;p>Los agentes de IA tienen el mismo hueco. Un modelo razona sobre código y escribe soluciones. No conoce tus capas hexagonales. No sabe que las entidades de dominio nunca deben importar código de framework. No sabe que cada feature empieza con un test que falla.&lt;/p>
&lt;p>Los skills cierran ese hueco.&lt;/p>
&lt;h2 id="los-skills-cargan-contexto-bajo-demanda">Los skills cargan contexto bajo demanda
&lt;a class="heading-anchor" href="#los-skills-cargan-contexto-bajo-demanda" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Un skill es un fichero markdown en &lt;code>.claude/skills/&lt;/code>. Un procedimiento, un patrón, un trozo de conocimiento del dominio. Markdown con frontmatter.&lt;/p>
&lt;p>La clave está en cómo se cargan. El agente lee solo nombres y descripciones al arrancar. Carga el skill entero cuando la tarea encaja. Sigue los enlaces a las referencias solo cuando necesita profundizar.&lt;/p>
&lt;p>Esa carga bajo demanda es lo que hace que los skills escalen. Veinte skills casi no cuestan hasta que uno encaja con la tarea. Los agentes especializados, en cambio, cargan sus instrucciones enteras cada vez que arrancan. Más agentes, más coste fijo.&lt;/p>
&lt;details class="deep-dive">
&lt;summary class="deep-dive__header">
&lt;span class="deep-dive__icon">&lt;/span>
&lt;span class="deep-dive__title">Deep Dive: Un ejemplo real de skill&lt;/span>
&lt;/summary>
&lt;div class="deep-dive__content">
&lt;pre class="giallo" style="color-scheme: light dark; color: light-dark(#24292E, #E1E4E8); background-color: light-dark(#FFFFFF, #24292E);">&lt;code data-lang="plain">&lt;span class="giallo-l">&lt;span>.claude/skills/&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span> code-review/&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span> SKILL.md # instrucciones principales&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span> reference/&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span> solid-checklist.md # ejemplos SOLID detallados&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span> test-patterns.md # guías de calidad de tests&lt;/span>&lt;/span>&lt;/code>&lt;/pre>
&lt;p>El &lt;code>SKILL.md&lt;/code>:&lt;/p>
&lt;pre class="giallo" style="color-scheme: light dark; color: light-dark(#24292E, #E1E4E8); background-color: light-dark(#FFFFFF, #24292E);">&lt;code data-lang="markdown">&lt;span class="giallo-l">&lt;span>---&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#22863A, #85E89D);">d&lt;/span>&lt;span style="color: light-dark(#22863A, #85E89D);">escription&lt;/span>&lt;span>:&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">Revisar cambios de código por violaciones de SOLID, calidad de tests y alineación de arquitectura&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">&amp;quot;&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#22863A, #85E89D);">a&lt;/span>&lt;span style="color: light-dark(#22863A, #85E89D);">llowed-tools&lt;/span>&lt;span>:&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> R&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">ead, Grep, Glob&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#22863A, #85E89D);">a&lt;/span>&lt;span style="color: light-dark(#22863A, #85E89D);">rgument-hint&lt;/span>&lt;span>:&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">[fichero o PR]&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">&amp;quot;&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span>---&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#005CC5, #79B8FF);font-weight: bold;">#&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);font-weight: bold;"> Code Review&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;/span>
&lt;span class="giallo-l">&lt;span>Revisa cambios de código contra las convenciones del proyecto.&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#005CC5, #79B8FF);font-weight: bold;">##&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);font-weight: bold;"> Pasos&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#E36209, #FFAB70);">1.&lt;/span>&lt;span> Leer el diff o los ficheros indicados&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#E36209, #FFAB70);">2.&lt;/span>&lt;span> Revisar arquitectura: la capa de dominio no importa framework, la infraestructura se mantiene delgada&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#E36209, #FFAB70);">3.&lt;/span>&lt;span> Revisar principios SOLID (ver reference/solid-checklist.md para patrones)&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#E36209, #FFAB70);">4.&lt;/span>&lt;span> Revisar calidad de tests: los tests verifican comportamiento, no detalles de implementación&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#E36209, #FFAB70);">5.&lt;/span>&lt;span> Señalar problemas con el principio concreto violado y una propuesta de fix&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#005CC5, #79B8FF);font-weight: bold;">##&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);font-weight: bold;"> Output&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;/span>
&lt;span class="giallo-l">&lt;span>Para cada issue encontrado:&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#E36209, #FFAB70);">-&lt;/span>&lt;span> Fichero y línea&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#E36209, #FFAB70);">-&lt;/span>&lt;span> Qué está mal (qué principio o convención)&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#E36209, #FFAB70);">-&lt;/span>&lt;span> Cómo sería el fix&lt;/span>&lt;/span>&lt;/code>&lt;/pre>
&lt;p>El agente ve la descripción en la lista de skills. Pides un review, carga &lt;code>SKILL.md&lt;/code>. Necesita un patrón SOLID, lee la referencia. Dos niveles, bajo demanda.&lt;/p>
&lt;/div>
&lt;/details>
&lt;p>&lt;img src="/images/blog/2026-05-19/middle.webp" alt="blog-middle" />&lt;/p>
&lt;h2 id="skills-vs-agentes-especializados">Skills vs agentes especializados
&lt;a class="heading-anchor" href="#skills-vs-agentes-especializados" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Ya cubrí los &lt;a href="/es/blog/inside-the-claude-folder/#agents-specialized-roles">agentes especializados&lt;/a>: workers aislados con su propio prompt y conjunto de herramientas. Buenos para trabajo en paralelo y fronteras de contexto limpias.&lt;/p>
&lt;p>Los agentes especializados son toscos. Un agente, un rol, un prompt fijo. Si quieres tres tipos de calidad de review, o escribes tres agentes o metes todo en uno.&lt;/p>
&lt;p>Los skills son finos. Un agente, muchos skills. El skill correcto se carga para la tarea. El contexto se mantiene pequeño. La calidad se mantiene alta.&lt;/p>
&lt;p>Regla práctica:&lt;/p>
&lt;ul>
&lt;li>Usa un &lt;strong>skill&lt;/strong> cuando necesitas un procedimiento o patrón. De &lt;code>phel-lang&lt;/code>: &lt;code>/gh-issue&lt;/code> (de issue a PR), &lt;code>/commit&lt;/code> (commit convencional), &lt;code>/refactor-check&lt;/code> (review SOLID).&lt;/li>
&lt;li>Usa un &lt;strong>agente&lt;/strong> cuando necesitas aislamiento. De &lt;code>phel-lang&lt;/code>: &lt;code>tdd-coach&lt;/code> (pairing de TDD), &lt;code>clean-code-reviewer&lt;/code> (review de PR), &lt;code>domain-architect&lt;/code> (exploración de arquitectura).&lt;/li>
&lt;/ul>
&lt;p>La mayoría de necesidades son skills, no agentes.&lt;/p>
&lt;blockquote>
&lt;p>Los agentes te dan velocidad. Los skills te dan calidad. Si tienes que elegir uno primero, elige skills.&lt;/p>
&lt;/blockquote>
&lt;h2 id="los-skills-son-tu-ventaja">Los skills son tu ventaja
&lt;a class="heading-anchor" href="#los-skills-son-tu-ventaja" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Los modelos mejoran cada mes. El mejor de este año es la base del siguiente. Las familias grandes convergen. Aparece una herramienta mejor, cambias.&lt;/p>
&lt;p>Tus skills no cambian con la herramienta. Codifican tu dominio, tus convenciones, tu arquitectura. Viven en tu repo. Viajan con tu código. Apuntas un modelo nuevo a la librería y eres productivo desde el día uno.&lt;/p>
&lt;blockquote>
&lt;p>El agente es reemplazable. Tus skills no.&lt;/p>
&lt;/blockquote>
&lt;h2 id="empieza-con-el-primer-prompt-repetido">Empieza con el primer prompt repetido
&lt;a class="heading-anchor" href="#empieza-con-el-primer-prompt-repetido" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>No necesitas 20 skills el día uno.&lt;/p>
&lt;p>Cero. Luego uno.&lt;/p>
&lt;p>La señal es la repetición. La segunda vez que tecleas el mismo contexto, ahí tienes un skill esperando. Sácalo a un fichero markdown. La próxima sesión, el agente ya lo sabe.&lt;/p>
&lt;p>Ejemplo concreto. En &lt;a rel="external" href="https://github.com/phel-lang/phel-lang">&lt;code>phel-lang&lt;/code>&lt;/a>, cada sesión pegaba el mismo brief: lee la issue #N, crea la rama según las etiquetas, TDD, abre el PR. A la tercera lo saqué a un skill &lt;code>/gh-issue&lt;/code>. Ahora tecleo &lt;code>/gh-issue 142&lt;/code> y el agente coge la issue, crea &lt;code>fix/...&lt;/code> o &lt;code>feat/...&lt;/code> según las etiquetas, escribe primero el test que falla, implementa, abre el PR. Un fichero markdown. La sesión ya no empieza desde cero.&lt;/p>
&lt;p>No lo escribas desde cero. Pídele al agente: &lt;em>“Lee este proyecto y escribe un skill mínimo de code review basado en lo que veas.”&lt;/em> Escanea, recoge convenciones, redacta v1. Tú lo ajustas. Añades lo que le faltó. Cortas lo que no aplica. Afinas la descripción.&lt;/p>
&lt;p>El segundo skill suele venir de un error. El agente rompe una convención. Escribe un skill que enseñe el camino correcto. No volverá a pasar.&lt;/p>
&lt;p>Los skills se acumulan. Cada uno sube el listón. Un fichero markdown, quizá 50 líneas. Beneficio para siempre.&lt;/p>
&lt;p>Quien no escribe skills se pasa la vida re-explicando lo que “realmente quiere”. Cada sesión desde cero. No es problema de herramienta. Es problema de gestión del conocimiento.&lt;/p>
&lt;p>El agente sale el año que viene. El skill se queda para siempre.&lt;/p>
&lt;blockquote>
&lt;p>Escribe el skill una vez. Cada sesión a partir de ahí empieza donde acabó la anterior.&lt;/p>
&lt;/blockquote>
&lt;p>&lt;img src="/images/blog/2026-05-19/footer.webp" alt="blog-footer" />&lt;/p>
&lt;hr />
&lt;div style="position:relative;aspect-ratio:16/9;width:100%;">
&lt;iframe
src="https://www.youtube-nocookie.com/embed/CEvIs9y1uog"
title="YouTube video"
width="560"
height="315"
loading="lazy"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
referrerpolicy="strict-origin-when-cross-origin"
style="position:absolute;inset:0;width:100%;height:100%;border:0;"
allowfullscreen>
&lt;/iframe>
&lt;/div></content></entry><entry xml:lang="es"><title>Los Niveles de Adopción de la IA</title><subtitle>De prompts copiados a equipos de agentes</subtitle><category term="ai" scheme="https://chemaclass.com/tags/ai/" label="Ai"/><category term="software" scheme="https://chemaclass.com/tags/software/" label="Software"/><category term="leadership" scheme="https://chemaclass.com/tags/leadership/" label="Leadership"/><category term="craftsmanship" scheme="https://chemaclass.com/tags/craftsmanship/" label="Craftsmanship"/><category term="productivity" scheme="https://chemaclass.com/tags/productivity/" label="Productivity"/><category term="developer-tools" scheme="https://chemaclass.com/tags/developer-tools/" label="Developer Tools"/><published>2026-05-01T00:00:00+00:00</published><updated>2026-05-01T00:00:00+00:00</updated><author><name>
Chemaclass</name></author><link rel="alternate" type="text/html" href="https://chemaclass.com/es/blog/the-levels-of-ai-adoption/"/><id>https://chemaclass.com/es/blog/the-levels-of-ai-adoption/</id><summary type="html">Una escalera de seis niveles para la adopción de la IA, de prompts copiados a equipos de agentes y flujos nativos de IA. Dónde se atascan las empresas y cómo subir.</summary><content type="html">&lt;p>La mayoría de empresas ya usa IA, pero pocas saben en qué punto están de la escalera de adopción. En un extremo, copias código a ChatGPT. En el otro, los agentes abren PRs mientras duermes. Más allá, la IA llega a gente que nunca tocó una terminal. Este post mapea el camino.&lt;/p>
&lt;span id="continue-reading">&lt;/span>&lt;h2 id="de-donde-venimos">De dónde venimos
&lt;a class="heading-anchor" href="#de-donde-venimos" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Usar IA para programar era tener una segunda pestaña. Escribes una función, te atascas, pegas el error en el chat, pegas la respuesta de vuelta y rezas para que funcione. Lento, torpe, desconectado de tu código.&lt;/p>
&lt;p>&lt;a rel="external" href="https://github.com/features/copilot">GitHub Copilot&lt;/a>, sobre el Codex inicial de OpenAI, metió sugerencias dentro del editor, y a menudo se equivocaba con mucha seguridad. Estaba entrenado con código público, y el código público medio no es gran cosa. Tampoco sabía nada de &lt;em>tu&lt;/em> dominio, &lt;em>tus&lt;/em> convenciones ni &lt;em>tu&lt;/em> arquitectura. Era autocompletado que a veces acertaba.&lt;/p>
&lt;blockquote>
&lt;p>La primera generación de herramientas de IA para programar te daba un loro entrenado con todo internet. Fluido, seguro, y diciendo cosas que no tenían sentido en tu código.&lt;/p>
&lt;/blockquote>
&lt;p>Esto era &lt;em>vibe-coding&lt;/em> en su primera forma: tú ponías el &lt;em>vibe&lt;/em> pegando contexto y la IA rellenaba código que parecía correcto. Compilaba lo suficiente para parecer útil, y se rompía lo suficiente para parecer peligroso.&lt;/p>
&lt;h2 id="la-generacion-de-los-ides">La generación de los IDEs
&lt;a class="heading-anchor" href="#la-generacion-de-los-ides" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>El siguiente paso era obvio: si la IA necesita contexto, dale el editor entero.&lt;/p>
&lt;p>&lt;a rel="external" href="https://cursor.com">Cursor&lt;/a>, &lt;a rel="external" href="https://windsurf.com">Windsurf&lt;/a> y otros IDEs parecidos metieron el modelo dentro de tu flujo de programación. El asistente podía leer archivos, seguir imports y ver más de una función a la vez. El &lt;em>vibe-coding&lt;/em> pasó a ser una conversación con tu proyecto, y la productividad subió. Por un momento pareció el final del juego.&lt;/p>
&lt;p>No lo era. Editar archivos es solo una parte del trabajo. El resto es correr tests, leer logs, abrir ramas, revisar diffs y entender qué hace ya el código. Los asistentes que solo vivían en el editor te ayudaban a escribir más rápido, pero no sabían llevar una tarea de &lt;em>“arregla este bug”&lt;/em> a &lt;em>“PR listo para revisar.”&lt;/em>&lt;/p>
&lt;h2 id="el-salto-agentico">El salto agéntico
&lt;a class="heading-anchor" href="#el-salto-agentico" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>OpenAI lanzó &lt;a rel="external" href="https://openai.com/index/introducing-codex/">Codex&lt;/a> como agente en la nube: le das una tarea, trabaja en una rama y tú vuelves a un PR. Anthropic sacó &lt;a rel="external" href="https://claude.com/product/claude-code">Claude Code&lt;/a>, un agente de CLI en tu terminal, sobre tu repo, con tus herramientas.&lt;/p>
&lt;p>Este fue el gran salto, y no porque los modelos fueran más listos. Lo que cambió fue la unidad de trabajo. Dejaste de promptear línea a línea y empezaste a delegar tareas: lee el ticket, escribe el cambio, corre los tests, explica lo que hiciste. Un agente no necesita que lo lleves de la mano. Necesita un objetivo y el contexto adecuado.&lt;/p>
&lt;blockquote>
&lt;p>El salto de asistente a agente no es una mejora de velocidad. Es un cambio en la descripción del puesto. Pasas de escribir código a dirigir trabajo.&lt;/p>
&lt;/blockquote>
&lt;p>Claude Code casi no necesita setup. Sin &lt;em>lock-in&lt;/em> de editor. Apúntalo a tu repo, suelta una carpeta &lt;code>.claude&lt;/code> con reglas y convenciones, y se adapta. Lo conté en &lt;a rel="external" href="https://chemaclass.com/blog/inside-the-claude-folder/">Dentro de la Carpeta .claude&lt;/a>.&lt;/p>
&lt;p>El modelo que eliges importa más que antes. Los modelos frontera de hoy están muy por delante de los de hace un año. La distancia entre &lt;em>“puede esbozar una función”&lt;/em> y &lt;em>“puede refactorizar un módulo con criterio”&lt;/em> se cerró más rápido de lo esperado, y sigue cerrándose mientras Claude, Codex y Gemini se empujan mutuamente cada mes. Los precios también se están acercando, lo cual es una forma educada de decir que todos copian al primero que acierta con la versión sostenible.&lt;/p>
&lt;h2 id="agentes-con-casa-propia">Agentes con casa propia
&lt;a class="heading-anchor" href="#agentes-con-casa-propia" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>El siguiente salto no fueron modelos más listos, fueron agentes con su propia máquina.&lt;/p>
&lt;p>&lt;a rel="external" href="https://openclaw.ai">OpenClaw&lt;/a> es el ejemplo más claro. Es un gateway open source que corres en tu propio hardware (Mac Mini, portátil viejo, VPS), un agente siempre encendido conectado a tus apps de mensajería, archivos y calendario. Tú pones el cerebro: Opus, GPT o un modelo local vía &lt;a rel="external" href="https://ollama.com">Ollama&lt;/a>. Cuando un proveedor aprieta límites o sube precios, cambias. El setup es tuyo.&lt;/p>
&lt;p>Un agente de programación vive dentro de un repo durante una tarea. Un agente estilo OpenClaw vive en &lt;em>tu vida&lt;/em>, a lo largo de días y herramientas. &lt;a rel="external" href="https://sauronbot.github.io/about/">Sauron&lt;/a> es el mío. Revisa mis PRs, abre issues, escribe código, saca contribuciones a open source y me lleva la contraria cuando estoy a punto de obsesionarme con algo. Cualquier cosa que yo pueda hacer en un ordenador, él también la hace, solo que más rápido. Deja de ser una herramienta que abres y pasa a ser un sitio donde trabajas.&lt;/p>
&lt;blockquote>
&lt;p>Un agente de programación es un compañero al que invitas a una tarea. Un agente &lt;em>gateway&lt;/em> es un compañero que vive en una máquina y aparece cada día.&lt;/p>
&lt;/blockquote>
&lt;p>Los proveedores cambian planes y límites más rápido de lo que nadie puede seguir, así que la gente monta setups que no dependen de un solo proveedor. El logo del modelo importa menos cada trimestre, y la arquitectura alrededor importa más.&lt;/p>
&lt;h2 id="ia-mas-alla-de-los-desarrolladores">IA más allá de los desarrolladores
&lt;a class="heading-anchor" href="#ia-mas-alla-de-los-desarrolladores" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>La IA para programar fue la historia más ruidosa porque los desarrolladores hablamos alto. La historia más grande es que las herramientas agénticas están llegando a gente que nunca escribió una línea de código.&lt;/p>
&lt;p>&lt;a rel="external" href="https://openai.com/index/introducing-chatgpt-agent/">El modo agente de ChatGPT&lt;/a> y &lt;a rel="external" href="https://claude.com/product/cowork">Cowork de Claude&lt;/a> son los ejemplos obvios: una IA que lee tus documentos, rellena tus hojas de cálculo, redacta tus slides y corre código por ti en segundo plano. &lt;a rel="external" href="https://www.anthropic.com/news/claude-design-anthropic-labs">Claude Design&lt;/a> salió el 17 de abril y &lt;a rel="external" href="https://sherwood.news/tech/anthropic-launches-claude-design-sending-shares-of-figma-down/">tumbó la acción de Figma más de un 7% el día del lanzamiento&lt;/a>. El pitch es sencillo: describe lo que quieres, consigue un prototipo que funciona y pásaselo a Claude Code para llevarlo a producción. Un flujo que antes necesitaba un diseñador, un PM, un ingeniero de frontend y tres rondas de revisión queda comprimido en una conversación.&lt;/p>
&lt;p>Lovable, v0, Canva y la propia Figma están bajo presión para repensar su posicionamiento. Si Claude Design “mata” a alguno es la pregunta equivocada. La correcta es qué pasa cuando hacer un prototipo usable baja de &lt;em>“contrata un diseñador”&lt;/em> a &lt;em>“descríbelo en voz alta.”&lt;/em>&lt;/p>
&lt;p>Las empresas que lo sienten primero no son las herramientas de diseño. Son los negocios pequeños que no podían pagar diseño, los &lt;em>founders&lt;/em> montando un &lt;em>pitch deck&lt;/em> a las tantas de la noche, los PMs probando una idea antes de convocar una reunión. Habrá una minoría de casos donde alguien sí hubiera pagado a un diseñador y ahora no lo hace, y ese coste es real. Pero en la mayoría, la IA no reemplazó a nadie: rellenó un hueco donde nunca iba a haber uno.&lt;/p>
&lt;p>&lt;img src="/images/blog/2026-05-01/middle.webp" alt="Pequeña biblioteca con estanterías de madera y pilas de libros" />&lt;/p>
&lt;h2 id="los-niveles-de-adopcion-de-la-ia">Los niveles de adopción de la IA
&lt;a class="heading-anchor" href="#los-niveles-de-adopcion-de-la-ia" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Cada empresa con la que hablo está en algún punto de esta escalera. Los niveles no van de cuánto pagas en licencias, sino de cuán metida está la IA en cómo se hace el trabajo, y no solo en ingeniería.&lt;/p>
&lt;h3 id="nivel-0-negacion">Nivel 0: Negación
&lt;a class="heading-anchor" href="#nivel-0-negacion" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>&lt;em>Postura a nivel empresa.&lt;/em> Nada de IA, oficialmente. Algunas personas usan ChatGPT en su portátil personal y no lo mencionan. A la dirección le preocupan las fugas de propiedad intelectual, o no lo ha puesto como prioridad. La conversación se queda en &lt;em>“deberíamos mirarlo algún día.”&lt;/em>&lt;/p>
&lt;p>El riesgo aquí no es la tecnología, es el tiempo. Cada mes en el Nivel 0 es un mes en el que tu competencia aumenta su ventaja.&lt;/p>
&lt;h3 id="nivel-1-productividad-personal">Nivel 1: Productividad personal
&lt;a class="heading-anchor" href="#nivel-1-productividad-personal" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>&lt;em>Adopción individual.&lt;/em> La IA se tolera, quizá hasta se anima. Cada uno la usa a su manera: ChatGPT en una pestaña, Copilot en el IDE, Claude para lo más peliagudo, una herramienta de diseño para los mockups. La producción sube, pero el &lt;em>know-how&lt;/em> se queda dentro de cada cabeza. Dos ingenieros, dos PMs o dos diseñadores del mismo equipo sacan resultados muy distintos porque promptean distinto.&lt;/p>
&lt;p>La mayoría de empresas están aquí a principios de 2026. Es una mejora real frente al Nivel 0, y es donde nace el mito de &lt;em>“la IA te da velocidad”&lt;/em>. Como ya &lt;a rel="external" href="https://chemaclass.com/blog/ai-gives-you-speed-not-quality/">defendí antes&lt;/a>, velocidad sin dirección compartida es caos más rápido.&lt;/p>
&lt;h3 id="nivel-2-practicas-compartidas">Nivel 2: Prácticas compartidas
&lt;a class="heading-anchor" href="#nivel-2-practicas-compartidas" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>El equipo acuerda cómo usar la IA: convenciones compartidas, prompts que la gente reutiliza, reglas en el repo, un criterio común sobre cuándo fiarse del output y cuándo discutirlo. Las &lt;em>code reviews&lt;/em> pillan los errores de IA igual que pillan los humanos, y las &lt;em>design reviews&lt;/em> también. Se exigen tests tanto si escribió el código una persona como si lo escribió un modelo.&lt;/p>
&lt;p>Este es el primer nivel en el que la IA pasa a ser una capacidad de equipo en vez de un hábito personal. Techo más alto, suelo más alto. La gente nueva se pone al día más rápido porque los prompts y las reglas capturan cómo trabaja el equipo.&lt;/p>
&lt;h3 id="nivel-3-herramientas-con-contexto">Nivel 3: Herramientas con contexto
&lt;a class="heading-anchor" href="#nivel-3-herramientas-con-contexto" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>El equipo invierte en contexto: archivos de reglas, convenciones, docs de arquitectura que los agentes pueden leer y &lt;a rel="external" href="https://chemaclass.com/blog/mcp-giving-your-ai-agent-the-right-context/">servidores MCP&lt;/a> que conectan a los agentes con las bases de datos, APIs y herramientas internas que necesitan. La IA deja de ser un asistente genérico y se parece más a un compañero que se ha leído los docs de onboarding.&lt;/p>
&lt;p>A este nivel, la calidad depende menos del modelo y más del contexto que lo rodea. Un modelo más flojo con buen contexto le gana a un modelo frontera sin él. Una buena documentación y una arquitectura limpia rinden el doble: ayudan tanto a humanos como a agentes.&lt;/p>
&lt;h3 id="nivel-4-equipos-de-agentes">Nivel 4: Equipos de agentes
&lt;a class="heading-anchor" href="#nivel-4-equipos-de-agentes" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>En vez de un asistente, tienes un escuadrón: un &lt;em>coach&lt;/em> de TDD, un revisor de &lt;em>clean code&lt;/em>, un arquitecto de dominio, alguien que mantiene la documentación. Fuera de ingeniería, la misma idea aplica con agentes de &lt;em>research&lt;/em>, diseño y &lt;em>ops&lt;/em>. Cubrí el lado de desarrollo en &lt;a rel="external" href="https://chemaclass.com/blog/build-your-own-team-of-agents/">Construye tu Propio Equipo de Agentes&lt;/a>, y el &lt;em>leverage&lt;/em> es real.&lt;/p>
&lt;p>Los humanos dejan de competir con la IA en velocidad y empiezan a dirigirla. Revisas, decides y marcas el listón. Los agentes se encargan de teclear, y cada vez más de pensar. El &lt;em>pair programming&lt;/em> con una persona sigue ganando en los &lt;em>trade-offs&lt;/em> complejos, pero siempre tienes un agente disponible para el resto.&lt;/p>
&lt;p>A nivel empresa, el organigrama, los roles y los procesos siguen siendo los de antes. Lo que cambia es que cada persona produce mucho más, y eso se nota en los resultados del equipo. El Nivel 4 multiplica el &lt;em>output&lt;/em> dentro de la estructura existente. El Nivel 5 cambia la estructura.&lt;/p>
&lt;h3 id="nivel-5-flujos-nativos-de-ia">Nivel 5: Flujos nativos de IA
&lt;a class="heading-anchor" href="#nivel-5-flujos-nativos-de-ia" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>El cambio final es sobre cómo funciona la empresa. Los procesos se diseñan &lt;em>alrededor&lt;/em> de los agentes en vez de encajarlos a la fuerza. Los tickets se redactan para que un agente pueda actuar sobre ellos, y las revisiones asumen que parte del trabajo lo escribió una máquina. Las decisiones de arquitectura tienen en cuenta lo que los agentes hacen bien y lo que no. Incluso cambia la contratación: un IC senior en el Nivel 5 se parece más a un &lt;em>tech lead&lt;/em> orquestando un equipo mixto de personas y agentes que a un contribuidor individual clásico.&lt;/p>
&lt;p>Pocas empresas están del todo aquí en 2026, pero la dirección es lo bastante evidente como para que ignorarla sea, en sí misma, una decisión.&lt;/p>
&lt;blockquote>
&lt;p>No subes de nivel comprando mejores herramientas. Subes cambiando cómo se organiza y se revisa el trabajo.&lt;/p>
&lt;/blockquote>
&lt;h2 id="la-ia-no-te-esta-robando-el-trabajo">La IA no te está robando el trabajo
&lt;a class="heading-anchor" href="#la-ia-no-te-esta-robando-el-trabajo" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Sigo oyendo a gente contar esto como una historia de despidos. Ese encuadre es vago.&lt;/p>
&lt;p>La revolución industrial no acabó con el trabajo. Acabó con tipos concretos de trabajo y creó otros. Los que más perdieron se negaron a reciclarse. Los que más ganaron aprendieron a manejar las máquinas nuevas en lugar de competir con ellas.&lt;/p>
&lt;p>El patrón es el mismo. La IA no te quita el trabajo, está cambiando en qué consiste tu trabajo. Un desarrollador que aprende a dirigir agentes entrega más que uno que se niega. Una diseñadora que hace diez versiones antes de comer con Claude Design diseña más que una que sigue abriendo Figma desde cero. Un PM que envía prototipos prioriza mejor que uno que escribe &lt;em>specs&lt;/em> que nadie lee.&lt;/p>
&lt;blockquote>
&lt;p>La IA no reemplaza al trabajador con habilidades. Reemplaza al trabajador que cree que la habilidad es un activo fijo en vez de un objetivo móvil.&lt;/p>
&lt;/blockquote>
&lt;p>Con la formación, el modelo y el setup adecuados para tu contexto, la IA te da 10x de velocidad sin perder calidad. Lo he visto, y no es marketing. Pero el 10x solo aparece cuando ya sabes qué es “bueno”. Sin esa base, la IA produce encantada 10x más de trabajo mediocre.&lt;/p>
&lt;p>Esa es la versión honesta de la promesa: la IA puede producir basura diez veces más rápido, &lt;em>y&lt;/em> trabajo excelente diez veces más rápido. Cuál te toca depende de ti.&lt;/p>
&lt;h2 id="a-donde-cambia-tu-atencion">A dónde cambia tu atención
&lt;a class="heading-anchor" href="#a-donde-cambia-tu-atencion" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Dejas de pensar primero en los detalles y empiezas a pensar en la dirección: qué estamos construyendo, para quién, con qué forma y con qué &lt;em>trade-offs&lt;/em>. Los agentes hacen luego la mayor parte de la implementación mientras tú proteges la calidad y la coherencia.&lt;/p>
&lt;p>Esto suena a buenas noticias para quien prefiera la arquitectura a teclear, y lo es. Pero hay una trampa: solo puedes trabajar en el nivel alto si conoces el nivel bajo lo bastante bien como para pillar las desviaciones. Cuando el agente produce algo sutilmente mal (un test que pasa por la razón equivocada, un refactor que cambia el comportamiento bajo carga, un diseño que se rompe en móvil), necesitas verlo al instante. Si no puedes, no estás dirigiendo. Estás dando el visto bueno a lo que aparezca.&lt;/p>
&lt;blockquote>
&lt;p>La IA te deja dedicar más tiempo a la dirección, pero solo si ya te ganaste el derecho a ignorar los detalles. Ese derecho se gana dominándolos antes.&lt;/p>
&lt;/blockquote>
&lt;h2 id="por-que-importa-la-escalera">Por qué importa la escalera
&lt;a class="heading-anchor" href="#por-que-importa-la-escalera" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>Veo equipos que se saltan niveles y fracasan. Un equipo salta del Nivel 1 al Nivel 4 porque la dirección leyó un post sobre escuadrones de agentes, y los agentes producen montañas de código malo porque nadie acordó qué significa calidad. Los agentes no son el problema. Lo es la base que falta.&lt;/p>
&lt;p>La escalera es un orden que importa. Prácticas compartidas antes que &lt;em>context engineering&lt;/em>, &lt;em>context engineering&lt;/em> antes que equipos de agentes, y equipos de agentes antes que flujos nativos de IA. Cada nivel se construye sobre el anterior, igual que el &lt;em>clean code&lt;/em> se construye sobre el &lt;em>naming&lt;/em> y el &lt;em>naming&lt;/em> sobre saber qué estás modelando.&lt;/p>
&lt;p>Las empresas que van a ganar los próximos años no son las que tienen el mayor presupuesto en IA. Son las que suben esta escalera con intención, un nivel cada vez, sin saltarse las partes que parecen aburridas.&lt;/p>
&lt;h2 id="por-donde-empezar">Por dónde empezar
&lt;a class="heading-anchor" href="#por-donde-empezar" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>En Nivel 0 o 1, el siguiente paso no es comprar más licencias. Es decidir, como equipo, cómo usar estas herramientas. Escríbelo, commitéalo al repo y revísalo cada pocos meses a medida que las herramientas cambian.&lt;/p>
&lt;p>En Nivel 2 o 3, mira dónde falta contexto. ¿Qué no sabe tu IA de tu &lt;em>codebase&lt;/em>, tu producto o tu marca que una persona recién contratada aprendería la primera semana? Escríbelo. Una tarde de reglas y docs te rinde durante meses.&lt;/p>
&lt;p>Más arriba, la pregunta se invierte. Dejas de preguntarte &lt;em>“¿cómo uso mejor la IA?”&lt;/em> y empiezas a preguntarte &lt;em>“¿cómo tiene que cambiar mi equipo para que la IA amplifique lo que ya hacemos bien?”&lt;/em> Esa es una pregunta de liderazgo, no de &lt;em>tooling&lt;/em>.&lt;/p>
&lt;blockquote>
&lt;p>La IA va rápido, pero el trabajo de adoptarla sigue siendo lento y humano. Las herramientas son la parte fácil. La parte difícil es decidir qué es “bueno”, escribirlo y sostener la línea.&lt;/p>
&lt;/blockquote>
&lt;p>La IA puede ejecutar, pero no sabe a dónde vas. Puede producir, pero no sabe qué vale la pena producir. Esa parte sigue siendo nuestra. La velocidad es un regalo, la dirección es una responsabilidad. Del ingeniero en solitario del Nivel 1 a la organización nativa de IA del Nivel 5, la misma verdad se mantiene: el humano supervisa, entiende y da sentido. La máquina hace el resto.&lt;/p>
&lt;p>Cuando se relaje el &lt;em>hype&lt;/em> (y se relajará), la pregunta no va a ser &lt;em>“¿usaste IA?”&lt;/em>, todo el mundo lo habrá hecho. La pregunta va a ser &lt;em>“¿a qué nivel, y con qué dirección?”&lt;/em>&lt;/p>
&lt;p>&lt;img src="/images/blog/2026-05-01/footer.webp" alt="Sala de lectura con un libro abierto sobre una mesa de madera" />&lt;/p></content></entry><entry xml:lang="es"><title>Dentro de la Carpeta .claude</title><subtitle>Un tutorial sobre rules, skills, agents, hooks y settings</subtitle><category term="ai" scheme="https://chemaclass.com/tags/ai/" label="Ai"/><category term="software" scheme="https://chemaclass.com/tags/software/" label="Software"/><category term="tutorial" scheme="https://chemaclass.com/tags/tutorial/" label="Tutorial"/><category term="craftsmanship" scheme="https://chemaclass.com/tags/craftsmanship/" label="Craftsmanship"/><category term="developer-tools" scheme="https://chemaclass.com/tags/developer-tools/" label="Developer Tools"/><category term="productivity" scheme="https://chemaclass.com/tags/productivity/" label="Productivity"/><published>2026-04-17T00:00:00+00:00</published><updated>2026-04-17T00:00:00+00:00</updated><author><name>
Chemaclass</name></author><link rel="alternate" type="text/html" href="https://chemaclass.com/es/blog/inside-the-claude-folder/"/><id>https://chemaclass.com/es/blog/inside-the-claude-folder/</id><summary type="html">Un recorrido práctico por la carpeta de proyecto de Claude Code. Qué hacen rules, skills, agents, hooks y settings, y cómo encajan entre sí.</summary><content type="html">&lt;p>Cada proyecto en el que trabajo tiene una carpeta &lt;code>.claude/&lt;/code> en la raíz. Commiteada en git, como el resto del código.&lt;/p>
&lt;p>Esa carpeta convierte Claude Code de un asistente genérico en un compañero que conoce tu proyecto. Quien clone el repo hereda el mismo setup.&lt;/p>
&lt;p>El agentic coding es tan bueno como el contexto que le das al agente. La carpeta &lt;code>.claude/&lt;/code> es donde vive ese contexto.&lt;/p>
&lt;span id="continue-reading">&lt;/span>&lt;h2 id="la-carpeta-claude-de-un-vistazo">La carpeta .claude, de un vistazo
&lt;a class="heading-anchor" href="#la-carpeta-claude-de-un-vistazo" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;pre class="giallo" style="color-scheme: light dark; color: light-dark(#24292E, #E1E4E8); background-color: light-dark(#FFFFFF, #24292E);">&lt;code data-lang="plain">&lt;span class="giallo-l">&lt;span>.claude/&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span>├── CLAUDE.md # onboarding del proyecto&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span>├── settings.json # permisos, hooks, env&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span>├── skills/ # procedimientos reutilizables (slash commands)&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span>├── rules/ # convenciones por glob&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span>├── hooks/ # scripts que reaccionan a eventos&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span>└── agents/ # roles especializados&lt;/span>&lt;/span>&lt;/code>&lt;/pre>
&lt;p>Seis capas, una carpeta. Contexto, seguridad, procedimientos, barandillas, automatización, especialistas.&lt;/p>
&lt;h2 id="los-cimientos">Los cimientos
&lt;a class="heading-anchor" href="#los-cimientos" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;h3 id="claude-md-donde-todo-empieza">CLAUDE.md: donde todo empieza
&lt;a class="heading-anchor" href="#claude-md-donde-todo-empieza" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Claude Code lee &lt;code>CLAUDE.md&lt;/code> en cada arranque. El doc de onboarding.&lt;/p>
&lt;p>En &lt;a rel="external" href="https://github.com/phel-lang/phel-lang">Phel&lt;/a>, el mío cubre el pipeline del compilador (Lexer → Parser → Analyzer → Emitter), la estructura de módulos, convenciones y comandos clave.&lt;/p>
&lt;p>Un &lt;code>~/.claude/CLAUDE.md&lt;/code> global aplica a &lt;em>todos&lt;/em> tus proyectos. El archivo de proyecto dice &lt;em>cómo funciona este código&lt;/em>. El global dice &lt;em>cómo trabajo yo&lt;/em>.&lt;/p>
&lt;p>Cada byte viaja en cada prompt. Mantenlo corto. Si pasa de una pantalla, mueve el detalle a &lt;code>rules/&lt;/code> o &lt;code>skills/&lt;/code>.&lt;/p>
&lt;blockquote>
&lt;p>Un buen &lt;code>CLAUDE.md&lt;/code> es un buen doc de onboarding. Cuanto mejor sea, menos te repites.&lt;/p>
&lt;/blockquote>
&lt;h3 id="settings-json-seguridad-antes-que-potencia">settings.json: seguridad antes que potencia
&lt;a class="heading-anchor" href="#settings-json-seguridad-antes-que-potencia" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Antes de darle más poder al agente, bloquea lo que nunca debe hacer.&lt;/p>
&lt;p>&lt;code>.claude/settings.json&lt;/code> contiene tres cosas: &lt;strong>permissions&lt;/strong> (allow/deny), &lt;strong>hooks&lt;/strong> (comandos por evento) y &lt;strong>env&lt;/strong> (variables). Un &lt;code>settings.local.json&lt;/code> gitignoreado mantiene las configuraciones personales aparte.&lt;/p>
&lt;details class="deep-dive">
&lt;summary class="deep-dive__header">
&lt;span class="deep-dive__icon">&lt;/span>
&lt;span class="deep-dive__title">Deep Dive: Ejemplo de permisos en Phel&lt;/span>
&lt;/summary>
&lt;div class="deep-dive__content">
&lt;pre class="giallo" style="color-scheme: light dark; color: light-dark(#24292E, #E1E4E8); background-color: light-dark(#FFFFFF, #24292E);">&lt;code data-lang="json">&lt;span class="giallo-l">&lt;span>{&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#005CC5, #79B8FF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">permissions&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">&amp;quot;&lt;/span>&lt;span>:&lt;/span>&lt;span> {&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#005CC5, #79B8FF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">allow&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">&amp;quot;&lt;/span>&lt;span>:&lt;/span>&lt;span> [&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#032F62, #9ECBFF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">Bash(composer:*)&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">&amp;quot;&lt;/span>&lt;span>,&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#032F62, #9ECBFF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">Bash(./bin/phel:*)&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">&amp;quot;&lt;/span>&lt;span>,&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#032F62, #9ECBFF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">Bash(git:*)&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">&amp;quot;&lt;/span>&lt;span>,&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#032F62, #9ECBFF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">Bash(gh:*)&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">&amp;quot;&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span> ]&lt;/span>&lt;span>,&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#005CC5, #79B8FF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">deny&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">&amp;quot;&lt;/span>&lt;span>:&lt;/span>&lt;span> [&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#032F62, #9ECBFF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">Bash(rm -rf:*)&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">&amp;quot;&lt;/span>&lt;span>,&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#032F62, #9ECBFF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">Bash(sudo:*)&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">&amp;quot;&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span> ]&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span> }&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span>}&lt;/span>&lt;/span>&lt;/code>&lt;/pre>
&lt;/div>
&lt;/details>
&lt;p>Allow desbloquea el flujo. Deny marca la línea que el agente no puede cruzar, aunque se lo pidas con buena cara.&lt;/p>
&lt;blockquote>
&lt;p>Los permisos son el suelo. Todo lo demás se construye sobre una base segura.&lt;/p>
&lt;/blockquote>
&lt;h2 id="procedimientos-y-barandillas">Procedimientos y barandillas
&lt;a class="heading-anchor" href="#procedimientos-y-barandillas" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;h3 id="skills-procedimientos-que-puedes-ejecutar">Skills: procedimientos que puedes ejecutar
&lt;a class="heading-anchor" href="#skills-procedimientos-que-puedes-ejecutar" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Siguiente dolor tras onboarding: la repetición. Los skills lo resuelven.&lt;/p>
&lt;p>Un skill es un archivo markdown en &lt;code>.claude/skills/&lt;/code>, un procedimiento que invocas con una barra:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;code>/gh-issue &amp;lt;número&amp;gt;&lt;/code>&lt;/strong>: de issue a rama, plan TDD, PR.&lt;/li>
&lt;li>&lt;strong>&lt;code>/commit&lt;/code>&lt;/strong>: fix, análisis, tests, commit convencional.&lt;/li>
&lt;li>&lt;strong>&lt;code>/refactor-check&lt;/code>&lt;/strong>: SOLID, naming, olores de arquitectura.&lt;/li>
&lt;li>&lt;strong>&lt;code>/release [version]&lt;/code>&lt;/strong>: changelog, PHAR, tag, release.&lt;/li>
&lt;/ul>
&lt;details class="deep-dive">
&lt;summary class="deep-dive__header">
&lt;span class="deep-dive__icon">&lt;/span>
&lt;span class="deep-dive__title">Deep Dive: Skills vs rules vs prompt directo&lt;/span>
&lt;/summary>
&lt;div class="deep-dive__content">
&lt;ul>
&lt;li>&lt;strong>Prompt directo&lt;/strong>: &lt;em>“arregla el issue #42”&lt;/em>. El agente improvisa. Distinto cada vez.&lt;/li>
&lt;li>&lt;strong>Rule&lt;/strong>: &lt;em>“usa conventional commits”&lt;/em>. Da forma al resultado, no al procedimiento.&lt;/li>
&lt;li>&lt;strong>Skill&lt;/strong>: &lt;em>“&lt;code>/gh-issue 42&lt;/code>”&lt;/em>. El procedimiento &lt;em>es&lt;/em> la instrucción.&lt;/li>
&lt;/ul>
&lt;p>Los skills convierten conocimiento tribal en pasos ejecutables por cualquiera.&lt;/p>
&lt;/div>
&lt;/details>
&lt;blockquote>
&lt;p>Los skills capturan qué hacer. Las rules capturan qué no hacer.&lt;/p>
&lt;/blockquote>
&lt;h3 id="rules-las-barandillas">Rules: las barandillas
&lt;a class="heading-anchor" href="#rules-las-barandillas" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>&lt;code>CLAUDE.md&lt;/code> se lee en cada sesión. Las rules solo cuando aplican. Los archivos en &lt;code>.claude/rules/&lt;/code> apuntan a áreas del código con patrones glob: el agente carga solo lo que corresponde, manteniendo el contexto ligero.&lt;/p>
&lt;details class="deep-dive">
&lt;summary class="deep-dive__header">
&lt;span class="deep-dive__icon">&lt;/span>
&lt;span class="deep-dive__title">Deep Dive: Rules con glob en la práctica&lt;/span>
&lt;/summary>
&lt;div class="deep-dive__content">
&lt;p>Archivos de rules en Phel:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;code>compiler.md&lt;/code>&lt;/strong>: pipeline estricto de 4 fases, sin atajos.&lt;/li>
&lt;li>&lt;strong>&lt;code>php.md&lt;/code>&lt;/strong>: PER 3.0, clases &lt;code>final&lt;/code>, &lt;code>readonly&lt;/code>, patrón Gacela.&lt;/li>
&lt;li>&lt;strong>&lt;code>phel.md&lt;/code>&lt;/strong>: kebab-case, &lt;code>defn-&lt;/code> privadas, &lt;code>:doc&lt;/code>/&lt;code>:example&lt;/code> obligatorios.&lt;/li>
&lt;li>&lt;strong>&lt;code>integration-tests.md&lt;/code>&lt;/strong>: secciones &lt;code>--PHEL--&lt;/code> / &lt;code>--PHP--&lt;/code> en fixtures.&lt;/li>
&lt;/ul>
&lt;p>Las rules del compilador no se activan al editar código Phel. Las rules de Phel no se activan al editar infraestructura PHP.&lt;/p>
&lt;/div>
&lt;/details>
&lt;p>Las rules no son sugerencias. Viajan con el código: un cambio de convención y su rule viajan en el mismo commit. Sin drift, sin wikis desactualizadas.&lt;/p>
&lt;p>&lt;img src="/images/blog/2026-04-17/middle.webp" alt="blog-middle" />&lt;/p>
&lt;h2 id="automatizacion-y-delegacion">Automatización y delegación
&lt;a class="heading-anchor" href="#automatizacion-y-delegacion" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;h3 id="hooks-automatizacion-en-los-bordes">Hooks: automatización en los bordes
&lt;a class="heading-anchor" href="#hooks-automatizacion-en-los-bordes" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Las rules dicen al agente qué hacer. Los hooks se aseguran de que ocurra aunque el agente olvide.&lt;/p>
&lt;p>Comandos shell disparados por eventos de Claude Code (&lt;code>PreToolUse&lt;/code>, &lt;code>PostToolUse&lt;/code>, &lt;code>Stop&lt;/code>), conectados vía &lt;code>settings.json&lt;/code>. En Phel, &lt;code>PreToolUse&lt;/code> bloquea ediciones a archivos críticos (&lt;code>build/release.sh&lt;/code>, &lt;code>.github/*&lt;/code>, &lt;code>composer.lock&lt;/code>). &lt;code>PostToolUse&lt;/code> auto-formatea PHP vía &lt;code>php-cs-fixer&lt;/code>.&lt;/p>
&lt;details class="deep-dive">
&lt;summary class="deep-dive__header">
&lt;span class="deep-dive__icon">&lt;/span>
&lt;span class="deep-dive__title">Deep Dive: Conexión de hooks&lt;/span>
&lt;/summary>
&lt;div class="deep-dive__content">
&lt;pre class="giallo" style="color-scheme: light dark; color: light-dark(#24292E, #E1E4E8); background-color: light-dark(#FFFFFF, #24292E);">&lt;code data-lang="json">&lt;span class="giallo-l">&lt;span>{&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#005CC5, #79B8FF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">hooks&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">&amp;quot;&lt;/span>&lt;span>:&lt;/span>&lt;span> {&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#005CC5, #79B8FF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">PreToolUse&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">&amp;quot;&lt;/span>&lt;span>:&lt;/span>&lt;span> [&lt;/span>&lt;span>{&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#005CC5, #79B8FF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">matcher&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">&amp;quot;&lt;/span>&lt;span>:&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">Edit|Write&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">&amp;quot;&lt;/span>&lt;span>,&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#005CC5, #79B8FF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">hooks&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">&amp;quot;&lt;/span>&lt;span>:&lt;/span>&lt;span> [&lt;/span>&lt;span>{&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">type&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">&amp;quot;&lt;/span>&lt;span>:&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">command&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">&amp;quot;&lt;/span>&lt;span>,&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">command&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">&amp;quot;&lt;/span>&lt;span>:&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">.claude/hooks/protect-files.sh&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">&amp;quot;&lt;/span>&lt;span> }&lt;/span>&lt;span>]&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span> }&lt;/span>&lt;span>]&lt;/span>&lt;span>,&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#005CC5, #79B8FF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">PostToolUse&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">&amp;quot;&lt;/span>&lt;span>:&lt;/span>&lt;span> [&lt;/span>&lt;span>{&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#005CC5, #79B8FF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">matcher&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">&amp;quot;&lt;/span>&lt;span>:&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">Edit|Write&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">&amp;quot;&lt;/span>&lt;span>,&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#005CC5, #79B8FF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">hooks&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">&amp;quot;&lt;/span>&lt;span>:&lt;/span>&lt;span> [&lt;/span>&lt;span>{&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">type&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">&amp;quot;&lt;/span>&lt;span>:&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">command&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">&amp;quot;&lt;/span>&lt;span>,&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">command&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">&amp;quot;&lt;/span>&lt;span>:&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">.claude/hooks/format-php.sh&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">&amp;quot;&lt;/span>&lt;span> }&lt;/span>&lt;span>]&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span> }&lt;/span>&lt;span>]&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span> }&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span>}&lt;/span>&lt;/span>&lt;/code>&lt;/pre>
&lt;/div>
&lt;/details>
&lt;blockquote>
&lt;p>Las rules son lo que el agente debe saber. Los hooks son lo que el sistema impone de todas formas.&lt;/p>
&lt;/blockquote>
&lt;h3 id="agents-roles-especializados">Agents: roles especializados
&lt;a class="heading-anchor" href="#agents-roles-especializados" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Todo lo anterior da forma a un solo agente. Los agents añaden especialistas a los que el agente principal puede delegar, cada uno con sus propias herramientas, permisos y modelo. La pieza más avanzada. La recomiendo de última.&lt;/p>
&lt;p>Algunos de Phel:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Explorer&lt;/strong> (Sonnet, solo lectura): archivos, mapeo de estructura.&lt;/li>
&lt;li>&lt;strong>Clean Code Reviewer&lt;/strong>: SOLID y naming en diffs.&lt;/li>
&lt;li>&lt;strong>TDD Coach&lt;/strong>: imposición red-green-refactor.&lt;/li>
&lt;li>&lt;strong>Domain Architect&lt;/strong>: límites de módulos, pipeline del compilador.&lt;/li>
&lt;li>&lt;strong>Debugger&lt;/strong>: errores del compilador en todas las fases.&lt;/li>
&lt;/ul>
&lt;p>Cada agente corre en su propia ventana de contexto: la sesión principal se mantiene limpia mientras el especialista profundiza. La ganancia no es solo coste, es foco. Un agente con solo read y grep no puede reescribir tu código por error.&lt;/p>
&lt;blockquote>
&lt;p>El modelo correcto para el trabajo correcto. Rápido y barato para explorar. Profundo y cuidadoso para arquitectura.&lt;/p>
&lt;/blockquote>
&lt;h2 id="empieza-pequeno-crece-con-la-friccion">Empieza pequeño, crece con la fricción
&lt;a class="heading-anchor" href="#empieza-pequeno-crece-con-la-friccion" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>No construyas todo esto el primer día.&lt;/p>
&lt;p>El orden, guiado por fricción real:&lt;/p>
&lt;ol>
&lt;li>Empieza con &lt;a href="https://chemaclass.com/es/blog/inside-the-claude-folder/#claude-md-donde-todo-empieza">&lt;code>CLAUDE.md&lt;/code>&lt;/a>.&lt;/li>
&lt;li>Bloquea permisos en &lt;a href="https://chemaclass.com/es/blog/inside-the-claude-folder/#settings-json-seguridad-antes-que-potencia">&lt;code>settings.json&lt;/code>&lt;/a>.&lt;/li>
&lt;li>La primera vez que te repitas, escribe un &lt;a href="https://chemaclass.com/es/blog/inside-the-claude-folder/#skills-procedimientos-que-puedes-ejecutar">skill&lt;/a>.&lt;/li>
&lt;li>La primera vez que el agente rompa una convención, añade una &lt;a href="https://chemaclass.com/es/blog/inside-the-claude-folder/#rules-las-barandillas">rule&lt;/a>.&lt;/li>
&lt;li>La primera vez que algo malo casi se commitee, añade un &lt;a href="https://chemaclass.com/es/blog/inside-the-claude-folder/#hooks-automatizacion-en-los-bordes">hook&lt;/a>.&lt;/li>
&lt;li>La primera vez que un generalista no encaje, define un &lt;a href="https://chemaclass.com/es/blog/inside-the-claude-folder/#agents-roles-especializados">especialista&lt;/a>.&lt;/li>
&lt;/ol>
&lt;p>Cada paso soluciona un problema que realmente tuviste. No uno que imaginaste.&lt;/p>
&lt;blockquote>
&lt;p>El setup crece desde la fricción real, no desde el diseño anticipado.&lt;/p>
&lt;/blockquote>
&lt;p>Commitea la carpeta. Compártela. Cuando alguien se una, su sesión hereda todo.&lt;/p>
&lt;p>Trata &lt;code>.claude/&lt;/code> como infraestructura. Versiónala. Revísala. Hazla evolucionar con el código.&lt;/p>
&lt;p>&lt;img src="/images/blog/2026-04-17/footer.webp" alt="blog-footer" />&lt;/p></content></entry><entry xml:lang="es"><title>MCP: Dándole a tu Agente IA el Contexto Adecuado</title><subtitle>Por qué el contexto es el verdadero superpoder</subtitle><category term="ai" scheme="https://chemaclass.com/tags/ai/" label="Ai"/><category term="software-architecture" scheme="https://chemaclass.com/tags/software-architecture/" label="Software Architecture"/><category term="developer-tools" scheme="https://chemaclass.com/tags/developer-tools/" label="Developer Tools"/><category term="craftsmanship" scheme="https://chemaclass.com/tags/craftsmanship/" label="Craftsmanship"/><published>2026-01-11T00:00:00+00:00</published><updated>2026-01-11T00:00:00+00:00</updated><author><name>
Chemaclass</name></author><link rel="alternate" type="text/html" href="https://chemaclass.com/es/blog/mcp-giving-your-ai-agent-the-right-context/"/><id>https://chemaclass.com/es/blog/mcp-giving-your-ai-agent-the-right-context/</id><summary type="html">MCP conecta agentes de IA con tus herramientas, bases de datos y APIs mediante un protocolo estándar. Dale el contexto que necesita.</summary><content type="html">&lt;p>Los asistentes de código con IA modernos son muy buenos entendiendo contexto. Modelos como Claude Opus con ventanas de contexto amplias (unos 200k tokens) pueden tener porciones sustanciales de tu código en mente, razonar sobre arquitectura y mantener coherencia en conversaciones largas. No el proyecto entero en codebases grandes, pero sí lo suficiente para trabajar bien.&lt;/p>
&lt;p>Pero entender no es lo mismo que acceder.&lt;/p>
&lt;p>La IA puede razonar sobre el esquema de tu base de datos si lo pegas. Puede sugerir cambios a archivos que compartes. Conoce patrones del código que le muestras. La limitación no es la inteligencia, sino el alcance.&lt;/p>
&lt;p>Ahí entra MCP.&lt;/p>
&lt;span id="continue-reading">&lt;/span>&lt;h2 id="lo-que-mcp-habilita">Lo que MCP habilita
&lt;a class="heading-anchor" href="#lo-que-mcp-habilita" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>La IA moderna puede entender tu código cuando lo compartes. Pero entender y actuar son cosas distintas.&lt;/p>
&lt;p>Muchos asistentes integrados en IDEs como VS Code Copilot o Cursor ya acceden a los archivos de tu proyecto mediante su propio indexado. El acceso a archivos no es nuevo. Lo que MCP aporta es estandarización. En lugar de que cada herramienta construya su propia integración, MCP ofrece un protocolo común. Configuras un servidor una vez, y cualquier cliente compatible con MCP puede usarlo. Es portable, configurable, y va más allá de archivos: bases de datos, APIs y herramientas personalizadas.&lt;/p>
&lt;blockquote>
&lt;p>MCP transforma a la IA de interlocutor a participante activo en tu entorno de desarrollo.&lt;/p>
&lt;/blockquote>
&lt;p>Con MCP le das a la IA acceso directo a herramientas y recursos. Puede leer archivos, ejecutar comandos, consultar bases de datos, obtener documentación. La inteligencia siempre estuvo ahí. MCP le da manos.&lt;/p>
&lt;h2 id="que-es-realmente-mcp">Qué es realmente MCP
&lt;a class="heading-anchor" href="#que-es-realmente-mcp" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>MCP es un protocolo, no un producto. Un estándar abierto que define cómo los agentes de IA pueden conectarse a fuentes de datos y herramientas externas. Piensa en ello como un puente entre el modelo de IA y tu entorno de desarrollo.&lt;/p>
&lt;p>La arquitectura es simple: los servidores MCP exponen capacidades y los clientes de IA las consumen. Claude Desktop y Claude Code soportan MCP oficialmente, y cada vez más herramientas adoptan el protocolo.&lt;/p>
&lt;p>Por ejemplo, en Claude Code puedes añadir servidores a un archivo &lt;code>.mcp.json&lt;/code> en la raíz de tu proyecto. Claude Code lee este archivo al abrir el proyecto e inicia los servidores configurados automáticamente:&lt;/p>
&lt;pre class="giallo" style="color-scheme: light dark; color: light-dark(#24292E, #E1E4E8); background-color: light-dark(#FFFFFF, #24292E);">&lt;code data-lang="json">&lt;span class="giallo-l">&lt;span>{&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#005CC5, #79B8FF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">mcpServers&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">&amp;quot;&lt;/span>&lt;span>:&lt;/span>&lt;span> {&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#005CC5, #79B8FF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">filesystem&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">&amp;quot;&lt;/span>&lt;span>:&lt;/span>&lt;span> {&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#005CC5, #79B8FF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">command&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">&amp;quot;&lt;/span>&lt;span>:&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">npx&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">&amp;quot;&lt;/span>&lt;span>,&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#005CC5, #79B8FF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">args&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">&amp;quot;&lt;/span>&lt;span>:&lt;/span>&lt;span> [&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">&amp;quot;&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">-y&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">&amp;quot;&lt;/span>&lt;span>,&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">@modelcontextprotocol/server-filesystem&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">&amp;quot;&lt;/span>&lt;span>,&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">./&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">&amp;quot;&lt;/span>&lt;span>]&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span> }&lt;/span>&lt;span>,&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#005CC5, #79B8FF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">github&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">&amp;quot;&lt;/span>&lt;span>:&lt;/span>&lt;span> {&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#005CC5, #79B8FF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">command&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">&amp;quot;&lt;/span>&lt;span>:&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">npx&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">&amp;quot;&lt;/span>&lt;span>,&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#005CC5, #79B8FF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">args&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">&amp;quot;&lt;/span>&lt;span>:&lt;/span>&lt;span> [&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">&amp;quot;&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">-y&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">&amp;quot;&lt;/span>&lt;span>,&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">@modelcontextprotocol/server-github&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">&amp;quot;&lt;/span>&lt;span>]&lt;/span>&lt;span>,&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#005CC5, #79B8FF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">env&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">&amp;quot;&lt;/span>&lt;span>:&lt;/span>&lt;span> {&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">GITHUB_TOKEN&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">&amp;quot;&lt;/span>&lt;span>:&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">tu-token&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">&amp;quot;&lt;/span>&lt;span> }&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span> }&lt;/span>&lt;span>,&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#005CC5, #79B8FF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">postgres&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">&amp;quot;&lt;/span>&lt;span>:&lt;/span>&lt;span> {&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#005CC5, #79B8FF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">command&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">&amp;quot;&lt;/span>&lt;span>:&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">npx&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">&amp;quot;&lt;/span>&lt;span>,&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#005CC5, #79B8FF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">args&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">&amp;quot;&lt;/span>&lt;span>:&lt;/span>&lt;span> [&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">&amp;quot;&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">-y&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">&amp;quot;&lt;/span>&lt;span>,&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">@modelcontextprotocol/server-postgres&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">&amp;quot;&lt;/span>&lt;span>]&lt;/span>&lt;span>,&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span style="color: light-dark(#005CC5, #79B8FF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">env&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">&amp;quot;&lt;/span>&lt;span>:&lt;/span>&lt;span> {&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">DATABASE_URL&lt;/span>&lt;span style="color: light-dark(#005CC5, #79B8FF);">&amp;quot;&lt;/span>&lt;span>:&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);"> &amp;quot;&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">postgresql://localhost/mydb&lt;/span>&lt;span style="color: light-dark(#032F62, #9ECBFF);">&amp;quot;&lt;/span>&lt;span> }&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span> }&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span> }&lt;/span>&lt;/span>
&lt;span class="giallo-l">&lt;span>}&lt;/span>&lt;/span>&lt;/code>&lt;/pre>
&lt;p>Cada servidor le da a la IA diferentes capacidades:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>filesystem&lt;/strong>: Leer y navegar los archivos de tu proyecto. La IA puede explorar tu código, verificar patrones existentes y entender la estructura de directorios antes de sugerir cambios.&lt;/li>
&lt;li>&lt;strong>github&lt;/strong>: Acceder a issues, pull requests y metadatos del repositorio. Pídele a la IA que resuma los issues abiertos, revise comentarios de PRs o entienda en qué trabaja tu equipo.&lt;/li>
&lt;li>&lt;strong>postgres&lt;/strong>: Consultar tu base de datos directamente. La IA puede inspeccionar tu esquema, ejecutar consultas de lectura y entender tu modelo de datos sin que copies definiciones de tablas.&lt;/li>
&lt;/ul>
&lt;p>Distintas herramientas, mismo protocolo. Configuras una vez, y cualquier cliente compatible con MCP puede usar estos servidores.&lt;/p>
&lt;h2 id="donde-destaca-mcp">Dónde destaca MCP
&lt;a class="heading-anchor" href="#donde-destaca-mcp" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;h3 id="trabajando-con-tu-codigo">Trabajando con tu código
&lt;a class="heading-anchor" href="#trabajando-con-tu-codigo" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>El beneficio más inmediato es el acceso al sistema de archivos. La IA puede navegar tu proyecto, leer archivos fuente, entender tu estructura de directorios. Cuando sugiere código, puede verificar patrones existentes primero.&lt;/p>
&lt;p>La integración con Git va más allá. La IA puede ver tu historial de commits, entender qué cambió recientemente y sugerir modificaciones alineadas con la evolución de tu código.&lt;/p>
&lt;p>El acceso al esquema de base de datos significa que la IA entiende tu modelo de datos. No hace falta explicar relaciones entre tablas o tipos de columnas. Ve la estructura y genera consultas que funcionan de verdad.&lt;/p>
&lt;h3 id="documentacion-y-conocimiento">Documentación y conocimiento
&lt;a class="heading-anchor" href="#documentacion-y-conocimiento" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>Conecta tu documentación interna y la IA conocerá las decisiones de tu equipo. Especificaciones de API, documentos de arquitectura, guías de código. Todo disponible como contexto.&lt;/p>
&lt;p>Aquí es donde MCP empieza a notarse. La IA ya no genera código genérico. Genera código que encaja en tu proyecto.&lt;/p>
&lt;blockquote>
&lt;p>La mejor asistencia de IA viene de entender no solo qué construyes, sino cómo lo construye tu equipo.&lt;/p>
&lt;/blockquote>
&lt;h3 id="integraciones-externas">Integraciones externas
&lt;a class="heading-anchor" href="#integraciones-externas" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;p>La integración con GitHub permite que la IA lea issues, entienda discusiones de PRs y vea el contexto más amplio de en qué trabaja tu equipo. Slack u otras herramientas de comunicación pueden aportar aún más contexto sobre decisiones en curso.&lt;/p>
&lt;p>Las integraciones personalizadas te permiten conectar herramientas internas específicas de tu flujo de trabajo. El protocolo es extensible por diseño.&lt;/p>
&lt;h2 id="usando-mcp-efectivamente">Usando MCP efectivamente
&lt;a class="heading-anchor" href="#usando-mcp-efectivamente" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>MCP amplifica lo que conectes. Si tu documentación está desactualizada, la IA usará información desactualizada. Si tu código es desordenado, la IA aprenderá patrones desordenados.&lt;/p>
&lt;p>Es el efecto espejo que mencioné en &lt;a href="/es/blog/ai-gives-you-speed-not-quality">La IA te da velocidad, no calidad&lt;/a>. La IA refleja el contexto que le das. Buen contexto da resultados útiles. Mal contexto produce basura que suena convincente.&lt;/p>
&lt;blockquote>
&lt;p>Darle a la IA acceso a tu código no reemplaza tu responsabilidad de mantenerlo. Hace que la buena higiene sea más valiosa.&lt;/p>
&lt;/blockquote>
&lt;p>Algunas prácticas que ayudan:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Conecta solo lo que la IA necesita.&lt;/strong> Más contexto no siempre es mejor. Contexto enfocado sí.&lt;/li>
&lt;li>&lt;strong>Mantén tu documentación actualizada.&lt;/strong> Si la IA lee tus docs, esos docs importan más que antes.&lt;/li>
&lt;li>&lt;strong>Revisa tu configuración MCP de vez en cuando.&lt;/strong> A medida que tu proyecto evoluciona, también debería hacerlo tu configuración de contexto.&lt;/li>
&lt;li>&lt;strong>Empieza pequeño.&lt;/strong> Uno o dos servidores. Ve qué funciona. Expande desde ahí.&lt;/li>
&lt;/ul>
&lt;p>La seguridad también importa. Sé intencional sobre lo que expones. Los servidores MCP pueden acceder a información sensible. Trátalos como cualquier otra decisión de control de acceso.&lt;/p>
&lt;h2 id="lo-que-viene">Lo que viene
&lt;a class="heading-anchor" href="#lo-que-viene" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h2>
&lt;p>MCP es la base. Pero el ecosistema construye encima.&lt;/p>
&lt;p>&lt;strong>Flujos de trabajo agénticos.&lt;/strong> Herramientas como Claude Code y Cursor funcionan en “modo agente” donde la IA planifica y ejecuta tareas de múltiples pasos de forma autónoma. Lee archivos, hace cambios, ejecuta tests, corrige errores. Los servidores MCP son las manos. El bucle del agente es el cerebro que decide qué hacer.&lt;/p>
&lt;p>&lt;strong>Skills y comandos personalizados.&lt;/strong> Claude Code introdujo skills: comandos slash personalizados que encadenan herramientas MCP en flujos reutilizables. &lt;code>/deploy&lt;/code>, &lt;code>/test&lt;/code>, &lt;code>/review&lt;/code>. Los defines una vez y se convierten en parte de tu toolkit de desarrollo.&lt;/p>
&lt;p>&lt;strong>Protocolo A2A.&lt;/strong> El protocolo Agent-to-Agent de Google. Mientras MCP conecta IA con herramientas, A2A conecta agentes de IA entre sí. Múltiples agentes especializados colaborando en tareas complejas. Un agente escribe código, otro lo revisa, un tercero ejecuta tests.&lt;/p>
&lt;p>El patrón es claro: la IA está pasando de asistente a colaborador. De responder preguntas a ejecutar flujos de trabajo. MCP le dio a la IA acceso a tu entorno. Lo que viene es IA que sabe usar ese acceso de forma autónoma.&lt;/p>
&lt;blockquote>
&lt;p>La pregunta está cambiando de “¿a qué puede acceder la IA?” a “¿qué debería decidir la IA por su cuenta?”&lt;/p>
&lt;/blockquote>
&lt;p>El juicio humano no desaparece. Se mueve hacia arriba. En lugar de revisar cada línea que escribe la IA, diseñamos el contexto y los límites que moldean lo que produce.&lt;/p>
&lt;p>Ese sigue siendo nuestro trabajo. Y vale la pena hacerlo bien.&lt;/p>
&lt;p>&lt;img src="/images/blog/2026-01-11/footer.webp" alt="mcp conectando la ia con herramientas" />&lt;/p></content></entry></feed>