Skip to content

LordVibeCoding/claude-hooks-kit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Claude Code Hooks Kit

让 Claude Code 的 Skills 激活率从 25% 飙升到 90%+。

问题

Claude Code 默认情况下,AI 主动调用 Skills 的概率只有约 25%。你精心编写的项目规范,有 75% 的概率被直接忽略。

本质原因:AI 有能力,但缺乏"制度约束"。Skills 只是"可选参考",AI 会根据自己的判断决定是否调用。

解决方案

通过 3 个生命周期钩子,在 AI 工作的每个关键节点强制执行正确的动作:

用户提问
  ↓
[Hook] skill-force-eval.js    ← 触发词预匹配,强制评估技能
  ↓
AI 执行任务(调用工具、写代码)
  ↓
[Hook] pre-tool-use.js        ← 拦截危险命令,敏感操作二次确认
  ↓
AI 完成回答
  ↓
[Hook] stop.js                ← 分析变更,推荐下一步操作

文件结构

claude-hooks-kit/
├── hooks/
│   ├── skill-force-eval.js      # 强制技能评估(核心)
│   ├── pre-tool-use.js          # 安全防护
│   ├── stop.js                  # 完成总结
│   └── skills-registry.json     # 技能注册表(触发词 + 分类)
├── templates/
│   └── SKILL-TEMPLATE.md        # SKILL.md 编写模板
├── settings.example.json        # settings.json 配置示例
└── README.md

三个钩子详解

1. skill-force-eval.js — 强制技能评估

挂载事件UserPromptSubmit(用户每次提交问题时自动触发)

工作原理:三级过滤,精准且省 token

用户输入 "帮我写一个 Python 爬虫"
  ↓
第 1 级:逃生通道检查
  - 斜杠命令(/dev、/tdd)→ 跳过
  - 简短闲聊(你好、ok)→ 跳过
  ↓
第 2 级:触发词预匹配(零 AI 开销)
  - "python" 命中 → 开发规范分类 ✓
  - "爬虫" 命中 → 第三方集成分类 ✓
  - 其他分类 → 未命中,跳过
  ↓
第 3 级:大分类精准过滤(>15 个技能的分类)
  - 第三方集成有 28 个技能,但只保留名称匹配的
  - "爬虫" → apify-automation ✓, firecrawl-automation ✓
  - 其余 26 个 → 跳过
  ↓
输出:只注入 2 个命中分类、11 个相关技能(而非全部 72 个)

Token 消耗对比

方案 单次注入 40 条消息对话 占 200K 上下文
全量注入 102 个技能 ~1500 tokens 60,000 tokens 30%
两级评估(分类摘要) ~400 tokens 16,000 tokens 8%
触发词预匹配(本方案) ~100-400 tokens 4,000-16,000 tokens 2-8%
无命中时 ~50 tokens 2,000 tokens 1%

逃生通道:斜杠命令和简短闲聊自动跳过,不浪费 token。

2. pre-tool-use.js — 安全防护

挂载事件PreToolUse(matcher: Bash

拦截 AI 执行的每一条 Bash 命令,分两级处理:

直接阻止(block)

  • rm -rf /rm -rf ~/rm -rf .
  • drop databasetruncate tabledelete from ... ;(无 WHERE)
  • formatmkfsdd if=... of=/dev/
  • chmod -R 777 /
  • fork bomb :(){ :|:& };:
  • curl ... | shwget ... | sh

二次确认(ask)

  • rm -rf 删除文件/目录
  • git push --forcegit reset --hardgit clean -f
  • npm publish
  • docker system prune
  • kill -9pkill
  • systemctl stop/disable/restart

3. stop.js — 完成总结

挂载事件Stop(AI 完成回答后)

自动执行:

  1. 清理临时文件(如 Windows 兼容问题产生的 nul 文件)
  2. 检测 git status 变更文件数量和类型
  3. 按文件类型智能推荐下一步操作:
    • 有后端代码但无测试 → 建议 /tdd/code-review
    • 有 SQL 变更 → 提醒同步数据库
    • 有配置文件变更 → 提醒检查敏感信息
    • 新增文件较多 → 建议代码审查
    • 变更多但无文档 → 建议 /update-docs

skills-registry.json — 技能注册表

核心配置文件,定义了所有技能的分类和触发词:

{
  "开发规范": {
    "_triggers": ["python", "go", "java", "前端", "后端", "api", ...],
    "coding-standards": "通用编码规范/风格",
    "python-patterns": "Python 开发模式",
    ...
  },
  "框架": {
    "_triggers": ["django", "spring", "docker", "postgres", ...],
    ...
  }
}

每个分类包含:

  • _triggers:触发词数组,用于快速预匹配
  • 技能键值对:"技能名": "描述"

自定义方法:编辑此文件即可增删技能,无需改动 JS 代码。

安装

1. 复制文件

# 克隆仓库
git clone https://github.com/YOUR_USERNAME/claude-hooks-kit.git

# 复制 hooks 到 Claude Code 配置目录
mkdir -p ~/.claude/hooks
cp hooks/* ~/.claude/hooks/

# 复制模板(可选)
mkdir -p ~/.claude/templates
cp templates/* ~/.claude/templates/

2. 配置 settings.json

settings.example.json 中的 hooks 字段合并到你的 ~/.claude/settings.json

{
  "hooks": {
    "UserPromptSubmit": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "node ~/.claude/hooks/skill-force-eval.js"
          }
        ]
      }
    ],
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "node ~/.claude/hooks/pre-tool-use.js"
          }
        ]
      }
    ],
    "Stop": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "node ~/.claude/hooks/stop.js"
          }
        ]
      }
    ]
  }
}

3. 自定义技能注册表

编辑 ~/.claude/hooks/skills-registry.json,添加你自己的技能和触发词。

4. 重启 Claude Code

重启会话即可生效。

编写新技能

使用 templates/SKILL-TEMPLATE.md 作为模板:

---
name: my-skill
description: |
  一句话说明。
  触发词:关键词1、关键词2
---

# 技能名称

## 核心规范
(代码模板 > 文字说明)

## 禁止事项
- ❌ 禁止 xxx

## 检查清单
- [ ] 是否遵循规范

编写原则(来自抓蛙师的实践):

  • 400-600 字最佳,太长反而拖累
  • 代码模板优先于文字说明
  • 用 ✅/❌ 对比正确和错误做法
  • 触发词要多样化,覆盖用户各种表达方式

致谢

本项目的设计思路来源于 抓蛙师 的 Claude Code 工程化实践系列:

License

MIT

About

Claude Code Hooks Kit — 让 Skills 激活率从 25% 飙升到 90%+。三个生命周期钩子 + 触发词预匹配技能注册表。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors