Latch · Claude Code 钩子管理
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-02qudk26/latch。
技能介绍
为什么需要 Latch
在 Claude Code 里,CLAUDE.md 和规则指令是软约束:长会话、歧义或提示注入下,「每次都要做 X」「绝不做 Y」很容易落空。真正可执行的硬边界应落在 钩子(hooks) 上——PreToolUse 的 permissionDecision: "deny" 甚至在 bypassPermissions 下也能拦截工具调用。但钩子涉及 26 种生命周期事件、匹配器、settings.json 合并层级,以及 command / prompt / http / agent 四种类型;配错事件名会静默不触发,并行钩子还会让 updatedInput 行为不可预测。
Latch 把一次会话的任务收窄为三类交付:提出方案(PROPOSE)、写入配置(CONFIGURE)、排查故障(DEBUG)。它不替你去改业务代码,只留在钩子领域,并按 SCAN → PROPOSE → IMPLEMENT → VERIFY → MAINTAIN 走完整闭环。
核心能力与工作方式
- 事件与匹配器选型:对照事件目录,优先选最窄事件;避免在
PreToolUse上滥用*;质量关卡用Stop/SubagentStop,而非每次编辑后硬拦Write。 - PreToolUse 决策语义:
allow/deny/ask/defer;阻塞用exit 2且 stderr 走 JSON 协议;updatedInput只能与allow配对,且同一工具仅允许一个 PreToolUse 改输入。 - 食谱式子流程:
configure(默认)、debug、pretool、posttool,以及 notification、sessionstart、security、quarantine、skill-telemetry 等专题;自然语言关键词会路由到对应食谱或 PROPOSE。 - 实现纪律:改前备份
~/.claude/settings.json,用/hooks看现有配置,jq校验 JSON,提醒重启会话;生产钩子设显式timeout;命令钩子用set -uo pipefail,不用set -e。
与生态的分工也写死在边界里:CI/GitHub Actions 找 Gear/Pipe,Shell/编辑器找 Hearth,代码审查找 Judge,MCP/应用层安全分析找 Sentinel,项目技能脚手架找 Sigil。
适用边界与注意点
- 任何
exit 2或permissionDecision: "deny"的阻塞钩子 必须先说明理由并确认(ONBLOCKINGHOOK)。 - 仅在
Edit|Write上拦文件不够:Bash 重定向仍可写盘,需配对匹配写文件命令的 Bash 钩子。 - 不要假设同匹配器组内钩子顺序——并行执行;高频事件上钩子数量与延迟要控(command 目标约 ≤200ms)。
- JSON 里
command路径不要用$HOME等未展开变量;勿从不可信仓库直接克隆含钩子的配置——首次会话启动即可能 RCE。 - 插件侧用
hooks/hooks.json;技能/代理前置元数据里的钩子只绑定组件生命周期,结束即清理。
使用场景
- 在 Claude Code 里跑自动化改仓,需要 PreToolUse 拦截对 main 的 force-push、rm -rf / 等 Bash 再执行。
- PostToolUse 钩子延迟高或误触发,要用 /hooks、claude --debug 和 stdin 手测定位匹配器与 timeout。
- 新会话希望 SessionStart 注入分支/CI 状态与 CLAUDE.md 摘要,避免每轮手动贴上下文。
- 合规要求 MCP 删改操作可审计,需设计 PreToolUse deny/ask 并配 HTTP webhook 写外部日志。
适合人员
- 负责 Claude Code 落地、要把「禁止写 .env/密钥文件」从 CLAUDE.md 迁到硬拦截钩子的平台或 DevOps 工程师
- 关注 Skill/插件供应链,要在 SessionStart 与 PreToolUse 配 quarantine、安装关卡的安全或治理工程师
- 维护项目共享 .claude/settings.json,需合并匹配器、控并行钩子数量并做 JSON 校验的技术负责人
- 使用 Agent Teams,要用 TaskCreated/TaskCompleted 或 Stop 钩子做任务命名与完成质量关卡的工程 lead