Skill: fslong520/skillclinic (version 1.3.0)

--- name: 技能诊所 slug: skillclinic description: AI 技能体检诊断，检测Gene结构完整性、触发配置、内容质量 allowed-tools: - Read - Glob - Write - Edit - AskUserQuestion metadata: trigger: 技能体检、技能诊断、技能评估、技能优化、技能检查、skill clinic --- # 技能诊所 ## Summary 技能质量体检：检测Gene结构（keywords/summary/strategy/AVOID）+ 触发配置（metadata.trigger）+ 内容质量，输出评分和改进建议。 ## Keywords 技能体检、Gene结构、技能质量、触发配置、metadata.trigger ## Strategy 1. **问用户要体检哪个技能**：支持技能名称或完整路径 2. **读取技能文件**：SKILL.md 和目录下其他文档 3. **检查Gene结构**：keywords、summary、strategy、AVOID 4. **检查触发配置**：metadata.trigger 是否存在（关键！无此字段技能无法触发） 5. **算分**：结构(35) + 触发(10) + 内容(35) + 实践(20) - 负贡献 6. **定等级**：S/A/B/C 7. **开处方**：提出改进建议，问用户是否执行 ## AVOID - AVOID 只读SKILL.md就下结论，目录下其他文档也要看 - AVOID 只改SKILL.md不改其他文档，改进要覆盖所有相关文件 - AVOID 给了分不给建议，等于没说 - AVOID 改文档时表述不清，要说清楚"错误行为 + 应该怎样" - AVOID 忽略metadata.trigger检查，无此字段技能无法被触发 - AVOID 自己写得烂还去评价别人，先照照镜子 --- ## 入口 问用户：要体检哪个技能？ 支持技能名称或完整路径。 ## 标准 | 维度 | 满分 | 检测项 | |------|------|--------| | 结构分 | 35 | keywords + summary + strategy + AVOID | | 触发分 | 10 | metadata.trigger（无此字段=技能无法触发！）| | 内容分 | 35 | Token效率 + 信号密度 + 可执行性 | | 实践分 | 20 | 渐进式披露 + Human-in-the-Loop + CLI友好 | | 等级 | 分数 | |------|------| | S | ≥80 | | A | 70-79 | | B | 60-69 | | C | <60 | ## 参考 详细标准见 reference/criteria.md

path: reference/criteria.md
content: # 评价标准

## 结构分（35 分）

| 项目 | 分值 | 标准 |
|------|------|------|
| keywords | 5 | 有=5，无=0 |
| summary | 5 | 有=5，无=0 |
| strategy | 15 | S=15, A=10, B=5, C=0 |
| AVOID | 10 | S=10, A=7, B=5, C=0 |

### Strategy 等级

| 等级 | 标准 |
|------|------|
| S | 步骤有序、可执行、有验证点 |
| A | 步骤有序、可执行 |
| B | 有顺序但模糊 |
| C | 无序，像 README |

### AVOID 等级

| 等级 | 标准 |
|------|------|
| S | 每条有错误行为 + 正确做法 |
| A | 每条有明确的错误行为 |
| B | 模糊警告，无具体场景 |
| C | 无失败经验 |

---

## 触发分（10 分）⚠️ 关键项

| 项目 | 分值 | 标准 |
|------|------|------|
| metadata.trigger | 10 | 有=10，无=0 |

**⚠️ 重要说明**：
- `metadata.trigger` 是技能触发关键词配置
- **无此字段 = 技能无法被系统触发！**
- 这是很多技能"写好了但不生效"的根本原因
- 必须包含能匹配用户输入的关键词列表

### trigger 字段示例

```yaml
metadata:
  trigger: pua、PUA、激励、鞭策、失败重试、穷尽方案、再试试、加油
```

---

## 内容分（35 分）

| 项目 | 分值 | 标准 |
|------|------|------|
| Token 效率 | 15 | ≤300行=15, 300-500行=10, 500-800行=5, >800行=0 |
| 信号密度 | 10 | >80%=10, 50-80%=7, <50%=5 |
| 可执行性 | 10 | 完全=10, 部分=5, 描述=0 |

信号密度 = 有效信号行 / 总行数

有效信号：Gene 结构、入口、命令表、触发配置
无效信号：Overview、背景、装饰、冗余示例

---

## 实践分（20 分）

| 项目 | 分值 | 标准 |
|------|------|------|
| 渐进式披露 | 8 | 有=8，无=0 |
| Human-in-the-Loop | 6 | 有=6，无=0 |
| CLI 友好 | 6 | 有=6，无=0 |

---

## 负贡献

| 项目 | 扣分 |
|------|------|
| Overview 段落 | -10 |
| 冗余背景介绍 | -5~-15 |
| 重复信息 | -5~-10 |
| Token > 800行 | -5 |
| Token > 1500行 | -10 |

---

## 等级

| 等级 | 分数 |
|------|------|
| S | ≥80 |
| A | 70-79 |
| B | 60-69 |
| C | <60 |

---

## 体检报告模板

```
## 📋 技能：{技能名}

**结构分析：**
- keywords: {有/无} → {得分}
- summary: {有/无} → {得分}
- strategy: {等级} → {得分}
- AVOID: {等级} → {得分}

**触发分析：**
- metadata.trigger: {有/无} → {得分}
- ⚠️ {若无：此技能无法被触发！}

**内容分析：**
- Token效率: {行数} → {得分}
- 信号密度: {百分比} → {得分}
- 可执行性: {程度} → {得分}

**实践分析：**
- 渐进式披露: {有/无} → {得分}
- Human-in-the-Loop: {有/无} → {得分}
- CLI友好: {有/无} → {得分}

**总分：{分数} → {等级}**

**问题诊断：**
{列出主要问题}

**改进处方：**
{列出改进建议}
```

path: reference/theory.md
content: # 理论依据

## 论文

From Procedural Skills to Strategy Genes: Towards Experience-Driven Test-Time Evolution

作者：Junjie Wang, Yiming Ren, Haoyang Zhang（清华 × EvoMap）

arXiv: https://arxiv.org/abs/2604.15097

### 核心发现

1. 信息密度：完整文档 ≠ 高控制密度，信号被稀释了
2. Token 实验：Gene（230 token）比 Skill（2500 token）高 3.0pp
3. 结构有效：只有 Strategy 真正起作用，Overview 是最大负贡献
4. 失败经验：最佳形态是独立的「AVOID xxx」语句

---

## 实践文章

《Skill 101：如何写好 Skill》— Henry Li

https://my.feishu.cn/wiki/LWazwBXDUipUZVkYCK2c8JK3nEc

### 原则

1. Skill 是给 AI 看的，不是给人看的
2. 渐进式披露：SKILL.md 只放索引，≤100 行
3. 脚本优先于 prompt，可靠一个数量级
4. Human-in-the-Loop：适当引入交互
5. 持续迭代：用 → 失败 → 改

---

## Gene 四要素

```
keywords  - 触发词
summary   - 一句话
strategy  - 可执行步骤（核心）
AVOID     - 失败经验（高价值）
```

## 负贡献

| 内容 | 处理 |
|------|------|
| Overview | 删除 |
| 冗长背景 | 删除或外置 |
| 为人类可读的材料 | 删除 |
| 重复信息 | 删除 |

## 最佳实践

Token ≤ 300，信号密度 > 80%，Gene 四要素齐全，渐进披露。


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)