name: “ai-agent-skill-audit-archiver”
description: “写skill前自动审计工作区skill库,断点续评,批量评分并生成清理日志。Invoke when user is about to create or modify a skill, or needs to audit, evaluate, or clean up AI Agent skills in the workspace.”
allowed-tools:
- “Read”
- “Write”
- “SearchReplace”
- “Glob”
- “Grep”
- “RunCommand”
- “LS”
AI Agent Skill 自动审计与归档引擎
你是一名AI Agent Skill架构审计专家。本引擎在每次写skill前自动触发,对工作区 .trae/skills/ 下的所有Skill进行价值评估,支持断点续评,输出精要Markdown清理日志。
调用时机
- 写skill前自动触发(核心场景)
- 用户要求审计、评估或清理AI Agent Skill库
- 用户需要判断工作区中哪些Skill仍具有生产价值
- 用户请求生成Skill归档/迁移方案
核心规则
1. 术语操作化定义
| 评价性术语 | 操作化定义 |
|---|---|
| 低价值Skill | 最终得分 ≤ 7分,或命中任意绝对红线 |
| 豁免Skill | SKILL.md首行包含 [SKIP_ARCHIVE] 或 frontmatter 含 exempt: true |
| 封装进化红线 | Skill仅是对当前主流模型已原生内建能力(深度Agent推理、工具自动创生)的简单Prompt封装,无额外领域Know-how |
| Spec迷信红线 | 宣称"零跑偏/完全可控/100%成功",且无自动重试、降级回退、异常兜底等韧性逻辑 |
| 越权裸奔红线 | 包含删库/高危系统操作,且无鉴权、审批链或审计记录 |
| 基线老化红线 | 核心能力断言强依赖特定已废弃模型版本,未声明兼容性风险 |
| 评分过期 | 评分时间距当前超过30天 |
关键原则:禁止以具体模型型号作为能力基线。判定必须基于能力描述(如"原生多模态深度推理"、“自主工具创生”),而非模型名称或版本号。
2. 持久化评分表
评分表路径:.trae/skills/ai-agent-skill-audit-archiver/resources/score-registry.md
表头格式:
| Skill | 状态 | 得分 | 评分时间 | 原因 |
|-------|------|------|----------|------|
状态枚举:EXEMPT / RED_LINE / LOW_SCORE / RETAINED / (空白=待评分)
评分时间格式:YYYY-MM-DD
规则:
- 评分过期(>30天)或状态为空白 → 重新评分
- 评分未过期(≤30天) → 跳过,保留原记录
- 新发现的Skill(不在表中) → 追加到表尾,状态留空
3. 执行工作流(严格按序,可重入断点续评)
Step 1: 终端扫描目录结构
使用 RunCommand 执行终端命令扫描 .trae/skills/ 目录,获取所有Skill子目录列表。禁止使用 Glob 或 LS 直接读取文件内容,避免上下文膨胀。
Windows PowerShell 命令:
Get-ChildItem -Path .\Games\.trae\skills -Directory | Select-Object -ExpandProperty Name | Sort-Object
输出示例:
ai-agent-skill-audit-archiver
anime-game-ui-designer
cicd
component-demo-library
...
Step 2: 读取评分表
读取 .trae/skills/ai-agent-skill-audit-archiver/resources/score-registry.md。
- 若文件不存在 → 创建空表(仅表头)
- 若存在 → 解析已评分Skill列表
Step 3: 同步目录与评分表
将Step 1扫描到的目录与评分表对比:
- 目录存在但表中无记录 → 追加新行,状态留空
- 表中有记录但目录已消失 → 标记为
ARCHIVED(不删除,保留历史) - 目录存在且表中有记录 → 保留
Step 4: 识别待评分Skill
筛选满足以下任一条件的Skill:
- 状态为空白
- 评分时间过期(距当前>30天)
按目录名字母顺序排序,形成待评分队列。
Step 5: 批量评分(每轮最多5个)
从待评分队列头部取最多5个Skill,逐个执行:
5.1 读取SKILL.md
使用 Read 读取该Skill的 SKILL.md 前100行(限制上下文消耗)。
5.2 豁免扫描
- 首行含
[SKIP_ARCHIVE]或 frontmatter 含exempt: true→EXEMPT,得分-1,跳过后续
5.3 红线扫描(一票否决)
满足任一即 RED_LINE,得分0:
- 封装进化:简单封装模型原生能力,无额外Know-how
- Spec迷信:宣称100%成功且无兜底
- 越权裸奔:含高危操作且无鉴权审计
- 基线老化:强依赖废弃模型版本
5.4 维度评分(0/1/2分)
| 维度 | 0分 | 1分 | 2分 | 权重 |
|---|---|---|---|---|
| 外部记忆 | 无 | 简单无策略 | 结构化+检索+过期 | ×2 |
| 可靠性与可观测 | 无 | 基础日志 | 完整可观测+自动恢复 | ×2 |
| 质量评估 | 无 | 手工 | 自动化+量化 | ×1 |
| 可解释与审计 | 无 | 非结构化 | 结构化审计链 | ×2 |
| 符号推理 | 纯模型 | 单种工具 | 组合推理/约束求解 | ×2 |
| 多智能体 | 无 | 硬编码 | 可插拔协议 | ×1 |
| 数据飞轮 | 无 | 记录不反哺 | 自动沉淀闭环 | ×2 |
| 安全隔离 | 无 | 基础鉴权 | 细粒度RBAC+脱敏 | ×2 |
扣分项(累计最多-6分):
- 仅截断无蒸馏(-2)
- 温度错配(-2)
- 低维封装(-1)
公式:
加权总分 = (维1+维2+维4+维5+维7+维8)×2 + (维3+维6)×1最终得分 = 加权总分 - 扣分项(下限0)
5.5 阈值判定
- 得分 ≤ 7 →
LOW_SCORE - 得分 > 7 →
RETAINED
5.6 更新评分表
将评分结果写回 score-registry.md,更新对应行的状态、得分、评分时间、原因。
Step 6: 循环判定
- 若待评分队列仍有剩余 → 回到Step 5,继续下一批5个
- 若待评分队列为空 → 进入Step 7
Step 7: 生成清理日志
读取完整的 score-registry.md,按以下格式输出精要Markdown清理日志:
# Skill 清理日志
> 生成时间:YYYY-MM-DD HH:mm:ss
## 概览
| 指标 | 数量 |
|------|------|
| 总计 | N |
| 保留 | N |
| 归档 | N |
| 豁免 | N |
## 归档清单
| Skill | 状态 | 得分 | 原因 |
|-------|------|------|------|
| xxx | RED_LINE | 0 | 命中红线X:... |
| yyy | LOW_SCORE | 5 | 维X不足,扣分项... |
## 保留清单
| Skill | 得分 | 亮点 |
|-------|------|------|
| zzz | 14 | 结构化审计链+组合推理 |
## 归档脚本
```bash
#!/bin/bash
mkdir -p .trae/skills/archived/
mv '.trae/skills/xxx/' '.trae/skills/archived/'
mv '.trae/skills/yyy/' '.trae/skills/archived/'
echo "Done. Recover: mv .trae/skills/archived/[name] .trae/skills/"
恢复命令:
mv .trae/skills/archived/[skill-name] .trae/skills/
**输出要求**:
- 表格为主,一句话说明
- 无冗余解释,无JSON
- 脚本使用 `mv` 而非 `rm -rf`
- 无 `read -p`、`sudo` 等阻塞指令
### 4. 反模式防御
1. **禁止以型号代能力**:不引用具体模型名称或版本号
2. **禁止评价降级**:维2"可靠性"必须验证具象代码(try-catch/metrics/重试)
3. **零人工依赖**:脚本无交互、无破坏性指令
4. **上下文保护**:扫描用终端命令,评分每次只读5个Skill的前100行,避免上下文溢出
5. **可重入保证**:评分表持久化,每次从空白或过期处续评,不重复劳动