Desarrollo e IA Guía
Skills, subagentes, hooks y plugins de Claude Code: guía práctica
Qué es cada pieza, cuándo conviene usarla y cómo crear la primera con ejemplos de la documentación oficial de Anthropic.
Claude Code funciona bien recién instalado, pero donde realmente marca la diferencia es cuando se adapta a cada equipo. Para eso ofrece cuatro piezas que conviene no confundir: skills, subagentes, hooks y plugins. Esta guía explica qué es cada una, cuándo usarla y cómo crear la primera con ejemplos sacados de la documentación oficial.
¿Qué diferencia hay entre skills, subagentes, hooks y plugins?
- Skill: un archivo
SKILL.mdcon instrucciones que Claude carga cuando son relevantes o cuando lo invocas con/nombre. Sirve para enseñarle procedimientos. - Subagente: un asistente especializado con su propia ventana de contexto, sus herramientas y su prompt de sistema. Sirve para delegar trabajo sin ensuciar la conversación principal.
- Hook: un comando que Claude Code ejecuta siempre en un punto concreto de su ciclo de vida. Sirve para imponer reglas de forma determinista.
- Plugin: un paquete que agrupa skills, subagentes, hooks y servidores MCP para instalarlos de una vez y compartirlos.
La regla práctica: si repites las mismas instrucciones en el chat, crea una skill; si una tarea genera mucho ruido (logs, búsquedas, tests), delégala en un subagente; si algo debe ocurrir siempre sin depender de que el modelo se acuerde, usa un hook; y si quieres repartirlo al equipo, empaquétalo en un plugin.
¿Cómo se crea una skill en Claude Code?
Una skill es una carpeta con un SKILL.md: cabecera YAML y cuerpo en Markdown. El único campo recomendado es description, porque Claude lo usa para decidir cuándo cargarla. Este ejemplo de la documentación resume los cambios sin commitear y se guarda en ~/.claude/skills/summarize-changes/SKILL.md:
---
description: Summarizes uncommitted changes and flags anything risky. Use when the user asks what changed, wants a commit message, or asks to review their diff.
---
## Current changes
!`git diff HEAD`
## Instructions
Summarize the changes above in two or three bullet points, then list any risks you notice.
La línea que empieza por ! es inyección de contexto dinámico: Claude Code ejecuta el comando e inserta la salida antes de que el modelo lea la skill. Después basta con preguntar «¿qué he cambiado?» o escribir /summarize-changes.
Dónde guardarlas: ~/.claude/skills/ para uso personal en todos los proyectos y .claude/skills/ dentro del repositorio para compartirlas con el equipo. Un detalle importante: los antiguos comandos personalizados de .claude/commands/ se han fusionado con las skills y siguen funcionando igual. Campos útiles del frontmatter son disable-model-invocation: true (solo se invoca a mano, ideal para un /deploy), allowed-tools y model.
Además de ahorrar repeticiones, las skills ahorran tokens: su cuerpo solo se carga cuando se usan. Por eso Anthropic recomienda mover instrucciones específicas del CLAUDE.md a skills.
¿Qué son los subagentes y cuándo usarlos?
Cada subagente trabaja en su propio contexto y devuelve solo el resultado. Así, la salida de una búsqueda extensa o de una batería de tests no llena la conversación principal. Claude Code trae varios integrados: Explore (búsqueda rápida en el código, solo lectura), Plan (investigación durante el modo plan, también de solo lectura) y general-purpose (tareas de varios pasos con todas las herramientas).
Lee también: Mods de Claude Code: ya se puede reprogramar el agente por dentro
Crear uno propio es escribir un Markdown con frontmatter. Ejemplo oficial, en .claude/agents/code-reviewer.md:
---
name: code-reviewer
description: Reviews code for quality and best practices
tools: Read, Glob, Grep
model: sonnet
---
You are a code reviewer. When invoked, analyze the code and provide
specific, actionable feedback on quality, security, and best practices.
Solo name y description son obligatorios. Limitar tools a herramientas de lectura impide que un revisor modifique código, y fijar model: haiku en tareas sencillas reduce costes. Los subagentes de proyecto viven en .claude/agents/ y los personales en ~/.claude/agents/. También puedes pedírselo a Claude en lenguaje natural: «crea un subagente revisor de seguridad en .claude/agents».
Pueden ejecutarse en primer plano, bloqueando la conversación hasta terminar, o en segundo plano mientras sigues trabajando. Con Ctrl+B se manda una tarea en curso al segundo plano.
¿Qué son los hooks de Claude Code?
Los hooks son comandos que se ejecutan en eventos concretos: antes de usar una herramienta (PreToolUse), después (PostToolUse), al enviar un prompt (UserPromptSubmit), al iniciar sesión (SessionStart), cuando Claude necesita atención (Notification) o cuando termina de responder (Stop), entre muchos otros. Su valor es que son deterministas: no dependen de que el modelo decida hacerlo.
El ejemplo clásico formatea con Prettier cada archivo que Claude edita. Se añade al .claude/settings.json del proyecto:
{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{
"type": "command",
"command": "jq -r '.tool_input.file_path' | xargs npx prettier --write"
}
]
}
]
}
}
Para bloquear acciones se usa PreToolUse: si el script termina con código de salida 2, la acción se cancela y Claude recibe el motivo por stderr. La documentación incluye un script que impide editar .env, package-lock.json o cualquier cosa dentro de .git/. Además del tipo command, existen hooks http, mcp_tool, prompt (una evaluación con un modelo) y agent (experimental). El comando /hooks muestra los configurados.
¿Cómo se instalan plugins en Claude Code?
Un plugin es un directorio con un manifiesto en .claude-plugin/plugin.json y sus componentes. Se instalan desde marketplaces, que son catálogos. Claude Code añade el marketplace oficial de Anthropic, claude-plugins-official, la primera vez que se abre una sesión interactiva. Para explorarlo, escribe /plugin y entra en la pestaña Discover.
Al instalar se elige ámbito: usuario (todos tus proyectos), proyecto (todo el equipo, vía .claude/settings.json versionado) o local (solo tú en ese repositorio). Dos cautelas: un plugin activo añade los nombres y descripciones de sus skills y agentes al contexto de cada turno, aunque no se use, y todo lo que ejecuta lo hace con tus permisos. Instala solo de fuentes de confianza y desactiva lo que no uses.
Desde el 1 de octubre, los plugins pueden incluir además mods: código JavaScript o TypeScript que se ejecuta dentro de Claude Code y puede dibujar paneles o interceptar llamadas a herramientas. Lo contamos en detalle en nuestra noticia sobre su lanzamiento.
Una configuración de partida para un equipo
- Un
CLAUDE.mdcorto con comandos de build, test y convenciones. - Skills de proyecto para los procedimientos repetidos: revisión de PR, despliegue a staging, creación de migraciones.
- Un subagente revisor de solo lectura y otro para ejecutar tests con un modelo barato.
- Hooks de formateo tras cada edición y de bloqueo de archivos sensibles.
- Todo ello empaquetado en un plugin interno cuando el equipo crezca.