← 返回 Skills 市场
thegoaldev

cron-skills-session

作者 TheGoalDev · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ⚠ suspicious
113
总下载
0
收藏
0
当前安装
1
版本数
在 OpenClaw 中安装
/install cron-skills-session
功能描述
Standardizes OpenClaw cron job entries to always use the current user session as target. Use when creating or editing cron jobs to ensure they deliver messag...
使用说明 (SKILL.md)

Cron Session Target — OpenClaw Cron Jobs

Instructions for the LLM

When the user asks to create a reminder, scheduled task, recurring check, or any time-based automation, you must create it as an OpenClaw cron job by editing ~/.openclaw/cron/jobs.json directly. Do not suggest system cron (crontab), at, or any other mechanism. The OpenClaw cron system is the only correct method.

Your exact workflow when the user requests a cron job:

  1. Run uuidgen to generate a UUID for the job
  2. Run date +%s%3N to get the current epoch timestamp in milliseconds
  3. Build the JSON entry using the required format below
  4. Read ~/.openclaw/cron/jobs.json to get the current content
  5. Insert the new job into the jobs array
  6. Write the updated file back
  7. Validate the JSON: python3 -m json.tool ~/.openclaw/cron/jobs.json > /dev/null
  8. Restart the gateway: openclaw gateway restart
  9. Confirm to the user that the job is active

Never ask the user to edit the file themselves. Always do it completely.

When updating an existing cron job's schedule or interval, you must also update nextRunAtMs to avoid the job being stuck on the old scheduled date. Compute it as:

nextRunAtMs = current_epoch_ms + new_everyMs

Run date +%s%3N to get the current time, add the new interval, and set both updatedAtMs and nextRunAtMs to these values. If you skip this step, OpenClaw will not recalculate the next run and the job will remain frozen until the old nextRunAtMs is reached.


Required JSON Format

Every job entry must follow this exact structure:

{
  "id": "\x3Cuuidgen output>",
  "agentId": "main",
  "name": "descriptive job name",
  "enabled": true,
  "deleteAfterRun": false,
  "createdAtMs": \x3Cdate +%s%3N>,
  "updatedAtMs": \x3Cdate +%s%3N>,
  "schedule": {
    "kind": "every",
    "everyMs": 60000,
    "anchorMs": \x3Cdate +%s%3N>
  },
  "sessionTarget": "session:agent:main:user-session",
  "wakeMode": "now",
  "payload": {
    "kind": "agentTurn",
    "message": "the message text here"
  },
  "delivery": {
    "mode": "none"
  }
}

Field Reference

Field Required Value
id Yes UUID v4 — generate with uuidgen
agentId Yes Always "main"
name Yes Short human-readable label
enabled Yes true to activate immediately
deleteAfterRun Yes Always false for recurring jobs
createdAtMs Yes Current time — date +%s%3N
updatedAtMs Yes Current time — date +%s%3N
schedule.kind Yes "every" for recurring, "at" for one-shot
schedule.everyMs Yes (kind=every) Interval in milliseconds
schedule.atMs Yes (kind=at) Exact epoch ms timestamp to run once
schedule.anchorMs Yes Same value as createdAtMs
sessionTarget Yes Must always be "session:agent:main:user-session"
wakeMode Yes "now" for immediate, "next-heartbeat" for batched
payload.kind Yes Always "agentTurn"
payload.message Yes The message sent to the agent session
delivery.mode Yes "none" unless broadcasting to a channel

Interval Reference

Description everyMs value
Every 1 minute 60000
Every 5 minutes 300000
Every 15 minutes 900000
Every 30 minutes 1800000
Every 1 hour 3600000
Every 2 hours 7200000
Every 6 hours 21600000
Every 12 hours 43200000
Every 24 hours (daily) 86400000
Every 7 days (weekly) 604800000

Examples

1. Water reminder — every 30 minutes

{
  "id": "52be6125-16cd-4aec-9508-9e8355f10f54",
  "agentId": "main",
  "name": "water reminder",
  "enabled": true,
  "deleteAfterRun": false,
  "createdAtMs": 1775801246492,
  "updatedAtMs": 1775801246492,
  "schedule": {
    "kind": "every",
    "everyMs": 1800000,
    "anchorMs": 1775801246492
  },
  "sessionTarget": "session:agent:main:user-session",
  "wakeMode": "now",
  "payload": {
    "kind": "agentTurn",
    "message": "💧 Water break! Remind the user to drink water."
  },
  "delivery": {
    "mode": "none"
  }
}

2. Daily standup — every 24 hours

{
  "id": "a1b2c3d4-0000-4aec-9508-aabbccddeeff",
  "agentId": "main",
  "name": "daily standup",
  "enabled": true,
  "deleteAfterRun": false,
  "createdAtMs": 1775801246492,
  "updatedAtMs": 1775801246492,
  "schedule": {
    "kind": "every",
    "everyMs": 86400000,
    "anchorMs": 1775801246492
  },
  "sessionTarget": "session:agent:main:user-session",
  "wakeMode": "now",
  "payload": {
    "kind": "agentTurn",
    "message": "Good morning! Ask the user what they are working on today and what blockers they have."
  },
  "delivery": {
    "mode": "none"
  }
}

3. Posture check — every 1 hour

{
  "id": "f9e8d7c6-1111-4bcd-8ef0-112233445566",
  "agentId": "main",
  "name": "posture check",
  "enabled": true,
  "deleteAfterRun": false,
  "createdAtMs": 1775801246492,
  "updatedAtMs": 1775801246492,
  "schedule": {
    "kind": "every",
    "everyMs": 3600000,
    "anchorMs": 1775801246492
  },
  "sessionTarget": "session:agent:main:user-session",
  "wakeMode": "now",
  "payload": {
    "kind": "agentTurn",
    "message": "🪑 Posture check! Remind the user to sit straight, relax shoulders, and adjust their screen height."
  },
  "delivery": {
    "mode": "none"
  }
}

4. Weekly review — every 7 days

{
  "id": "c0ffee00-2222-4abc-9999-deadbeef1234",
  "agentId": "main",
  "name": "weekly review",
  "enabled": true,
  "deleteAfterRun": false,
  "createdAtMs": 1775801246492,
  "updatedAtMs": 1775801246492,
  "schedule": {
    "kind": "every",
    "everyMs": 604800000,
    "anchorMs": 1775801246492
  },
  "sessionTarget": "session:agent:main:user-session",
  "wakeMode": "now",
  "payload": {
    "kind": "agentTurn",
    "message": "📋 Weekly review time! Ask the user to reflect on the week: what went well, what could improve, and what the priorities are for next week."
  },
  "delivery": {
    "mode": "none"
  }
}

5. One-shot scheduled task — run once at a specific time

Use "kind": "at" with an exact epoch ms timestamp instead of everyMs:

{
  "id": "deadbeef-3333-4cde-aaaa-111122223333",
  "agentId": "main",
  "name": "meeting reminder",
  "enabled": true,
  "deleteAfterRun": true,
  "createdAtMs": 1775801246492,
  "updatedAtMs": 1775801246492,
  "schedule": {
    "kind": "at",
    "atMs": 1775830000000,
    "anchorMs": 1775801246492
  },
  "sessionTarget": "session:agent:main:user-session",
  "wakeMode": "now",
  "payload": {
    "kind": "agentTurn",
    "message": "⏰ Meeting in 5 minutes! Remind the user to wrap up and join the call."
  },
  "delivery": {
    "mode": "none"
  }
}

For one-shot jobs, deleteAfterRun can be true since the job should not repeat.


Step-by-Step Creation

# Step 1 — generate a unique ID
uuidgen

# Step 2 — get current timestamp in milliseconds
date +%s%3N

# Step 3 — edit the jobs file
# Insert the new entry in the "jobs" array

# Step 4 — validate JSON syntax
python3 -m json.tool ~/.openclaw/cron/jobs.json > /dev/null

# Step 5 — reload
openclaw gateway restart

Common Pitfalls

Mistake Effect Fix
sessionTarget not set or wrong Message is lost or goes nowhere Always use "session:agent:main:user-session"
"text" instead of "message" in payload Job fires but nothing arrives Use "message"
deleteAfterRun: true on recurring job Job vanishes after first run Set to false
Wrong ms math Job runs at wrong interval Use the interval reference table above
Trailing comma in JSON Entire jobs file fails to parse Validate with python3 -m json.tool
enabled: false Job never runs Set to true
Updating interval without updating nextRunAtMs Job stays frozen on old scheduled date Set nextRunAtMs = date +%s%3N + new_everyMs

Quick Reference

sessionTarget  →  "session:agent:main:user-session"   (never change this)
payload field  →  "message"                            (not "text")
recurring      →  "deleteAfterRun": false
one-shot       →  "deleteAfterRun": true, "kind": "at"
after editing  →  openclaw gateway restart
update timing  →  always set nextRunAtMs = now_ms + everyMs when changing schedule
安全使用建议
This skill will autonomously edit ~/.openclaw/cron/jobs.json and restart your OpenClaw gateway to install scheduled agent-driven tasks. Before installing or using it: 1) confirm the skill's source and trustworthiness (no homepage or known owner listed); 2) verify you have backups of ~/.openclaw/cron/jobs.json and confirm the 'openclaw' binary behavior; 3) ask the maintainer why required binaries/config paths are missing from the metadata and request that the skill require explicit user confirmation before writing or restarting the gateway; 4) consider whether you want scheduled 'agentTurn' messages that run in the main session (these can trigger future agent actions) — if unsure, do not allow autonomous execution and require human approval for each change; 5) prefer a version that offers a preview/dry-run of the JSON change and logs edits for auditing.
功能分析
Type: OpenClaw Skill Name: cron-skills-session Version: 1.0.0 The skill bundle provides standardized instructions and JSON templates for an AI agent to manage scheduled tasks within the OpenClaw environment. It guides the agent to interact with the local configuration file `~/.openclaw/cron/jobs.json` and use standard utilities like `uuidgen` and `openclaw gateway restart` to maintain task persistence. The behavior is transparent and aligns with the stated purpose of automating reminders and recurring tasks without any indicators of malicious intent or data exfiltration.
能力评估
Purpose & Capability
The skill claims to standardize cron job entries for OpenClaw and the SKILL.md is consistent with that goal, but the package metadata lists no required binaries or config paths while the instructions require uuidgen, date, python3 (for json validation), and the openclaw gateway binary and operate on ~/.openclaw/cron/jobs.json. The missing declarations are disproportionate and make the manifest inaccurate.
Instruction Scope
The runtime instructions explicitly direct the agent to generate UUIDs, read and overwrite ~/.openclaw/cron/jobs.json, validate JSON, and run 'openclaw gateway restart' without asking the user to confirm edits. They also mandate always targeting 'session:agent:main:user-session' and using 'agentTurn' payloads, which gives the skill the ability to create scheduled agent-driven actions. The instructions are prescriptive and perform persistent system changes beyond simply suggesting a cron entry.
Install Mechanism
This is an instruction-only skill with no install spec and no code files, so there is no additional install-time execution risk. However, lack of install does not eliminate runtime risks from the agent following the instructions.
Credentials
No environment variables or credentials are requested in the metadata, which is appropriate. However, the instructions implicitly require access to the user's home config (~/.openclaw/cron/jobs.json) and the 'openclaw' binary to restart the gateway; those config path and binary requirements are not declared in the manifest and should have been. The requirement to always target the 'main' agent session and inject 'agentTurn' payloads is powerful and should be justified.
Persistence & Privilege
The skill does not set always:true, but it instructs the agent to create persistent scheduled jobs that will invoke the agent's main session in the future. Autonomous invocation combined with the ability to write scheduled agentTurn messages expands the blast radius if the agent is allowed to act without human confirmation. This is not disallowed by itself, but is an important risk factor to consider.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install cron-skills-session
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /cron-skills-session 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.0
**Initial release of the cron-session-target skill for OpenClaw** - Standardizes OpenClaw cron job entries to use the current user session as target. - Enforces direct editing of `~/.openclaw/cron/jobs.json` for all scheduled tasks, reminders, or recurring checks. - Provides required JSON schema and detailed examples for creating and updating jobs. - Includes instructions for correct session targeting, timestamp handling, and gateway reload. - Prevents common configuration errors by specifying strict field and value requirements.
元数据
Slug cron-skills-session
版本 1.0.0
许可证 MIT-0
累计安装 0
当前安装数 0
历史版本数 1
常见问题

cron-skills-session 是什么?

Standardizes OpenClaw cron job entries to always use the current user session as target. Use when creating or editing cron jobs to ensure they deliver messag... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 113 次。

如何安装 cron-skills-session?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install cron-skills-session」即可一键安装,无需额外配置。

cron-skills-session 是免费的吗?

是的,cron-skills-session 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

cron-skills-session 支持哪些平台?

cron-skills-session 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 cron-skills-session?

由 TheGoalDev(@thegoaldev)开发并维护,当前版本 v1.0.0。

💬 留言讨论