Qlcube
Módulo 7 · Skills: usar y crear
9 horas7 / 13
Progreso del curso
54% · Módulo 7 de 13
Módulo 7 · 9 horas

Skills: usar y crear

Una Skill es un paquete de instrucciones, scripts y referencias que Claude Code carga bajo demanda. Sirven para encapsular conocimiento de dominio que reusas: cómo formatear un Excel financiero, cómo redactar un PR de tu equipo, cómo procesar un PDF de factura. Bien diseñadas, te ahorran horas a la semana.

Objetivos

  • Distinguir Skills de slash commands.
  • Conocer las Skills oficiales (pdf, xlsx, pptx, docx, theme-factory, skill-creator).
  • Anatomía de una Skill: SKILL.md + recursos opcionales.
  • Crear una Skill propia bien descrita y con triggers efectivos.
  • Empaquetar y compartir Skills en tu organización.

5.1 Skill vs slash command vs sub-agente

Los tres conceptos solapan pero son distintos. Una comparativa rápida:

MecanismoCómo se invocaContextoIdeal para
Slash commandEl usuario escribe /nombre.Mismo contexto que la sesión.Atajos imperativos del usuario.
SkillEl modelo decide invocarla cuando detecta el trigger.Carga su propio prompt + recursos.Conocimiento que el agente recupera "por sí mismo".
Sub-agenteEl modelo principal delega tarea con Agent.Contexto independiente.Trabajo que se beneficia de aislar contexto.

La diferencia clave: el slash command lo lanza el humano. La Skill la lanza el modelo cuando reconoce un patrón en lo que pides ("hazme un Excel con…" → carga xlsx).

5.2 Skills oficiales de Anthropic

Anthropic mantiene un repositorio de Skills oficiales (anthropic-skills:*) que cubren tareas habituales:

SkillPara qué
pdfLeer, extraer, fusionar, dividir, rotar, sellar PDFs. OCR si es escaneado.
xlsxLeer/escribir Excel y CSV/TSV. Fórmulas, formatos, gráficos, limpieza.
pptxCrear y editar presentaciones. Slides, layouts, notas, comentarios.
docxCrear y editar Word. Cabeceras, índice, tablas, páginas, plantillas.
theme-factoryAplica un tema visual a artifacts (slides, docs, HTML).
web-artifacts-builderConstruye artifacts complejos (React + Tailwind + shadcn).
skill-creatorAsistente para crear, modificar y testear tus propias Skills.

Cómo se invoca una Skill oficial

El modelo decide solo, pero tú puedes guiar:

> Genera un Excel con las ventas del Q1 desde data/ventas.csv,
  añade una pestaña con totales por región, y un gráfico de barras.

Al detectar "Excel", el modelo carga xlsx automáticamente. La Skill aporta el conocimiento concreto de cómo usar la librería openpyxl, qué patrones evitar, formatos comunes.

O puedes invocarla por nombre:

> /xlsx
> Genera un Excel con las ventas del Q1...

Truco: si trabajas con documentos a menudo, ten siempre disponibles las Skills pdf, xlsx, docx y pptx. Las activas instalando el plugin anthropic-skills. Multiplican lo que Claude Code puede entregar como deliverable final.

Practica · empareja cada Skill oficial con su uso

Pulsa una Skill de la izquierda y luego su uso correcto a la derecha. Cuando termines los seis pares, pulsa "Comprobar".

  • pdf
  • xlsx
  • pptx
  • docx
  • theme-factory
  • skill-creator
  • Extraer texto y tablas de un fichero PDF, fusionar varios o aplicar OCR a un escaneado.
  • Crear o editar una hoja de cálculo: fórmulas, formato, gráficos, limpieza de datos.
  • Generar o modificar un slide deck con layouts, notas y comentarios.
  • Producir un Word con índice automático, tablas, encabezados y plantillas.
  • Aplicar una identidad visual coherente a un artifact (slides, doc, HTML).
  • Asistente que te guía para crear, optimizar y testear tus propias Skills.

5.3 Anatomía de una Skill

Una Skill es una carpeta con esta estructura mínima:

my-skill/
├── SKILL.md            ← Manifest: descripción + cuándo activar + cómo usar
├── reference/          ← (opcional) Documentos de referencia que el modelo lee bajo demanda
│   ├── api-snippets.md
│   └── examples.md
└── scripts/            ← (opcional) Scripts ejecutables auxiliares
    └── validate.py

SKILL.md

Es lo único obligatorio. Frontmatter YAML + cuerpo Markdown:

---
name: invoice-qa
description: Validación y resumen de facturas en PDF. Trigger cuando el usuario menciona "factura", "invoice", "albarán" o sube un PDF de factura.
allowed-tools: Read, Bash(pdftotext:*), Bash(jq:*)
version: 1.0.0
---

# Invoice QA

Esta skill se activa cuando el usuario quiere extraer datos estructurados
o validar una factura PDF.

## Cuándo activar

- Frases que mencionen "factura", "invoice", "albarán", "factura recibida".
- Cuando el usuario sube un fichero .pdf con nombre que contenga
  "invoice", "factura", "fra", "fact".

## Pasos

1. Convertir el PDF a texto con pdftotext -layout.
2. Extraer: NIF emisor, NIF receptor, fecha, número, base, IVA, total.
3. Validar:
   - NIF español con dígito de control correcto.
   - base + IVA = total (margen 0,01€).
   - fecha en formato dd/mm/yyyy o yyyy-mm-dd.
4. Devolver un JSON estructurado con los campos extraídos.

## Cuándo NO activar

- Si el PDF tiene una pinta de albarán sin datos fiscales.
- Si el usuario pide "resumir el contenido" — es lectura, no validación.

## Recursos

- reference/nif-validation.md → algoritmo de validación de NIF
- reference/iva-tipos.md → tipos de IVA vigentes en España

Frontmatter de SKILL.md

CampoObligatorioPara qué
nameIdentificador único de la skill.
descriptionEl más importante. Determina cuándo el modelo decide cargar la skill. Escribe esto bien o nunca se activará.
allowed-toolsNoRestringe qué herramientas puede usar la skill. Por defecto, todas.
versionNoSemVer para versionado.

5.4 Escribir una buena description

El description es la decisión binaria de "¿esta skill aplica al prompt actual?". Una description vaga = skill que nunca se activa. Una description que abarca demasiado = skill que se activa cuando no debería.

✗ Mal

description: Procesa documentos.

Demasiado genérico. Compite con muchas otras skills. El modelo no sabrá cuándo cargarla.

✓ Bien

description: Validación y resumen de facturas españolas en PDF. Trigger cuando el usuario mencione "factura", "invoice", "albarán" o suba un PDF cuyo nombre incluya "factura"/"fra"/"invoice".

Estructura recomendada de la description

  1. Qué hace en 1 frase.
  2. Triggers (palabras o patrones que la activan).
  3. Anti-triggers si compite con otras skills.

Ejemplo bien estructurado (de la skill xlsx oficial):

description: Use this skill any time a spreadsheet file is the primary
input or output. This means any task where the user wants to: open, read,
edit, or fix an existing .xlsx, .xlsm, .csv, or .tsv file (e.g., adding
columns, computing formulas, formatting, charting, cleaning messy data);
create a new spreadsheet from scratch or from other data sources; or
convert between tabular file formats. Trigger especially when the user
references a spreadsheet file by name. Do NOT trigger when the primary
deliverable is a Word document, HTML report, standalone Python script, or
database pipeline.

5.5 Tu primera Skill propia

Vamos a crear una Skill llamada pr-summary que resume un pull request al estilo de tu equipo.

Estructura

.claude/skills/pr-summary/
├── SKILL.md
└── reference/
    └── plantilla-pr.md

SKILL.md

---
name: pr-summary
description: Genera el resumen de un Pull Request siguiendo el formato del
  equipo. Trigger cuando el usuario pida "resumen del PR", "PR description",
  "summary del pull request", o cuando esté preparando una descripción de
  PR a partir de un branch con commits.
allowed-tools: Bash(git diff:*), Bash(git log:*), Read
version: 1.0.0
---

# PR Summary

Esta skill se activa al preparar la descripción de un Pull Request.
Sigue la plantilla del equipo (ver reference/plantilla-pr.md).

## Pasos

1. Ejecutar git log origin/main..HEAD --oneline para listar commits del branch.
2. Ejecutar git diff --stat origin/main..HEAD para resumir cambios.
3. Leer reference/plantilla-pr.md para conocer la estructura.
4. Generar la descripción rellenando:
   - Resumen ejecutivo (1-2 frases, qué problema resuelve)
   - Cambios clave (3-5 bullets)
   - Test plan (qué se ha verificado)
   - Riesgos (qué podría romperse)
   - Issue/Ticket vinculado (si lo hay en commits)

## Cuándo NO activar

- Para code review (usar /review).
- Para análisis de seguridad (usar /security-review).

## Output

Devuelve la descripción lista para copiar y pegar en GitHub/GitLab.
NO abre el PR. NO hace push. Solo genera el texto.

reference/plantilla-pr.md

# Plantilla de PR del equipo

## Resumen
<1-2 frases. Qué problema resuelve este PR. Lenguaje no técnico.>

## Cambios clave
- ...
- ...

## Test plan
- [ ] Tests unitarios pasan (npm test)
- [ ] Verificación manual: ...
- [ ] No se ha tocado: ...

## Riesgos
<Qué podría romperse, qué requiere atención del reviewer.>

## Ticket
Closes #123 (si aplica)

Una vez creada, prueba:

> Prepárame un resumen de mi PR actual

Verás cómo el agente reconoce el trigger y carga la skill. Si por algún motivo no la carga, puedes invocarla:

> /pr-summary

5.6 Skill con scripts auxiliares

Para tareas con lógica determinista (validar un NIF, parsear un formato muy concreto), es buena idea poner un script en scripts/ y referenciarlo en SKILL.md:

my-skill/
├── SKILL.md
└── scripts/
    └── validate-nif.py

En el SKILL.md:

## Validación

Para validar el dígito de control del NIF, usa el script auxiliar:

  python scripts/validate-nif.py <NIF>

Devuelve "OK" o "INVALID". El algoritmo está implementado correctamente
y testado — no reimplementes la validación a mano.

Esto evita que el modelo invente la lógica de validación cada vez (con riesgo de equivocarse). Le das una herramienta determinista y le pides que la use.

5.7 Empaquetar y distribuir Skills

Tres niveles de instalación:

Nivel 1 · Repo (versionada)

Carpeta .claude/skills/ dentro del repositorio. Pertenece al equipo, viaja con el código. Solo está disponible cuando trabajas en ese repo.

Nivel 2 · Usuario (global personal)

Carpeta ~/.claude/skills/. Disponible en todas tus sesiones, en cualquier repo. Útil para tus skills personales.

Nivel 3 · Plugin

Empaquetadas en un plugin, instalables a nivel organización. Requiere un fichero plugin.json en la raíz:

{
  "name": "qlcube-skills",
  "version": "1.0.0",
  "description": "Skills internas de Qlcube para flujo de trabajo de ingeniería",
  "skills": ["pr-summary", "release-notes", "fundae-validation"]
}

Se distribuye como fichero .plugin que cada miembro del equipo instala con /install-plugin.

Para empezar: nivel 1 (repo). Pon tus primeras 2-3 skills en .claude/skills/ versionado y deja que el equipo las use. Cuando tengas 10+ skills útiles, considera empaquetar en plugin.

5.8 Anti-patrones de Skills

  • Skills demasiado generales. "Helper general" no es una skill, es ruido. Las skills resuelven UN problema concreto.
  • Description redactada para el humano, no para el modelo. El modelo lee la description para decidir si cargar. Escríbela orientada a triggers, no a marketing.
  • Skill que sustituye al razonamiento. Si tu skill dice "haz X y Y", el modelo lo hace, pero no aprende a generalizar. Mejor una skill que ofrezca plantillas y herramientas y deje al modelo decidir.
  • No actualizar el version. Si cambias una skill significativamente, sube version. Te ayuda a depurar bugs en el equipo.
  • Hacer que la skill commitee o pushee. Las skills generan, no publican. Mantén la separación.

Práctica

Ejercicio 5.1 · Detectar triggers

Lee la skill oficial xlsx (en su SKILL.md). Identifica:

  1. 3 frases del usuario que cargarían la skill.
  2. 2 frases que NO la cargarían (anti-triggers).
  3. ¿Qué herramienta usa principalmente para crear Excels?

Ejercicio 5.2 · Crea una Skill propia

Crea .claude/skills/release-notes/SKILL.md que genere notas de release a partir de:

  • git log v1.0.0..HEAD --oneline
  • Tags y branches del repo
  • Mensajes de commit del estilo conventional commits

El output debe ser Markdown con secciones Features, Fixes, Breaking changes. Cuida especialmente la description.

Ejercicio 5.3 · Probar tu Skill

Prueba la skill release-notes con dos frases distintas:

  1. "Genera las release notes de la próxima versión."
  2. "Resúmeme los commits del último mes."

¿En cuál se carga? ¿Por qué? Si no se carga en una de las dos, ¿cómo ajustas la description?

Test de comprensión

1. ¿Quién decide cargar una Skill?

  1. Siempre el usuario, escribiendo el comando.
  2. El modelo, basándose en el description.
  3. El sistema operativo.
  4. Las dos primeras: el usuario por nombre, o el modelo automáticamente.

Respuesta correcta: D. El modelo carga la skill por sí mismo cuando el prompt cumple los triggers de la description. El usuario también puede invocarla por nombre.

2. ¿Cuál es el campo más importante del frontmatter de SKILL.md?

  1. name
  2. version
  3. description
  4. allowed-tools

Respuesta correcta: C · description. Determina cuándo el modelo carga la skill. Una description mal escrita = skill invisible.

3. Quieres que la skill solo pueda leer ficheros y ejecutar git diff. ¿Qué frontmatter usas?

  1. tools: read, bash
  2. allowed-tools: Read, Bash(git diff:*)
  3. permissions: { allow: ["read"] }
  4. No se puede restringir herramientas en una skill.

Respuesta correcta: B. allowed-tools con la sintaxis estándar permite acotar exactamente qué puede hacer la skill.

4. ¿Cuándo merece la pena empaquetar tus skills en un plugin?

  1. Siempre desde la primera skill.
  2. Cuando tienes 10+ skills útiles a nivel organización.
  3. Solo si las publicas como open source.
  4. Nunca, los plugins son legacy.

Respuesta correcta: B. Para 1-3 skills, ponerlas en .claude/skills/ en el repo es suficiente. Empaquetar en plugin tiene sentido cuando el conjunto es grande y debe distribuirse a varios equipos / repos.

Resumen

  • Skill = paquete de instrucciones + recursos que el modelo carga bajo demanda.
  • Skills oficiales: pdf, xlsx, pptx, docx, theme-factory, web-artifacts-builder, skill-creator.
  • Anatomía: SKILL.md + opcional reference/ + scripts/.
  • El campo description manda. Estructúralo: qué hace + triggers + anti-triggers.
  • Distribución: .claude/skills/ en repo, ~/.claude/skills/ personal, plugins para org.

Siguiente módulo: subagentes. Cómo Claude Code delega tareas a versiones especializadas de sí mismo y aprovechar el paralelismo.

0 / 0Respondidas
0 / 0Aciertos
% de acierto