بنقرة واحدة
configure-notifications
Configure OMQ notifications - unified entry point for all platforms
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Configure OMQ notifications - unified entry point for all platforms
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Diagnose and fix oh-my-qwencode installation issues
Guide on using oh-my-qwencode plugin
Run deep investigation of architecture, bugs, performance issues, or dependencies and return structured findings with file:line evidence. Use when a user says 'analyze', 'investigate', 'why does', 'what's causing', or needs root cause analysis before making changes. Routes to architect agent or Qwen Code MCP for thorough cross-file reasoning.
Ask Claude via local CLI and capture a reusable artifact
Ask Gemini via local CLI and capture a reusable artifact
Full autonomous execution from idea to working code
| name | configure-notifications |
| description | Configure OMQ 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/.qwen/.omq-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:-OMQ 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:-OMQ 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
OMQ_OPENCLAW=1. For command gateways, also requireOMQ_OPENCLAW_COMMAND=1. Optional timeout env override:OMQ_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 > OMQ_OPENCLAW_COMMAND_TIMEOUT_MS > 5000.gateways.<name>.timeout to 120000 (recommended).session={{sessionId}} and tmux={{tmuxSession}} in hook text for traceability.SOUL.md and continue in #omc-dev.|| true to prevent OMQ hook failures from blocking the session..jsonl extension and append (>>) for structured log aggregation.--reply-to 'channel:CHANNEL_ID' for reliability (preferred over channel aliases).Example (targeting #omc-dev with production-tested settings):
jq \
--arg command "(clawdbot agent --session-id omq-hooks --message {{instruction}} --thinking minimal --deliver --reply-channel discord --reply-to 'channel:1468539002985644084' --timeout 120 --json >>/tmp/omq-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: "OMQ hook=session-start project={{projectName}} session={{sessionId}} tmux={{tmuxSession}}. 한국어로 상태를 공유하고 SOUL.md를 참고해 필요한 후속 조치를 #omc-dev에 안내하세요."
} |
.notifications.openclaw.hooks["session-idle"] = {
enabled: true,
gateway: "local",
instruction: "OMQ hook=session-idle project={{projectName}} session={{sessionId}} tmux={{tmuxSession}}. 한국어로 idle 상황을 간단히 공유하고 진행중인 작업 팔로업을 안내하세요."
} |
.notifications.openclaw.hooks["ask-user-question"] = {
enabled: true,
gateway: "local",
instruction: "OMQ hook=ask-user-question session={{sessionId}} tmux={{tmuxSession}} question={{question}}. 한국어로 사용자 응답 필요를 #omc-dev에 알리고 즉시 액션 아이템을 제시하세요."
} |
.notifications.openclaw.hooks["stop"] = {
enabled: true,
gateway: "local",
instruction: "OMQ hook=session-stop project={{projectName}} session={{sessionId}} tmux={{tmuxSession}}. 한국어로 중단 상태와 정리 액션을 SOUL.md 기준으로 전달하세요."
} |
.notifications.openclaw.hooks["session-end"] = {
enabled: true,
gateway: "local",
instruction: "OMQ 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 omq-hooks --message "OMQ hook test via clawdbot agent path" \
--thinking minimal --deliver --reply-channel discord --reply-to 'channel:1468539002985644084' --timeout 120 --json
Dev runbook (Korean + tmux follow-up):
# 1) identify active OMQ tmux sessions
tmux list-sessions -F '#{session_name}' | rg '^omq-' || 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/omq-openclaw-agent.jsonl | jq -s '.[] | {timestamp: (.timestamp // .time), status: (.status // .error // "ok")}'
# 4) check for recent errors in logs
rg '"error"|"failed"|"timeout"' /tmp/omq-openclaw-agent.jsonl | tail -20
OMQ 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.enabledOMQ_REPLY_ENABLED=true, and for Discord OMQ_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)~/.qwen/.omq-config.json)