关于 egghead-slack
egghead-slack 是处理 Slack 消息、频道情报和授权工作请求的操作技能,规定隐私边界、回复审批及经网关转交任务的流程。
主要功能
- 01保护 Slack 私密数据
- 02搜索频道并查看线程上下文
- 03需审批的回复流程
- 04ShitRat 触发的任务路由
- 05被动消息索引
适用场景
- 01回复前查看 Slack 线程
- 02将映射频道中的授权请求转交处理
- 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.requestedchannel/slack.backfill.batch.requestedchannel/message.receivedslack.signal.received
公开测试夹具
测试和示例必须使用虚构值:
- 频道:
lc-example-project - 频道 ID:
CEXAMPLE - 行为者:
UTEAMMATE - 仓库:
/tmp/example-project
切勿将生产环境中的 Slack 值粘贴到公开测试夹具中。
相关代码
packages/gateway/src/slack-work-request.tspackages/gateway/src/chat-sdk-inbound/packages/gateway/src/gateway-decision-executor.tspackages/cli/src/commands/messages.tsskills/slack-link/SKILL.md