mcpField
C
caveman-review

caveman-review

github.com/rheinmir测试与质量10262 次安装2 周前更新
代码仓库

关于 caveman-review

caveman-review 是用于撰写简洁、可执行代码审查意见的技能。意见按位置、问题和修复方式组织,可选严重程度标签;安全或架构问题则允许详细说明。

主要功能

  1. 01每项发现一行意见
  2. 02位置、问题与修复格式
  3. 03可选严重程度标签
  4. 04保留准确行号和符号名
  5. 05安全与架构问题可详细说明

适用场景

  1. 01指出代码差异中的错误
  2. 02标记脆弱的错误处理路径
  3. 03提出针对性的代码修改
  4. 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)。

评论

支持 Markdown