CommunityProgramación y desarrollogithub.com

medjbilou/claude-skill-router

Enrutador de habilidades. Úsalo SOLO cuando el mensaje del usuario contenga "/route" (al inicio, al final o enviado solo después de una solicitud); nunca por iniciativa propia. Selecciona las mejores 1 a 5 habilidades de todas las instaladas para la solicitud del usuario, muestra cuáles carga y por qué, las carga, realiza el trabajo y luego sugiere qué habilidades ejecutar a continuación y cuándo. "/route build" crea el catálogo personal de habilidades (ejecutar una vez), "/route refresh" lo resincroniza después de instalar o eliminar habilidades.

¿Qué es claude-skill-router?

Este skill implementa un enrutador inteligente para agentes AI como Claude Code, Cursor o Codex, permitiendo seleccionar y cargar automáticamente las habilidades más adecuadas para cada solicitud del usuario. Es especialmente útil cuando se tienen múltiples skills instalados y se desea optimizar el flujo de trabajo sin cargar habilidades innecesarias. El enrutador funciona analizando el mensaje del usuario que contiene "/route", identifica las categorías relevantes del catálogo personal (~/.claude/route-catalog/), selecciona de 1 a 5 habilidades que mejor cubren la solicitud, las carga en orden (primero planificación, luego construcción, luego verificación) y ejecuta el trabajo. Además, registra la actividad para análisis posterior y sugiere qué habilidades ejecutar a continuación. Soporta todos los entornos que ejecuten habilidades Claude/Skills (Claude Code, Cursor, Codex, etc.) y requiere una configuración inicial única con "/route build" para generar el catálogo. Incluye funciones de actualización ("/route refresh") para mantener el catálogo sincronizado tras cambios en los skills instalados.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/medjbilou/claude-skill-router/tree/HEAD/skills/route

Installed? Explore more Programación y desarrollo skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Route

Argumentos: $ARGUMENTS

<base> a continuación significa el "Directorio base para esta habilidad" que se muestra arriba de este texto. El script es <base>/scripts/inventory.py. El catálogo personal reside en ~/.claude/route-catalog/ (o en $ROUTE_CATALOG_DIR), nunca dentro del plugin.

0. Encontrar la solicitud

El usuario escribe un prompt normal y añade /route. Determina la solicitud a partir de sus propias palabras:

  • /route está en el mismo mensaje que el prompt (antes o después): la solicitud es ese mensaje completo sin la palabra /route.
  • /route se envió solo: la solicitud es el mensaje anterior del usuario (o mensajes, si pertenecen a la misma tarea), leídos junto con la conversación. Nunca trates la palabra suelta "/route" como la solicitud.
  • Los argumentos de arriba contienen texto: trátalo como la solicitud o parte de ella, pero el mensaje del usuario prevalece si difieren.
  • Si ya habías comenzado a trabajar en esa solicitud antes de que llegara /route, revisa lo que está hecho y enruta solo el trabajo restante. No rehagas pasos ya completados.
  • Si la solicitud es build, lee <base>/BUILD.md y síguelo. Si es refresh, salta a Refrescar.

Mantén el prompt del usuario como la tarea. No lo reduzcas a la parte que cubre una sola habilidad: cada parte del prompt debe estar cubierta por una habilidad cargada o por tu propio trabajo.

1. Comprender la solicitud

Escribe una línea para ti mismo: el objetivo, el entregable, la tecnología o los archivos involucrados y la fase (planificar, construir, depurar, revisar, verificar, lanzar, documentación, multimedia, operaciones). Usa la conversación: una solicitud como "arréglalo" o "haz el video" se refiere a lo que se acaba de discutir. No explores el código base todavía.

Salida temprana: si la solicitud es trivial (un renombrado, una corrección de una línea, una pregunta simple), imprime "No se necesita habilidad: " y realiza la tarea. No leas el catálogo.

Si el CLAUDE.md del proyecto requiere un primer paso antes de cualquier trabajo (por ejemplo, "busca en el runbook el texto del error antes de diagnosticar"), realiza ese paso ahora. Su resultado puede cambiar qué habilidades se necesitan.

2. Encontrar candidatos

  1. Ejecuta python3 <base>/scripts/inventory.py --check desde el directorio actual.
    • NO CATALOG: dile al usuario que el enrutador necesita un /route build único, ofrécete a ejecutarlo ahora y mientras tanto maneja la solicitud con las habilidades que puedas ver en tu propia lista de habilidades.
    • De lo contrario, imprime catalog in sync, o habilidades NUEVAS (instaladas, no en el catálogo, con su descripción) y entradas ELIMINADAS (ya no instaladas). Las habilidades NUEVAS son candidatos válidos. Nunca elijas una ELIMINADA.
  2. Si --check reporta que existen anulaciones, lee ese archivo primero. Contiene las reglas de enrutamiento propias del usuario ("embellecer UI -> better-ui, nunca impeccable"). Una anulación que coincida con la solicitud vence al catálogo, sus selecciones predeterminadas y tu propio juicio. Menciona la anulación en la columna Por qué.
  3. En la carpeta del catálogo que --check imprime en su primera línea, lee INDEX.md y, si existe, PROFILE.md (la pila tecnológica y hábitos del usuario).
  4. Elige de 1 a 3 categorías que coincidan con la solicitud y lee solo esos archivos de categoría. Cada línea de habilidad dice: - `nombre` [cargar] USO: ... | NO: ... | SIGUIENTE: ... | NECESITA: ...

3. Elegir el conjunto

  • Elige el conjunto más pequeño que cubra toda la solicitud: normalmente de 1 a 3 habilidades, nunca más de 5.
  • Una habilidad por trabajo. Nunca cargues dos habilidades que hagan el mismo trabajo; sigue las "Selecciones predeterminadas" de la categoría.
  • Obedece el campo NO de cada habilidad. Si NO nombra una habilidad mejor para esta solicitud, toma esa.
  • Para el mismo trabajo, prefiere una habilidad de proyecto ([project], de .claude/skills de este repositorio) o una de las habilidades personalizadas del usuario sobre una habilidad genérica.
  • Si una habilidad enumera NECESITA que faltan aquí, dilo y elige la siguiente mejor habilidad.
  • Si ninguna habilidad añade valor real, di "No se necesita habilidad" y realiza la tarea.
  • Si dos interpretaciones muy diferentes de la solicitud llevan a habilidades distintas, haz una pregunta corta con las opciones antes de cargar nada.

4. Mostrar el plan, luego cargar

Imprime esta tabla como texto visible antes de la primera llamada a Habilidad. Es salida requerida, no narración: imprímela incluso cuando esté activo un estilo conciso o "sin texto antes de llamadas a herramientas".

#HabilidadPor qué estaCargar
1nombre-habilidaduna línea vinculada a la solicitudhabilidad / leer / incorporado / proyecto

Una fila puede ser condicional: escribe "solo si <condición>" en la columna Por qué y cárgala solo cuando se cumpla la condición.

Añade una nota de "Efecto secundario" debajo de la tabla por cada paso que envíe mensajes, despliegue, elimine datos, gaste créditos pagados o escriba en producción, ya sea que lo haga una habilidad o el trabajo mismo. Pregunta antes de ese paso. De lo contrario, continúa sin esperar.

Carga las habilidades en el orden de la tabla (primero planificar, luego construir, luego verificar):

  • [habilidad], [incorporado], [proyecto]: llama a la herramienta Habilidad con el nombre exacto y pasa la parte de la solicitud que esa habilidad debe manejar como args.
  • [leer <ruta>]: la herramienta Habilidad rechaza esta habilidad (solo usuario). Lee el archivo en <ruta> y síguelo como si estuviera cargado.
  • Si una llamada a Habilidad falla, lee el SKILL.md de la habilidad en su lugar (inventory.py sin banderas imprime cada ruta) y dilo.

5. Hacer el trabajo

Sigue las habilidades cargadas juntas. Cuando dos entren en conflicto, la más específica gana para esa parte de la tarea. Los archivos CLAUDE.md del usuario y las instrucciones explícitas vencen a cada habilidad. Si aparece una nueva necesidad a mitad de camino (por ejemplo, la corrección necesita una migración), carga una habilidad más y anúnciala en una línea: "Cargando también x: ".

6. Verificar, registrar, informar y sugerir qué ejecutar a continuación

Verificación final: cuando se hayan cargado dos o más habilidades o la solicitud tuviera varias partes, verifica cada parte antes de la respuesta final. Para cada habilidad cargada y cada parte de la solicitud que ninguna habilidad cubrió, decide hecho / parcial / bloqueado, con evidencia (un archivo:línea, un resultado de prueba, una salida de comando). Ponlo en la respuesta final como una tabla corta:

ParteHabilidadEstadoEvidencia

Si una parte está parcial o bloqueada, di qué falta en lugar de dar la tarea por terminada. Omite la tabla para una solicitud de una sola habilidad y una sola parte.

Registro: ejecuta python3 <base>/scripts/inventory.py --log '<json>' una vez, con un objeto JSON: request (la solicitud en máximo 160 caracteres, sin secretos), loaded (habilidades cargadas), used (habilidades cargadas cuyas instrucciones realmente moldearon el trabajo), unused (cargadas pero no necesitadas), skipped (filas planificadas que no se ejecutaron), next (las habilidades Siguientes que sugieres), no_skill (verdadero cuando no se necesitó habilidad), check ("hecho", "parcial", "bloqueado" o "n/a"). El registro es parte del enrutamiento, no opcional. Si el comando falla, dilo en una línea y continúa. inventory.py --report después muestra qué cargó /route, qué usó el trabajo y cuántas habilidades Siguientes siguió el usuario.

Comienza la respuesta final con una línea que diga qué habilidades se ejecutaron, para que el usuario lo vea incluso si la tabla se desplazó: Habilidades usadas: a, b(añade omitida c: `` cuando una fila planificada no se ejecutó, o Habilidades usadas: ninguna (<motivo>)).

Termina la respuesta final con esta sección:

Siguientes habilidades

  • nombre-habilidad: cuándo (ahora / antes de commit / antes de push / después de deploy / una vez a la semana), y por qué.

Da máximo 3. Tómalos de los campos SIGUIENTE de las habilidades cargadas, las "Selecciones predeterminadas" de las categorías que leíste y los pasos que requiere el CLAUDE.md del proyecto (por ejemplo, una ejecución completa de pruebas antes de push). Conserva solo los que se ajusten a lo que realmente sucedió y no los ejecutes. Esta sección también aplica cuando no se cargó ninguna habilidad.

Refrescar

Ejecutar cuando el usuario instala, elimina o actualiza habilidades o plugins.

  1. Ejecuta python3 <base>/scripts/inventory.py --check. Si imprime NO CATALOG, ejecuta la construcción en su lugar.
  2. Para cada habilidad NUEVA: lee su SKILL.md (frontmatter y primeras ~80 líneas), elige el archivo de categoría cuyo Alcance encaje (inventory.py lista las categorías fijas en su TAXONOMÍA) y añade una línea en el mismo formato que las otras líneas de ese archivo. Usa [leer <ruta absoluta>] cuando su frontmatter tenga disable-model-invocation: true, y [proyecto] cuando resida en .claude/skills de un repositorio. Si el archivo de categoría aún no existe, créalo con el mismo encabezado (# nombre, Alcance:, Selecciones predeterminadas:).
  3. Para cada entrada ELIMINADA: elimina su línea y bórrala de cualquier texto de "Selecciones predeterminadas".
  4. Ejecuta inventory.py --index, luego --check de nuevo hasta que imprima catalog in sync. Informa qué se añadió y qué se eliminó.

Skills relacionados