# Agency Agents: 149.000 estrellas, 273 personalidades y ninguna herramienta

El repositorio `msitarzewski/agency-agents` tiene **148.939 estrellas**. El repositorio del lenguaje Go tiene 136.825. El de Rust, 116.646. Es decir: una colección de ficheros Markdown creada en octubre de 2025 acumula más estrellas que el lenguaje en el que está escrito [este blog](/post/por-que-este-blog-no-tiene-base-de-datos), y le saca treinta mil al lenguaje que se supone que va a reemplazar a C.

Cuando algo así aparece en mi timeline, mi reflejo no es indignarme ni suscribirme. Es clonarlo y medirlo. Así que lo he hecho: `gh repo clone`, un rato de `find`, `awk` y `wc`, y una tarde leyendo ficheros. Este post es lo que he encontrado, con números, y lo que creo que significa.

## Qué es, en una frase

Agency Agents es una **colección de personalidades de agente en Markdown**: un fichero por «especialista», cada uno con su nombre, su descripción, su color, su emoji y un cuerpo largo de instrucciones que empieza siempre igual, con un `You are **X**, a senior...`. La idea es que los copies a `~/.claude/agents/` (o al directorio equivalente de Cursor, Codex, Gemini CLI, Copilot y una docena más de herramientas) y a partir de ahí tengas «una agencia completa» a tu disposición: el arquitecto de backend, el diseñador de UI, el inyector de *whimsy*, el que habla fluido Reddit.

Nació, según cuenta su propio README, de un hilo de Reddit. Es MIT. Tiene 24.017 forks, casi 150 issues abiertas y, desde hace poco, hasta una aplicación nativa para instalarlo con un clic sin tocar la terminal. En diez meses ha pasado de un hilo de foro a un producto con instalador para macOS, Linux y Windows.

## Los números de dentro

Aquí es donde empieza lo interesante, porque el README te vende un organigrama y lo que hay en disco es otra cosa. Estos son los recuentos, hechos sobre el clon:

**273 ficheros de agente** repartidos en 18 divisiones. Ingeniería es la más gorda (59), seguida de «specialized» (58) y marketing (36). Hay divisiones de una sola persona: research tiene exactamente un agente. Healthcare, tres. En total, **72.826 líneas de Markdown**, unas 267 por agente. Es mucho texto. Es, para hacerse una idea, un orden de magnitud más grande que todo el código Go de este blog contando los tests.

Ahora el dato que lo cambia todo. De esos 273 agentes:

- **202 comparten literalmente la cabecera `## 🧠 Your Identity & Memory`.**
- 193 comparten `## 🚨 Critical Rules You Must Follow`.
- 192, `## 🎯 Your Core Mission`.
- 179, `## 💭 Your Communication Style`.
- 168, `## 🎯 Your Success Metrics`.

Ocho secciones idénticas se repiten en el 55-74% del catálogo. No es una crítica gratuita: significa que la inmensa mayoría de estos agentes son **la misma plantilla rellenada con un dominio distinto**. Abres el arquitecto de backend y abres el ingeniero de firmware embebido y el esqueleto es el mismo; cambian los sustantivos. Eso no los invalida —una plantilla buena rellenada con criterio es útil— pero desmonta la promesa de «cada agente es un especialista meticulosamente elaborado». Lo que hay es un molde y 273 coladas.

## El detalle que a mí me duele: las herramientas

Voy con lo que de verdad me parece grave, y para eso hay que recordar [qué es un subagente](/post/subagentes-en-claude-code) y por qué existe.

En Claude Code, un subagente es un fichero Markdown con front matter en `~/.claude/agents/`. Los campos obligatorios son dos: `name` y `description`. Pero los opcionales son los que justifican el invento. `tools` te deja declarar la **lista blanca** de herramientas que ese agente puede tocar: si tu agente de revisión de código solo necesita `Read, Grep, Glob`, se lo pones y ese agente no puede escribir un fichero ni ejecutar un `rm` aunque se le vaya la cabeza. `model` te deja decir con qué modelo corre: un clasificador tonto no necesita el modelo caro. Hay más: `disallowedTools`, `permissionMode`, `maxTurns`, `memory`, `effort`.

Un subagente sirve para tres cosas: **aislar contexto**, **restringir privilegios** y **elegir el modelo adecuado al trabajo**. La personalidad es el envoltorio.

Pues bien: de los 273 agentes de este repo, **17 declaran `tools`**. Diecisiete. Y **ninguno, cero, declara `model`**.

Eso quiere decir que si instalas la agencia entera te quedas con 256 agentes que **heredan todas tus herramientas**. El «Grant Writer», el «Study Abroad Advisor» y el «Hospitality Guest Services» pueden ejecutar Bash en tu máquina exactamente igual que tú. No porque alguien lo haya decidido, sino porque nadie ha rellenado el campo. Es el principio de mínimo privilegio invertido: por defecto, todo el mundo puede todo.

Que conste que no estoy diciendo que el repo sea malicioso. Es MIT, el código de los scripts es shell legible y no hace nada raro. Estoy diciendo algo más aburrido y más frecuente: **el catálogo se ha optimizado para la parte vistosa —la personalidad, el emoji, el `vibe:`— y se ha dejado sin rellenar la parte que hace que un subagente sea algo más que un prompt largo**. Hay un campo que se llama `vibe` con frases como «Speaks fluent Reddit and builds community trust the authentic way», y no hay un campo `tools`. Eso es una declaración de prioridades.

## Y el detalle que directamente rompe

El otro hallazgo es más técnico y más divertido, porque se puede calcular.

La documentación de Claude Code dice que las descripciones de todos tus subagentes personalizados **se cargan en el contexto de la conversación principal** —tienen que estar ahí, es lo que el modelo lee para decidir a quién delegar— y que la suma de todas ellas debe mantenerse **por debajo de unos 15.000 tokens**. Si te pasas, Claude Code te avisa al arrancar.

He sumado las descripciones de los 273 agentes: **60.588 caracteres**. En texto inglés eso son, tirando por lo bajo, unos 15.000 tokens.

O sea: instalar el roster completo te deja **exactamente en el techo documentado**, o un pelo por encima, antes de haber escrito una sola línea de tu problema. Has gastado el equivalente a un fichero de código mediano en describir a un ejército de consultores a los que no vas a llamar nunca. Y ese peaje lo pagas en **cada turno de cada sesión**, para siempre.

El propio README lo intuye sin decirlo del todo. Recomienda instalar «solo los equipos que necesitas» con `--division engineering,security`, y avisa de que OpenCode se atraganta y registra solo unos 119 agentes en silencio. Ese aviso es la confesión: el repo sabe que su tamaño completo no es instalable. Pero la portada sigue vendiendo la agencia entera.

## Entonces, ¿sirve para algo?

Sí, y quiero ser justo, porque es fácil hacer sangre con un repo popular y quedarse tan ancho.

**Como catálogo de referencia es bueno.** Cuando me siento a escribir un subagente propio, el problema no suele ser técnico: es que no sé qué debería contener el prompt de, pongamos, un revisor de accesibilidad. Abrir el fichero correspondiente aquí y ver qué preguntas se hace, qué entregables lista y qué métricas de éxito se pone es un atajo real. Es lo que el propio README llama «Option 3: Use as Reference», y es, en mi opinión, la única opción de las cuatro que ofrece que aguanta el examen.

**Los scripts están mejor cuidados que los agentes.** `install.sh` detecta qué herramientas tienes instaladas, permite filtrar por división o por agente, tiene `--dry-run` y falla si le pides un agente que no existe. Hay un `divisions.json` declarado como fuente de verdad y un script de CI que rompe la build si el JSON y los directorios divergen. Hay hasta un `check-agent-originality.sh`. Alguien con oficio ha pasado por la infraestructura. Es casi irónico: **la fontanería del repo está mejor diseñada que su contenido**.

**Y como fenómeno sociológico es fascinante.** 149.000 estrellas para 273 ficheros de texto dice algo incómodo sobre el momento que vivimos: que la promesa de tener una plantilla de especialistas a golpe de `cp` es enormemente más atractiva que el trabajo de averiguar cuáles necesitas tú. Las estrellas de GitHub llevan años siendo un marcador de intención, no de uso —yo tengo cientos, y de los repos que he marcado habré usado el 5%—, pero aquí la brecha entre intención y uso me parece récord.

## Lo que yo haría

Nada de instalarlo entero. Ni con la app.

Lo que haría, y lo que voy a hacer, es lo siguiente: clonarlo, leer los cuatro o cinco agentes cuyo dominio me interesa de verdad, quedarme con las preguntas y los entregables que me parezcan buenos, y **escribir yo el subagente**, corto, con su `tools` restringido a lo que necesita y su `model` puesto en el más barato que haga el trabajo. Ochenta líneas mías bien pensadas rinden más que 267 heredadas, y sobre todo: sé qué hay dentro.

Porque esa es la trampa de fondo, y no es culpa de este repo en particular. Un subagente no es un empleado. No tiene memoria entre sesiones salvo que se la des, no tiene juicio propio y no se «activa» por tener personalidad. Es **un prompt con un ámbito de herramientas y un presupuesto de contexto**. Tratarlo como una plantilla de recursos humanos lleva justo a esto: a un organigrama de 273 cajas donde el 94% puede ejecutar cualquier cosa en tu máquina y ninguna sabe con qué modelo debería correr.

La agencia completa a golpe de clic suena estupenda. Pero yo he trabajado en empresas con organigramas enormes, y lo que hace que un equipo funcione nunca ha sido el número de cajas. Era saber exactamente quién puede tocar producción.
