/slack-unanswered
Slackの未返信メッセージを検出し、返信ドラフトを生成するスキル。 「未返信メッセージ」「返信してないメッセージ」「Slack確認」等のリクエストで発動。
$ npx -y skills add minicoohei/ai-agent-camp --skill slack-unanswered --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/slack-unanswered
Context preview
The summary Claude sees to decide when to auto-load this skill.
Slackの未返信メッセージを検出し、返信ドラフトを生成するスキル。 「未返信メッセージ」「返信してないメッセージ」「Slack確認」等のリクエストで発動。
SKILL.md
slack-unanswered.SKILL.mdname: 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:
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
# 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
- [ ] **[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`:
- [ ] **[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:
grep -rn -B2 -A10 "@{YOUR_DISPLAY_NAME}" slack-sync/data/ | head -200Find your posts:
grep -rn "### [0-9:]* - {YOUR_DISPLAY_NAME}" slack-sync/data/ | head -100Find questions to you:
grep -rn -A5 "@{YOUR_DISPLAY_NAME}" slack-sync/data/ | grep -E "\?$|でしょうか|ですか|ますか|ください"View current TODO:
cat slack-sync/TODO.md
Read more
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:
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
# 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
- [ ] **[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`:
- [ ] **[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:
grep -rn -B2 -A10 "@{YOUR_DISPLAY_NAME}" slack-sync/data/ | head -200Find your posts:
grep -rn "### [0-9:]* - {YOUR_DISPLAY_NAME}" slack-sync/data/ | head -100Find questions to you:
grep -rn -A5 "@{YOUR_DISPLAY_NAME}" slack-sync/data/ | grep -E "\?$|でしょうか|ですか|ますか|ください"View current TODO:
cat slack-sync/TODO.md
AI Agent Training for Non-Engineers - Complete Guide to Claude Code / Cursor / Codex ### ⚠️ Before you clone Official repository (maintained by the authors): Running AI agents from this repo grants them shell, file-write, and external-API permissions on your
Other skills on ai-agent-camp.
- /ab-test-setup
A/Bテストや実験の設計・実装を支援するスキル。 「A/Bテストを設計して」「スプリットテストしたい」「仮説を立ててテストしたい」「バリアントを比較」等のリクエストで発動。 トラッキング実装は analytics-tracking を参照。
Open skill - /agent-designer
マルチエージェントシステムのアーキテクチャ設計ツールキット。 「エージェントを設計して」「マルチエージェント構成」「エージェントのアーキテクチャ」「オーケストレーション設計」等のリクエストで発動。
Open skill - /analytics-tracking
アナリティクスのトラッキング設定・改善・監査を支援するスキル。 「トラッキングを設定」「GA4を導入」「コンバージョン計測」「イベントトラッキング」「UTMパラメータ」「GTMの設定」等のリクエストで発動。 A/Bテスト計測は ab-test-setup を参照。
Open skill - /article-writer
テーマからアウトライン生成→文体プロファイル適用→Markdown記事出力を行う記事執筆スキル。 挿絵マーカーの自動挿入、style-analyzerプロファイル参照による文体統一に対応。 「記事を書いて」「ブログ作成」「テーマで記事生成」等のリクエストで発動。
Open skill - /banner-creator
各種SNS・広告プラットフォーム向けのバナー/クリエイティブを生成するスキル。 X, Facebook, Instagram, PRTimes, YouTube, LINE, Web広告に対応。 「バナーを作って」「広告画像を生成」「SNS用の画像」「クリエイティブ制作」等のリクエストで発動。
Open skill - /bigquery-auth
GCPプロジェクト単位でBigQuery認証を設定するスキル。 gcloud設定プロファイルで複数プロジェクトを安全に分離管理。 「BigQueryに繋ぎたい」「BQ認証」「gcloud認証」「データ分析の認証設定」等のリクエストで発動。
Open skill

