审查外部提交的 Expert Marketplace 专家包(agent/team/plugin)合规性与质量,输出对外可交付的 Markdown 审查报告。触发场景:审查专家、检查专家包、专家合规审查、专家质量评估、review expert、check expert package。重点覆盖 plugin.json 字段、目录结构、Team 主理人铁律、成员协作回传、安全合规、金融类合规、头像规范等维度。
Scanned 9/8/2026
Install to Claude Code
npx -y skills add infometa/workbuddyskills --skill expert-reviewer --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Expert Reviewer?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/infometa-expert-reviewer)More formats (shields.io, HTML) on the badges page.
---
name: expert-reviewer
description: 审查外部提交的 Expert Marketplace 专家包(agent/team/plugin)合规性与质量,输出对外可交付的 Markdown 审查报告。触发场景:审查专家、检查专家包、专家合规审查、专家质量评估、review expert、check expert package。重点覆盖 plugin.json 字段、目录结构、Team 主理人铁律、成员协作回传、安全合规、金融类合规、头像规范等维度。
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
---
# Expert Reviewer
审查外部提交的 Expert Marketplace 专家包是否符合上架规范,按「脚本确定性形状检查 + LLM 实时读规范判断」分层执行,输出对外可交付的 Markdown 审查报告。
## 执行原则
> **⚠️ 严格规则**:所有「形状层」的确定性操作(目录骨架、JSON 解析、字段相等、文件存在、版本号格式、头像尺寸等)**必须调用 Python 脚本**,禁止 LLM 手动逐项检查。
>
> **⚠️ 严格规则**:所有「规范层」的语义判断(主理人 prompt 是否含 TeamCreate 铁律、成员是否要求 SendMessage 回传、金融文案是否合规等)**必须由 LLM 实时读取 CODEBUDDY.md 与 WorkBuddy专家开发规范.md** 后再下结论。**禁止凭印象、关键词或文件名臆断**。
>
> **⚠️ 严格规则**:每条 BLOCKER 必须有直接验证依据(读过的文件原文、命令输出、规范文档章节出处)。**未验证不得断言**——这是质量底线(参见 memory 82844461)。
>
> **⚠️ 严禁修改专家包业务内容**:除 frontmatter 字段顺序归一与编码归一外,审查阶段**不修改专家包的任何业务文件**(agents/*.md、SKILL.md body、plugin.json 业务字段、头像等)。所有修改只在审查工作目录内进行,不触碰原始输入目录以外的任何文件。
>
> **⚠️ 报告范围**:报告只输出「开发者需修复(BLOCKER)」和「建议优化(SUGGESTION)」。
---
## 审查流程(严格按顺序)
### 第零步:zip 解压(仅当输入为 .zip 文件时)
当用户提供的审查对象是 `.zip` 文件(如微信/邮件收到的压缩包)时,**必须按以下标准做法解压**,防止旧版文件残留导致审查结果失真:
```powershell
# 1. 确定审查工作目录(放在 zip 同级的 .review-work/ 下)
$zipPath = "<zip文件路径>"
$pluginName = "<plugin-name>"
$workRoot = Join-Path (Split-Path -Parent $zipPath) ".review-work"
$cacheDir = Join-Path $workRoot ("$pluginName-review")
# 2. 如果同名目录已存在,先整体删除(PowerShell Expand-Archive -Force 只覆盖同名文件,不清理 zip 中不存在的旧文件)
if (Test-Path $cacheDir) {
Remove-Item -Recurse -Force $cacheDir
}
# 3. 解压到干净的目录
Expand-Archive -Path $zipPath -DestinationPath $cacheDir -Force
```
**关键规则**:
- **先删后解压**:`Expand-Archive -Force` 的行为是「覆盖同名文件」,**不会删除**目标目录中 zip 里不存在的文件。如果旧版残留文件混入,会导致审查到已删除的文件或遗漏新增文件
- **审查工作目录命名**:统一使用 `<zip同级目录>/.review-work/<plugin-name>-review/`(plugin-name 从 zip 文件名推断,去掉版本号后缀)
- **解压后验证**:解压完成后列出目录树,确认结构完整且无 `__MACOSX/`、`.DS_Store` 等打包垃圾干扰判断(这些可在报告中列为 SUGGESTION)
- **非 zip 输入跳过**:如果用户直接提供的是专家包目录路径或已解压的目录,无需此步
### 第一步:确定审查对象
**输入**:
1. 专家包路径(审查工作目录或已解压的专家包目录)
2. 可选:用户指定的报告输出路径
**前置动作 — 读取专家包基本信息**:
LLM 必须先读取专家包 `plugin.json`,并向用户展示以下信息:
```
📋 专家包基本信息:
- 包名:<plugin name>
- 作者:<author.name>(<author.email>)
- 类型:<expertType>
```
### 第二步:读取规范文档(关键步骤,不可跳过)
**LLM 必须用 read_file 读取本 skill 包内自带的两份规范副本**:
```
<skill_base_dir>/references/standards/CODEBUDDY.md
<skill_base_dir>/references/standards/WorkBuddy专家开发规范.md
```
**重点章节**:
- CODEBUDDY.md §一 ~ §十一:基础规范(专家类型/目录/plugin.json/Agent MD/Skill/头像/分类)
- CODEBUDDY.md §十三:一致性约束 7 条
- CODEBUDDY.md §十六:**外部提交审查原则**(尊重作者命名与角色设定)
- CODEBUDDY.md §十七:**交付前 Checklist**(最权威的检查项总目录)
- CODEBUDDY.md §十八:金融类专家团合规要求
- WorkBuddy专家开发规范.md §5.2.1:团队协作铁律
### 第三步:调用 normalize.py — 前置规范化
```bash
python <skill_base_dir>/scripts/normalize.py <expert_dir> --output-file <output_path>
```
脚本自动完成:
- BOM 移除、UTF-8 编码归一、CRLF→LF 换行统一
- plugin.json 字段顺序按 §三 规范重排
- Agent MD frontmatter 字段顺序归一
**LLM 职责**:读取 output JSON 的 `changes` 列表,确认所有自动修改符合预期。
### 第四步:调用 review.py — 形状层确定性检查 + ai_actions 输出
```bash
python <skill_base_dir>/scripts/review.py <expert_dir> \
--output-file <json_path>
```
**脚本输出结构**(顶层字段):
| 字段 | 说明 |
|------|------|
| `expert_dir` | 审查目录 |
| `plugin_name` | 从 plugin.json 提取 |
| `expert_type` | agent / team / plugin |
| `structure_findings[]` | 脚本确定性检测结果(目录骨架、JSON 解析、字段相等、文件存在、版本格式、头像尺寸) |
| `ai_actions[]` | 让 LLM 读规范判断的项(每项含 `reference_doc` 指向规范出处) |
| `finance_flag` | 是否触发金融类合规检查 |
| `report_skeleton` | Markdown 报告骨架 |
**LLM 职责**:
1. 读取 output JSON
2. 把 `structure_findings` 中 `severity=blocker` 的直接列入报告 BLOCKER 区
3. **逐项执行 ai_actions**(详见下一步)
4. 填充 `report_skeleton` 生成最终 Markdown 报告
### 第五步:执行 ai_actions(核心规范判断)
每个 ai_action 的处理流程:
```
1. 读取 action.reference_doc 指向的规范章节(已在第二步读完,对照即可)
2. 读取 action.target_file 的内容(如 agents/team-lead.md)
3. 按 action.instruction 的指令逐条对照规范判断
4. 输出结论:✅ 通过 / ❌ 不通过(写入 BLOCKER)/ ⚠️ 部分缺失(写入 SUGGESTION)
5. 把规范出处直接标在报告条目里:「规范依据:CODEBUDDY.md §4.4 / WorkBuddy专家开发规范.md §5.2.1」
```
**ai_actions 类型清单**(详见 `references/ai-action-protocol.md`):
| action_type | 检查内容 | 处理级别 |
|-------------|---------|--------|
| `team-rule-check` | 主理人 prompt 是否含 TeamCreate 铁律、5 条红线、协作规则 | BLOCKER |
| `member-rule-check` | 成员 prompt 是否含擅长领域、分析框架、输出模板;SendMessage 回传要求作为建议项 | BLOCKER / SUGGESTION |
| `prompt-completeness` | Agent MD frontmatter 是否含 displayName/profession 必填 | SUGGESTION |
| `display-text-quality` | displayDescription 字数、defaultInitPrompt 与 quickPrompts[0] 一致、描述不含与平台实际不符的技术承诺 | SUGGESTION |
| `platform-claim-check` | description/displayDescription/agent prompt 不得包含与平台运行方式不符的技术承诺 | BLOCKER |
| `finance-compliance` | §十八:决策类措辞、免责声明、数据来源披露 | BLOCKER / SUGGESTION |
| `security-hygiene-review` | 凭据硬编码、危险命令、内网域名、个人路径、CDN @latest 等安全与通用性复核 | BLOCKER / SUGGESTION |
| `dependency-guide-check` | bin/scripts/环境变量/外部依赖的安装与配置引导完整性 | BLOCKER / SUGGESTION |
| `deep-quality-review` | 专家包 11 维度语义质量评审 | SUGGESTION |
### 第六步:安全/依赖引导/深度质量评审(参考 skill-reviewer v3.7)
`review.py` 会额外输出三类 ai_action,LLM 必须执行后写入报告:
| action_type | 检查内容 | 输出级别 |
|-------------|---------|---------|
| `security-hygiene-review` | 复核凭据硬编码、危险 shell、内网域名、个人路径、平台路径、CDN @latest 等安全与通用性问题 | 真实凭据硬编码 BLOCKER;其余按影响列 SUGGESTION |
| `dependency-guide-check` | 当存在 `bin/`、`scripts/`、环境变量或外部工具依赖时,检查 README/SKILL/Agent 是否提供安装、版本、配置、验证说明 | 关键依赖完全无引导列 BLOCKER;部分缺失列 SUGGESTION |
| `deep-quality-review` | 阅读核心 agents/README/skills,按 11 维度做语义质量评审 | 永远只列 SUGGESTION,不阻断 |
**深度质量评审 11 维度**:AI 可执行性、路由/触发清晰度、上下文效率、容错降级、角色边界、团队编排、用户体验、受众适配、可移植性、领域准确性、可维护性。
> 批量审查 ≥2 个专家包时,`security-hygiene-review`、`dependency-guide-check`、`deep-quality-review` 可使用 `code-explorer` subagent 并行阅读,主 agent 负责合并结论和写报告。单个专家包审查时由主 agent 执行。
### 第七步:金融类专项检查(启发式触发)
`review.py` 自动识别(`finance_flag=true` 时):
- `categoryId` 为 `08-FinanceInvestment`
- 或 plugin 名含关键词 `stock|trading|finance|fund|invest|equity|portfolio`
触发后追加 `finance-compliance` 类型 ai_action,LLM 读 CODEBUDDY.md §十八 逐项核对:
- defaultInitPrompt 不含「能不能买/该买吗/推荐」等决策类措辞
- displayDescription、description 不暗示投资建议
- 输出末尾是否有 AI 生成 + 公开信息 + 不构成投资建议 + 不构成个股推荐 四要素声明
- 数据来源是否标注
### 第八步:生成审查报告
报告路径:`<expert_dir>/审查报告-<plugin-name>.md` 或用户指定路径。
**报告结构**:
```markdown
# 专家包审查报告 - <plugin-name>
## 一、总体结论
**整体结论:<可上架 | 需修复后方可上架>**
- 阻断问题(BLOCKER):N 个
- 建议改进项(SUGGESTION):M 个
## 二、阻断问题(BLOCKER)— 必修
### B01 ❌ <一句话标题>
- **现状**:<引用文件原文>
- **规范依据**:CODEBUDDY.md §x.y / WorkBuddy专家开发规范.md §a.b
- **修复方案**:<具体可执行的修复步骤>
## 三、建议改进项(SUGGESTION)
(同上格式)
## 四、深度质量评审
| 维度 | 评级 | 判断 |
|------|------|------|
| AI 可执行性 | 优/良/待改进 | <一句话判断> |
| 路由/触发清晰度 | 优/良/待改进 | <一句话判断> |
| 上下文效率 | 优/良/待改进 | <一句话判断> |
| 容错降级 | 优/良/待改进 | <一句话判断> |
| 角色边界 | 优/良/待改进 | <一句话判断> |
| 团队编排 | 优/良/待改进 | <一句话判断> |
| 用户体验 | 优/良/待改进 | <一句话判断> |
| 受众适配 | 优/良/待改进 | <一句话判断> |
| 可移植性 | 优/良/待改进 | <一句话判断> |
| 领域准确性 | 优/良/待改进 | <一句话判断> |
| 可维护性 | 优/良/待改进 | <一句话判断> |
## 五、修复优先级表
| 优先级 | 编号 | 问题 | 工作量 |
## 六、亮点
(可选,体现专家包的优势)
```
### 第九步:交互式修复循环
- 对可机械修复的项(如 frontmatter 字段顺序、displayDescription 字数):AI 自决直接修改缓存目录,重跑 review.py 验证
- 对涉及业务内容的项(如主理人补铁律、成员补 SendMessage):在报告中给出具体修复建议,等用户决定是否由 AI 代修或作者自行修复
- 修复完成后重新运行 review.py,循环直至无 BLOCKER
---
## ai_action 执行协议
**核心原则**:默认 AI 自决,仅在「会改业务内容 + 不可逆 + 选项不唯一」时弹窗。
### 一律 AI 自决(不弹窗)
- 形状层修复:字段顺序、编码归一、frontmatter 占位补全
- 翻译/字数精简:displayDescription 超字数、description 翻译
- 明显的规范违反:成员 SendMessage 缺失(修复方式唯一)
### 必须弹窗(关键岔路)
1. **修改主理人/成员业务 prompt 内容**:模板 1,给具体提案让用户确认
2. **金融合规违反需改外露文案**:模板 1
3. **修复方式跨多个合理选项**:模板 2,多选
### 弹窗模板(统一格式)
```json
{
"title": "<plugin_name> - <决策点一句话>",
"questions": [{
"id": "<field>_<plugin_name>",
"question": "AI 建议: <提案>\n规范依据: <章节>\n请选择:",
"options": ["采纳并修复", "修改后采纳(请告诉我改什么)", "我手动处理", "跳过此项(报告标注)"],
"multiSelect": false
}]
}
```
---
## 输出位置约定
- normalize.py / review.py 的 JSON 输出:`<expert_dir>/.review-cache/<plugin-name>-<step>.json`
- 最终审查报告:`<expert_dir>/审查报告-<plugin-name>.md`
- zip 解压审查工作目录:`<zip同级目录>/.review-work/<plugin-name>-review/`(**重新审查新版时必须先删除旧目录再解压**,见第零步)
---
## 参考文档
| 文件 | 说明 |
|------|------|
| `references/review-checklist.md` | 检查项速查表(按 CODEBUDDY.md §十七 组织)+ Markdown 报告模板 |
| `references/ai-action-protocol.md` | ai_actions 类型定义 + 弹窗触发条件 |
---
## 自动化脚本
| 脚本 | 路径 | 说明 |
|------|------|------|
| review.py | `scripts/review.py` | 形状层确定性检查 + ai_actions 输出 + 金融类启发式识别 |
| normalize.py | `scripts/normalize.py` | 编码/换行/字段顺序归一 |
| review_utils.py | `scripts/review_utils.py` | 通用工具函数 |
> **脚本路径约定**:`scripts/` 相对于本 skill 包根目录。调用时使用 `python <skill_base_dir>/scripts/xxx.py`。
### 脚本 vs LLM 职责分工
| 操作 | 脚本(确定性) | LLM(规范/语义) |
|------|---------------|--------------------|
| 编码/BOM/CRLF 归一 | ✅ normalize.py | — |
| 字段顺序排序 | ✅ normalize.py | — |
| 目录骨架检查 | ✅ review.py | — |
| JSON 可解析性 | ✅ review.py | — |
| 字段相等关系(agentName=name=文件名) | ✅ review.py | — |
| 头像尺寸/大小(Pillow) | ✅ review.py | — |
| 版本号格式 | ✅ review.py | — |
| 金融类启发式识别 | ✅ review.py | — |
| 主理人 TeamCreate 铁律完整性 | — | ✅ team-rule-check |
| 成员 SendMessage 回传要求 | — | ✅ member-rule-check |
| 金融合规文案 | — | ✅ finance-compliance |
| 安全启发式扫描 | ✅ 凭据/内网域名/路径/CDN/危险命令预提取 | ✅ security-hygiene-review 语义复核 |
| 依赖引导上下文 | ✅ bin/scripts/环境变量/安装命令预提取 | ✅ dependency-guide-check 完整性判断 |
| 深度质量评审上下文 | ✅ 文件统计/Markdown 结构/Agent 概览预提取 | ✅ deep-quality-review 11 维度评审 |
| 规范出处标注 | — | ✅ 报告生成时标注 §n.m |
| 报告生成与渲染 | ✅ 输出骨架 | ✅ 填充内容 |
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!