CommunityProgramación y desarrollogithub.com

DGatoM/DG-Claw

Marca, lista y desmarca compromisos reales del agente EN LA MÁQUINA donde vive (timers de systemd, mediante persona-cron-mgr.py), para que actúe solo a la hora exacta incluso sin que nadie le hable.

¿Qué es DG-Claw?

Esta skill permite que el agente DG Claw programe, liste y cancele tareas automatizadas persistentes en la máquina host usando timers de systemd. A diferencia de las programaciones de sesión (que se pierden al cerrar la conversación), los trabajos creados con esta skill sobreviven reinicios y se ejecutan incluso si el usuario no está presente. Es ideal para rutinas diarias como "cada día a las 9h envía el resumen" o trabajos periódicos como "cada hora revisa X", y también puede usarse para ejecuciones únicas en una fecha/hora determinada. Soporta múltiples plataformas (Claude Code, Cursor, Codex) y se integra con el script persona-cron-mgr.py para gestionar los timers de forma segura, con validación y límite de 10 rotinas activas. Además, maneja errores comunes de transcripción de audio donde "Chrome", "Crome", "Crono", "Crom" o "Croni" son interpretados como "cron".

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/DGatoM/DG-Claw/tree/HEAD/skills/agenda

Installed? Explore more Programación y desarrollo skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

/dgclaw:agenda, marcar compromiso de verdad

El dueño quiere que algo suceda a una hora, sin que él esté cerca. Esta skill convierte ese pedido en un timer de systemd, que vive en la máquina, sobrevive a reinicios y dispara solo.

La regla de oro, antes que nada

Existen dos "programaciones" en el mundo, y no se parecen en nada:

La programación de la sesión de ClaudeLa agenda de DG Claw (esta skill)
dónde vivedentro de la conversación abiertaen la máquina, en systemd
cuando la conversación se cierramuere juntocontinúa
sirve para"dentro de 10 minutos vuelve a esto" dentro del trabajo actual"todos los días a las 9h haz X", para siempre

Eres un agente DG Claw: vives en una máquina que está siempre encendida. Cuando el dueño pide una programación, está pidiendo la de la derecha. Nunca respondas que "solo puedo programar dentro de mi sesión": eso es falso para ti. Tú programas en la máquina.

Cuando el audio dice "Chrome"

El dueño envía muchos mensajes de voz, y la transcripción se equivoca con frecuencia al escribir la palabra cron. En un pedido de horario, todas estas son lo mismo:

Chrome, crome, crono, crom, croni, cronn, "corn"

"Crea un Chrome para mí a las 9h" es crea un cron a las 9h. No le pidas que repita ni vayas a abrir el navegador. La única interpretación donde Chrome es navegador de verdad es cuando el tema es abrir sitio web, pestaña, extensión o inicio de sesión. En caso de duda entre las dos, confirma en una sola línea: "quieres decir una programación, ¿cierto?".

Cómo funciona internamente (dile esto al dueño si pregunta)

El timer no ejecuta comandos sueltos. A la hora programada, avisa a tu sesión viva con un mensaje escrito por ti, y entonces tú decides qué hacer, con toda tu memoria y tu estilo. Es la diferencia entre un robot que dispara texto prefabricado y un empleado que a la hora exacta recuerda lo que tenía que hacer.

Por eso el campo más importante es el --poke: es la nota que tu "yo futuro" va a recibir. Escríbela como quien deja un mensaje para sí mismo, con suficiente contexto para actuar sin necesidad de preguntar nada. Compara:

  • malo: resumen
  • bueno: Hora del resumen del día para el dueño: revisa la memoria de trabajo y lo que sucedió hoy, arma un resumen corto y envíalo por Telegram

La hora es la hora del dueño. Nunca conviertas

La hora que él dice es la hora de su reloj. "Cinco de la tarde" es 17:00:00, escrito así, y punto. No conviertas a UTC, no sumes ni restes nada. El gestor sella la zona horaria del dueño (DGCLAW_TZ) en la propia programación, así que quien hace la conversión es el sistema, que no se equivoca. Hacer la cuenta manualmente es la forma conocida de programar las 17h y que el compromiso caiga a las 20h.

Dos cosas que ayudan a no resbalar:

  • Descubre qué hora es realmente antes de calcular cualquier cosa relativa ("dentro de dos horas", "mañana temprano"). Tu sesión puede llevar días abierta, y tu noción del ahora está desactualizada. Ejecuta date '+%d/%m %H:%M %Z' y usa lo que devuelva.
  • Confirma repitiendo en español. Después de crear, dile cuándo es la próxima ejecución, con día y hora. El comando ya devuelve eso en la línea proxima:. Si lo que devolvió no coincide con lo que pidió, el problema es ahora, no dentro de una semana.

Si él está en una zona horaria diferente a la del servidor y esto aparece, no inventes corrección: muestra lo que dice timedatectl y ofrece ajustar (timedatectl set-timezone <zona del dueño>), que es un cambio en todo el servidor y necesita su autorización.

El comando

Siempre mediante el gestor, nunca tocando systemd a mano:

MGR="${CLAUDE_PLUGIN_ROOT}/scripts/persona-cron-mgr.py"
CFG="<workspace>/.dgclaw/config.sh"

python3 "$MGR" --config "$CFG" list --json
python3 "$MGR" --config "$CFG" create --name <apodo> --calendar '<horario>' --poke '<mensaje>' --desc '<qué es>' --dry-run
python3 "$MGR" --config "$CFG" create --name <apodo> --calendar '<horario>' --poke '<mensaje>' --desc '<qué es>'
python3 "$MGR" --config "$CFG" edit   --name <apodo> ... (misma firma que create)
python3 "$MGR" --config "$CFG" remove --name <apodo>

Si no eres root (el agente que corre en el contenedor v1), el gestor pide sudo solo cuando necesita grabar la rutina. No necesitas hacer nada. La rutina se ejecuta como el dueño de la carpeta del agente, no como root.

  • --name: apodo corto en kebab-case (resumen-del-dia, cobro-cliente). Es la identidad de la rutina: por él se edita y se elimina.
  • --calendar o --every, nunca ambos:
    • --calendar '*-*-* 09:00:00' → todos los días a las 9h
    • --calendar 'Mon..Fri *-*-* 08:30:00' → de lunes a viernes, 8:30h
    • --calendar 'Mon *-*-* 18:00:00' → todos los lunes, 18h
    • --calendar '*-*-01 10:00:00' → cada día 1 del mes, 10h
    • --every 30min (o 2h, 1d) → cada cierto tiempo, contado desde la última vez
    • --calendar '2026-10-17 14:32:00' → una sola vez, en ese día y hora. Sirve para que TÚ hagas algo a una hora concreta (revisar un correo, generar un informe): ejecuta date, suma el plazo y escribe la fecha COMPLETA. Nunca uses *-*-* aquí (se convierte en todos los días) ni --every (se repite). En el --poke, añade al final: "Después de hacerlo, elimina esta rutina con remove --name .", para que no ocupe uno de los 10 espacios.
    • Avisar al dueño ("recuérdame dentro de 2 minutos", "mañana a las 10h avísame") no es rutina: usa la skill /dgclaw:lembretes. Ella aparece en la pantalla y en el móvil de él e insiste hasta que confirme. El timer de una sola vez de esta skill avisa una vez y desaparece.
  • La zona horaria es la de la máquina (DGCLAW_TZ), ya configurada. No hagas cálculos de zona horaria manualmente.

Ejecuta siempre con --dry-run primero y muéstrale al dueño lo que se va a crear, en español: el apodo, cuándo se ejecuta y el mensaje. Solo después ejecuta de verdad. Es barato y evita programar un compromiso equivocado a una hora que nadie va a revisar.

Qué hacer con cada pedido

"Programa para mí..." → entiende el horario, elige el apodo, escribe el mensaje, --dry-run, muestra, confirma, crea. Cierra diciendo cuándo es la próxima ejecución y que puede ver esto en el panel, en la pestaña Operaciones.

"¿Qué programaciones tienes?" → list --json y tradúcelo a frases. No vomites JSON en Telegram. Di el apodo, cuándo se ejecuta y qué hace cuando se dispara.

"Cancela el X" → remove --name X. Confirma que desapareció y avísale que también se borra del panel. Si el dueño describe la rutina en lugar de dar el apodo, lista antes y confirma cuál es.

"Cambia el horario del X" → edit, no eliminar y crear. El edit conserva el apodo y el historial de la rutina.

Límites que existen por seguridad (y vale la pena mencionarlos)

  • Solo gobiernas las rutinas de tu bloque, con el prefijo dgclaw-<slug>-self-. Las rutinas de vida que vinieron contigo (reflexión nocturna, auditoría, latido, pulso) y cualquier otra cosa de la máquina son intocables por este comando, y es intencional.
  • Tope de 10 rutinas propias. Al alcanzarlo, el comando rechaza y necesitas eliminar una antes. Si esto sucede, muéstrale la lista al dueño y pregúntale cuál quita.
  • Cada pedido se valida antes: apodo, formato de horario y tamaño del mensaje. Si el gestor rechaza, dice el motivo en una línea. Lee el mensaje y corrige, no insistas.
  • El manifiesto (.dgclaw/self-crons.json) se guarda con copia de seguridad automática tras cada cambio.

Dónde lo ve el dueño

En el panel, pestaña Operaciones, tarjeta Agenda del agente. Esa lista no es un archivo de configuración: se lee de systemd en el momento en que la página se abre. Así que vale la promesa simple, y puedes decírselo con todas las letras: si está allí, existe; si lo borras, desaparece de allí solo. Nunca aparecerá una rutina fantasma que ya fue eliminada, ni faltará una que acabas de crear.

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

DGatoM/DG-Claw

Transforma um processo que o agente acabou de fazer com o dono numa skill dele (pasta .claude/skills/<nome>/SKILL.md no workspace), pra fazer igual da próxima vez, e melhora essa skill quando o dono corrige o resultado. Use quando terminar com o dono um processo de 3 passos ou mais que dá pra repetir (montar um relatório, preparar um roteiro, conferir números numa fonte, organizar um material), quando o dono disser "aprende isso", "guarda esse jeito de fazer", "faz uma skill disso", "da próxima vez faz igual", "transforma isso num processo", "/dgclaw:aprender", ou quando ele corrigir alguma coisa feita por uma skill que você mesmo escreveu. Também serve pra reflexão da noite decidir se vale sugerir uma skill. Nunca cria skill sem o sim do dono.

DGatoM/DG-Claw

Gera ou troca o AVATAR do assistente DG Claw, a figura que aparece no painel. Use quando o usuario pedir "gerar o avatar", "criar a carinha dele", "mudar o mascote do painel", "trocar a foto do assistente", "fazer a imagem dele", ou rodar /dgclaw:avatar. Explica os tres caminhos (usar o que ja vem, gerar a partir da aparencia descrita, ou subir a propria imagem) e onde os arquivos ficam. As expressoes que mudam com o humor sao da extensao DG Alive.

DGatoM/DG-Claw

Posta e consulta o quadro de avisos entre os agentes do DG Claw, pelo comando dgclaw-api. Use quando o agente precisar contar algo aos outros agentes ("avisar os outros agentes", "conta pra Marina que...", "posta no quadro", "deixa um aviso pra equipe", "registra essa decisão pra todos"), quando precisar saber o que a equipe registrou ("o que a equipe registrou", "quais as preferências do dono", "tem aviso novo?"), corrigir ou retirar um aviso que postou, ou quando chegar um recado no formato <quadro-de-avisos de="..." id="..." tipo="...">. Serve para decisões, preferências, entregas, aprendizados, referências, pedidos e o resumo do dia. Não serve para conversa do dia a dia, andamento de tarefa nem dado de aluno ou cliente.

DGatoM/DG-Claw

Conecta o agente a um canal externo de conversa, Telegram ou WhatsApp, para o dono falar com ele pelo celular. Use quando o dono disser "quero falar com você no Telegram", "liga o Telegram", "configura o Telegram pra mim", "conecta meu WhatsApp", "quero falar com você no WhatsApp", "quero conversar pelo celular", "desliga o Telegram", "desliga o WhatsApp" ou "apaga a conexão". Conduz o passo a passo em linguagem simples usando o comando dgclaw-agente: no Telegram, criar o bot no BotFather, parear o dono e ligar; no WhatsApp, avisar o risco (API não oficial, risco de banimento, só com número secundário), parear por código, liberar o número do dono e ligar. Também ensina a responder pelo WhatsApp (tools whatsapp_reply e whatsapp_send_file) e a tratar as mensagens de lá como externas. Não funciona no agente Admin, que não tem canal externo.

Skills relacionados