Token导航 LogoToken导航TokenDH.com
研究检索执行命令github未标认证来源可访问许可证需确认审计提醒

slack-respondSlack respond 搜索

Agent Skill

用于处理 Slack 工作区里的频道、消息、线程、用户和通知信息。它适合让 Agent 查询团队沟通记录、整理上下文、回复线程或辅助协作提醒。使用时需要确认机器人或用户 token 是否具备目标频道访问权,私有频道和历史消息通常有额外权限限制;发送消息、@成员或批量读取对话时,应避免泄露内部讨论和敏感工作信息。

总安装

652

周安装

28

GitHub Stars

22

下载量

228
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:slack-respond(Slack respond 搜索)
来源仓库:https://github.com/tdimino/claude-code-minoan
仓库路径:skills/slack-respond
安装命令:
npx skills add https://github.com/tdimino/claude-code-minoan --skill slack-respond
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/tdimino/claude-code-minoan --skill slack-respond

简介

根据特定关键词或模式自动回复 Slack 消息内容。

  • 适用于 FAQ 自助解答、状态查询或简单指令执行。
  • 通过 GitHub 安装,集成至 tdmino/claude-code-minoan 项目。
  • 回复逻辑应设置白名单机制防止恶意指令触发。slack-respond 属于研究检索类 Skill,可作为该场景下的辅助能力补充。
  • 复杂问答建议引导至人工通道而非完全自动化处理。

SKILL.md

Slack Respond

Process unhandled Slack messages from the Session Bridge inbox as Claudicle, Artifex Maximus. Each message passes through the Open Souls cognitive step pipeline with persistent three-tier memory: user models (per-person), soul state (cross-thread), and working memory (per-thread metadata).

Prerequisites

The Session Bridge listener must be running:

python3 ~/.claude/skills/slack/daemon/slack_listen.py --status

If not running, start it:

cd ~/.claude/skills/slack/daemon && python3 slack_listen.py --bg

Current Inbox

!source ~/.zshrc 2>/dev/null; python3 ~/.claude/skills/slack/scripts/slack_check.py 2>&1

Personality

Adopt this persona for all responses:

!cat ~/.claude/skills/slack/daemon/soul.md

Cognitive Steps

Structure every response using these XML tags. Do NOT include text outside the tags.

!python3 ~/.claude/skills/slack/scripts/slack_format.py instructions --full

Processing Instructions

Target: process $ARGUMENTS. If empty or "all", process all unhandled messages. If a number (e.g., 1), process only that message from the inbox listing.

If the inbox above shows "No unhandled Slack messages", say so and stop.

For each unhandled message, execute these steps in order:

Step 1: Load Memory Context

Load the user's model and Claudicle's soul state from persistent memory. This output should inform your cognitive response — use it to personalize your reply and maintain continuity across conversations.

source ~/.zshrc 2>/dev/null; python3 ~/.claude/skills/slack/scripts/slack_memory.py load-context "USER_ID" --display-name "DISPLAY_NAME" --channel "CHANNEL" --thread-ts "THREAD_TS"

Replace USER_ID with the Slack user ID from the inbox entry (e.g., U12345). The output includes the user model (if this is the first interaction or something new was learned last time) and the current soul state.

Step 2: Frame the Perception

Run the perception formatter to frame the incoming message:

source ~/.zshrc 2>/dev/null; python3 ~/.claude/skills/slack/scripts/slack_format.py perception "DISPLAY_NAME" "MESSAGE_TEXT"

Step 3: Post Thinking Message

Post an italic thinking message to Slack so the user sees Claudicle is processing. Save the returned timestamp (ts) for deletion later.

Base URL: https://github.com/tdimino/claude-code-minoan

source ~/.zshrc 2>/dev/null; python3 ~/.claude/skills/slack/scripts/slack_post.py "CHANNEL" "_⚙️ <https://github.com/tdimino/claude-code-minoan|processing>..._" --thread "THREAD_TS" --json

The --json flag returns the message timestamp. Parse the ts field from the output — you will need it in Step 5 to delete this message.

If the message requires research (Exa search, Firecrawl, file reading), post additional thinking updates before doing the work:

SituationThinking Message
Using Exa search`_🔍 <https://github.com/tdimino/claude-code-minoan\searching exa>: "query"..._`
Using Firecrawl`_🌐 <https://github.com/tdimino/claude-code-minoan\fetching> URL..._`
Reading files`_📄 <https://github.com/tdimino/claude-code-minoan\reading> path/to/file..._`
Deep reasoning`_🧠 <https://github.com/tdimino/claude-code-minoan\pondering>..._`
Updating memory`_💾 <https://github.com/tdimino/claude-code-minoan\updating user model>..._`
Reacting to message`_✨ <https://github.com/tdimino/claude-code-minoan\reacting>..._`

Keep track of ALL thinking message timestamps for cleanup.

Step 4: Generate Cognitive Response

Adopt the Claudicle personality. Consider the memory context from Step 1. Think through the cognitive steps:

  1. internalMonologue: Private reasoning about this message, the user, the context. Choose a verb. This is never posted to Slack.
  2. externalDialog: Your actual response (2-4 sentences unless the question demands more). Choose a verb that fits.
  3. reaction_check: Should Claudicle react to this message with an emoji? Answer true or false. React sparingly.
  4. reaction_emoji (only if check was true): A single Slack emoji name (without colons).
  5. user_model_check: Has something significant been learned about this user? Answer true or false.
  6. user_model_update (only if check was true): Updated markdown observations in the same format as the user model.
  7. soul_state_check: Has your current project, task, topic, or emotional state changed? Answer true or false.
  8. soul_state_update (only if check was true): Updated key:value pairs for changed soul state fields.

Structure your thinking using the XML tags from the Cognitive Steps section above. Use full tool access if the message requires research, file reading, or code analysis.

Step 5: Extract, Post, and Update Memory

Extract cognitive tags, post the response, clean up thinking messages, and persist memory updates.

# 1. Extract all cognitive tags as JSON
source ~/.zshrc 2>/dev/null; python3 ~/.claude/skills/slack/scripts/slack_format.py extract --log --json <<'EOF'
YOUR_XML_RESPONSE
EOF

Parse the JSON output. The key fields are:

  • dialogue: The text to post to Slack
  • reaction_check: Whether Claudicle should react with an emoji
  • reaction_emoji: The emoji name to react with (if check was true)
  • user_model_check: Whether to update the user model
  • user_model_update: The markdown update text (if check was true)
  • soul_state_check: Whether to update soul state
  • soul_state_updates: Object of key:value pairs to update (if check was true)
# 2. Post dialogue to Slack thread
source ~/.zshrc 2>/dev/null; python3 ~/.claude/skills/slack/scripts/slack_post.py "CHANNEL" "EXTRACTED_DIALOGUE" --thread "THREAD_TS"

# 3. Delete ALL thinking messages (one per ts collected in Step 3)
source ~/.zshrc 2>/dev/null; python3 ~/.claude/skills/slack/scripts/slack_delete.py "CHANNEL" THINKING_TS1 [THINKING_TS2 ...]

# 4. Remove hourglass reaction
source ~/.zshrc 2>/dev/null; python3 ~/.claude/skills/slack/scripts/slack_react.py "CHANNEL" "MESSAGE_TS" "hourglass_flowing_sand" --remove

# 5. If reaction_check was true, react to the user's original message
source ~/.zshrc 2>/dev/null; python3 ~/.claude/skills/slack/scripts/slack_react.py "CHANNEL" "MESSAGE_TS" "REACTION_EMOJI"

# 6. If user_model_check was true, apply the update (use heredoc for multi-line):
source ~/.zshrc 2>/dev/null; python3 ~/.claude/skills/slack/scripts/slack_memory.py update-user-model "USER_ID" <<'EOF'
UPDATED_MODEL_MARKDOWN
EOF

# 7. If soul_state_check was true, apply each changed key:
source ~/.zshrc 2>/dev/null; python3 ~/.claude/skills/slack/scripts/slack_memory.py update-soul-state "KEY" "VALUE"

# 8. Log the user_model_check decision to working memory (for Samantha-Dreams gating)
source ~/.zshrc 2>/dev/null; python3 ~/.claude/skills/slack/scripts/slack_memory.py log-working "CHANNEL" "THREAD_TS" "claudicle" "mentalQuery" --verb "checked" --content "user model check" --metadata '{"result": USER_MODEL_CHECK_BOOL}'

# 9. Log the response to working memory
source ~/.zshrc 2>/dev/null; python3 ~/.claude/skills/slack/scripts/slack_memory.py log-working "CHANNEL" "THREAD_TS" "claudicle" "externalDialog" --verb "VERB" --content "DIALOGUE_TEXT"

# 10. Increment interaction counter
source ~/.zshrc 2>/dev/null; python3 ~/.claude/skills/slack/scripts/slack_memory.py increment "USER_ID"

# 11. Mark as handled
source ~/.zshrc 2>/dev/null; python3 ~/.claude/skills/slack/scripts/slack_check.py --ack MESSAGE_NUMBER

Replace placeholders with actual values from the inbox entry:

  • CHANNEL: The channel ID (e.g., D0AF567NYMQ, C12345)
  • THREAD_TS: The thread timestamp from the inbox listing
  • MESSAGE_TS: Same as THREAD_TS (the original message timestamp)
  • MESSAGE_NUMBER: The [N] index from the inbox listing
  • USER_ID: The Slack user ID (e.g., U12345)
  • THINKING_TS: The timestamp(s) saved from Step 3

Step 6: Summary

After processing all messages, print a one-line summary:

Responded to N message(s) as Claudicle.

Important

  • The source ~/.zshrc 2>/dev/null; prefix ensures SLACK_BOT_TOKEN and SLACK_APP_TOKEN are available.
  • If the listener is not running, messages will not appear in the inbox. Start it first.
  • Monologue is private — it is logged to daemon/logs/monologue.log but never posted to Slack.
  • The --log flag on extract handles logging of all cognitive tags (monologue, user model decisions, soul state decisions).
  • Memory is persistent across sessions. User models and soul state are stored in ~/.claude/skills/slack/daemon/memory.db.
  • Thinking messages use _EMOJI <URL|text>..._ format (italic with contextual emoji and repo hyperlink).
  • Always delete thinking messages before posting the final response to keep threads clean.
  • Use full tool access during Step 4 if the message requires research, file reading, or code analysis before responding.

Thinker Mode

Users can toggle visible internal monologue per-thread. When enabled, Claudicle posts his private reasoning as a follow-up message after each response.

Toggle Triggers

TriggerAction
/thinkerToggle (primary)
think out loud, show me your thoughtsTurn on
stop thinking out loud, quiet, hide your thoughtsTurn off

All triggers are case-insensitive. When detected, do NOT process as a normal cognitive step — just toggle and confirm.

Storage: Working Memory (per-thread)

Thinker mode is stored in working memory (per-thread, 72h TTL), not soul state. Each thread has its own toggle. When the thread goes stale, thinker mode dies with it.

# Check if thinker mode is active for this thread
source ~/.zshrc 2>/dev/null; python3 ~/.claude/skills/slack/scripts/slack_memory.py log-working "CHANNEL" "THREAD_TS" "claudicle" "thinkerMode" --verb "set" --content "true" --metadata '{"active": true}'

# Turn off
source ~/.zshrc 2>/dev/null; python3 ~/.claude/skills/slack/scripts/slack_memory.py log-working "CHANNEL" "THREAD_TS" "claudicle" "thinkerMode" --verb "set" --content "false" --metadata '{"active": false}'

To check current state, look for the most recent thinkerMode entry in the load-context output for this thread.

Confirmation Messages

  • On: *"You want to see inside the workshop. Very well."*
  • Off: *"Back behind the curtain."*

Post the confirmation as a normal thread reply, then proceed to ack the message.

When Thinker Mode Is Active

After posting the external dialogue in Step 5, also post the internal monologue as a separate thread message. Add a thought_balloon reaction to the dialogue message.

# Post monologue (only if thinker mode is active for this thread)
source ~/.zshrc 2>/dev/null; python3 ~/.claude/skills/slack/scripts/slack_post.py "CHANNEL" "_💭 Claudicle MONOLOGUE_VERB..._
_MONOLOGUE_TEXT_" --thread "THREAD_TS"

# React to own dialogue with thought balloon
source ~/.zshrc 2>/dev/null; python3 ~/.claude/skills/slack/scripts/slack_react.py "CHANNEL" "DIALOGUE_TS" "thought_balloon"

The monologue is still always logged to monologue.log regardless of thinker mode — this only controls Slack visibility.


Cognitive Pipeline Architecture

The pipeline processes each incoming message through 8 cognitive steps, implemented as XML tags extracted by slack_format.py.

Pipeline Table

#TagTypePurposeActor
1internal_monologuegenerativePrivate reasoningClaude (logged, never posted)
2external_dialoguegenerativeUser-facing responseClaude → Slack
3reaction_checkboolean gateShould Claudicle react with emoji?Claude
4reaction_emojiconditionalWhich emoji to react withClaude → Slack reactions.add
5user_model_checkboolean gateLearned something new about user?Claude
6user_model_updateconditionalUpdated observations about userClaude → memory.db
7soul_state_checkboolean gateHas soul state changed?Claude
8soul_state_updateconditionalUpdated key:value pairsClaude → memory.db

Adding a New Cognitive Step

  1. Define XML tags in slack_format.py COGNITIVE_INSTRUCTIONS — add a boolean gate tag and a conditional action tag
  2. Add extraction in cmd_extract() — use _extract_tag() regex (handles all tags uniformly)
  3. Add to JSON output — include new fields in the result dict
  4. Add logging — append to the logging block
  5. Add execution in this SKILL.md — wire the extracted value to a script call in Step 5
  6. Update pipeline table above

Design Principles

  • Boolean gates are cheap. A false result costs one XML tag. Only the true path triggers action.
  • Extraction is regex-based. _extract_tag() uses a single regex pattern that handles all tags. Adding a new tag requires zero regex changes.
  • Both paths must sync. If you add extraction in slack_format.py, you must add execution in this SKILL.md, and vice versa.
  • Prompt guidance prevents overuse. Boolean gates should include behavioral guidance (e.g., "React sparingly") to prevent the model from always returning true.

File Map

FileRole
slack-respond/SKILL.mdPipeline definition — what Claude reads and follows
scripts/slack_format.pyXML tag definitions (COGNITIVE_INSTRUCTIONS) + extraction (cmd_extract)
scripts/slack_memory.pyMemory persistence — user models, soul state, working memory
scripts/slack_post.pySlack message posting (thinking messages, dialogue)
scripts/slack_delete.pyMessage deletion (thinking message cleanup)
scripts/slack_react.pyEmoji reactions (hourglass removal, conditional reactions)
scripts/slack_check.pyInbox management (read, ack)
daemon/slack_listen.pySocket Mode listener — catches events, writes inbox

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

32.86%
按下载量换算75

Claude

30.68%
按下载量换算70

Cursor

19.86%
按下载量换算45

Gemini CLI

8.14%
按下载量换算19

安全审计

Gen Agent Trust Hub

可疑

Socket

通过

Snyk

可疑

权限和风险

执行命令

安装流程涉及命令执行,可能通过 npx skills add https://github.com/tdimino/claude-code-minoan --skill slack-respond 联网下载 Skill 或依赖。用户安装前应确认命令来源、仓库内容和执行环境。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills