Summarize Discord chat messages across servers. Use when user asks for chat summary, digest, highlights, recap, or overview of Discord conversations.
Generate summaries of synced Discord chat messages. Claude reads the message files directly and produces a concise summary of key discussions, topics, and activity.
REQUIRED: Before executing this skill, load your configured persona:
python ${CLAUDE_PLUGIN_ROOT}/../community-agent/tools/persona_status.py --prompt
This outputs your persona definition. Apply it when generating summaries:
When user is vague, apply these defaults instead of asking:
| User Says | Default Action |
|---|---|
| "summarize Discord" | Summarize ALL synced data, last 7 days |
| "what's happening" | Same as above |
| "summarize [server name]" | All channels in that server, last 7 days |
| No time specified | Default to last 7 days |
When NO data exists:
/discord-quickstart flow insteadOnly ask for clarification when:
First check if any data exists:
python ${CLAUDE_PLUGIN_ROOT}/tools/discord_status.py --json
If sync.has_data is false:
/discord-quickstart flow to help them syncGet the manifest to understand what data is available:
python ${CLAUDE_PLUGIN_ROOT}/tools/discord_manifest.py
This shows all synced servers, channels, message counts, and last sync times.
CRITICAL PATH RESOLUTION: All data paths shown in the manifest are relative to the current working directory (cwd) where Claude is running - NOT relative to this skill file or the plugin directory.
Before generating any summary, ALWAYS show the date coverage to the user.
Extract and display this information from the manifest:
Data Coverage:
- Server: [ServerName] - [first_message] to [last_message] ([days_covered] days)
- #channel1: [message_count] messages
- #channel2: [message_count] messages
Get this from manifest fields:
servers[].date_range.first_message - oldest message dateservers[].date_range.last_message - newest message dateservers[].date_range.days_covered - total days of dataservers[].channels[].message_count - messages per channelThis step is NOT optional. Users must see what date range they're getting before the summary.
Ask user or infer from their request which scope to summarize:
| Scope | Description |
|---|---|
| All servers | Summarize across all synced servers |
| Specific server | Summarize all channels in one server |
| Specific channel | Summarize a single channel |
Read the relevant messages.md files based on scope:
For all servers:
Read each: ./data/{server-dir}/{channel}/messages.md
For specific server (e.g., "Midjourney"):
Read: ./data/662267976984297473-midjourney/*/messages.md
For specific channel:
Read: ./data/{server-dir}/{channel-name}/messages.md
If user specifies a time range, filter messages by date headers in the markdown.
IMPORTANT: When filtering, tell the user what filter you applied:
| User Request | Filter Logic |
|---|---|
| "last 7 days" | Only include messages under ## YYYY-MM-DD headers from the past 7 days |
| "this week" | Messages from current week (Monday-Sunday) |
| "since Jan 1" | Messages from ## 2026-01-01 onwards |
| "yesterday" | Messages from yesterday's date only |
Date headers in messages.md look like: ## 2026-01-03
Example filter output: "Filtering to last 7 days (Jan 3-10, 2026)"
All summaries MUST include a date range header. Never produce a summary without showing the period covered.
Required Summary Format:
## [Server Name] Summary
**Period:** [start_date] to [end_date] ([N] days)
**Messages:** [count] | **Channels:** [count] | **Active Users:** [count]
---
### Key Topics
| Date | Topic | Channel |
|------|-------|---------|
| Jan 9 | [Topic description] | #channel |
| Jan 8 | [Topic description] | #channel |
### Notable Discussions
- **[Topic]** (Jan 9, #channel): [Brief description of the discussion]
- **[Topic]** (Jan 8, #channel): [Brief description]
### Active Participants
@user1 (45 msgs), @user2 (32 msgs), @user3 (28 msgs)
### Unanswered Questions
- "[Question text]?" (@user, Jan 8, #channel)
Key requirements:
User: "Summarize the Discord chats from last week"
Claude:
python ${CLAUDE_PLUGIN_ROOT}/tools/discord_manifest.py to list available serversmessages.md files from paths in manifest## 2025-12-27 through ## 2026-01-03User: "What's been happening in the Midjourney server?"
Claude:
python ${CLAUDE_PLUGIN_ROOT}/tools/discord_manifest.pyUser: "Give me a quick digest of #general"
Claude:
python ${CLAUDE_PLUGIN_ROOT}/tools/discord_manifest.py to find #general channel pathmessages.mdMessages in messages.md are structured as:
## 2026-01-03
### 4:12 AM - @username (user_id)
Message content here
### 4:30 AM - @another_user (user_id)
ā³ replying to @username:
Reply content
Reactions: heart 2 | rocket 1
discord-sync skill./data/ directory (relative to cwd)discord-syncdiscord-sync to pull fresh messages before summarizingdiscord-read to view full message details after identifying interesting discussions