Skip to content

Commit 9b47b69

Browse files
feat: Add SMS notification hook for review alerts
Optional feature - requires Twilio setup: - Send text when PR created, package published, or deployment done - Interactive prompts with numbered options (1234) or yes/no - Quiet hours to prevent late-night notifications - Webhook handler for receiving SMS responses - CLI: stackmemory notify [status|enable|test|review|ask]
1 parent 5bb1e1c commit 9b47b69

7 files changed

Lines changed: 1233 additions & 0 deletions

File tree

scripts/install-notify-hook.sh

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
#!/bin/bash
2+
# Install SMS notification hook for Claude Code (optional)
3+
4+
set -e
5+
6+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
7+
HOOK_SOURCE="$SCRIPT_DIR/../templates/claude-hooks/notify-review-hook.js"
8+
CLAUDE_DIR="$HOME/.claude"
9+
HOOKS_DIR="$CLAUDE_DIR/hooks"
10+
SETTINGS_FILE="$CLAUDE_DIR/settings.json"
11+
12+
echo "Installing SMS notification hook for Claude Code..."
13+
echo "(Optional feature - requires Twilio setup)"
14+
echo ""
15+
16+
# Create directories
17+
mkdir -p "$HOOKS_DIR"
18+
19+
# Copy hook script
20+
HOOK_DEST="$HOOKS_DIR/notify-review-hook.js"
21+
cp "$HOOK_SOURCE" "$HOOK_DEST"
22+
chmod +x "$HOOK_DEST"
23+
echo "Installed hook to $HOOK_DEST"
24+
25+
# Update Claude Code settings
26+
if [ -f "$SETTINGS_FILE" ]; then
27+
if command -v jq &> /dev/null; then
28+
cp "$SETTINGS_FILE" "$SETTINGS_FILE.bak"
29+
30+
HOOK_CMD="node $HOOK_DEST"
31+
32+
# Add to post_tool_use hooks
33+
if jq -e '.hooks.post_tool_use' "$SETTINGS_FILE" > /dev/null 2>&1; then
34+
if ! jq -e ".hooks.post_tool_use | index(\"$HOOK_CMD\")" "$SETTINGS_FILE" > /dev/null 2>&1; then
35+
jq ".hooks.post_tool_use += [\"$HOOK_CMD\"]" "$SETTINGS_FILE" > "$SETTINGS_FILE.tmp"
36+
mv "$SETTINGS_FILE.tmp" "$SETTINGS_FILE"
37+
echo "Added hook to post_tool_use array"
38+
else
39+
echo "Hook already configured"
40+
fi
41+
else
42+
jq ".hooks = (.hooks // {}) | .hooks.post_tool_use = [\"$HOOK_CMD\"]" "$SETTINGS_FILE" > "$SETTINGS_FILE.tmp"
43+
mv "$SETTINGS_FILE.tmp" "$SETTINGS_FILE"
44+
echo "Created hooks.post_tool_use with notify hook"
45+
fi
46+
else
47+
echo ""
48+
echo "jq not found. Please manually add to $SETTINGS_FILE:"
49+
echo ""
50+
echo ' "hooks": {'
51+
echo ' "post_tool_use": ["node '$HOOK_DEST'"]'
52+
echo ' }'
53+
fi
54+
else
55+
cat > "$SETTINGS_FILE" << EOF
56+
{
57+
"hooks": {
58+
"post_tool_use": ["node $HOOK_DEST"]
59+
}
60+
}
61+
EOF
62+
echo "Created settings file with hook"
63+
fi
64+
65+
echo ""
66+
echo "Notification hook installed!"
67+
echo ""
68+
echo "To enable SMS notifications:"
69+
echo " 1. Set Twilio environment variables:"
70+
echo " export TWILIO_ACCOUNT_SID=your_sid"
71+
echo " export TWILIO_AUTH_TOKEN=your_token"
72+
echo " export TWILIO_FROM_NUMBER=+1234567890"
73+
echo " export TWILIO_TO_NUMBER=+1234567890"
74+
echo ""
75+
echo " 2. Enable notifications:"
76+
echo " stackmemory notify enable"
77+
echo ""
78+
echo " 3. Test:"
79+
echo " stackmemory notify test"
80+
echo ""
81+
echo "Notifications will be sent when:"
82+
echo " - PR is created (gh pr create)"
83+
echo " - Package is published (npm publish)"
84+
echo " - Deployment completes"

0 commit comments

Comments
 (0)