name: validate-requirements description: 根据用户为项目类型保存的标准,验证输入是否满足先决条件。在任何质量管道的开始使用,确保用户提供了足够的需求。
验证需求技能
目的
确保用户的输入(需求、描述、源材料)满足为此项目类型在其标准中定义的先决条件。这是质量管道中的第一道关卡。
检查内容
基于用户为项目类型保存的标准,验证:
-
完整性 - 信息是否足够?
- 示例:“描述组件的用途”、“解释需要哪些重构”、“提供博客主题”
-
清晰度 - 描述是否清晰具体?
- 避免模糊:“写点东西” → 需要细节
- 具体:“创建一个带键盘导航的下拉组件” → 清晰
-
格式 - 是否为可识别的格式?
- 提供了代码示例吗?有要重构的现有代码吗?
- 有资源链接吗?有内容主题大纲吗?
-
充分性 - 是否有足够的上下文?
- 用户解释了“为什么”吗?
- 提到了约束/需求吗?
-
标准对齐 - 是否符合其定义的验证规则?
- 读取项目类型的保存标准(来自standards.json)
- 根据其validationRules部分进行检查
流程
- 读取用户的输入/需求
- 使用StandardsRepository加载他们为此项目类型的标准
- 根据其定义的验证规则进行检查
- 扫描常见问题:
- 空或最少的描述
- 冲突的需求
- 缺少关键上下文
- 清晰地报告发现
使用标准
通过StandardsRepository访问标准:
const standards = standardsRepository.getStandards(context.projectType)
if (standards && standards.validationRules) {
// 根据其验证规则检查输入
checkAgainstRules(input, standards.validationRules)
} else {
// 尚无自定义标准,使用通用验证
performGeneralValidation(input)
}
有关接口详情,请参阅.claude/lib/standards-repository.md。
输出
返回结构化的验证结果:
{
"status": "valid" 或 "invalid",
"issues": [
"发现的具体问题列表",
"例如:'缺少要重构的示例代码'",
"例如:'不清楚成功标准是什么'"
],
"validationDetails": {
"clarity": "pass" 或 "needs_clarification",
"completeness": "pass" 或 "incomplete",
"contextSufficient": "pass" 或 "needs_more_context"
},
"recommendation": "proceed_to_next_step" 或 "ask_user_to_clarify_X",
"summary": "验证结果的简要描述"
}
成功标准
✓ 状态为“valid” ✓ 未发现关键问题 ✓ 输入与其标准对齐 ✓ 有足够的信息继续生成
验证示例
项目类型:React组件
用户输入:“创建一个下拉组件”
验证流程:
- 加载React组件标准
- 检查:“必须描述组件的用途”
- 失败:用户只说“下拉组件”
- 检查:“应指定必需和可选的属性”
- 失败:未提及任何属性
- 输出:
{ "status": "invalid", "issues": [ "需要更多关于组件用途的细节(例如,将在哪里使用?)", "应指定下拉组件需要哪些属性", "应描述下拉行为(打开/关闭、键盘导航等)" ], "recommendation": "在生成前请用户提供更多细节" }
用户更新后的输入:“创建一个用于选择团队成员的可搜索下拉组件。它应具有键盘导航(箭头键、回车选择)。属性:选项(数组)、onSelect(回调)、占位符(字符串)。”
验证结果:
{
"status": "valid",
"issues": [],
"summary": "需求清晰、具体且完整"
}
实施注意事项
- 如果用户的标准尚不存在,则使用通用验证(是否有足够的内容可以处理?)
- 始终具体说明缺少什么,而不仅仅是“无效”
- 当建议澄清时,提出具体问题
- 如果输入接近有效,请提出1-2个澄清问题,而不是拒绝它