关于 restraint
将设计与代码变更限制在用户要求范围内的审查技能,可识别多余界面、设置和代码,并规定删除内容及报告问题的方式。
主要功能
- 01标记未要求的界面与代码
- 02优先采用可用的最小实现
- 03删除过时代码及相关残留
- 04避免多余设置和回退逻辑
- 05按严重程度报告问题
适用场景
- 01检查功能变更是否增加多余界面
- 02删除功能后清理相关代码
- 03检查实现方案是否包含无用选项
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ raphaelsalaja/ skills --skill restraint安装后在 Claude Code 中输入/restraint确认已加载。
附带文件agents/openai.yaml
详细介绍
克制
此技能将改动缩减到用户的要求。它会移除多余的界面、选项和代码,并将“移除”视为删除。
明确要求
用户没有要求的元素、选项或代码路径都属于问题,除非没有它就无法满足要求。尚未发布的工作不涉及向后兼容。未经用户批准就删减内容,只能算提议,不能直接修改。
标签文案归入 copy。复用现有部分归入 reuse。
不添加要求之外的内容
不要添加用户未要求的章节、徽章、计数、说明文字、页脚、按钮内的图标、声音或装饰效果。每一行都添加计数徽章,属于 restraint-no-unrequested-ui。
不重复反馈屏幕已呈现的结果
如果操作结果已经显示在屏幕上,就不要为该操作添加提示框或对话框。这属于 restraint-no-redundant-feedback。
能正常工作的最小构建
优先使用原生元素而非自定义元素,优先使用单体应用而非单一代码仓库,优先使用固定值而非设置。<video controls> 已能满足需求时却自定义视频播放器,属于 restraint-smallest-build。没人会更改的偏好设置,属于 restraint-no-needless-setting。
发布前不写防御性代码
未发布的工作中不要保留旧版分支或兼容垫片。这属于 restraint-no-legacy。如果一个值始终有设定,就不要为它添加回退逻辑。这属于 restraint-no-fallbacks。
移除就是删除
用户说“移除”时,删除代码及其样式、变量、路由和菜单项。“延后以供审核”属于 restraint-delete-dont-defer。移除软件包后,却把它的变量留在 theme.css 中,属于 restraint-remove-the-trail。
用户要求清理时,列出未使用的文件、导出项、样式、依赖和遗留原型。获得批准后就删除它们。
注释应说明约束,否则删除
删除只是在叙述代码的注释。只有当注释说明了代码本身无法体现的约束时才保留。叙述性注释属于 restraint-no-narrating-comments。
对照项
每项检查都是一组对照。错误行旁边应列出替代它的行。
| 规则 | 错误做法 | 替代做法 |
|---|---|---|
restraint-no-unrequested-ui | 每一行都添加计数徽章 | 不添加徽章 |
restraint-no-redundant-feedback | 移动操作后,用户已能看到结果,却仍显示提示框 | 不显示提示框 |
restraint-smallest-build | 自定义视频播放器 | <video controls> |
restraint-no-needless-setting | 为无人更改的间距设置偏好项 | 固定的 --gap |
restraint-no-legacy | “为安全起见”保留旧版分支 | 删除 |
restraint-no-fallbacks | 对始终有设定的值使用 value ?? defaultValue | value |
restraint-delete-dont-defer | “延后供你审核” | 删除,或只提一个问题 |
restraint-remove-the-trail | 移除软件包后仍将其变量留在 theme.css 中 | 一并移除这些变量 |
restraint-no-narrating-comments | // Render the header | 不写注释 |
报告
严重程度。 HIGH 表示没人要求的功能、设置或代码路径,或声称已“移除”但仍存在的项目。MEDIUM 表示回退逻辑、旧版分支或遗留变量。LOW 表示叙述性注释。
格式。 每个根本原因列出一个问题:
file:line - [rule-id] what is wrong
然后给出 Rule | Count | Severity 汇总。只要仍有任何 HIGH,就标记为 Block;否则标记为 Approve。不要对未阅读的文件标记 Approve。将每项无法执行的检查标记为 Not verified。