关于 review-markdown-comments
一项指导 Agent 直接处理用户指定 Markdown 文件中 Hubble 评论的技能。它规定了如何定位评论、保留线程元数据、追加回复及校验修改。
主要功能
- 01定位 CriticMarkup 评论锚点
- 02保留并更新评论线程 JSON
- 03按格式追加 Agent 回复
- 04处理分段锚点和解析错误
- 05校验文件修改与元数据
适用场景
- 01回复 Markdown 文件中的指定评论
- 02将评论标记为已解决或重新打开
- 03保留现有回复及其他元数据
- 04避免修改评论锚点和无关内容
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ bholmesdev/ hubble-skills --skill review-markdown-comments安装后在 Claude Code 中输入/review-markdown-comments确认已加载。
详细介绍
审阅 Markdown 评论
直接处理用户指定的 Markdown 文件。
评论格式
Hubble 使用以下可移植子集在 Markdown 正文中存储审阅状态:
{==anchored text==}{>>comment body<<}{#c1}
{++suggested insertion++}
{--suggested deletion--}
{~~original text~>replacement text~~}
线程状态可以跟在评论锚点后面,作为包含原始 JSON 的 HTML 评论。
它不进行 URI 编码;Hubble 会直接用 JSON.parse 解析,因此
编码后的负载会解析失败,并在备注中显示为字面文本:
Hubble 使用 v、replies 和 resolved;也允许使用其他顶层键。
始终写入 "v": 1。将 JSON 中的任何 -- 转义为 \u002d\u002d,
因为字面量 -- 会提前终止 HTML 评论。回复的格式如下:
{
"id": "r1",
"body": "Agent response",
"author": "agent",
"createdAt": "2026-01-01T00:00:00.000Z"
}
行内代码或围栏代码中的审阅标记是字面文本,不是评论。
处理评论
- 读取完整文件。查找请求的紧凑 ID,例如
{#c7}; 如果用户只提供了锚定文本,则改为查找准确的 CriticMarkup 锚点。 确认锚定文本和评论正文与用户请求相符。如果 ID 或准确锚点缺失或有歧义,请停止并报告歧义。 - 解析紧跟在该逻辑评论后面的 JSON 元数据。如果不存在,则从空对象开始。如果格式错误,请停止,不要覆盖。
- 对元数据进行往返处理:只修改回复列表和
resolved,然后重新序列化完整对象 — 其他所有键和已有回复都必须保留。回复只能追加:添加一条回复,使用下一个未使用的rNID、author: "agent"、响应正文,以及当前 UTC 时间作为 ISO-8601 格式的createdAt。 - 仅当用户请求已实际处理时,才设置
resolved: true。对于明确的重新打开请求,设置resolved: false。 致谢、测试、问题和未完成的工作都应保持为false。 - 将元数据块写在评论的
{#cN}标记后(参见“分片锚点”)。锚定文本必须逐字节保持不变,评论正文、CriticMarkup 分隔符、建议的编辑内容以及所有无关 Markdown 也都必须保持不变。
分片锚点
一个逻辑评论 ID 可能出现在多个 CriticMarkup 片段中。最后一个片段为准:保留所有标记,只保留一个元数据块,并将其放在最后一个片段之后 — 如果元数据块当前跟在较早的片段后面,则将其移到最后一个片段之后。如果分片可能影响用户的格式,请报告分片情况。
验证
编辑后:
- 重新读取文件,确认请求的 ID 和准确的锚定文本仍然存在。
- 解析最后一个片段之后的元数据,并确认其为有效 JSON、新回复是最后一条回复、旧回复和其他键已往返保留,且
resolved的值符合预期。确认备注会正常显示评论,而不是将原始块显示为文本。 - 检查周围的 Markdown 是否有意外更改:对于受 Git 跟踪的文件,检查
git diff -- <file>;对于被忽略或生成的文件,则比较修改前后的文本。 - 报告你留下的回复,以及是否已解决该评论。
评论
支持 Markdown