Skip documentation navigation

Host features

omp

omp (oh-my-pi) installs the plugin from the Claude Code marketplace catalog, .claude-plugin/marketplace.json. It does not run hooks/hooks.json. It loads JavaScript extensions instead, so package.json in the plugin root lists omp/extension.mjs under omp.extensions. A marketplace install links the cached plugin into omp’s plugins/node_modules and loads that entry. The extension builds the hook input that Claude Code would send and runs the same hook scripts with node.

omp featureUsed for
tool_call with { block, reason }Denials from check-edit, check-bash, and the ask mode
tool_call returning inputThe test-output filter’s command rewrite
tool_call returning additionalContextFlags and notices for the model
before_agent_start returning messageThe rules from session-context, as SessionStart, SubagentStart, or UserPromptSubmit
session_stop with { decision: "block", reason }Reply checks. The event carries last_assistant_message, session_id, and stop_hook_active
session_shutdownsession-end, with a 1.5 s limit inside omp’s 2 s budget
ctx.ui.confirm and ctx.ui.notifyask prompts and terminal notices when a UI is attached

Tool names and inputs differ from Claude Code. write sends { path, content }. edit input depends on the edit mode: hashline (the default) sends [path#TAG] sections with + body rows, apply_patch sends a Codex patch, replace sends old_string and new_string, patch sends edits[].diff, and sloppy sends *** Edit File: sections. omp/translate.mjs turns each mode into the added lines that check-edit reads.

A live run with omp 18.7.0 on 2026-10-07 confirmed these shapes. In that run, a hashline edit and a write were denied, the test filter’s rewritten command ran in omp’s shell, the rules reached the model, and a reply with an em dash was held and rewritten.

omp’s Claude marketplace loader, src/discovery/claude-plugins.ts, substitutes ${CLAUDE_PLUGIN_ROOT} in MCP args and loads skills/. The omp docs do not mention CLAUDE_PROJECT_DIR, so pass cwd to the project tools as in Codex.

Gaps: omp has no subagent stop event, so subagent replies are not checked. The extension does not check MCP tool calls, and it does not scan files that a shell command changes. omp blocks a tool call whose handler throws or runs past 30 s, so the extension catches every hook failure and allows the call. omp loads extensions at session start: start a new session after an install or update.