/create-hook
Create and configure git hooks with intelligent project analysis, suggestions, and automated testing
$ npx -y skills add NeoLabHQ/context-engineering-kit --skill create-hook --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/create-hook
Context preview
The summary Claude sees to decide when to auto-load this skill.
Create and configure git hooks with intelligent project analysis, suggestions, and automated testing
SKILL.md
create-hook.SKILL.mdname: create-hook
description: Create and configure git hooks with intelligent project analysis, suggestions, and automated testing
argument-hint: Optional hook type or description of desired behavior
Create Hook Command
Analyze the project, suggest practical hooks, and create them with proper testing.
Your Task (/create-hook)
1. **Analyze environment** - Detect tooling and existing hooks 2. **Suggest hooks** - Based on your project configuration 3. **Configure hook** - Ask targeted questions and create the script 4. **Test & validate** - Ensure the hook works correctly
Your Workflow
1. Environment Analysis & Suggestions
Automatically detect the project tooling and suggest relevant hooks:
**When TypeScript is detected (`tsconfig.json`):**
- PostToolUse hook: "Type-check files after editing"
- PreToolUse hook: "Block edits with type errors"
**When Prettier is detected (`.prettierrc`, `prettier.config.js`):**
- PostToolUse hook: "Auto-format files after editing"
- PreToolUse hook: "Require formatted code"
**When ESLint is detected (`.eslintrc.*`):**
- PostToolUse hook: "Lint and auto-fix after editing"
- PreToolUse hook: "Block commits with linting errors"
**When package.json has scripts:**
- `test` script → "Run tests before commits"
- `build` script → "Validate build before commits"
**When a git repository is detected:**
- PreToolUse/Bash hook: "Prevent commits with secrets"
- PostToolUse hook: "Security scan on file changes"
**Decision Tree:**
Project has TypeScript? → Suggest type checking hooks
Project has formatter? → Suggest formatting hooks
Project has tests? → Suggest test validation hooks
Security sensitive? → Suggest security hooks
+ Scan for additional patterns and suggest custom hooks based on:
- Custom scripts in package.json
- Unique file patterns or extensions
- Development workflow indicators
- Project-specific tooling configurations
2. Hook Configuration
Start by asking: **"What should this hook do?"** and offer relevant suggestions from your analysis.
Then understand the context from the user's description and **only ask about details you're unsure about**:
1. **Trigger timing**: When should it run?
- `PreToolUse`: Before file operations (can block)
- `PostToolUse`: After file operations (feedback/fixes)
- `UserPromptSubmit`: Before processing requests
- Other event types as needed
2. **Tool matcher**: Which tools should trigger it? (`Write`, `Edit`, `Bash`, `*` etc)
3. **Scope**: `global`, `project`, or `project-local`
4. **Response approach**:
- **Exit codes only**: Simple (exit 0 = success, exit 2 = block in PreToolUse)
- **JSON response**: Advanced control (blocking, context, decisions)
- Guide based on complexity: simple pass/fail → exit codes, rich feedback → JSON
5. **Blocking behavior** (if relevant): "Should this stop operations when issues are found?"
- PreToolUse: Can block operations (security, validation)
- PostToolUse: Usually provide feedback only
6. **Claude integration** (CRITICAL): "Should Claude Code automatically see and fix issues this hook detects?"
- If YES: Use `additionalContext` for error communication
- If NO: Use `suppressOutput: true` for silent operation
7. **Context pollution**: "Should successful operations be silent to avoid noise?"
- Recommend YES for formatting, routine checks
- Recommend NO for security alerts, critical errors
8. **File filtering**: "What file types should this hook process?"
3. Hook Creation
You should:
- **Create hooks directory**: `~/.claude/hooks/` or `.claude/hooks/` based on scope
- **Generate script**: Create hook script with:
- Proper shebang and executable permissions
- Project-specific commands (use detected config paths)
- Comments explaining the hook's purpose
- **Update settings**: Add hook configuration to appropriate settings.json
- **Use absolute paths**: Avoid relative paths to scripts and executables. Use `$CLAUDE_PROJECT_DIR` to reference project root
- **Offer validation**: Ask if the user wants you to test the hook
**Key Implementation Standards:**
- Read JSON from stdin (never use argv)
- Use top-level `additionalContext`/`systemMessage` for Claude communication
- Include `suppressOutput: true` for successful operations
- Provide specific error counts and actionable feedback
- Focus on changed files rather than entire codebase
- Support common development workflows
**⚠️ CRITICAL: Input/Output Format**
This is where most hook implementations fail. Pay extra attention to:
- **Input**: Reading JSON from stdin correctly (not argv)
- **Output**: Using correct top-level JSON structure for Claude communication
- **Documentation**: Consulting official docs for exact schemas when in doubt
4. Testing & Validation
**CRITICAL: Test both happy and sad paths:**
**Happy Path Testing:**
1. **Test expected success scenario** - Create conditions where hook should pass
- _Examples_: TypeScript (valid code), Linting (formatted code), Security (safe commands)
**Sad Path Testing:** 2. **Test expected failure scenario** - Create conditions where hook should fail/warn
- _Examples_: TypeScript (type errors), Linting (unformatted code), Security (dangerous operations)
**Verification Steps:** 3. **Verify expected behavior**: Check if it blocks/warns/provides context as intended
**Example Testing Process:**
- For a hook preventing file deletion: Create a test file, attempt the protected action, and verify the hook prevents it
**If Issues Occur, you should:**
- Check hook registration in settings
- Verify script permissions (`chmod +x`)
- Test with simplified version first
- Debug with detailed hook execution analysis
Hook Templates
Type Checking (PostToolUse)
#!/usr/bin/env node
// Read stdin JSON, check .ts/.tsx files only
// Run: npx tsc --noEmit --pretty
// Output: JSON with additionalContext for errors
Auto-formatting (PostToolUse)
#!/usr/bin/env node
Read more
name: create-hook description: Create and configure git hooks with intelligent project analysis, suggestions, and automated testing argument-hint: Optional hook type or description of desired behavior
Create Hook Command
Analyze the project, suggest practical hooks, and create them with proper testing.
Your Task (/create-hook)
1. **Analyze environment** - Detect tooling and existing hooks 2. **Suggest hooks** - Based on your project configuration 3. **Configure hook** - Ask targeted questions and create the script 4. **Test & validate** - Ensure the hook works correctly
Your Workflow
1. Environment Analysis & Suggestions
Automatically detect the project tooling and suggest relevant hooks:
**When TypeScript is detected (`tsconfig.json`):**
- PostToolUse hook: "Type-check files after editing"
- PreToolUse hook: "Block edits with type errors"
**When Prettier is detected (`.prettierrc`, `prettier.config.js`):**
- PostToolUse hook: "Auto-format files after editing"
- PreToolUse hook: "Require formatted code"
**When ESLint is detected (`.eslintrc.*`):**
- PostToolUse hook: "Lint and auto-fix after editing"
- PreToolUse hook: "Block commits with linting errors"
**When package.json has scripts:**
- `test` script → "Run tests before commits"
- `build` script → "Validate build before commits"
**When a git repository is detected:**
- PreToolUse/Bash hook: "Prevent commits with secrets"
- PostToolUse hook: "Security scan on file changes"
**Decision Tree:**
Project has TypeScript? → Suggest type checking hooks Project has formatter? → Suggest formatting hooks Project has tests? → Suggest test validation hooks Security sensitive? → Suggest security hooks + Scan for additional patterns and suggest custom hooks based on: - Custom scripts in package.json - Unique file patterns or extensions - Development workflow indicators - Project-specific tooling configurations
2. Hook Configuration
Start by asking: **"What should this hook do?"** and offer relevant suggestions from your analysis.
Then understand the context from the user's description and **only ask about details you're unsure about**:
1. **Trigger timing**: When should it run?
- `PreToolUse`: Before file operations (can block)
- `PostToolUse`: After file operations (feedback/fixes)
- `UserPromptSubmit`: Before processing requests
- Other event types as needed
2. **Tool matcher**: Which tools should trigger it? (`Write`, `Edit`, `Bash`, `*` etc)
3. **Scope**: `global`, `project`, or `project-local`
4. **Response approach**:
- **Exit codes only**: Simple (exit 0 = success, exit 2 = block in PreToolUse)
- **JSON response**: Advanced control (blocking, context, decisions)
- Guide based on complexity: simple pass/fail → exit codes, rich feedback → JSON
5. **Blocking behavior** (if relevant): "Should this stop operations when issues are found?"
- PreToolUse: Can block operations (security, validation)
- PostToolUse: Usually provide feedback only
6. **Claude integration** (CRITICAL): "Should Claude Code automatically see and fix issues this hook detects?"
- If YES: Use `additionalContext` for error communication
- If NO: Use `suppressOutput: true` for silent operation
7. **Context pollution**: "Should successful operations be silent to avoid noise?"
- Recommend YES for formatting, routine checks
- Recommend NO for security alerts, critical errors
8. **File filtering**: "What file types should this hook process?"
3. Hook Creation
You should:
- **Create hooks directory**: `~/.claude/hooks/` or `.claude/hooks/` based on scope
- **Generate script**: Create hook script with:
- Proper shebang and executable permissions
- Project-specific commands (use detected config paths)
- Comments explaining the hook's purpose
- **Update settings**: Add hook configuration to appropriate settings.json
- **Use absolute paths**: Avoid relative paths to scripts and executables. Use `$CLAUDE_PROJECT_DIR` to reference project root
- **Offer validation**: Ask if the user wants you to test the hook
**Key Implementation Standards:**
- Read JSON from stdin (never use argv)
- Use top-level `additionalContext`/`systemMessage` for Claude communication
- Include `suppressOutput: true` for successful operations
- Provide specific error counts and actionable feedback
- Focus on changed files rather than entire codebase
- Support common development workflows
**⚠️ CRITICAL: Input/Output Format**
This is where most hook implementations fail. Pay extra attention to:
- **Input**: Reading JSON from stdin correctly (not argv)
- **Output**: Using correct top-level JSON structure for Claude communication
- **Documentation**: Consulting official docs for exact schemas when in doubt
4. Testing & Validation
**CRITICAL: Test both happy and sad paths:**
**Happy Path Testing:**
1. **Test expected success scenario** - Create conditions where hook should pass
- _Examples_: TypeScript (valid code), Linting (formatted code), Security (safe commands)
**Sad Path Testing:** 2. **Test expected failure scenario** - Create conditions where hook should fail/warn
- _Examples_: TypeScript (type errors), Linting (unformatted code), Security (dangerous operations)
**Verification Steps:** 3. **Verify expected behavior**: Check if it blocks/warns/provides context as intended
**Example Testing Process:**
- For a hook preventing file deletion: Create a test file, attempt the protected action, and verify the hook prevents it
**If Issues Occur, you should:**
- Check hook registration in settings
- Verify script permissions (`chmod +x`)
- Test with simplified version first
- Debug with detailed hook execution analysis
Hook Templates
Type Checking (PostToolUse)
#!/usr/bin/env node // Read stdin JSON, check .ts/.tsx files only // Run: npx tsc --noEmit --pretty // Output: JSON with additionalContext for errors
Auto-formatting (PostToolUse)
#!/usr/bin/env node
A hand-crafted collection of advanced context engineering techniques and patterns with minimal token footprint, focused on improving agent result quality and predictability.
Repo: NeoLabHQ/context-engineering-kit
Other skills on context-engineering-kit.
- /agent-evaluation
Evaluate and improve Claude Code commands, skills, and agents. Use when testing prompt effectiveness, validating context engineering choices, or measuring improvement quality.
Open skill - /apply-anthropic-skill-best-practices
Comprehensive guide for skill development based on Anthropic's official best practices - use for complex skills requiring detailed structure
Open skill - /context-engineering
Understand the components, mechanics, and constraints of context in agent systems. Use when writing, editing, or optimizing commands, skills, or sub-agents prompts.
Open skill - /create-agent
Comprehensive guide for creating Claude Code agents with proper structure, triggering conditions, system prompts, and validation - combines official Anthropic best practices with proven patterns
Open skill - /create-command
Interactive assistant for creating new Claude commands with proper structure, patterns, and MCP tool integration
Open skill - /create-rule
Use when found gap or repetative issue, that produced by you or implemenataion agent. Esentially use it each time when you say "You absolutly right, I should have done it differently." -> need create rule for this issue so it not appears again.
Open skill

