junliu1066/vibe-coding-harness
>- 质检 Agent:检查 vibe-coding-kit 其他 Skill 的产出物是否符合治理规范。 当用户说"检查一下产出"、"帮我看看合不合规"、"质检"、"验证 PRD"、"检查项目说明书", 或在任何 Skill 完成产出后,使用此 Skill 做合规检查。 它读取项目根目录的 harness.json,逐条校验产出文件,报告违规项和修复建议。 这是 vibe-coding-kit 套件的治理层(harness),确保所有产出物格式统一、质量达标。 它不止检查格式,还会做跨 Skill 一致性校验——比如 PRD 里的项目名和项目说明书里的项目名是不是一致。
npx skills add https://github.com/Junliu1066/vibe-coding-kit --skill vibe-coding-harness
这不是一个独立使用的 Skill,而是其他 Skill 的"守门员"——在任何 Skill 声称"完成"后,用它来验证产出物是否真正符合规范。
> 治理规则来自项目根目录的 harness.json(唯一真实来源)和 CLAUDE.md(人类可读宪法)。
> 本 Skill 把这些规则变成逐条可执行的检查项。
先确认用户想检查什么:
docs/ 下所有已有产出物docs/ 不存在或为空,直接报告"没有可检查的产出物"读取项目根目录的 harness.json,提取:
produces(该产出什么文件)required_sections(必须包含的章节)field_requirements(字段级校验规则)validation(内容级校验规则)cross_skill_rules(跨 Skill 一致性规则,仅在多 Skill 产出共存时检查)quality_gates.before_delivery(交付前必须通过的门)workflow(流程定义:阶段、步骤、entry_gate/exit_gate、账本规则)—— 用于新增的流程一致性检查progress_cards(项目进度卡规则:低上下文读取、总表/模块卡/任务卡同步)并读取 docs/进度账本.md(流程状态来源)。若不存在,流程检查记为"未启用账本"。
如果项目存在 .dsu/progress/index.md,读取该文件并按需抽查相关模块卡和任务卡;如果不存在,项目进度卡检查记为"未启用"。
按以下顺序逐项检查,每项给出通过/不通过/不适用:
对照 harness.json.workflow 和 docs/进度账本.md,核对过程有没有跑偏(不只是产出物对不对):
exit_gate 是否真的过了(防止"账本说完成、产出物却没达标")。required:false、且在账本"跳步留痕"写了理由;required:true 的步骤被跳 = 🔴 违规。docs/ 下实际存在的产出物对得上。输出:🔴 流程违规(如"S1 未过却已在 S2")/🟡 跳步未留痕、账本与进度说明书不一致/✅ 流程一致。
如果项目启用了 .dsu/progress/,对照 harness.json.progress_cards 检查:
.dsu/progress/index.md 是否存在且非空。.dsu/progress/modules/duXX-xxx.md。输出:🔴 缺少总表或状态冲突/🟡 总表过细、模块卡缺失、任务 closeout 未同步/✅ 项目进度卡可用。
对照 produces,确认每个文件是否已创建、是否非空。
对照 required_sections,在文件中搜索这些章节标题是否存在。
对照 field_requirements:
v\d+\.\d+)对照 validation:
对照 constitution.forbidden 逐条扫描:
{ } 配对、TODO、TBD 等占位符模式sk- 前缀等)prd.md 的「产品结论」与 项目说明书.md 的「需求基准描述」逐条对照 quality_gates.before_delivery。
按严重程度分组输出:
## 质检报告:{Skill 名称 / 全量检查}
### 🔴 错误(必须修复,否则产出不合格)
| # | 文件 | 规则 | 问题 | 修复建议 |
|---|------|------|------|---------|
| 1 | docs/prd.md | 版本格式 | "版本:待定"不符合 v数字.数字 格式 | 改为 "版本:v0.1" |
| 2 | docs/prd.md | 字段非空 | "产品名称"为空 | 填写实际产品名称 |
### 🟡 警告(建议修复,不阻断)
| # | 文件 | 规则 | 问题 | 修复建议 |
|---|------|------|------|---------|
| 1 | docs/prd.md | 边界声明 | "明确不做"为空,缺少边界 | 至少写一条"本版不做什么" |
### 🔵 提示(最佳实践建议)
| # | 文件 | 建议 |
|---|------|------|
| 1 | docs/项目说明书.md | 「目录结构」建议填写,方便后续维护 |
### 流程审计结果(这一版新增)
| 检查 | 状态 |
|------|------|
| 阶段按序推进 | ✅ 一致 |
| 无假完成(出口门真过) | ❌ S1 标完成但 prd 缺验收 |
| 跳步均已留痕 | 🟡 S1.5 跳过未写理由 |
| 账本与产出物吻合 | ✅ 一致 |
### 项目进度卡审计结果
| 检查 | 状态 |
|------|------|
| 总表存在且非空 | ✅ 通过 |
| 总表只放索引级信息 | ✅ 通过 |
| 模块卡按需下钻 | 🟡 DU02 指向的模块卡不存在 |
| 任务 closeout 三处同步 | ✅ 通过 |
| 状态枚举合规 | ✅ 通过 |
| 下一轮 AI 最小上下文可用 | ✅ 通过 |
### 质量门结果
| 门 | 状态 |
|----|------|
| QG-001 文件存在 | ✅ 通过 |
| QG-002 无占位符 | ❌ 未通过 |
| QG-003 无敏感信息 | ✅ 通过 |
| QG-004 版本号 | ❌ 未通过 |
| QG-005 验收可验证 | ✅ 通过 |
| QG-006 语言检查 | ✅ 通过 |
### 总结
- 错误 X 项,警告 Y 项,提示 Z 项
- 质量门:A/B 通过
- 判定:❌ 不合格,需要修复后重新质检
如果全部通过:
## 质检报告:全部通过 ✅
所有产出物符合治理规范:
- 文件齐全、章节完整、字段合规
- 质量门 6/6 通过
- 跨 Skill 一致性检查通过
可以交付。
.claude/settings.json 中的 hooks,每次写入关键文件后自动提醒| Skill | 关键检查项 |
|-------|-----------|
| vibe-coding-prd | prd.md 必须章节齐全 / 版本号格式 / 产品名称非空 / 验收标准可验证 |
| vibe-coding-requirements | 需求基准描述 80-300 字 / 覆盖四要素 |
| vibe-coding-architecture | 选定技术栈含"选定"和"否决" |
| vibe-coding-production | 安全清单逐条确认 / 验收清单是 checkbox 格式 |
| vibe-coding-survival | 以后再说清单存在 |
| (流程)进度账本 | 阶段按序、无假完成、跳步留痕、账本与产出物吻合 |
| (开发期上下文)项目进度卡 | 默认只读 index、模块按需下钻、任务 closeout 三处同步、状态枚举合规 |
CLAUDE.md 是事前预防——在 AI 开始工作前就告诉它规则harness.json 派生,保持规则一致Take junliu1066/vibe-coding-harness from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.