Promote the four real-usage QA channels (HTTP call, tmux, Browser use, Computer use) into a dedicated top-level `# Manual-QA channels` section in both the Codex ultrawork directive and the ultragoal skill. Each channel ships with the concrete invocation (`curl -i`, `tmux new-session` + `send-keys` + `capture-pane`, Playwright / puppeteer / Chromium, OS-level GUI automation) and the artifact to capture. The Goal section now declares `TESTS ALONE NEVER PROVE DONE` and requires every criterion to build a fresh real-usage scenario and run it through one of the four channels every time. Auxiliary surfaces (CLI stdout / DB diff / parsed config dump) are explicitly demoted: they only satisfy genuinely CLI- or data-shaped criteria, never user-facing behavior. Bootstrap criterion item 2 and execution step 4 used to repeat the same surface enumeration; they now collapse onto the new channel table (single source of truth, less drift). EXECUTE-AS-SCENARIO in the ultragoal skill follows the same compression. The previous CLEANUP (paired teardown + receipt) + leftover-state stop rule from the prior commit are preserved. Regression tests in `components/ultrawork/hooks/ultrawork-hooks.test.mjs` pin: the `# Manual-QA channels` heading, all four channel labels (`HTTP call`, `tmux`, `Browser use`, `Computer use`), `TESTS ALONE NEVER PROVE DONE`, `every criterion needs its own real-usage scenario`, and `every time`. README + CHANGELOGs document the restructure and the new size (11,005 chars / 232 lines). All 11 ultrawork hook tests + 7 aggregate tests pass. Installed locally via `runCodexInstaller` into `~/.codex/plugins/cache/code-yeongyu-codex-plugins/omo/0.1.0/`; cache hooks emit the new directive end-to-end and the identifier-like `ulw_helper.ts` keyword-boundary check still suppresses.
@oh-my-opencode/omo-codex
Codex harness adapter for oh-my-openagent. Brings the OMO experience (rules injection, comment checker, LSP MCP, ultrawork, ultragoal) into OpenAI Codex CLI through Codex's native plugin system.
Layout
| Path | Purpose |
|---|---|
plugin/ |
Vendored Codex plugin namespace omo with 5 components. Shipped to the user via ~/.codex/plugins/cache/. |
marketplace.json |
Codex marketplace manifest. Identifies omo as the single installable plugin. |
scripts/ |
Node ESM build scripts (port of the original codex-plugins/scripts/install-local.mjs). |
src/ |
TypeScript runtime: installer + telemetry consumed by the omodex CLI. |
MARKETPLACE.md |
Vendored upstream marketplace README. |
Components Vendored
rules(TypeScript) - injectsAGENTS.md/CLAUDE.md/.omo/rules/**into context viaSessionStart,UserPromptSubmit,PostToolUse,PostCompact.comment-checker(TypeScript) - runs@code-yeongyu/comment-checkerafterapply_patch/edit/writetool use.lsp(TypeScript + LSP MCP) - exposes LSP diagnostics, navigation, symbols, rename via MCP + post-edit hooks.ultrawork(Python) - keyword detector (ulw/ultrawork) that injects the full ultrawork directive, plus aSessionStarthook that syncs bundled agent TOML files intoCODEX_HOME/agents.ultragoal(TypeScript) - durable multi-goal orchestration backed by.omo/ultragoal/evidence audit.
Install
End users invoke through the omodex CLI:
bunx omo install --codex=yes
# or, equivalently:
bunx oh-my-opencode install --codex=yes
bunx oh-my-openagent install --codex=yes
The installer copies the built plugin into ~/.codex/plugins/cache/code-yeongyu-codex-plugins/omo/<version>/, enables it in ~/.codex/config.toml, and links the per-component binaries into ~/.local/bin/ (or CODEX_LOCAL_BIN_DIR).
Telemetry
Anonymous telemetry uses the same PostHog project as oh-my-openagent but emits the distinct event omo_codex_daily_active. The event is sent at most once per UTC day per machine from two sources:
| Source | Reason | Trigger |
|---|---|---|
install |
install_completed |
bunx omo install --codex=yes finishes (handled by src/cli/install-codex/install-codex.ts) |
plugin |
session_start |
Codex plugin SessionStart hook fires (handled by plugin/components/telemetry/) |
Both sources share the same SHA256-hashed installation identifier (sha256("omo-codex:" + hostname)), suppress PostHog person profiles, and write the daily dedup state to ~/.local/share/omo-codex/posthog-activity.json.
Opt out with:
# Codex-only
export OMO_CODEX_DISABLE_POSTHOG=1
export OMO_CODEX_SEND_ANONYMOUS_TELEMETRY=0
# Globally (also disables oh-my-openagent telemetry)
export OMO_DISABLE_POSTHOG=1
export OMO_SEND_ANONYMOUS_TELEMETRY=0
The identity constants and opt-out behavior are pinned across both sources by src/telemetry/cross-package-equivalence.test.ts.
See /Users/yeongyu/local-workspaces/omodex/docs/legal/privacy-policy.md for the full disclosure.
Provenance
Vendored from code-yeongyu/codex-plugins at the snapshot present in /Users/yeongyu/local-workspaces/codex-plugins/ on 2026-05-25. Per-component upstream: