Skip to content

Mejores skills para Claude Code y Codex: cuáles instalar, cómo auditar un repo antes y por qué una skill nueva no se activa

Actualizado el

Diez repos populares de agent skills comparados por tamaño, código incluido y coste de contexto, un script de auditoría de solo lectura para ejecutar antes de instalar y el arreglo del presupuesto del listado para las skills que se instalan pero no se activan. Probado en Claude Code 2.1.325.

La versión corta: instala unas pocas skills, no un repositorio entero. Tres reglas:

  1. Elige según la tarea. Empieza con un pack pequeño y de solo texto como obra/superpowers (15 skills) o con una sola skill como socratic-tutor de Jane Street. Deja de lado catálogos como google/skills (203 skills) y NVIDIA/skills (452) hasta que necesites una skill concreta de ellos.
  2. Lee antes de instalar. Una skill son instrucciones más scripts opcionales que se ejecutan con los permisos de tu agente. El script de auditoría del Paso 1 lista qué skills traen código y qué archivos abrir primero. Solo lee archivos.
  3. Revisa el listado después de instalar. Claude Code le muestra al modelo una lista con los nombres y las descripciones de las skills, y esa lista tiene un tope. En una máquina que ya tenía 98 skills, una skill recién instalada quedó listada solo por nombre, así que el modelo no tenía ninguna descripción con la que relacionar una petición. Ejecuta /skill-doctor y después libera presupuesto con skillOverrides o súbelo con skillListingBudgetFraction.
Si quieresInstalaSkillsTrae código
Un flujo de desarrollo disciplinado (plan, TDD, depuración, revisión)obra/superpowers153 skills
Checklists de ingeniero sénior para todo el ciclo de vidaaddyosmani/agent-skills252 skills
Archivos de oficina: xlsx, docx, pptx, pdfanthropics/skills (document-skills)4 de 20sí
APIs actuales de la plataforma web en lugar de JavaScript de 2019GoogleChrome/modern-web-guidance2no
Una sola skill para aprender bien un temajanestreet/agent_skills1no

Qué se probó: todas las cifras salen de clones superficiales hechos el 15 de noviembre de 2026 y de Claude Code 2.1.325 en macOS. Se ejecutaron el script de auditoría, claude plugin validate, /skill-doctor y el log de depuración. No se probó si después el modelo elige una skill por su cuenta, y tampoco SkillSpector, el instalador npx skills ni Codex. La tabla Probado frente a documentado, casi al final, separa las dos cosas.

Diez repos de skills comparados

Las agent skills son carpetas con un archivo SKILL.md que Claude Code, Codex y otros agentes cargan bajo demanda. Si lo que necesitas es el formato en sí, Codex vs Claude Code Skills explica las rutas, el frontmatter y cómo compartir una skill entre ambas herramientas. Esta página trata de elegir e instalar las skills de otras personas.

El interés por los repos de skills se disparó a principios de noviembre. Jane Street publicó un repositorio con una sola skill el 3 de noviembre y alcanzó 712 puntos en Hacker News. GoogleChrome/modern-web-guidance lanzó la 1.0.0 el 10 de noviembre. anthropics/skills ganó unas 6.200 estrellas en una semana.

La tabla cuenta todos los SKILL.md de cada repositorio. «Caracteres de descripción» es la longitud total del texto de description, que es lo que un agente carga por cada skill en cada turno. La última columna lo compara con el presupuesto de listado de 30.000 caracteres que Claude Code indicó en la máquina de prueba.

RepositorioEstrellasSkillsCaracteres de descripciónSkills con código (archivos)Parte de un listado de 30.000 caracteres
janestreet/agent_skills (opens in a new tab)8.880134101%
GoogleChrome/modern-web-guidance (opens in a new tab)17.23921.71706%
obra/superpowers (opens in a new tab)317.955152.3173 (6)8%
vercel-labs/agent-skills (opens in a new tab)34.10892.9851 (90)10%
mattpocock/skills (opens in a new tab)324.937395.5013 (3)18%
kajisho5/ffmpeg-skill (opens in a new tab)5.902169.0841 (107)30%
anthropics/skills (opens in a new tab)195.208209.46411 (79)32%
addyosmani/agent-skills (opens in a new tab)117.8322510.0062 (2)33%
google/skills (opens in a new tab)24.324203107.60450 (232)359%
NVIDIA/skills (opens in a new tab)4.002452180.079159 (1.070)600%

Destacan tres cosas.

  • El tamaño varía en dos órdenes de magnitud. Instalar google/skills o NVIDIA/skills completos desborda el listado varias veces. Ambos README permiten instalar skills sueltas: NVIDIA con --skill, Google desde el selector del instalador.
  • La mayoría de las skills son Markdown sin más. 552 de las 782 skills no traen nada de código. Las que sí lo traen se concentran en skills de documentos, multimedia y nube, donde un script hace la parte determinista.
  • Las herramientas preaprobadas son raras fuera de un único catálogo. 126 skills de NVIDIA/skills y 2 de google/skills declaran allowed-tools. Ninguno de los otros ocho repositorios lo hace.

Cuál para cada tarea

  • obra/superpowers es un método de trabajo completo: lluvia de ideas, escribir un plan, ejecutarlo, depurar de forma sistemática y verificar antes de dar algo por terminado. Es el pack grande más barato en términos de contexto.
  • addyosmani/agent-skills se parece más a un conjunto de checklists de ingeniería: revisión de código, diseño de APIs, CI, observabilidad, endurecimiento de seguridad. Sus descripciones son más largas, así que 25 skills cuestan unas cuatro veces lo que cuesta Superpowers.
  • mattpocock/skills apuesta por comandos cortos que invocas tú mismo (/grill-me, /tdd, /to-spec). Incluye ocho skills in-progress.
  • anthropics/skills es el conjunto de referencia. Quien trabaja con datos suele querer sus skills xlsx, pdf, docx y pptx, que traen los scripts que de verdad generan los archivos. Si tu análisis vive en notebooks, un agente que trabaja dentro de Jupyter como RunCell (opens in a new tab) cubre la parte que estas skills de archivos no cubren.
  • GoogleChrome/modern-web-guidance son dos skills respaldadas por una CLI que busca en un índice de guías, pensadas para alejar a los agentes de patrones de front-end obsoletos.
  • kajisho5/ffmpeg-skill es una sola skill grande con 107 archivos de código, duplicada en dos ubicaciones, más 14 skills de proyecto del propio autor en .claude/skills. Instálala con su instalador, no copiando el repositorio.

Paso 1: audita un repo de skills antes de instalarlo

Las instrucciones de una skill entran en el contexto de tu agente, y sus scripts se ejecutan con los permisos que tenga tu sesión. Leer el repositorio antes es toda la defensa, así que conviene que esa lectura sea rápida.

Este script recorre una carpeta, encuentra todos los SKILL.md e imprime qué skills traen código y cuáles contienen patrones que merecen una mirada. Usa solo la biblioteca estándar de Python y nunca ejecuta nada de la carpeta que analiza.

#!/usr/bin/env python3
"""Read-only audit of SKILL.md folders. Runs nothing from the repo it scans."""
import os, re, sys
 
RISKY = {
    "pipe-to-shell": r"(curl|wget)[^\n|]*\|\s*(sudo\s+)?(ba|z)?sh",
    "reads-secrets": r"\.ssh/|\.aws/credentials|\.env\b|id_rsa|\.netrc|keychain",
    "sudo": r"\bsudo\s",
    "rm-rf": r"\brm\s+-[a-zA-Z]*r[a-zA-Z]*f|\brm\s+-[a-zA-Z]*f[a-zA-Z]*r",
    "skip-permissions": r"dangerously-skip-permissions|bypassPermissions|--yolo",
    "hidden-unicode": r"[\u200b\u200c\u200d\u2060\u202a-\u202e\U000e0000-\U000e007f]",
}
CODE = (".py", ".sh", ".js", ".mjs", ".ts", ".rb", ".ps1")
 
def frontmatter(text):
    m = re.match(r"^---\n(.*?)\n---\n?", text, re.S)
    if not m:
        return None, text
    fields, key = {}, None
    for line in m.group(1).splitlines():
        k = re.match(r"^([A-Za-z_-]+):\s*(.*)$", line)
        if k:
            key = k.group(1)
            fields[key] = k.group(2).strip().strip("\"'")
        elif key and line.startswith((" ", "\t")):
            fields[key] += " " + line.strip()
    return fields, text[m.end():]
 
def audit(root):
    rows = []
    for folder, dirs, files in os.walk(root):
        dirs[:] = [d for d in dirs if d not in (".git", "node_modules")]
        if "SKILL.md" not in files:
            continue
        text = open(os.path.join(folder, "SKILL.md"), encoding="utf-8", errors="replace").read()
        fields, body = frontmatter(text)
        everything, code_files = text, 0
        for sub, _, names in os.walk(folder):
            for n in names:
                if n.endswith(CODE):
                    code_files += 1
                if n.endswith(CODE + (".md",)) and n != "SKILL.md":
                    try:
                        everything += open(os.path.join(sub, n), encoding="utf-8", errors="replace").read()
                    except OSError:
                        pass
        flags = [name for name, pat in RISKY.items() if re.search(pat, everything)]
        if fields is None:
            flags.append("no-frontmatter")
            fields = {}
        if fields.get("allowed-tools"):
            flags.append("allowed-tools")
        if "hooks" in fields:
            flags.append("hooks")
        if re.search(r"!`[^`]+`|```!", body):
            flags.append("shell-injection-block")
        desc = (fields.get("description", "") + " " + fields.get("when_to_use", "")).strip()
        rows.append((os.path.relpath(folder, root), len(desc), len(body), code_files, flags))
    return rows
 
if __name__ == "__main__":
    rows = audit(sys.argv[1])
    listing = sum(d for _, d, _, _, _ in rows)
    print(f"{len(rows)} skills, {listing:,} description chars (~{listing // 4:,} tokens if all are listed)")
    print(f"{sum(1 for r in rows if r[3])} skills ship code files, {sum(r[3] for r in rows)} code files in total")
    for path, desc, body, code, flags in sorted(rows, key=lambda r: (-len(r[4]), r[0])):
        if flags or "-v" in sys.argv:
            print(f"  {path}: desc={desc} body={body} code={code} flags={','.join(flags) or '-'}")

Clona el repositorio en algún sitio fuera de tu proyecto y apunta el script hacia él.

git clone --depth 1 https://github.com/obra/superpowers /tmp/superpowers
python3 audit_skills.py /tmp/superpowers

La salida para Superpowers el 15 de noviembre:

15 skills, 2,317 description chars (~579 tokens if all are listed)
3 skills ship code files, 6 code files in total
  skills/brainstorming: desc=213 body=14933 code=3 flags=rm-rf
  skills/subagent-driven-development: desc=85 body=19484 code=0 flags=rm-rf
  skills/systematic-debugging: desc=91 body=9366 code=2 flags=reads-secrets

Cómo leer los flags

Un flag significa «abre este archivo», no «esta skill es maliciosa». Todos los flags revisados a mano en estos diez repositorios resultaron benignos. El rm-rf de Superpowers es rm -rf "$SESSION_DIR" en un script que limpia su propia carpeta temporal. El hidden-unicode de ffmpeg-skill es un zero-width joiner dentro de una nota sobre ligaduras del hindi. reads-secrets salta con cualquier mención de .env, incluido el consejo de no subir uno al repositorio.

FlagQué detectóQué revisar
pipe-to-shellcurl ... | sh en cualquier parte de la skillQué URL es y si la skill le dice al agente que lo ejecute
reads-secrets.env, .ssh/, .aws/credentials, keychainSi lee el archivo o solo lo menciona
sudo, rm-rfLos comandos literalesLa ruta que se borra y quién lo dispara
skip-permissionsFlags que desactivan los avisos de permisoCualquier instrucción de ejecutar el agente de ese modo
hidden-unicodeCaracteres de ancho cero y de control bidireccionalSi hay texto oculto para un lector humano
allowed-toolsFrontmatter que preaprueba herramientasQué herramientas se ejecutan sin aviso mientras la skill está activa
hooksFrontmatter que registra hooksQué comando ejecuta el hook, porque se queda durante toda la sesión
shell-injection-blockUn bloque !`command` en el cuerpoEl comando se ejecuta cuando la skill se carga, antes de que el modelo lea nada

Los tres últimos son los que más importan en Claude Code. allowed-tools concede herramientas sin preguntar durante el turno que invoca la skill. Una entrada hooks sigue ejecutándose el resto de la sesión. Un bloque !`command` se ejecuta cuando la skill se carga.

Dos comprobaciones más

Claude Code puede validar el frontmatter por ti. Este comando pasó sin errores en una carpeta con 91 skills instaladas, y en un repositorio que no está empaquetado como plugin falla con No manifest found, lo que te indica que el repositorio solo se puede instalar copiándolo.

claude plugin validate .claude/skills

Para un análisis más profundo, SkillSpector (opens in a new tab) de NVIDIA es un escáner dedicado con 71 patrones y una puntuación de riesgo de 0 a 100. Su README da esto como camino rápido; no se ejecutó para este artículo.

uv tool install git+https://github.com/NVIDIA/skillspector.git
skillspector scan ./my-skill/ --no-llm

Paso 2: instala solo lo que necesitas

Copiar una carpeta es el método de instalación con menos piezas móviles, y es el que se probó aquí.

git clone --depth 1 https://github.com/janestreet/agent_skills /tmp/agent_skills
mkdir -p .claude/skills
cp -R /tmp/agent_skills/socratic-tutor .claude/skills/

El destino decide dónde se carga la skill.

AgenteSolo este proyectoTodos los proyectos
Claude Code.claude/skills/<name>/~/.claude/skills/<name>/
Codex.agents/skills/<name>/~/.agents/skills/<name>/

Usa la carpeta del proyecto para todo lo que estés probando. Mantiene la skill fuera de tus otras sesiones, y borrar la carpeta la elimina.

Las otras dos vías salen del README de cada proyecto y no se ejecutaron aquí.

  • Los plugins instalan un pack entero y se actualizan desde /plugin. Por ejemplo, /plugin marketplace add anthropics/skills y después /plugin install document-skills@anthropic-agent-skills. Superpowers es /plugin install superpowers@claude-plugins-official.
  • La CLI skills de Vercel Labs copia archivos al proyecto para muchos agentes a la vez: npx skills add addyosmani/agent-skills --skill test-driven-development -a claude-code. Añade --list para explorar antes.

Una salvedad de la documentación de Claude Code: skillOverrides no se aplica a las skills de plugins. Si un pack de plugin es demasiado grande, desactivas el plugin, no skills sueltas.

Paso 3: comprueba que la skill nueva aparece de verdad en el listado

Este paso detecta una causa de «instalada pero nunca se activa» que no produce ningún error.

Claude Code le da al modelo un listado con el nombre y la descripción de cada skill. El listado tiene un presupuesto, por defecto el 1% de la ventana de contexto. Cuando se desborda, Claude Code conserva todos los nombres pero descarta descripciones, empezando por las skills que menos usas. Una skill recién instalada tiene cero usos. La documentación de Claude Code describe el mecanismo en el apartado Skill descriptions are cut short (las descripciones de las skills se recortan) (opens in a new tab); las cifras de abajo muestran cómo se ve en la práctica.

Así se vio en una máquina que ya tenía 84 skills personales y 14 skills de plugins. Después de copiar una skill nueva, el log de depuración decía:

[WARN] Skill listing over budget: 112 skills, 37491 chars > 30000 budget — descriptions will be truncated.

Y /skill-doctor mostraba la skill nueva listada solo por nombre:

ConfiguraciónCoste de contexto de socratic-tutorSignificado
Presupuesto por defecto< 20Solo el nombre. Su descripción de 341 caracteres se descartó
skillListingBudgetFraction: 0.02~120Descripción completa en el listado
skillOverrides: "name-only"< 20Solo el nombre, porque tú lo elegiste. La misma lectura que con el valor por defecto por encima del presupuesto
skillOverrides: "off"-No aparece en el listado

Un coste de < 20 no es una prueba por sí solo, porque una skill con una descripción de una línea también cuesta menos de 20. Compáralo con la longitud de la descripción. Los recuentos de abajo solo incluyen skills cuyas descripciones son lo bastante largas como para distinguirlo.

Añadir más lo empeoró para todas las demás. Con 91 skills de proyecto instaladas, 76 aparecían en el listado y 70 de ellas habían perdido una descripción de 80 caracteres o más. Con 289, el número de skills personales que habían perdido su descripción subió de 6 a 39: las recién llegadas desplazaron las descripciones de skills que venían funcionando.

Ejecuta la comprobación

/skill-doctor imprime una fila por skill con su coste en el listado. Necesita Claude Code 2.1.252 o posterior y funciona en modo -p.

claude -p "/skill-doctor"

Para ver el aviso de presupuesto en sí, escribe un log de depuración y busca en él.

claude --debug-file /tmp/cc-debug.log -p "hello"
grep "Skill listing over budget" /tmp/cc-debug.log

Arréglalo

Primero desactiva lo que no usas. Esto va en .claude/settings.json para el proyecto, o en ~/.claude/settings.json para todos los proyectos.

{
  "skillOverrides": {
    "legacy-context": "name-only",
    "deploy": "off"
  }
}

"name-only" mantiene la skill invocable como /name y quita su descripción del listado. "off" la oculta por completo. En una sesión interactiva, /skills escribe el mismo ajuste: pulsa Space sobre una fila para cambiar su estado y después Esc para guardar.

Si de verdad lo usas todo, sube el presupuesto. Cuesta contexto en cada turno.

{
  "skillListingBudgetFraction": 0.02
}

Codex tiene el mismo mecanismo con otros números. Su documentación dice que la lista inicial de skills usa como máximo el 2% de la ventana de contexto, u 8.000 caracteres cuando la ventana es desconocida, que primero acorta las descripciones y que puede omitir skills de la lista con un aviso. skills.max_context_tokens cambia el presupuesto, y una entrada [[skills.config]] con enabled = false en ~/.codex/config.toml desactiva una skill.

Paso 4: deja que una skill se ejecute sin supervisión

Claude Code 2.1.325, publicado el 13 de noviembre, cambió un comportamiento que afecta al trabajo programado. Las tareas programadas y /loop ahora preguntan antes de ejecutar una skill que declara allowed-tools o hooks. Para ejecutar una skill así sin aviso, permítela por nombre.

{
  "permissions": {
    "allow": ["Skill(release-notes)"]
  }
}

Lo contrario también funciona. Una regla deny como Skill(deploy *) impide que el modelo invoque una skill, y denegar Skill sin argumento las desactiva todas. Ambas cosas salen de la documentación de Claude Code. Endurecer los permisos de Claude Code cubre el resto de los ajustes de permisos que vale la pena subir a un repositorio.

Paso 5: elimina una skill

  • Skill copiada: borra su carpeta en .claude/skills/ o .agents/skills/.
  • Skill de plugin: /plugin uninstall <plugin>@<marketplace>, o desactívala en /plugin.
  • Conservarla pero sin uso automático: ponla en "name-only" u "off" en skillOverrides, o añade disable-model-invocation: true a su frontmatter si el archivo es tuyo.

Probado frente a documentado

AfirmaciónEstado
Número de skills, tamaño de las descripciones y número de archivos de código de los diez repositoriosProbado, 15 de noviembre de 2026, clones superficiales
Salida del script de auditoría y los flags benignos descritosProbado
claude plugin validate en una carpeta de skills y en cuatro repositoriosProbado, Claude Code 2.1.325
Listado por encima del presupuesto con 112 skills, skill nueva listada solo por nombreProbado, una máquina macOS con 98 skills existentes
skillListingBudgetFraction: 0.02 y skillOverrides: "off" cambian el listadoProbado con /skill-doctor. "name-only" mostró el mismo < 20 que el valor por defecto por encima del presupuesto
El modelo elige una skill por su cuenta después del arregloNo probado
Reglas allow y deny Skill(name), el cambio de la 2.1.325 en las tareas programadasDe la documentación y el changelog de Claude Code
Instalación por plugins, npx skills, SkillSpectorDel README de cada proyecto, no ejecutado
Rutas, presupuesto y claves de configuración de CodexDe la documentación de Codex

El presupuesto de 30.000 caracteres es lo que indicó una sola máquina. El tuyo depende de la ventana de contexto del modelo, así que lee tu propio log de depuración antes de fiarte de la columna de porcentajes.

Preguntas frecuentes

¿Qué agent skills conviene instalar primero en Claude Code?

Empieza con poco. obra/superpowers da un flujo completo de plan, pruebas, depuración y revisión en 15 skills. addyosmani/agent-skills añade 25 checklists de ingeniería. Para hojas de cálculo, PDF y presentaciones, instala el plugin document-skills de anthropics/skills. De los catálogos grandes, instala skills sueltas en lugar de todo el repositorio.

¿Por qué mi skill nueva de Claude Code no se activa?

En una máquina con muchas skills, lo más probable es que el listado supere el presupuesto y la skill nueva esté listada solo por nombre. Ejecuta /skill-doctor. Un coste de contexto por debajo de 20 en una skill con una descripción larga significa que la descripción se descartó. Desactiva las skills que no usas con skillOverrides, o sube skillListingBudgetFraction.

¿Cómo compruebo si una skill es segura antes de instalarla?

Clónala fuera de tu proyecto y léela. Busca scripts incluidos, allowed-tools, hooks y bloques !`command`. El script de auditoría de más arriba los lista para cada SKILL.md sin ejecutar nada.

¿Cuántas skills son demasiadas para Claude Code?

Depende de la longitud de las descripciones, no del número. Veinte skills de anthropics/skills usan unos 9.500 caracteres de un presupuesto de 30.000. google/skills completo necesita unos 107.600.

¿Qué hace /skill-doctor?

Imprime todas las skills cargadas con su origen, su coste en el listado, el uso de tokens de los últimos 7 días y el número de invocaciones, y marca las que nunca se usaron. Necesita Claude Code 2.1.252 o posterior.

¿Dónde pongo una skill para que la usen tanto Claude Code como Codex?

.claude/skills/ para Claude Code y .agents/skills/ para Codex, en el proyecto o en tu directorio de usuario. Mantén una sola copia y enlaza la otra con un symlink.

¿Puedo desactivar una skill sin borrarla?

Sí: skillOverrides en la configuración de Claude Code, o [[skills.config]] con enabled = false en Codex. Las skills de plugins se gestionan con /plugin.

¿Por qué una tarea programada pregunta antes de ejecutar mi skill en Claude Code 2.1.325?

Las tareas programadas y /loop ahora preguntan antes de ejecutar una skill que declara allowed-tools o hooks. Añade Skill(name) a permissions.allow.

Fuentes

Guías relacionadas