ワンクリックで
configure-notifications
Configure OMX notifications - unified entry point for all platforms
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Configure OMX notifications - unified entry point for all platforms
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Use for reliable web-browser agents, semantic page inspection, Playwright automation, accessibility-tree navigation, structured browser actions, post-action validation, replay, and visual fallbacks for canvas or highly visual interfaces.
Apply frontend UX quality gates for SaaS dashboards, product screens, modals, tables, forms, responsive layouts, overflow fixes, accessibility, visual validation, spelling, and reduction of UI rework.
Use for professional SaaS UI implementation and refinement in React, TypeScript, Tailwind, dashboards, admin panels, tables, forms, settings, billing, onboarding, responsive layouts, component states, and design-system consistency.
Apply open-design product UI workflow for premium visual redesigns, dashboards, landing pages, design tokens, component libraries, responsive product screens, visual QA, anti-generic styling, and professional frontend delivery.
Optimizes images for blogs and websites, including format conversion, resizing, compression, responsive delivery, accessibility, and visual validation. Use when asked to optimize, reduce, prepare, convert, or improve images for the web.
LGPD-focused privacy and data-governance skill for Brazilian software products. Use for data mapping, legal basis selection, consent, privacy notices, RIPD, rights requests, retention, vendor risk, incident response, and international transfer review.
| name | configure-notifications |
| description | Configure OMX notifications - unified entry point for all platforms |
| triggers | ["configure notifications","setup notifications","notification settings","configure discord","configure telegram","configure slack","configure openclaw","setup discord","setup telegram","setup slack","setup openclaw","discord notifications","telegram notifications","slack notifications","openclaw notifications","discord webhook","telegram bot","slack webhook"] |
Unified and only entry point for notification setup.
custom_webhook_command, custom_cli_commandStandalone configure skills (
configure-discord,configure-telegram,configure-slack,configure-openclaw) are removed.
CONFIG_FILE="$HOME/.codex/.omx-config.json"
if [ -f "$CONFIG_FILE" ]; then
jq -r '
{
notifications_enabled: (.notifications.enabled // false),
discord: (.notifications.discord.enabled // false),
discord_bot: (.notifications["discord-bot"].enabled // false),
telegram: (.notifications.telegram.enabled // false),
slack: (.notifications.slack.enabled // false),
openclaw: (.notifications.openclaw.enabled // false),
custom_webhook_command: (.notifications.custom_webhook_command.enabled // false),
custom_cli_command: (.notifications.custom_cli_command.enabled // false),
verbosity: (.notifications.verbosity // "session"),
idleCooldownSeconds: (.notifications.idleCooldownSeconds // 60),
reply_enabled: (.notifications.reply.enabled // false)
}
' "$CONFIG_FILE"
else
echo "NO_CONFIG_FILE"
fi
Use AskUserQuestion:
Question: "What would you like to configure?"
Options:
custom_webhook_commandcustom_cli_commandnotifications.enabled = falseCollect and validate platform-specific values, then write directly under native keys:
notifications.discordnotifications["discord-bot"]notifications.telegramnotifications.slackDo not write these as generic command/webhook aliases.
custom_webhook_commandUse AskUserQuestion to collect:
POST default, or PUT)session-end, ask-user-question, session-start, session-idle, stop)Write:
jq \
--arg url "$URL" \
--arg method "${METHOD:-POST}" \
--arg instruction "${INSTRUCTION:-OMX event {{event}} for {{projectPath}}}" \
'.notifications = (.notifications // {enabled: true}) |
.notifications.enabled = true |
.notifications.custom_webhook_command = {
enabled: true,
url: $url,
method: $method,
instruction: $instruction,
events: ["session-end", "ask-user-question"]
}' "$CONFIG_FILE" > "$CONFIG_FILE.tmp" && mv "$CONFIG_FILE.tmp" "$CONFIG_FILE"
custom_cli_commandUse AskUserQuestion to collect:
{{event}}, {{instruction}}, {{sessionId}}, {{projectPath}})Write:
jq \
--arg command "$COMMAND_TEMPLATE" \
--arg instruction "${INSTRUCTION:-OMX event {{event}} for {{projectPath}}}" \
'.notifications = (.notifications // {enabled: true}) |
.notifications.enabled = true |
.notifications.custom_cli_command = {
enabled: true,
command: $command,
instruction: $instruction,
events: ["session-end", "ask-user-question"]
}' "$CONFIG_FILE" > "$CONFIG_FILE.tmp" && mv "$CONFIG_FILE.tmp" "$CONFIG_FILE"
Activation gate: OpenClaw-backed dispatch is active only when
OMX_OPENCLAW=1. For command gateways, also requireOMX_OPENCLAW_COMMAND=1. Optional timeout env override:OMX_OPENCLAW_COMMAND_TIMEOUT_MS(ms).
If the user explicitly asks to route hook notifications through clawdbot agent turns
(not direct message/webhook forwarding), use a command gateway that invokes
clawdbot agent and delivers back to Discord.
Notes:
session-stop -> OpenClaw hook stop.{{instruction}}).instruction templates concise and avoid untrusted shell metacharacters.gateways.<name>.timeout > OMX_OPENCLAW_COMMAND_TIMEOUT_MS > 5000.gateways.<name>.timeout to 120000 (recommended).session={{sessionId}} and tmux={{tmuxSession}} in hook text for traceability.|| true to prevent OMX hook failures from blocking the session..jsonl extension and append (>>) for structured log aggregation.--reply-to 'channel:<DISCORD_CHANNEL_ID>' for reliability (preferred over channel aliases).Example (replace <DISCORD_CHANNEL_ID> and any project context filename before use):
jq \
--arg command "(clawdbot agent --session-id omx-hooks --message {{instruction}} --thinking minimal --deliver --reply-channel discord --reply-to 'channel:<DISCORD_CHANNEL_ID>' --timeout 120 --json >>/tmp/omx-openclaw-agent.jsonl 2>&1 || true)" \
'.notifications = (.notifications // {enabled: true}) |
.notifications.enabled = true |
.notifications.verbosity = "verbose" |
.notifications.events = (.notifications.events // {}) |
.notifications.events["session-start"] = {enabled: true} |
.notifications.events["session-idle"] = {enabled: true} |
.notifications.events["ask-user-question"] = {enabled: true} |
.notifications.events["session-stop"] = {enabled: true} |
.notifications.events["session-end"] = {enabled: true} |
.notifications.openclaw = (.notifications.openclaw // {}) |
.notifications.openclaw.enabled = true |
.notifications.openclaw.gateways = (.notifications.openclaw.gateways // {}) |
.notifications.openclaw.gateways["local"] = {
type: "command",
command: $command,
timeout: 120000
} |
.notifications.openclaw.hooks = (.notifications.openclaw.hooks // {}) |
.notifications.openclaw.hooks["session-start"] = {
enabled: true,
gateway: "local",
instruction: "OMX hook=session-start project={{projectName}} session={{sessionId}} tmux={{tmuxSession}}. 한국어로 상태를 공유하고 로컬 프로젝트 컨텍스트를 참고해 필요한 후속 조치를 설정된 Discord 채널에 안내하세요."
} |
.notifications.openclaw.hooks["session-idle"] = {
enabled: true,
gateway: "local",
instruction: "OMX hook=session-idle project={{projectName}} session={{sessionId}} tmux={{tmuxSession}}. 한국어로 idle 상황을 간단히 공유하고 진행중인 작업 팔로업을 안내하세요."
} |
.notifications.openclaw.hooks["ask-user-question"] = {
enabled: true,
gateway: "local",
instruction: "OMX hook=ask-user-question session={{sessionId}} tmux={{tmuxSession}} question={{question}}. 한국어로 사용자 응답 필요를 설정된 Discord 채널에 알리고 즉시 액션 아이템을 제시하세요."
} |
.notifications.openclaw.hooks["stop"] = {
enabled: true,
gateway: "local",
instruction: "OMX hook=session-stop project={{projectName}} session={{sessionId}} tmux={{tmuxSession}}. 한국어로 중단 상태와 정리 액션을 로컬 프로젝트 컨텍스트 기준으로 전달하세요."
} |
.notifications.openclaw.hooks["session-end"] = {
enabled: true,
gateway: "local",
instruction: "OMX hook=session-end project={{projectName}} session={{sessionId}} tmux={{tmuxSession}} reason={{reason}}. 한국어로 완료 요약을 1줄로 남기고 필요한 후속 조치를 안내하세요."
}' "$CONFIG_FILE" > "$CONFIG_FILE.tmp" && mv "$CONFIG_FILE.tmp" "$CONFIG_FILE"
Verification for this mode:
clawdbot agent --session-id omx-hooks --message "OMX hook test via clawdbot agent path" \
--thinking minimal --deliver --reply-channel discord --reply-to 'channel:<DISCORD_CHANNEL_ID>' --timeout 120 --json
Dev runbook (Korean + tmux follow-up):
# 1) identify active OMX tmux sessions
tmux list-sessions -F '#{session_name}' | rg '^omx-' || true
# 2) confirm hook templates include session/tmux context
jq '.notifications.openclaw.hooks' "$CONFIG_FILE"
# 3) inspect agent JSONL logs when delivery looks broken
tail -n 120 /tmp/omx-openclaw-agent.jsonl | jq -s '.[] | {timestamp: (.timestamp // .time), status: (.status // .error // "ok")}'
# 4) check for recent errors in logs
rg '"error"|"failed"|"timeout"' /tmp/omx-openclaw-agent.jsonl | tail -20
OMX accepts both:
notifications.openclaw schema (legacy/runtime shape)custom_webhook_command, custom_cli_command)Deterministic precedence:
notifications.openclaw wins when present and valid.notifications.idleCooldownSecondsnotifications.profilesnotifications.defaultProfilenotifications.reply.enabledOMX_REPLY_ENABLED=true, and for Discord OMX_REPLY_DISCORD_USER_IDS=...jq '.notifications.enabled = false' "$CONFIG_FILE" > "$CONFIG_FILE.tmp" && mv "$CONFIG_FILE.tmp" "$CONFIG_FILE"
After writing config, run a smoke check:
npm run build
For OpenClaw-like HTTP integrations, verify both:
/hooks/wake smoke test/hooks/agent delivery verificationShow:
custom_webhook_command, custom_cli_command)notifications.openclaw exists (and therefore overrides aliases)~/.codex/.omx-config.json)