跳转至

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

mkdir -p ~/.claude/skills/pre-commit-check

.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 加载时执行命令并注入结果:

## 当前 Git 状态
!`git status --short`

## 最近提交
!`git log --oneline -5`

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 和主要错误状态
触发条件:手动触发(名称:同步 API 文档)
操作:扫描 src/api/ 目录下所有路由文件,
      更新 docs/api.md 中的接口文档,
      保持现有格式不变

Kiro Steering 文件

Steering 文件放在 .kiro/steering/,让 Kiro 每次都了解你的项目背景:

.kiro/steering/
  product.md      ← 产品是什么、目标用户
  tech-stack.md   ← 技术栈和版本
  conventions.md  ← 代码约定和禁止事项

示例 .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)

触发条件:手动触发(名称:提交前检查)
操作:运行 pnpm test,如果失败列出失败的测试用例和原因

文档项目:保存 Markdown 后自动检查链接

{
  "hooks": {
    "PostToolUse": [{
      "matcher": "Write",
      "hooks": [{"type": "command", "command": "mkdocs build --strict 2>&1 | tail -3"}]
    }]
  }
}