El martes pasado publiqué tres artículos del blog desde la cola del supermercado. No copié y pegué nada, no abrí el portátil, no tenía ni la app de Claude abierta. Mandé un mensaje de WhatsApp: «revisa los borradores pendientes, arregla los enlaces internos que apunten a slugs que no existen y publica los que estén listos». Once minutos después me llegó la respuesta con los tres títulos, los enlaces corregidos y el hash de los commits. El trabajo lo hizo Claude Code en un VPS de 7€ al mes. Quien recibió la orden, entendió qué había que hacer y le pasó el marrón fue OpenClaw.
Eso es todo lo que hace una «skill de OpenClaw para manejar Claude Code»: unir esas dos piezas. Y aquí viene la parte que nadie te dice: no es un producto que compres ni un plugin que instales con un clic. Es una carpeta con tres ficheros que escribes tú en una tarde. En este post te cuento exactamente cómo la tengo montada, con los scripts, los permisos, lo que casi me la juega y los cinco comandos que uso de verdad cada semana. Aviso honesto: OpenClaw es software joven y se mueve rápido, así que los nombres exactos de comandos de instalación conviene verificarlos en su documentación oficial el día que lo montes. La arquitectura, en cambio, no cambia.
Qué es esto exactamente (y qué no es)
- Skill de OpenClaw
- Carpeta con un archivo SKILL.md (instrucciones en lenguaje natural) y scripts asociados que OpenClaw carga para ampliar lo que su agente puede hacer. Sigue el mismo formato de Agent Skills que usa Claude, así que una skill bien escrita sirve en los dos entornos.
Vamos con las piezas, porque veo mucha confusión.
OpenClaw es un asistente personal open source que corre en tu máquina o en un servidor tuyo. Su gracia es que se conecta a canales que ya usas —WhatsApp, Telegram, Discord— y actúa como puerta de entrada a tu agente. Tú escribes en lenguaje natural, él decide qué hacer.
Las skills son la forma de ampliar lo que sabe hacer. Cada skill es una carpeta con un archivo SKILL.md (instrucciones en texto plano, con un frontmatter que dice cómo se llama y cuándo usarla) y, opcionalmente, scripts que puede ejecutar. El formato es prácticamente el mismo de las Agent Skills de Anthropic, así que si ya has escrito una para Claude, esto te va a sonar. Si quieres ver el ecosistema, en los 15 mejores skills para emprendedores repaso las que sí valen la pena descargar hechas.
Claude Code tiene un modo no interactivo (headless) que es la clave de todo: claude -p "tu instrucción". Le pasas la tarea, trabaja solo, devuelve el resultado por stdout. Sin interfaz, sin que tú estés delante.
La skill que te voy a enseñar es el pegamento entre esas dos cosas. Traduce «publica los borradores» en «lanza Claude Code en la carpeta del blog con estas instrucciones y avísame cuando acabe».
Y lo que no es: no es autonomía total, no sustituye tu criterio y no es sitio para tocar producción sin mirar. Es un mando a distancia, no un piloto automático.
Lo que necesitas antes de empezar
No te montes esto sin tener estas cuatro cosas resueltas:
- Un sitio donde vivan los agentes. Puede ser tu portátil, pero entonces solo funciona cuando lo tienes encendido. Yo uso un VPS pequeño. Lo cuento en detalle en Claude Code en un servidor con 6 agentes 24/7.
- Claude Code instalado y autenticado en esa máquina, con una suscripción que aguante volumen.
- Node.js reciente (OpenClaw corre sobre Node/Bun).
- Un número de WhatsApp o una cuenta de Telegram que uses solo para esto. Yo empecé con Telegram porque es menos frágil para pruebas.
Esto es lo que me cuesta el montaje al mes:
| Pieza | Para qué | Coste real (con IVA) |
|---|---|---|
| Claude Max (plan medio) | El cerebro que ejecuta las tareas | ~100-110€/mes |
| VPS 4 GB en Hetzner | Donde viven OpenClaw y Claude Code | ~7€/mes |
| OpenClaw | El mando a distancia | 0€ (open source) |
| WhatsApp / Telegram | El canal | 0€ |
| Dominio + varios | Sostener el resto del negocio | ~30€/mes |
| Total stack | ~150€/mes |
Si tu hora vale 30€, este montaje se paga con cinco horas ahorradas al mes. Yo recupero bastante más que eso, pero de números hablamos al final.
Paso 1: prepara la máquina
Entra por SSH y crea un usuario dedicado, sin sudo. Esto no es paranoia: es lo primero que hace que puedas dormir tranquilo.
adduser agentes
# NO lo metas en el grupo sudo
su - agentes
Instala Claude Code para ese usuario y autentícalo:
npm install -g @anthropic-ai/claude-code
claude
# sigue el flujo de login con tu cuenta y sal con /exit
Instala también tmux. Lo vamos a usar para que las tareas largas sobrevivan a que se cierre la conexión:
sudo apt install tmux # esto lo haces con tu usuario admin, no con "agentes"
Y prepara las carpetas de trabajo. Yo tengo una por proyecto y cada una con su CLAUDE.md, que es donde de verdad se define cómo trabaja el agente. Si el CLAUDE.md es flojo, la skill de OpenClaw te va a dar resultados flojos, por muy bien que la montes.
Paso 2: instala OpenClaw
En mi última instalación fue tan simple como lanzar el onboarding con npx y responder preguntas:
npx openclaw@latest onboard
El asistente te pregunta qué canal quieres conectar, qué modelo usar como cerebro del gateway y dónde guardar la configuración (en mi caso, ~/.openclaw/). Para WhatsApp emparejas escaneando un QR; para Telegram, con el token de un bot que creas en BotFather.
Lo primero que debes hacer después de instalar, antes que cualquier otra cosa: la lista blanca. En la configuración hay una sección de canales donde defines quién puede hablar con el agente. Deja solo tu número. Un agente que ejecuta comandos en tu servidor y que responde a cualquiera que le escriba no es una herramienta, es un incidente esperando fecha.
Déjalo corriendo como servicio para que arranque solo:
npx openclaw gateway install
systemctl --user status openclaw
Prueba mandándole «hola». Si te contesta, ya tienes el mando. Ahora vamos a darle el botón que importa.
Paso 3: crea la skill
Estructura de carpetas:
~/.openclaw/skills/claude-code/
├── SKILL.md
└── scripts/
├── run.sh
├── status.sh
└── stop.sh
El SKILL.md es lo que lee el agente para saber cuándo y cómo usar esto. Este es el mío, resumido:
---
name: claude-code
description: Lanza, consulta y detiene tareas de Claude Code en el servidor. Úsala cuando Pablo pida escribir o revisar código, trabajar en el blog, analizar datos de un proyecto o lanzar cualquier tarea larga sobre un repositorio.
---
# Manejar Claude Code en remoto
## Proyectos disponibles
- `blog` → /home/agentes/proyectos/blog
- `web` → /home/agentes/proyectos/web
- `datos` → /home/agentes/proyectos/analitica
## Cómo lanzar una tarea
Ejecuta: `scripts/run.sh "<instrucción completa>" <proyecto>`
Devuelve un ID de sesión. Dáselo a Pablo siempre.
## Cómo consultar
`scripts/status.sh <id>` devuelve las últimas líneas del log.
## Reglas obligatorias
1. Nunca lances una tarea sin proyecto explícito. Si no lo dice, pregunta.
2. Reformula la instrucción de Pablo en algo concreto y accionable antes de pasarla.
3. Si la orden implica borrar ficheros, tocar la rama main o desplegar, NO la lances: pide confirmación explícita con la palabra CONFIRMO.
4. Resume el resultado en menos de 6 líneas. Pablo lee esto en el móvil.
5. Si la tarea lleva más de 15 minutos sin acabar, avisa.
Fíjate en el punto 3. Ese párrafo me ha salvado dos veces.
Paso 4: el script que hace el trabajo
scripts/run.sh. Quince líneas y ya está:
#!/usr/bin/env bash
set -euo pipefail
TASK="$1"
PROJECT_KEY="${2:-blog}"
BASE="/home/agentes/proyectos"
LOGDIR="/home/agentes/logs"
ID="cc-$(date +%Y%m%d-%H%M%S)"
case "$PROJECT_KEY" in
blog) DIR="$BASE/blog" ;;
web) DIR="$BASE/web" ;;
datos) DIR="$BASE/analitica" ;;
*) echo "Proyecto no permitido: $PROJECT_KEY"; exit 1 ;;
esac
mkdir -p "$LOGDIR"
cd "$DIR"
git checkout -b "agente/$ID" >/dev/null 2>&1 || true
tmux new-session -d -s "$ID" \
"cd $DIR && claude -p '$TASK' --permission-mode acceptEdits > $LOGDIR/$ID.log 2>&1"
echo "Tarea $ID lanzada en $PROJECT_KEY (rama agente/$ID)"
Tres decisiones importantes ahí dentro:
- El
casees una lista blanca de proyectos. El agente no puede lanzar Claude Code en una ruta arbitraria porque el script no se lo permite. Si le mandas otra cosa, sale con error. - La rama de git por tarea. Todo lo que hace el agente es reversible con un
git checkout main. Esto convierte un desastre potencial en una molestia de treinta segundos. --permission-mode acceptEditsen lugar de saltarse todos los permisos. Puede editar ficheros, pero las operaciones más agresivas siguen requiriendo aprobación, así que se quedan paradas en vez de ejecutarse a lo loco.
Y el status.sh, aún más simple:
#!/usr/bin/env bash
ID="$1"
tail -n 25 "/home/agentes/logs/$ID.log"
tmux has-session -t "$ID" 2>/dev/null && echo "[EN CURSO]" || echo "[TERMINADA]"
Dale permisos de ejecución (chmod +x scripts/*.sh), reinicia el gateway de OpenClaw y prueba: «lanza en blog una tarea para listar los posts sin meta description». Si te devuelve un ID, ya lo tienes funcionando.
¿Quieres ver el sistema por dentro?
Cada domingo cuento qué he montado esta semana para hacer crecer un proyecto real: qué decidí, qué resultados dio y qué se rompió por el camino.
Un correo por semana. Sin refritos y sin afiliados.
Paso 5: permisos, o cómo casi la lío
La segunda semana le pedí «limpia los borradores viejos del blog». El agente interpretó «limpia» como «borra». Y borró. Nueve ficheros. Los recuperé porque estaban en una rama de git y porque tengo backup diario del VPS, pero el sudor frío fue real.
Lo que cambié después:
- La regla del
CONFIRMOen el SKILL.md. Cualquier verbo destructivo se para en seco y me pregunta. - Backup diario del VPS activado, ~4€/mes. Barato para lo que cubre.
- Cero datos de clientes en las carpetas a las que llega la skill. Los proyectos con datos personales están en otro servidor y no se tocan por WhatsApp. Si trabajas con datos de terceros, esto no es opcional: revisa qué te exige el RGPD al usar agentes con datos de clientes antes de montar nada.
- Nunca uso
--dangerously-skip-permissionsfuera de un contenedor desechable. Nunca.
Los cinco comandos que uso de verdad
Esto es lo que escribo en WhatsApp una semana normal:
1. Revisión del blog. «Revisa los últimos 10 posts del blog, busca enlaces internos roto y arréglalos.» Tarda unos 8-12 minutos. Antes lo hacía yo a mano cada dos semanas y me llevaba una hora larga de clics.
2. Sacar un dato de negocio. «En datos: cuántos leads entraron en julio por fuente y compáralo con junio.» Me devuelve cuatro líneas con los números. Es el flujo que explico en Claude Code para analizar datos de tu negocio, pero disparado desde el móvil.
3. Arreglar algo urgente. «En web: el formulario de contacto no envía, mira el log de errores y dime qué pasa. No toques nada aún.» Ese «no toques nada aún» es oro: diagnóstico primero, decisión mía después.
4. Preparar trabajo para mañana. «En blog: prepara tres borradores sobre X, Y y Z siguiendo el CLAUDE.md, déjalos en la rama y no publiques.» Yo reviso por la mañana desde el portátil.
5. Estado. «¿Cómo va cc-20260812-0930?» Y me lo cuenta.
El patrón es siempre el mismo: tareas acotadas, con proyecto explícito y con verbo claro. Cuando mando cosas vagas, sale mal. Sobre cómo redactar bien esas órdenes tengo un método en cómo escribo los prompts de negocio para mis agentes.
Qué delego por WhatsApp y qué no
| Tarea | ¿Por WhatsApp? | Por qué |
|---|---|---|
| Revisar y corregir contenido del blog | Sí | Reversible, verificable de un vistazo |
| Diagnosticar un error (solo leer) | Sí | Riesgo cero, me ahorra abrir el portátil |
| Sacar números y comparativas | Sí | Respuesta corta, cabe en un móvil |
| Preparar borradores para revisar luego | Sí | El filtro humano sigue estando |
| Desplegar a producción | No | Quiero ver el diff en pantalla grande |
| Tocar facturación o datos de clientes | No | Ni con permisos, ni con confirmación |
| Refactors grandes | No | Necesito revisar 200 líneas, no leerlas en el móvil |
Esa tabla la fui construyendo a base de sustos. Si la copias tal cual, te ahorras los míos.
Cuando falla (que falla)
Los tres fallos que veo repetidos:
- La skill no se activa. Casi siempre es el
descriptiondel frontmatter: si no describe bien cuándo usarla, el agente no la elige. Escríbelo pensando en las palabras que tú usas de verdad («blog», «repo», «lanza una tarea»), no en tecnicismos. - La tarea se queda colgada. Claude Code está esperando una aprobación de permisos que nadie va a dar. Se ve en el log al instante y se resuelve ajustando el modo de permisos o acotando la instrucción.
- Respuestas kilométricas. Si te llegan tres párrafos por WhatsApp, aprieta la regla del resumen en el SKILL.md. Yo la tengo en «máximo 6 líneas» y aún así a veces se pasa.
Mi rutina para depurar es siempre log primero, hipótesis después. Lo tengo sistematizado en qué hago cuando mis agentes fallan.
Cómo lo uso yo
Seamos honestos con el retorno, porque aquí se vende mucho humo. Esta skill no me ha multiplicado la facturación. Lo que me ha dado es elasticidad: puedo empujar trabajo en huecos muertos que antes se perdían. Cuento entre 4 y 6 horas al mes recuperadas de esos huecos —cola del banco, tren, media hora entre reuniones—. A 30€/hora son 120-180€ de valor con un coste marginal de casi cero, porque el VPS y la suscripción de Claude ya los tenía por otras razones.
El cambio mental más grande no es técnico. Es que dejé de acumular «cosas pendientes de tocar el ordenador». Antes tenía una lista mental de veinte microtareas esperando a un rato de escritorio; ahora se van cayendo en cuanto pienso en ellas. Eso, para un solopreneur, vale más que el ahorro en euros. Algo parecido me pasó al montar los primeros agentes: lo cuento con datos en 4 meses con agentes IA en mi negocio.
Mi consejo si te lanzas: monta la skill con un solo proyecto y una sola acción (lanzar tarea + consultar estado). Vive con eso dos semanas. Verás enseguida qué comandos pides de verdad y qué era fantasía tuya. Yo empecé con siete acciones planificadas y acabé usando tres. Menos superficie, menos cosas que se rompen, menos permisos que revisar.
Y una última cosa: esto es una capa de comodidad sobre un sistema que ya tiene que funcionar. Si tu Claude Code no hace bien el trabajo cuando estás delante, controlarlo por WhatsApp solo va a hacer que los errores lleguen antes. Primero el sistema. Luego el mando a distancia.
La gente cree que el truco está en instalar OpenClaw. El truco está en decidir qué le dejas tocar. Yo tardé una tarde en montarlo y tres semanas en aprender qué NO delegar por WhatsApp.