publicity-review 用于审查尚未提交的 git diff,判断新增内容是否适合发布到公开仓库。其检测范围有意保持较窄:密钥与凭据、用户专属绝对路径(如 /Users/<name>/...)、内部 URL 或主机名、个人身份信息,以及明显的专有内部信息;许可证、品牌与风格类内容不在范围内。它不是通用 linter。
该技能面向非交互式流程设计,可由 dev-workflow-triage 或 dev-workflow 的 hooks.on_complete 等调用,不向用户提问,只返回结构化摘要或以机器可读原因码提前终止。
调用契约:调用方以自然语言传入字段,包括 Base ref(可选,默认 HEAD,作为 diff 基准的 git ref)、Max iterations(可选,默认 2,精修循环上限)、Model(可选,默认 sonnet,用于审查 Agent 分派;也可为 opus、haiku 或 inherit)。调用方传入的 Model 优先于技能默认值。技能运行期间调用方不得暂存改动,否则暂存内容会混入 diff 并破坏判定。
工作流要点:第一步从调用文本提取字段,运行 git diff <Base ref>;若 diff 为空则提前返回 skipped;并计算受影响文件集合。第二步进入迭代循环,每轮分派新的审查 Agent,reviewer 只判断 diff 中的新增行(+ 行),对每个发现标注 category、severity、confidence、snippet、rationale,其中 secret 类别的凭据值需以 <REDACTED> 替换。对于可机械修复的发现(仅 secret 与 user-specific-path)可给出 suggested_edits。审查结果需以围栏 JSON 块返回,格式含 findings 与 suggested_edits 两个数组。
解析与应用顺序:判定缺失或格式错误则 skipped;schema 违规则 skipped;findings 与 suggested_edits 同时为空视为收敛;自第二次迭代起若发现集合与上一轮相同则视为发散;否则按顺序应用建议编辑,old_string 不匹配的条目跳过。每次应用编辑后执行安全检查:若 YAML frontmatter 解析失败或 git diff --name-only 出现受影响文件之外的路径,则用 git checkout HEAD -- <file> 回滚并返回 conflict。
达到最大迭代仍未收敛时,根据最后一轮发现计算剩余与警告发现,secret 类别且 severity 为 medium 或 high 的发现无论 confidence 均进入未解决项。