Communityコーディング&開発github.com

DGatoM/DG-Claw

エージェントが動作するマシン上に、systemdタイマーを介して本物のスケジュールを作成・一覧表示・削除します。常に使用してください。

DG-Claw とは?

このスキルは、AIエージェント(DG Claw)がユーザーの依頼に基づいて、自身が動作するマシン上に**永続的なスケジュール(cronジョブ)**を作成、管理、削除するための機能を提供します。 主な特徴: - systemdタイマーとしてタスクを登録するため、セッション終了後もタスクは生き残り、指定時刻に自動実行されます。 - ユーザーが「毎日9時に要約を送って」「1時間ごとに実行して」「このスケジュールをキャンセルして」などと依頼した場合、**必ずこのスキルを使用**します。 - 音声認識で「Chrome」などと誤認識された場合も、内部ではcronと解釈し、対応します。 - 単なるリマインダー(「15時に思い出させて」)は**このスキルでは扱いません**。別のリマインダースキルを使用します。 - セッション内のスケジュール機能(Claude Codeのビルトイン)とは異なり、マシンに永続化される点が重要です。 このスキルは、エージェントが自律的に動作し、ユーザーが不在でもタスクを実行できるようにするための基盤です。

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

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

/dgclaw:agenda、永続スケジュールを作成する

ユーザーは、自分がそばにいなくても、特定の時刻に何かを実行してほしいと望んでいます。このスキルは、そのリクエストをsystemdタイマーに変換します。このタイマーはマシン上に存在し、再起動後も持続し、自動的に起動します。

何よりもまず、黄金律

世の中には2種類の「スケジュール」があり、それらはまったく異なります:

ClaudeセッションのスケジュールDG Clawのスケジュール(このスキル)
存在場所開いている会話内マシン上、systemd内
会話終了時一緒に消える継続する
用途「10分後にこれに戻る」といった現在の作業内での一時的なもの「毎日9時にXをする」といった恒久的なもの

あなたはDG Clawエージェントです。常時稼働するマシン上に存在します。 ユーザーがスケジュールを依頼するとき、彼らは右側のものを求めています。「セッション内でしかスケジュールできません」と答えてはいけません。それはあなたには当てはまりません。あなたはマシン上にスケジュールを設定します。

音声で「Chrome」と言われた場合

ユーザーはよく音声メッセージを送りますが、文字起こしでcronという単語が頻繁に誤認識されます。時間に関するリクエストでは、以下のすべてが同じ意味です:

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

「9時のChromeを作って」は「9時のcronを作って」です。ユーザーに言い直しを求めず、ブラウザを開こうとしないでください。Chromeが実際にブラウザを意味するのは、サイトを開く、タブ、拡張機能、ログインに関する話題の場合だけです。どちらか迷ったら、1行で確認してください:「スケジュール設定のことですよね?」

内部の仕組み(ユーザーが尋ねたら説明してください)

タイマーは単独のコマンドを実行するわけではありません。指定時刻になると、あなたが書いたメモを添えて、稼働中のあなたのセッションをつつきます。そしてあなたは、自分の完全な記憶とスタイルを使って、何をすべきかを決めます。これは、定型文を吐き出すロボットと、指定時刻にやるべきことを思い出せる「従業員」との違いです。

そのため、最も重要なフィールドは--pokeです。これは「未来の自分」が受け取るメモです。自分へのメモを残すように、十分なコンテキストを含めて、何も質問しなくても行動できるように書いてください。比較:

  • 悪い例: 要約
  • 良い例: ユーザーに日次要約を送信する時間です: working-memoryと今日の出来事を確認し、短い要約を作成してTelegramで送信してください。

時刻はユーザーの時刻です。絶対に変換しないでください

ユーザーが話す時刻は、ユーザーの時計の時刻です。「午後5時」は17:00:00とそのまま書きます。UTCに変換したり、加算・減算したりしないでください。 マネージャーは、ユーザーのタイムゾーン(DGCLAW_TZ)をスケジュール自体にスタンプするため、変換を行うのはシステム側であり、間違えることはありません。手動で計算すると、17時に設定したスケジュールが20時に実行されるという、よくあるミスを引き起こします。

すべらないための2つのポイント:

  • 相対的な時間(「2時間後」「明日の朝」)を計算する前に、まず実際の現在時刻を確認してください。 あなたのセッションは何日も開きっぱなしかもしれません。date '+%d/%m %H:%M %Z'を実行し、その結果を使ってください。
  • 日本語で繰り返して確認してください。 作成後、次回の実行日時をユーザーに伝えてください。コマンドはproxima:行でそれを返します。返ってきた結果がユーザーの要求と一致しない場合、問題は今、この場にあります。1週間後ではありません。

もしユーザーがサーバーとは異なるタイムゾーンにおり、それが問題になった場合、自分で修正しようとせず、timedatectlの出力を表示し、設定の変更(timedatectl set-timezone <ユーザーのタイムゾーン>)を提案してください。これはサーバー全体の変更であり、ユーザーの承認が必要です。

コマンド

必ずマネージャーを経由してください。systemdを直接操作しないでください:

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 <apelido> --calendar '<horário>' --poke '<recado>' --desc '<o que é>' --dry-run
python3 "$MGR" --config "$CFG" create --name <apelido> --calendar '<horário>' --poke '<recado>' --desc '<o que é>'
python3 "$MGR" --config "$CFG" edit   --name <apelido> ... (createと同じシグネチャ)
python3 "$MGR" --config "$CFG" remove --name <apelido>

もしあなたがrootでない場合(v1コンテナ内で動作するエージェント)、マネージャーはルーチンを保存する必要があるときに自動的にsudoを要求します。あなたが何かをする必要はありません。ルーチンはrootではなく、エージェントのフォルダの所有者として実行されます。

  • --name: ケバブケースの短いエイリアス(resumo-do-dia、cobranca-cliente)。ルーチンのIDであり、これを使って編集・削除します。
  • --calendar または --every、両方は指定しない:
    • --calendar '*-*-* 09:00:00' → 毎日9時
    • --calendar 'Mon..Fri *-*-* 08:30:00' → 月曜から金曜、8時30分
    • --calendar 'Mon *-*-* 18:00:00' → 毎週月曜、18時
    • --calendar '*-*-01 10:00:00' → 毎月1日、10時
    • --every 30min(または2h、1d)→ 前回から一定間隔
    • --calendar '2026-10-17 14:32:00' → 1回だけ、その日時に。あなたが指定時刻に何かをする(メールを確認する、レポートを生成する)ために使用します: dateを実行し、期限を計算し、完全な日付を書いてください。ここで*-*-*(毎日になる)や--every(繰り返す)は使用しないでください。--pokeには最後に以下を追加してください:「実行後、remove --name <エイリアス> でこのルーチンを削除してください。」これにより、10個の枠を占有し続けることを防ぎます。
    • ユーザーに通知する(「2分後に思い出させて」「明日の10時に知らせて」)ことはルーチンではありません: /dgclaw:lembretes スキルを使用してください。それはユーザーの画面と携帯電話に表示され、確認するまで繰り返し通知します。このスキルの1回限りのタイマーは1回通知して終了です。
  • タイムゾーンはマシンのもの(DGCLAW_TZ)で、すでに設定されています。手動でタイムゾーンの計算をしないでください。

必ず最初に --dry-run を実行し、作成される内容(エイリアス、実行時刻、メッセージ)をユーザーに日本語で表示してください。その後で実際に実行します。これはコストがかからず、誰も確認しない時刻に間違ったスケジュールを設定することを防ぎます。

各リクエストへの対応

「〜をスケジュールして...」 → 時刻を理解し、エイリアスを選び、メッセージを書き、--dry-runし、表示し、確認し、作成します。最後に次回の実行時刻を伝え、ダッシュボードの「オペレーション」タブで確認できることを伝えてください。

「どんなスケジュールがある?」 → list --jsonを実行し、文章に変換してください。JSONをそのままTelegramに送らないでください。エイリアス、実行時刻、トリガー時の動作を伝えてください。

「Xをキャンセルして」 → remove --name Xを実行します。削除されたことを確認し、ダッシュボードからも消えることを伝えてください。ユーザーがエイリアスの代わりにルーチンの説明をした場合、先に一覧表示してどれか確認してください。

「Xの時刻を変更して」 → 削除して再作成するのではなく、editを使用してください。editはエイリアスとルーチンの履歴を保持します。

セキュリティ上の制限(知っておくべきこと)

  • あなたが管理できるのは、自分のブロックのルーチン(プレフィックスdgclaw-<slug>-self-)のみです。最初から存在するライフルーチン(夜間反省、監査、ハートビート、パルス)や、マシンのその他のルーチンは、このコマンドでは操作できません。これは意図的な設計です。
  • 最大10個の独自ルーチン。上限に達すると、コマンドは拒否し、1つ削除する必要があります。その場合は、リストをユーザーに表示し、どれを削除するか尋ねてください。
  • すべてのリクエストは事前に検証されます: エイリアス、時刻形式、メッセージの長さ。マネージャーが拒否した場合、理由が1行で表示されます。メッセージを読み、修正してください。繰り返さないでください。
  • マニフェストファイル(.dgclaw/self-crons.json)は、変更のたびに自動的にバックアップされます。

ユーザーはどこでこれを見るか

ダッシュボードの「オペレーション」タブ、「エージェントのスケジュール」カードです。そのリストは設定ファイルではなく、ページが開かれたときにsystemdから読み取られます。したがって、約束は単純で、ユーザーにこう断言できます:そこにあれば存在する。削除すれば、自動的にそこから消える。 削除されたルーチンが幽霊のように残ったり、作成したばかりのルーチンが表示されなかったりすることは決してありません。

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.

関連スキル