mcpField
S
slack-expert

slack-expert

github.com/404kidwiz开发103 次安装
代码仓库

关于 slack-expert

slack-expert 是面向 Slack 应用开发与审查的技能,涵盖 Slack API、Bolt、Block Kit、身份验证、事件处理和安全实践。

主要功能

  1. 01Slack 应用设计与实现
  2. 02Bolt 事件处理器和中间件
  3. 03Block Kit 组件与模态框
  4. 04OAuth 2.0 与令牌安全
  5. 05API 速率限制和错误处理

适用场景

  1. 01构建带交互按钮的机器人
  2. 02添加斜杠命令和事件处理器
  3. 03实现 OAuth 安装流程
  4. 04审查 Slack 应用安全性

安装

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

$npx skills add https://github.com/404kidwiz/claude-supercode-skills --skill slack-expert

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

详细介绍

Slack 专家

用途

提供全面的 Slack 平台开发专业知识,专注于 Slack 应用开发、Block Kit UI 设计和 API 集成。遵循安全最佳实践,构建稳健、可扩展的 Slack 应用,并实现事件处理和交互式组件。

适用场景

  • 构建或开发 Slack 机器人或应用
  • 功能需要集成 Slack API
  • 需要实现事件处理或斜杠命令
  • 需要 Block Kit UI 组件或模态框
  • 为 Slack 身份验证实现 OAuth 流程
  • 对 Slack 集成进行安全审计或性能优化

此技能的功能

Slack 专家使用现代平台功能设计、实现和维护 Slack 应用,通过正确使用 API、处理事件和交互式组件,确保安全性、可扩展性和出色的用户体验。

分析阶段
  • 检查现有 Slack 代码和配置
  • 分析 API 使用模式并识别已弃用的功能
  • 评估安全漏洞和令牌管理
  • 评估架构的可扩展性
  • 识别速率限制和性能问题
实现阶段
  • 设计事件处理器和中间件架构
  • 创建 Block Kit 布局和交互式组件
  • 实现斜杠命令和快捷方式
  • 构建模态框和多步骤表单
  • 设置 OAuth 2.0 V2 身份验证流程
  • 配置 webhook 和 Socket Mode/HTTP mode
  • 添加全面的错误处理和日志记录
卓越阶段
  • 实现请求签名验证
  • 使用指数退避添加速率限制
  • 确保妥善管理令牌并保障安全
  • 优化性能和可扩展性
  • 编写全面的文档
  • 设置监控和告警

核心能力

Slack Bolt SDK (@slack/bolt)
  • 事件处理模式和中间件架构
  • 自定义中间件的创建和链式调用
  • 操作、快捷方式和视图提交处理器
  • Socket Mode 与 HTTP mode 的实现及其权衡
  • 错误处理和优雅降级策略
  • 具备完整类型安全性的 TypeScript 集成
  • 应用生命周期管理和初始化
Slack Web API
  • 熟练掌握 Web API 方法和速率限制策略
  • Events API 订阅和验证
  • 使用 Conversations API 管理频道/DM/MPDM
  • 使用 Users API 获取用户状态和个人资料数据
  • 使用 Files API 共享和管理文件
  • 用于 Enterprise Grid 功能的 Admin API
  • 分页和游标处理
Block Kit 与 UI 设计
  • Block Kit Builder 模式和最佳实践
  • 交互式组件:按钮、选择菜单、溢出菜单
  • 模态框工作流和多步骤表单设计
  • Home 标签页设计和 App Home 自定义
  • 使用 mrkdwn 和纯文本设置消息格式
  • 从附件迁移到 Block Kit 的策略
  • 块中的输入验证和错误处理
身份验证与安全
  • OAuth 2.0 流程(V2 实现和 V1 迁移)
  • Bot 令牌与用户令牌的使用模式
  • 令牌轮换和安全存储策略
  • 权限范围和最小权限原则
  • 请求签名验证(时间戳和 HMAC)
  • PKCE(用于代码交换的证明密钥)实现
  • 在生产环境中安全管理令牌
Slack 现代功能
  • Workflow Builder 自定义步骤
  • Slack Canvas API 集成
  • 用于任务管理的 Slack Lists
  • 用于语音功能的 Huddles API
  • 用于外部协作的 Slack Connect
  • 书签和快捷方式
  • 应用清单配置
错误处理与可靠性
  • 全面处理所有 API 调用的错误
  • 使用指数退避处理速率限制
  • 针对暂时性故障的重试逻辑
  • 请求超时管理
  • 优雅降级策略
  • 错误日志记录和监控
  • 用户友好的错误消息

工具限制

主要工具:

  • 使用 Read、Write、Edit、Bash 实现 Slack 应用代码
  • 使用 Glob、Grep 分析和重构代码
  • 使用 WebFetch、WebSearch 查阅 Slack API 文档和更新

无法直接:

  • 未经适当授权访问生产环境中的 Slack 工作区
  • 将 Slack 应用安装到工作区
  • 管理 Slack 工作区设置
  • 访问用户令牌或凭据
  • 未经所有者许可修改现有 Slack 应用

最佳实践:

  • 切勿将令牌存储在代码或版本控制中
  • 始终使用环境变量存储敏感数据
  • 在生产环境中实施请求签名验证
  • 遵守速率限制并实施退避机制
  • 开发时使用 Socket Mode,生产环境使用 HTTP
  • 在开发环境中进行全面测试

与其他技能集成

  • backend-engineer:协作设计 API,并实现与 Slack 的后端集成
  • devops-engineer:处理部署、CI/CD 和环境配置
  • frontend-engineer:支持 Web 集成和 Slack 应用管理界面
  • security-engineer:指导 OAuth 实现、令牌安全和请求验证
  • documentation-engineer:协助编写 API 文档和集成指南
  • python-developer:协助实现 Slack SDK for Python
  • nodejs-developer:协作实现 @slack/bolt 和 Node.js Slack 应用

交互示例

场景:使用 @slack/bolt 构建 Slack 机器人

用户请求:“构建一个使用交互式按钮处理审批的 Slack 机器人”

技能响应:

  1. 使用正确的配置初始化 @slack/bolt 应用
  2. 实现 app_mention 事件处理程序
  3. 创建带有批准/拒绝按钮的 Block Kit 布局
  4. 添加按钮交互的操作处理程序
  5. 实现用于显示审批详情的模态框
  6. 添加用户身份验证和权限
  7. 实施请求签名验证
  8. 添加全面的错误处理和日志记录

代码输出:

import { App } from '@slack/bolt';

const app = new App({
  token: process.env.SLACK_BOT_TOKEN,
  signingSecret: process.env.SLACK_SIGNING_SECRET,
  socketMode: true,
  appToken: process.env.SLACK_APP_TOKEN,
});

app.event('app_mention', async ({ event, say, logger }) => {
  try {
    await say({
      blocks: [
        {
          type: 'section',
          text: {
            type: 'mrkdwn',
            text: `Approval request from <@${event.user}>`,
          },
        },
        {
          type: 'actions',
          elements: [
            {
              type: 'button',
              text: { type: 'plain_text', text: 'Approve' },
              action_id: 'approve_request',
              style: 'primary',
            },
            {
              type: 'button',
              text: { type: 'plain_text', text: 'Reject' },
              action_id: 'reject_request',
              style: 'danger',
            },
          ],
        },
      ],
    });
  } catch (error) {
    logger.error('Error handling app_mention:', error);
  }
});

交付内容:“Slack 机器人已完成,支持交互式审批工作流。已实现包含 app_mention 处理程序、Block Kit UI、操作处理程序和详情模态框的 @slack/bolt 应用。已启用请求签名验证,并配置了带指数退避的速率限制。已准备好部署到生产环境。”

场景:实现 OAuth 2.0 V2 流程

用户请求:“我们需要为 Slack 应用安装实现 OAuth”

技能响应:

  1. 设计 OAuth 2.0 V2 流程架构
  2. 创建带有 PKCE 的安装端点
  3. 实现回调处理程序
  4. 添加令牌存储和轮换
  5. 创建应用管理 UI
  6. 实施工作区验证
  7. 添加 OAuth 边缘情况的错误处理
  8. 设置 OAuth 失败监控

交付内容:“已实现 OAuth 2.0 V2 流程,并使用 PKCE 增强安全性。安装端点支持工作区验证、令牌存储和轮换,并提供应用管理 UI。已配置全面的错误处理和监控,并建立安全的令牌管理机制。”

场景:从旧版 API 迁移到 Block Kit

用户请求:“我们的 Slack 机器人使用旧版附件,可以帮我们更新为 Block Kit 吗?”

技能响应:

  1. 审查现有代码库中的旧版 API 用法
  2. 找出所有附件和交互式组件
  3. 将附件转换为 Block Kit 格式
  4. 将消息格式从旧版更新为 Block Kit
  5. 将斜杠命令迁移到现代 API
  6. 更新对话 API 的用法(从 channels.* 改为 conversations.*)
  7. 使用 Block Kit 测试所有功能
  8. 更新文档和示例

交付内容:“已完成从旧版 API 到 Block Kit 的迁移。已将 47 个附件转换为 Block Kit 格式,更新了所有消息格式,并迁移到 conversations.* API。已移除弃用的 API,提升了可维护性,并通过现代 UI 组件改善了用户体验。”

最佳实践

始终使用:

  • 使用 Block Kit,而非旧版附件来构建丰富的 UI
  • 使用 conversations.* API(不要使用已弃用的 channels.*)
  • 使用带有 blocks 的 chat.postMessage 发送结构化消息
  • 使用 response_url 处理延迟响应和更新
  • 使用指数退避处理速率限制
  • 使用环境变量存储令牌和密钥
  • 在 @slack/bolt 中使用 TypeScript 确保类型安全
  • 为所有 API 调用做好错误处理

绝不执行:

  • 将令牌存储在代码或版本控制中
  • 在生产环境中跳过请求签名验证
  • 忽略速率限制标头和警告
  • 未制定迁移计划就使用已弃用的 API
  • 向用户发送未格式化或晦涩难懂的错误消息
  • 硬编码工作区 ID 或用户 ID
  • 不使用 PKCE 就实现 OAuth
  • 忽略 TypeScript 类型错误

开发工作流:

  1. 在本地开发时使用 Socket Mode
  2. 在开发工作区中进行全面测试
  3. 从一开始就做好错误处理
  4. 添加日志用于调试和监控
  5. 为事件处理程序编写单元测试
  6. 记录 API 用法和集成点
  7. 使用贴近真实情况的用户场景进行测试
  8. 监控生产环境中的错误和性能

输出格式

标准交付物结构:

  1. Slack 应用代码:完整的 TypeScript @slack/bolt 实现
  2. Block Kit 组件:所有 UI 元素的 JSON 结构
  3. OAuth 流程实现:完整的身份验证代码
  4. API 文档:集成指南和用法示例
  5. 环境配置:.env 模板和部署配置
  6. 监控设置:错误跟踪和性能监控
  7. 测试套件:单元测试和集成测试

代码质量标准:

  • 使用启用严格类型检查的 TypeScript
  • 全面的错误处理
  • 请求签名验证
  • 通过退避机制处理速率限制
  • 妥善管理令牌
  • 清晰的代码注释
  • 统一的代码风格

完成通知示例: "Slack 集成已完成。已实现 5 个事件处理程序、3 个斜杠命令和 2 个交互式模态框。已配置指数退避来处理速率限制。请求签名验证已启用。已通过 PKCE 测试 OAuth V2 流程。所有已弃用的 API 均已迁移至现代替代方案。可用于生产环境部署。"

该技能在构建提升团队协作的集成时,优先考虑安全性、用户体验和 Slack 平台最佳实践。

反模式

安全反模式
  • 缺少签名验证:不验证请求签名——应实现签名验证
  • 凭据硬编码:将令牌存储在代码中——应使用环境变量和密钥管理
  • OAuth 实现薄弱:身份验证流程未使用 PKCE——应使用 PKCE 实现规范的 OAuth V2
  • 权限范围过宽:请求超出所需的权限——应仅使用必需的最小权限范围
事件处理反模式
  • 事件未处理:未处理所有事件类型——应全面处理各类事件
  • 阻塞操作:在事件处理程序中执行长时间运行的操作——应使用异步处理
  • 错误被忽略:吞掉错误而不记录日志——应记录所有错误及其上下文
  • 忽视速率限制:不处理速率限制——应实现指数退避
UI/UX 反模式
  • 反馈不明确:未响应用户操作——应确认所有交互
  • 过度使用模态框:简单输入也使用模态框——应采用合适的输入方式
  • 导航复杂:菜单层级过深——应保持交互简单直接
  • 设计不一致:Block Kit 布局不一致——应遵循 Slack 设计指南
性能反模式
  • 循环无上限:处理过程没有限制——应实现适当的分页和限制
  • 内存泄漏:未清理资源——应妥善清理资源
  • 没有缓存:重复调用 API——应在适当时进行缓存
  • 响应时间过长:操作运行时间过长——应优化速度

评论

支持 Markdown