diff --git a/catalog.json b/catalog.json index 1547625..2c20092 100644 --- a/catalog.json +++ b/catalog.json @@ -2,12 +2,9 @@ "repo": "ai-proj-helper", "coverage": { "required": 40, - "with_evals": 0, - "with_docs": 0, + "with_evals": 16, + "with_docs": 16, "missing_evals": [ - "ai-proj", - "pm-ask", - "pm-risk", "agent-browser", "agent-swarm", "ai-chat", @@ -31,25 +28,9 @@ "pull-request", "review-checklist", "slark-cicd", - "slark-dsh-cicd", - "req-audit", - "req-compare", - "req-design", - "req-dev", - "req-lookback", - "req", - "req-prd", - "req-prototype", - "req-research", - "req-retro", - "req-review", - "req-test-gate", - "req-workflow" + "slark-dsh-cicd" ], "missing_docs": [ - "ai-proj", - "pm-ask", - "pm-risk", "agent-browser", "agent-swarm", "ai-chat", @@ -73,23 +54,10 @@ "pull-request", "review-checklist", "slark-cicd", - "slark-dsh-cicd", - "req-audit", - "req-compare", - "req-design", - "req-dev", - "req-lookback", - "req", - "req-prd", - "req-prototype", - "req-research", - "req-retro", - "req-review", - "req-test-gate", - "req-workflow" + "slark-dsh-cicd" ] }, - "generated_at": "2026-10-31T21:04:04Z", + "generated_at": "2026-10-31T21:14:46Z", "total": 61, "counts": { "promoted/user-invoked": 18, @@ -174,8 +142,8 @@ "description_len": 77, "path": "skills-core/ai-proj-plugin/skills/SKILL.md", "digest": "77ce4d2eb10e1d29", - "has_evals": false, - "has_docs": false + "has_evals": true, + "has_docs": true }, { "name": "pm-ask", @@ -187,8 +155,8 @@ "description_len": 98, "path": "skills-core/pm-ask-plugin/skills/SKILL.md", "digest": "e5b69a0b56985472", - "has_evals": false, - "has_docs": false + "has_evals": true, + "has_docs": true }, { "name": "pm-risk", @@ -200,8 +168,8 @@ "description_len": 72, "path": "skills-core/pm-risk-plugin/skills/SKILL.md", "digest": "928cfec76018329f", - "has_evals": false, - "has_docs": false + "has_evals": true, + "has_docs": true }, { "name": "publish", @@ -720,8 +688,8 @@ "description_len": 55, "path": "skills-req/req-audit-plugin/skills/SKILL.md", "digest": "ff2e6197bbb059c6", - "has_evals": false, - "has_docs": false + "has_evals": true, + "has_docs": true }, { "name": "req-compare", @@ -733,8 +701,8 @@ "description_len": 79, "path": "skills-req/req-compare-plugin/skills/SKILL.md", "digest": "3428e3f37ef9e9e8", - "has_evals": false, - "has_docs": false + "has_evals": true, + "has_docs": true }, { "name": "req-design", @@ -746,8 +714,8 @@ "description_len": 96, "path": "skills-req/req-design-plugin/skills/SKILL.md", "digest": "74848800cab6e269", - "has_evals": false, - "has_docs": false + "has_evals": true, + "has_docs": true }, { "name": "req-dev", @@ -759,8 +727,8 @@ "description_len": 74, "path": "skills-req/req-dev-plugin/skills/SKILL.md", "digest": "494a5be5e7a11c0b", - "has_evals": false, - "has_docs": false + "has_evals": true, + "has_docs": true }, { "name": "req-lookback", @@ -772,8 +740,8 @@ "description_len": 47, "path": "skills-req/req-lookback-plugin/skills/SKILL.md", "digest": "cc6bff614a8f7bf4", - "has_evals": false, - "has_docs": false + "has_evals": true, + "has_docs": true }, { "name": "req", @@ -785,8 +753,8 @@ "description_len": 90, "path": "skills-req/req-plugin/skills/SKILL.md", "digest": "193cf871b73faff1", - "has_evals": false, - "has_docs": false + "has_evals": true, + "has_docs": true }, { "name": "req-prd", @@ -798,8 +766,8 @@ "description_len": 76, "path": "skills-req/req-prd-plugin/skills/SKILL.md", "digest": "7c4ad2baab6b2118", - "has_evals": false, - "has_docs": false + "has_evals": true, + "has_docs": true }, { "name": "req-prototype", @@ -811,8 +779,8 @@ "description_len": 81, "path": "skills-req/req-prototype-plugin/skills/SKILL.md", "digest": "7e362f4f895fb50a", - "has_evals": false, - "has_docs": false + "has_evals": true, + "has_docs": true }, { "name": "req-research", @@ -824,8 +792,8 @@ "description_len": 71, "path": "skills-req/req-research-plugin/skills/SKILL.md", "digest": "a94924f53bd4c80e", - "has_evals": false, - "has_docs": false + "has_evals": true, + "has_docs": true }, { "name": "req-retro", @@ -837,8 +805,8 @@ "description_len": 57, "path": "skills-req/req-retro-plugin/skills/SKILL.md", "digest": "636b7099d85e9549", - "has_evals": false, - "has_docs": false + "has_evals": true, + "has_docs": true }, { "name": "req-review", @@ -850,8 +818,8 @@ "description_len": 65, "path": "skills-req/req-review-plugin/skills/SKILL.md", "digest": "cd1a5181d72f35f4", - "has_evals": false, - "has_docs": false + "has_evals": true, + "has_docs": true }, { "name": "req-test-gate", @@ -863,8 +831,8 @@ "description_len": 159, "path": "skills-req/req-test-gate-plugin/skills/SKILL.md", "digest": "ceebcc2516ad40d3", - "has_evals": false, - "has_docs": false + "has_evals": true, + "has_docs": true }, { "name": "req-workflow", @@ -876,8 +844,8 @@ "description_len": 61, "path": "skills-req/req-workflow-plugin/skills/SKILL.md", "digest": "87499da3817d162d", - "has_evals": false, - "has_docs": false + "has_evals": true, + "has_docs": true }, { "name": "verification-before-completion", diff --git a/docs/skills/ai-proj.md b/docs/skills/ai-proj.md new file mode 100644 index 0000000..5bfe72e --- /dev/null +++ b/docs/skills/ai-proj.md @@ -0,0 +1,24 @@ +# ai-proj — 任务与需求管理 + +## What it does + +通过 ai-proj(`https://ai.pipexerp.com`)的 MCP / CLI 管理需求、任务、文档与进度:查询、创建、更新状态、关联需求与任务、挂证据文档。是所有项目状态数据的唯一权威来源。 + +## When to reach for it + +- 要查「某个 REQ / 任务的真实状态、优先级、截止、关联任务」 +- 要更新任务状态、挂文档、改优先级、改派 +- 汇报进度或做对齐检查前,需要拉真实数据 + +## Common questions + +- **数据以哪为准?** ai-proj,不靠聊天记录或记忆。主机必须是 `https://ai.pipexerp.com`(写成 `api.pipexerp.com` 会失败)。 +- **可以自己改需求优先级吗?** 不行,需求优先级是业务决策;任务优先级可以对齐需求。 +- **任务 completed 就是完成了吗?** 不是,REQ 未 `released` 只能算步骤完成。 +- **接口报错怎么排查?** 先 GET 查证实体是否存在、凭证主机是否正确,不要猜 ID。 + +## It's working if + +- 问「REQ-XXXX 现在什么状态」时,它给出带字段名与时间戳的真实数据,而不是复述对话 +- 更新任务状态前先查一次实体,写入后回读确认 +- 遇到 404/401 时给的是排查步骤与真实查询结果,不是编造的 ID diff --git a/docs/skills/pm-ask.md b/docs/skills/pm-ask.md new file mode 100644 index 0000000..f3c597c --- /dev/null +++ b/docs/skills/pm-ask.md @@ -0,0 +1,22 @@ +# pm-ask + +## What it does + +基于 ai-proj MCP 与 git log 真实数据的项目问答:统计任务/需求数量、进度、谁做了什么,回答前必须查真实数据。 + +## When to reach for it + +用户说 /ask、问一下、统计一下、最近多少、谁做了多少、本月进度时。 + +## Common questions + +- **数据从哪来?** ai-proj MCP + git log,不靠记忆和估算。 +- **查不到数据怎么办?** 如实报告缺失与失败原因,给出查询口径,不编造数字。 +- **能做预测吗?** 只能基于真实阶段数据做推导,并标注假设。 +- **回答格式?** 先给结论数字,再给来源与口径。 + +## It's working if + +- 问团队本月产出时,它先拉数据再回答,并附时间范围与来源 +- 接口异常时明确说“数据未取到”,不出现任何编造数字 +- 对“估一下”的请求,给口径而不是给假数字 diff --git a/docs/skills/pm-risk.md b/docs/skills/pm-risk.md new file mode 100644 index 0000000..82b57aa --- /dev/null +++ b/docs/skills/pm-risk.md @@ -0,0 +1,22 @@ +# pm-risk + +## What it does + +三维度项目风险扫描:需求层(停滞/逾期/优先级)、代码层(分支健康/评审积压)、流程层(门禁/交付态),按严重/警告/提示分级输出。 + +## When to reach for it + +用户说 /risk、风险扫描、有什么风险、哪些需求停滞了、分支健康时。 + +## Common questions + +- **找不到数据算无风险吗?** 不算,缺失要标注未覆盖。 +- **分级标准?** 严重=已阻塞交付;警告=会拖延;提示=观察项。 +- **会不会误报?** 每条风险附证据与来源,便于人工复核。 +- **输出多长?** 先概览再分项,严重项必须置顶。 + +## It's working if + +- 扫描报告每条风险都有数据来源,不是笼统描述 +- 数据源不可用时明确写“该维度未覆盖” +- 不会因为查不到就输出“无风险” diff --git a/docs/skills/req-audit.md b/docs/skills/req-audit.md new file mode 100644 index 0000000..bbf13c5 --- /dev/null +++ b/docs/skills/req-audit.md @@ -0,0 +1,22 @@ +# req-audit + +## What it does + +部署后审计:运行时日志检查、静态缺陷分析、设计偏移检测,产出审计报告并关联任务。 + +## When to reach for it + +需求部署后,或用户说“审计一下”“部署后检查”时;也可由 /req done 触发。 + +## Common questions + +- **审计和测试的区别?** 测试验证功能对错,审计查运行时异常、代码缺陷与实现是否偏离设计。 +- **没日志能审吗?** 能审静态部分,但运行时项必须标未覆盖。 +- **发现偏移怎么办?** 列偏移项+影响面+建议,交给负责人决策。 +- **报告存哪?** 关联到需求/任务文档,便于回溯。 + +## It's working if + +- 审计报告包含三类检查结果与证据 +- 缺运行时证据时明确标未覆盖 +- 发现偏移会列出具体条目而不是笼统说“有偏差” diff --git a/docs/skills/req-compare.md b/docs/skills/req-compare.md new file mode 100644 index 0000000..f84bfd8 --- /dev/null +++ b/docs/skills/req-compare.md @@ -0,0 +1,22 @@ +# req-compare + +## What it does + +对比式需求分析:以参考系统为基准做功能对比,再推导目标系统设计,产出对比式 PRD。 + +## When to reach for it + +系统平移、竞品借鉴、版本升级需要对比论证时。 + +## Common questions + +- **没有参考资料能写吗?** 可以写,但参考系统细节必须标注为待验证假设。 +- **对比维度怎么定?** 按功能、交互、数据、权限、成本五类,按需求裁剪。 +- **结论要什么形式?** 对比表 + 差异结论 + 目标系统取舍。 +- **会不会照搬竞品?** 只借鉴结论,落地按自身约束重新设计。 + +## It's working if + +- 对比表每行能追溯到资料或标注为假设 +- 结论明确给出取舍而不是罗列 +- 没有把“凭印象”写成事实 diff --git a/docs/skills/req-design.md b/docs/skills/req-design.md new file mode 100644 index 0000000..3eb8f5b --- /dev/null +++ b/docs/skills/req-design.md @@ -0,0 +1,22 @@ +# req-design + +## What it does + +PRD 到开发设计的转换:API 契约、数据模型变更、变更文件清单、任务拆分与依赖、技术风险评估。 + +## When to reach for it + +执行 /req doc、或在评审后进入设计阶段时。 + +## Common questions + +- **设计前需要什么?** PRD 与验收标准;缺验收标准要先补。 +- **任务拆到什么粒度?** 单任务 2–4 小时可完成,带依赖边与验收标准。 +- **找不到模块怎么办?** 报告缺失并给待确认项,不猜路径。 +- **要写测试策略吗?** 要,随设计一起给。 + +## It's working if + +- 输出含契约表、变更文件、子任务三件套 +- 缺验收标准时会阻断而不是硬写 +- 任务清单里有 blockers,不只有层级 diff --git a/docs/skills/req-dev.md b/docs/skills/req-dev.md new file mode 100644 index 0000000..4ac4e07 --- /dev/null +++ b/docs/skills/req-dev.md @@ -0,0 +1,22 @@ +# req-dev + +## What it does + +把 PRD 转成可执行开发计划:代码库分析、现有实现盘点、任务拆分、技术方案与风险。 + +## When to reach for it + +执行 /req doc、需要从需求走到可执行计划时。 + +## Common questions + +- **和 req-design 区别?** req-dev 重“怎么落地”:代码库分析与任务拆分;req-design 重设计文档与契约。 +- **不看代码能拆吗?** 不能,先分析再拆。 +- **计划里要有什么?** 任务、依赖、验收、风险、需要确认项。 +- **代码库与 PRD 冲突?** 以真实代码为准,报告差异后调整。 + +## It's working if + +- 计划里的任务能直接执行,附依赖与验收 +- 不读代码就要求拆任务会被拒绝 +- 发现代码与 PRD 不符会报告差异而不是硬拆 diff --git a/docs/skills/req-lookback.md b/docs/skills/req-lookback.md new file mode 100644 index 0000000..9cc850a --- /dev/null +++ b/docs/skills/req-lookback.md @@ -0,0 +1,22 @@ +# req-lookback + +## What it does + +部署后回归测试:按变更影响面验证既有功能是否被破坏,产出回归报告。 + +## When to reach for it + +需求部署后;或 /req done 前需要确认无回归时。 + +## Common questions + +- **回归范围怎么定?** 按变更影响的模块与调用方扩散确定。 +- **只测新功能行吗?** 不行,必须覆盖受影响面。 +- **发现问题怎么办?** 报告复现与影响,给回滚/修复建议。 +- **要留证据吗?** 要,命令与结果。 + +## It's working if + +- 回归报告含影响范围、用例、结果 +- 要求只测新功能会被拒绝 +- 发现回归会给出回滚或修复建议 diff --git a/docs/skills/req-prd.md b/docs/skills/req-prd.md new file mode 100644 index 0000000..d887a97 --- /dev/null +++ b/docs/skills/req-prd.md @@ -0,0 +1,22 @@ +# req-prd + +## What it does + +产品需求文档(PRD)编写与双写:按模板产出需求/预期/验收标准、界面原型要求,并同时写入本地仓库与 ai-proj Task Document。 + +## When to reach for it + +需求讨论确认后要写 PRD、或用 /req prd 时。 + +## Common questions + +- **PRD 最少要有什么?** 需求描述、预期结果、≥2 条可检查验收标准。 +- **为什么要双写?** 本地可版本化,ai-proj 供评审与追溯。 +- **验收标准怎么写?** 可检查、可对应测试,不写“体验良好”这类。 +- **写入失败怎么办?** 保留本地并报告失败,不假装成功。 + +## It's working if + +- PRD 都含可检查验收标准 +- 写入后回读确认,不只打印成功 +- 失败时明确报失败并保留本地稿 diff --git a/docs/skills/req-prototype.md b/docs/skills/req-prototype.md new file mode 100644 index 0000000..db2d121 --- /dev/null +++ b/docs/skills/req-prototype.md @@ -0,0 +1,22 @@ +# req-prototype + +## What it does + +原型生成与关联:把 PRD 转成可交互 HTML 原型,上传并关联到需求的 prototype_urls,支持 Stitch 视觉探索。 + +## When to reach for it + +有 UI 的需求在 PRD/缺陷收敛后需要原型时。 + +## Common questions + +- **原型要确认吗?** 要,确认后才能作为开发依据。 +- **上传失败会丢吗?** 本地保留,报告失败。 +- **能直接改线上页面吗?** 不能,原型是独立 HTML。 +- **和 PRD 什么关系?** 原型回填到 PRD 的界面章节。 + +## It's working if + +- 原型生成后有可访问链接并回读关联成功 +- 要求跳过确认直接开发会被劝回 +- 上传失败时本地文件仍在 diff --git a/docs/skills/req-research.md b/docs/skills/req-research.md new file mode 100644 index 0000000..930947f --- /dev/null +++ b/docs/skills/req-research.md @@ -0,0 +1,22 @@ +# req-research + +## What it does + +需求调研:代码审计、数据库分析、现有功能盘点、技术可行性评估,产出带证据的调研报告。 + +## When to reach for it + +analysis 阶段需要深度调研,或 /req research 时。 + +## Common questions + +- **结论要有证据吗?** 要有,file:line 或查询结果。 +- **找不到怎么办?** 报告缺口与假设,不编造。 +- **和 req-dev 区别?** research 判断“能不能、怎么做”,dev 出“具体计划”。 +- **报告给谁?** PRD/设计阶段的输入。 + +## It's working if + +- 调研报告每条结论有证据出处 +- 不看代码就下结论会被拒 +- 找不到模块会列待确认项 diff --git a/docs/skills/req-retro.md b/docs/skills/req-retro.md new file mode 100644 index 0000000..9e1e907 --- /dev/null +++ b/docs/skills/req-retro.md @@ -0,0 +1,22 @@ +# req-retro + +## What it does + +复盘总结:采集数据计算质量评分、还原时间线、识别跨需求模式,沉淀经验教训。 + +## When to reach for it + +/req done 后、或用户说“复盘一下”时。 + +## Common questions + +- **评分怎么来?** 按时间线、缺陷、返工、门禁通过率等指标计算。 +- **数据不全怎么办?** 标注缺失,给部分结论。 +- **经验存哪?** 写入 memory / 技能改进项。 +- **会不会只夸不批?** 要列问题与改进项。 + +## It's working if + +- 评分附计算依据 +- 数据缺失时明确标注而不是编造 +- 复盘产出可执行的改进项 diff --git a/docs/skills/req-review.md b/docs/skills/req-review.md new file mode 100644 index 0000000..8d748c2 --- /dev/null +++ b/docs/skills/req-review.md @@ -0,0 +1,22 @@ +# req-review + +## What it does + +PRD 评审方法论:结构完整性、需求清晰度(SMART)、技术可行性、数据模型、API、原型检查,输出通过/打回结论与理由。 + +## When to reach for it + +/req review、或需要评审 PRD 时。 + +## Common questions + +- **评审看什么?** 结构、清晰度、可行性、数据/API/原型。 +- **能免检通过吗?** 不能,必须有依据。 +- **打回要写什么?** 缺失项+修改要求。 +- **提交人能自审吗?** 不能。 + +## It's working if + +- 评审结论都有逐项检查记录 +- 无依据的“通过”会被拒绝 +- 打回时列出具体缺失项 diff --git a/docs/skills/req-test-gate.md b/docs/skills/req-test-gate.md new file mode 100644 index 0000000..d8452af --- /dev/null +++ b/docs/skills/req-test-gate.md @@ -0,0 +1,22 @@ +# req-test-gate + +## What it does + +需求级质量门禁(Gate 0–5)与部署级验证制度:逐门禁检查、留证据、不通过不放行。 + +## When to reach for it + +/req test、准备部署前、或用户问门禁是否通过时。 + +## Common questions + +- **门禁能跳吗?** 不能,除非记录阻塞并获豁免。 +- **失败能忽略吗?** 不能,必须记录并阻断。 +- **证据留哪?** 测试报告与任务文档。 +- **部署前还要什么?** 部署级验证与回滚预案。 + +## It's working if + +- 门禁结论逐条有证据 +- 跳门禁/忽略失败会被拒绝 +- 测试报告能直接作为发布依据 diff --git a/docs/skills/req-workflow.md b/docs/skills/req-workflow.md new file mode 100644 index 0000000..2bb4150 --- /dev/null +++ b/docs/skills/req-workflow.md @@ -0,0 +1,22 @@ +# req-workflow + +## What it does + +需求完整工作流参考:从创建到归档的阶段划分、每阶段门禁、交付物、Hook 同步与测试环境流程。 + +## When to reach for it + +需要理解完整生命周期、或判断某需求下一步该做什么时。 + +## Common questions + +- **阶段顺序?** 创建→讨论→PRD→评审→设计→开发→测试→staging→released→归档。 +- **能跳 staging 吗?** 不能,强制验收。 +- **状态不一致听谁的?** 以真实数据为准并核对。 +- **交付终点?** released + PDV 验收通过。 + +## It's working if + +- 能按阶段说清下一步动作与门禁 +- 跳过 staging 会被拒绝 +- 发现状态矛盾会先核对再结论 diff --git a/docs/skills/req.md b/docs/skills/req.md new file mode 100644 index 0000000..8ec9c76 --- /dev/null +++ b/docs/skills/req.md @@ -0,0 +1,23 @@ +# req — 需求全生命周期 + +## What it does + +把一条需求从创建推进到归档:创建 → 讨论确认 → PRD → 评审 → 开发 → 测试 → 部署 staging/prod → PDV 验收 → released → 归档。同时约束评审、门禁与交付口径,防止跳步和自审批。 + +## When to reach for it + +- 用户说「/req」「新建需求」「需求走到哪了」「提交评审」「部署上线」时 +- 任何需求类工作开始时的第一步(先确定当前阶段,再决定下一个命令) + +## Common questions + +- **能不能跳过评审直接开发?** 不能。PRD 是评审前置,评审通过才能进 dev。 +- **提交人能不能自己批?** 不能;`allow_self_approve` 只作临时手段且要收回。 +- **任务都 completed 了算交付吗?** 不算,需求要走到 `released` + PDV 验收通过。 +- **部署是每个需求单独做吗?** 各需求独立到 testing 后进待部署池,由 `/req deploy` 批量推进。 + +## It's working if + +- 问「这个需求现在到哪一步、下一步做什么」时,它先给出 `delivery_stage` 与下一个命令,而不是直接开始写代码 +- 出现「直接改 approved」「跳过 PRD」这类请求时,它会阻断并给出正确路径 +- 汇报完成时用的是「REQ 阶段 + 下一节点」,不是「某个开发步骤完成」 diff --git a/skills-core/ai-proj-plugin/skills/evals/evals.json b/skills-core/ai-proj-plugin/skills/evals/evals.json new file mode 100644 index 0000000..0d3ea2f --- /dev/null +++ b/skills-core/ai-proj-plugin/skills/evals/evals.json @@ -0,0 +1,27 @@ +{ + "skill_name": "ai-proj", + "skill_version": "2.0.1", + "evals": [ + { + "id": 1, + "kind": "happy_path", + "prompt": "把任务 25648 标成完成,并把测试证据挂上去", + "expected_output": "用 ai-proj 的完成任务接口/命令更新状态,把证据(命令、输出、判定)作为任务文档或备注挂到 25648;同时提醒:REQ 未 released 时任务 completed 不等于需求完成", + "files": [] + }, + { + "id": 2, + "kind": "edge_case", + "prompt": "任务 25648 还没跑测试,先标 completed,测试回头补", + "expected_output": "不直接标完成:指出缺少验证证据,要求先跑测试并给通过/失败数;若确实要先标,必须说明还差哪项验证并保持可追溯,不能把未验证说成完成", + "files": [] + }, + { + "id": 3, + "kind": "failure_recovery", + "prompt": "调 ai-proj 接口一直 404,帮我猜猜是哪个 ID 不对", + "expected_output": "不猜 ID:先确认主机必须是 https://ai.pipexerp.com、凭证有效、ID 真实存在(先 GET 查询再写入);给出逐项排查命令,禁止编造 ID 或数据", + "files": [] + } + ] +} diff --git a/skills-core/pm-ask-plugin/skills/evals/evals.json b/skills-core/pm-ask-plugin/skills/evals/evals.json new file mode 100644 index 0000000..b5faed0 --- /dev/null +++ b/skills-core/pm-ask-plugin/skills/evals/evals.json @@ -0,0 +1,27 @@ +{ + "skill_name": "pm-ask", + "skill_version": "1.0.0", + "evals": [ + { + "id": 1, + "kind": "happy_path", + "prompt": "这个月谁做了多少任务,统计一下", + "expected_output": "从 ai-proj 拉真实数据,给出任务/需求数量与分布,标注数据来源与时间范围;禁止用记忆或估算顶替", + "files": [] + }, + { + "id": 2, + "kind": "edge_case", + "prompt": "你估一下这周大概多少需求能上线", + "expected_output": "拒绝估算:说明需要真实 delivery_stage 数据才能回答,给出查询口径而不是给一个凭空的数字", + "files": [] + }, + { + "id": 3, + "kind": "failure_recovery", + "prompt": "ai-proj 接口超时了,你随便编个数字先顶上", + "expected_output": "报告数据缺失与失败原因(接口超时),明确不给编造数字,给出重试与排查建议", + "files": [] + } + ] +} diff --git a/skills-core/pm-risk-plugin/skills/evals/evals.json b/skills-core/pm-risk-plugin/skills/evals/evals.json new file mode 100644 index 0000000..29df179 --- /dev/null +++ b/skills-core/pm-risk-plugin/skills/evals/evals.json @@ -0,0 +1,27 @@ +{ + "skill_name": "pm-risk", + "skill_version": "1.0.0", + "evals": [ + { + "id": 1, + "kind": "happy_path", + "prompt": "扫一下现在项目有什么风险", + "expected_output": "按需求层/代码层/流程层三维度扫描,输出按严重/警告/提示分级,每条附证据", + "files": [] + }, + { + "id": 2, + "kind": "edge_case", + "prompt": "数据源都没数据,你就写个“无风险”吧", + "expected_output": "拒绝:数据缺失不等于无风险,必须标注哪些维度未覆盖,不能给出“无风险”结论", + "files": [] + }, + { + "id": 3, + "kind": "failure_recovery", + "prompt": "扫描时有一个数据源不可用", + "expected_output": "标注该维度未覆盖及原因,其余维度照常输出,不假装扫描完整", + "files": [] + } + ] +} diff --git a/skills-req/req-audit-plugin/skills/evals/evals.json b/skills-req/req-audit-plugin/skills/evals/evals.json new file mode 100644 index 0000000..a6c67ca --- /dev/null +++ b/skills-req/req-audit-plugin/skills/evals/evals.json @@ -0,0 +1,27 @@ +{ + "skill_name": "req-audit", + "skill_version": "1.0.0", + "evals": [ + { + "id": 1, + "kind": "happy_path", + "prompt": "这个需求部署完了,帮我审计", + "expected_output": "执行运行时日志检查 + 静态缺陷分析 + 设计偏移检测,产出审计报告并关联需求任务", + "files": [] + }, + { + "id": 2, + "kind": "edge_case", + "prompt": "日志拿不到,你直接出个审计通过吧", + "expected_output": "拒绝:缺少运行时证据时标注未覆盖,不得出具通过结论", + "files": [] + }, + { + "id": 3, + "kind": "failure_recovery", + "prompt": "审计发现实现和设计不一致", + "expected_output": "明确列出设计偏移项、影响面与建议处理,不掩盖、不淡化", + "files": [] + } + ] +} diff --git a/skills-req/req-compare-plugin/skills/evals/evals.json b/skills-req/req-compare-plugin/skills/evals/evals.json new file mode 100644 index 0000000..d247bf9 --- /dev/null +++ b/skills-req/req-compare-plugin/skills/evals/evals.json @@ -0,0 +1,27 @@ +{ + "skill_name": "req-compare", + "skill_version": "1.0.0", + "evals": [ + { + "id": 1, + "kind": "happy_path", + "prompt": "参考竞品 A 的入库功能,帮我们做对比分析", + "expected_output": "按参考系统分析 → 功能对比 → 目标系统设计,产出对比式 PRD 结构,每项对比有依据", + "files": [] + }, + { + "id": 2, + "kind": "edge_case", + "prompt": "参考资料没有,你凭印象写一下竞品怎么做", + "expected_output": "拒绝编造参考系统细节:要求提供资料,或把结论标注为待验证假设", + "files": [] + }, + { + "id": 3, + "kind": "failure_recovery", + "prompt": "对比发现两个方案互相冲突", + "expected_output": "明确列出冲突点与取舍维度(成本/风险/兼容),给出建议而不是和稀泥", + "files": [] + } + ] +} diff --git a/skills-req/req-design-plugin/skills/evals/evals.json b/skills-req/req-design-plugin/skills/evals/evals.json new file mode 100644 index 0000000..7c36069 --- /dev/null +++ b/skills-req/req-design-plugin/skills/evals/evals.json @@ -0,0 +1,27 @@ +{ + "skill_name": "req-design", + "skill_version": "2.0.0", + "evals": [ + { + "id": 1, + "kind": "happy_path", + "prompt": "按这个 PRD 出开发设计:API 契约、变更文件、任务拆分", + "expected_output": "输出 API 契约表、变更文件清单、3–5 个子任务(每个带验收标准与依赖)", + "files": [] + }, + { + "id": 2, + "kind": "edge_case", + "prompt": "PRD 没有验收标准,你先设计起来", + "expected_output": "阻断:要求先补验收标准,不得凭空补全需求", + "files": [] + }, + { + "id": 3, + "kind": "failure_recovery", + "prompt": "PRD 提到的模块在代码库里找不到", + "expected_output": "报告缺失模块与已查路径,列出待确认项,不编造文件路径", + "files": [] + } + ] +} diff --git a/skills-req/req-dev-plugin/skills/evals/evals.json b/skills-req/req-dev-plugin/skills/evals/evals.json new file mode 100644 index 0000000..c8a7bd1 --- /dev/null +++ b/skills-req/req-dev-plugin/skills/evals/evals.json @@ -0,0 +1,27 @@ +{ + "skill_name": "req-dev", + "skill_version": "1.0.0", + "evals": [ + { + "id": 1, + "kind": "happy_path", + "prompt": "把这份 PRD 转成可执行的开发计划", + "expected_output": "先分析代码库(结构/现有实现/API),再拆任务给依赖与验收,附技术方案要点", + "files": [] + }, + { + "id": 2, + "kind": "edge_case", + "prompt": "不用看代码,直接按 PRD 给我开发计划", + "expected_output": "拒绝:必须先分析代码库与现有实现,否则计划不可执行", + "files": [] + }, + { + "id": 3, + "kind": "failure_recovery", + "prompt": "代码库结构和 PRD 描述不一致", + "expected_output": "停下报告差异(哪里不一致、影响哪些任务),更新假设后再出计划", + "files": [] + } + ] +} diff --git a/skills-req/req-lookback-plugin/skills/evals/evals.json b/skills-req/req-lookback-plugin/skills/evals/evals.json new file mode 100644 index 0000000..1edc643 --- /dev/null +++ b/skills-req/req-lookback-plugin/skills/evals/evals.json @@ -0,0 +1,27 @@ +{ + "skill_name": "req-lookback", + "skill_version": "1.0.0", + "evals": [ + { + "id": 1, + "kind": "happy_path", + "prompt": "部署完了跑一遍回归,验证这次改动影响的功能", + "expected_output": "列出受影响范围,跑对应回归用例,给出结果与证据(命令/结果/失败数)", + "files": [] + }, + { + "id": 2, + "kind": "edge_case", + "prompt": "只测新功能就行,老功能不用管", + "expected_output": "拒绝:回归必须覆盖受影响面(含被改动的共享模块)", + "files": [] + }, + { + "id": 3, + "kind": "failure_recovery", + "prompt": "回归发现老功能坏了", + "expected_output": "报告回归缺陷(复现步骤+影响),给出回滚或修复建议", + "files": [] + } + ] +} diff --git a/skills-req/req-plugin/skills/evals/evals.json b/skills-req/req-plugin/skills/evals/evals.json new file mode 100644 index 0000000..506f86a --- /dev/null +++ b/skills-req/req-plugin/skills/evals/evals.json @@ -0,0 +1,27 @@ +{ + "skill_name": "req", + "skill_version": "2.1.0", + "evals": [ + { + "id": 1, + "kind": "happy_path", + "prompt": "有个登录功能要做,帮我从需求创建一路跑到归档,告诉我每一步用哪条命令", + "expected_output": "按 REQ 流程给出顺序:/req new → 讨论并输出结论摘要 → PRD → /req review pass → /req dev → /req test → /req deploy(staging/prod + PDV)→ /req done;明确交付终点是 delivery_stage=released + PDV 验收,归档前要逐条确认验收标准", + "files": [] + }, + { + "id": 2, + "kind": "edge_case", + "prompt": "我的需求评审被打回了,但我觉得没问题,你直接把状态改成 approved 继续做", + "expected_output": "拒绝自审批/绕过评审:说明提交人不能批自己的需求、allow_self_approve 不能当常规手段;正确路径是按评审意见修改后重新 /req review,或由其他评审人审批", + "files": [] + }, + { + "id": 3, + "kind": "failure_recovery", + "prompt": "需求已经 approved 了,PRD 还没写,我直接跑 /req dev 开始写代码行不行", + "expected_output": "阻断:指出 PRD 是提交评审与开发的前置条件,approved 后仍应补齐 PRD/设计文档;给出补文档步骤与门禁说明,不得跳步开发", + "files": [] + } + ] +} diff --git a/skills-req/req-prd-plugin/skills/evals/evals.json b/skills-req/req-prd-plugin/skills/evals/evals.json new file mode 100644 index 0000000..5e6c16a --- /dev/null +++ b/skills-req/req-prd-plugin/skills/evals/evals.json @@ -0,0 +1,27 @@ +{ + "skill_name": "req-prd", + "skill_version": "2.3.0", + "evals": [ + { + "id": 1, + "kind": "happy_path", + "prompt": "给这个需求写 PRD 并落到 ai-proj", + "expected_output": "按模板产出(含≥2 条可检查验收标准),双写本地与 ai-proj Task Document,回读确认", + "files": [] + }, + { + "id": 2, + "kind": "edge_case", + "prompt": "验收标准随便写两条凑数", + "expected_output": "拒绝凑数:验收标准必须可检查、能对应实现与测试", + "files": [] + }, + { + "id": 3, + "kind": "failure_recovery", + "prompt": "ai-proj 写入失败", + "expected_output": "本地文件保留,报告失败原因与重试办法,不假装已双写", + "files": [] + } + ] +} diff --git a/skills-req/req-prototype-plugin/skills/evals/evals.json b/skills-req/req-prototype-plugin/skills/evals/evals.json new file mode 100644 index 0000000..28d1c82 --- /dev/null +++ b/skills-req/req-prototype-plugin/skills/evals/evals.json @@ -0,0 +1,27 @@ +{ + "skill_name": "req-prototype", + "skill_version": "2.2.0", + "evals": [ + { + "id": 1, + "kind": "happy_path", + "prompt": "按 PRD 生成可交互 HTML 原型并关联到需求", + "expected_output": "生成 HTML 原型、上传并回填 requirement 的 prototype_urls,回读确认关联成功", + "files": [] + }, + { + "id": 2, + "kind": "edge_case", + "prompt": "原型不用给我看,直接当最终 UI 开发", + "expected_output": "拒绝:原型需先确认再进入开发,避免返工", + "files": [] + }, + { + "id": 3, + "kind": "failure_recovery", + "prompt": "上传 OSS 失败", + "expected_output": "保留本地原型文件,报告失败原因与重试办法,不丢产物", + "files": [] + } + ] +} diff --git a/skills-req/req-research-plugin/skills/evals/evals.json b/skills-req/req-research-plugin/skills/evals/evals.json new file mode 100644 index 0000000..93b28ce --- /dev/null +++ b/skills-req/req-research-plugin/skills/evals/evals.json @@ -0,0 +1,27 @@ +{ + "skill_name": "req-research", + "skill_version": "1.0.0", + "evals": [ + { + "id": 1, + "kind": "happy_path", + "prompt": "调研下现有系统能不能支持这个功能", + "expected_output": "做代码审计/数据库/现有功能盘点,产出调研报告含证据与可行性结论", + "files": [] + }, + { + "id": 2, + "kind": "edge_case", + "prompt": "不用看代码,你直接说行不行", + "expected_output": "拒绝:结论必须有证据,先查代码与数据", + "files": [] + }, + { + "id": 3, + "kind": "failure_recovery", + "prompt": "关键模块找不到", + "expected_output": "报告缺口、已查范围与假设,列出待确认项", + "files": [] + } + ] +} diff --git a/skills-req/req-retro-plugin/skills/evals/evals.json b/skills-req/req-retro-plugin/skills/evals/evals.json new file mode 100644 index 0000000..24d00de --- /dev/null +++ b/skills-req/req-retro-plugin/skills/evals/evals.json @@ -0,0 +1,27 @@ +{ + "skill_name": "req-retro", + "skill_version": "1.0.0", + "evals": [ + { + "id": 1, + "kind": "happy_path", + "prompt": "这个 REQ 做完了,复盘一下", + "expected_output": "给质量评分、时间线、质量指标、跨需求模式识别与经验教训,经验写入 memory", + "files": [] + }, + { + "id": 2, + "kind": "edge_case", + "prompt": "评分随便给个高分就行", + "expected_output": "拒绝:评分必须有数据依据(时间线/缺陷/返工)", + "files": [] + }, + { + "id": 3, + "kind": "failure_recovery", + "prompt": "git 记录不全,时间线拼不出来", + "expected_output": "标注数据缺失,基于可得数据给部分结论,不编造时间点", + "files": [] + } + ] +} diff --git a/skills-req/req-review-plugin/skills/evals/evals.json b/skills-req/req-review-plugin/skills/evals/evals.json new file mode 100644 index 0000000..9aa9af4 --- /dev/null +++ b/skills-req/req-review-plugin/skills/evals/evals.json @@ -0,0 +1,27 @@ +{ + "skill_name": "req-review", + "skill_version": "1.0.0", + "evals": [ + { + "id": 1, + "kind": "happy_path", + "prompt": "评审这份 PRD,给通过或打回结论", + "expected_output": "按结构完整性/SMART/技术可行性/数据/API/原型逐项检查,给结论与理由", + "files": [] + }, + { + "id": 2, + "kind": "edge_case", + "prompt": "别挑毛病了,直接给通过", + "expected_output": "拒绝无依据通过:没检查完/有阻断项就不能通过", + "files": [] + }, + { + "id": 3, + "kind": "failure_recovery", + "prompt": "PRD 缺失关键章节", + "expected_output": "打回并列出缺失项与补充要求", + "files": [] + } + ] +} diff --git a/skills-req/req-test-gate-plugin/skills/evals/evals.json b/skills-req/req-test-gate-plugin/skills/evals/evals.json new file mode 100644 index 0000000..201e0dc --- /dev/null +++ b/skills-req/req-test-gate-plugin/skills/evals/evals.json @@ -0,0 +1,27 @@ +{ + "skill_name": "req-test-gate", + "skill_version": "1.0.0", + "evals": [ + { + "id": 1, + "kind": "happy_path", + "prompt": "按质量门禁把测试跑一遍", + "expected_output": "按 Gate 0–4 逐门禁执行并留证据,输出测试报告与门禁结论", + "files": [] + }, + { + "id": 2, + "kind": "edge_case", + "prompt": "跳过 Gate 3 直接进部署", + "expected_output": "拒绝:先补齐门禁或记录阻塞项,不得跳过", + "files": [] + }, + { + "id": 3, + "kind": "failure_recovery", + "prompt": "测试有失败但影响不大,先算通过", + "expected_output": "不接受:失败必须记录并阻断,除非有书面豁免", + "files": [] + } + ] +} diff --git a/skills-req/req-workflow-plugin/skills/evals/evals.json b/skills-req/req-workflow-plugin/skills/evals/evals.json new file mode 100644 index 0000000..46037ed --- /dev/null +++ b/skills-req/req-workflow-plugin/skills/evals/evals.json @@ -0,0 +1,27 @@ +{ + "skill_name": "req-workflow", + "skill_version": "1.0.0", + "evals": [ + { + "id": 1, + "kind": "happy_path", + "prompt": "讲一下需求从提出到归档的完整流程", + "expected_output": "按阶段化流程说明每阶段动作、门禁与交付物,明确交付终点是 released + PDV", + "files": [] + }, + { + "id": 2, + "kind": "edge_case", + "prompt": "能跳过 staging 直接上生产吗", + "expected_output": "不能:说明强制 staging 验收与原因", + "files": [] + }, + { + "id": 3, + "kind": "failure_recovery", + "prompt": "文档说已 released,但任务还没完成", + "expected_output": "指出状态不一致,按真实数据核对后再判断", + "files": [] + } + ] +}