Blog · 6 de julio de 2026
Domina cómo extender Claude Code: plugins, subagentes, hooks y el marketplace oficial para llevar tus workflows de desarrollo al siguiente nivel.
¿Te imaginas delegar tareas repetitivas de ingeniería a agentes especializados y que, además, puedas instalarlos como si fueran extensiones? Claude Code ya lo permite: plugins, subagentes (subagents), hooks y un marketplace para compartir y reutilizar componentes. Esto cambia la forma en que automatizas revisiones, formateo, despliegues y flujos de trabajo CI/CD. Actualizado a 6 de julio de 2026.
¿No es mejor aprovechar componentes probados que reinventar la rueda cada vez?
Claude Code: herramienta/cliente de Anthropic orientado a developer-agents — permite crear agentes que interactúan con repositorios, terminal y herramientas de desarrollo. Las capacidades de extensibilidad incluyen plugins, subagents, hooks y MCP servers. (code.claude.com)
Plugins: paquetes instalables que agrupan skills, agentes, hooks y servidores MCP. Se instalan localmente y se copian al caché de plugins para seguridad. Son la unidad de distribución oficial para compartir automatizaciones. (code.claude.com)
Subagents (sub-agents): agentes secundarios con configuración propia (modelo, habilidades precargadas, límites). Útiles para tareas especializadas — p. ej. un subagent que solo hace refactorings o generación de tests. (code.claude.com)
Hooks: scripts o llamadas HTTP que se disparan ante eventos del ciclo de vida (archivo editado, tarea terminada, antes/después de herramienta). Pueden ser síncronos o asíncronos. Se usan para integrar linters, runners, envíos a CI, etc. (code.claude.com)
Marketplace: canal (in-app) para publicar plugins oficiales; el proceso copia y verifica el plugin antes de instalarlo en el cache local del usuario. (code.claude.com)
¿Listo para ver cómo combinarlos en proyectos reales?
Ejecuta la guía oficial (comprueba docs antes de correr instaladores). Por ejemplo, en muchos entornos Claude Code se instala con un instalador nativo (consulta la URL oficial). Revisa la versión disponible y el canal (Pro, Team, Enterprise) porque algunas capacidades empresariales pueden variar con el plan. (techcrunch.com)
# Lista plugins en Claude Code
claude code plugin list
# (Este comando puede variar; verifica `claude code --help` si tu versión lo cambia)
# Sintaxis de ejemplo — revisa los nombres exactos en tu versión
claude code plugin install official/example-plugin
Consejo: Claude Code copia los plugins al cache local (~/.claude/plugins/cache) para revisión y seguridad. Revisa los archivos del plugin antes de confiarle permisos. (code.claude.com)
Un plugin agrupa directorios como agents/, skills/, hooks/, mcp/. A continuación un ejemplo mínimo de estructura y archivo plugin.json (formato referencial — valida con la docs oficial antes de publicar).
{
"name": "mi-plugin-ejemplo",
"version": "0.1.0",
"description": "Plugin que añade un hook de formato y un subagent básico",
"directories": ["agents","skills","hooks"]
}
Guarda esto en la raíz del plugin y añade los subdirectorios con la lógica.
Ejemplo de subagent que usa un modelo específico y carga skills:
# .claude/agents/refactor-agent.yaml
name: refactor-agent
model: sonnet-5
preload_skills:
- code-analysis
- unit-test-generator
timeout_seconds: 300
# Estos campos están basados en la referencia oficial; verifica el esquema válido en la docs.
Cuando el agente principal invoque este subagent, Claude Code resolverá el modelo según el orden documentado y cargará las skills precargadas. (code.claude.com)
Ejemplo de hook que corre ESLint después de una edición de archivos JavaScript (hook local script):
#!/usr/bin/env bash
# .claude/hooks/post-edit-eslint.sh
# Entrada: variables de entorno y JSON stdin con información del evento
# SALIDA: código 0 para éxito, distinto de 0 para fallo y detener flujo
repo_root="${CLAUDE_REPO_ROOT:-.}"
cd "$repo_root" || exit 1
# Instalación local asumida; en CI usar node_modules/.bin/eslint
npx eslint "src/**/*.js" --fix
exit $?
Registra el hook en el manifest del plugin (ejemplo resumido):
{
"hooks": [
{ "event": "PostFileEdit", "script": "hooks/post-edit-eslint.sh" }
]
}
Los hooks reciben variables de entorno exportadas por Claude Code y pueden usar JSON stdin con el payload del evento. Revisa las variables expuestas (CLAUDE_PLUGIN_ROOT, CLAUDE_REPO_ROOT, etc.). (code.claude.com)
Archivo: hooks/http-notify.js
// hooks/http-notify.js
// Este script se puede invocar como hook HTTP por Claude Code
// Requiere: NODE env con SLACK_WEBHOOK_URL
const https = require('https')
const webhook = process.env.SLACK_WEBHOOK_URL
if (!webhook) {
console.error('No SLACK_WEBHOOK_URL set')
process.exit(2)
}
const payload = JSON.stringify({ text: 'Claude Code: evento de hook recibido ✅' })
const url = new URL(webhook)
const options = { method: 'POST', hostname: url.hostname, path: url.pathname + url.search }
const req = https.request(options, res => {
res.on('data', () => {})
res.on('end', () => process.exit(res.statusCode >= 400 ? 3 : 0))
})
req.on('error', e => { console.error(e); process.exit(4) })
req.write(payload)
req.end()
Registra el hook como HTTP en el manifest para un evento como SubagentFinished.
{
"name": "test-runner",
"model": "sonnet-5",
"preload_skills": ["test-runner-skill"],
"entrypoint": "skills/run-tests.js",
"timeout_seconds": 600
}
Y un skill simple skills/run-tests.js que ejecuta pytest o npm test según el repo.
// skills/run-tests.js
const { execSync } = require('child_process')
try {
// Detecta pytest o npm test
execSync('pytest -q', { stdio: 'inherit' })
process.exit(0)
} catch (e) {
try { execSync('npm test', { stdio: 'inherit' }); process.exit(0) } catch (err) { process.exit(1) }
}
El subagent devuelve código de salida que Claude Code puede usar para decidir pasos siguientes.
commands/create-ticket.sh (bash que usa GitHub CLI para crear un issue):
#!/usr/bin/env bash
# commands/create-ticket.sh
# Parsea stdin JSON proporcionado por Claude Code
read -r payload
# Aquí parsearías el JSON (jq es práctico)
summary=$(echo "$payload" | jq -r '.summary')
repo="owner/repo"
if [ -z "$summary" ] || [ "$summary" = "null" ]; then
echo "No summary provided"; exit 2
fi
# Usa gh CLI para crear issue; requiere gh auth previa
gh issue create --repo "$repo" --title "$summary" --body "Creado por Claude Code via plugin"
Registra como una slash command en el plugin para que el agent pueda invocarla desde la conversación.
| 🔧 Concepto | ¿Dónde vive? | ¿Cuándo usarlo? | Ejemplo práctico |
|---|---|---|---|
| Plugin | Carpeta raíz del plugin (installable) | Reutilizar colecciones de skills/hooks/subagents | Plugin que agrega CI+lint automáticos. |
| Subagent | .claude/agents/ o dentro del plugin |
Tareas especializadas con modelo/config propio | Subagent para generación de tests unitarios. |
| Hook | hooks/ en plugin o script local |
Ejecutar acciones ante eventos (PostEdit, SubagentFinished) | Ejecutar ESLint o notificar Slack. |
| MCP server | Binaries/servicio local | Integraciones complejas, LSP-like servers | Servidor que expone un tool stateful. |
(Tabla basada en la documentación y guías oficiales de Claude Code). (code.claude.com)
Seguridad: los plugins se copian al caché local, pero contienen scripts que se ejecutan con permisos del desarrollador. Revisa el código antes de instalar plugins públicos. No confíes ciegamente. (code.claude.com)
Verificación de firmas/autoría: el marketplace ofrece un canal de publicación, pero verifica la reputación del autor para componentes críticos.
Autonomía y pruebas: los subagents pueden ejecutar código destructivo si no se diseñan con límites y checkpoints. Usa modos de aprobación manual antes de permitir escrituras masivas.
Costes y modelos: invocar subagents con modelos grandes (p. ej. Sonnet/Fable/Opus según nomenclatura de Anthropic) puede implicar costos por token. Revisa tus límites y precios antes de automatizar procesos que generen muchas llamadas. (Ej.: Anthropic publica precios por modelo y token; confirma en la consola de facturación de tu cuenta). (itpro.com)
sudo o alteren infra sensible.¿Quieres un ejemplo de plugin listo para clonar y probar en 15 minutos? Yo lo tengo en mi repositorio de ejemplos (recuerda revisar la versión de Claude Code antes de ejecutar). Si no puedes correr algo, revisa la docs y verifica comandos exactos porque la CLI y nombres de eventos pueden cambiar entre versiones. (code.claude.com)
¿Quieres que te entregue un plugin de ejemplo (zip) con hooks y subagent listo para probar en un repo Node/Python? Puedo generarlo con instrucciones y tests básicos.