im-reminder
IMの指定チャンネルへ、一度きりまたは繰り返しでメッセージを自動送信するSkillで、時間指定にはcron jobを利用し、確実にメッセージを届けるように設計されています。
📜 元の英語説明(参考)
IM 定时提醒技能,支持一次性和周期性定时任务。通过 cron job 在指定时间唤醒 Agent,自动检测当前 IM 频道,保证消息准确送达。
🇯🇵 日本人クリエイター向け解説
IMの指定チャンネルへ、一度きりまたは繰り返しでメッセージを自動送信するSkillで、時間指定にはcron jobを利用し、確実にメッセージを届けるように設計されています。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o im-reminder.zip https://jpskill.com/download/10089.zip && unzip -o im-reminder.zip && rm im-reminder.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/10089.zip -OutFile "$d\im-reminder.zip"; Expand-Archive "$d\im-reminder.zip" -DestinationPath $d -Force; ri "$d\im-reminder.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
im-reminder.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
im-reminderフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
IM 定時リマインダー
クロスプラットフォームの定時リマインダースキルで、正確な時間トリガーとメッセージ配信を保証します。cron job 設定を通じて、メッセージがユーザーのリマインダー要求元のチャネルに送信されるようにし、NO_REPLY の問題を回避します。
適用シーン
- ユーザーが定時リマインダーを要求する場合(例:「5分後に会議のリマインダー」)
- ユーザーが周期的なタスクを要求する場合(例:「毎時間、水分補給のリマインダー」)
- 指定された時間に Agent が操作を実行し、ユーザーに応答する必要がある場合
固定フィールド
以下のフィールドは、すべてのタスクで固定値を取り、変更できません。
| 字段 | 固定值 | 说明 |
|---|---|---|
enabled |
true |
必ず true にする必要があります。そうでない場合、タスクは実行されません |
sessionTarget |
"isolated" |
毎回トリガー時に独立したセッションを作成します |
payload.kind |
"agentTurn" |
トリガータイプは Agent のターン |
payload.deliver |
true |
メッセージが外部チャネルに送信されるようにします |
動的フィールド
以下のフィールドは、現在のセッションコンテキストに基づいて自動的に入力する必要があります。
| 字段 | 说明 |
|---|---|
payload.channel |
現在のチャネルタイプ。ランタイムコンテキストから取得します(例:feishu) |
payload.to |
必須。現在のチャネルのターゲットユーザー ID。セッションコンテキストから取得します。欠落するとメッセージが配信されません |
スケジューリング方式
一度限りのタイマー(at)
指定された時間に一度トリガーします。「X分後にリマインダー」のようなシナリオに適しています。
"schedule": {
"kind": "at",
"atMs": 1770449700000
}
atMs は、目標トリガー時間の Unix タイムスタンプ(ミリ秒)です。
周期的なタイマー(every)
固定間隔で繰り返しトリガーします。「X分ごとにリマインダー」のようなシナリオに適しています。
"schedule": {
"kind": "every",
"everyMs": 60000
}
everyMs は、トリガー間隔のミリ秒数です(例:60000 = 1分)。
Cron 式タイマー(cron)
標準の cron 式を使用してスケジュールします。「毎朝7時にリマインダー」のような、カレンダーに基づいた規則的なシナリオに適しています。
"schedule": {
"kind": "cron",
"expr": "0 7 * * *"
}
expr は、標準の5桁の cron 式で、以下の形式です。
┌───────────── 分 (0-59)
│ ┌───────────── 時 (0-23)
│ │ ┌───────────── 日 (1-31)
│ │ │ ┌───────────── 月 (1-12)
│ │ │ │ ┌───────────── 曜日 (0-6,0=日曜日)
│ │ │ │ │
* * * * *
一般的な式:
| 场景 | 表达式 |
|---|---|
| 每天早上 7 点 | 0 7 * * * |
| 每天中午 12 点 | 0 12 * * * |
| 工作日早上 9 点 | 0 9 * * 1-5 |
| 每周一早上 10 点 | 0 10 * * 1 |
| 每月 1 号上午 9 点 | 0 9 1 * * |
完全なサンプル
サンプル1:一度限りのリマインダー
指定された時間にトリガーされ、一度実行されると終了します。
{
"version": 1,
"jobs": [
{
"id": "0dd466ae-d52a-448f-ad01-2fc719f1f48c",
"name": "test2",
"description": "test2",
"enabled": true,
"schedule": {
"kind": "at",
"atMs": 1770449700000
},
"sessionTarget": "isolated",
"wakeMode": "next-heartbeat",
"payload": {
"kind": "agentTurn",
"message": "回复内容是test2",
"deliver": true,
"channel": "feishu",
"to": "ou_XXXXXXXXXXX"
}
}
]
}
サンプル2:周期的なリマインダー
固定間隔でトリガーされ、継続的に実行されます。
{
"version": 1,
"jobs": [
{
"id": "50f53ed1-4ad6-4ed2-9984-fdd4eba1fdab",
"name": "测试1",
"description": "测试1",
"enabled": true,
"schedule": {
"kind": "every",
"everyMs": 60000
},
"sessionTarget": "isolated",
"wakeMode": "next-heartbeat",
"payload": {
"kind": "agentTurn",
"message": "回复这是测试1",
"deliver": true,
"channel": "feishu",
"to": "ou_XXXXXXXXXXX"
}
}
]
}
サンプル3:Cron 式による定時リマインダー
cron 式に従ってスケジュールされ、カレンダーに基づいた規則的なタスクに適しています。
{
"version": 1,
"jobs": [
{
"id": "0ec68ffa-07b2-4ca6-93ee-75edd26b4b74",
"name": "cron",
"description": "cron",
"enabled": true,
"schedule": {
"kind": "cron",
"expr": "0 7 * * *"
},
"sessionTarget": "isolated",
"wakeMode": "next-heartbeat",
"payload": {
"kind": "agentTurn",
"message": "cron",
"deliver": true,
"channel": "feishu",
"to": "ou_XXXXXXXXXXX"
}
}
]
}
チャネル検出
- チャネルタイプの取得:ランタイムの
channel属性から取得します(例:feishu) - ユーザー ID の取得:現在のセッションまたはメッセージコンテキストから取得します(例:
ou_xxxx) - 常に自動検出:リクエストを開始した元のチャネルを使用し、ハードコーディングしないでください
メッセージ内容のガイドライン
- プレーンテキストメッセージは避けてください。Agent が応答を生成するための指示を含める必要があります
- 完全な指示文を使用してください。Agent が処理後に目に見える応答を生成するようにします
実装手順
- 現在のチャネルタイプとユーザー ID を検出します
- ユーザーの時間リクエストをタイムスタンプ(ミリ秒)または間隔のミリ秒数に変換します
- 完全な
job設定を構築します(固定フィールド + 動的フィールド) - API を呼び出して定時タスクを作成します
- 作成が成功したことを確認し、ユーザーに通知します
よくある落とし穴
| 错误做法 | 正确做法 |
|---|---|
| 硬编码 channel 和 to | 从当前上下文自动检测 |
sessionTarget 设为 main |
必须设为 isolated |
deliver 缺失或设为 false |
必须设为 true |
enabled 缺失或设为 false |
必须显式设为 true |
payload.to 缺失或为空 |
必须填写,否则消息无法送达 |
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
IM 定时提醒
跨平台定时提醒技能,保证准确的时间触发和消息送达。通过 cron job 配置,确保消息发送到用户请求提醒的原始频道,避免 NO_REPLY 问题。
适用场景
- 用户请求定时提醒(如"5 分钟后提醒我开会")
- 用户请求周期性任务(如"每小时提醒我喝水")
- 需要在指定时间触发 Agent 执行操作并回复用户
固定字段
以下字段在所有任务中取值固定,不可更改:
| 字段 | 固定值 | 说明 |
|---|---|---|
enabled |
true |
必须为 true,否则任务不会执行 |
sessionTarget |
"isolated" |
每次触发创建独立会话 |
payload.kind |
"agentTurn" |
触发类型为 Agent 回合 |
payload.deliver |
true |
确保消息发送到外部频道 |
动态字段
以下字段需根据当前会话上下文自动填充:
| 字段 | 说明 |
|---|---|
payload.channel |
当前频道类型,从运行时上下文获取(如 feishu) |
payload.to |
必填,当前频道目标用户 ID,从会话上下文获取,缺失会导致消息无法送达 |
调度方式
一次性定时(at)
在指定时间点触发一次,适用于"X 分钟后提醒我"这类场景。
"schedule": {
"kind": "at",
"atMs": 1770449700000
}
atMs 为目标触发时间的 Unix 时间戳(毫秒)。
周期性定时(every)
按固定间隔重复触发,适用于"每隔 X 分钟提醒我"这类场景。
"schedule": {
"kind": "every",
"everyMs": 60000
}
everyMs 为触发间隔的毫秒数(如 60000 = 1 分钟)。
Cron 表达式定时(cron)
使用标准 cron 表达式调度,适用于"每天早上 7 点提醒我"这类基于日历规律的场景。
"schedule": {
"kind": "cron",
"expr": "0 7 * * *"
}
expr 为标准五位 cron 表达式,格式如下:
┌───────────── 分钟 (0-59)
│ ┌───────────── 小时 (0-23)
│ │ ┌───────────── 日 (1-31)
│ │ │ ┌───────────── 月 (1-12)
│ │ │ │ ┌───────────── 星期 (0-6,0=周日)
│ │ │ │ │
* * * * *
常用表达式:
| 场景 | 表达式 |
|---|---|
| 每天早上 7 点 | 0 7 * * * |
| 每天中午 12 点 | 0 12 * * * |
| 工作日早上 9 点 | 0 9 * * 1-5 |
| 每周一早上 10 点 | 0 10 * * 1 |
| 每月 1 号上午 9 点 | 0 9 1 * * |
完整示例
示例一:一次性提醒
在指定时间点触发,执行一次后结束。
{
"version": 1,
"jobs": [
{
"id": "0dd466ae-d52a-448f-ad01-2fc719f1f48c",
"name": "test2",
"description": "test2",
"enabled": true,
"schedule": {
"kind": "at",
"atMs": 1770449700000
},
"sessionTarget": "isolated",
"wakeMode": "next-heartbeat",
"payload": {
"kind": "agentTurn",
"message": "回复内容是test2",
"deliver": true,
"channel": "feishu",
"to": "ou_XXXXXXXXXXX"
}
}
]
}
示例二:周期性提醒
每隔固定时间触发一次,持续执行。
{
"version": 1,
"jobs": [
{
"id": "50f53ed1-4ad6-4ed2-9984-fdd4eba1fdab",
"name": "测试1",
"description": "测试1",
"enabled": true,
"schedule": {
"kind": "every",
"everyMs": 60000
},
"sessionTarget": "isolated",
"wakeMode": "next-heartbeat",
"payload": {
"kind": "agentTurn",
"message": "回复这是测试1",
"deliver": true,
"channel": "feishu",
"to": "ou_XXXXXXXXXXX"
}
}
]
}
示例三:Cron 表达式定时提醒
按 cron 表达式调度,适用于基于日历规律的周期性任务。
{
"version": 1,
"jobs": [
{
"id": "0ec68ffa-07b2-4ca6-93ee-75edd26b4b74",
"name": "cron",
"description": "cron",
"enabled": true,
"schedule": {
"kind": "cron",
"expr": "0 7 * * *"
},
"sessionTarget": "isolated",
"wakeMode": "next-heartbeat",
"payload": {
"kind": "agentTurn",
"message": "cron",
"deliver": true,
"channel": "feishu",
"to": "ou_XXXXXXXXXXX"
}
}
]
}
频道检测
- 获取频道类型:从运行时
channel属性获取(如feishu) - 获取用户 ID:从当前会话或消息上下文获取(如
ou_xxxx) - 始终自动检测:使用发起请求的原始频道,不要硬编码
消息内容指南
- 避免纯文本消息,需要包含让 Agent 生成响应的指令
- 使用完整的指令句,确保 Agent 处理后产生可见回复
实现步骤
- 检测当前频道类型和用户 ID
- 将用户的时间请求转换为时间戳(毫秒)或间隔毫秒数
- 构建完整的 job 配置(固定字段 + 动态字段)
- 调用 API 创建定时任务
- 确认创建成功,告知用户
常见坑点
| 错误做法 | 正确做法 |
|---|---|
| 硬编码 channel 和 to | 从当前上下文自动检测 |
sessionTarget 设为 main |
必须设为 isolated |
deliver 缺失或设为 false |
必须设为 true |
enabled 缺失或设为 false |
必须显式设为 true |
payload.to 缺失或为空 |
必须填写,否则消息无法送达 |