Slackの未返信メッセージを検出し、返信ドラフトを生成するスキル。 「未返信メッセージ」「返信してないメッセージ」「Slack確認」等のリクエストで発動。
Scanned 9/5/2026
Install to Claude Code
npx -y skills add minicoohei/ai-agent-camp --skill slack-unanswered --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Slack Unanswered?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/minicoohei-slack-unanswered-ai-agent-camp)More formats (shields.io, HTML) on the badges page.
---
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
```
data/slack-sync/scripts/reply_slack.py
```
### Usage
```bash
# Dry run (preview without sending)
python data/slack-sync/scripts/reply_slack.py \
--url "https://xxx.slack.com/archives/CHANNEL/pTIMESTAMP" \
--message "返信内容" \
--dry-run
# Actually send (only after user confirms!)
python data/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
```
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!