<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="https://futurewithml.netlify.app/feed_style.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
    <tabi:metadata xmlns:tabi="https://github.com/welpo/tabi">
        <tabi:base_url>https:&#x2F;&#x2F;futurewithml.netlify.app</tabi:base_url>
        <tabi:separator>
            |
        </tabi:separator>
        <tabi:about_feeds>Esta es una fuente web, también conocida como fuente Atom. Suscríbete copiando la URL de la barra de direcciones en tu lector de noticias. Visita About Feeds para aprender más y empezar. Es gratis. </tabi:about_feeds>
        <tabi:visit_the_site>Visita la web</tabi:visit_the_site>
        <tabi:recent_posts>Publicaciones recientes</tabi:recent_posts>
        <tabi:last_updated_on>Actualizado el $DATE</tabi:last_updated_on>
        <tabi:default_theme></tabi:default_theme>
        <tabi:post_listing_date>date</tabi:post_listing_date>
        <tabi:current_section>Productividad</tabi:current_section>
    </tabi:metadata><link rel="extra-stylesheet" href="https://futurewithml.netlify.app/skins/cyber.css?h=eb029a27afbc61465b52" /><title>Future With ML - Productividad</title>
        <subtitle>Patrones de Diseño en Machine Learning, MLOps e Ingeniería de IA por Christian Picon Calderon</subtitle>
    <link href="https://futurewithml.netlify.app/es/tags/productividad/atom.xml" rel="self" type="application/atom+xml"/>
    <link href="https://futurewithml.netlify.app/es/tags/productividad/" rel="alternate" type="text/html"/>
    <generator uri="https://www.getzola.org/">Zola</generator><updated>2026-01-06T10:00:00+00:00</updated><id>https://futurewithml.netlify.app/es/tags/productividad/atom.xml</id><entry xml:lang="es">
        <title>Claude Code Plugin Journey Parte 0: Agent Team Creator</title>
        <published>2026-01-06T10:00:00+00:00</published>
        <updated>2026-01-06T10:00:00+00:00</updated>
        <author>
            <name>Christian Picon Calderon</name>
        </author>
        <link rel="alternate" href="https://futurewithml.netlify.app/es/posts/claude-code-plugin-journey-part0/" type="text/html"/>
        <id>https://futurewithml.netlify.app/es/posts/claude-code-plugin-journey-part0/</id>
        
            <content type="html">&lt;h1 id=&quot;claude-code-plugin-journey-parte-0-agent-team-creator&quot;&gt;Claude Code Plugin Journey Parte 0: Agent Team Creator&lt;&#x2F;h1&gt;
&lt;p&gt;¿Qué pasaría si pudieras apuntar una IA a tu proyecto y hacer que genere especialistas que realmente entienden tu stack? No asistentes genéricos—agentes que conocen tu arquitectura, tus patrones, tus convenciones.&lt;&#x2F;p&gt;
&lt;p&gt;Eso es lo que hace &lt;code&gt;agent-team-creator&lt;&#x2F;code&gt;. Déjame mostrarte el flujo de trabajo.&lt;&#x2F;p&gt;
&lt;span id=&quot;continue-reading&quot;&gt;&lt;&#x2F;span&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;escenario-1-genera-tu-equipo-de-agentes&quot;&gt;Escenario 1: Genera tu Equipo de Agentes&lt;&#x2F;h2&gt;
&lt;p&gt;Comienzas un nuevo proyecto—o te unes a uno existente. El código base es desconocido. Necesitas ayuda, pero los consejos genéricos de IA no son suficientes.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Paso 1: Genera tu equipo de agentes&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;pre class=&quot;z-code&quot;&gt;&lt;code&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;&#x2F;generate-agent-team
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Observa cómo el plugin analiza tu proyecto:&lt;&#x2F;p&gt;
&lt;pre class=&quot;z-code&quot;&gt;&lt;code&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;Analizando código base...
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;├── Lenguajes: Python (75%), TypeScript (20%), SQL (5%)
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;├── Frameworks: FastAPI, React, SQLAlchemy
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;├── Arquitectura: Monorepo con separación backend&#x2F;frontend
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;├── Patrones: Patrón repository, inyección de dependencias
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;Generando agentes especializados...
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;✓ fastapi-expert
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;  Conoce: Tus patrones de endpoints, modelos Pydantic, stack de middleware
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;✓ react-specialist
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;  Conoce: Tu librería de componentes, gestión de estado, patrones de hooks
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;✓ database-architect
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;  Conoce: Tus modelos SQLAlchemy, patrones de migración, convenciones de consultas
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;✓ test-strategist
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;  Conoce: Tus fixtures de pytest, patrones de mocking, utilidades de testing
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;Equipo guardado en .claude&#x2F;agents&#x2F;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;strong&gt;Paso 2: Usa tus agentes inmediatamente&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Ahora tienes especialistas conscientes del proyecto. Así es como usarlos:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Pregunta sobre arquitectura:&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;pre class=&quot;z-code&quot;&gt;&lt;code&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;Usa el agente fastapi-expert para explicar cómo funciona
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;la autenticación en este proyecto
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;strong&gt;Implementa una funcionalidad:&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;pre class=&quot;z-code&quot;&gt;&lt;code&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;Usa el agente react-specialist para ayudarme a añadir un nuevo
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;componente de dashboard siguiendo nuestros patrones existentes
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;strong&gt;Depura un problema:&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;pre class=&quot;z-code&quot;&gt;&lt;code&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;Usa el agente database-architect para ayudarme a entender por qué
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;esta consulta es lenta - revisa src&#x2F;repositories&#x2F;user_repo.py
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;strong&gt;Escribe tests:&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;pre class=&quot;z-code&quot;&gt;&lt;code&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;Usa el agente test-strategist para escribir tests de integración para
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;el nuevo endpoint de pagos siguiendo nuestras convenciones de testing
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;strong&gt;¿La diferencia?&lt;&#x2F;strong&gt; Estos agentes no dan consejos genéricos. Referencian &lt;em&gt;tus&lt;&#x2F;em&gt; archivos, &lt;em&gt;tus&lt;&#x2F;em&gt; patrones, &lt;em&gt;tus&lt;&#x2F;em&gt; convenciones.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;escenario-2-flujo-de-trabajo-avanzado-de-depuracion&quot;&gt;Escenario 2: Flujo de Trabajo Avanzado de Depuración&lt;&#x2F;h2&gt;
&lt;p&gt;Después de generar tu equipo de agentes, puedes crear un &lt;strong&gt;Project Debugger&lt;&#x2F;strong&gt;—un orquestador que coordina a tus especialistas para diagnosticar problemas complejos.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Paso 1: Genera el Project Debugger&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;pre class=&quot;z-code&quot;&gt;&lt;code&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;&#x2F;generate-debugger
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;pre class=&quot;z-code&quot;&gt;&lt;code&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;Descubriendo agentes del proyecto...
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;├── Encontrados: fastapi-expert, react-specialist, database-architect, test-strategist
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;Analizando arquitectura del proyecto...
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;├── Puntos de entrada identificados
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;├── Patrones de manejo de errores mapeados
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;├── Convenciones de logging detectadas
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;Generando project-debugger.md...
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;✓ Creado: .claude&#x2F;agents&#x2F;project-debugger.md
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;  - Orquesta tus 4 agentes especialistas
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;  - Produce informes de depuración estructurados
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;  - Identifica causas raíz con referencias archivo:línea
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;strong&gt;Paso 2: Usa el Debugger para investigar&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Cuando encuentres un bug, invoca el project debugger:&lt;&#x2F;p&gt;
&lt;pre class=&quot;z-code&quot;&gt;&lt;code&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;Usa el agente project-debugger para investigar: Los usuarios están
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;recibiendo errores 500 cuando envían el formulario de checkout
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;El debugger orquesta a tus especialistas:&lt;&#x2F;p&gt;
&lt;pre class=&quot;z-code&quot;&gt;&lt;code&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;Consultando fastapi-expert...
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;├── Trazado flujo de request a través de api&#x2F;routes&#x2F;checkout.py
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;├── Encontrado: PaymentService.process() lanza excepción no manejada
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;Consultando database-architect...
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;├── Verificado manejo de transacciones en repositories&#x2F;order_repo.py
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;├── Encontrado: Falta rollback en fallo de pago
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;Consultando test-strategist...
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;├── Revisada cobertura de tests para flujo de checkout
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;├── Encontrado: No hay test para escenario de fallo de pago
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;Generando informe de depuración...
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;strong&gt;Paso 3: Genera un informe de depuración&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;El debugger produce un informe estructurado guardado en &lt;code&gt;.claude&#x2F;reports&#x2F;debugging&#x2F;&lt;&#x2F;code&gt;:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;markdown&quot; class=&quot;language-markdown z-code&quot;&gt;&lt;code class=&quot;language-markdown&quot; data-lang=&quot;markdown&quot;&gt;&lt;span class=&quot;z-text z-html z-markdown&quot;&gt;&lt;span class=&quot;z-meta z-block-level z-markdown&quot;&gt;&lt;span class=&quot;z-markup z-heading z-1 z-markdown&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-heading z-begin z-markdown&quot;&gt;#&lt;&#x2F;span&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-markup z-heading z-1 z-markdown&quot;&gt;&lt;span class=&quot;z-entity z-name z-section z-markdown&quot;&gt;Informe de Depuración: Errores 500 en Checkout&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-whitespace z-newline z-markdown&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-html z-markdown&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-html z-markdown&quot;&gt;&lt;span class=&quot;z-meta z-block-level z-markdown&quot;&gt;&lt;span class=&quot;z-markup z-heading z-2 z-markdown&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-heading z-begin z-markdown&quot;&gt;##&lt;&#x2F;span&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-markup z-heading z-2 z-markdown&quot;&gt;&lt;span class=&quot;z-entity z-name z-section z-markdown&quot;&gt;Causa Raíz&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-whitespace z-newline z-markdown&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-html z-markdown&quot;&gt;&lt;span class=&quot;z-meta z-paragraph z-markdown&quot;&gt;Falta manejo de excepciones en PaymentService.process()
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-html z-markdown&quot;&gt;&lt;span class=&quot;z-meta z-paragraph z-markdown&quot;&gt;(src&#x2F;services&#x2F;payment.py:45) combinado con falta de
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-html z-markdown&quot;&gt;&lt;span class=&quot;z-meta z-paragraph z-markdown&quot;&gt;rollback de transacción (src&#x2F;repositories&#x2F;order_repo.py:78)
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-html z-markdown&quot;&gt;&lt;span class=&quot;z-meta z-paragraph z-markdown&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-html z-markdown&quot;&gt;&lt;span class=&quot;z-meta z-block-level z-markdown&quot;&gt;&lt;span class=&quot;z-markup z-heading z-2 z-markdown&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-heading z-begin z-markdown&quot;&gt;##&lt;&#x2F;span&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-markup z-heading z-2 z-markdown&quot;&gt;&lt;span class=&quot;z-entity z-name z-section z-markdown&quot;&gt;Evidencia&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-whitespace z-newline z-markdown&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-html z-markdown&quot;&gt;&lt;span class=&quot;z-markup z-list z-unnumbered z-bullet z-markdown&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-list_item z-markdown&quot;&gt;-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-markup z-list z-unnumbered z-markdown&quot;&gt; &lt;span class=&quot;z-meta z-paragraph z-list z-markdown&quot;&gt;Archivo: src&#x2F;services&#x2F;payment.py:45-52
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-html z-markdown&quot;&gt;&lt;span class=&quot;z-markup z-list z-unnumbered z-markdown&quot;&gt;&lt;span class=&quot;z-meta z-paragraph z-list z-markdown&quot;&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-markup z-list z-unnumbered z-bullet z-markdown&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-list_item z-markdown&quot;&gt;-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-markup z-list z-unnumbered z-markdown&quot;&gt;&lt;span class=&quot;z-meta z-paragraph z-list z-markdown&quot;&gt; Archivo: src&#x2F;repositories&#x2F;order_repo.py:78-85
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-html z-markdown&quot;&gt;&lt;span class=&quot;z-markup z-list z-unnumbered z-markdown&quot;&gt;&lt;span class=&quot;z-meta z-paragraph z-list z-markdown&quot;&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-markup z-list z-unnumbered z-bullet z-markdown&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-list_item z-markdown&quot;&gt;-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-markup z-list z-unnumbered z-markdown&quot;&gt;&lt;span class=&quot;z-meta z-paragraph z-list z-markdown&quot;&gt; Test faltante: tests&#x2F;integration&#x2F;test_checkout.py
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-html z-markdown&quot;&gt;&lt;span class=&quot;z-markup z-list z-unnumbered z-markdown&quot;&gt;&lt;span class=&quot;z-meta z-paragraph z-list z-markdown&quot;&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-markup z-list z-unnumbered z-markdown&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-html z-markdown&quot;&gt;&lt;span class=&quot;z-markup z-list z-unnumbered z-markdown&quot;&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-block-level z-markdown&quot;&gt;&lt;span class=&quot;z-markup z-heading z-2 z-markdown&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-heading z-begin z-markdown&quot;&gt;##&lt;&#x2F;span&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-markup z-heading z-2 z-markdown&quot;&gt;&lt;span class=&quot;z-entity z-name z-section z-markdown&quot;&gt;Corrección Recomendada&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-whitespace z-newline z-markdown&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-html z-markdown&quot;&gt;&lt;span class=&quot;z-markup z-list z-numbered z-bullet z-markdown&quot;&gt;1&lt;span class=&quot;z-punctuation z-definition z-list_item z-markdown&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-markup z-list z-numbered z-markdown&quot;&gt; &lt;span class=&quot;z-meta z-paragraph z-list z-markdown&quot;&gt;Añadir try&#x2F;except en payment.py:45
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-html z-markdown&quot;&gt;&lt;span class=&quot;z-markup z-list z-numbered z-markdown&quot;&gt;&lt;span class=&quot;z-meta z-paragraph z-list z-markdown&quot;&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-markup z-list z-numbered z-bullet z-markdown&quot;&gt;2&lt;span class=&quot;z-punctuation z-definition z-list_item z-markdown&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-markup z-list z-numbered z-markdown&quot;&gt;&lt;span class=&quot;z-meta z-paragraph z-list z-markdown&quot;&gt; Implementar rollback en order_repo.py:78
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-html z-markdown&quot;&gt;&lt;span class=&quot;z-markup z-list z-numbered z-markdown&quot;&gt;&lt;span class=&quot;z-meta z-paragraph z-list z-markdown&quot;&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-markup z-list z-numbered z-bullet z-markdown&quot;&gt;3&lt;span class=&quot;z-punctuation z-definition z-list_item z-markdown&quot;&gt;.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-markup z-list z-numbered z-markdown&quot;&gt;&lt;span class=&quot;z-meta z-paragraph z-list z-markdown&quot;&gt; Añadir test de escenario de fallo
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-html z-markdown&quot;&gt;&lt;span class=&quot;z-markup z-list z-numbered z-markdown&quot;&gt;&lt;span class=&quot;z-meta z-paragraph z-list z-markdown&quot;&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-markup z-list z-numbered z-markdown&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-html z-markdown&quot;&gt;&lt;span class=&quot;z-markup z-list z-numbered z-markdown&quot;&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-block-level z-markdown&quot;&gt;&lt;span class=&quot;z-markup z-heading z-2 z-markdown&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-heading z-begin z-markdown&quot;&gt;##&lt;&#x2F;span&gt; &lt;&#x2F;span&gt;&lt;span class=&quot;z-markup z-heading z-2 z-markdown&quot;&gt;&lt;span class=&quot;z-entity z-name z-section z-markdown&quot;&gt;Efectos Secundarios&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-whitespace z-newline z-markdown&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-html z-markdown&quot;&gt;&lt;span class=&quot;z-markup z-list z-unnumbered z-bullet z-markdown&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-list_item z-markdown&quot;&gt;-&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-markup z-list z-unnumbered z-markdown&quot;&gt; &lt;span class=&quot;z-meta z-paragraph z-list z-markdown&quot;&gt;Los pedidos pueden estar en estado inconsistente (necesita migración)
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;strong&gt;Paso 4: Crea un ticket de Jira desde el informe&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Ahora convierte ese informe en una tarea de Jira. El comando encuentra automáticamente el informe de depuración más reciente:&lt;&#x2F;p&gt;
&lt;pre class=&quot;z-code&quot;&gt;&lt;code&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;&#x2F;generate-jira-task
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;pre class=&quot;z-code&quot;&gt;&lt;code&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;Buscando último informe de depuración...
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;├── Encontrado: .claude&#x2F;reports&#x2F;debugging&#x2F;report-2026-01-06-1430.md
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;Cargando informe de depuración...
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;Buscando issues similares...
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;├── Buscando: &amp;quot;checkout payment exception rollback&amp;quot;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;├── Encontrados 2 issues potencialmente relacionados:
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;  PROJ-234: &amp;quot;Payment processing timeout errors&amp;quot;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;           Estado: En Progreso
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;  PROJ-189: &amp;quot;Checkout form validation issues&amp;quot;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;           Estado: Hecho
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;¿Cómo deseas proceder?
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;&amp;gt; Crear nueva tarea de todos modos
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;&amp;gt; Abortar - Actualizaré un issue existente
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Si eliges crear una nueva tarea:&lt;&#x2F;p&gt;
&lt;pre class=&quot;z-code&quot;&gt;&lt;code&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;Creando issue de Jira...
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;✓ Creado: PROJ-456 &amp;quot;Fix checkout 500 errors: missing exception handling&amp;quot;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;  https:&#x2F;&#x2F;yourcompany.atlassian.net&#x2F;browse&#x2F;PROJ-456
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;La verificación de duplicados previene llenar tu backlog con issues relacionados. Si el bug es una variante de un issue existente, puedes actualizar ese ticket en lugar de crear uno nuevo.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;¿No tienes Jira configurado?&lt;&#x2F;strong&gt; El comando degrada gracefully a generar un archivo markdown listo para copiar en &lt;code&gt;.claude&#x2F;reports&#x2F;jira-drafts&#x2F;&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;escenario-3-flujo-de-trabajo-repetible-para-multiples-bugs&quot;&gt;Escenario 3: Flujo de Trabajo Repetible para Múltiples Bugs&lt;&#x2F;h2&gt;
&lt;p&gt;Cada investigación de bug crea su propio informe de depuración, que lleva a su propio ticket de Jira. Así es como el flujo escala a través de múltiples issues:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Lunes: Problema de rendimiento de API&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;pre class=&quot;z-code&quot;&gt;&lt;code&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;Usa el agente project-debugger para investigar: ¿Por qué están
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;subiendo los tiempos de respuesta de la API durante horas pico?
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Informe guardado: &lt;code&gt;.claude&#x2F;reports&#x2F;debugging&#x2F;report-2026-01-06-0900.md&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;pre class=&quot;z-code&quot;&gt;&lt;code&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;&#x2F;generate-jira-task
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Creado: &lt;code&gt;PROJ-457 &quot;Optimize database connection pooling for peak load&quot;&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;&lt;strong&gt;Martes: Bug de renderizado en frontend&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;pre class=&quot;z-code&quot;&gt;&lt;code&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;Usa el agente project-debugger para investigar: El gráfico del
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;dashboard no se actualiza cuando llegan nuevos datos
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Informe guardado: &lt;code&gt;.claude&#x2F;reports&#x2F;debugging&#x2F;report-2026-01-07-1100.md&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;pre class=&quot;z-code&quot;&gt;&lt;code&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;&#x2F;generate-jira-task
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Creado: &lt;code&gt;PROJ-458 &quot;Fix React state synchronization in DashboardChart component&quot;&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;&lt;strong&gt;Miércoles: Caso edge de autenticación&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;pre class=&quot;z-code&quot;&gt;&lt;code&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;Usa el agente project-debugger para investigar: Los usuarios están
&lt;&#x2F;span&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;siendo deslogueados aleatoriamente después de cambios de contraseña
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Informe guardado: &lt;code&gt;.claude&#x2F;reports&#x2F;debugging&#x2F;report-2026-01-08-1400.md&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;pre class=&quot;z-code&quot;&gt;&lt;code&gt;&lt;span class=&quot;z-text z-plain&quot;&gt;&#x2F;generate-jira-task
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Creado: &lt;code&gt;PROJ-459 &quot;Handle session invalidation on password change correctly&quot;&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;Cada investigación es independiente. El debugger crea informes con timestamp, y &lt;code&gt;&#x2F;generate-jira-task&lt;&#x2F;code&gt; siempre toma el más reciente. Tu historial de depuración se acumula en &lt;code&gt;.claude&#x2F;reports&#x2F;debugging&#x2F;&lt;&#x2F;code&gt;, dándote un archivo buscable de investigaciones pasadas.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;el-flujo-de-trabajo-completo&quot;&gt;El Flujo de Trabajo Completo&lt;&#x2F;h2&gt;




&lt;div class=&quot;workflow-container&quot; id=&quot;workflow&quot;&gt;
    &lt;canvas class=&quot;workflow-canvas&quot; aria-label=&quot;Workflow visualization&quot;&gt;&lt;&#x2F;canvas&gt;
&lt;&#x2F;div&gt;

&lt;script&gt;
(function() {
    const containerId = &#x27;workflow&#x27;;

    &#x2F;&#x2F; Decode HTML entities (Tera encodes &#x2F; as &amp;#x2F;)
    function decodeHTML(str) {
        const textarea = document.createElement(&#x27;textarea&#x27;);
        textarea.innerHTML = str;
        return textarea.value;
    }

    const stepsData = [
        
        
        { title: decodeHTML(&#x27;&amp;#x2F;generate-agent-team&#x27;), desc: decodeHTML(&#x27;Crea agentes especialistas&#x27;) },
        
        
        { title: decodeHTML(&#x27;Usa agentes diariamente&#x27;), desc: decodeHTML(&#x27;fastapi-expert react-specialist&#x27;) },
        
        
        { title: decodeHTML(&#x27;&amp;#x2F;generate-debugger&#x27;), desc: decodeHTML(&#x27;Crea project-debugger&#x27;) },
        
        
        { title: decodeHTML(&#x27;Depura issues&#x27;), desc: decodeHTML(&#x27;Guarda en .claude&amp;#x2F;reports&amp;#x2F;&#x27;) },
        
        
        { title: decodeHTML(&#x27;&amp;#x2F;generate-jira-task&#x27;), desc: decodeHTML(&#x27;Crea ticket de Jira&#x27;) }
        
    ];

    function initWorkflow() {
        const container = document.getElementById(containerId);
        if (!container) return;

        const canvas = container.querySelector(&#x27;.workflow-canvas&#x27;);
        const ctx = canvas.getContext(&#x27;2d&#x27;);

        let particles = [];
        let time = 0;

        const colors = {
            primary: &#x27;#00d4ff&#x27;,
            secondary: &#x27;#8b5cf6&#x27;,
            accent: &#x27;#00ff88&#x27;,
            particle: &#x27;#00ff88&#x27;,
            connection: &#x27;rgba(0, 212, 255, 0.4)&#x27;,
            text: &#x27;#e0e0e4&#x27;,
            subtext: &#x27;#8888a0&#x27;
        };

        function resize() {
            const rect = container.getBoundingClientRect();
            canvas.width = rect.width;
            canvas.height = Math.max(550, stepsData.length * 130 + 100);
            container.style.height = canvas.height + &#x27;px&#x27;;
        }
        resize();
        window.addEventListener(&#x27;resize&#x27;, resize);

        function getStepPositions() {
            const centerX = canvas.width &#x2F; 2;
            const startY = 70;
            const stepHeight = 120;

            return stepsData.map((step, i) =&gt; ({
                ...step,
                x: centerX,
                y: startY + i * stepHeight,
                width: Math.min(450, canvas.width * 0.85),
                height: 90,
                color: i % 2 === 0 ? colors.primary : colors.secondary
            }));
        }

        function createParticle(from, to) {
            return {
                fromX: from.x,
                fromY: from.y + from.height &#x2F; 2,
                toX: to.x,
                toY: to.y - to.height &#x2F; 2,
                progress: Math.random(),
                speed: 0.008 + Math.random() * 0.004
            };
        }

        function draw() {
            ctx.clearRect(0, 0, canvas.width, canvas.height);
            const positions = getStepPositions();

            &#x2F;&#x2F; Draw connections
            ctx.strokeStyle = colors.connection;
            ctx.lineWidth = 3;
            for (let i = 0; i &lt; positions.length - 1; i++) {
                const from = positions[i];
                const to = positions[i + 1];

                ctx.beginPath();
                ctx.moveTo(from.x, from.y + from.height &#x2F; 2);
                ctx.lineTo(to.x, to.y - to.height &#x2F; 2);
                ctx.stroke();

                &#x2F;&#x2F; Arrow
                const midY = (from.y + from.height &#x2F; 2 + to.y - to.height &#x2F; 2) &#x2F; 2;
                ctx.fillStyle = colors.connection;
                ctx.beginPath();
                ctx.moveTo(from.x - 6, midY - 4);
                ctx.lineTo(from.x, midY + 6);
                ctx.lineTo(from.x + 6, midY - 4);
                ctx.closePath();
                ctx.fill();
            }

            &#x2F;&#x2F; Draw step boxes
            positions.forEach((pos, i) =&gt; {
                const x = pos.x - pos.width &#x2F; 2;
                const y = pos.y - pos.height &#x2F; 2;

                &#x2F;&#x2F; Glow
                ctx.shadowColor = pos.color;
                ctx.shadowBlur = 20;

                &#x2F;&#x2F; Box with rounded corners
                ctx.fillStyle = pos.color;
                ctx.beginPath();
                const radius = 8;
                ctx.moveTo(x + radius, y);
                ctx.lineTo(x + pos.width - radius, y);
                ctx.quadraticCurveTo(x + pos.width, y, x + pos.width, y + radius);
                ctx.lineTo(x + pos.width, y + pos.height - radius);
                ctx.quadraticCurveTo(x + pos.width, y + pos.height, x + pos.width - radius, y + pos.height);
                ctx.lineTo(x + radius, y + pos.height);
                ctx.quadraticCurveTo(x, y + pos.height, x, y + pos.height - radius);
                ctx.lineTo(x, y + radius);
                ctx.quadraticCurveTo(x, y, x + radius, y);
                ctx.closePath();
                ctx.fill();

                ctx.shadowBlur = 0;

                &#x2F;&#x2F; Border
                ctx.strokeStyle = colors.accent;
                ctx.lineWidth = 2;
                ctx.stroke();

                &#x2F;&#x2F; Step number
                ctx.fillStyle = &#x27;#0a0a0f&#x27;;
                ctx.font = &#x27;bold 18px JetBrains Mono, monospace&#x27;;
                ctx.textAlign = &#x27;left&#x27;;
                ctx.textBaseline = &#x27;middle&#x27;;
                ctx.fillText((i + 1) + &#x27;.&#x27;, x + 16, pos.y);

                &#x2F;&#x2F; Title
                ctx.fillStyle = &#x27;#0a0a0f&#x27;;
                ctx.font = &#x27;bold 16px JetBrains Mono, monospace&#x27;;
                ctx.textAlign = &#x27;center&#x27;;
                ctx.fillText(pos.title, pos.x + 12, pos.y - 10);

                &#x2F;&#x2F; Description (if exists)
                if (pos.desc) {
                    ctx.fillStyle = &#x27;rgba(10, 10, 15, 0.8)&#x27;;
                    ctx.font = &#x27;14px JetBrains Mono, monospace&#x27;;
                    ctx.fillText(pos.desc, pos.x + 12, pos.y + 16);
                }
            });

            &#x2F;&#x2F; Update and draw particles
            particles.forEach(p =&gt; {
                p.progress += p.speed;
                if (p.progress &gt;= 1) {
                    p.progress = 0;
                }

                const ease = p.progress * p.progress * (3 - 2 * p.progress);
                const x = p.fromX + (p.toX - p.fromX) * ease;
                const y = p.fromY + (p.toY - p.fromY) * ease;

                ctx.fillStyle = colors.particle;
                ctx.shadowColor = colors.particle;
                ctx.shadowBlur = 12;
                ctx.beginPath();
                ctx.arc(x, y, 4, 0, Math.PI * 2);
                ctx.fill();
                ctx.shadowBlur = 0;
            });

            time++;
            requestAnimationFrame(draw);
        }

        &#x2F;&#x2F; Initialize particles
        const positions = getStepPositions();
        for (let i = 0; i &lt; positions.length - 1; i++) {
            const p = createParticle(positions[i], positions[i + 1]);
            p.progress = i * 0.3;
            particles.push(p);
        }

        if (!window.matchMedia(&#x27;(prefers-reduced-motion: reduce)&#x27;).matches) {
            draw();
        } else {
            &#x2F;&#x2F; Static version
            const positions = getStepPositions();
            positions.forEach((pos, i) =&gt; {
                const x = pos.x - pos.width &#x2F; 2;
                const y = pos.y - pos.height &#x2F; 2;

                ctx.fillStyle = pos.color;
                ctx.beginPath();
                ctx.roundRect(x, y, pos.width, pos.height, 8);
                ctx.fill();

                ctx.fillStyle = &#x27;#0a0a0f&#x27;;
                ctx.font = &#x27;bold 16px JetBrains Mono&#x27;;
                ctx.textAlign = &#x27;center&#x27;;
                ctx.fillText(pos.title, pos.x, pos.y);
            });
        }
    }

    if (document.readyState === &#x27;loading&#x27;) {
        document.addEventListener(&#x27;DOMContentLoaded&#x27;, initWorkflow);
    } else {
        initWorkflow();
    }
})();
&lt;&#x2F;script&gt;

&lt;style&gt;
.workflow-container {
    background: var(--bg-0);
    border: 1px solid var(--divider-color);
    border-radius: 12px;
    padding: 1rem;
    margin: 1.5rem 0;
    position: relative;
    min-height: 550px;
}

.workflow-canvas {
    width: 100%;
    display: block;
}

@media (max-width: 768px) {
    .workflow-container {
        padding: 0.5rem;
    }
}
&lt;&#x2F;style&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;inicio-rapido&quot;&gt;Inicio Rápido&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;instalacion&quot;&gt;Instalación&lt;&#x2F;h3&gt;
&lt;p&gt;Instala directamente desde el marketplace de GitHub—no requiere clonar:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; class=&quot;language-bash z-code&quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt;&lt;span class=&quot;z-comment z-line z-number-sign z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-comment z-begin z-shell&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-comment z-line z-number-sign z-shell&quot;&gt; Añade el marketplace (configuración única)&lt;&#x2F;span&gt;&lt;span class=&quot;z-comment z-line z-number-sign z-shell&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt;&lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-variable z-function z-shell&quot;&gt;&#x2F;plugin&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt; marketplace add Cpicon&#x2F;claude-code-plugins&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt;&lt;span class=&quot;z-comment z-line z-number-sign z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-comment z-begin z-shell&quot;&gt;#&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-comment z-line z-number-sign z-shell&quot;&gt; Instala el plugin&lt;&#x2F;span&gt;&lt;span class=&quot;z-comment z-line z-number-sign z-shell&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt;&lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-variable z-function z-shell&quot;&gt;&#x2F;plugin&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt; install agent-team-creator&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Eso es todo. El plugin está listo para usar inmediatamente.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;primeros-comandos&quot;&gt;Primeros Comandos&lt;&#x2F;h3&gt;
&lt;ol&gt;
&lt;li&gt;Navega a tu proyecto&lt;&#x2F;li&gt;
&lt;li&gt;Ejecuta &lt;code&gt;&#x2F;generate-agent-team&lt;&#x2F;code&gt; para crear tus agentes especialistas&lt;&#x2F;li&gt;
&lt;li&gt;Comienza a usar tus especialistas: &lt;code&gt;Usa el agente [nombre-agente] para...&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Ejecuta &lt;code&gt;&#x2F;generate-debugger&lt;&#x2F;code&gt; para crear tu project debugger&lt;&#x2F;li&gt;
&lt;li&gt;Usa el debugger para investigar bugs: &lt;code&gt;Usa el agente project-debugger para investigar...&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Ejecuta &lt;code&gt;&#x2F;generate-jira-task&lt;&#x2F;code&gt; para convertir el informe de depuración en un ticket&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;lo-que-obtienes&quot;&gt;Lo Que Obtienes&lt;&#x2F;h2&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Comando&lt;&#x2F;th&gt;&lt;th&gt;Salida&lt;&#x2F;th&gt;&lt;th&gt;Valor&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;code&gt;&#x2F;generate-agent-team&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td&gt;3-6 agentes especialistas&lt;&#x2F;td&gt;&lt;td&gt;Ayuda consciente del proyecto para features, preguntas, depuración&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;code&gt;&#x2F;generate-debugger&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td&gt;Agente orquestador&lt;&#x2F;td&gt;&lt;td&gt;Coordina especialistas para investigaciones complejas&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;code&gt;&#x2F;generate-jira-task&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td&gt;Ticket Jira o markdown&lt;&#x2F;td&gt;&lt;td&gt;Auto-encuentra último informe, crea ticket accionable&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;ahorro-de-tiempo&quot;&gt;Ahorro de Tiempo&lt;&#x2F;h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Tarea&lt;&#x2F;th&gt;&lt;th&gt;Antes&lt;&#x2F;th&gt;&lt;th&gt;Después&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Obtener ayuda consciente del proyecto&lt;&#x2F;td&gt;&lt;td&gt;N&#x2F;A (solo genérico)&lt;&#x2F;td&gt;&lt;td&gt;Inmediato&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Depurar issues complejos&lt;&#x2F;td&gt;&lt;td&gt;Horas de investigación&lt;&#x2F;td&gt;&lt;td&gt;Informes estructurados&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td&gt;Escribir tickets de Jira&lt;&#x2F;td&gt;&lt;td&gt;15-30 min&lt;&#x2F;td&gt;&lt;td&gt;2-5 min&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;pruebalo-tu-mismo&quot;&gt;Pruébalo Tú Mismo&lt;&#x2F;h2&gt;
&lt;p&gt;El plugin es open source y está disponible en GitHub: &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;Cpicon&#x2F;claude-code-plugins&quot;&gt;Cpicon&#x2F;claude-code-plugins&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Instálalo con dos comandos, ejecuta &lt;code&gt;&#x2F;generate-agent-team&lt;&#x2F;code&gt;, y observa qué especialistas emergen para tu proyecto.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;contribuir-y-feedback&quot;&gt;Contribuir y Feedback&lt;&#x2F;h3&gt;
&lt;p&gt;¿Tienes ideas para mejoras? ¿Encontraste un bug? La pestaña &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;Cpicon&#x2F;claude-code-plugins&#x2F;issues&quot;&gt;GitHub Issues&lt;&#x2F;a&gt; es donde puedes:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Solicitar features&lt;&#x2F;strong&gt; — Sugerir nuevas capacidades o mejoras&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Reportar bugs&lt;&#x2F;strong&gt; — Ayudar a mejorar la fiabilidad reportando issues que encuentres&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Discutir mejoras&lt;&#x2F;strong&gt; — Compartir ideas para mantenimiento y desarrollo del plugin&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Tu feedback da forma al roadmap del plugin.&lt;&#x2F;p&gt;
&lt;p&gt;En la &lt;a href=&quot;&#x2F;posts&#x2F;claude-code-plugin-journey-part1&#x2F;&quot;&gt;Parte 1&lt;&#x2F;a&gt;, te mostraré cómo construí este plugin—los bugs que encontré, los patrones que descubrí, y por qué la arquitectura funciona como lo hace.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;&lt;strong&gt;Navegación de la Serie:&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Parte 0&lt;&#x2F;strong&gt; (Estás aquí): Qué hace el plugin y cómo usarlo&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Parte 1&lt;&#x2F;strong&gt;: &lt;a href=&quot;&#x2F;posts&#x2F;claude-code-plugin-journey-part1&#x2F;&quot;&gt;El Patrón de Arquitectura Híbrida&lt;&#x2F;a&gt; — Construyendo el plugin&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Parte 2&lt;&#x2F;strong&gt;: &lt;a href=&quot;&#x2F;posts&#x2F;claude-code-plugin-journey-part2&#x2F;&quot;&gt;La Paradoja de la Herencia&lt;&#x2F;a&gt; — Insights de investigación&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        <summary type="html">Claude Code Plugin Journey Parte 0: Agent Team Creator
¿Qué pasaría si pudieras apuntar una IA a tu proyecto y hacer que genere especialistas que realmente entienden tu stack? No asistentes genéricos—agentes que conocen tu arquitectura, tus patrones, tus convenciones.
Eso es lo que hace agent-team-creator. Déjame mostrarte el flujo de trabajo.
…</summary>
        </entry>
</feed>
