Revisada el 2026-10-12

Skill de Claude Code que lista las skills instaladas en ~/.claude/skills/ y separa las propias de las de terceros, con búsqueda por palabra clave.

La separación se basa en una convención: una skill es propia si su cabecera lleva origin: local. La lista se genera en el momento, así que siempre está al día. Útil cuando se acumulan muchas skills y se pierde la pista de cuáles se han escrito.

Datos clave
FormatoSkill de Claude Code (SKILL.md)1
IdiomaEspañol
InstalaciónGlobal: ~/.claude/skills/skill-list/SKILL.md. Solo un proyecto: .claude/skills/skill-list/SKILL.md1

Prompt

Copia el bloque completo en un archivo SKILL.md. La cabecera inicial (name y description) es la que usa Claude Code para decidir cuándo ofrecer la skill.1

---
name: skill-list
description: Lista todas las skills disponibles, marcando cuáles son propias (origin local) y cuáles son del sistema. Soporta búsqueda por palabra clave. Uso: /skill-list, /skill-list epub, /skill-list video
origin: local
tools: Bash
---
 
# Skill List
 
Muestra el inventario actualizado de skills, marcando las creadas por el usuario.
 
## Ejecución
 
Corre este script bash y muestra la salida formateada:
 
```bash
python3 - << 'EOF'
import os, re
 
SKILLS_DIR = os.path.expanduser("~/.claude/skills")
# Argumento de búsqueda opcional (pasado como args al invocar la skill)
import sys
search = " ".join(sys.argv[1:]).lower() if len(sys.argv) > 1 else ""
 
skills = []
for name in sorted(os.listdir(SKILLS_DIR)):
    skill_file = os.path.join(SKILLS_DIR, name, "SKILL.md")
    if not os.path.isfile(skill_file):
        continue
    content = open(skill_file, encoding="utf-8", errors="ignore").read()
 
    # Extraer frontmatter
    origin = ""
    description = ""
    for line in content.splitlines():
        if line.startswith("origin:"):
            origin = line.split(":", 1)[1].strip().strip('"')
        if line.startswith("description:"):
            description = line.split(":", 1)[1].strip().strip('"')
 
    # Propia solo si origin es exactamente "local"
    is_mine = origin.strip() == "local"
 
    skills.append({
        "name": name,
        "origin": origin,
        "description": description,
        "is_mine": is_mine,
    })
 
# Filtrar si hay búsqueda
if search:
    skills = [s for s in skills if search in s["name"].lower() or search in s["description"].lower()]
 
# Separar: propias vs sistema
mine   = [s for s in skills if s["is_mine"]]
system = [s for s in skills if not s["is_mine"]]
 
total = len(skills)
print(f"{'='*60}")
print(f"  SKILLS DISPONIBLES ({total} encontradas{'  ·  búsqueda: '+search if search else ''})")
print(f"{'='*60}")
 
if mine:
    print(f"\n★  MIS SKILLS ({len(mine)})")
    print(f"{'─'*60}")
    for s in mine:
        desc = s['description'][:65] + "…" if len(s['description']) > 65 else s['description']
        print(f"  /{s['name']}")
        if desc:
            print(f"     {desc}")
 
print(f"\n   SKILLS DEL SISTEMA ({len(system)})")
print(f"{'─'*60}")
for s in system:
    desc = s['description'][:65] + "…" if len(s['description']) > 65 else s['description']
    print(f"  /{s['name']:<35} {desc}")
 
print(f"\n{'='*60}")
print(f"  Uso: /skill-list [palabra clave]")
print(f"{'='*60}")
EOF
```
 
## Si el usuario pasó argumentos al invocar la skill
 
Si el usuario escribió `/skill-list epub` o `/skill-list video`, pasa esa palabra como argumento al script (reemplaza `sys.argv[1:]` con la palabra indicada, o simplemente filtra en el output).
 
En la práctica: lee los argumentos de la invocación y filtra la lista por nombre y descripción que contengan esa palabra.
 
## Notas
 
- **★ MIS SKILLS**: origin = `local` en el frontmatter → creadas por el usuario
- **SKILLS DEL SISTEMA**: cualquier otro valor de `origin`, o ninguno → vienen de terceros o de un paquete instalado
- La lista se genera en tiempo real desde `~/.claude/skills/` — siempre actualizada
- Para agregar una skill propia que aparezca en "Mis skills": poner `origin: local` en el frontmatter

Cómo adaptarla

  • Si no marcas tus skills con origin: local, la lista las pondrá todas como de terceros. Añade esa línea a la cabecera de las tuyas.
  • La skill solo mira ~/.claude/skills/. Las de proyecto, en .claude/skills/, no aparecen.
  • Puedes cambiar el valor de origin que cuenta como propio editando el script.

Véase también

Referencias

Footnotes

  1. Extend Claude with skills. Anthropic, documentación de Claude Code. Consultado el 2026-10-10. ↩ ↩2 ↩3