Skills 与自动化¶
Skills 和 Hooks 是把重复工作流固化成可复用自动化的核心机制。写一次,之后每次都能一键触发或自动执行。
Claude Code Skills¶
Skills 是 Claude Code 的可复用指令包。把你经常重复粘贴的操作步骤、检查清单、或多步流程写成 Skill,之后用 /skill-name 直接调用,或者让 Claude 在相关场景下自动触发。
Skills vs CLAUDE.md¶
| CLAUDE.md | Skills | |
|---|---|---|
| 加载时机 | 每次对话都加载 | 只在被调用时加载 |
| 适合内容 | 项目约定、背景知识 | 可执行的操作流程 |
| Token 消耗 | 每次都消耗 | 按需消耗 |
| 调用方式 | 自动生效 | /skill-name 或自动触发 |
创建第一个 Skill¶
Skill 是一个目录,核心文件是 SKILL.md:
~/.claude/skills/ ← 个人 Skill(所有项目可用)
commit-check/
SKILL.md
.claude/skills/ ← 项目 Skill(仅当前项目)
deploy/
SKILL.md
示例:提交前检查 Skill
.claude/skills/pre-commit-check/SKILL.md:
---
description: 提交前检查代码质量。当用户说"准备提交"、"检查代码"或"commit 前"时触发。
---
## 当前改动
!`git diff HEAD --stat`
## 检查步骤
1. 运行类型检查:!`npx tsc --noEmit 2>&1 | head -20`
2. 运行 Lint:!`npx eslint . --max-warnings 0 2>&1 | tail -20`
3. 运行测试:!`npx vitest run 2>&1 | tail -30`
根据以上结果,报告:
- 是否可以安全提交
- 如果有问题,列出需要修复的内容(按严重程度排序)
- 建议的提交信息
示例:PR 描述生成 Skill
---
description: 根据当前分支的改动生成 PR 描述。
disable-model-invocation: true
---
## 改动内容
!`git log main..HEAD --oneline`
!`git diff main...HEAD --stat`
请生成一份 PR 描述,包含:
1. **Summary**:2-3 句话说明这个 PR 做了什么
2. **Changes**:按文件或模块分组的改动列表
3. **Test plan**:验证这些改动的步骤
输出 Markdown 格式,可以直接粘贴到 GitHub PR 描述框。
Frontmatter 关键字段¶
---
description: 技能描述(Claude 用这个判断何时自动触发)
disable-model-invocation: true # 只允许手动 /调用,不自动触发
user-invocable: false # 只允许 Claude 自动触发,不显示在 / 菜单
allowed-tools: Read Grep Bash # 该 Skill 可以使用的工具
context: fork # 在独立子 Agent 中运行
---
动态上下文注入¶
用 !`command` 在 Skill 加载时执行命令并注入结果:
Claude 看到的是命令的实际输出,而不是命令本身。
内置 Skills¶
Claude Code 自带一批开箱即用的 Skills:
| Skill | 用途 |
|---|---|
/code-review |
审查当前改动,按严重程度列出问题 |
/debug |
系统性调试当前错误 |
/run |
启动项目并验证功能 |
/verify |
确认代码改动实际生效 |
/batch |
批量处理多个文件 |
Kiro Hooks¶
Kiro 的 Hooks 是事件驱动的自动化——文件保存、任务完成、手动触发时,自动执行你定义的操作。
Hook 类型¶
| 类型 | 触发时机 | 典型用途 |
|---|---|---|
| 文件事件 | 文件创建/保存/删除 | 保存组件时自动生成测试 |
| Spec 任务 | 任务完成时 | 任务完成后自动更新文档 |
| 手动触发 | 你主动激活 | 一键执行复杂操作 |
配置示例¶
在 Kiro 面板的 Hooks 标签页,用自然语言描述触发条件和操作:
触发条件:src/**/*.tsx 文件被保存
操作:为这个组件生成或更新对应的测试文件,
测试文件放在 src/__tests__/ 目录,
使用 Vitest + Testing Library,
覆盖 Happy Path 和主要错误状态
Kiro Steering 文件¶
Steering 文件放在 .kiro/steering/,让 Kiro 每次都了解你的项目背景:
示例 .kiro/steering/conventions.md:
# 代码约定
## 技术栈
- Next.js 14 App Router + TypeScript(严格模式)
- 样式:Tailwind CSS,禁止内联样式
- 状态:Zustand,禁止 Redux
## 文件命名
- 组件:PascalCase(UserCard.tsx)
- 工具函数:camelCase(formatDate.ts)
- 常量:SCREAMING_SNAKE_CASE
## 禁止事项
- 不引入新的 UI 组件库
- 不直接修改 src/lib/auth/
- 不使用 any 类型
Claude Code Hooks¶
Claude Code 也支持 Hooks,在特定事件发生时执行 shell 命令:
// .claude/settings.json
{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{
"type": "command",
"command": "npx tsc --noEmit 2>&1 | head -5"
}
]
}
],
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "echo 'Claude 完成任务'"
}
]
}
]
}
}
常用 Hook 事件:
| 事件 | 触发时机 |
|---|---|
PreToolUse |
工具调用前 |
PostToolUse |
工具调用后 |
Stop |
Claude 完成回复时 |
Notification |
Claude 需要通知时 |
推荐的自动化组合¶
前端项目:保存文件后自动类型检查
{
"hooks": {
"PostToolUse": [{
"matcher": "Edit|Write",
"hooks": [{"type": "command", "command": "npx tsc --noEmit 2>&1 | tail -5"}]
}]
}
}
全栈项目:提交前自动跑测试(Kiro Hook)
文档项目:保存 Markdown 后自动检查链接