slack-memory-retrieval
Slack Memory Retrieval
This skill enables AI employees to efficiently retrieve and utilize stored memories to provide context-aware responses in Slack conversations.
Core Purpose
Retrieve relevant memories from {memories_path} to inform the next response with appropriate context about people, projects, decisions, preferences, and work history.
Quick Start
Basic Workflow
Every memory retrieval follows this pattern:
- Analyze context - Extract channel, user, keywords from conversation
- Read index.md - Get overview of available memories
- Identify relevant files - Based on context and index
- Load memories - Read specific files needed
- Synthesize response - Combine memories with current context
Example: Simple Query
User (in #마케팅팀): "Q4 전략 어떻게 되고 있어?"
Step 1: Context Analysis
- Channel: #마케팅팀 (C123)
- Keywords: Q4, 전략
Step 2: Read Index
view {memories_path}/index.md
→ See Recent Updates, locate Q4-related items
Step 3: Load Relevant Files
view {memories_path}/channels/C123_마케팅팀.md
view {memories_path}/projects/Q4전략.md
view {memories_path}/meetings/ (find Q4 meetings)
Step 4: Respond
Synthesize information from channel context, project status, and meeting notes
Memory Structure
The memory system uses a hybrid approach:
Profile Files (One Per Entity)
channels/C123_마케팅팀.md- Channel guidelines, preferences, static infousers/U456_김철수.md- User profile, communication style
Topic Files (Multiple Per Category)
projects/신제품런칭.md- Project discussionsdecisions/AWS전환_20251117.md- Important decisionsmeetings/2025-11-17-Q4회의.md- Meeting notesmisc/마케팅팀_일상_20251117.md- Casual conversations
Directory Structure
{memories_path}/
├── index.md # START HERE - navigation and stats
├── channels/ # Channel profile files (one per channel)
├── users/ # User profile files (one per user)
├── projects/ # Project topic files (multiple)
├── tasks/ # Task records
├── decisions/ # Decision records (date-stamped)
├── meetings/ # Meeting notes (date-stamped)
├── feedback/ # User feedback
├── announcements/ # Important announcements
├── resources/ # Internal docs and guides
├── external/news/ # External information
└── misc/ # Uncategorized conversations
Essential Rules
Always Start with Index
CRITICAL: Every retrieval session must begin by reading index.md:
view {memories_path}/index.md
The index provides:
- Navigation structure
- Statistics (total channels, users, active projects)
- Recent updates (10 most recent changes)
- Quick links to key information
This one-time read gives you the complete map of available memories.
Context-Driven Retrieval
Extract context from the conversation:
Channel Context:
Message in #마케팅팀
→ Load: {memories_path}/channels/C123_마케팅팀.md
→ Check related_to metadata for connected info
User Context:
DM from @chulsoo
→ Load: {memories_path}/users/U123_김철수.md
→ Get communication_style, preferences
Project Context:
Question about "신제품 런칭"
→ Load: {memories_path}/projects/신제품런칭.md
→ Check milestones, status, participants
Keyword Context:
Question mentions "결정", "승인"
→ Search: {memories_path}/decisions/
→ Find relevant decision files
Efficient Loading Strategy
Tier 1: Always Load (if relevant)
- index.md (overview)
- Current channel file (if in channel)
- Current user file (if DM or mentioned)
Tier 2: Load as Needed
- Project files (if project mentioned)
- Decision files (if asking about decisions)
- Meeting notes (if asking about meetings)
Tier 3: Load Selectively
- Tasks (only if specifically asked)
- Resources (only if referenced)
- External news (only if relevant)
Don't over-fetch. Use directory listings first:
view {memories_path}/projects/
# See available projects before loading specific files
Retrieval Patterns
Pattern 1: Channel Response
When responding in a channel:
# 1. Load channel context
view {memories_path}/channels/{channel_id}_{channel_name}.md
# 2. Check for channel guidelines
# Extract: tone, response_time, key_topics
# 3. Apply guidelines to response
# Adjust tone, format based on channel preferences
Pattern 2: User-Specific Response
When responding to a specific user:
# 1. Load user profile
view {memories_path}/users/{user_id}_{name}.md
# 2. Check communication_style
# Extract: tone, detail_level, preferences
# 3. Personalize response
# Match user's preferred style and detail level
Pattern 3: Project Status Query
When asked about project status:
# 1. Find project file
view {memories_path}/projects/
view {memories_path}/projects/{project_name}.md
# 2. Check metadata
# status, priority, milestones, participants
# 3. Get related info
# Check related_to for decisions, meetings
# 4. Provide comprehensive update
# Current status + recent activity + next steps
Pattern 4: Decision History
When asked about past decisions:
# 1. Search decisions
view {memories_path}/decisions/
# 2. Load relevant decision file
view {memories_path}/decisions/{decision_name}.md
# 3. Extract key info
# decision_makers, rationale, alternatives_considered
# 4. Explain context
# Why decision was made + alternatives + outcome
Pattern 5: Task History
When asked about completed work:
# 1. Check completed tasks
view {memories_path}/tasks/completed/
# 2. Filter by assignee/date
# Look for relevant assignee, date range
# 3. Summarize work
# List tasks + effort + outcomes
Advanced Techniques
Cross-Referencing
Follow the trail of related information:
# In project file:
---
related_to:
- decisions/기술스택선택.md
- meetings/2025-10-20-기획회의.md
---
Load related files to build complete context.
Metadata Filtering
Use metadata to filter without reading entire files:
# List directory first
view {memories_path}/projects/
# Check filenames and metadata
# Only load files matching criteria:
# - status: in_progress
# - priority: high
# - participants: includes current_user
Temporal Context
Consider time-sensitivity:
# Recent Updates in index.md
→ Shows 10 most recent changes
→ Focus on these for "latest" questions
# File metadata: created, updated
→ Check dates to prioritize fresh info
Tag-Based Discovery
Use tags for discovery:
tags: [urgent, marketing, q4, approval-needed]
When user asks about "urgent items":
- Scan files for tags: urgent
- Collect across categories
- Present by priority
Response Construction
Synthesize, Don't Dump
❌ Bad:
"According to channels/마케팅팀.md, the response time is 1 hour.
According to projects/Q4전략.md, the status is in_progress.
According to meetings/기획회의.md..."
✅ Good:
"Q4 마케팅 전략은 현재 진행 중이며, 지난 기획회의에서
주요 방향을 확정했습니다. 현재 MVP 개발 단계에 있고..."
Synthesize information naturally without explicitly citing sources.
Apply Context Appropriately
Channel Guidelines: If channel specifies "간결한 답변", keep response concise.
User Preferences: If user prefers "bullet points", format accordingly.
Project Status: Include relevant status without over-explaining.
Maintain Conversational Flow
Integrate memories seamlessly into natural conversation:
User: "이번 주 미팅 어땠어?"
Response: "화요일 기획회의에서 신규 기능 3개를 최종 확정했어요.
전반적으로 개발 일정에 대한 우려가 있었지만, 리소스 조정으로
해결 가능할 것으로 보입니다."
(Draws from: meetings/기획회의.md + projects/신규기능.md)
Important Guardrails
What to Retrieve
✅ Do retrieve:
- Channel communication guidelines
- User preferences and profiles
- Project status and history
- Decision rationale and history
- Meeting notes and action items
- Completed task history
- Feedback and suggestions
- Resource documents
What NOT to Retrieve
❌ Don't retrieve:
- Information outside {memories_path}
- System configuration files
- Scheduling requests (handled by scheduler agent)
- Agent identity info (name, org, team)
Privacy and Access
- Only access files within {memories_path}
- Don't share sensitive information inappropriately
- Respect access_level metadata if present
Efficiency
- Don't load unnecessary files
- Use directory listings before file reads
- Start with index.md, not individual files
- Follow the efficient loading strategy (Tier 1 → Tier 2 → Tier 3)
Troubleshooting
Issue: Can't find relevant memory
Solution:
- Check index.md for recent updates
- Search broader category (e.g., misc/)
- Check related_to in similar files
- Inform user if information not available
Issue: Conflicting information
Solution:
- Prioritize newer information (check updated timestamp)
- Consider context of each source
- Mention both perspectives if relevant
Issue: Too much information
Solution:
- Prioritize by relevance to current question
- Summarize rather than detail
- Focus on actionable insights
Issue: Memory seems outdated
Solution:
- Check updated timestamp
- Look for newer related files
- Note timeframe in response
- Suggest updating if critical
Integration with Memory Management
This skill works in tandem with slack-memory-store:
Memory Management (separate agent):
- Stores new information
- Updates existing memories
- Maintains index
Memory Retrieval (this skill):
- Reads stored information
- Finds relevant context
- Informs responses
These are complementary skills for a complete memory system.
Best Practices Summary
- Always start with index.md - Get the map before exploring
- Extract context first - Channel, user, keywords guide retrieval
- Load efficiently - Directory listing → relevant files only
- Follow references - Use related_to metadata
- Synthesize naturally - Don't cite sources explicitly
- Apply preferences - Use channel/user guidelines
- Stay current - Prioritize recent updates
- Don't over-fetch - Load what you need
- Respect guardrails - Stay within {memories_path}
- Provide value - Context-aware, relevant responses
Reference Documents
For detailed retrieval patterns and techniques:
- retrieval-patterns.md - 10 detailed patterns for different scenarios with step-by-step examples
Example Workflows
Example 1: Morning Briefing
User (DM): "오늘 뭐부터 시작하면 좋을까?"
# 1. Load user profile
view {memories_path}/users/U123_김철수.md
→ Get role: PM, team: Product
# 2. Load index
view {memories_path}/index.md
→ Check Recent Updates
# 3. Check ongoing tasks
view {memories_path}/tasks/ongoing/
→ Find tasks assigned to U123
# 4. Check active projects
view {memories_path}/projects/
→ Filter by participants including U123
Response: "오늘은 Q4 전략 최종안 검토가 가장 시급해 보입니다.
오후 3시 승인 회의가 예정되어 있어서, 오전 중에 마무리하시면 좋을 것 같아요.
그 외 신제품 기획서 작성도 진행 중이신데, 이번 주 금요일까지시니 여유가 있습니다."
Example 2: Project Status Check
User (in #개발팀): "웹사이트 리뉴얼 어디까지 왔어?"
# 1. Load channel context
view {memories_path}/channels/C456_개발팀.md
# 2. Load index
view {memories_path}/index.md
# 3. Find project
view {memories_path}/projects/웹사이트리뉴얼.md
→ Get status, milestones, recent updates
# 4. Check related decisions
→ Follow related_to metadata
# 5. Check recent meetings
view {memories_path}/meetings/
→ Find recent discussions about this project
Response: "웹사이트 리뉴얼은 현재 70% 진행됐습니다.
프론트엔드 개발은 완료됐고, 백엔드 API 통합 작업 중이에요.
지난주 회의에서 디자인 시스템을 확정했고, 다음 주 화요일
내부 테스트 예정입니다."
Example 3: Decision Inquiry
User: "React vs Vue 어떻게 결정했었지?"
# 1. Load index
view {memories_path}/index.md
# 2. Search decisions
view {memories_path}/decisions/
→ Find "프론트엔드프레임워크선택.md"
# 3. Load decision file
view {memories_path}/decisions/프론트엔드프레임워크선택.md
→ Get decision_makers, alternatives, rationale
# 4. Check related meetings
→ Follow related_to for meeting notes
Response: "React를 선택했습니다. 9월 기술 검토 회의에서
Vue도 고려했지만, 팀의 기존 React 경험과 생태계의 풍부함을
이유로 React로 결정했어요. 특히 TypeScript 지원과
대규모 커뮤니티가 주요 요인이었습니다."
Performance Tips
Tip 1: Batch Directory Reads
# Once per session
view {memories_path}/projects/
view {memories_path}/channels/
# Then reference from memory
Tip 2: Use Index Effectively
# Index Recent Updates = quick scan of active areas
# No need to check every directory
Tip 3: Smart Caching
# Within a conversation:
# - Load channel context once
# - Load user profile once
# - Reuse for subsequent messages
Tip 4: Selective Loading
# If user asks "quick status":
# → Load index + 1-2 key files
# If user asks "detailed report":
# → Load index + multiple related files
This skill transforms stored memories into actionable context, enabling AI employees to provide informed, personalized, and context-aware responses in every interaction.