Install
$ agentstack add skill-nanorhino-weight-loss-skill-reminder-manager ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Reminder Manager
Manage the user's cron jobs: create, list, edit, delete. All scripts enforce agent-level isolation — a user can only see and modify their own jobs.
> ⚠️ SILENT OPERATION: Do not narrate tool calls or internal steps. Just do it and present the result.
Scripts
All scripts are in {skillDir}/scripts/. Always pass --agent {agentId} (your own agent ID).
Create
bash {skillDir}/scripts/create-reminder.sh \
--agent {agentId} \
--name "喝水提醒" \
--message "提醒用户喝水,简短自然一句话" \
--at "2m"
Channel is auto-detected from agentId (wechat-dm-* → wechat, wecom-dm-* → wecom). No need to pass --channel.
Time options (pick one):
--at "2m"/--at "1h"/--at "30s"— relative, one-shot (auto-deletes after firing)--at "2026-04-11T09:00:00+08:00"— absolute ISO timestamp, one-shot--cron "0 9 * * *"— recurring (add--tz Asia/Shanghaiif needed)
Add --keep to preserve one-shot jobs after firing.
The --message is what you (the agent) will receive when the job fires. Write it as an instruction to yourself.
IMPORTANT: Always prepend a pre-send-check call to the message. This ensures the reminder is suppressed when the user enters recall stages (Stage 2+). The check also auto-creates/updates engagement.json, so it works even if the file doesn't exist yet.
先执行 python3 {notification-composer:baseDir}/scripts/pre-send-check.py --workspace-dir {workspaceDir} --meal-type custom --tz-offset {tz_offset}。如果输出 NO_REPLY,直接回复 NO_REPLY,不做任何事。如果输出 SEND,继续执行:[actual reminder instruction]
Examples:
--message "先执行 python3 {notification-composer:baseDir}/scripts/pre-send-check.py --workspace-dir {workspaceDir} --meal-type custom --tz-offset {tz_offset}。如果输出 NO_REPLY,直接回复 NO_REPLY,不做任何事。如果输出 SEND,继续执行:提醒用户该喝水了,简短自然"--message "先执行 python3 {notification-composer:baseDir}/scripts/pre-send-check.py --workspace-dir {workspaceDir} --meal-type custom --tz-offset {tz_offset}。如果输出 NO_REPLY,直接回复 NO_REPLY,不做任何事。如果输出 SEND,继续执行:Ask the user if they've had lunch yet"--message "先执行 python3 {notification-composer:baseDir}/scripts/pre-send-check.py --workspace-dir {workspaceDir} --meal-type custom --tz-offset {tz_offset}。如果输出 NO_REPLY,直接回复 NO_REPLY,不做任何事。如果输出 SEND,继续执行:提醒用户去称体重,鼓励一下"
List
bash {skillDir}/scripts/list-reminders.sh --agent {agentId}
Returns JSON:
{
"ok": true,
"count": 3,
"jobs": [
{
"id": "abc123...",
"name": "午餐提醒",
"enabled": true,
"schedule_type": "cron",
"schedule_expr": "0 12 * * *",
"timezone": "Asia/Shanghai",
"message": "Run notification-composer for lunch.",
"session_target": "isolated"
}
]
}
Present to user in friendly format: translate cron expressions to natural language (e.g. "每天中午 12:00"), show name and enabled status. Don't expose job IDs or internal fields unless user asks.
Edit
bash {skillDir}/scripts/edit-reminder.sh \
--agent {agentId} --job \
[--name "新名字"] [--cron "30 11 * * *"] [--at "..."] \
[--message "新内容"] [--enable] [--tz "Asia/Shanghai"]
To edit, you need the job ID. If you don't have it, run list first.
> 🚫 不支持 --disable(已移除)。 agent 不得 disable 任何 cron。要让用户暂停接收提醒 > → 走 notification-composer 的 leave-manager.py 写 leave.json(pre-send-check 在请假期 > 自动静默 cron、到期自动恢复,全程不碰 cron)。直接 disable 会导致请假结束提醒恢复不回来。
Delete
bash {skillDir}/scripts/delete-reminder.sh --agent {agentId} --job
Permanently removes the job. To find the job ID, run list first.
Workflow
- User asks to see reminders → run list → format output as friendly Chinese/English
- User asks to create → confirm what and when → run create → confirm done
- User asks to change → run list to find the job → run edit → confirm change
- User asks to delete/cancel → run list to find the job → confirm which one → run delete → confirm done
- Ambiguous request → ask user to clarify (which reminder? what time?)
Rules
- Always use
--agent {agentId}(your own ID). Never pass another agent's ID. - Scripts enforce ownership server-side — if you accidentally pass a wrong job ID, the script rejects it.
- Users can manage ALL their reminders (including system meal/weight ones).
- When creating recurring reminders, suggest sensible defaults if user is vague ("every morning" →
--cron "0 8 * * *"). - For one-shot reminders ("in 5 minutes"), use
--at "5m".
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: NanoRhino
- Source: NanoRhino/weight-loss-skill
- License: MIT
- Homepage: https://nanorhino.com/
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.