Refactor high-complexity React components in Dify frontend. Use when `pnpm analyze-component...
npx skills add gililivnat/cursor-routines --skill "review-slack-dms"
Install specific skill from multi-skill repository
# Description
Reviews personal Slack direct messages from the last 24 hours. Flags important messages and summarises key conversations. Use as part of the daily start-of-day routine.
# SKILL.md
name: review-slack-dms
description: Reviews personal Slack direct messages from the last 24 hours. Flags important messages and summarises key conversations. Use as part of the daily start-of-day routine.
Review Slack DMs
When to Use
This skill is called by the start-of-day routine (step 1). It can also be run independently when asked to check Slack DMs.
Inputs
- Your Slack user ID: set
YOUR_SLACK_USER_IDbelow - Time window: last 24 hours from now
Tools
Slack MCP
| Tool | Purpose |
|---|---|
slack_read_channel |
Read DM history by passing a user_id as channel_id |
slack_search_public |
Search for messages sent to the user (to:<@YOUR_SLACK_USER_ID>) |
slack_read_thread |
Read thread replies for deeper context on important messages |
slack_search_users |
Look up user details when needed |
Workflow
Step 1 -- Find recent DMs
Search for messages directed to the user in the last 24 hours:
Tool: slack_search_public
Arguments:
query: "to:<@YOUR_SLACK_USER_ID>"
sort: "timestamp"
sort_dir: "desc"
after: [Unix timestamp for 24 hours ago]
Also search for messages from the user to capture full conversations:
Tool: slack_search_public
Arguments:
query: "from:<@YOUR_SLACK_USER_ID>"
sort: "timestamp"
sort_dir: "desc"
after: [Unix timestamp for 24 hours ago]
Step 2 -- Find threads the user is part of
Search for threads the user has participated in across all channels in the last 24 hours. This catches threads where someone may have replied and is waiting for a response.
Tool: slack_search_public
Arguments:
query: "from:<@YOUR_SLACK_USER_ID> is:thread"
sort: "timestamp"
sort_dir: "desc"
after: [Unix timestamp for 24 hours ago]
For each thread found, read the full thread using slack_read_thread. Check whether there are replies after the user's last message in the thread β these are the ones that may need a quick response.
Step 3 -- Read important threads
For messages from Step 1 with thread replies, read the full thread for context:
Tool: slack_read_thread
Arguments:
channel_id: [channel from message]
message_ts: [thread timestamp]
Step 4 -- Categorise and prioritise
For each conversation (DMs and thread replies), assess:
- Urgency: Does this need a reply today?
- Topic: What is this about? (product, team, ops, social)
- Action needed: Is the user expected to do something?
- Thread waiting: Is someone waiting for the user's reply in a thread?
Step 5 -- Produce summary
Write a concise summary grouped by urgency.
Output
Generate an HTML file using the routine HTML template at skills/system/routine-html-template.md. Read that file for the full CSS and component patterns.
File: Save to your output folder/morning-briefing-YYYY-MM-DD.html
Open: Run open on the file so it launches in the browser.
Inline: Also provide a 2-3 line plain-text summary in the conversation.
Note: This skill's HTML output may be combined with other morning routine outputs (product channels, suggested tasks, metrics) into a single morning briefing HTML file. If running as part of the start-of-day routine, hold the HTML content and let the summarise-slack-and-suggest-tasks skill combine all sections into one file.
HTML structure for this skill
<div class="section">
<div class="section-title">Slack DMs Β· Last 24 hours</div>
<!-- Repeat for each DM needing a response -->
<div class="card urgent">
<div class="card-label urgent">Needs reply</div>
<div class="card-title"><span class="person">[Person]</span> Β· [Topic]</div>
<div class="card-body">[1-line summary of what they need]</div>
<div class="card-meta">[time ago]</div>
</div>
<!-- FYI items use the highlight card -->
<div class="card highlight">
<div class="card-label highlight">FYI</div>
<div class="card-title"><span class="person">[Person]</span> Β· [Topic]</div>
<div class="card-body">[1-line summary]</div>
<div class="card-meta">[time ago]</div>
</div>
<!-- Threads to watch use the warning card -->
<div class="card warning">
<div class="card-label warning">Watch</div>
<div class="card-title">[Thread description]</div>
<div class="card-body">[Why it matters]</div>
</div>
<!-- Threads the user is part of with new replies awaiting response -->
<div class="card urgent">
<div class="card-label urgent">Thread reply</div>
<div class="card-title"><span class="channel">#[channel]</span> Β· [Thread topic]</div>
<div class="card-body">[Who replied and what they said/asked]</div>
<div class="card-meta">[time ago]</div>
</div>
</div>
If there are no messages, output: <p class="quiet">No DMs in the last 24 hours.</p>
Guidelines
- Be concise: one line per conversation, not paragraphs
- Prioritise by urgency, not chronology
- If a message looks like it needs your input, flag it clearly
- Do not read messages older than 24 hours unless a thread started within the window
Change Log
| Date | Change |
|---|---|
| 16 Mar 2026 | Added Step 2: search for threads the user is part of with new replies needing response |
| 13 Mar 2026 | Initial version |
# Supported AI Coding Agents
This skill is compatible with the SKILL.md standard and works with all major AI coding agents:
Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.