In this categoryClaude Code ยท 45
- How to Install Claude Code on macOSStart
- How to Install Claude Code on Windows Natively (No WSL)
- How to Install Claude Code on Windows with WSL
- How to Start Your First Project with Claude Code
- How to Create a CLAUDE.md File for Your Project
- How to Configure Claude Code with settings.json
- How to Layer Global, Project, and Local CLAUDE.md Files
- How to Set Up a Permissions Allowlist in Claude Code
- How to Use Claude Code Inside VS Code
- How to Add a Custom Slash Command in Claude Code
- How to Create a Custom Slash Command in Claude Code
- How to Pass Arguments to a Claude Code Slash Command
- How to Use Claude Code Slash Commands (Full List + Examples)
- How to Add Custom Slash Commands to Claude Code (Arguments + Frontmatter)
- How to Fix command not found After Installing Claude Code
- How to Add Any MCP Server to Claude Code
- How to Connect an MCP Server to Claude Code
- Best MCP Servers for Coding in 2026
- How to Add a Filesystem MCP Server to Claude Code
- How to Connect the GitHub MCP Server to Claude Code
- How to Create Your First Subagent in Claude Code
- Context7 Alternatives: MCP Servers for Up-to-Date Docs
- How to Manage MCP Server Scopes in Claude Code
- How to Restrict the Tools a Subagent Can Use
- How to Debug a Failing MCP Server in Claude Code
- How to Generate Unit Tests for a Function with Claude Code
- How to Refactor a Long Function Safely with Claude Code
- How to Debug a Failing Test with Claude Code
- How to Review Your Own Diff Before Committing with Claude Code
- How to Rename a Symbol Across the Codebase with Claude Code
- How to Review a Teammate's Pull Request with Claude Code
- How to Raise Test Coverage on a Specific File with Claude Code
- How to Debug a Runtime Error from a Stack Trace with Claude Code
- How to Add an Integration Test for an API Route with Claude Code
- How to Teach Claude Code Your Test Conventions with CLAUDE.md
- How to Find Which Commit Broke a Test with Claude Code
- How to Set Up Hooks for Automation in Claude Code
- Claude Code Hooks Explained: Events, Config, and Blocking
- How to Block Risky Commands with a Claude Code Hook
- How to Auto-Format Files After Edits with a PostToolUse Hook
- How to Get a Notification When Claude Code Finishes a Task
- How to Give a Coding Agent a Clear Stop Condition
- How to Make an Agent Plan Before It Edits
- How to Keep an Agent Session Focused by Clearing Context
- How to Pin a Specific Model for One Project
How to Auto-Format Files After Edits with a PostToolUse Hook
Run Prettier automatically every time Claude Code writes or edits a file using a PostToolUse hook.
A PostToolUse hook fires after a tool finishes. A common use is formatting: every time Claude Code edits or writes a file, run your formatter so the diff stays clean and you never have to ask. This guide wires Prettier to run automatically on each file write.
- Prettier installed in the project (npm install -D prettier)
- Claude Code with hooks enabled
- A jq install or willingness to parse JSON in a small script
Step 1: Read the edited file path from the payload
PostToolUse passes the tool result on stdin as JSON. For Edit and Write the file path lives at tool_input.file_path. A tiny wrapper script extracts it and runs Prettier on just that file.
#!/usr/bin/env bash
set -euo pipefail
file=$(jq -r '.tool_input.file_path // empty')
if [[ -n "$file" && "$file" =~ \.(ts|tsx|js|jsx|json|css|md)$ ]]; then
npx prettier --write "$file" >/dev/null 2>&1 || true
fiStep 2: Register it for Edit and Write
Use a matcher that targets the file-changing tools. The pipe in the matcher value lets one hook cover both Edit and Write.
{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write|MultiEdit",
"hooks": [
{
"type": "command",
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/format.sh"
}
]
}
]
}
}Step 3: Watch it run
Ask Claude to make a change. After the edit completes, the hook runs Prettier on the touched file. The next time you look at the diff, the formatting is already correct.
Result: every file Claude Code edits is formatted automatically right after the write, keeping diffs clean without a single manual prettier run.
Watch related tutorials
5:42
31:18
1:42:30
05:00
16:00
45:30New guides in your inbox
Fresh step-by-step how-to guides as we publish them. One email a week, no more.