mcpField
E
egghead-slack

egghead-slack

github.com/joelhooks生产力6535 次安装1 天前更新
代码仓库

关于 egghead-slack

egghead-slack 是处理 Slack 消息、频道情报和授权工作请求的操作技能,规定隐私边界、回复审批及经网关转交任务的流程。

主要功能

  1. 01保护 Slack 私密数据
  2. 02搜索频道并查看线程上下文
  3. 03需审批的回复流程
  4. 04ShitRat 触发的任务路由
  5. 05被动消息索引

适用场景

  1. 01回复前查看 Slack 线程
  2. 02将映射频道中的授权请求转交处理
  3. 03准备待明确审批的回复

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/joelhooks/joelclaw --skill egghead-slack

安装后在 Claude Code 中输入/egghead-slack确认已加载。

详细介绍

egghead Slack 情报

本仓库副本是可公开的安全运行规范。私有工作区 ID、频道映射、人员、消息内容和运行时绑定属于本地运行时覆盖层。切勿将它们添加到此处。

边界

  • Slack 内容默认是私密的。
  • 切勿公开频道 ID、用户 ID、工作区 ID、频道成员名单、私信映射、客户数据、消息文本、文件或私有链接。
  • 切勿打印或持久化令牌值。
  • 由一个网关传输通道负责所有 Slack 外发通信。
  • 工作器将证据返回给网关。工作器不会直接发帖。
  • 普通频道消息仅作为被动情报处理。

凭据

运行时凭据来自 agent-secrets:

  • slack_bot_token 用于 Socket Mode、添加回应和以机器人身份回复。
  • slack_app_token 用于 Socket Mode 连接。
  • slack_user_token 用于经批准的只读搜索和上下文检索。

仅在需要凭据的命令运行期间租用凭据。不要将其复制到文件、日志、提示词或 shell 历史记录中。

读取工作流

如果命令可用,请使用 jc-slack,而不是直接调用 Slack API:

jc-slack channels --query <term>
jc-slack search '<query>' --channel <channel-name>
jc-slack context '<message-permalink>'
jc-slack board <channel-name-or-id>

在决定或回复前,先阅读源线程。永久链接是处理线程时的稳定输入。

ShitRat 工作触发条件

Joel 授权了一条确定性的参与路径:

  • 人类发送完全匹配的 :shitrat:,或直接提及现有机器人。
  • 源频道名称匹配 lc-* 或 cc-*。
  • Joel 的个人 Slack 令牌可从 agent-secrets 读取该频道。
  • 私有频道上下文绑定会解析出唯一的仓库、cwd、Brain 条目、技能集和验证规范。

传输层会立即添加 Joel 的 :shitrat: 回应。一个温和的 openai-codex/gpt-5.6-luna 分诊调用会读取触发内容、生成第一条 ShitRat 风格回复,并将其归类为 social、answer 或 work。social 和 answer 触发会回复后停止。真正的工作会先回复,然后在已解析的项目中启动一个全新的 Herdr/Pi worktree。工作器会发送私密进度和最终回执;网关会将其转发到源线程,在最终结果后添加 :white_check_mark:,然后释放 pane 和 worktree。

网关会改写工作器回执,而不是直接粘贴。先说明结果,用通俗语言解释原因,只保留有用的技术回执,并以接下来的操作或未解决的风险收尾。使用简短的 Slack 段落、扁平项目符号、*粗体*、行内代码和 <url|label> 链接。不要使用 Markdown 标题、表格、多层项目符号或冗长的按时间顺序叙述。最终结果默认不超过 1,200 个字符,进度更新默认不超过 320 个字符。保持 ShitRat 的风格:简洁、技术化、持怀疑态度,用 ELI5 的方式解释,但不歪曲事实。

此触发条件无需 Task Grant、Reply Grant 或 Joel 的单独批准。频道未映射时会安全拒绝,并回复需要绑定。网关绝不猜测仓库。

需审批的回复

在 ShitRat 工作触发条件之外,回复频道消息需要 Joel 批准确切文本。

先生成预览:

jc-slack reply '<message-permalink>' --text-file <path>

预览会返回一个需审批的确认命令。只有在 Joel 批准确切回复文本后,才运行该确切命令。CLI 会委托唯一的网关传输通道投递,并返回投递回执。

除完全匹配 ShitRat 触发条件的情况外,不要使用用户令牌、原始 chat.postMessage 或第二个 Slack 监听器绕过此流程。网关的类型化 ShitRat 投递边界是个人令牌的唯一例外。

被动情报

已配置的重要频道可以将非机器人消息送入私有索引与转发流水线。被动消息可以编入索引、批量处理或升级处理,但不会授予回复权限。

运行时配置和精确的频道绑定位于此公开仓库之外。本地运行时覆盖配置可能包含私有 ID 和频道名称,但这些值不得流入提交、测试、文档、截图或已发布的制品。

回填

主机工作进程负责 Slack 历史记录回填,因为它可以租用本地凭据。回填会对频道历史记录进行分页,展开活跃线程,并写入私有搜索记录。在凭据租用功能具备适用于集群的安全适配器之前,不要将这项工作移至集群工作进程。

相关事件:

  • channel/slack.backfill.requested
  • channel/slack.backfill.batch.requested
  • channel/message.received
  • slack.signal.received

公开测试夹具

测试和示例必须使用虚构值:

  • 频道:lc-example-project
  • 频道 ID:CEXAMPLE
  • 行为者:UTEAMMATE
  • 仓库:/tmp/example-project

切勿将生产环境中的 Slack 值粘贴到公开测试夹具中。

相关代码

  • packages/gateway/src/slack-work-request.ts
  • packages/gateway/src/chat-sdk-inbound/
  • packages/gateway/src/gateway-decision-executor.ts
  • packages/cli/src/commands/messages.ts
  • skills/slack-link/SKILL.md

评论

支持 Markdown