宇宙纪元

hinder110 的思考、读书与代码札记。

0%

Claude Code Skills 与 Hooks 使用指南

Skills 和 Hooks 是 Claude Code 最核心的两个扩展机制。用了一段时间后,把理解和配置总结一下。

Skills 的理解

Skills 是什么?

Skill 是 Claude Code 的专业化指令集。每个 skill 定义了一套工作流程——不是告诉 Claude “做什么”,而是告诉 Claude “怎么做”。比如 TDD skill 定义了 “先写测试→看到失败→写最少代码→看到通过→重构” 的循环,而不是简单说 “写测试”。

Skill 的两种类型:

  • Rigid(刚性):必须严格遵循。如 TDD、systematic-debugging。违反流程 = 违反 skill 精神。
  • Flexible(柔性):提供原则,按场景适配。如 frontend-design、brainstorming。

我的 Skills 清单:

流程类 Skills(来自 superpowers 插件)

Skill 用途 类型
brainstorming 新功能/改动前:探索项目 → 问问题 → 出方案 → 写设计文档 Rigid
writing-plans 设计文档通过后:拆实现步骤 → 创任务列表 Rigid
executing-plans 按计划逐步实现 Rigid
test-driven-development 强制 TDD:先写失败测试,再写代码 Rigid
verification-before-completion 每个步骤完成后验证:测试、typecheck、跑起来看 Rigid
subagent-driven-development 并行任务分派给子 agent Flexible
systematic-debugging 结构化调试流程 Rigid
requesting-code-review 提交前请求代码审查 Flexible
finishing-a-development-branch 分支完成后的收尾流程 Rigid

设计类 Skills

Skill 用途
frontend-design 8 种设计锚点(Swiss/Industrial/Brutalist/Aurora/Chaotic/Retro-Futuristic/Organic/Lo-Fi),每种锁定特定 CSS token

工具类 Skills

Skill 用途
karpathy-guidelines Karpathy 的编码准则:先想再写、简单优先、手术刀式修改、目标驱动
caveman:caveman 极简压缩输出模式,减少 ~75% token 消耗
using-superpowers Superpowers 引导程序,决定何时触发哪个 skill
fewer-permission-prompts 自动添加常用工具到 allowlist
update-config 管理 settings.json 配置

Hooks 的理解

Hooks 是什么?

Hooks 是 Claude Code 的自动化触发器系统。在特定生命周期事件发生时,自动执行脚本。不同于 skills(由模型主动调用),hooks 是系统强制执行——模型无法跳过。

Hook 的生命周期事件:

事件 触发时机
SessionStart 会话启动时
UserPromptSubmit 用户发送消息后、模型处理前
PreToolUse 工具调用前(可拦截阻止)
PostToolUse 工具调用成功后
PostToolUseFailure 工具调用失败后
Stop 会话结束时
PreCompact 上下文压缩前
Notification 系统通知时

Hook 能做:

  • 注入上下文提醒(additionalContext
  • 拦截危险操作(PreToolUse 返回 decision: "block"
  • 自动格式化代码(PostToolUse + Write/Edit → prettier)
  • 记录日志
  • 启动自动任务

Hooks vs Skills 的本质区别:

Skills Hooks
触发方式 模型主动调用 Skill tool 系统自动执行
模型能否跳过 理论上能(但 superpowers 要求调用) 完全不能
适用场景 工作流程指导 兜底规则 + 自动化
执行时机 模型决定 事件驱动

我的 Hook 配置

1. SessionStart — 自动初始化 CodeGraph

1
2
3
当会话启动时,检测当前目录:
→ 没有 .codegraph/ + 是项目目录(有 .git/package.json/go.mod 等)
→ 自动运行 codegraph init + codegraph index

2. UserPromptSubmit — 兜底规则提醒

1
2
3
每次用户消息前注入(当前 2 条):
1. CodeGraph first: use codegraph_* tools, not grep
2. Git branch before any code change

我的使用方法

开发新功能的流程

  1. 打开项目 → SessionStart 自动初始化 CodeGraph(如果需要)
  2. 说出需求 → UserPromptSubmit 注入规则提醒
  3. 调用 brainstorming skill → 探索 + 提问 + 设计方案
  4. 设计确认后 → writing-plans skill 拆任务
  5. 实现时 → 根据情况调用 TDD skill(写代码)/ verification skill(验证)
  6. 功能完成 → finishing-a-development-branch skill 收尾

改前端样式时

  1. 调用 frontend-design skill
  2. 选择设计锚点(如之前用过的 Organic)
  3. 按锚点 token 规范写 CSS
  4. 验证:跑 dev server 看效果

日常操作时

  • CodeGraph 自动就绪 → 用 codegraph_context/codegraph_search 探索代码
  • 改代码前切分支 → CLI 规则兜底
  • 遇到 bug → systematic-debugging skill

保持配置干净

  • Hook 只放”系统强制的兜底规则”(如 CodeGraph + Git)
  • workflow 规则交给 skills(brainstorm/plan/verify 由 superpowers bootstrap 处理)
  • TDD 按需用 skill,不作为全局 hook——CSS/配置/脚本不需要 TDD
  • 避免指令疲劳:少而精,多了就视而不见