configure-notifications/SKILL.md
Configure OMX notifications - unified entry point for all platforms
npx skillsauth add abanoub-ashraf/manus-skills-import configure-notificationsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Unified entry point for setting up notifications across all supported platforms. OMX can notify you on Discord, Telegram, Slack, or your own OpenClaw gateway.
This skill detects what's already configured, presents a menu, and delegates to the appropriate platform skill. It also handles cross-cutting settings like verbosity, notification profiles, reply listener, and idle cooldown.
CONFIG_FILE="$HOME/.codex/.omx-config.json"
if [ -f "$CONFIG_FILE" ]; then
DISCORD_ENABLED=$(jq -r '.notifications.discord.enabled // false' "$CONFIG_FILE" 2>/dev/null)
DISCORD_BOT_ENABLED=$(jq -r '.notifications["discord-bot"].enabled // false' "$CONFIG_FILE" 2>/dev/null)
TELEGRAM_ENABLED=$(jq -r '.notifications.telegram.enabled // false' "$CONFIG_FILE" 2>/dev/null)
SLACK_ENABLED=$(jq -r '.notifications.slack.enabled // false' "$CONFIG_FILE" 2>/dev/null)
OPENCLAW_ENABLED=$(jq -r '.notifications.openclaw.enabled // false' "$CONFIG_FILE" 2>/dev/null)
NOTIF_ENABLED=$(jq -r '.notifications.enabled // false' "$CONFIG_FILE" 2>/dev/null)
VERBOSITY=$(jq -r '.notifications.verbosity // "session"' "$CONFIG_FILE" 2>/dev/null)
COOLDOWN=$(jq -r '.notifications.idleCooldownSeconds // 60' "$CONFIG_FILE" 2>/dev/null)
REPLY_ENABLED=$(jq -r '.notifications.reply.enabled // false' "$CONFIG_FILE" 2>/dev/null)
echo "NOTIF_ENABLED=$NOTIF_ENABLED"
echo "DISCORD_ENABLED=$DISCORD_ENABLED"
echo "DISCORD_BOT_ENABLED=$DISCORD_BOT_ENABLED"
echo "TELEGRAM_ENABLED=$TELEGRAM_ENABLED"
echo "SLACK_ENABLED=$SLACK_ENABLED"
echo "OPENCLAW_ENABLED=$OPENCLAW_ENABLED"
echo "VERBOSITY=$VERBOSITY"
echo "COOLDOWN=$COOLDOWN"
echo "REPLY_ENABLED=$REPLY_ENABLED"
else
echo "NO_CONFIG_FILE"
fi
Display a summary of what's configured:
OMX Notification Status
───────────────────────
Discord webhook: enabled / not configured
Discord bot: enabled / not configured
Telegram: enabled / not configured
Slack: enabled / not configured
OpenClaw: enabled / not configured
Verbosity: session (default)
Idle cooldown: 60s
Reply listener: disabled
Then use AskUserQuestion:
Question: "What would you like to configure?"
Options:
notifications.openclaw.gateways + hooks) with /hooks/agent delivery verificationBased on the user's choice, invoke the appropriate platform skill:
/configure-discord/configure-telegram/configure-slack/configure-openclawWhen delegating, say: "Starting the [Platform] configuration wizard..." and invoke the skill.
If the user chose "Cross-cutting settings":
Use AskUserQuestion:
Question: "How verbose should notifications be?"
Options:
Write verbosity to config:
echo "$(cat "$CONFIG_FILE")" | jq \
--arg verbosity "$VERBOSITY" \
'.notifications.verbosity = $verbosity' > "$CONFIG_FILE"
Env var alternative: OMX_NOTIFY_VERBOSITY=session
Use AskUserQuestion:
Question: "How often should idle notifications fire at most? (in seconds)"
Options:
Write the cooldown to config:
echo "$(cat "$CONFIG_FILE")" | jq \
--argjson cooldown "$COOLDOWN_SECONDS" \
'.notifications.idleCooldownSeconds = $cooldown' > "$CONFIG_FILE"
Env var alternative: OMX_IDLE_COOLDOWN_SECONDS=60
Explain that profiles let the user have different notification configs per context:
Notification Profiles
─────────────────────
Profiles let you switch notification targets based on context.
For example: a "work" profile for your work Slack, a "personal"
profile for your personal Telegram.
Activate a profile with: OMX_NOTIFY_PROFILE=work
or set a default: .omx-config.json > notifications.defaultProfile
Use AskUserQuestion:
Question: "Would you like to configure notification profiles?"
Options:
If yes, guide the user to manually add profiles under notifications.profiles in .omx-config.json, and set defaultProfile.
Explain the reply listener:
Reply Listener
──────────────
The reply listener lets you send messages back to Codex from
Discord (bot) or Telegram. When OMX asks for input, you can
reply directly from your phone or messaging app.
Requires:
- Discord Bot or Telegram platform configured
- OMX_REPLY_ENABLED=true in your shell profile
- For Discord: OMX_REPLY_DISCORD_USER_IDS=<your user ID>
(only messages from these IDs are accepted for security)
Use AskUserQuestion:
Question: "Would you like to enable the reply listener?"
Options:
If yes, write to config:
echo "$(cat "$CONFIG_FILE")" | jq \
'.notifications.reply = (.notifications.reply // {}) |
.notifications.reply.enabled = true' > "$CONFIG_FILE"
And remind them to set OMX_REPLY_ENABLED=true and (for Discord) OMX_REPLY_DISCORD_USER_IDS.
If the user chose "Disable all notifications":
Use AskUserQuestion:
Question: "Are you sure you want to disable all notifications?"
Options:
If confirmed:
echo "$(cat "$CONFIG_FILE")" | jq \
'.notifications.enabled = false' > "$CONFIG_FILE"
Confirm: "Notifications disabled. Re-enable anytime by running /configure-notifications."
After completing any platform or setting configuration, offer to configure another:
Use AskUserQuestion:
Question: "Would you like to configure another platform or setting?"
Options:
Display a summary of all active notification platforms:
OMX Notification Configuration Complete!
─────────────────────────────────────────
Active platforms:
Discord webhook: enabled
Telegram: enabled
Verbosity: session
Idle cooldown: 60s
Reply listener: disabled
Config saved to: ~/.codex/.omx-config.json
Quick reference — env vars:
OMX_DISCORD_WEBHOOK_URL=...
OMX_TELEGRAM_BOT_TOKEN=...
OMX_TELEGRAM_CHAT_ID=...
OMX_SLACK_WEBHOOK_URL=...
OMX_NOTIFY_VERBOSITY=session
OMX_IDLE_COOLDOWN_SECONDS=60
OMX_OPENCLAW=1
Run /configure-notifications again to update any settings.
development
Design principles for building polished, native-feeling SwiftUI apps and widgets. Use this skill when creating or modifying SwiftUI views, iOS widgets (WidgetKit), or any native Apple UI. Ensures proper spacing, typography, colors, and widget implementations that look and feel like quality apps rather than AI-generated slop.
data-ai
Design and implement SwiftUI views, components, and app architecture. Use when creating new SwiftUI views, implementing MVVM/TCA patterns, managing state with @Observable, @State, @Binding, or @Environment, designing navigation flows, or structuring iOS app architecture. Triggers on SwiftUI, view model, state management, navigation, coordinator pattern.
development
Implement, review, or improve SwiftUI animations and transitions. Use when adding implicit or explicit animations with withAnimation, configuring spring animations (.smooth, .snappy, .bouncy), building phase or keyframe animations with PhaseAnimator/KeyframeAnimator, creating hero transitions with matchedGeometryEffect or matchedTransitionSource, adding SF Symbol effects (bounce, pulse, variableColor, breathe, rotate, wiggle), implementing custom Transition or CustomAnimation types, or ensuring animations respect accessibilityReduceMotion.
testing
Audit SwiftUI views for accessibility (iOS + macOS) with patch-ready fixes