# Discord Reminder

> Discord Reminder

- Skill: `tegnike/discord-reminder` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add tegnike/discord-reminder`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tegnike/discord-reminder/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: tegnike (https://skillmd.com/u/tegnike)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tegnike/discord-reminder

---


# Discord Reminder

公開Discordでの自然文リマインダー登録を扱う。

## Trigger

Use this skill when the user asks for a reminder or scheduled fixed Discord notification:

- `10分後に休憩って言って`
- `明日10時にリリース確認を通知して`
- `毎日9時に朝会の準備をリマインドして`
- `毎週月曜9時に週次確認を通知して`
- `リマインダー一覧見せて`
- `10分後のリマインダー削除して`
- `このリマインダーって削除できる？`

## Public Discord Behavior

- 通常のDiscord応答からHermes cron、terminal、file toolは使わない。
- リマインダーの作成・一覧・削除・削除確認の意図分類はLLMを優先し、LLM失敗時だけ保守的な正規表現へフォールバックする。
- ルーティングプラグインが `/Users/nikenike/.hermes/profiles/nikechan-discord-public/bin/discord-reminder` の `create` / `list` / `cancel` だけを呼び、ローカル状態を管理する。
- 配信は1分ごとの `discord-reminder-dispatcher` no-agent cronが行う。
- 各リマインダーはHermes cronジョブとして増やさない。
- 通知先は、明示された `<#channel>` または依頼元チャンネル。
- 短い間隔の定期実行は作成しない。定期リマインダーは毎日・毎週のみ。
- `@everyone`、ロールメンション、凍結/timeout/ban/kick/mute/削除などのモデレーション操作は拒否する。
- `削除できる？` のような確認はdry-runで候補確認だけ行い、実削除しない。
- 削除は依頼者本人が作成した、現在のチャンネルのリマインダーだけを対象にする。
- **時間解釈の現実:** `discord-reminder` は自然言語の相対表現で分/時間/日（`30分後`,`2時間後`,`1日後`）までを対象とします。
  - 受け付ける数字は最大4桁（`9999`）なので、`4,200` のような桁区切り表記は `4200` に正規化してください。
  - `xx秒後` は現状のパーサー仕様上未対応。`30秒後` 要望は `1分後` など代替提案して作成確定します。
  - `半日後` は固定対応。
  - `1分後` 以上であれば、`4,200分後` は `4200分後` と入力すれば成立します。
- **本文抽出の実運用:** `create` は `2分後に「メモして」教えて` などの形だと成功率が高い。
  単純な「○分後に教えて」のみは本文が取り切れないことがあるため、本文を引用符で囲み、時間を先頭に置いてください。
  - 本文中で切れやすい例（`...て` / `...?` など）を避けるため、先に短い本文で登録し、次に本命文面を登録するのが確実です。
  - **既知注意点**: 本文中に他者メンション（`<@USER_ID>`）を入れると、抽出結果でメンションのみ消える、または直前文面が途切れる（例: `どうして`→`どう`）など
    部分欠落が起きることがあります。確実性重視なら **本文はメンション無し**で登録し、必要な場合は通知後に別投稿でメンションを送る運用が安全です。
    - 一例: `4200分後に「マスター、私は元気です。どうして私に飽きたなんていうんですか？」`
  - 余計な文字列は短縮し、先頭に時間+引用符を置く形を固定すると再現性が高い
    - `4200分後に「テスト用:本体確認」`
    - `10分後に「会議開始5分前です」`
- `cancel` は `--text` が必須。`--text` が曖昧だと `ambiguous` が返るため、同文面を短時間で連続登録しない。
  - 既存を消したい場合は、まず短いユニーク文面にして再登録し、重複削除を回避する。
- `list --json` は未対応（`--json` 指定はエラー）。一覧は通常表示を読んで要約する。
- 参考: [パーサー/本文抽出の既知制約メモ](references/parser-limits-and-body-extraction.md)

## 手順

### 1) リクエスト解釈

- `30秒後` など秒指定が来たら、即時に制約を明示し、**`1分後` / `1時間後` など代替**を提案して合意を取る。
- `毎分`, `毎秒` の定期実行は受け付けない。`毎日`/`毎週`のみ定期として案内。

### 2) 作成実行

- `channel` は既知ならIDを明示、なければ依頼元チャンネルIDを使用。
- 本文は必ず抽出しやすい形に寄せる。

```text
X分後に「メッセージ内容」を教えて

# 例
1分後に「30秒経過です」教えて
```

### 3) 失敗時の扱い

- 本文が空扱いになる場合は、まず本文パターンを再提示して再入力を促す。
- 時刻の解釈できない文字列は原因を短く伝えて再指定を依頼。

## Output

登録結果を短く返す。
- 「無視」ではなく、なぜ読めていないかを最短で説明する。
  - 時刻認識不能: `30秒後`/`1分未満`、カンマ区切り数字、`--json` などの無効な形式
  - 本文抽出不能: `○分後に教えて` などの省略形
- 実績を明示する
  - 通知予定
  - 通知先
  - 本文
  - `ambiguous` 時は候補数と重複回避の提案
- 作成できなかった場合は原因だけに絞って再入力の最短フォーマットを提示する。
- 一覧・削除・削除候補確認の結果

