ForgeBot Mention Apple Watch Alert
A share-safe, numbered step-by-step plan to make direct Slack mentions of ForgeBot trigger an Apple Watch alert for Adam through the normal Slack notification path.
Step-by-step plan
-
Choose the alert path
Use option A: a direct ForgeBot Slack mention creates a ForgeBot DM to Adam, and Slack mobile notification mirroring carries that DM to Apple Watch.
-
Keep Hermes as the Slack harness
Handle the Slack event inside Hermes, where ForgeBot gateway traffic already enters the system. The alert should fire before the agent run continues.
-
Keep the scope narrow
Do not add a native Apple Watch push path, phone bridge, iMessage route, Reminders workflow, or macOS Notification Center dependency.
-
Start with the red TDD tracer
Use the focused TypeScript behavior test as the contract for turning a Hermes Slack mention context into one Adam DM alert payload.
-
Build the alert payload policy
The policy should produce a stable dedupe key, disable link unfurling, and include concise channel, sender, permalink, and trimmed source message details.
-
Require Doppler-injected auth
Verify the required Slack credential names through Doppler and fail loudly if any are missing. Do not read dotenv files or create local fallback secrets.
-
Run the gateway under Doppler
The live Hermes gateway should inherit its Slack credentials from Doppler at process launch. Restarting the gateway remains an owner-gated action.
-
Confirm the hook loads
Check gateway logs for the mention-alert hook loading successfully before testing detection or Slack delivery.
-
Dry-run the mention detector
Feed a synthetic direct mention into the hook with sending disabled. The dry run should print the alert text and prove dedupe behavior without calling Slack.
-
Send one controlled live mention
Use a safe test mention in a controlled Slack location. Success means exactly one ForgeBot DM reaches Adam with usable source context.
-
Verify the Apple Watch side
Confirm the Slack DM appears on Adam's phone and Apple Watch mirrors it. If the DM arrives but the Watch does not buzz, the remaining issue is notification configuration.
-
Monitor and tighten
Watch for duplicate DMs, missing channel metadata, failed Slack sends, or suppressed Watch notifications, then tune dedupe, permissions, and notification settings.
Numbered verification checklist
-
Doppler access works
The host can authenticate to Doppler and fetch the configured environment without printing secret values.
-
Required Slack credentials exist
The expected Slack credential names are present in the production Doppler config.
-
Hermes is running with injected secrets
The gateway process receives credentials from Doppler at launch, not from dotenv files or local fallbacks.
-
The alert hook is loaded
Gateway logs show the ForgeBot mention-alert hook loaded without errors.
-
Dry run succeeds
A synthetic mention produces the expected alert text and does not call Slack.
-
Live Slack delivery succeeds
A controlled direct mention sends exactly one ForgeBot DM to Adam.
-
Phone and Watch receive it
The Slack DM appears on Adam's iPhone and Apple Watch mirrors the notification.
Numbered failure handling
-
Missing Slack credential in the gateway environment
Meaning: the gateway was not launched with the required Doppler-injected credential. Fix: confirm the required secret names exist, then relaunch through Doppler.
-
Channel lookup fails
Meaning: ForgeBot lacks access to the source channel or Slack does not allow metadata lookup. Fix: invite ForgeBot to the channel or use an ID-only label.
-
DM does not arrive
Meaning: the Slack API send path failed. Fix: check gateway auth injection, bot scopes, and Slack API errors in gateway logs.
-
DM arrives but Watch does not buzz
Meaning: Hermes and Slack delivery worked; notification configuration is the remaining issue. Fix: adjust Slack iPhone notifications, Watch mirroring, or Focus rules.
-
Duplicate DMs appear
Meaning: the dedupe key is unstable or dedupe state is not persisting. Fix: use Slack event identity and persist state near the hook runtime.
Numbered open questions
- Adam's own mentions: Should Adam's own mentions trigger alerts during testing only, or stay suppressed by default?
- Who can trigger alerts: Should every direct ForgeBot mention alert Adam, or only mentions from other people?
- Alert content: Should alerts include message text, or only sender, channel, and permalink for privacy?
- Hook failure routing: Should hook failures stay in local logs, or send a rate-limited failure DM?
This page is a sanitized public preview. The implementation plan in the ForgeApps repo keeps exact identifiers, commands, and file paths for local execution.