configure-notifications
Skill5 starsChanged 13 days agoMITView on GitHub
Configure OMX notifications - unified entry point for all platforms
5 other projects use a version of this, 1 of them edited.
Adopted by
Most recently taken up by
- Yeachan-Heo/oh-my-claudecodetheir own version, first seen Nov 8, 2026
- Gopyr/gopyr-skills-hubtheir own version, first seen Oct 11, 2026
- Yeachan-Heo/oh-my-claude-sisyphustheir own version, first seen Oct 8, 2026
- Yeachan-Heo/oh-my-codexedited, first seen Oct 8, 2026
- Jurel89/copilot-omnitheir own version, first seen Apr 17, 2026
Other versions5 projects use a version of this.
Word for word · 0
None found.
Edited · 1
- Yeachan-Heo/oh-my-codex★ 34k43% same
Wrote their own version · 4
- Yeachan-Heo/oh-my-claude-sisyphus★ 41ksame name
- Yeachan-Heo/oh-my-claudecode★ 41ksame name
- Gopyr/gopyr-skills-hub★ 0same name
- Jurel89/copilot-omni★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository119 other files it gives its agents.
- AGENTS.mdAGENTS.md
- templates/AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- accessibilitySkill
- frontend-designSkill
- python-background-jobsSkill
- python-executorSkill
- python-testing-patternsSkill
- seoSkill
- ai-slop-cleanerSkill
- analyzeSkill
- api-and-interface-designSkill
- ask-claudeSkill
- ask-geminiSkill
- autopilotSkill
- browser-testing-with-devtoolsSkill
- build-fixSkill
- cancelSkill
- ci-cd-and-automationSkill
- clawd-change-workflowSkill
- code-review-and-qualitySkill
- code-reviewSkill
- code-simplificationSkill
- context-engineeringSkill
- debugging-and-error-recoverySkill
- deep-interviewSkill
- deepsearchSkill
- deprecation-and-migrationSkill
- doctorSkill
- documentation-and-adrsSkill
- ecomodeSkill
- frontend-ui-engineeringSkill
- frontend-ui-uxSkill
- git-masterSkill
- git-workflow-and-versioningSkill
- helpSkill
- hudSkill
- idea-refineSkill
- incremental-implementationSkill
- intent_routerSkill
- keyword_registrySkill
- mode_stateSkill
- noteSkill
- omx-setupSkill
- performance-optimizationSkill
- pipeline_orchestratorSkill
- pipelineSkill
- planning-and-task-breakdownSkill
- planSkill
- ralph-initSkill
- ralph_loopSkill
- ralphSkill
- ralplanSkill
- android-reverse-engineeringSkill
- api-securitySkill
- apk-reverseSkill
- attack-chainSkill
- binary-diffSkill
- browser-automationSkill
- browser-extension-reverseSkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
8 rules. 0 are common, 3 are distinctive, and 5 are very specific to this project.
0
Common
Most of the 3 edited versions we read keep these.
3
Distinctive
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 95
Do not write these as generic command/webhook aliases.
- Distinctive: line 101
Use AskUserQuestion to collect:
- Very specific: line 155
If the user explicitly asks to route hook notifications through clawdbot agent turns (not direct message/webhook forwarding), use a command …
- Very specific: line 162
Keep instruction templates concise and avoid untrusted shell metacharacters.
- Very specific: line 168
If follow-up is needed, explicitly instruct clawdbot to consult SOUL.md and continue in #omc-dev.
- Very specific: line 170
JSONL logging: Use .jsonl extension and append (>>) for structured log aggregation.
- Very specific: line 171
Reply target format: Use --reply-to 'channel:CHANNEL_ID' for reliability (preferred over channel aliases).
- Distinctive: line 280
After writing config, run a smoke check:
“Common” is measured: kept by at least 6 in 10 of the 3 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
clawd 路径适配(重要):本技能移植自 oh-my-codex,文中所有
~/.codex/...、.codex/skills/、CODEX_HOME都是 Codex 时代的路径。在 clawd 里真实生效的是:
- 技能位置:
<项目>/skills/<name>/SKILL.md(支持分组子目录,如skills/reverse/<sub>/SKILL.md,发现逻辑是递归的)- 运行期数据/配置:
<项目>/.clawd/(sessions/、logs/、features.json等)- 查当前实际发现到的技能:
clawd hud或直接调skill工具;诊断环境用clawd doctor只有当你确实在 Codex 里运行本技能时,
~/.codex/...那套路径才成立。 在 clawd 里照着~/.codex/...找文件只会得到"不存在"。
Configure OMX Notifications
Unified and only entry point for notification setup.
- Native integrations (first-class): Discord, Telegram, Slack
- Generic extensibility integrations:
custom_webhook_command,custom_cli_command
Standalone configure skills (
configure-discord,configure-telegram,configure-slack,configure-openclaw) are removed.
Step 1: Inspect Current State
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"
fiStep 2: Main Menu
Use AskUserQuestion:
Question: "What would you like to configure?"
Options:
- Discord (native) - webhook or bot
- Telegram (native) - bot token + chat id
- Slack (native) - incoming webhook
- Generic webhook command -
custom_webhook_command - Generic CLI command -
custom_cli_command - Cross-cutting settings - verbosity, idle cooldown, profiles, reply listener
- Disable all notifications - set
notifications.enabled = false
Step 3: Configure Native Platforms (Discord / Telegram / Slack)
Collect and validate platform-specific values, then write directly under native keys:
- Discord webhook:
notifications.discord - Discord bot:
notifications["discord-bot"] - Telegram:
notifications.telegram - Slack:
notifications.slack
Do not write these as generic command/webhook aliases.
Step 4: Configure Generic Extensibility
4a) custom_webhook_command
Use AskUserQuestion to collect:
- URL
- Optional headers
- Optional method (
POSTdefault, orPUT) - Optional event list (
session-end,ask-user-question,session-start,session-idle,stop) - Optional instruction template
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"4b) custom_cli_command
Use AskUserQuestion to collect:
- Command template (supports
{{event}},{{instruction}},{{sessionId}},{{projectPath}}) - Optional event list
- Optional instruction template
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).
4b-1) OpenClaw + Clawdbot Agent Workflow (recommended for dev)
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:
- Hook name mapping is intentional: notifications
session-stop-> OpenClaw hookstop. - OMX shell-escapes template substitutions for command gateways (including
{{instruction}}). - Keep
instructiontemplates concise and avoid untrusted shell metacharacters. - During troubleshooting, avoid swallowing command output; route it to a log file.
- Timeout precedence:
gateways.<name>.timeout>OMX_OPENCLAW_COMMAND_TIMEOUT_MS>5000. - For clawdbot agent workflows, set
gateways.<name>.timeoutto120000(recommended). - For dev operations, enforce Korean output in all hook instructions.
- Include both
session={{sessionId}}andtmux={{tmuxSession}}in hook text for traceability. - If follow-up is needed, explicitly instruct clawdbot to consult
SOUL.mdand continue in#omc-dev. - Error handling: Append
|| trueto prevent OMX hook failures from blocking the session. - JSONL logging: Use
.jsonlextension and append (>>) for structured log aggregation. - Reply target format: Use
--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 omx-hooks --message {{instruction}} --thinking minimal --deliver --reply-channel discord --reply-to 'channel:1468539002985644084' --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}}. 한국어로 상태를 공유하고 SOUL.md를 참고해 필요한 후속 조치를 #omc-dev에 안내하세요."
} |
.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}}. 한국어로 사용자 응답 필요를 #omc-dev에 알리고 즉시 액션 아이템을 제시하세요."
} |
.notifications.openclaw.hooks["stop"] = {
enabled: true,
gateway: "local",
instruction: "OMX hook=session-stop project={{projectName}} session={{sessionId}} tmux={{tmuxSession}}. 한국어로 중단 상태와 정리 액션을 SOUL.md 기준으로 전달하세요."
} |
.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:1468539002985644084' --timeout 120 --jsonDev 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 -204c) Compatibility + precedence contract
OMX accepts both:
- explicit
notifications.openclawschema (legacy/runtime shape) - generic aliases (
custom_webhook_command,custom_cli_command)
Deterministic precedence:
notifications.openclawwins when present and valid.- Generic aliases are ignored in that case (with warning).
Step 5: Cross-Cutting Settings
Verbosity
- minimal / session (recommended) / agent / verbose
Idle cooldown
notifications.idleCooldownSeconds
Profiles
notifications.profilesnotifications.defaultProfile
Reply listener
notifications.reply.enabled- env gates:
OMX_REPLY_ENABLED=true, and for DiscordOMX_REPLY_DISCORD_USER_IDS=...
Step 6: Disable All Notifications
jq '.notifications.enabled = false' "$CONFIG_FILE" > "$CONFIG_FILE.tmp" && mv "$CONFIG_FILE.tmp" "$CONFIG_FILE"Step 7: Verification Guidance
After writing config, run a smoke check:
npm run buildFor OpenClaw-like HTTP integrations, verify both:
/hooks/wakesmoke test/hooks/agentdelivery verification
Final Summary Template
Show:
- Native platforms enabled
- Generic aliases enabled (
custom_webhook_command,custom_cli_command) - Whether explicit
notifications.openclawexists (and therefore overrides aliases) - Verbosity + idle cooldown + reply listener state
- Config path (
~/.codex/.omx-config.json)
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

