Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions commands/hey.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
---
description: " "
argument-hint: "ping | chirp | knock | coin | chime | yourturn [times] [idle-seconds] | off"
allowed-tools: Bash(hey:*), Bash(hey), Bash(hey off)
---
Activate **hey** for THIS session only — a short **sound** plays when I hand back to you
(finish a reply, or hit a permission prompt), but **only if you've been idle longer than
the threshold**. Fast back-and-forth stays silent; you're beeped only when you've likely
stepped away. It plays on the machine where you sit (local, or forwarded if I'm driven
over SSH). Nothing listens, ever. Most alerts are plain sounds; `yourturn` is a
short pre-rendered voice clip.

Requested: `$ARGUMENTS`

## If `$ARGUMENTS` is empty
Do NOT pick a sound. Show the options and ask which they want — nothing else.

| Sound | Character |
|-------|-----------|
| ping | one clean bright blip |
| chirp | two-note rising pip |
| knock | two soft low thumps |
| coin | jaunty pickup blip |
| chime | Nina's sparkle arpeggio (the speech cue) |
| yourturn | a voice saying "your turn" — cuts through ambient audio |

Call format: `/hey <sound> [times] [idle-seconds]`. Defaults: times=1, idle-threshold=45s.

## If `$ARGUMENTS` is `off` / `stop`
Run `hey off`, confirm once. Nothing else.

## Otherwise — a sound, optionally times and threshold
Run `hey $ARGUMENTS` (e.g. `hey knock 2 45`). It previews the sound once and activates.
Confirm in one line: which sound, how many plays, and the idle threshold. Nothing more —
no meta narration on later turns.

## Notes
- Uniform rule, no model judgement: any hand-back beeps iff `now − last_prompt ≥ threshold`.
- Standalone tool at `~/42labs/john-w-bsmt/hey` (repo `4242labs/hey`); sounds in `~/42labs/john-w-bsmt/hey/assets/`.
- Independent of `/nina` voice — you can run either or both.
6 changes: 3 additions & 3 deletions config.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,16 @@ mkdir -p "$HEY_CACHE" 2>/dev/null
HEY_SWITCH="${HEY_SWITCH:-$HOME/.config/agent-signal/on}"
# Per-session token so concurrent agents isolate their markers + playback and
# never kill each other. Falls back to PID outside Claude Code.
HEY_SESSION="${HEY_SESSION:-${CLAUDE_CODE_SESSION_ID:-$$}}"
HEY_SESSION="${HEY_SESSION:-${HERMES_SESSION_ID:-${CLAUDE_CODE_SESSION_ID:-$$}}}"
HEY_OUT="$HEY_CACHE/$HEY_SESSION" # markers: $HEY_OUT.hey / .turn

# --- sounds -------------------------------------------------------------------
HEY_DIR="${HEY_DIR:-$HEY_HOME/assets}" # where the sounds live
HEY_THRESHOLD="${HEY_THRESHOLD:-45}" # default idle seconds before a beep fires
HEY_TIMES="${HEY_TIMES:-1}" # default number of plays per alert
HEY_DEFAULT_SOUND="${HEY_DEFAULT_SOUND:-ping}" # the system-wide default: "beep" x2 after 20s idle
HEY_DEFAULT_SOUND="${HEY_DEFAULT_SOUND:-chime}" # the system-wide default: chime x2 after 5s idle
HEY_DEFAULT_TIMES="${HEY_DEFAULT_TIMES:-2}"
HEY_DEFAULT_THRESHOLD="${HEY_DEFAULT_THRESHOLD:-20}"
HEY_DEFAULT_THRESHOLD="${HEY_DEFAULT_THRESHOLD:-5}"
HEY_GAP="${HEY_GAP:-0.25}" # seconds between repeated plays
# One row per sound: "name|file". Names match case-insensitively.
# A spoken alert is just another row — the player does not care whether the
Expand Down
39 changes: 39 additions & 0 deletions hermes/hey/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
---
name: hey
description: Beep when the agent hands back after you have been idle (/hey <sound> [times] [idle-s] | off).
---
Activate **hey** for THIS session only — a short **sound** plays when I hand back to you
(finish a reply), but **only if you've been idle longer than
the threshold**. Fast back-and-forth stays silent; you're beeped only when you've likely
stepped away. It plays on the machine where you sit (local, or forwarded if I'm driven
over SSH). Nothing listens, ever. Most alerts are plain sounds; `yourturn` is a
short pre-rendered voice clip.

Requested: the user instruction

## If the user instruction is empty
Do NOT pick a sound. Show the options and ask which they want — nothing else.

| Sound | Character |
|-------|-----------|
| ping | one clean bright blip |
| chirp | two-note rising pip |
| knock | two soft low thumps |
| coin | jaunty pickup blip |
| chime | Nina's sparkle arpeggio (the speech cue) |
| yourturn | a voice saying "your turn" — cuts through ambient audio |

Call format: `/hey <sound> [times] [idle-seconds]`. Defaults: times=1, idle-threshold=45s.

## If the user instruction is `off` / `stop`
Run `hey off`, confirm once. Nothing else.

## Otherwise — a sound, optionally times and threshold
Run `hey the user instruction` (e.g. `hey knock 2 45`). It previews the sound once and activates.
Confirm in one line: which sound, how many plays, and the idle threshold. Nothing more —
no meta narration on later turns.

## Notes
- Uniform rule, no model judgement: any hand-back beeps iff `now − last_prompt ≥ threshold`.
- Standalone tool at `~/42labs/john-w-bsmt/hey` (repo `4242labs/hey`); sounds in `~/42labs/john-w-bsmt/hey/assets/`.
- Independent of `/nina` voice — you can run either or both.
Loading