<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Oh-My-Codex on KnightLi Blog</title>
        <link>https://knightli.com/en/tags/oh-my-codex/</link>
        <description>Recent content in Oh-My-Codex on KnightLi Blog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <lastBuildDate>Mon, 25 May 2026 07:41:45 +0800</lastBuildDate><atom:link href="https://knightli.com/en/tags/oh-my-codex/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>oh-my-codex: Adding Workflows, Skills, and Runtime Guardrails to Codex CLI</title>
        <link>https://knightli.com/en/2026/05/25/oh-my-codex-codex-cli-workflow-layer/</link>
        <pubDate>Mon, 25 May 2026 07:41:45 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/05/25/oh-my-codex-codex-cli-workflow-layer/</guid>
        <description>&lt;p&gt;&lt;code&gt;Yeachan-Heo/oh-my-codex&lt;/code&gt;, or OMX, is a workflow layer around OpenAI Codex CLI.&lt;/p&gt;
&lt;p&gt;Project: &lt;a class=&#34;link&#34; href=&#34;https://github.com/Yeachan-Heo/oh-my-codex&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/Yeachan-Heo/oh-my-codex&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It is not trying to build yet another coding agent. Its goal is to give people who already use Codex CLI a steadier daily workflow: start sessions with project guidance, clarify before planning when tasks get complex, keep durable goals and state during execution, and use review plus QA to hold the result together at the end.&lt;/p&gt;
&lt;p&gt;At the time of writing, the GitHub page shows about 29.4k stars, and the latest release is &lt;code&gt;v0.18.1&lt;/code&gt;, published on May 21, 2026. The README also makes it clear that the official project is &lt;code&gt;Yeachan-Heo/oh-my-codex&lt;/code&gt;, and the official npm package is &lt;code&gt;oh-my-codex&lt;/code&gt;. Third-party projects using names such as “OMX v2” should not be treated as official continuations unless this repository says so.&lt;/p&gt;
&lt;h2 id=&#34;what-it-is&#34;&gt;What it is
&lt;/h2&gt;&lt;p&gt;OMX does not replace Codex.&lt;/p&gt;
&lt;p&gt;It keeps Codex CLI as the actual execution engine and mainly adds three things:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;A more consistent task workflow.&lt;/li&gt;
&lt;li&gt;Reusable prompts, skills, and specialist agents.&lt;/li&gt;
&lt;li&gt;Plans, logs, state, and runtime records under &lt;code&gt;.omx/&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;In other words, Codex does the work, while OMX makes that work look more like an engineering process. That is also the main difference between OMX and a normal prompt pack: it is not just a pile of rules inside a system prompt. It breaks clarification, planning, execution, checking, team coordination, and runtime diagnostics into callable surfaces.&lt;/p&gt;
&lt;h2 id=&#34;recommended-installation&#34;&gt;Recommended installation
&lt;/h2&gt;&lt;p&gt;The README and Getting Started docs both emphasize that the recommended default path is macOS or Linux with Codex CLI. Native Windows and Codex App are not the primary experience today and may behave inconsistently or receive less complete support.&lt;/p&gt;
&lt;p&gt;If Codex CLI is already installed, start with:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;codex --version
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install -g oh-my-codex
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;omx setup
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;omx doctor
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;If you do not have Codex CLI yet and want npm to manage it:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install -g @openai/codex
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install -g oh-my-codex
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;omx setup
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;omx doctor
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;One detail matters: do not combine &lt;code&gt;@openai/codex&lt;/code&gt; and &lt;code&gt;oh-my-codex&lt;/code&gt; into one global install command on a machine where Homebrew already owns the &lt;code&gt;codex&lt;/code&gt; binary. The README notes that npm may hit an &lt;code&gt;EEXIST&lt;/code&gt; conflict with a Homebrew-owned binary. OMX only needs a working, authenticated &lt;code&gt;codex&lt;/code&gt; command on &lt;code&gt;PATH&lt;/code&gt;; Codex does not have to be installed through npm.&lt;/p&gt;
&lt;p&gt;After installation, run a real execution smoke test:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;codex login status
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;omx &lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; --skip-git-repo-check -C . &lt;span class=&#34;s2&#34;&gt;&amp;#34;Reply with exactly OMX-EXEC-OK&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;omx doctor&lt;/code&gt; can show that the local install shape looks sane, but it cannot prove that the Codex account, proxy, base URL, and authentication path in the current shell/profile can actually make a model call. This distinction matters when you switch between different HOME directories, containers, remote environments, or local OpenAI-compatible proxies.&lt;/p&gt;
&lt;h2 id=&#34;default-workflow&#34;&gt;Default workflow
&lt;/h2&gt;&lt;p&gt;The main OMX workflow is roughly:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$deep-interview &amp;#34;clarify the authentication change&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ralplan &amp;#34;approve the auth plan and review tradeoffs&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$prometheus-strict &amp;#34;stress-test the plan before durable execution&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ultragoal &amp;#34;turn the approved plan into durable Codex goals&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;The most common path is three steps:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;$deep-interview&lt;/code&gt;: ask for boundaries, goals, and non-goals when the request is still unclear.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;$ralplan&lt;/code&gt;: turn the request into a plan, then confirm it through architectural and critical review.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;$ultragoal&lt;/code&gt;: turn the approved plan into more durable goals and checkpoints.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If a task needs parallel coordination, use &lt;code&gt;$team&lt;/code&gt; inside an Ultragoal story. If it only needs one persistent owner, use &lt;code&gt;$ralph&lt;/code&gt;. The naming can feel heavy at first, but the idea is simple: do not let an agent start changing files as soon as it hears a request. First write down what to do, how to do it, how to verify it, and when to stop.&lt;/p&gt;
&lt;h2 id=&#34;what-skills-and-agents-provide&#34;&gt;What skills and agents provide
&lt;/h2&gt;&lt;p&gt;OMX groups skills into several families.&lt;/p&gt;
&lt;p&gt;Canonical Workflow includes &lt;code&gt;$deep-interview&lt;/code&gt;, &lt;code&gt;$ralplan&lt;/code&gt;, &lt;code&gt;$prometheus-strict&lt;/code&gt;, &lt;code&gt;$ultragoal&lt;/code&gt;, &lt;code&gt;$code-review&lt;/code&gt;, and &lt;code&gt;$ultraqa&lt;/code&gt;. These are aimed at complete engineering tasks: clarify, plan, execute, review, and QA.&lt;/p&gt;
&lt;p&gt;Execution Modes include &lt;code&gt;$team&lt;/code&gt;, &lt;code&gt;$ralph&lt;/code&gt;, &lt;code&gt;$autopilot&lt;/code&gt;, &lt;code&gt;$ultrawork&lt;/code&gt;, and others. They decide whether a task moves through a single line, a team runtime, or a stronger autonomous loop.&lt;/p&gt;
&lt;p&gt;The Agent Catalog is more like a role library. It includes &lt;code&gt;analyst&lt;/code&gt;, &lt;code&gt;planner&lt;/code&gt;, &lt;code&gt;architect&lt;/code&gt;, &lt;code&gt;debugger&lt;/code&gt;, &lt;code&gt;executor&lt;/code&gt;, &lt;code&gt;verifier&lt;/code&gt;, &lt;code&gt;security-reviewer&lt;/code&gt;, &lt;code&gt;performance-reviewer&lt;/code&gt;, &lt;code&gt;code-reviewer&lt;/code&gt;, &lt;code&gt;test-engineer&lt;/code&gt;, &lt;code&gt;designer&lt;/code&gt;, &lt;code&gt;researcher&lt;/code&gt;, and more. You do not need to invoke these roles manually every day, but they show that OMX is not a “one big prompt” system. It decomposes engineering work into reusable roles and phases.&lt;/p&gt;
&lt;p&gt;That matters for long-running projects. Many AI coding failures do not happen because the model cannot write code at all. They happen because it moves into execution too quickly and skips requirement confirmation, architecture boundaries, test baselines, and final review. OMX tries to make those steps harder to skip.&lt;/p&gt;
&lt;h2 id=&#34;plugin-shape-and-runtime-state&#34;&gt;Plugin shape and runtime state
&lt;/h2&gt;&lt;p&gt;The README says the repository also includes an official Codex plugin layout at &lt;code&gt;plugins/oh-my-codex&lt;/code&gt;, with marketplace metadata.&lt;/p&gt;
&lt;p&gt;The docs are also clear that this plugin shape is not a replacement for &lt;code&gt;npm install -g oh-my-codex&lt;/code&gt; plus &lt;code&gt;omx setup&lt;/code&gt;. The plugin mainly packages hooks, the skill surface, and Codex lifecycle integration. At runtime, it still depends on the installed &lt;code&gt;omx&lt;/code&gt; CLI.&lt;/p&gt;
&lt;p&gt;The latest &lt;code&gt;v0.18.1&lt;/code&gt; release also focuses on this area: plugin installs now use a pinned OMX launcher, hook failures are safer, Ultragoal state mutations are serialized, release packaging excludes crate-local &lt;code&gt;.omx&lt;/code&gt; runtime caches, and npm, Cargo workspace, lockfiles, and the plugin manifest all share the same version.&lt;/p&gt;
&lt;p&gt;These changes show that OMX is no longer just a prompt repository. It is also dealing seriously with install shape, hook safety, state writes, release package contents, and runtime consistency. For developer tooling, these are not flashy details, but they matter a lot.&lt;/p&gt;
&lt;h2 id=&#34;who-it-fits&#34;&gt;Who it fits
&lt;/h2&gt;&lt;p&gt;OMX is best for developers who already use Codex CLI seriously, especially in situations like these:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You often ask Codex to handle multi-file, multi-step tasks.&lt;/li&gt;
&lt;li&gt;You want the agent to clarify requirements before editing code.&lt;/li&gt;
&lt;li&gt;You want planning, execution, checking, review, and QA to be separate stages.&lt;/li&gt;
&lt;li&gt;You want &lt;code&gt;.omx/&lt;/code&gt; state, plans, and logs in the project.&lt;/li&gt;
&lt;li&gt;You want to try tmux/team runtime or stronger long-task execution.&lt;/li&gt;
&lt;li&gt;Your team wants to turn its engineering habits into reusable skills and prompts.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you only ask Codex to change one line of config, generate a small script, or explain a code snippet, OMX may feel heavy. It is more like a tool belt for frequent AI coding users than a required first layer for beginners.&lt;/p&gt;
&lt;h2 id=&#34;things-to-watch&#34;&gt;Things to watch
&lt;/h2&gt;&lt;p&gt;First, do not treat OMX as a guarantee of unattended completion. It can strengthen the workflow, but it cannot decide for you whether a requirement is reasonable, whether an architecture should change, or whether a risk is acceptable.&lt;/p&gt;
&lt;p&gt;Second, pay attention to platform boundaries. The README currently recommends macOS/Linux plus Codex CLI. Native Windows exists, but it is not the default best experience. If you use Windows, WSL2 is usually the steadier path.&lt;/p&gt;
&lt;p&gt;Third, &lt;code&gt;omx doctor&lt;/code&gt; is not final validation. The stronger proof is a real model call such as &lt;code&gt;codex login status&lt;/code&gt; plus &lt;code&gt;omx exec&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Fourth, stronger workflow requires clearer task boundaries. &lt;code&gt;$ultragoal&lt;/code&gt;, &lt;code&gt;$team&lt;/code&gt;, and &lt;code&gt;$autopilot&lt;/code&gt; are best for tasks with concrete acceptance criteria. If the request is still vague, use &lt;code&gt;$deep-interview&lt;/code&gt; or a normal conversation first.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;The value of oh-my-codex is not that it turns Codex into a different tool. It adds a more engineering-oriented working layer to Codex CLI.&lt;/p&gt;
&lt;p&gt;It moves AI coding from “I say one thing, you make one pass” toward “clarify, plan, execute, check, and record state.” For lightweight tasks this may be too much. For people who use Codex on real projects often, stable workflows, reusable skills, runtime diagnostics, and durable goals can be exactly what saves effort.&lt;/p&gt;
&lt;p&gt;If Codex CLI is already part of your daily development setup, OMX is worth trying. Even if you do not install it directly, its breakdown of skills, agents, planning, and acceptance flow is useful material for improving your own AI coding workflow.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Yeachan-Heo/oh-my-codex: &lt;a class=&#34;link&#34; href=&#34;https://github.com/Yeachan-Heo/oh-my-codex&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/Yeachan-Heo/oh-my-codex&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Getting Started: &lt;a class=&#34;link&#34; href=&#34;https://github.com/Yeachan-Heo/oh-my-codex/blob/main/docs/getting-started.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/Yeachan-Heo/oh-my-codex/blob/main/docs/getting-started.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Agent Catalog: &lt;a class=&#34;link&#34; href=&#34;https://github.com/Yeachan-Heo/oh-my-codex/blob/main/docs/agents.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/Yeachan-Heo/oh-my-codex/blob/main/docs/agents.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Skills Reference: &lt;a class=&#34;link&#34; href=&#34;https://github.com/Yeachan-Heo/oh-my-codex/blob/main/docs/skills.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/Yeachan-Heo/oh-my-codex/blob/main/docs/skills.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;v0.18.1 release: &lt;a class=&#34;link&#34; href=&#34;https://github.com/Yeachan-Heo/oh-my-codex/releases/tag/v0.18.1&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/Yeachan-Heo/oh-my-codex/releases/tag/v0.18.1&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
