关于 setup-benny
用于安装和配置 pstack 中休眠自动化包 Benny 的技能,面向使用 Cursor 处理问题分诊与复现的团队。它指导仓库设置、外部配置、集成检查,以及创建或审查两项自动化。
主要功能
- 01复制并验证 Benny 自动化包
- 02启用项目级 pstack 技能
- 03准备外部配置和功能映射
- 04检查 Slack、跟踪器和控制适配器能力
- 05配置分诊与复现自动化
适用场景
- 01在目标仓库中安装 Benny
- 02准备项目专属路由和功能映射
- 03启用自动化前验证集成能力
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ cursor/ plugins --skill setup-benny安装后在 Claude Code 中输入/setup-benny确认已加载。
详细介绍
设置 Benny
Benny 作为一个休眠的自动化包随 pstack 一同提供。插件清单仅公开 pstack 的常规技能根目录;此文件和两个操作文件不是斜杠技能。
用户通过让 Cursor 打开该包的 FOR_AGENTS.md 来启动设置流程。引导流程会将整个包复制到目标仓库,然后直接读取 .cursor/automations/benny/skills/setup-benny/SKILL.md 中的此文件。
Benny 需要外部配置和两个正在运行的 Cursor 自动化。
除非用户明确提出要求,否则不要创建或更新任何自动化。绝不要将机密值放入插件文件、提示词或已提交的配置中。
1. 复制软件包并启用共享 pstack 技能
在询问 Benny 配置以及调用内置 /automate 技能之前,先完成此步骤。
询问将在哪个仓库中运行自动化。源软件包是包含 FOR_AGENTS.md 的目录。目标目录是 <target-repository>/.cursor/automations/benny/。
将整个源软件包合并到目标目录:
- 如果目标目录不存在,则创建它。
- 将每个源文件复制到相同的相对路径。
- 保留目标目录中独有的文件。安装或刷新时,绝不要删除无关文件。
- 将用户拥有的配置、功能映射和路由映射保留在目标目录之外。绝不要覆盖它们。
- 如果现有的源管理文件存在差异,请检查差异并进行合并,不要丢弃本地编辑。如果所有权不明确,请先停止并询问,再进行替换。
- 验证目标目录中包含
FOR_AGENTS.md、此设置文件、两个操作文件、对它们的引用以及模板。
如果此文件已经是从目标目录中读取的,则视为复制已完成,并在继续之前执行相同的验证。
将 pstack 添加到目标仓库的 .cursor/settings.json。如果该文件或 .cursor 目录不存在,则创建它。
将此条目合并到现有的 JSON 或 JSONC 中:
{
"plugins": {
"pstack": { "enabled": true }
}
}
保留所有无关的顶层设置和其他所有插件条目。如果 plugins.pstack 已存在,则仅更改其 enabled 值。如果文件使用 JSONC,则保留注释和有效的 JSONC 语法。编辑后验证该文件。
重新加载目标项目,或启动一个以该项目为根目录的新 Agent。验证这些共享 pstack 技能可从项目级别解析:
howwhytddunslopprinciple-separate-before-serializing-shared-stateprinciple-minimize-reader-loadprinciple-guard-the-context-windowprinciple-sequence-verifiable-unitsprinciple-fix-root-causesprinciple-prove-it-works
不要将从当前会话或用户级插件加载的技能计入验证。检查必须证明,在目标仓库中启动的新 Agent 会通过项目设置获得 pstack。
如果无法安装项目级插件,或任何共享依赖都无法解析,请停止并说明失败原因。
Benny 文件会直接从 .cursor/automations/benny/ 读取。不要将该目录添加到插件清单中,也不要指望其 SKILL.md 文件出现在斜杠技能列表中。
告知用户,在启用任一自动化之前,必须先提交 .cursor/settings.json、.cursor/automations/benny/ 以及任何不含机密、且被引用的配置。除非用户提出要求,否则不要提交这些文件。
通过此项检查后,正在运行的自动化提示词可以通过稳定的仓库相对路径读取已提交的操作文件。它们不得嵌入插件缓存路径,也不得复制文件内容。
2. 调整配置
打开以下已复制的示例:
../../templates/configuration.example.yaml../reproduce-and-fix-issues/references/feature-map.example.md
在 .cursor/automations/benny/ 之外创建由用户拥有的副本。这些是配置文件,不是 pack 文件。示例位置:
- 项目配置,例如
.cursor/benny/configuration.yaml - 项目功能映射,例如
.cursor/benny/feature-map.md - 项目路由映射,例如
.cursor/benny/routing.md - 用户配置,例如
~/.config/benny/configuration.yaml - 用户功能映射,例如
~/.config/benny/feature-map.md
为自动化可能复现的每项面向用户的功能填写一个功能映射章节。保持用户视角。不要在映射中固化实现细节或当前代码路径。
不要编辑已复制的示例。经过冲突审查后,pack 刷新可以更新由源管理的文件,但绝不能触及由用户拥有的副本。
如果全新的自动化检出必须读取这些文件,优先将不含机密且已提交的文件放在目标仓库中。否则,将所需值改述到当前提示词中。只有内置的 /automate skill 确认某个文件已提交到自动化运行所在的仓库后,才引用该仓库文件。
对已提交的 pack 和配置文件使用稳定的仓库相对路径。在正在运行的自动化中,绝不要引用插件源目录或插件缓存路径。
3. 填写必需选项
询问或确认:
- 源 Slack 频道 ID
- 可选的运维或状态频道 ID
- 仓库 URL 和默认分支
- 分诊身份或 Slack 用户 ID
- 问题跟踪器类型、团队、项目、标签和接收状态
- 跟踪器适配器 skill 或 MCP 操作
- 可选的路由映射路径
- 必需的控制 skill 名称
- 必需的面向用户的功能映射路径
- 状态表情符号字符串
- 拉取请求 URL 格式
- 轮询和工作量预算
- 用于分诊、复现、代码工作和媒体审查的模型 slug
只能使用用户的 Cursor 模型选择器或受支持的模型列表中显示为可用的模型 slug。不要猜测 slug,也不要沿用私有默认值。
源频道、分诊身份、仓库、跟踪器适配器、控制 skill 和功能映射必须明确。如果任何必需值仍有歧义,则停止设置。
保存前,使用 pstack 的 unslop skill 检查最终自动化名称、描述和提示词垫片。
4. 检查集成能力
分诊自动化需要:
- 读取已配置源 Slack 频道及其线程的权限
- 在该频道中回复线程的权限
- 当报告包含媒体时,读取附件元数据和下载文件的权限
- 通过已配置的问题跟踪器适配器进行搜索、读取、创建和更新的权限
复现自动化需要:
- 读取源线程的权限
- 在源频道中回复线程的权限
- 在已配置运维频道中发帖和编辑的可选权限
- 仓库读取和历史记录访问权限
- 能够创建草稿拉取请求的拉取请求操作
- 已配置的控制适配器 skill
读取和发帖时优先使用已配置的 Cursor Slack 操作。可选的 BENNY_SLACK_BOT_TOKEN 可用于填补有限的缺口,例如编辑一条运维状态消息或下载附件。将该值存储在密钥管理器或环境中,而不是 YAML 文件中。
不要使用未记录的集成端点。
5. 准备路由映射
如果用户需要重新路由或提醒负责人:
- 将
../triage-issue-reports/references/routing.example.md复制到.cursor/automations/benny/之外。 - 将每个占位符替换为公开或组织内部的值。
- 默认关闭负责人提醒。
- 仅允许提醒已配置的功能负责人,或已确认很可能导致回归的作者。
如果未配置路由映射,分诊可以对报告分类,但不得猜测目标位置或负责人。
6. 验证控制适配器
阅读 ../reproduce-and-fix-issues/references/control-adapter.md 和用户填写完成的功能映射表。
确认指定的 skill 能够:
- 启动目标应用
- 通过真实 UI 浏览映射的每项功能
- 通过声明的适配器操作测试映射的状态
- 检查状态而不强行得出结果
- 截取屏幕截图
- 开始和停止录制
- 清理其进程和临时数据
如果缺少任何能力,请保持复现自动化处于禁用状态。必须在无法确认时安全失败,而不是声称完成了实际上并未执行的复现。
7. 准备实时自动化
询问这是首次创建自动化,还是配置现有自动化。
对于任一路径,都应将复制的包中的 ../../FOR_AGENTS.md 作为主要用户意图来源来阅读。根据它了解两个触发条件、工具、说明、结果和共用规则。
首次创建
一次创建一个自动化。
对于每个自动化:
- 阅读对应的复制版提示词模板,将其作为次要内部资料。
- 将
FOR_AGENTS.md、已完成的 Benny 配置和模板意图整理成完整的自然语言请求。 - 告知实时提示词读取并遵循
.cursor/automations/benny/下准确的已提交操作文件。 - 使用稳定的仓库相对路径,而不是插件源路径或缓存路径。不要将操作文件的内容复制到实时提示词中。
- 阅读并遵循内置的
automateskill。 - 让
automate自行发现 Slack 频道、仓库和已连接的集成。 - 让
automate确认复制的包及其引用的任何配置文件,均已提交到自动化将要运行的同一仓库中。 - 让
automate显示草案表格、获取批准、询问是否准备就绪,并打开 Automations 编辑器。 - 完成此自动化的编辑器交接后,再开始下一个。
向 automate 提供以下完整的分流意图,并根据配置填写:
- 名称为
benny-triage。 - 每次运行时都读取并遵循
.cursor/automations/benny/skills/triage-issue-reports/SKILL.md。 - 在配置的 Slack 来源频道中,每当出现新的顶层报告时触发。
- 阅读触发该自动化的线程,并且只在该线程内回复。
- 使用配置的问题跟踪器集成。
- 对问题进行分类、检查证据、追溯原因、去重,并且只创建明确的新 bug。
- 最终在该线程中给出一个判定,并附上配置的
[benny:bug]、[benny:performance]或[benny:other]标记,以及可选的问题跟踪器 URL。 - 绝不在来源频道发布根级消息。
分流自动化的编辑器交接完成后,向 automate 提供以下完整的复现和修复意图:
- 名称为
benny-reproduce。 - 每次运行时都读取并遵循
.cursor/automations/benny/skills/reproduce-and-fix-issues/SKILL.md。 - 在配置的 Slack 来源频道中,对相同的新顶层报告触发。
- 使用配置的仓库和默认分支。
- 阅读来源线程,并且只在该线程内回复。
- 包含创建拉取请求,以及配置的问题跟踪器、控制适配器和功能映射要求。用自己的话描述映射的用户路径和状态,除非
automate确认同一仓库中存在符合条件的已提交文件。 - 等待可信的分流标记后再采取行动。
- 通过映射的真实 UI 两次复现确切症状,并收集证据。
- 验证现有修复,但不在其基础上编写或覆盖代码。
- 仅在确认复现后,才尝试有界的可选修复;证明和检查均通过后,再创建草稿拉取请求。
- 绝不在来源频道发布根级消息。
不要重复执行 automate 已负责的 Slack、仓库、集成、完整性、身份验证、草案审查、批准、准备情况或编辑器交接工作。
现有自动化
内置的 automate 技能只能用于创建。不要使用它来搜索、检查或更新现有自动化。
完成配置、路由、控制适配器和功能映射验证。然后向用户提供以下简明的编辑清单。
对于现有的分诊自动化,请更新:
- 名称和描述
- 明确指示读取
.cursor/automations/benny/skills/triage-issue-reports/SKILL.md - 新的顶层 Slack 报告触发器和来源频道
- 读取和回复 Slack 线程的能力
- 问题跟踪器集成
- 改写后的分诊指示、仅限线程的规则和 Benny 判定标记
对于现有的复现自动化,请更新:
- 名称和描述
- 明确指示读取
.cursor/automations/benny/skills/reproduce-and-fix-issues/SKILL.md - 匹配的 Slack 触发器和来源频道
- 代码仓库和默认分支
- 读取和回复 Slack 线程的能力
- 拉取请求操作
- 跟踪器、控制适配器和功能映射要求
- 改写后的等待标记、证据、验证和有界修复指示
请用户直接在 Automations 编辑器中更新每个现有自动化。不要创建替代项或重复项。
创建边界
绝不调用直接的自动化后端服务或后端自动化工具。绝不使用携带草稿字段的浏览器 URL。绝不构建或打开 Cursor 协议深层链接。创建新自动化时,唯一的完成路径是通过内置 automate 技能,将经审核的内容交接到 Automations 编辑器。
在编辑器保存后通过线程安全测试之前,不要启用任一自动化。
8. 测试线程安全
使用测试频道或无害的测试报告。
测试前,确认目标代码仓库的 .cursor/settings.json、.cursor/automations/benny/ 以及所有引用的不含机密的配置文件,都已提交到自动化检出所用的分支。确认两个实时提示词都指向各自准确且已提交的操作文件。若任何检查未通过,请停止。告知用户目前还不能启用自动化。
验证:
- 分诊自动化保存根消息的
thread_ts,并且只以回复形式发布一条判定。 - 判定包含一个已配置的标记。
- 复现自动化仅接受来自已配置分诊身份的标记。
- 复现自动化保留相同且不可变的来源坐标。
- 来源频道中不会出现根消息。
- 受委派的工作者无法使用任何 Slack 写入操作。
- 坐标缺失、父消息已删除或预检失败时,不会发布消息,也不会创建跟踪器问题。
仅在以上七项检查全部通过后,才启用正常流量。