Hooks Helper

Smart hooks for Claude Code.

A tiny utility for Anthropic's Claude Code CLI. Add voice alerts, build-check loops, and custom until triggers.

curl -fsSL hooked.arach.dev/install | bash
Read Docs

Listen, don't watch.

Hooked uses SpeakEasy to announce when Claude needs your attention. Stop checking your terminal—you'll hear it.

settings.json~/.claude/

"hooks": {

"Notification": [{

"matcher": "*",

"hooks": [{

"type": "command",

"command": "~/.hooked/notify.ts"

}]

}]

}

Terminal

$ hooked until check "pnpm test"

Ready. Claude will keep working until tests pass.

Claude tries to stop...

FAIL src/auth.test.ts

2 failed, 8 passed

↳ Not done yet. Claude continues.

Claude tries again...

PASS All tests

10 passed

✓ Done!

Voice

"Working on it."

"Tests failing. Fixing..."

"Round 2."

"All tests passing."

Continue until it works.

Tell Claude what "done" means. Tests passing. Build succeeding. Lint clean. Claude keeps working until the check passes—or you say stop. Be like Ralph.

1
hooked until check "pnpm test"

Define what "done" looks like

2
Claude works, checks, repeats

Fails? Keep going. Passes? Stop.

3
hooked off

Override anytime

Ephemeral Dashboard

See everything at a glance.

Spin up a local dashboard to view event history, configure voice and alerts, and see what's waiting on you. Auto-closes when you're done.

$ hooked web

Starting dashboard on localhost:3456

Auto-shutdown in 10 minutes

Hooked Web Dashboard
Session-Scoped

Different objectives.
Different sessions.

Run multiple Claude Code sessions with unique until objectives. One documents your codebase. Another fixes bugs. A third writes tests. They never interfere.

1
Set a pending objective:/hooked until "100% test coverage"
2
Claude claims it on first stop(lazy binding)
3
Other sessions unaffected(bound to session_id)
~/.hooked/state/
bfe239db...jsonactive

mode: manual

objective: "100% test coverage"

iteration: 3

a1b2c3d4...jsonactive

mode: check

check: "pnpm test"

iteration: 1

98765432...jsoncompleted

mode: check

Voice Alerts

Hear when Claude needs you, starts a loop, completes a round, or finishes a mission.

Slash Commands

/hooked until to start, /hooked off to stop.

Zero Config

Run pnpm run hooked:init once. Voice + until loops ready to go.

Custom Templates

Customize voice messages in config.json. Make Claude say what you want.

What people are saying

Get started in seconds.

Clone the repo, run the setup script, and you're ready to go.