增加同步检测脚本和自检查的机制
This commit is contained in:
@@ -20,7 +20,12 @@ description: >-
|
||||
|
||||
# 概述
|
||||
|
||||
skill-tester 是元层测试工具,通过 LLM-as-Judge 模式验证 SKILL.md 的行为逻辑。
|
||||
skill-tester 是元层测试工具,分两层:
|
||||
- **Layer 1(静态检查)**:无需 LLM,毫秒级。检测文件间交叉引用一致性。每次框架变更后必跑。
|
||||
- **Layer 2(行为测试)**:LLM-as-Judge,验证 SKILL.md 的指令逻辑。
|
||||
|
||||
**建议顺序**:先跑 Layer 1(免费+快),通过后再跑 Layer 2(消耗 token)。
|
||||
|
||||
**核心原理**:将 SKILL.md 内容 + 模拟用户输入注入 sub-agent,观察其输出是否符合预期,
|
||||
再用另一个 sub-agent 作为裁判评分。
|
||||
|
||||
@@ -29,6 +34,59 @@ skill-tester 是元层测试工具,通过 LLM-as-Judge 模式验证 SKILL.md
|
||||
|
||||
---
|
||||
|
||||
# Layer 1:静态一致性检查(无需 LLM)
|
||||
|
||||
## 概述
|
||||
|
||||
Layer 1 是纯文件级检查,检测 canonical-manifest.json、opencode-init SKILL.md、
|
||||
registry.md、各 SKILL.md 之间的交叉引用一致性。**不需要 LLM 调用,毫秒级运行。**
|
||||
|
||||
适合作为 git pre-commit hook 或 CI 检查项。
|
||||
|
||||
### 安装 git pre-commit hook(可选)
|
||||
|
||||
```
|
||||
# Windows
|
||||
copy .opencode\skills\skill-tester\hooks\pre-commit .git\hooks\pre-commit
|
||||
|
||||
# Unix
|
||||
ln -sf ../../.opencode/skills/skill-tester/hooks/pre-commit .git/hooks/pre-commit
|
||||
```
|
||||
|
||||
安装后,每次 `git commit` 如果涉及 `.opencode/skills/` 下的文件变更,会自动运行 7 项检查。不通过则阻止提交。
|
||||
|
||||
## 检查项
|
||||
|
||||
| 检查 | 描述 | 覆盖的问题 |
|
||||
|------|------|-----------|
|
||||
| manifest-skills-sync | manifest canonical_skills 与 init Skills 白名单一致 | 新增 Skill 后忘记更新 init → 被误删 |
|
||||
| manifest-phase-sync | manifest template_phase_files 与 init 阶段数据占位目录一致 | 新增 phase 文件后落入 C 组 |
|
||||
| registry-types | registry 中 phases≠["all"] 的 Skill 类型为"基础设施" | game-design 被标为"项目级"而被误删 |
|
||||
| phase-guard-all | 所有 SKILL.md Phase Guard 包含 "all" 处理 | "all" 特殊值未处理导致基础设施 Skill 被错误拒绝 |
|
||||
| init-templates | manifest 每个文件在 init 模板内容章节有对应模板 | 缺少重置模板导致 init 时文件丢失 |
|
||||
| frontmatter | 所有 SKILL.md 的 YAML frontmatter 完整(name + phases) | opencode 无法注册该 Skill |
|
||||
|
||||
## 运行方式
|
||||
|
||||
```bash
|
||||
python .opencode/skills/skill-tester/static-checks/run.py
|
||||
```
|
||||
|
||||
退出码:全部通过 = 0,有失败 = 1。可直接集成到 CI/pre-commit。
|
||||
|
||||
## 新增检查项
|
||||
|
||||
编辑 `static-checks/run.py`,在 `CHECKS` 列表追加新函数即可,格式为:
|
||||
```python
|
||||
("check-id", "检查名称", check_function)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Layer 2:LLM-as-Judge 行为测试
|
||||
|
||||
---
|
||||
|
||||
# 操作 A:测试单个 Skill
|
||||
|
||||
## 触发
|
||||
@@ -38,6 +96,10 @@ skill-tester 是元层测试工具,通过 LLM-as-Judge 模式验证 SKILL.md
|
||||
## 流程
|
||||
|
||||
```
|
||||
0. 【强制】先运行 Layer 1 静态检查:
|
||||
python .opencode/skills/skill-tester/static-checks/run.py
|
||||
→ 如有 FAIL,提示用户先修复再跑 Layer 2
|
||||
→ 全部 PASS 则继续
|
||||
1. 读取目标 Skill 的 SKILL.md
|
||||
2. 读取 .opencode/skills/skill-tester/test-cases/ 下匹配该 Skill 的测试用例
|
||||
3. 列出测试用例清单,询问用户确认
|
||||
@@ -204,3 +266,7 @@ Agent 输出(Markdown):
|
||||
# 自迭代日志
|
||||
|
||||
本节记录使用本 Skill 过程中发现的必要检查项。
|
||||
|
||||
### 已知必要检查
|
||||
|
||||
1. **Layer 1 必须在每次框架结构变更后运行** — 新增 Skill、修改 manifest 分组、新增数据文件后,`static-checks/run.py` 的 6 项检查必须全部通过。历史教训:新增 `template_phase_files` 后未同步 init Skill 的 3 个截面,导致 phase 文件落入 C 组;`game-design` 被标为"项目级"导致 init 时被 registry 删除。
|
||||
|
||||
Reference in New Issue
Block a user