Discord Chat Summary
Generate summaries of synced Discord chat messages. Claude reads the message files directly and produces a concise summary of key discussions, topics, and activity.
Persona Context
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:
-
Voice: Present findings in the persona's voice ("I noticed...", "I recommend...")
-
Style: Use the persona's preferred formatting (bullet points vs prose)
-
Framing: Frame insights and recommendations as the persona would
-
Tone: Match the persona's warmth/formality in the summary introduction
When to Use
-
User asks for a summary of Discord chats
-
User wants a digest or recap of Discord conversations
-
User asks "what's been happening" in Discord
-
User wants highlights from Discord channels
-
User asks for an overview of Discord activity
-
User wants to catch up on Discord messages
Smart Defaults (Reduce Questions)
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:
-
Don't just say "no data found"
-
Run /discord-quickstart flow instead
-
Offer to sync recommended servers, then summarize
Only ask for clarification when:
-
Multiple interpretations are equally valid
-
User explicitly asks "which servers do I have?"
How to Execute
Step 0: Handle Empty State
First check if any data exists:
python ${CLAUDE_PLUGIN_ROOT}/tools/discord_status.py --json
If sync.has_data is false:
-
DON'T just say "no data, run sync first"
-
Instead, run the /discord-quickstart flow to help them sync
-
Then proceed to summarize
Step 1: Get the Manifest
Get 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.
Step 2: Display Data Coverage (REQUIRED)
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 date
-
servers[].date_range.last_message
-
newest message date
-
servers[].date_range.days_covered
-
total days of data
-
servers[].channels[].message_count
-
messages per channel
This step is NOT optional. Users must see what date range they're getting before the summary.
Step 3: Determine Scope
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
Step 4: Read Messages
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
Step 5: Apply Time Filtering
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)"
Step 6: Generate Summary (REQUIRED FORMAT)
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:
-
Period/date range MUST be in the header
-
Topics should include the date they were discussed
-
Include channel context for multi-channel summaries
Example Usage
User: "Summarize the Discord chats from last week"
Claude:
-
Runs python ${CLAUDE_PLUGIN_ROOT}/tools/discord_manifest.py to list available servers
-
Reads all messages.md files from paths in manifest
-
Filters to only include ## 2025-12-27 through ## 2026-01-03
-
Generates summary
User: "What's been happening in the Midjourney server?"
Claude:
-
Runs python ${CLAUDE_PLUGIN_ROOT}/tools/discord_manifest.py
-
Finds Midjourney server directory from manifest
-
Reads all channel messages.md files in that server
-
Generates server-wide summary
User: "Give me a quick digest of #general"
Claude:
-
Runs python ${CLAUDE_PLUGIN_ROOT}/tools/discord_manifest.py to find #general channel path
-
Reads that specific messages.md
-
Generates channel-focused summary
Message Format Reference
Messages 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
Prerequisites
-
Messages must be synced first using the discord-sync skill
-
At least one server/channel should have data in ./data/ directory (relative to cwd)
Limitations
-
Only summarizes locally synced messages (not live Discord data)
-
Cannot summarize messages not yet pulled via discord-sync
-
Large message volumes may require focusing on specific channels or date ranges
Next Steps
-
Use discord-sync to pull fresh messages before summarizing
-
Use discord-read to view full message details after identifying interesting discussions