slack-memory-retrieval
npx skills add https://github.com/krafton-ai/kira --skill slack-memory-retrieval
Agent 安装分布
Skill 文档
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.