---
name: agf-skill-stocktake
description: Use when PL / tech-lead audits the content quality of AGF's own skills (`.claude/skills/agf-*/SKILL.md`). Provides the 5-dimension checklist (Actionability / Scope fit / Uniqueness vs CLAUDE.md+standards / Currency of pointers / Gate-binding validity), 5-verdict rubric (Keep/Improve/Update/Retire/Merge), reason-quality bar (反敷衍), and output skeleton. Triggered each MINOR release retro or manually.
---
# Skill Stocktake(AGF 自有 skill 内容质量审计)
Use this skill when:
- MINOR release retro 时审 AGF 自有 skill 是否腐化
- 手动盘点 skill 质量(感觉 skill 集膨胀 / 指针过期 / 内容重叠)
- 新增 / 删除 skill 后回归一次确保无重叠
## What it is — and is not
**Skill Stocktake** 审计 AGF 自有治理型 skill 的**内容质量**——不是语法(`lint-all.sh` 管)、不是 SSOT drift(`gen-roles.py --check` 管)。它审 skill 是否仍 actionable / scope-fit / unique / 指针新鲜 / 绑定有效 gate。
**不审**:第三方 skill(`docx` / `pptx`,Anthropic 提供,非 AGF 治理资产)。
## Scope
`.claude/skills/agf-*/SKILL.md`。**以 `ls .claude/skills/agf-*/SKILL.md` 实际为准,不在文档硬编码计数**(守 `verified-facts.md` 纪律)。
## 5 维 checklist(每 skill 逐条核)
AGF 在 ECC 4 维上加 1 维 **Gate 绑定**(AGF 治理型 skill 的核心——每个 `agf-*` 都该绑一个受治理流程 + gate):
1. **Actionability**:有可立即执行的步骤 / 命令 / 代码示例(不是空泛原则)
2. **Scope fit**:name / trigger(description)/ 内容对齐,不过宽不过窄
3. **Uniqueness**:内容不被 `CLAUDE.md` / `standards/` / 另一 skill 替代(守 SSOT,不重复)
4. **Currency(指针新鲜度)**:引用的 `CLAUDE.md` / `standards/*.md` / `docs/adr/*.md` 路径仍存在 + 内容同步(用 `rg` / `[ -f ]` 验路径,抽查引用内容是否漂移)
5. **Gate 绑定有效性**(AGF 特有):skill 是否仍绑一个有效 gate / SSOT 命令(如 `agf-deploying-uat` 绑部署门 + `/agf-deploy-uat`;`agf-writing-change` 绑变更文件夹 + `agf-spec-validate`)。无 gate 的 skill 要么是知识型(说明)要么是孤儿(候选 Retire)
## 5 档 verdict
| Verdict | 含义 |
|---|---|
| **Keep** | 5 维全过,仍有效 |
| **Improve** | 值得保留但需具体改进(指明哪段 / 什么改 / 目标规模) |
| **Update** | 引用的技术 / 路径过期(`rg` / WebSearch 验证后更新) |
| **Retire** | 低质量 / 过时 / cost-asymmetric(说明什么覆盖了它) |
| **Merge into [X]** | 与另一 skill 重叠(指明目标 + 整合什么内容) |
## Reason 质量要求(反敷衍)
评估是整体 AI 判断(非数值 rubric)。但 `reason` 字段必须自包含、可决策:
- ❌ 不写 "unchanged" / "overlaps with X" 这种空话
- ✅ **Retire**:(1) 发现什么具体缺陷 (2) 什么覆盖了同一需求
- Bad: `"Superseded"`
- Good: `"agf-writing-prd 已 v6.9.0 弃用,agf-writing-change 覆盖全部场景 + delta + archive;无独有内容残留"`
- ✅ **Merge**:目标 skill + 整合什么内容
- ✅ **Improve**:哪段、什么改、目标规模
- ✅ **Keep**(仅 mtime 改):重述原 verdict 依据,不写 "unchanged"
## 流程
### 1. Inventory
```bash
ls .claude/skills/agf-*/SKILL.md
```
### 2. 逐 skill 评估
对每个 skill:Read `SKILL.md` → 5 维核对 → 填 verdict + reason。
**Currency 维必须验路径**(静默腐化高发点):
```bash
# 验 skill 引用的路径存在
rg -oE '\[.*?\]\(([^)]+)\)' .claude/skills/agf-<name>/SKILL.md | ... # 抽链接
[ -f <引用路径> ] && echo OK || echo STALE
```
skill 数量以 `ls .claude/skills/agf-*/SKILL.md | wc -l` 实际为准(**一批跑完**,不需要 chunk / resume;ECC 的 chunk 是为 261 skill 设计,AGF 裁剪掉)。
### 3. 输出
写 `docs/reviews/skill-stocktake-<YYYY-MM-DD>.md`:
- frontmatter(`reviewer` / `date` / `scope: agf-*` / `skill_count`)
- 汇总表(Skill | Verdict | Reason 一行)
- 按 verdict 分组详情
- 改进项(Improve / Update / Retire / Merge 的具体 action 清单)
### 4. PL 决策
**Retire / Merge** 涉及删 / 合 skill,PL 确认后才动(不自动删——守 `agf-writing-change` 变更门,删 skill 是 REMOVED Requirement 级变更)。Improve / Update 由 PL 派 maintainer 或 tech-lead 执行。
## 触发节奏
- **每 MINOR release retro**:作为 retro 的可选步骤(见 `agf-running-release-retro`)
- **手动**:PL / tech-lead 觉得 skill 集膨胀 / 指针过期时随时跑
- **PATCH 不跑**:skill 腐化慢,MINOR 周期够
- **MAJOR release 前**:强烈建议跑一次(大版本是清理窗口)
## Anti-patterns
- ❌ 把 stocktake 当 lint 跑(语法 / drift 是 `lint-all.sh` + `gen-roles.py --check` 的事)
- ❌ 审第三方 skill(`docx` / `pptx` 非 AGF 治理资产)
- ❌ Retire / Merge 不经 PL 确认直接删 / 合(违反变更门)
- ❌ reason 写 "unchanged" / "overlaps"(反敷衍要求)
- ❌ 跳过 Currency 维的 `rg` 验证(指针过期是静默腐化,不验 = 没审)
- ❌ 硬编码 skill 计数(以 `ls` 实际为准,守 `verified-facts.md`)