关于 caveman-review
caveman-review 是用于撰写简洁、可执行代码审查意见的技能。意见按位置、问题和修复方式组织,可选严重程度标签;安全或架构问题则允许详细说明。
主要功能
- 01每项发现一行意见
- 02位置、问题与修复格式
- 03可选严重程度标签
- 04保留准确行号和符号名
- 05安全与架构问题可详细说明
适用场景
- 01指出代码差异中的错误
- 02标记脆弱的错误处理路径
- 03提出针对性的代码修改
- 04详细说明安全问题
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ rheinmir/ setup --skill caveman-review安装后在 Claude Code 中输入/caveman-review确认已加载。
详细介绍
撰写简洁且可执行的代码审查评论。每条发现占一行。说明位置、问题和修复方案。不要铺垫。
规则
格式: L<line>: <problem>. <fix>. — 审查多文件差异时使用 <file>:L<line>: ...。
严重性前缀(混合严重程度时可选):
🔴 bug:— 行为异常,会导致事故🟡 risk:— 当前可用,但不可靠(竞争条件、缺少 null 检查、吞掉错误)🔵 nit:— 风格、命名、微优化。作者可以忽略❓ q:— 真正的问题,不是建议
删去:
- “我注意到……”“似乎……”“你可以考虑……”
- “这只是建议,不过……” — 改用
nit: - “做得很好!”“总体看起来不错,不过……” — 最多在开头说一次,不要在每条评论中重复
- 重述代码行的作用 — 审查者可以直接阅读差异
- 含糊措辞(“也许”“可能”“我认为”)— 不确定时使用
q:
保留:
- 准确的行号
- 准确的符号/函数/变量名,并用反引号括起来
- 具体的修复方案,不要写“考虑重构”
- 如果问题本身不能清楚说明原因,则说明为什么
示例
❌ “我注意到第 42 行没有检查 user 对象是否为 null,就访问了 email 属性。如果在数据库中找不到用户,这可能会导致崩溃。你可以考虑在这里添加 null 检查。”
✅ L42: 🔴 bug: .find() 后的 user 可能为 null。在 .email 前添加保护。
❌ “这个函数似乎承担了很多职责,拆分成更小的函数或许能提升可读性。”
✅ L88-140: 🔵 nit: 50 行函数承担了 4 项职责。拆分为 validate/normalize/persist。
❌ “考虑过 API 返回 429 时会发生什么吗?我觉得我们可能应该处理这种情况。”
✅ L23: 🟡 risk: 遇到 429 时不会重试。用 withBackoff(3) 包装。
自动调整清晰度
以下情况不采用简洁模式:安全问题(CVE 级漏洞需要完整说明和参考资料)、架构方面的分歧(需要说明理由,而非仅写一句话),以及作者是新手、需要解释原因的引导场景。在这些情况下先写一段普通说明,然后其余内容恢复简洁风格。
边界
仅进行审查——不编写代码修复、不批准/请求更改、不运行 linter。输出可直接粘贴到 PR 的评论。“stop caveman-review”或“normal mode”:恢复为详细审查风格。
输出报告
完成所有主要技能任务后,将提案草稿写入 wiki。
步骤
1. 构建文件名:
- 格式:
DDMMYY-<ten>.md DDMMYY= 今天的日期(例如,2026 年 6 月 2 日为020626)<ten>= 用 2–4 个 kebab-case 单词概括完成的工作(例如,landing-page-coteccons、brand-kit-fintech、ingest-auth-spec)
2. 写入 llmwiki/wiki/draft/cave/DDMMYY-<ten>.md:
# DDMMYY-<ten>
**Type:** draft
**Status:** proposed
**Tags:** <skill-name>, output-report
**Proposed:** YYYY-MM-DD
## What
<One sentence — what this skill invocation produced or decided>
## Output
<Key artefacts, files created/modified, or decisions made>
## Files
| File | Action |
|------|--------|
| `path/to/file` | created / modified |
## Notes
- Invoked via: `/<skill-name>` skill
## Origin
- **Draft:** `wiki/draft/cave/DDMMYY-<ten>.md`
- **Commit:** _(filled by verify-before-commit)_
- **Date promoted:** _(filled by verify-before-commit)_
3. 更新 wiki 索引和日志:
llmwiki/wiki/index.md— 追加一行:| [DDMMYY-<ten>](draft/cave/DDMMYY-<ten>.md) | draft | YYYY-MM-DD |llmwiki/wiki/log.md— 追加:## YYYY-MM-DD — <skill-name> — <ten>
仅当该技能没有产物且没有决策时才跳过(例如,纯展示模式
/caveman-stats)。