New skill: douban-skill - Full export of Douban (豆瓣) book/movie/music/game collections via Frodo API - RSS incremental sync for daily updates - Python stdlib only, zero dependencies, cross-platform (macOS/Windows/Linux) - Documented 7 failed approaches (PoW anti-scraping) and why Frodo API is the only working solution - Pre-flight user validation, KeyboardInterrupt handling, pagination bug fix skill-creator enhancements: - Add development methodology reference (8-phase process with prior art research, counter review, and real failure case studies) - Sync upstream changes: improve_description.py now uses `claude -p` instead of Anthropic SDK (no ANTHROPIC_API_KEY needed), remove stale "extended thinking" ref - Add "Updating an existing skill" guidance to Claude.ai and Cowork sections - Restore test case heuristic guidance for objective vs subjective skills README updates: - Document fork advantages vs upstream with quality comparison table (65 vs 42) - Bilingual (EN + ZH-CN) with consistent content Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
150 lines
8.5 KiB
Markdown
150 lines
8.5 KiB
Markdown
# Skill Development Methodology
|
||
|
||
综合 Anthropic 官方最佳实践、skill-creator 工作流、社区经验和实战教训的完整方法论。
|
||
|
||
本文档只包含 SKILL.md 中**没有覆盖**的内容。SKILL.md 已经详细描述的流程(Prior Art 8 渠道表、决策矩阵、Inline vs Fork、测试用例格式、描述优化循环等)不在此重复——请直接参考 SKILL.md 对应章节。
|
||
|
||
## Phase 1: 先手动解决问题,不要上来就建 skill
|
||
|
||
SKILL.md 的 "Capture Intent" 章节覆盖了意图收集的 4 个问题和 skill 类型分类。本节补充一个被忽略的前置步骤:
|
||
|
||
**不要一开始就写 skill。** 先用 Claude Code 正常解决用户的问题,在过程中积累经验——哪些方案有效、哪些失败、最终的 working solution 是什么。如果你没有亲自失败过,你写不出能防止别人失败的 skill。
|
||
|
||
很多 skill 都是从"把我们刚做的变成一个 skill"中诞生的。先从对话历史中提取已验证的模式(SKILL.md "Capture Intent" 第三段已提及),然后才开始规划 skill 结构。
|
||
|
||
## Phase 2: 用 Agent Team 做并行调研
|
||
|
||
SKILL.md 的 "Prior Art Research" 章节覆盖了 8 个搜索渠道、clone-and-verify 检查清单、和 Adopt/Extend/Build 决策矩阵。本节补充 SKILL.md 未提及的**并行调研模式**:
|
||
|
||
遇到不确定的技术方案时,不要串行尝试(太慢),也不要凭经验猜(太危险)。同时启动 3+ 个研究 agent,每个负责一个调研方向:
|
||
|
||
| Agent | 职责 | 搜索范围 |
|
||
|-------|------|---------|
|
||
| 工具调研 | 找已有成熟工具 | GitHub stars、npm/PyPI、社区 skill 注册表 |
|
||
| API 调研 | 找可用 API 端点 | 官方文档、逆向工程、移动端 API |
|
||
| 约束调研 | 理解技术限制 | 反爬机制、认证要求、平台限制 |
|
||
|
||
每个 agent 必须独立验证(读源码、确认 API 可达、检查最近提交日期),不能只看 README。
|
||
|
||
**案例**:开发一个数据导出 skill 时,3 个 agent 并行跑了 5-20 分钟,分别发现:一个关键工具当前版本 broken(605 stars 但 PR 待合并)、一个未公开的移动端 API(唯一可行方案)、目标平台升级了 PoW 反爬(所有 HTTP 抓取失效)。没有并行研究,这些信息需要串行试错 3+ 小时才能获得。
|
||
|
||
## Phase 3: 用真实数据验证原型
|
||
|
||
SKILL.md 的 Evaluation-Driven Development 流程覆盖了"先跑 baseline → 建 eval → 迭代"的过程。本节补充两个 SKILL.md 未强调的验证原则:
|
||
|
||
### 3.1 数据完整性验证
|
||
|
||
"it runs without errors" ≠ "it exported all items correctly"。必须:
|
||
- 对比 API 报告的 total 和实际导出行数
|
||
- 检查字段格式(评分、日期、编码是否符合预期)
|
||
- 用不同规模的数据测试(0 条、100 条、1000+ 条)
|
||
|
||
**常见静默 bug**:
|
||
- 分页逻辑:某些页面返回的数据量少于请求值(如请求 50 条返回 48 条),被误判为最后一页导致提前终止。修复:检查 `total` 而非 `page_size`
|
||
- 数据转换:API 返回 `{value: 2, max: 5}` 表示 2/5 星,但代码按 `max: 10` 处理后变成 1 星。修复:检查 `max` 字段确定 scale
|
||
|
||
### 3.2 记录失败
|
||
|
||
详细记录每个失败方案的方法、失败模式、根因。这些将成为 skill 中 "Do NOT attempt" 部分的内容——这是 skill 最独特的价值,防止未来的 agent 重走弯路。
|
||
|
||
失败记录的结构:
|
||
|
||
| 方案 | 结果 | 根因 |
|
||
|------|------|------|
|
||
| 方案名称 | 具体失败表现(HTTP 状态码、错误信息) | 架构层面的原因分析 |
|
||
|
||
## Phase 4: Skill 写作补充原则
|
||
|
||
SKILL.md 的 "Skill Writing Guide" 已覆盖 frontmatter、progressive disclosure、bundled resources、命名规范等。本节补充 SKILL.md 未提及的内容层面原则:
|
||
|
||
### 4.1 写清楚 skill 不能做什么
|
||
|
||
防止 agent 尝试不可能的操作。例如:
|
||
- "Cannot export reviews (长评) — different API endpoint, not implemented"
|
||
- "Cannot filter by single category — exports all 4 types together"
|
||
|
||
### 4.2 写清楚失败过什么
|
||
|
||
在 SKILL.md 或 references 中保留失败方案的摘要(详见 Phase 3.2),加上明确的"Do NOT attempt"警告。这比正面指令更有效——agent 看到 7 种方案的失败记录后,不会尝试第 8 种类似方案。
|
||
|
||
### 4.3 安全说明
|
||
|
||
如果脚本包含 API key、HMAC 密钥或其他凭据,必须解释来源和安全性。例如:"These are the app's public credentials extracted from the APK, shared by all users. No personal credentials are used."
|
||
|
||
### 4.4 Console output 示例
|
||
|
||
展示一次成功运行的完整控制台输出。让 agent 知道"正确运行"长什么样,方便验证(SKILL.md Phase 5 的 self-verification)。
|
||
|
||
### 4.5 脚本健壮性
|
||
|
||
SKILL.md 的 "Solve, don't punt" 覆盖了基本错误处理。补充实战中发现的常见遗漏:
|
||
- 只捕获 HTTPError,遗漏 URLError / socket.timeout / JSONDecodeError
|
||
- 无限分页循环(API 异常时)——需要 max-page 安全阀
|
||
- CSV 中的换行符/回车符——`csvEscape` 必须处理 `\r`
|
||
- 用户输入是完整 URL 而非 ID——脚本应自动提取
|
||
|
||
## Phase 5: 测试迭代补充
|
||
|
||
SKILL.md 的测试流程非常详细(A/B 测试、断言、评分、viewer)。本节补充两个 SKILL.md 未覆盖的实操教训:
|
||
|
||
### 5.1 删除竞争的旧 skill
|
||
|
||
如果系统中存在旧版 skill(关键词冲突),eval agent 会被旧 skill 截胡,导致测试结果完全无效。必须在测试前删除旧 skill。
|
||
|
||
**信号**:eval agent 使用了不同于预期的脚本或方法 → 检查是否有同名/同领域的旧 skill 被加载。
|
||
|
||
### 5.2 量化迭代对比
|
||
|
||
SKILL.md 提到 timing.json 和 benchmark,但未给出具体应跟踪哪些指标。推荐:
|
||
|
||
| 指标 | 为什么重要 |
|
||
|------|-----------|
|
||
| 数据完整性(实际/预期) | 核心正确性 |
|
||
| 执行时间 | 用户体验 |
|
||
| Token 消耗 | 成本 |
|
||
| 工具调用次数 | skill 引导效率——次数越少说明 skill 的指令越清晰 |
|
||
| 错误数 | 必须为 0 |
|
||
|
||
**案例对比**:某 skill 迭代后,工具调用从 31 次降到 8 次(74% 减少)、Token 从 72K 降到 41K(43% 减少),说明 skill 的指令让 agent 不再需要自己摸索。
|
||
|
||
## Phase 6: Counter Review — 用 Agent Team 做对抗性审查
|
||
|
||
这是 SKILL.md 未覆盖的独立环节。SKILL.md 的 "Improving the skill" 章节关注用户反馈驱动的迭代,但没有系统化的多视角审查流程。
|
||
|
||
### 6.1 第一轮:3 个视角并行
|
||
|
||
用 Task 工具同时启动 3 个 review agent:
|
||
|
||
| Reviewer | 视角 | 关注点 |
|
||
|----------|------|--------|
|
||
| Skill 质量 | 对标 Anthropic 最佳实践 | 描述质量、简洁性、progressive disclosure、可操作性、错误预防、示例、术语一致性 |
|
||
| 代码健壮性 | 高级工程师找 bug | 错误处理、安全性、跨平台、边界情况、依赖、幂等性 |
|
||
| 用户视角 | 首次使用者体验 | 首次成功率、输入容错、输出预期、隐私顾虑、失败恢复 |
|
||
|
||
### 6.2 修复后 Final Gate
|
||
|
||
修复所有 Critical 和 HIGH 问题后,再启动 final gate reviewers 验证修复正确性。评分 >= 8 才放行。
|
||
|
||
### 6.3 常见发现模式
|
||
|
||
根据实战经验,reviewer 经常发现的问题类型:
|
||
- **SKILL.md 和 references 内容重复**(每次都会犯,包括本文档自己)
|
||
- **异常类型遗漏**(只捕获 HTTPError,漏掉 URLError/socket.timeout)
|
||
- **substring 误匹配**(`content.includes(url)` 导致 `/1234/` 匹配 `/12345/`)
|
||
- **docstring 与实际行为不一致**(写了 "4.5 → 5" 但实际行为是 "4.5 → 4")
|
||
- **误导性注释**(注释说"每个分类写入后立即保存"但代码在最后才写入)
|
||
- **时间敏感数据**(特定日期的测试结果、版本号——下周就过时了)
|
||
|
||
## Phase 7 & 8: Description Optimization + Packaging
|
||
|
||
SKILL.md 已完整覆盖描述优化循环(20 个 eval query、60/40 train/test split、5 轮迭代)和打包流程(prerequisites、security scan、marketplace.json)。无补充。
|
||
|
||
## 来源
|
||
|
||
| 来源 | 本文档引用的独有贡献 |
|
||
|------|-------------------|
|
||
| Anthropic Official | Evaluation-driven development、conciseness imperative(已由 SKILL.md 覆盖,本文不重复) |
|
||
| skill-creator SKILL.md | 完整工作流和工具链(本文引用但不复制,请直接参考 SKILL.md) |
|
||
| 社区经验 | 激活率数据(20%→90%)、Encoded Preference > Capability Uplift |
|
||
| 实战教训 | 并行研究 agent、失败记录的价值、竞争 skill 删除、量化迭代对比、Counter Review 流程 |
|