# Skill Review Report

- 审查对象：PR #982（cann/cannbot-skills）— `ops-direct-invoke` Team 重构为「skill 驱动工作流」
- 变更范围：`plugins-official/ops-direct-invoke/` 整体重构（Team → PM 调度 + 6 子 Agent + 18 个嵌套 skill + hooks + init.sh），及 `docs/`、`plugins-community/install-helper/`、`tests/lib/dependency_validator.py` 联动更新
- 来源：GitCode PR diff（fetch_pr_diff.py）
- Verdict: **CONDITIONAL**
- Score: **84 / 100**
- Blocking findings: **0**

---

## 一、变更概览

本 PR 将原来的「Spec-driven Development（四阶段：设计→开发→验收→上库）」直调算子 Team 重构为「PM 调度的 skill 驱动团队协作工作流」。核心变化：

| 项 | 旧（v1.2.5） | 新（v2.0.0） |
|----|-------------|-------------|
| 编排载体 | AGENTS.md 内联完整流程（Step 1-7） | `ops-direct-invoke-workflow` skill 承载编排，AGENTS.md 只做 PM 入口 |
| 子 Agent | 4 个（architect / design-reviewer / developer / reviewer） | 6 个（architect / developer / developer-code / developer-test / developer-doc / qa），按写权限拆分 |
| 流程 | 4 阶段 | 8 阶段 + 7 个 CP 检查点（CP0/CP1/CP2.1/CP2.2/CP3/CP4/CP5） |
| 领域知识 | 硬编码在 AGENTS.md / workflows 下 | 下沉为可 override 的 virtual skill（`repo-*` 领域知识、`workflow-cp*` 验收标准、`workflow-doc-templates` 模板、`plugin-*` 可插拔流程） |
| 权限隔离 | prompt 约束 | opencode/claude/trae 侧 permission-guard hook + 角色 JS 配置（机制保证） |
| 状态落盘 | `operators/{op}/state.json` | `.cannbot/{算子名}/state.json` |

新增 18 个嵌套 `SKILL.md`、6 个 `agents/*.md`、5 个 permission-guard hook、1 个 state 校验脚本；删除旧 4 个 agent、旧 workflows/ 全量、`evals/evals.json`。

## 二、成文法门禁摘要（人工核对）

未能在本地运行 `skill_validator.py`（PR 未提供仓库 checkout，仅 diff），以下为按成文法规则逐文件人工核对结论：

- [x] 全部 18 个 `SKILL.md` 含 frontmatter，`name` 与目录名一致、符合 kebab-case、无保留前缀、无 XML 注入、无同名 skill
- [x] 全部 `SKILL.md` frontmatter `description` 含明确触发条件，或不触发时已声明 `disable-model-invocation: true`（`plugin-*` 三个、`workflow-cp0..cp5`、`workflow-agent-permissions` 均带该字段）
- [x] 14 个新 `references/` 资料（模板/验收标准/领域知识）均有 Markdown 内容、路径存在
- [x] AGENTS.md 与 6 个 agent frontmatter 的 `skills:` 列表均在仓库内（本地 `skills/` / 共享 `ops/` / `infra/`）可解析
- [ ] （无法自动验证）`license` 字段缺失，见「三、非阻塞建议」

未发现成文法 `error` 级阻塞项。

## 三、Blocking Findings

无。

## 四、九维评分

| 维度 | 权重 | 得分 | 理由 |
|------|-----:|-----:|------|
| Frontmatter 质量 | 8 | 6 | `name`/`description`（含触发+能力）清晰；但 18 个 SKILL.md 均无 `license` 字段，且 init.sh `VERSION="1.0.0"` 与 plugin.json/marketplace `version:"2.0.0"` 存在单一版本源漂移 |
| 工作流清晰度 | 15 | 14 | 统一流程表（8 阶段/角色/输入/输出/说明/备注）+ `task-prompts.md` 逐步调用契约，输入-处理-输出闭环，PM 不猜流程 |
| 边界条件覆盖 | 10 | 9 | `error-handling.md` 回退关系表、3 类循环最大轮次、静默模式、杠杆评估门、需求级硬门槛放宽、恢复规则，覆盖充分 |
| 检查点设计 | 7 | 7 | 3 个 ⛔ 用户确认点（CP0/CP1/CP2.2）+ 权限 hook + PM 启动权限预检，人工复核点到位 |
| 指令具体性 | 15 | 14 | task-prompts 给出逐步骤原样 prompt（权限/输入/输出/验收标准/skills），命令与路径具体；少数 dsh/codex 环境降级为 prompt 自律属显式接受 |
| 资源整合度 | 5 | 5 | SKILL.md 只做路由、细节进 references，渐进式披露符合 F1；模板落地 `workflow-doc-templates/references/` |
| CANNBot 架构适配性 | 15 | 14 | SOLID + 层级单向感知 + virtual/final/plugin 三层解耦 + override 机制，设计成体系，适配性极强 |
| 领域可信度与安全边界 | 10 | 9 | Blaze/RegBase/SIMT/精度口径事实均指向 `ascendc-blaze-best-practice` / `npu-arch` / `ascendc-docs-search` / 评测集原文等权威源，拒绝凭记忆；权限守卫边界清晰，无未知网络/依赖风险 |
| 验证证据 | 15 | 6 | **明显短板**：删除 `evals/evals.json`（原 cann-bench NPU 评测集）无替代；整套编排无可执行 dry-run / 行为测试证据；仅更新了 `plugins-consistency.test.ts` 与 `dependency_validator.py` 两个静态一致性校验，未覆盖运行时行为 |

合计 ≈ **84 / 100**。

## 五、必须修复项

无成文法阻塞项，无安全/可信源硬伤。

## 六、非阻塞建议（重要）

1. **验证证据退化（建议优先补强）**：`plugins-official/ops-direct-invoke/evals/evals.json` 整个评测集被删除且无替代，导致原 A2/A5 平台 cann-bench NPU 评测失去载体。建议至少补充一个 `init.sh → settings.json → validate_state.py` 的冒烟测试，或记录一次模板算子 dry-run 轨迹，证明新编排可闭环。
2. **补全 frontmatter `license`**：18 个新增 SKILL.md 均未声明 `license`（判例法维度 1 明确列为评价项），建议对齐仓库现有 skill 的 frontmatter 约定。
3. **版本号单一真值源**：`init.sh` 内置 `VERSION="1.0.0"`，而 `plugin.json`/`marketplace.json` 为 `2.0.0`，init 生成的 manifest `version` 会写入 `1.0.0`，与插件版本不一致，易引起安装健康检查/漂移检测困惑；建议统一或明确二者语义。
4. **文档措辞精确化**：`docs/STANDARDS.md`「八阶段工作流（**7 个 CP 确认点**）」与 README 一致，但实际 ⛔ 用户确认点只有 3 个（CP0/CP1/CP2.2），CP2.1/CP3/CP4/CP5 为 QA 内部评审点；「7 个 CP 检查点」表述更准确，避免读者误解。
5. **旧工作区无迁移说明**：状态落盘从 `operators/{op}/state.json` 切换到 `.cannbot/{算子名}/state.json`，未提供存量在途工作的迁移/兼容路径，建议在 README 或 quickstart 中说明（属 major 版本升级，可不强制，但应明示）。

## 七、验证情况

- 已核验：PR diff 全量（14622 行）逐文件人工研读；18 个 SKILL.md frontmatter 完整性、目录名一致性、description 触发条件、references 路径有效性、agent 6 角色与 plugin.json/installAgents/feature-list 三方一致性、tests 侧 `dependency_validator.py` 与 `plugins-consistency.test.ts` 对动态收集模型的适配。
- 未验证（partial）：无法运行 `python tests/lib/skill_validator.py`（无仓库 checkout）；新工作流 require 的 NPU / 多 Agent 编排运行时行为未做 dry-run（无 NPU 环境），九维「验证证据」按未验证降分。

---

REVIEW_VERDICT=CONDITIONAL