configure-notifications
The configure-notifications Claude Code skill sets up notification integrations for Telegram, Discord, or Slack through natural language interaction. Users specify their preferred service or are prompted to choose one, then walk through provider-specific configuration steps including obtaining API credentials and storing settings in the OMC config file. Use this skill when users want to enable alerts for OMC session events, input requests, or background task completions across their preferred messaging platform.
git clone --depth 1 https://github.com/Yeachan-Heo/oh-my-claudecode /tmp/configure-notifications && cp -r /tmp/configure-notifications/skills/configure-notifications ~/.claude/skills/configure-notificationsSKILL.md
# Configure Notifications
Set up OMC notification integrations so you're alerted when sessions end, need input, or complete background tasks.
## Routing
Detect which provider the user wants based on their request or argument:
- If the trigger or argument contains "telegram" → follow the **Telegram** section
- If the trigger or argument contains "discord" → follow the **Discord** section
- If the trigger or argument contains "slack" → follow the **Slack** section
- If no provider is specified, use AskUserQuestion:
**Question:** "Which notification service would you like to configure?"
**Options:**
1. **Telegram** - Bot token + chat ID. Works on mobile and desktop.
2. **Discord** - Webhook or bot token + channel ID.
3. **Slack** - Incoming webhook URL.
---
## Telegram Setup
Set up Telegram notifications so OMC can message you when sessions end, need input, or complete background tasks.
### How This Skill Works
This is an interactive, natural-language configuration skill. Walk the user through setup by asking questions with AskUserQuestion. Write the result to `${CLAUDE_CONFIG_DIR:-~/.claude}/.omc-config.json`.
### Step 1: Detect Existing Configuration
```bash
CONFIG_FILE="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/.omc-config.json"
if [ -f "$CONFIG_FILE" ]; then
HAS_TELEGRAM=$(jq -r '.notifications.telegram.enabled // false' "$CONFIG_FILE" 2>/dev/null)
CHAT_ID=$(jq -r '.notifications.telegram.chatId // empty' "$CONFIG_FILE" 2>/dev/null)
PARSE_MODE=$(jq -r '.notifications.telegram.parseMode // "Markdown"' "$CONFIG_FILE" 2>/dev/null)
if [ "$HAS_TELEGRAM" = "true" ]; then
echo "EXISTING_CONFIG=true"
echo "CHAT_ID=$CHAT_ID"
echo "PARSE_MODE=$PARSE_MODE"
else
echo "EXISTING_CONFIG=false"
fi
else
echo "NO_CONFIG_FILE"
fi
```
If existing config is found, show the user what's currently configured and ask if they want to update or reconfigure.
### Step 2: Create a Telegram Bot
Guide the user through creating a bot if they don't have one:
```
To set up Telegram notifications, you need a Telegram bot token and your chat ID.
CREATE A BOT (if you don't have one):
1. Open Telegram and search for @BotFather
2. Send /newbot
3. Choose a name (e.g., "My OMC Notifier")
4. Choose a username (e.g., "my_omc_bot")
5. BotFather will give you a token like: 123456789:ABCdefGHIjklMNOpqrsTUVwxyz
GET YOUR CHAT ID:
1. Start a chat with your new bot (send /start)
2. Visit: https://api.telegram.org/bot<YOUR_TOKEN>/getUpdates
3. Look for "chat":{"id":YOUR_CHAT_ID}
- Personal chat IDs are positive numbers (e.g., 123456789)
- Group chat IDs are negative numbers (e.g., -1001234567890)
```
### Step 3: Collect Bot Token
Use AskUserQuestion:
**Question:** "Paste your Telegram bot token (from @BotFather)"
The user will type their token in the "Other" field.
**Validate** the token:
- Must match pattern: `digits:alphanumeric` (e.g., `123456789:ABCdefGHI...`)
- If invalid, explain the format and ask again
### Step 4: Collect Chat ID
Use AskUserQuestion:
**Question:** "Paste your Telegram chat ID (the number from getUpdates API)"
The user will type their chat ID in the "Other" field.
**Validate** the chat ID:
- Must be a number (positive for personal, negative for groups)
- If invalid, offer to help them find it:
```bash
# Help user find their chat ID
BOT_TOKEN="USER_PROVIDED_TOKEN"
echo "Fetching recent messages to find your chat ID..."
curl -s "https://api.telegram.org/bot${BOT_TOKEN}/getUpdates" | jq '.result[-1].message.chat.id // .result[-1].message.from.id // "No messages found - send /start to your bot first"'
```
### Step 5: Choose Parse Mode
Use AskUserQuestion:
**Question:** "Which message format do you prefer?"
**Options:**
1. **Markdown (Recommended)** - Bold, italic, code blocks with Markdown syntax
2. **HTML** - Bold, italic, code with HTML tags
### Step 6: Configure Events
Use AskUserQuestion with multiSelect:
**Question:** "Which events should trigger Telegram notifications?"
**Options (multiSelect: true):**
1. **Session end (Recommended)** - When a Claude session finishes
2. **Input needed** - When Claude is waiting for your response (great for long-running tasks)
3. **Session start** - When a new session begins
4. **Session continuing** - When a persistent mode keeps the session alive
Default selection: session-end + ask-user-question.
### Step 7: Write Configuration
Read the existing config, merge the new Telegram settings, and write back:
```bash
CONFIG_FILE="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/.omc-config.json"
mkdir -p "$(dirname "$CONFIG_FILE")"
if [ -f "$CONFIG_FILE" ]; then
EXISTING=$(cat "$CONFIG_FILE")
else
EXISTING='{}'
fi
# BOT_TOKEN, CHAT_ID, PARSE_MODE are collected from user
echo "$EXISTING" | jq \
--arg token "$BOT_TOKEN" \
--arg chatId "$CHAT_ID" \
--arg parseMode "$PARSE_MODE" \
'.notifications = (.notifications // {enabled: true}) |
.notifications.enabled = true |
.notifications.telegram = {
enabled: true,
botToken: $token,
chatId: $chatId,
parseMode: $parseMode
}' > "$CONFIG_FILE"
```
#### Add event-specific config if user didn't select all events:
For each event NOT selected, disable it:
```bash
# Example: disable session-start if not selected
echo "$(cat "$CONFIG_FILE")" | jq \
'.notifications.events = (.notifications.events // {}) |
.notifications.events["session-start"] = {enabled: false}' > "$CONFIG_FILE"
```
### Step 8: Test the Configuration
After writing config, offer to send a test notification:
Use AskUserQuestion:
**Question:** "Send a test notification to verify the setup?"
**Options:**
1. **Yes, test now (Recommended)** - Send a test message to your Telegram chat
2. **No, I'll test later** - Skip testing
#### If testing:
```bash
BOT_TOKEN="USER_PROVIDED_TOKEN"
CHAT_ID="USER_PROVIDED_CHAT_ID"
PARSE_MODE="Markdown"
RESPONSE=$(curl -s -w "\n%{http_code}" \
"https://api.telegram.org/bot${BOT_TOKEN}/sendMessage" \
-d "chat_id=${CHAT_ID}" \
-d "parse_modPre-planning consultant for requirements analysis (Opus)
Strategic Architecture & Debugging Advisor (Opus, READ-ONLY)
Expert code review specialist with severity-rated feedback, logic defect detection, SOLID principle checks, style, performance, and quality strategy
Simplifies and refines code for clarity, consistency, and maintainability while preserving all functionality. Focuses on recently modified code unless instructed otherwise.
Work plan and code review expert — thorough, structured, multi-perspective (Opus)
Root-cause analysis, regression isolation, stack trace analysis, build/compilation error resolution
UI/UX Designer-Developer for stunning interfaces (Sonnet)
External Documentation & Reference Specialist