Claude-skill-registry discord-chat-summary
Summarize Discord chat messages across servers. Use when user asks for chat summary, digest, highlights, recap, or overview of Discord conversations.
git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/discord-chat-summary" ~/.claude/skills/majiayu000-claude-skill-registry-discord-chat-summary && rm -rf "$T"
skills/data/discord-chat-summary/SKILL.mdDiscord 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
flow instead/discord-quickstart - 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
flow to help them sync/discord-quickstart - 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:
- oldest message dateservers[].date_range.first_message
- newest message dateservers[].date_range.last_message
- total days of dataservers[].date_range.days_covered
- messages per channelservers[].channels[].message_count
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 headers from the past 7 days |
| "this week" | Messages from current week (Monday-Sunday) |
| "since Jan 1" | Messages from 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
to list available serverspython ${CLAUDE_PLUGIN_ROOT}/tools/discord_manifest.py - Reads all
files from paths in manifestmessages.md - Filters to only include
through## 2025-12-27## 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
to find #general channel pathpython ${CLAUDE_PLUGIN_ROOT}/tools/discord_manifest.py - 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
skilldiscord-sync - At least one server/channel should have data in
directory (relative to cwd)./data/
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
to pull fresh messages before summarizingdiscord-sync - Use
to view full message details after identifying interesting discussionsdiscord-read