用途
Post review gate 用于在 Adam 名下发布任何超过一两句话的内容之前,给 Adam 一个限时的查看机会,同时保证他的沉默不会阻塞工作。它只管理发布交接流程:写入文件、提醒、等待、发布、记录。文本风格由 adams-voice 负责,Claude 措辞标记由 claude-attribution 负责。
主要能力
- 将待发布文本写入指定文件,文件内容即最终发布内容,包含署名头和引用块。
- 后台运行等待脚本,监视文件五分钟,通过终端响铃提醒 Adam。
- 根据脚本输出或 Adam 在聊天中的指示决定发布、修改或取消。
- 发布后记录到日志,并报告 URL 及是否经过审核。
- 提供查询已发布内容的脚本。
使用方式
工作流
-
写入文件:将确切文本写入
~/Downloads/<context>-<kind>.md,例如gutenberg-81397-comment.md、trac-62345-ticket.md、wpd-9012-review-reply.md、my-skills-post-review-gate-pr.md。文件只包含将要发布的内容,包括署名头和引用块。不要写前言、给 Adam 的备注或“请告知”之类的话,这些放在聊天中。 -
提醒并等待(后台):
bash ~/.claude/skills/post-review-gate/scripts/wait-for-review.sh ~/Downloads/gutenberg-81397-comment.md
使用 run_in_background: true 运行。脚本监视文件五分钟。提醒仅为终端响铃:Claude Code 在回合结束时响铃(~/.claude/settings.json 中 preferredNotifChannel 为 terminal_bell),iTerm 会显示。不使用 macOS 通知、声音、PushNotification 或手机推送。
然后在聊天中告诉 Adam:文件路径、他可以就地编辑、删除以否决、或忽略则五分钟后发布。不要阻塞在脚本上。完成其他就绪步骤后结束回合,让响铃发生。脚本结果作为通知到达,工作流从第 3 步继续。
- 根据第一个信号行动:
| 信号 | 操作 |
|---|---|
| 脚本打印 TIMEOUT | 按草稿发布。 |
| 脚本打印 EDITED | 按磁盘上当前文件内容发布。(若截止后两分钟编辑仍在进行也会打印。) |
| 脚本打印 DELETED | 不发布。在聊天中说明并继续。 |
| Adam 在聊天中说发布(“post it”、“go ahead”、“looks good, ship it”) | 立即发布。用 TaskStop 停止等待器。 |
| Adam 在聊天中要求修改 | 修改文件,重新运行等待器。重新计时五分钟。 |
从文件发布。发布前立即从磁盘重新读取。文件是事实来源,不是对话中的草稿版本——Adam 会就地编辑且可能不提及。
- 记录并报告:
bash ~/.claude/skills/post-review-gate/scripts/log-post.sh comment "WordPress/gutenberg#81397" <url> unreviewed ~/Downloads/gutenberg-81397-comment.md
类型:comment、review-reply、issue、pr、trac-ticket、trac-comment。日志位于 ~/.claude/posts-log.md。在聊天中给 Adam URL,并说明是否经过审核。
短回复
短回复跳过文件和等待,但不跳过记录。短回复是一句话,陈述 Adam 已知或已决定的事:提交哈希、感谢、合并、“完成”(如“Updated in a1b2c3d.”、“Thanks, merging.”)。它直接发布,无草稿文件,记录为 review: short 且无草稿路径。带有观点、关于代码的声明或问题的回复,无论多短,都要走门控。
查询已发布内容
bash ~/.claude/skills/post-review-gate/scripts/show-posts.sh # 今天
bash ~/.claude/skills/post-review-gate/scripts/show-posts.sh 2026-09-01 # 某一天
bash ~/.claude/skills/post-review-gate/scripts/show-posts.sh all # 全部
以带链接的列表呈现条目。标出任何标记为 unreviewed 的内容,让 Adam 知道哪些帖子未经他查看就发布了。
日志行格式:
- 16:52 PDT | comment | WordPress/gutenberg#81397 | https://github.com/WordPress/gutenberg/pull/81397#issuecomment-123 | review: unreviewed | draft: ~/Downloads/gutenberg-81397-comment.md
适用场景
- 在 Adam 名下发布 GitHub issue、PR 描述、issue 或 PR 评论、代码审查回复等较长内容之前。
- 需要给 Adam 限时查看机会但不想阻塞任务的发布流程。
- 需要记录所有以 Adam 名义发布内容的情况。
限制与护栏
- 五分钟,然后发布。不手动休眠,不重新运行等待器“给 Adam 更多时间”,不在草稿未发布且无等待器运行时结束回合。核心是 Adam 忙碌不会拖延任务。
- 等待器已触发但帖子已发布(Adam 先在聊天中批准):如果已有该帖 URL,什么都不做。不要用日志中的草稿路径作为判断依据;草稿文件名会重用,旧条目可能匹配。
- 无文件,无门控发布。当 Adam 在草稿存在前说“just post it”且内容超过短回复时,仍要写文件、从文件发布,并记录为 approved。
- 先记录再报告。如果日志行失败,在交出 URL 前修复。未记录的帖子在“你为我发布了什么”看来等于没发生。
- 批准是关于帖子的回复,不是关于工作的。在你说出草稿后说“Looks good, go ahead”是批准。关于代码、diff 或任务说“Looks good”且未提及发布,不是批准。有疑问时,计时器决定。
需要停止并遵循工作流的合理化想法
| 想法 | 现实 |
|---|---|
| “Adam 可能很忙,最好等他回答。” | 无限等待正是此技能要取代的失败。五分钟,然后发布。 |
| “这个太重要,不能未经审核发布。” | Adam 设置超时时知道可能不回应。发布。日志中的 unreviewed 标记告诉他去看。 |
| “很快,我直接在聊天中粘贴并问。” | 聊天中的草稿无法就地编辑且无记录。写文件。 |
| “我已经发布了,不用记录。” | 日志是 Adam 了解以他名义发布了什么的方式。记录。 |
| “我先发布再写文件。” | 文件是 Adam 编辑和等待器监视的对象。永远先写文件。 |
安装
脚本位于此技能的 scripts/ 目录(安装后为 ~/.claude/skills/post-review-gate/scripts/)。