Context menus 是一份面向 VS Code 菜单实现的上下文菜单设计指南技能,来源于 microsoft/vscode。它适用于新增、修改或审查上下文菜单及菜单贡献的场景,包括 Action2 的 menu 条目,以及通过 MenuRegistry 注册、带 group 和 order 的菜单项。其目标是让右键菜单按照可预测的顺序列出所点击对象的操作,使用户在不同对象、不同界面位置上都能在相同位置找到相同操作。
分组与排序方面,指南规定分组按其 ID 的字典序渲染,且 navigation 组始终排在第一位。新菜单以及所有 Agents 窗口菜单建议按以下顺序使用这些分组:navigation(打开、创建或运行对象,默认的双击或回车操作排在最前)、1_state(改变对象状态)、2_organize(改变对象的列出位置或排序方式)、3_copy(把对象信息复制到剪贴板)、4_manage(配置或编辑对象本身,破坏性操作放在最后)。组内条目应使用 order(或在 package.json 中使用 group@n)排序,而不是依赖标题排序。指南建议优先复用这些分组,只有在它们都无法覆盖时才新建分组;已有文档化分组的工作台菜单(如 editor、Explorer、terminal、editor title)保留自己的组 ID,新条目加入最接近的匹配组。开放给扩展的菜单组 ID 属于 API,修改时需同步更新所有贡献点,包括 extensions/*/package.json。
行为规则方面:破坏性操作必须是菜单的最后一个条目,不能放在中间;同一对象出现在多个位置(列表行、标签页、标题栏、卡片)时应提供相同操作和相同顺序,复用同一个 MenuId 或相同组 ID,而不是手工构建平行的操作列表;行的悬停或工具栏操作也必须同时出现在其上下文菜单中;菜单只包含与所点击对象相关的操作,列表级或无关操作应放在区域标题、视图标题或空白处;用 when 隐藏与对象无关的操作,用 precondition 禁用当前无法运行但适用的操作(例如多选时的单项操作);菜单保持简短,最多约 5 个组和 15 个条目、一层子菜单,3 个及以上相关目标用子菜单,二选一用切换而非子菜单;标签使用 Title Case,需要更多输入或确认的操作以 ... 结尾,同一菜单内标签必须唯一;需要在代码中动态构建的操作应合并进菜单对应分组,而不是追加在末尾分隔符之后,并使用 Separator.join 连接分组。
该技能依据 VS Code 上下文菜单 UX 指南、Windows 菜单指南和 Apple 上下文菜单指南整理,主要服务于 VS Code 核心界面与扩展的菜单贡献实现。资料未提供具体安装命令、调用方式、收费或平台限制信息,相关细节暂未提供。