El marketplace de plugins de Anthropic: 123 entradas en el registro, 11 en el README y solo 2 de 17 plugins con comandos

El repositorio de plugins de Anthropic anuncia 11 plugins y 'nada de código ni pasos de compilación'. Clonado el 2026-10-23 contiene 123 entradas de marketplace (101 fijadas a 93 repos de terceros), 17 plugins propios, 181 skills, 26 archivos Python que GitHub puntúa como 74,1% del repo, 174 declaraciones MCP de las cuales 30 tienen la URL vacía, y 5 archivos de comando repartidos en 2 plugins. Su conector de datos apunta a un endpoint que devuelve 404, cuatro repositorios proveedores están fijados a dos commits distintos a la vez, y un script del propio repo informa 'empaquetado con éxito' mientras escribe un ZIP de 22 bytes con cero archivos. 31.595 estrellas, 197 watchers.

El README de anthropics/knowledge-work-plugins empieza con una promesa y sigue con cuatro afirmaciones que se pueden comprobar contra los archivos: «estamos liberando 11 plugins», «cada plugin empaqueta las skills, conectores, comandos de barra y subagentes de una función concreta», «todo componente es un archivo — markdown y JSON, sin código, sin infraestructura, sin pasos de compilación» y «los plugins son solo archivos markdown: haz un fork, cambia lo que quieras y envía un PR».

Las cuatro frases chocan con algo que está dentro del propio repositorio. El registro del marketplace tiene 123 entradas. En disco hay 17 plugins propios, no 11. El repo incluye 26 archivos Python, y la barra de lenguajes del propio GitHub marca Python 74,1%, HTML 25,9% — no aparece ningún porcentaje de markdown, porque GitHub no lo cuenta. Los comandos de barra existen en 5 archivos dentro de 2 de los 17 plugins. Y el workflow de pull requests cierra automáticamente las contribuciones externas con un comentario que explica que este repositorio solo acepta contribuciones de miembros del equipo de Anthropic.

Todo lo que sigue se midió el 23 de octubre de 2026 sobre un git clone --depth 1 de main (último commit del 2026-10-22), más la API REST de GitHub y sondas HTTP en vivo. No se usó ninguna clave de API, no se instaló nada y no se llamó a ningún modelo. Todos los recuentos salen de analizar los archivos del propio repositorio, así que se reproducen con un git clone y un parser de JSON. Lo único que ejecuté fue un script Python que el repositorio incluye: esa prueba tiene su propia sección y su salida está citada tal cual.

El registro no es el repositorio

Lo más engañoso del proyecto es la distancia entre lo que describe el README y lo que realmente es .claude-plugin/marketplace.json. El README documenta una colección de carpetas de plugins. El registro es un catálogo de 123 plugins en 93 repositorios externos de 90 cuentas de GitHub distintas, de los cuales todos menos 22 se descargan de otro sitio.

Composición del registroCantidadDetalle
Entradas totales en marketplace.json123owner: {"name": "Anthropic"}
Entradas con origen local2217 carpetas propias + 5 en partner-built/
Entradas que apuntan a repos externos10159 con "source": "url", 42 con "source": "git-subdir"
Repositorios externos distintos93ninguno falló al comprobar con git ls-remote
Cuentas externas distintas90los mayores: carta 3, pendo-io 3
Entradas externas propiedad de anthropics2security-guidance, claude-for-financial-advisors
Entradas con SHA de commit fijado101 / 101todas las externas están fijadas
Nombres de plugin duplicados0123 nombres únicos
Releases / tags en GitHub0 / 0no hay nada a lo que fijarse en el repo

Esa tabla es el núcleo honesto del proyecto, y es mejor de lo que el README sugiere: 101 de 101 entradas externas llevan un SHA completo, que es la forma correcta de operar un catálogo que descarga código de 90 desconocidos. Pero los dos datos juntos — 123 entradas en el registro, 11 en la tabla del README — dicen para quién está escrito cada documento. El README es una página de aterrizaje para trabajadores del conocimiento. El registro es un manifiesto de cadena de suministro para un marketplace que ya lista 4,6 veces más plugins de proveedores que propios.

Tampoco están etiquetados igual. 87 de 123 entradas tienen campo category y 36 no lo tienen — y las 22 entradas propias están entre las 36. Todos los plugins añadidos al registro a partir de la posición 48 tienen categoría. El esquema se exige a los proveedores y se salta en casa.

El orden del archivo también dice algo: la posición 0 es noibu, un plugin de proveedor descargado de Noibu/ai-plugin, y los once plugins que documenta el README empiezan en la posición 1. Sea cual sea el criterio de orden, lo primero que ve un usuario en el archivo de marketplace de Anthropic es el producto de otro.

El mantenimiento lo hace otro

knowledge-work-plugins es un repositorio open source en el sentido de la licencia y bastante menos en el sentido de la contribución. El ranking de commits lo explica:

CuentaCommitsQué es
github-actions[bot]807el workflow programado que actualiza SHAs
jordanecker-ant155persona, Anthropic
bryan-anthropic58persona, Anthropic
mattpic-ant23persona, Anthropic
tobinsouth18persona
claude8el modelo, en commits cofirmados

32 contribuidores en total, y cerca de tres cuartas partes de los commits los firma un robot que reescribe SHAs. Solo marketplace.json acumuló más de 100 commits entre el 2026-09-18 y el 2026-10-21: unas tres ediciones del registro al día. El workflow que lo hace es .github/workflows/bump-plugin-shas.yml, programado, y va acompañado de revert-failed-bumps.yml, que revierte una actualización cuando el escaneo de seguridad falla. Existe además scan-plugins.yml, un workflow de 19 KB que revisa cada entrada de terceros con un escáner alojado en Anthropic mediante federación de identidad.

Esa automatización tiene un efecto visible. Seis repositorios de proveedores aportan más de un plugin, y cuatro de ellos tienen sus propios plugins fijados a commits diferentes al mismo tiempo:

Repo del proveedorPluginsCommits fijados
carta/pluginscarta-cap-table, carta-crm / carta-investors43e49ed3c0ca / 6ab81016389c
pendo-io/claude-pendo-pluginpendo-analytics, pendo-orchestrate / pendo-guidesa0f85260c61b / 340d503c23ee
grafana/ai-marketplacegrafana-assistant / grafana-cloud-mcpa5c72f2d74c6 / 6c28ba1961d5
stackhawk/agent-skillsstackhawk-api / stackhawk-hawkscand0eea864c42f / 66cac9baa588

qodo-ai/qodo-skills y oracle/netsuite-suitecloud-sdk mantienen sus dos plugins en un SHA compartido, así que la divergencia no es una regla: es lo que pasa cuando cada fila del registro se actualiza por separado. La consecuencia práctica es que instalar dos plugins de stackhawk/agent-skills te deja código de dos estados distintos del mismo repositorio, y nada en el registro indica si esa diferencia fue intencionada.

Dentro de los plugins del propio repositorio

Quitando el registro, veamos qué envía Anthropic dentro del árbol. Diecisiete carpetas de plugin, más cinco de proveedores en partner-built/ — una de ellas, zoom-plugin en la versión 1.1.0, contiene 30 skills por sí sola.

PluginVersiónSkillsComandosAgentesServidores MCPLICENSE
small-business1.35.1440035no
sales2.1.0360023sí
data1.1.010008sí
engineering1.2.0100010no
human-resources1.3.09005no
legal1.3.09007sí
operations1.3.09006no
finance1.3.08006sí
marketing1.2.080013sí
product-management1.2.081016sí
design1.2.07009no
bio-research1.2.060011sí
customer-support1.3.05008sí
enterprise-search1.3.05007sí
productivity1.3.14009sí
cowork-plugin-management0.2.22000sí
pdf-viewer0.2.01401sí

Tres cosas saltan de esa tabla. Primero, la estructura documentada en el README incluye una carpeta commands/, y 15 de los 17 plugins no la tienen. En todo el repositorio hay 15 archivos de comando: 4 en pdf-viewer, 1 en product-management y 9 en los plugins de proveedores. El README incluso anuncia el patrón con ejemplos — «los comandos de barra están disponibles en tu sesión (por ejemplo /sales:call-prep, /data:write-query)» — pero /sales:call-prep resuelve a sales/skills/call-prep/SKILL.md, una skill, no un comando. Funciona porque Claude Code permite invocar una skill como comando; significa que la capa commands/ de la documentación es residual, y los propios usuarios ya lo notaron: el issue abierto #1283 se titula «finance: skills document slash commands the plugin doesn’t ship (/je, /sox, /flux)».

Segundo, los «subagentes» aparecen exactamente una vez: partner-built/brand-voice/agents/, con 5 archivos y 22.883 bytes. Ningún plugin propio incluye un agente. Y hay cero carpetas hooks/ y cero archivos hooks.json en todo el repositorio — conviene recordarlo en el apartado siguiente, porque la política de seguridad del repo es en buena parte un documento sobre hooks.

Tercero, los recuentos de skills son desiguales de una forma que correlaciona con las versiones. small-business va por 1.35.1 con 44 skills y sin LICENSE propio; sales por 2.1.0 con 36; el resto se mueve entre 0.2.0 y 1.3.1. Las seis carpetas que faltan en la tabla del README —design, engineering, human-resources, operations, pdf-viewer, small-business— son también, con una excepción, las que no tienen archivo LICENSE propio (design, engineering, human-resources, operations, small-business). La correlación entre «se añadió después» y «se olvidó la copia de la licencia» es casi perfecta, y es una forma barata de datar una carpeta en cualquier repositorio que siga este patrón.

Lo que cuestan 181 skills antes de que escribas nada

La documentación de Claude Code explica el mecanismo sin rodeos: «para cada skill, agente y comando que Claude puede invocar por su cuenta, el nombre y la descripción están en el contexto de Claude en cada turno, para que sepa que existen. Esos tokens cuentan para tu consumo y dejan menos espacio en la ventana de contexto incluso en sesiones donde no se ejecuta nada del plugin».

O sea que el frontmatter no es gratis. Sumando name y description de todas las skills del repositorio:

AlcanceSkillsCaracteres de nombre+descripción≈ tokens por turno
solo small-business4434.4138.603
solo sales3612.8933.223
Los 17 plugins propios18177.65519.409
Incluyendo partner-built/25294.06123.515

Dos plugins —sales y small-business— concentran 80 de las 181 skills propias, el 44,2% de la superficie. Activar todo lo que envía el repositorio pone unos 23.500 tokens de descripciones de herramientas delante de cada prompt, para siempre: cerca del 12% de una ventana de 200k, o el 2,4% de una de un millón, gastados antes de que el usuario diga nada. Los cuerpos completos son mucho mayores —1,64 MB de SKILL.md, ≈ 409k tokens—, pero solo se cargan cuando se usan.

Esto no es una crítica al diseño; es su precio, y la documentación de Anthropic dice que el marketplace oficial muestra una estimación de coste de contexto en /plugin antes de instalar. El hallazgo es más concreto: small-business es un monolito de 44 skills cuyo coste de descripciones supera al de los plugins data, legal y bio-research juntos, y es uno de los que no tienen archivo de licencia propio. Si un plan de despliegue dice «instala el plugin small-business para el equipo de operaciones», en realidad está diciendo «y 8.600 tokens en cada turno para todo el que lo tenga activado».

Tabla por plugin, ordenada:

PluginSkills≈ tokens/turno
small-business448.603
sales363.223
legal9775
bio-research6735
data10680
marketing8672
engineering10662
operations9648
human-resources9608
product-management8597
finance8565
design7480
customer-support5356
enterprise-search5311
productivity4256
cowork-plugin-management2167
pdf-viewer171

174 declaraciones de conectores, 30 con la URL vacía

Los 14 plugins que incluyen un .mcp.json declaran 174 entradas de servidor MCP. Treinta son marcadores con "url": "".

Nombre del servidorPlugins que lo declaranURL
google calendar12"" — cadena vacía
gmail12"" — cadena vacía
snowflake2""
databricks2""
google drive1""
benchling1""

Quedan 144 declaraciones con un endpoint real, pero solo 80 endpoints distintos, porque los mismos se copian y pegan entre plugins:

EndpointDeclarado en N plugins
https://mcp.slack.com/mcp13
https://mcp.atlassian.com/v1/mcp11
https://mcp.notion.com/mcp11
https://mcp.asana.com/v2/mcp6
https://mcp.hubspot.com/anthropic4
https://mcp.linear.app/mcp4

Un promedio de 2,2 declaraciones por endpoint distinto. El issue #1031, presentado el 2026-08-31, se titula «Shared connectors (Gmail, Google Calendar, Slack) are redeclared per-plugin instead of shared»: alguien detectó la duplicación siete semanas antes y la estructura del repositorio no cambió, lo que hace más rara la abstracción de categorías de CONNECTORS.md — las skills se escriben agnósticas al conector y luego la lista de conectores se pega en cada plugin. Las 13 declaraciones de Slack llevan bloque oauth, y las 13 llevan el mismo client ID 1601185624273.8899143856786 y el mismo callbackPort: 3118. No pude establecer con ninguna fuente si Claude Code multiplexa esto en una sola conexión o arranca trece, ni si el puerto de callback compartido se respeta por plugin o por sesión: la documentación no lo dice. Lo que sí está documentado es que «los servidores MCP que define el plugin corren junto a cada sesión donde está activado». Si esa frase es literal, instalar seis plugins con conector de Slack es una pregunta de configuración que nadie ha respondido en público.

Las entradas con URL vacía se explican en algunos CONNECTORS.md: «Google Calendar, Gmail y Google Drive están listados en .mcp.json sin URL. Conéctalos en los ajustes de conectores de Claude». Es una divulgación, pero solo aparece en 6 de los 14 plugins que envían el marcador: customer-support, design, engineering, enterprise-search, marketing, productivity y finance lo envían sin la nota. Y snowflake, databricks y benchling son marcadores sin explicación alguna.

Un detalle merece crédito: ningún archivo del repositorio contiene una clave de API ni un token. Las 174 declaraciones se autentican por OAuth en el momento de conectar. Para un repo que distribuye código de 90 terceros, cero secretos comprometidos es un resultado real.

Qué contestan los endpoints cuando llamas

Envié un initialize MCP sin autenticar a 17 de los endpoints declarados. Dieciséis respondieron 401 —vivos, protegidos, correcto—. Uno respondió 404:

POST https://api.definite.app/v3/mcp/http
→ HTTP 404  {"detail":"Not Found"}

Esa URL está en data/.mcp.json, viaja en data versión 1.1.0, y es el conector que la propia tabla del README anuncia para el plugin de datos («Snowflake, Databricks, BigQuery, Definite, Hex, Amplitude, Jira»). El issue abierto #1357 reporta lo mismo, presentado cinco días antes de esta medición: «data plugin: Definite MCP endpoint returns 404 (api.definite.app/v3/mcp/http)». El repositorio tiene un workflow check-mcp-urls.yml, pero se dispara en rutas de pull_request, así que un endpoint que muere después del merge sigue muerto en main.

El otro conector que merece mención no está muerto, solo apunta a algo temporal. engineering/.mcp.json declara Datadog en https://mcp.datadoghq.com/api/unstable/mcp-server/mcp. Devuelve 401, así que hoy funciona. El issue #1279 —«engineering: Datadog MCP URL uses the /unstable endpoint, which Datadog shuts off on Dec…»— señala que «hoy funciona» es justo el problema: fijar un plugin de producción a un segmento de ruta que se llama literalmente unstable.

El script que dice «empaquetado con éxito» y escribe 22 bytes

data/skills/data-context-extractor/scripts/package_data_skill.py empaqueta una carpeta de skill en un ZIP distribuible. Valida la skill, recorre la carpeta y añade cada archivo. La línea que importa está en medio del recorrido:

for file_path in skill_path.rglob('*'):
    if file_path.is_file():
        # Skip hidden files and common junk
        if any(part.startswith('.') for part in file_path.parts):
            continue

file_path.parts es la ruta absoluta descompuesta en segmentos, no la ruta relativa a la carpeta de la skill. Así que el filtro no salta archivos ocultos dentro de la skill: salta todo archivo cuya ruta absoluta contenga cualquier carpeta que empiece por punto, en cualquier posición. Y la ubicación documentada de una skill de Claude es ~/.claude/skills/<nombre>.

Lo ejecuté con una skill colocada en .claude/skills/acme-analyst:

$ python3 package_data_skill.py .claude/skills/acme-analyst out2
Packaging skill: .claude/skills/acme-analyst
   Output directory: out2

Validating skill...
Validation passed


Successfully packaged skill to: /opt/data/cache/scratch/skilltest/out2/acme-analyst.zip
EXIT=0

El archivo de salida pesa 22 bytes y zipfile.ZipFile(...).namelist() devuelve []: cero entradas. Código de salida 0. Ningún aviso. El mismo script con una skill en una ruta sin segmento con punto (skm) produjo un archivo de 2.412 bytes con una entrada, lo que aísla la causa en el filtro de ruta y no en el contenido de la skill.

Es el mismo defecto del issue abierto #1298, «package_data_skill.py reports success with an empty ZIP under .claude», presentado el 2026-10-10 y todavía abierto, en el único script que existe para entregar una skill terminada a otra persona. Es un error de dos palabras (parts en lugar de relative_to(skill_path).parts) con firma de fallo silencioso: el usuario recibe «Successfully packaged» y un archivo que enviará por correo a un colega, y el colega no recibe nada.

La propia Política del Directorio de Software de Anthropic, que este repositorio aplica a los proveedores externos, dice: «las descripciones de herramientas o capacidades del Software Instruccional deben coincidir con precisión con la funcionalidad real […] no deben incluir funcionalidad inesperada ni prometer características no entregadas». Un script de empaquetado que anuncia éxito mientras produce un artefacto vacío es la misma categoría de desajuste, una capa más abajo.

El README dice haz un fork; el CI lo cierra

La sección de contribución del README son dos frases: «los plugins son solo archivos markdown. Haz un fork del repositorio, aplica tus cambios y envía un PR».

.github/workflows/close-external-prs.yml se ejecuta en pull_request_target para cada PR abierto y lo cierra salvo que el autor sea miembro del repo, el bot de automatización, o que el PR añada solo entradas de marketplace.json cuyo repositorio de origen ya respalde un plugin publicado. El comentario que publica:

«¡Gracias por tu interés! Este repositorio solo acepta contribuciones de miembros del equipo de Anthropic. Si quieres enviar un plugin al marketplace, envíalo aquí.»

El issue abierto #1181 se titula «README invites external PRs that CI closes automatically». El canal real de contribución para alguien de fuera es un formulario de envío al directorio, no un pull request, y el README no lo menciona. No es un escándalo —un marketplace curado tiene que cerrar su catálogo—, pero cambia por completo el modelo mental correcto: no estás contribuyendo a este repositorio, estás pidiendo ser una entrada listada; y si te listan, tu código se descarga de tu propio repositorio en el SHA que elija el bot de Anthropic.

El archivo más valioso del repositorio es el que nadie enlaza. .github/policy/prompt.md es el prompt de revisión que scan-plugins.yml entrega a Claude para evaluar cada plugin de terceros. Son 8 KB de instrucciones inusualmente específicas, y revelan más sobre los modos de fallo reales del ecosistema que cualquier documentación:

  • «El listón aquí es maneja los datos del usuario de forma responsable, no simplemente no es malicioso. Un plugin puede no ser malicioso y aun así fallar esta revisión si observa más de lo que su propósito declarado justifica.»
  • «Lee TODO el contenido enviado, no solo la superficie que se carga. Un plugin instalado desde una fuente git clona el repositorio ENTERO en el disco del usuario […] Busca con glob y grep de forma amplia, incluidas carpetas ocultas: “no es una superficie que se carga” NO es razón para saltarse un archivo.»
  • Sobre credenciales: «La bandera roja es el salto entre servicios: por ejemplo, leer el ANTHROPIC_AUTH_TOKEN de Anthropic (un token de cuenta/OAuth) y enviarlo a un endpoint no-Anthropic — el mal uso estilo vercel.»
  • El revisor debe marcar has_broad_scope_hooks, has_undisclosed_telemetry y description_matches_behavior, y la telemetría falla «a menos que la descripción de plugin.json o el README de nivel superior divulgue explícitamente la llamada Y documente una opción de desactivación».

Ese párrafo sobre clonar el repositorio entero es la frase más útil para quien adopte este marketplace: activar un plugin no es cargar un archivo markdown, es vendorizar un repositorio en un portátil. Y por eso la afirmación «nada de código» importa más allá del detalle técnico: la política existe porque el contenido puede ser cualquier cosa, y el README le está contando a trabajadores del conocimiento que el contenido es prosa.

Lo que sí está bien construido

Una auditoría que solo enumera defectos es perezosa, y este repositorio hace varias cosas mejor que la mayoría de proyectos de su tamaño:

  • 252 de 252 archivos SKILL.md tienen frontmatter válido con name y description, y en las 181 skills propias el nombre de la skill coincide exactamente con el de su carpeta. Ninguna descripción pasa de 1.024 caracteres. No hay deriva entre metadatos y estructura.
  • 909 enlaces markdown relativos resueltos, cero rotos. La higiene documental a esta escala es rara.
  • 101 de 101 entradas externas fijan un SHA, los 93 repositorios de proveedores siguen existiendo y ningún nombre de plugin colisiona. El catálogo está bien formado.
  • Cero secretos comprometidos en 174 declaraciones de conectores, todas por OAuth.
  • La abstracción CONNECTORS.md es buena idea. Las skills hablan de ~~CRM, ~~chat, ~~project tracker en vez de nombrar HubSpot, Slack o Jira; 166 apariciones de marcadores en 54 categorías distintas, y 15 de los 17 plugins solo usan marcadores que su propio CONNECTORS.md define. Es lo que permite a una empresa poner su stack sin editar 44 archivos de skill. Las dos excepciones son bio-research (usa genomics platform y tool database, ninguno definido en su CONNECTORS.md) y cowork-plugin-management (7 marcadores, incluidos los de plantilla ~~your-team-channel, y ningún CONNECTORS.md).
  • El ciclo escanear-y-revertir —actualización programada, revisión por LLM, reversión automática si falla— es un patrón que la mayoría de registros de plugins no tiene.

Qué debe verificar un equipo antes de activar nada

La documentación no puede responder estas preguntas por ti. Los cinco chequeos son una línea contra un clon reciente.

  1. Encuentra el código. El README dice que no hay. Cuéntalo tú y lee el archivo más grande: find . -name '*.py' -o -name '*.sh' -o -name '*.mjs' | xargs wc -c | tail -1. Después busca python3 en bio-research/skills/*/SKILL.md —27 apariciones en 4 skills— y decide si tus portátiles tienen el runtime y los paquetes.
  2. Encuentra los conectores muertos. grep -c '"url": ""' */.mcp.json para los marcadores, y luego sonda el resto con un initialize sin autenticar: cualquier respuesta que no sea 401 es un hallazgo. El 404 de este repo estuvo publicado al menos cinco días antes de que alguien lo reportara.
  3. Calcula el contexto antes de activarlo. wc -c */skills/*/SKILL.md no es la medida correcta; el coste por turno es la suma de name + description del frontmatter. En este repositorio son 19.409 tokens para los plugins propios y 8.603 solo para small-business. Compáralo con la estimación que /plugin muestra para los plugins del marketplace oficial, y usa el grupo «Not used recently» de la pestaña Installed para apagar lo que no se usa.
  4. Revisa las colisiones. grep -h '^name:' */skills/*/SKILL.md | sort | uniq -d devuelve start, competitive-brief y lead-triage. Que dos plugins con una skill llamada start se resuelvan de forma predecible no está documentado en ninguna parte; el issue #1306 muestra que el caso vecino —una skill de plugin y una skill integrada disparándose con las mismas peticiones— ya es una queja real de usuarios.
  5. Limita el radio de impacto en la plataforma, no en la confianza. Los ajustes gestionados permiten autorizar o bloquear marketplaces, forzar la instalación de plugins y desactivar la carga de solo sesión; instalar en el ámbito de proyecto escribe el plugin en el .claude/settings.json del repositorio para que 500 personas reciban lo mismo. «Un plugin que instalas puede ejecutar código con tus privilegios de usuario» es una frase de la propia documentación. Trata una entrada del marketplace como una dependencia, no como un documento.

Preguntas frecuentes

¿knowledge-work-plugins es lo mismo que Claude Marketplace? No. La documentación de Claude Code lo dice explícitamente: un marketplace es «un repositorio o directorio con un archivo .claude-plugin/marketplace.json que lista plugins y de dónde descargar cada uno. Es un catálogo, no una tienda alojada», y «un marketplace de plugins no es Claude Marketplace», que es el sitio web en claude.com/marketplace. Este repositorio es un archivo de catálogo más 17 plugins locales.

¿Por qué el README dice 11 plugins si hay 17 carpetas y 123 entradas? Porque el README se escribió cuando había 11 y nunca se actualizó. Las 6 incorporaciones posteriores (design, engineering, human-resources, operations, pdf-viewer, small-business) no están en la tabla, y el registro ha crecido hasta 101 entradas de terceros que el README no menciona en absoluto.

¿De verdad los plugins no incluyen código? bio-research incluye 25 de los 26 archivos Python del repositorio, entre ellos un validate_asm.py de 36.719 bytes y un sra_geo_fetch.py de 24.982 bytes; sus skills llaman a python3 27 veces en 4 skills, y su README menciona pip cuatro veces y nextflow una. GitHub puntúa el repositorio como Python 74,1% y HTML 25,9%. Los otros 16 plugins son markdown y JSON.

¿Por qué hay 30 conectores declarados con la URL vacía? Google Calendar, Gmail y Google Drive son marcadores: algunos CONNECTORS.md dicen que hay que «conectarlos en los ajustes de conectores de Claude»; snowflake, databricks y benchling son marcadores sin explicación en el archivo que los envía. Si el runtime ignora una URL vacía o se niega a arrancar no está documentado.

¿Puedo fijar una versión de un plugin propio? No en el sentido habitual. El repositorio tiene 0 releases y 0 tags. Lo que sí puedes fijar es el SHA del registro para las entradas de terceros; para los plugins propios el único marcador de versión es el campo version de cada plugin.json, que va de 0.2.0 (pdf-viewer) a 1.35.1 (small-business) sin un changelog que los relacione.

¿Es seguro instalar una entrada de terceros? Más que en la mayoría de marketplaces, con una advertencia concreta. Cada entrada está fijada por SHA, revisada por un escáner LLM contra una política escrita, y reescaneada en cada actualización programada con reversión automática si falla. La advertencia es la que la política escribe en mayúsculas: un plugin de origen git «clona el repositorio ENTERO en el disco del usuario», así que lo que estás confiando no son los archivos de skill, es todo lo que haya en ese repositorio.

Resumen

anthropics/knowledge-work-plugins es un registro bien formado envuelto en un README que describe otra cosa, más pequeña y más simple. El registro es la mejor parte: 123 entradas, 101 fijadas a commits concretos de 93 repositorios de proveedores vivos, revisadas por una política escrita que es genuinamente buena, mantenidas por un bot programado que firma cerca de tres cuartas partes de los commits. La superficie interna es más delgada de lo anunciado —17 plugins, 181 skills, 5 archivos de comando en 2 plugins, cero hooks, un plugin de proveedor con agentes— y no está libre de código: hay 26 archivos Python detrás de las seis skills de bio-research, que son el 74,1% del repositorio según la aritmética del propio GitHub.

Los defectos que importan son todos del mismo tipo: superficies que informan de éxito mientras entregan otra cosa. Un registro cuyo README anuncia 11 de 123. Una capa commands/ documentada como universal y presente en 2 de 17. Un conector de datos anunciado en la tabla del README que devuelve 404. Un script de empaquetado que imprime «Validation passed» y «Successfully packaged» y escribe un ZIP de 22 bytes sin nada dentro. Ninguno rompe el concepto; todos son la razón para hacer cinco comprobaciones sobre un clon antes de activar nada para un equipo.

El número que conviene recordar es 19.409: los tokens de descripciones de skills que una instalación solo de plugins propios pone delante de cada prompt, para siempre, antes de que el usuario haya escrito nada.