关于 improve
一种代码审查技能,根据当前会话中的具体观察提出改进建议。它帮助 Agent 按用户影响排序可执行建议,并区分有依据的发现与推测。
主要功能
- 01建议须基于会话证据
- 02区分有依据的发现与推测
- 03按用户影响确定优先级
- 04检查正确性、安全性和性能
- 05集成 Ralph 循环与交接
适用场景
- 01完成工作前审查近期修改的代码
- 02在工作阶段结束后找出可执行问题
- 03为 Agent 交接准备改进记录
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ alleneubank/ claude-code --skill improve安装后在 Claude Code 中输入/improve确认已加载。
详细介绍
改进
基于本次会话中的观察,进行结构化改进检查。
原则(始终适用)
- 每条建议都必须引用具体观察——文件路径、看到的错误、发现的模式或已验证的行为。“我看到了 X”胜过“常见做法建议 Y”。
- 区分有依据的建议和推测性建议。明确标记推测性建议。
- 按对用户的影响排序,而非按描述难易程度排序。
- 未标明高风险时,不要建议更改公共 API 契约、认证边界或数据架构。
- 简单本身就是一种优势。除非增加复杂度能避免本次会话中观察到的具体问题,否则不要建议增加复杂度。
适用时机
- 用户询问“现在了解了这些之后,你觉得有哪些可以改进的地方?”或类似问题
- 在 ralph 循环中宣称完成之前(自检)
- 生成交接之前
- 完成一大块工作之后
- 审查刚编写或修改的代码时
不适用时机
- 在会话开始、尚未完成有意义的工作时
- 用户明确要求跳过审查并直接交付时
- 进行架构重新设计时(改用规范/计划流程)
维度
从以下维度进行分析。没有有依据的内容时,跳过该维度。
正确性
错误处理缺口、未处理的边缘情况、类型安全问题、竞态条件、系统边界缺少验证。
简洁性
不必要的间接层、死代码、模糊意图的命名、过度设计的抽象、不值得其复杂度的实现。实现时参考 simplify 技能。
安全性
在已修改代码中观察到的认证边界缺口、输入验证漏洞、密钥处理问题、OWASP 风险。
测试覆盖率
本次会话中观察到的未测试代码路径、缺少的测试层(单元/集成/E2E)、测试夹具不够真实、断言无法验证有意义的行为。
性能
本次会话中观察到的瓶颈(慢查询、N+1 模式、不必要的重复计算)。只指出实际观察到的问题,不要提出假设性问题。
开发者体验
API 易用性问题、非显而易见行为缺少文档、CLI 使用不便、应当提取的配置。
工作流程
-
收集上下文:回顾本次会话中发生的事情——修改的文件、运行的命令、遇到的错误、编写的测试、确立的模式。
-
分析各个维度:逐一检查会话观察中是否有具体问题。没有内容可写的维度可跳过。
-
按以下结构组织每条建议:
[IMP-N] effort/gate: summary
Observation: what was seen (file:line, error message, test gap, etc.)
Suggestion: concrete change
Grounded: yes/no
其中:
effort:trivial(< 5 分钟)|small(< 30 分钟)|medium(数小时)gate:该建议强化的交付关卡:TDD|DEV|E2E|REVIEW|CI
-
按影响排序(从高到低),而非按维度排序。
-
以可执行清单的形式呈现。如果处于 ralph 循环中,在宣称完成前,直接处理微小/小型改进。将中型改进记录为供用户确定优先级的决策。
与 Ralph 循环的集成
在 ralph 循环中运行时(存在 .rl/state.json):
- 在执行
.rl/rl done之前进行改进检查 - 直接处理
trivial改进——立即修复 - 如果
small改进属于当前里程碑的范围,则予以处理 - 记录
medium改进:.rl/rl log decision "IMP-N deferred: [reason]" - 对于中型改进,不要将范围扩展到任务里程碑之外
与交接的集成
生成交接时,将尚未处理的改进写入 <next_steps> 部分。使用相同的 [IMP-N] 格式,以便接手的 Agent 引用。
输出格式
## Improvements
N suggestions (X grounded, Y speculative)
[IMP-1] trivial/DEV: Extract magic number to config constant
Observation: `src/server.ts:42` uses hardcoded port 3000, but other services read from env
Suggestion: Read from `PORT` env var with 3000 as default
Grounded: yes
[IMP-2] small/TDD: Add boundary test for empty input
Observation: `processItems([])` path untested — saw it handle non-empty arrays only in test suite
Suggestion: Add test case for empty array input in `process-items.test.ts`
Grounded: yes
[IMP-3] medium/E2E: Add timeout handling for external API calls
Observation: Catalog search took 1.2s avg in profiling — no timeout configured
Suggestion: Add configurable timeout with bounded retry
Grounded: yes
危险信号
- 提出建议却没有观察依据——如果无法指出具体问题,就不要提出建议
- 建议超过 10 条——优先关注影响最大的 5–7 条
- 提出的建议超出改动范围——仅关注当前工作的影响范围
- 泛泛地说“增加更多测试”,却没有说明哪些路径尚未测试
评论
支持 Markdown