#AI#Vibe Coding

Claude Code 自定义 Skill 与 Hook:打造专属工作流

Claude Code 的强大不在于"会聊天",在于它能被你定制成专属工具。本文讲清两套扩展机制——Skill(把领域知识+流程打包成可复用能力)和 Hook(事件驱动的自动化),并用实战演示怎么把"发布文章前自动跑 SEO 检查"这类团队流程固化进 Claude Code。

本文要点

  • 主题聚焦:AI、Vibe Coding
  • 适合人群:独立开发者、全栈工程师、AI 应用开发者
  • 核心价值:快速理解背景、实践路径、常见误区和工程建议
作者 @admin·发布于 2026年5月27日·更新于 2026年7月23日

把 Claude Code 当聊天框用,只发挥了它三成实力。真正高效的人,会把它定制成贴合自己/团队工作流的专属工具。两套扩展机制是关键:Skill(封装可复用的"能力+流程")和 Hook(事件驱动的自动化)。这篇讲清两者怎么用。

一、Skill:把领域知识和流程打包

Skill 的本质是一份带说明的目录。你把"做某件事需要知道的全部上下文"(步骤、规范、模板、参考)写进一个目录,Claude Code 在判断当前任务匹配时自动加载它——相当于给 Agent 装一个"专项技能包"。

为什么需要它?因为通用 prompt 装不下所有的领域细节。与其每次都手动贴一堆规范,不如把它们沉淀成一个 Skill,按需触发。

一个 Skill 的最小结构:

text
.claude/skills/
  publish-article/
    SKILL.md          # 入口:描述 + 触发条件 + 执行步骤
    templates/
      article.md
    checklist.md      # 发布前必检项

SKILL.md 是核心,大致写:

markdown
---
name: publish-article
description: 把一篇新文章按 CodeNodeX 规范发布:校验 frontmatter、跑 SEO 检查、入库、通知。
触发:当用户要"发布文章 / 上线文章 / publish"时
---

# 执行步骤
1. 读取文章 markdown,校验 frontmatter(slug/title/summary/tags/category 齐全)
2. 按 checklist.md 逐项检查(SEO 标题长度、canonical、配图)
3. 跑入库脚本 scripts/import-articles.ts
4. curl 验证线上 200 + JSON-LD
5. 汇报结果

Claude Code 会在你说"发布这篇文章"时,自动识别并按这个流程走——你把一次性想清楚的流程固化下来,不用每次重复交代。

Skill 的价值在于复用 + 一致:团队的每个人、每个项目,触发同一个 Skill 都走同一套标准流程,不再依赖"记得怎么做"。

二、Hook:事件驱动的自动化

如果说 Skill 是"被叫到才干活",Hook 就是"某些事发生时自动触发"。它是 Claude Code 的生命周期钩子,常见的几个触发点:

  • PreToolUse:工具调用前(可拦截/改参数)。
  • PostToolUse:工具调用后(可校验结果、触发后续)。
  • UserPromptSubmit:用户提交输入时。
  • Stop:一次回合结束时。

典型配置(.claude/settings.json):

json
{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          { "type": "command", "command": "pnpm exec prettier --write \"$CLAUDE_FILE_PATH\"" }
        ]
      }
    ],
    "UserPromptSubmit": [
      { "hooks": [{ "type": "command", "command": "echo '记得遵守 AGENTS.md' >> /dev/stderr" }] }
    ]
  }
}

这条配置的含义:每次 Edit/Write 后自动跑 prettier 格式化。从此你再也不用手动格式化——团队代码风格这件事,从"口头约定"变成"机器强制"。

三、实战:把"发布前 SEO 检查"固化

把两套机制合起来,解决一个真实问题。目标:每次发布文章,自动检查 SEO,避免漏配 canonical / 缺 description / 标题超长。

第 1 步:写一个检查脚本 scripts/seo-check.sh:

bash
#!/usr/bin/env bash
# 检查一篇文章的 SEO 配置
file=$1
grep -q "^canonical:" "$file" || echo "❌ 缺 canonical"
grep -q "^description:" "$file" || echo "❌ 缺 description"
title=$(grep "^title:" "$file" | cut -d: -f2-)
[ ${#title} -gt 60 ] && echo "⚠️ 标题超过 60 字符: $title"
echo "✅ SEO 检查完成"

第 2 步:用 Hook 让"写完文章"自动触发检查:

json
{
  "hooks": {
    "PostToolUse": [{
      "matcher": "Write",
      "hooks": [{ "type": "command", "command": "bash scripts/seo-check.sh \"$CLAUDE_FILE_PATH\"" }]
    }]
  }
}

第 3 步:写一个 publish Skill,把"检查 → 入库 → 线上验证 → 汇报"串起来。从此说一句"发布",全流程自动且一致。

四、Skill 和 Hook 各自的甜区

SkillHook
触发方式任务匹配时按需加载事件发生时强制触发
适合复杂多步流程、领域知识强制规范、自动化、护栏
例子"发布文章"、"做 code review""保存后格式化"、"提交前跑 lint"

经验法则:"希望它每次都做、不能漏"的事用 Hook;"按需的多步流程"用 Skill。 两者经常配合——Skill 定义流程,Hook 保证流程里某步不漏。

五、几个落地建议

  1. Skill 写得像给新人的 SOP。步骤明确、判定标准清晰、带 checklist。模糊的 Skill 等于没有。
  2. Skill 要可触发。description 里把"什么情况下用"写清楚,模型才能在对的时机加载它。
  3. Hook 要轻。它每次事件都跑,太重会拖慢交互。耗时操作放后台或异步。
  4. Hook 命令要幂等、要安全。它可能在不可预期的时候触发,别写有副作用的危险操作。
  5. 沉淀团队经验。一个团队反复口口相传的流程,就该沉淀成 Skill/Hook,让"新人 + AI"都能按标准执行。

小结

Claude Code 的扩展性,是它从"通用助手"变成"专属工具"的关键。Skill 把流程和知识沉淀成可复用能力,Hook 把规范固化成强制自动化。

当你把"我们团队怎么做某件事"陆续沉淀进 Skill 和 Hook,Claude Code 就越来越像一个熟悉你团队规矩的高级工程师——而不是每次都要从头交代的实习生。这种"积累复利",才是用 AI 编程工具的长期红利。

Related

相关推荐