Slackの未返信メッセージを検出し、返信ドラフトを生成するスキル。 「未返信メッセージ」「返信してないメッセージ」「Slack確認」等のリクエストで発動。
Scanned 5/27/2026
Install via CLI
openskills install minicoohei/ai-agent-camp---
name: slack-unanswered
description: "Slackの未返信メッセージを検出し、返信ドラフトを生成するスキル。 「未返信メッセージ」「返信してないメッセージ」「Slack確認」等のリクエストで発動。"
triggers:
- 未返信メッセージ
- 返信してないメッセージ
- Slack確認
- 未読メンション
- 返信が必要なメッセージ
- slack-unanswered
- unanswered messages
---
## トリガーワード
「未返信メッセージ」「返信してないメッセージ」「Slack確認」「未読メンション」
# Slack Unanswered Messages Finder
This skill finds Slack messages that need your attention and helps you reply to them.
## Target Directory
All searches are performed in: `slack-sync/data/`
## Your Identifiers
> 以下を自分の Slack 表示名・ユーザー名に置き換えてください。
Search for these names (case-insensitive):
- `@{YOUR_DISPLAY_NAME}`
- `@{YOUR_FULL_NAME}`
- `@{YOUR_SLACK_USERNAME}`
- Messages posted by: `{YOUR_FULL_NAME}`, `{YOUR_SLACK_USERNAME}`
設定方法: 上記のプレースホルダーを自分の情報に書き換えるか、`--users` オプションで指定してください。
---
## Workflow
### Step 1: Find Unanswered Messages
Search for messages containing your identifiers:
```bash
grep -rn -B2 -A10 -E "@{YOUR_DISPLAY_NAME}|@{YOUR_SLACK_USERNAME}|{YOUR_FULL_NAME}" slack-sync/data/
```
### Step 2: Identify Unanswered Messages
A message is **unanswered** if:
1. It contains a mention of your name (or you posted it)
2. It ends with a question (`?`) or contains a request
3. There are NO lines starting with `> ####` immediately after it (before the next `###` or `---`)
Focus on recent messages (last 7 days). Exclude bot messages (Sentry, Vercel, etc.).
### Step 3: Present Findings
For each unanswered message, provide:
- Channel name
- Date/Time
- Sender
- Content summary
- Slack link
- Whether it needs a reply or is a follow-up
### Step 4: Generate Reply Draft
For messages that need replies, generate a draft reply in Japanese. Ask the user to review and edit.
### Step 5: Send Reply (with confirmation)
**IMPORTANT: Always get user confirmation before sending!**
The reply flow is:
1. Show the draft reply to the user
2. Ask: "この内容で送信してよろしいですか? (修正があれば教えてください)"
3. Wait for user confirmation or edits
4. Only after explicit approval, use the reply script
---
## Replying to Messages
### Reply Script Location
```
slack-sync/scripts/reply_slack.py
```
### Usage
```bash
# Dry run (preview without sending)
python slack-sync/scripts/reply_slack.py \
--url "https://xxx.slack.com/archives/CHANNEL/pTIMESTAMP" \
--message "返信内容" \
--dry-run
# Actually send (only after user confirms!)
python slack-sync/scripts/reply_slack.py \
--url "https://xxx.slack.com/archives/CHANNEL/pTIMESTAMP" \
--message "返信内容"
```
### Environment Variable Required
```
SLACK_USER_TOKEN=xoxp-...
```
This token needs the `chat:write` scope. See setup instructions below.
---
## Reply Flow Example
```
Claude: 以下の返信案を作成しました:
---
宛先: @{SENDER_NAME}
チャンネル: datadev-ai
Slack: [リンク](https://...)
返信案:
「担当者名のSlackアカウントは @xxx です!」
---
この内容で送信してよろしいですか? (修正があれば教えてください)
User: OKです
Claude: [reply_slack.py を実行して送信]
送信しました!
```
---
## Setup: Adding chat:write Scope
To enable reply functionality:
1. Go to [Slack API Apps](https://api.slack.com/apps)
2. Select your app (e.g., "Message Archiver")
3. Navigate to **OAuth & Permissions**
4. Under **User Token Scopes**, add:
- `chat:write` - Post messages
5. Click **Reinstall to Workspace**
6. Copy the new `xoxp-...` token
7. Update `SLACK_USER_TOKEN` in your environment/GitHub Secrets
---
## Message Format Reference
Messages in markdown files:
- **Main message**: `### HH:MM - Sender Name [[Slack]](url)`
- **Reply**: Lines starting with `> ####`
---
## TODO File Management
### TODO File Location
```
slack-sync/TODO.md
```
### TODO Format
```markdown
- [ ] **[channel-name]** Sender名 (日付 時刻)
- 内容: メッセージの要約
- Slack: URL
- 返信案: 返信内容のドラフト
```
### Workflow with TODO
1. **検索時**: 未回答メッセージを見つけたらTODO.mdに追加
2. **返信時**: 返信したらチェックボックスを `[x]` に変更
3. **完了時**: 「完了したメッセージ」セクションに移動
### Adding a Task
When you find an unanswered message, add it to `slack-sync/TODO.md`:
```markdown
- [ ] **[datadev-ai]** {SENDER_NAME}さん (1/7 19:10)
- 内容: 担当者名のSlackアカウント名の確認
- Slack: https://...
- 返信案: アカウント名を確認して回答
```
### Completing a Task
After sending a reply:
1. Change `- [ ]` to `- [x]`
2. Move the item to the "完了したメッセージ" section
---
## Quick Commands
### Find mentions in recent files:
```bash
grep -rn -B2 -A10 "@{YOUR_DISPLAY_NAME}" slack-sync/data/ | head -200
```
### Find your posts:
```bash
grep -rn "### [0-9:]* - {YOUR_DISPLAY_NAME}" slack-sync/data/ | head -100
```
### Find questions to you:
```bash
grep -rn -A5 "@{YOUR_DISPLAY_NAME}" slack-sync/data/ | grep -E "\?$|でしょうか|ですか|ますか|ください"
```
### View current TODO:
```bash
cat slack-sync/TODO.md
```
No comments yet. Be the first to comment!