mcpField
H
hooks-eval

hooks-eval

github.com/athola测试与质量34396 次安装1 天前更新
代码仓库

关于 hooks-eval

hooks-eval 是用于评估、审计和检查 Claude Code hooks 的技能,适用于插件、项目和全局范围,也涵盖 JSON hooks 与 Python SDK hooks。它按安全、性能、合规性、可靠性和可维护性评分,并提供验证与基准测试指导。

主要功能

  1. 01安全漏洞与注入风险分析
  2. 02执行性能和资源使用评估
  3. 03结构、文档及最佳实践检查
  4. 04覆盖 JSON 与 Python SDK hooks
  5. 05按五项指标进行质量评分

适用场景

  1. 01审计部署前的 hook 安全性
  2. 02检查 hooks.json 引用脚本是否存在且可执行
  3. 03对 hook 执行性能进行基准测试

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/athola/claude-night-market --skill hooks-eval

安装后在 Claude Code 中输入/hooks-eval确认已加载。

附带文件modules/evaluation-criteria.mdmodules/sdk-hook-types.md

详细介绍

不适用场景

  • 编写新钩子(使用 abstract:hook-authoring)
  • 评估技能(使用 abstract:skills-eval)
  • 评估 .claude/rules/ 中的规则(使用 abstract:rules-eval)

钩子评估框架

概述

此技能提供一套详细框架,用于评估、审计和实现适用于所有作用域(插件、项目、全局)以及基于 JSON 和程序化(Python SDK)钩子的 Claude Code 钩子。

核心功能
  • 安全分析:漏洞扫描、危险模式检测、防注入
  • 性能分析:执行时间基准测试、资源使用情况、优化
  • 合规性检查:结构验证、文档要求、最佳实践
  • SDK 集成:Python SDK 钩子类型、回调、匹配器和模式
核心组件
组件用途
钩子类型参考完整的 SDK 钩子事件类型和签名
评估标准评分系统和质量门槛
安全模式常见漏洞和缓解措施
性能基准阈值和优化指南

快速参考

钩子事件类型
HookEvent = Literal[
    "PreToolUse",  # Before tool execution
    "PostToolUse",  # After tool execution
    "UserPromptSubmit",  # When user submits prompt
    "Stop",  # When stopping execution
    "SubagentStop",  # When a subagent stops
    "TeammateIdle",  # When teammate agent becomes idle (2.1.33+)
    "TaskCompleted",  # When a task finishes execution (2.1.33+)
    "PreCompact",  # Before message compaction
]

注意:由于设置限制,Python SDK 不支持 SessionStart、SessionEnd 或 Notification 钩子。不过,插件可以通过 hooks.json 使用 shell 命令定义 SessionStart 钩子(例如 leyline 的 detect-git-platform.sh)。

插件级 hooks.json

插件可以在 plugin.json 中通过 "hooks": "./hooks/hooks.json" 声明钩子。评估器会验证:

  • 引用的 hooks.json 是否存在且为有效 JSON
  • 钩子引用的 shell 命令是否存在且可执行
  • 钩子匹配器是否使用有效的事件类型
钩子回调签名
async def my_hook(
    input_data: dict[str, Any],  # Hook-specific input
    tool_use_id: str | None,  # Tool ID (for tool hooks)
    context: HookContext,  # Additional context
) -> dict[str, Any]:  # Return decision/messages
    ...
返回值
return {
    "hookSpecificOutput": {
        "hookEventName": "PreToolUse",  # Match hook type
        "permissionDecision": "deny",  # Optional: block action
        "permissionDecisionReason": "...",  # Reason for denial
        "additionalContext": "...",  # Optional: context added
    }
}
质量评分(100 分)
类别分数重点
安全性30漏洞、注入、验证
性能25执行时间、内存、I/O
合规性20结构、文档、错误处理
可靠性15超时、幂等性、降级
可维护性10代码结构、模块化

详细资源

  • SDK 钩子类型:参见 modules/sdk-hook-types.md,了解完整的 Python SDK 类型定义、模式和示例
  • 评估标准:参见 modules/evaluation-criteria.md,了解详细的评分标准和质量门槛
  • 安全模式:参见 modules/sdk-hook-types.md,了解漏洞检测和缓解措施
  • 性能指南:参见 modules/evaluation-criteria.md,了解基准测试和优化

基本评估工作流

# 1. Run detailed evaluation
/hooks-eval --detailed

# 2. Focus on security issues
/hooks-eval --security-only --format sarif

# 3. Benchmark performance
/hooks-eval --performance-baseline

# 4. Check compliance
/hooks-eval --compliance-report

与其他工具集成

# Complete plugin evaluation pipeline
/hooks-eval --detailed          # Evaluate all hooks
/analyze-hook hooks/specific.py      # Deep-dive on one hook
/validate-plugin .                   # Validate overall structure

相关技能

  • abstract:hook-scope-guide - 决定钩子的放置位置(插件/项目/全局)
  • abstract:hook-authoring - 编写钩子规则和模式
  • abstract:validate-plugin - 验证完整的插件结构

故障排除

常见问题

钩子未触发 验证钩子模式是否与事件匹配。检查钩子日志中是否有错误

语法错误 部署前运行 python3 plugins/abstract/scripts/hook_validator.py hooks/hooks.json (或 Python 钩子文件)。它会解析文件并报告 结构和 SDK 签名问题。

权限被拒绝 检查钩子文件的权限和所有权

退出标准

  • 作用域内的每个钩子都获得一个综合质量评分(0-100),评分覆盖以下五个加权 类别:安全性(30)、性能(25)、合规性(20)、可靠性(15)、 可维护性(10)。
  • 安全性类别评分低于 60 的任何钩子都会被标记为阻断问题,然后才会返回 评估报告。
  • 验证 hooks.json 中引用的 shell 命令确实存在且可执行;缺失的 脚本会列为 FAIL 结果。
  • 评估报告会区分 JSON 钩子(Claude Code)和 Python SDK 钩子, 并对每种类型应用正确的签名要求。

评论

支持 Markdown