Slack Master 是一个共享资源库,而不是面向用户的技能。它被 Slack 集成技能引用,用于消除重复内容。
用途
为以下技能提供共享资源:slack-connect(Slack 工作区操作的元技能)、slack-send-message(向频道或私信发送消息)、slack-list-channels(列出可用频道)、slack-search-messages(搜索消息历史),以及另外 29 个操作技能。用户不直接加载本技能,而是直接调用上述具体技能。
架构:DRY 原则
解决的问题:Slack 技能之间会重复内容(安装说明、API 文档、认证流程、错误处理)。
解决方案:将共享内容抽取到 slack-master/references/ 和 slack-master/scripts/,然后由各技能引用。
结果:单一事实来源,减少每个技能的上下文占用。
认证模型:用户 OAuth
该集成使用用户 OAuth(而非机器人 OAuth)进行团队级部署:
- 每位团队成员使用自己的账号认证
- 发送的消息以用户身份显示(而非机器人)
- 用户只能看到自己有权访问的频道和私信
- 不会发生跨用户数据暴露
- 令牌类型:xoxp-(用户令牌)
为什么使用用户 OAuth:消息来自真实用户而非机器人;遵循现有频道权限;无需在每个频道安装机器人;每位用户控制自己的访问权限。
共享资源
所有 Slack 技能都引用这些资源(渐进式披露)。
references/ 目录
- setup-guide.md:完整安装向导,包括创建使用用户 OAuth 的 Slack 应用、配置 OAuth 权限范围、获取客户端 ID 和密钥、运行 OAuth 流程。
- api-reference.md:Slack API 模式,包括基础 URL 和认证、全部 32 个 API 端点文档、请求/响应示例、速率限制信息。
- error-handling.md:故障排除,包括常见错误及解决方案、HTTP 错误码、令牌过期处理、权限范围问题。
- authentication.md:用户 OAuth 流程,包括 OAuth 2.0 授权流程、令牌交换过程、令牌刷新(Slack 令牌通常不会过期)、按用户存储令牌。
scripts/ 目录
认证与配置
- check_slack_config.py:预检校验。用法:python check_slack_config.py [--json]。参数 --json 可选,默认 False,输出结构化 JSON 供 AI 使用。退出码:0=已配置,1=部分配置,2=未配置。使用时机:在任何 Slack 操作之前首先运行,用于验证用户令牌是否已配置、诊断认证问题或检查是否需要 OAuth 设置。
- setup_slack.py:交互式 OAuth 向导。用法:python setup_slack.py。无参数,交互运行,引导完成 OAuth 授权、获取用户令牌并保存到 .env。使用时机:Slack 集成需要初始设置时、check_slack_config.py 返回退出码 2 时,或用户需要重新认证时。
- slack_client.py:共享 API 客户端。示例:from slack_client import get_client; client = get_client(); result = client.post('chat.postMessage', {'channel': 'C123', 'text': 'Hello'})。提供:从 .env 自动加载令牌、Slack API 请求格式化、错误处理与响应解析、速率限制感知。使用时机:在所有 Slack 操作脚本中导入,以获得一致的 API 访问。
消息操作
- send_message.py:发送消息(chat.postMessage)。用法:python send_message.py --channel CHANNEL --text "Message" [--thread-ts TS] [--json]
- update_message.py:更新消息(chat.update)。用法:python update_message.py --channel CHANNEL --ts TIMESTAMP --text "New text" [--json]
- delete_message.py:删除消息(chat.delete)。用法:python delete_message.py --channel CHANNEL --ts TIMESTAMP [--json]
- schedule_message.py:定时发送消息(chat.scheduleMessage)。用法:python schedule_message.py --channel CHANNEL --text "Message" --post-at UNIX_TS [--json]
频道操作
- list_channels.py:列出频道(conversations.list)。用法:python list_channels.py [--types public,private] [--limit N] [--json]
- channel_info.py:获取频道信息(conversations.info)。用法:python channel_info.py --channel CHANNEL [--json]
- channel_history.py:获取消息(conversations.history)。用法:python channel_history.py --channel CHANNEL [--limit N] [--oldest TS] [--latest TS] [--json]
- create_channel.py:创建频道(conversations.create)。用法:python create_channel.py --name NAME [--is-private] [--json]
用户操作
- list_users.py:列出工作区用户(users.list)。用法:python list_users.py [--limit N] [--json]
- user_info.py:获取用户信息(users.info)。用法:python user_info.py --user USER_ID [--json]
文件操作
- upload_file.py:上传文件(files.upload)。用法:python upload_file.py --file PATH --channels C1,C2 [--title TITLE] [--json]
- list_files.py:列出文件(files.list)。用法:python list_files.py [--channel CHANNEL] [--user USER] [--limit N] [--json]
搜索操作
- search_messages.py:搜索消息(search.messages)。用法:python search_messages.py --query "search terms" [--count N] [--json]
- search_files.py:搜索文件(search.files)。用法:python search_files.py --query "search terms" [--count N] [--json]
智能错误检测流程
当 Slack 技能因缺少配置而失败时,AI 应:
第 1 步:以 JSON 输出运行配置检查 python 00-system/skills/slack/slack-master/scripts/check_slack_config.py --json
第 2 步:解析 ai_action 字段 JSON 输出包含 ai_action 字段,告知 AI 该做什么:
- proceed_with_operation:配置正常,继续原操作
- run_oauth_setup:运行 python setup_slack.py 进行授权
- check_scopes:令牌存在但缺少所需权限范围
- token_revoked:用户撤销了访问权限,需要重新授权
第 3 步:帮助用户修复问题 如果 ai_action 为 run_oauth_setup:告诉用户“Slack 集成需要设置,我们来授权你的账号。”运行 python 00-system/skills/slack/slack-master/scripts/setup_slack.py,用户将按引导完成 OAuth 流程,令牌保存到 .env,然后重新运行配置检查以验证。
JSON 输出结构示例 { "status": "not_configured", "exit_code": 2, "ai_action": "run_oauth_setup", "missing": [ {"item": "SLACK_USER_TOKEN", "required": true, "location": ".env"} ], "fix_instructions": [...], "setup_wizard": "python 00-system/skills/slack/slack-master/scripts/setup_slack.py" }
技能如何引用本资源
每个技能仅在需要时加载共享资源(渐进式披露):
- slack-connect 使用:check_slack_config.py(任何操作前校验)、根据用户请求使用所有 API 脚本、按需使用所有参考文档。
- slack-send-message 使用:check_slack_config.py(发送前校验)、send_message.py(核心功能)、error-handling.md(故障排除)。
环境变量
.env 中必需:
Slack 用户 OAuth 令牌(以 xoxp- 开头)
SLACK_USER_TOKEN=xoxp-xxxxxxxxxxxxx
可选:用于 OAuth 设置流程
SLACK_CLIENT_ID=your-client-id SLACK_CLIENT_SECRET=your-client-secret
所需 OAuth 权限范围(用户令牌)
channels:read、channels:write、channels:history、groups:read、groups:write、groups:history、im:read、im:write、im:history、mpim:read、mpim:write、mpim:history、chat:write、users:read、users:read.email、files:read、files:write、reactions:read、reactions:write、pins:read、pins:write、search:read、reminders:read、reminders:write、team:read
API 基础 URL
所有 API 请求发送至:https://slack.com/api/
版本:1.0 创建时间:2025-12-17 状态:生产就绪