Extender Claude Code: subagentes, hooks, skills y MCP
Añadir a la app de práctica un hook, un subagente, una skill y un servidor MCP
Por Antonio HerreraPublicada en octubre 20265 min de lectura
11/13
Qué vas a conseguir: ampliar Claude Code con las cuatro piezas que lo convierten en tu herramienta: un servidor MCP, un hook, un subagente y una skill.
Tiempo: 40 minutos. Necesitas: Node.js instalado (para el hook de ejemplo). Todos los ficheros están listos para copiar en ejemplos/ del repositorio, y el proyecto completo en soluciones/fase-09/.
Las cuatro piezas, en una línea
MCP
Conecta Claude con herramientas y datos externos. El mismo estándar que los conectores de la fase 4.
Hook
Un comando que se ejecuta siempre en un momento concreto, por ejemplo tras cada edición.
Subagente
Un especialista con sus propias instrucciones y herramientas, que trabaja en un contexto aparte.
Skill
Un procedimiento reutilizable que invocas con /nombre o que Claude usa cuando encaja.
Paso 1 · Añade un servidor MCP
Fuera de Claude Code (o con ! delante), en la carpeta del proyecto:
terminal
claude mcp add --transport http deepwiki --scope project https://mcp.deepwiki.com/mcp
Con --scope project se guarda en .mcp.json, un fichero que puedes subir al repositorio para que todo el equipo tenga el mismo servidor. Sin esa opción queda solo para ti.
Al abrir Claude Code, te pedirá aprobar el servidor del proyecto. Elige Use this MCP server:
Por seguridad, los servidores que vienen en un repositorio necesitan tu aprobación. Revisa siempre de dónde viene un servidor antes de usarlo./mcp muestra los servidores activos. Fíjate: también aparecen los conectores de tu cuenta de claude.ai, como el DeepWiki que añadimos en la fase 4. Claude Code avisa de que es el mismo servidor y usa uno solo.
Úsalo:
Claude Code
Usa el servidor MCP deepwiki para explicarme en 3 líneas qué es el repositorio Fission-AI/OpenSpec.
Cada herramienta MCP pide permiso y muestra exactamente qué va a enviar.La respuesta, según DeepWiki. Y de paso, ya sabemos qué es OpenSpec para la fase 10.
Paso 2 · Añade un hook
Vamos a anotar en un registro cada fichero que Claude edita. Primero, el script (requiere Node.js):
PostToolUse + matcher "Edit|Write": se ejecuta justo después de que Claude edite o cree un fichero.
command + args («forma exec»): lanza Node directamente, sin pasar por una terminal, así que funciona igual en Windows, macOS y Linux.
${CLAUDE_PROJECT_DIR}: la carpeta del proyecto. Úsala siempre: en nuestra primera prueba pusimos una ruta relativa y el hook falló cuando Claude trabajó desde otra carpeta.
/hooks lista los hooks activos (es de solo lectura; para cambiarlos se edita el settings.json o se le pide a Claude).
Pide un cambio pequeño y comprueba el registro con el modo shell:
Claude Code
Añade debajo de la lista un pie de página discreto con el texto «Hecho con Claude Code». Es un cambio pequeño: no hace falta plan.
El hook ha anotado cada edición. En Windows con Git para Windows, el modo shell usa Bash: por eso cat y no type. Añade .claude/cambios.log al .gitignore.
Paso 3 · Crea un subagente
Un revisor de accesibilidad que solo lee y nunca modifica:
.claude/agents/revisor-accesibilidad.md
---
name: revisor-accesibilidad
description: Revisa la accesibilidad de páginas HTML (contraste, etiquetas, teclado,
textos alternativos). Úsalo después de cambiar la interfaz.
tools: Read, Grep, Glob
model: sonnet
---
Eres un experto en accesibilidad web (WCAG 2.2, nivel AA).
Cuando te invoquen, revisa los ficheros HTML y CSS del proyecto y devuelve:
1. Un resumen de una línea con el estado general.
2. Como máximo 5 problemas, ordenados por gravedad, con fichero, línea y cómo arreglarlo.
3. Lo que ya está bien hecho, en una línea.
Responde siempre en español. No modifiques ficheros: solo revisa.
description: cuándo debe usarlo Claude. Es lo más importante.
tools: solo lectura. Así no puede cambiar nada aunque quiera.
model: puede usar un modelo distinto, más ligero, para ahorrar.
Claude Code
Usa el subagente revisor-accesibilidad para revisar index.html.
Una revisión concreta, con líneas y medidas de contraste. Y como el CLAUDE.md lo pide, Claude propone un plan antes de corregir nada.
Paso 4 · Crea una skill
Una skill para redactar las novedades de la app a partir de los commits:
.claude/skills/novedades/SKILL.md
---
name: novedades
description: Redacta la entrada de novedades (changelog) a partir de los últimos
commits. Úsala cuando el usuario pida las novedades, el changelog o qué ha cambiado.
argument-hint: "[número de commits]"
---
## Últimos commits
!`git log --oneline -n 10`
## Instrucciones
Con los commits anteriores (o los $ARGUMENTS últimos), redacta una entrada para NOVEDADES.md:
- Un título con la fecha de hoy.
- Novedades en «Añadido», «Cambiado» y «Corregido» (omite los grupos vacíos).
- Frases cortas, en español y pensadas para el usuario de la app.
Añade la entrada al principio de NOVEDADES.md (créalo si no existe) y enséñame el resultado.
La línea !`git log …` se ejecuta antes de que Claude lea la skill, así que recibe los commits ya escritos. Para tener commits que resumir, pide antes: «Haz commit de todos los cambios pendientes con un mensaje descriptivo».
Un detalle de los permisos: aunque git status está permitido, este comando encadena varios con &&, así que pide aprobación. Las reglas solo cubren lo que dicen exactamente.Tu skill aparece en el menú de comandos con su descripción. Pulsa Enter.NOVEDADES.md, creado a partir de los commits, en lenguaje de usuario y sin mencionar la configuración interna.
✓ Gate 9 — Extensiones activas
✓
DeepWiki está en .mcp.json y lo he usado
✓
El hook anota cada edición en cambios.log
✓
El subagente ha revisado la accesibilidad
✓
/novedades ha creado NOVEDADES.md
✓
He hecho commit de la carpeta .claude y de .mcp.json