Skill

audit-hooks

Install
1
Install the plugin
$
npx claudepluginhub melodic-software/claude-code-plugins --plugin claude-ecosystem

Want just this skill?

Add to a custom plugin, then install with one command.

Description

Audit Claude Code hooks for quality, compliance, and maintainability. Use after creating hooks, before releases, or for periodic quality checks.

Tool Access

This skill is limited to using the following tools:

ReadBashGlobGrepTask
Skill Content

Audit Hooks Command

Audit Claude Code hooks for quality, compliance, and maintainability.

Initialization

Before auditing, initialize the environment:

Get the current UTC date, capture the project root path, ensure the temp directory exists, and clean up any stale audit files if the user confirms. The hook-management skill provides authoritative validation guidance (auto-loaded when this command runs).

What Gets Audited

  • hooks.json configuration structure and validity
  • Hook script existence and structure
  • Matcher configuration appropriateness
  • Environment variable naming conventions
  • Decision control usage
  • Test existence and coverage

Command Arguments

ArgumentDescription
(none)Smart mode: audit only modified, never-audited, or stale (>90 days) hooks
--forceAudit ALL hooks regardless of status
--skip-validationSkip finding validation (faster, but may include false positives)
--plugin-onlyOnly audit local plugin hooks
--project-onlyOnly audit project hooks (.claude/hooks/)
--global-onlyOnly audit globally installed plugin hooks
hook-nameAudit specific hook(s) by name
plugin:nameExplicitly target plugin hook

Step 1: Discover Hook Sources

Detect all hook sources in local repo and globally installed plugins.

For local discovery, check marketplace repos, single plugin repos, and .claude/hooks/. Track plugin names for deduplication.

For global discovery, check ~/.claude/plugins/ (Unix) or %USERPROFILE%\.claude\plugins\ (Windows). Skip globals that have local dev versions.

Step 2: Parse Arguments

Parse flags and hook names. Read audit logs for each source.

Step 3: Present Audit Plan

Display mode, sources discovered, deduplication status, and audit queue.

Step 4: Execute Audits

For each hook, spawn the hook-auditor subagent with source, path, and last audit date. Run in parallel batches of 3-5.

Subagents write findings to .claude/temp/. The main conversation thread collects results and updates audit logs using its Write/Edit tools.

Step 4.5: Validate Findings

Unless --skip-validation flag is present:

  1. Spawn the audit-finding-validator agent with:
    • project_root: The captured project root path
    • audit_type: "hook"
    • audit_files: List of .claude/temp/audit-*-hook-*.json file paths
  2. Wait for validation to complete
  3. Read updated JSON files with validation results
  4. Filter out FALSE_POSITIVE findings completely before aggregation
  5. Note: Filtered findings are logged to .claude/temp/audit-filtered-findings.json

If --skip-validation flag is present:

  • Skip validation phase entirely (current speed preserved)
  • Present all findings without filtering
  • Note in summary: "Validation: Skipped"

Step 5: Final Summary

Report total audited by source, results, and details table. Note that global hook fixes must be applied manually.

Include validation statistics (if validation was performed):

  • Validation performed: Yes/No
  • Findings validated: X
  • False positives filtered: Y
  • Verified findings: Z
  • Unverified findings: W

Important Notes

Deduplication

Local dev repo plugins take precedence over globally installed versions. Global hooks are read-only - report findings but recommend manual fixes.

Cross-Platform Paths

PlatformGlobal Plugins
Unix~/.claude/plugins/
Windows%USERPROFILE%\.claude\plugins\

Audit Log Location

All audit results are written to .claude/audit/hooks.md.

Use /audit-log hooks to view current audit status.

Example Usage

Example 1: Audit All Hooks

User: /audit-hooks

Claude: Discovering hook sources...

## Audit Plan
**Mode**: SMART
- Plugin: claude-ecosystem (4 hooks)
- Local: .claude/hooks/ (2 hooks)
- Deduplicated: claude-ecosystem (global skipped)

**Will audit**: 3 hooks

[Spawns hook-auditor subagents]

## Audit Complete
| Source | Hook | Result | Score |
| --- | --- | --- | --- |
| plugin | prevent-backup-files | PASS | 100/100 |

Example 2: Audit Specific Hook

User: /audit-hooks plugin:prevent-backup-files
Claude: PASS (Score: 100/100)
Stats
Stars40
Forks6
Last CommitMar 17, 2026
Actions

Similar Skills