Summarize Discord chat messages across servers. Use when user asks for chat summary, digest, highlights, recap, or overview of Discord conversations.
/plugin marketplace add lycfyi/community-agent-plugin/plugin install discord-agent@community-agent-marketplaceThis skill inherits all available tools. When active, it can use any tool Claude has access to.
Generate summaries of synced Discord chat messages. Claude reads the message files directly and produces a concise summary of key discussions, topics, and activity.
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.
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:
| 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
Produce a summary including:
After generating the summary, update the user profile to track engagement and learn interests:
# Add engagement for servers/channels summarized
python ${CLAUDE_PLUGIN_ROOT}/tools/discord_profile.py --add-interest "TOPIC_FROM_SUMMARY"
Or programmatically via ProfileManager:
from lib.profile import get_profile
profile = get_profile()
profile.learn_from_summary(
servers=["Claude Developers"], # Servers that were summarized
channels=["general", "help"], # Channels that were summarized
topics=["API usage", "new features"] # Key topics extracted from summary
)
This allows the profile to:
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