Use a hook for a repeatable event check and instructions for the reason behind it. Keep the handler small enough that a failure can be diagnosed from its exit status.
- 1Lifecycle event
- 2Handler
- 3Exit status
- 4Explain result
Work through the example
Prompt: Demonstrate one passing and one failing hook case using synthetic files.
One practical example
Use the prompt above on one small, named part of your app. Before accepting an edit, ask the agent to point to the source or configuration that supports its answer. If it cannot locate that context, resolve the missing input before expanding the task.
In the diagram, each arrow represents a handoff you can inspect. Keep the intermediate result rather than jumping directly to the final claim. For example, a reported finding should retain its location, and an executed check should retain its outcome. This gives the next attempt a concrete starting point and makes a misleading completion message easier to challenge.
Apply it to your project
Prompt: Demonstrate one passing and one failing hook case using synthetic files. Then compare the resulting diff with the original request. If it changed a neighboring concern, ask why that change was necessary. Save the result only after the relevant check has run, and record any part that remains unverified.
Evidence and limits
Hook schemas and exit behavior are client-specific; copying JSON does not verify dispatch.
This is an educational guide. Its presence in the series does not certify a completed client-specific lab. The series evidence record separates executed checks from exercises and blocked environments.
Inspect the source used in this lesson.
Related reading
- How can Claude Code hooks protect generated files and verify a project before stopping?
A tested generated-file guard and Stop check, with configuration, reproducible exit codes, and enforcement limits.
What to do next
Next: When the agent says "done", run the tests yourself once