# I built two small Claude Code plugins this week - here's what I learned about hooks

> Source: <https://dev.to/abhishek_sharma_a9792aee8/i-built-two-small-claude-code-plugins-this-week-heres-what-i-learned-about-hooks-2f29>
> Published: 2026-08-17 08:01:47+00:00

I use Claude Code daily as a Software Engineer at Citrix, and two small frictions kept showing up in long agentic sessions:

Claude Code plugins can hook into lifecycle events (`Stop`

, `Notification`

, `UserPromptSubmit`

, etc.) with a single command, so I built one plugin for each problem.

[ earshot](https://github.com/absep98/earshot) hooks

`Stop`

and `Notification`

. Instead of reading the agent's full response, it narrates a short spoken summary — and by default says That "silent by default" behavior wasn't my first instinct — it came from reading two peer-reviewed studies on blind and low-vision developers using AI coding tools. Both found the core problem was auditory overload, not silence. Developers already running a screen reader don't want a second voice narrating the same text.

[ waypoint](https://github.com/absep98/waypoint) hooks

`UserPromptSubmit`

. You set a goal once:

```
/goal-set Fix the login bug on the checkout page
```

From then on, every prompt you send silently carries a one-line reminder of that goal as injected context — until you clear it with `/goal-done`

. No manual re-explaining 40 messages into a session that's drifted.

```
$ /goal-status
Active goal (set 2h 15m ago): Fix the login bug on the checkout page
```

`~/.claude/<plugin>/`

,Both plugins are MIT-licensed and install in one command:

```
/plugin marketplace add absep98/earshot
/plugin marketplace add absep98/waypoint
```

Repos: [github.com/absep98/earshot](https://github.com/absep98/earshot) · [github.com/absep98/waypoint](https://github.com/absep98/waypoint)

Happy to answer questions about the hook lifecycle or plugin structure in the comments.
