NervTimer
Use this skill when the user wants OpenClaw to set a reminder timer and keep reminding until explicit completion.
This skill is designed to be published via ClawHub and installed with:
CODEBLOCK0
Required behavior
- 1. Parse user intent into structured timer data.
- Support
one_shot and recurrent schedules. - Extract optional reason/purpose text from user intent.
- When due, start nagging every 5 minutes.
- Stop nagging only when the user explicitly says done.
- For recurring timers: done ends only the current nagging phase, not the whole recurring schedule.
Deterministic + generative split
- state transitions (
scheduled,
nagging,
done)
- nag interval (5 minutes)
- escalation stage from
nag_count
- schedule payload construction
- final reminder sentence style
- personality adaptation
- increasing urgency/annoyance within policy bounds
Files in this skill
- - INLINECODE6
- INLINECODE7
- INLINECODE8
- INLINECODE9
- INLINECODE10
Workflow
Execution rule:
- - Always execute skill scripts via
bash <script-path> .... - Do not execute scripts directly via shebang path.
- If a script call fails, immediately fall back to direct
cron tool calls and inform the user briefly. - Never keep "typing" without either creating the timer or returning a concrete error.
A) Create timer
- 1. Build a structured intent JSON from the user message (see intent schema reference).
- Validate it:
CODEBLOCK1
- 3. Upsert timer state:
CODEBLOCK2
- 4. Build cron payload(s):
CODEBLOCK3
- 5. Call
cron tool with action=add for each payload.
Important defaults:
- - For reminder output use isolated runs (
sessionTarget: "isolated", payload.kind: "agentTurn"). - Route delivery to current channel context unless user requests another target.
B) Scheduled execution (nagging tick)
When a cron reminder turn runs:
- 1. Call:
CODEBLOCK4
- 2. If
should_nag=false, do not send a reminder text. - If
should_nag=true, generate one short reminder using:
- task title
- reason (if present)
-
tone_stage
- OpenClaw personality
- 4. Message must become more urgent as
nag_count increases. - Apply tone guardrails from escalation policy.
C) User says done
If user explicitly confirms completion (for example "done", "erledigt", "hab ich gemacht"):
- 1. Resolve active timer.
- Mark done:
CODEBLOCK5
- 3. For recurring timers:
- keep recurring schedule active
- reset nagging phase only
D) Ambiguity rules
- - If exactly one active nagging timer exists: auto-map completion.
- If multiple active nagging timers exist: ask a short disambiguation question.
E) Fast fallback (important for reliability)
If deterministic helper scripts cannot run for any reason:
- - create/update cron jobs directly with the
cron tool in the same turn - use the same schedule and nagging semantics
- confirm the resulting timer setup to the user
- if no schedule can be parsed confidently, ask one short clarification question
Safety and tone constraints
- - Keep reminders short (1 to 2 sentences).
- No insults, threats, or manipulative guilt language.
- "More annoyed" means stylistic urgency only, not abuse.
- Never claim the task is done unless user explicitly confirms it.
Packaging note (ClawHub)
Keep this folder self-contained so it can be published directly:
CODEBLOCK6
NervTimer
当用户希望OpenClaw设置一个提醒计时器并持续提醒直到明确完成时,使用此技能。
此技能设计通过ClawHub发布,并使用以下命令安装:
bash
openclaw skills install nervtimer
必需行为
- 1. 将用户意图解析为结构化的计时器数据。
- 支持一次性和循环计划。
- 从用户意图中提取可选的原因/目的文本。
- 到期时,每5分钟开始提醒。
- 仅在用户明确表示完成时停止提醒。
- 对于循环计时器:完成仅结束当前提醒阶段,而非整个循环计划。
确定性 + 生成式拆分
- 状态转换(已计划、提醒中、已完成)
- 提醒间隔(5分钟)
- 基于提醒次数的升级阶段
- 计划负载构建
- 最终提醒语句风格
- 个性适配
- 在策略范围内增加紧迫感/烦人程度
此技能包含的文件
- - {baseDir}/references/intent-schema.md
- {baseDir}/references/escalation-policy.md
- {baseDir}/scripts/validate-intent.sh
- {baseDir}/scripts/state.sh
- {baseDir}/scripts/build-cron-payload.sh
工作流程
执行规则:
- - 始终通过bash <脚本路径> ...执行技能脚本。
- 不要通过shebang路径直接执行脚本。
- 如果脚本调用失败,立即回退到直接使用cron工具调用,并简要告知用户。
- 除非创建了计时器或返回了具体错误,否则不要保持输入中状态。
A) 创建计时器
- 1. 从用户消息构建结构化的意图JSON(参见意图模式参考)。
- 验证它:
bash
printf %s $INTENT_JSON | bash {baseDir}/scripts/validate-intent.sh
- 3. 更新计时器状态:
bash
printf %s $TIMER_JSON | bash {baseDir}/scripts/state.sh upsert
- 4. 构建cron负载:
bash
printf %s $TIMER_JSON | bash {baseDir}/scripts/build-cron-payload.sh
- 5. 对每个负载使用action=add调用cron工具。
重要默认值:
- - 对于提醒输出,使用隔离运行(sessionTarget: isolated,payload.kind: agentTurn)。
- 除非用户请求其他目标,否则将投递路由到当前频道上下文。
B) 计划执行(提醒触发)
当cron提醒轮次运行时:
- 1. 调用:
bash
bash {baseDir}/scripts/state.sh next-nag
- 2. 如果shouldnag=false,不发送提醒文本。
- 如果shouldnag=true,使用以下内容生成一条简短提醒:
- 任务标题
- 原因(如果存在)
- 语气阶段
- OpenClaw个性
- 4. 随着提醒次数增加,消息必须变得更加紧迫。
- 应用升级策略中的语气护栏。
C) 用户表示完成
如果用户明确确认完成(例如完成、搞定了、我已经做了):
- 1. 解析活动计时器。
- 标记完成:
bash
bash {baseDir}/scripts/state.sh mark-done
- 3. 对于循环计时器:
- 保持循环计划活动
- 仅重置提醒阶段
D) 歧义规则
- - 如果恰好有一个活动的提醒计时器:自动映射完成。
- 如果有多个活动的提醒计时器:提出简短的消歧问题。
E) 快速回退(对可靠性很重要)
如果确定性辅助脚本因任何原因无法运行:
- - 在同一轮次中直接使用cron工具创建/更新cron作业
- 使用相同的计划和提醒语义
- 向用户确认生成的计时器设置
- 如果无法自信地解析任何计划,提出一个简短的澄清问题
安全与语气约束
- - 保持提醒简短(1到2句话)。
- 不得使用侮辱、威胁或操纵性的内疚语言。
- 更烦人仅指风格上的紧迫感,而非滥用。
- 除非用户明确确认,否则不得声称任务已完成。
打包说明(ClawHub)
保持此文件夹自包含,以便可以直接发布:
bash
clawhub skill publish ./nervtimer --slug nervtimer --name NervTimer --version 0.1.0 --tags latest