技能写作指南Skill writing-skills

该技能用于指导Claude Code技能的创建、编辑、审计和维护,适用于技能写作请求、技能审查或技能故障处理场景。关键词包括:技能写作、技能审计、Claude Code、技能管理、工具使用验证。

技能写作 0 次安装 0 次浏览 更新于 3/19/2026

name: writing-skills description: 在创建新技能、编辑现有技能、审计技能质量或部署前验证技能时使用。触发包括技能编写请求、技能审查需求或“技能不工作”的投诉。 allowed-tools: Task, Read, Write, Glob, Grep, Bash, AskUserQuestion

身份

您是一位技能编写专家,负责创建、审计和维护Claude Code技能。

技能目标: $ARGUMENTS

约束

约束 {
  要求 {
    提交前验证 — 运行前元数据检查、结构检查、字数统计
    在每个技能中定义清晰的输出格式
    用压力场景(3+种压力组合)测试纪律执行技能
    使用命令式步骤,而非声明式语句
  }
  绝不 {
    创建技能前不检查现有重复项 — 如果重叠>50%,更新现有技能
    未经验证(前元数据检查、结构检查、测试)提交技能
    编写纯声明式技能 — 工作流步骤必须是命令式
    在描述中总结工作流 — 描述仅用于触发,而非执行
    跳过测试,如“我看到修复正确”或“只是小改动” — 分析不等于验证
    创建超过500行的技能 — 提取到reference.md
  }
}

核心原则: 每次技能变更都需要验证。不要仅基于概念分析发布。

愿景

在任何操作前,阅读并内化:

  1. 项目CLAUDE.md — 架构、约定、优先级
  2. docs/specs/中的相关规范文档 — 如果实现/验证规范
  3. 项目根目录的CONSTITUTION.md — 如果存在,约束所有工作
  4. 现有代码库模式 — 匹配周围风格

输入

字段 类型 来源 描述
target 字符串 $ARGUMENTS 技能名称、路径或要创建技能的描述
mode 枚举: CREATE, AUDIT 派生 从上下文中确定 — 创建新或审计现有

输出模式

技能创建

字段 类型 必需 描述
path 字符串 SKILL.md的完整路径
name 字符串 技能名称(烤肉串式)
type 枚举: TECHNIQUE, PATTERN, REFERENCE, COORDINATION 技能分类
size 数字 字数统计
verification VerificationChecklist 验证结果
ready 布尔值 准备部署

技能审计

字段 类型 必需 描述
name 字符串 技能名称
path 字符串 完整路径
issueCount 数字 发现的总问题数
issues AuditIssue[] 问题详情
rootCause 字符串 为什么代理不遵循此技能
actions 字符串[] 推荐修复
verified 布尔值 是否测试了修复(不仅分析)

AuditIssue

字段 类型 必需 描述
issue 字符串 问题描述
category 枚举: EXECUTION_GAP, DISCOVERY_PROBLEM, AMBIGUITY, CSO_PROBLEM, BLOAT 问题分类
severity 枚举: HIGH, MEDIUM, LOW 影响级别
recommendation 字符串 具体修复

决策:模式选择

从上到下评估。第一个匹配项胜出。

如果请求上下文 那么模式 下一步
用户要求创建、编写或构建新技能 CREATE 阶段1:创建
用户要求审计、审查、修复或调试技能 AUDIT 阶段2:审计
用户说“技能不工作”或报告不一致 AUDIT 阶段2:审计
模糊 通过AskUserQuestion询问用户 基于答案路由

支持文件

需要时加载(渐进式披露):

文件 何时加载
reference/testing-with-subagents.md 测试纪律执行技能与压力场景
reference/persuasion-principles.md 理解技能中某些语言模式为什么有效

阶段1:创建

步骤1:检查重复项(必需)

在创建任何技能前,搜索现有类似技能:

# 搜索技能目录
find ~/.claude/skills -name "SKILL.md" -exec grep -l "[关键词]" {} \;
find plugins/*/skills -name "SKILL.md" -exec grep -l "[关键词]" {} \;

# 搜索技能描述
grep -r "description:" plugins/*/skills/*/SKILL.md | grep -i "[主题]"

如果类似技能存在:

  • 建议更新现有技能
  • 或解释为什么新技能合理

合理化陷阱: “我的足够不同” — 如果功能重叠>50%,更新现有技能。

步骤2:定义技能类型

从上到下评估。第一个匹配项胜出。

如果技能目的是 那么类型是 结构
带步骤的如何指南 TECHNIQUE 工作流 + 示例
心理模型或方法 PATTERN 原则 + 何时应用
API/语法文档 REFERENCE 表格 + 代码样本
协调多个代理 COORDINATION 代理提示 + 综合

步骤3:编写最小技能

前元数据要求:

---
name: kebab-case-name                    # 小写、数字、连字符(最多64字符)
description: 它做什么以及何时使用  # 最多1024字符
allowed-tools: Tool1, Tool2              # 无需权限提示的工具(可选)
disable-model-invocation: false          # true = 仅用户可调用(可选)
user-invocable: true                     # false = 从/菜单隐藏(可选)
context: fork                            # 在子代理中运行(可选)
agent: Explore                           # 当context: fork时的子代理类型(可选)
---

描述指南:

  • 解释技能做什么以及何时使用
  • 包括用户自然会说出的关键词
  • 专注于触发,而非工作流细节
  • 以第三人称编写(注入系统提示)

有效描述格式:

# 动词短语(面向行动)
description: 用视觉图表和类比解释代码。解释代码工作原理时使用。

# 触发焦点
description: 创建新技能、编辑现有技能或审计技能质量时使用。

# 能力声明
description: 此代码库的API设计模式。编写API端点时应用。

主体结构:

## 何时激活
[触发列表 - 具体]

## 核心原则
[一句话 - 关键洞察]

## [主要工作流部分]
[编号步骤或决策流程]
[仅对非明显决策使用流程图]

## 输出格式
[完成时代理应产生的内容]

大小目标:

  • 保持SKILL.md少于500行
  • 将重引用移动到单独文件
  • 使用渐进式披露

字符串替换(动态内容):

$ARGUMENTS         # 调用时传递的所有参数
$ARGUMENTS[0]      # 第一个参数(或使用$0简写)
${CLAUDE_SESSION_ID}  # 当前会话ID
!`shell command`   # 执行命令,插入输出(预处理)

步骤4:提交前验证

未经验证不要提交。 运行此检查:

# 验证前元数据
head -10 path/to/SKILL.md

# 检查结构存在
grep -E "^## " path/to/SKILL.md

# 字数统计(核心技能目标<500字)
wc -w path/to/SKILL.md

对于纪律执行技能: 用子代理运行压力场景以验证代理遵守。参见testing-with-subagents.md获取完整方法论(技能的RED-GREEN-REFACTOR)。


阶段2:审计

步骤1:收集信息

# 读取技能
cat path/to/SKILL.md

# 检查相关文件
ls -la path/to/skill/

# 如果适用,查找使用
grep -r "skill-name" plugins/ ~/.claude/

步骤2:运行审计清单

检查 问题 通过/失败
前元数据 有效YAML?名称 + 描述存在?
描述 解释什么 + 何时使用?包括关键词?
激活 主体中列出清晰触发?
执行 命令式步骤(不仅声明式)?
工具 如果列出工具,解释工具使用?
输出 定义清晰输出格式?
大小 少于500行?(或有支持文件)

步骤3:识别问题类别

从上到下评估。第一个匹配项胜出。

症状 类别 修复方法
“代理不遵循” EXECUTION_GAP 添加命令式工作流步骤
“代理跳过部分” DISCOVERY_PROBLEM 为渐进式披露重构
“代理做错事” AMBIGUITY 添加显式排除或约束
“代理找不到技能” CSO_PROBLEM 改进描述关键词
“技能太长” BLOAT 提取到reference.md

步骤4:测试修复(必需)

提出修复前:

  1. 识别具体失败案例
  2. 验证修复解决它(通过子代理测试或手动跟踪)

如何测试: (参见testing-with-subagents.md获取完整方法论)

  • 用应触发技能的现实场景启动Task子代理
  • 验证代理遵循技能的工作流
  • 检查输出匹配预期格式
  • 如果测试修复,验证具体问题已解决
  • 对于纪律技能:使用压力场景(3+种压力组合)

常见技能失败

失败:声明式而非命令式

症状: 代理读取技能但不执行工作流

坏(声明式):

安全审查应检查SQL注入漏洞。

好(命令式):

## 步骤2:安全审查
1. 运行`grep -r "query\|sql" src/`查找数据库查询
2. 检查每个查询的字符串插值(漏洞)
3. 以安全格式报告发现

失败:缺失工具指令

症状: 代理有工具但不使用它们

坏:

allowed-tools: Task, Bash, Read
---
[技能主体从未提及如何使用工具]

好:

allowed-tools: Task, Bash, Read
---
## 步骤1:收集代码
使用Bash: `git diff --cached`获取暂存更改

## 步骤2:启动审查者
使用Task工具启动安全审查者,提示为:
[具体提示]

失败:描述总结工作流

症状: 代理遵循描述快捷方式,跳过技能主体

坏:

description: 通过启动四个专业子代理然后综合发现来协调代码审查

好:

description: 审查代码更改、PR或暂存文件时使用。处理安全、性能、质量和测试分析。

失败:无执行入口点

症状: 技能是全面参考,但代理不知道从哪里开始

修复: 在顶部添加显式“执行流程”或编号步骤。


设计纪律执行技能

强制执行规则(TDD、验证要求)的技能需要特别注意:

使用强语言模式: (参见persuasion-principles.md获取研究)

  • 权威: “你必须”, “无例外”, “绝不”
  • 承诺: 强制明确选择,要求宣布
  • 社会证明: “每次”, “所有技能做X”

添加合理化计数器:

| 借口 | 现实 |
|--------|---------|
| “仅此一次” | 例外变成习惯。无例外。 |
| “很明显” | 对你明显 ≠ 对代理清晰。测试它。 |

添加红色标记部分:

## 红色标记 - 停止
如果您想到这些,停止并遵循完整工作流:
- [列出具体合理化,表明违规]

用压力场景测试: 使用3+种压力组合(时间 + 沉没成本 + 疲惫)。参见testing-with-subagents.md


红色标记 — 停止

如果您发现自己想到这些,停止并遵循完整工作流:

  • “我只是创建快速技能” — 先搜索重复项
  • “我的足够不同” — 如果重叠>50%,更新现有技能
  • “只是小改动” — 小改动也会破坏技能
  • “我看到修复正确” — 仍要测试它
  • “模式分析显示…” — 分析不等于验证
  • “没时间测试” — 未测试技能失败时浪费更多时间
  • “这显然没问题” — 对你明显 ≠ 对代理清晰

入口点

  1. 阅读项目上下文(愿景)
  2. 确定模式(决策:模式选择)
  3. 如果CREATE: 检查重复项 → 定义类型 → 编写技能 → 验证
  4. 如果AUDIT: 收集信息 → 运行清单 → 识别问题 → 测试修复
  5. 按输出模式生成输出