AgentSkillsCN

setup-hooks

配置Claude Code钩子,实现在文件编辑与提交时自动执行验证操作。

SKILL.md
--- frontmatter
name: setup-hooks
description: Configure Claude Code hooks for automated validation on file edits and commits
disable-model-invocation: true

Set up Claude Code hooks for the project.

Hooks enforce coding standards automatically — they run scripts at specific points in Claude's workflow. Unlike CLAUDE.md instructions (advisory), hooks are deterministic and guarantee the action happens.

Hook 1 — Syntax Check After File Edits

Event: PostToolUse on Write and Edit tools Purpose: Catch syntax errors immediately after writing/editing Python files Command: Run the syntax validation command (see stack concepts in project config) — fails if syntax is broken

Hook 2 — Annotations Check After File Edits

Event: PostToolUse on Write and Edit tools Purpose: Enforce the future annotations pattern (see stack concepts) in source files under the source root Command: Check if the file is under the source root, then verify the annotations pattern exists

Hook 3 — Tests After File Edits

Event: PostToolUse on Write and Edit tools Purpose: Run tests after modifying source or test files to catch regressions immediately Command: Run the test command (see project config) Note: Only trigger on source code file edits, not README or config files

Installation

Write the hooks to .claude/settings.json using this structure:

json
{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [
          {
            "type": "command",
            "command": "<shell command here>"
          }
        ]
      }
    ]
  }
}

Important Notes

  • Test each hook manually before adding to settings
  • Hooks that exit non-zero BLOCK the operation and show the error to the user
  • Keep hooks fast (< 5 seconds) — slow hooks degrade the coding experience
  • Use .claude/settings.json for project hooks (shared via git)
  • Use .claude/settings.local.json for personal hooks (gitignored)
  • See https://code.claude.com/docs/en/hooks for full documentation

Verification

After setup, test by editing a file and confirming the hook runs.