<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: gracefullight</title>
    <description>The latest articles on DEV Community by gracefullight (@gracefullight).</description>
    <link>https://dev.to/gracefullight</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1435105%2F42b0924f-ba4d-4504-b64b-07fc976c4a5e.jpg</url>
      <title>DEV Community: gracefullight</title>
      <link>https://dev.to/gracefullight</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gracefullight"/>
    <language>en</language>
    <item>
      <title>Why your coding agent's timeout resets every time it retries</title>
      <dc:creator>gracefullight</dc:creator>
      <pubDate>Thu, 29 Oct 2026 01:06:50 +0000</pubDate>
      <link>https://dev.to/gracefullight/why-your-coding-agents-timeout-resets-every-time-it-retries-gka</link>
      <guid>https://dev.to/gracefullight/why-your-coding-agents-timeout-resets-every-time-it-retries-gka</guid>
      <description>&lt;p&gt;You start three coding agents on a task before lunch and wrap each one in &lt;code&gt;timeout 1800&lt;/code&gt;. Thirty minutes should be plenty. When you come back, one of them is still going: it failed its tests, the wrapper retried, the retry ran the checks again, and every new process got its own fresh 30 minutes. Nothing was broken. The limit just applied to each process, while the thing you wanted to bound was the whole run.&lt;/p&gt;

&lt;p&gt;Ctrl-C has a similar gap. If your orchestration script starts each agent CLI in its own process group (which you want, so one agent's crash does not take the others down), killing the script does not reach those groups. The agents keep editing files and spending tokens with nobody watching.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a run budget has to cover
&lt;/h2&gt;

&lt;p&gt;An agent run is a chain of steps that each look short on their own:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;setup (installing dependencies, starting an MCP server)&lt;/li&gt;
&lt;li&gt;the agent's own work&lt;/li&gt;
&lt;li&gt;retries after a failed check&lt;/li&gt;
&lt;li&gt;verification commands like the test suite&lt;/li&gt;
&lt;li&gt;resuming a half-finished session later&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A timeout on any one of those does not bound the sum. What does bound it is a single absolute deadline, written down when the session starts, that every later step reads instead of starting its own clock.&lt;/p&gt;

&lt;h2&gt;
  
  
  How oh-my-agent handles it now
&lt;/h2&gt;

&lt;p&gt;I build oh-my-agent (OMA), a CLI and skill set for running coding agents like Claude Code and Codex in parallel. Version 20.13 added a session execution budget for exactly this. You set it once in &lt;code&gt;.agents/oma-config.yaml&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;session&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;execution&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;timeout_seconds&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1800&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or per command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;oma agent parallel tasks.yaml &lt;span class="nt"&gt;--timeout-seconds&lt;/span&gt; 1800
oma agent resume &amp;lt;session-id&amp;gt; &lt;span class="nt"&gt;--deadline&lt;/span&gt; 2026-11-01T18:00:00+11:00
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;spawn&lt;/code&gt;, &lt;code&gt;parallel&lt;/code&gt;, &lt;code&gt;review&lt;/code&gt;, &lt;code&gt;resume&lt;/code&gt;, &lt;code&gt;begin&lt;/code&gt; and &lt;code&gt;verify&lt;/code&gt; all accept &lt;code&gt;--timeout-seconds&lt;/code&gt; or &lt;code&gt;--deadline&lt;/code&gt;. They share one deadline per session, stored under &lt;code&gt;.agents/state/executions/&lt;/code&gt;. If a config value, a parent process and a persisted session each set a deadline, the earliest one wins. A retry or a resume reads that deadline; it cannot push it back. Child CLIs that OMA launches inherit it through &lt;code&gt;OMA_EXECUTION_DEADLINE&lt;/code&gt;, so a nested &lt;code&gt;oma agent spawn&lt;/code&gt; inside an agent's task stays inside the same budget.&lt;/p&gt;

&lt;p&gt;When the deadline passes or you cancel, OMA stops admitting new work for that session: no new agents, retries, reviews or verification. It then terminates the process groups it started, with SIGTERM and a short grace period before SIGKILL. The command exits with 124 on timeout (the same code GNU &lt;code&gt;timeout&lt;/code&gt; uses) and 130 when you cancel with Ctrl-C, and the stop reason is recorded in the session.&lt;/p&gt;

&lt;p&gt;If OMA cannot confirm that a process is gone, it keeps the ownership record and reports the surviving process rather than calling the session cleaned up. &lt;code&gt;oma cleanup --dry-run&lt;/code&gt; lists what it would stop, and it only touches processes whose identity still matches the record, so it will not kill an unrelated process that happens to reuse the PID.&lt;/p&gt;

&lt;p&gt;Stopping also does not delete anything. Logs, results, worktrees and caches stay where they are, so you can read what each agent got done before the clock ran out.&lt;/p&gt;

&lt;h2&gt;
  
  
  Limits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;This covers agents OMA launches through its own CLI path. Native subagents inside Claude Code, or a shell job you started yourself, need that host's own cancellation.&lt;/li&gt;
&lt;li&gt;It bounds wall-clock time only. CPU, RAM and disk caps depend on your host or container.&lt;/li&gt;
&lt;li&gt;The separate token caps (&lt;code&gt;session.quota_cap&lt;/code&gt;) do not interrupt a child that is already running, so the time budget is the one that actually stops a running child.&lt;/li&gt;
&lt;li&gt;Setting the environment variables by hand does not add deadline enforcement to a program that does not read them.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;I built OMA, and I'd like to hear how you bound long agent runs today, or where this falls short for you.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# macOS / Linux&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/first-fluke/oh-my-agent/main/cli/install.sh | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Windows (PowerShell)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;irm&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;https://raw.githubusercontent.com/first-fluke/oh-my-agent/main/cli/install.ps1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;iex&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://github.com/first-fluke/oh-my-agent?utm_source=devto" rel="noopener noreferrer"&gt;https://github.com/first-fluke/oh-my-agent?utm_source=devto&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>programming</category>
      <category>agents</category>
    </item>
    <item>
      <title>Testing a plugin hook that points to a missing file</title>
      <dc:creator>gracefullight</dc:creator>
      <pubDate>Wed, 28 Oct 2026 03:00:30 +0000</pubDate>
      <link>https://dev.to/gracefullight/testing-a-plugin-hook-that-points-to-a-missing-file-1a74</link>
      <guid>https://dev.to/gracefullight/testing-a-plugin-hook-that-points-to-a-missing-file-1a74</guid>
      <description>&lt;p&gt;A plugin hook can point to a file that exists in a developer checkout and is missing from the distributed plugin cache. Checking that the manifest is valid will not catch that failure.&lt;/p&gt;

&lt;p&gt;We repaired this in oh-my-agent. The old manifest referenced generated files under &lt;code&gt;${CLAUDE_PLUGIN_ROOT}/.claude/hooks/&lt;/code&gt;. A fresh-cache fixture omitted those files, exposing the packaging dependency.&lt;/p&gt;

&lt;h2&gt;
  
  
  Test the distributed shape
&lt;/h2&gt;

&lt;p&gt;The repair routes marketplace events through a tracked shell dispatcher and the installed CLI. It also checks whether an executable project hook already owns the event, so project and marketplace registrations do not deliver the same event twice.&lt;/p&gt;

&lt;p&gt;Bootstrap needed a separate check: a success marker shared across projects could let a second project skip its own wiring. The receipt now belongs to the project, and reuse requires the configuration, version, executable wrapper, and actual hook registrations.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://firstfluke.com/oh-my-agent/docs/examples/plugin-hook-repair/" rel="noopener noreferrer"&gt;worked repair&lt;/a&gt; links the before/after source and the regression fixtures. Those fixtures use fake CLI commands and temporary directories. They test dispatch and wiring; real host and model behavior require a separate session check.&lt;/p&gt;

&lt;h2&gt;
  
  
  Apply the method to your own diff
&lt;/h2&gt;

&lt;p&gt;Ask your coding agent to load the review instructions:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bunx skills use first-fluke/oh-my-agent@oma-qa
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then give it a bounded request:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Review this diff against origin/main. Check whether referenced files exist in
the distributed package, not only this checkout. Look for duplicate event
delivery and project-specific state stored in shared locations. Cite each
confirmed finding with file:line and its trigger. Keep application source
unchanged and report which checks you actually ran.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The command returns instructions and their support directory. Your agent still needs to read them and have access to the repository and its existing tools.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://firstfluke.com/oh-my-agent/docs/tasks/review-ai-code/" rel="noopener noreferrer"&gt;Review your own AI-written change&lt;/a&gt;. Check the cited locations and rerun the narrow checks before deciding whether to merge.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/first-fluke/oh-my-agent" rel="noopener noreferrer"&gt;https://github.com/first-fluke/oh-my-agent&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>testing</category>
      <category>opensource</category>
    </item>
    <item>
      <title>oma 20.10: stop gates now verify the code they checked</title>
      <dc:creator>gracefullight</dc:creator>
      <pubDate>Thu, 22 Oct 2026 01:00:56 +0000</pubDate>
      <link>https://dev.to/gracefullight/oma-2010-stop-gates-now-verify-the-code-they-checked-42id</link>
      <guid>https://dev.to/gracefullight/oma-2010-stop-gates-now-verify-the-code-they-checked-42id</guid>
      <description>&lt;p&gt;An agent runs your test command, it passes, the stop gate opens. Meanwhile the agent edited a file while that command was running. The gate approved code it never checked. That was the bug behind the week's most important fix, and it set the tone for the rest of the release train.&lt;/p&gt;

&lt;p&gt;This week: 97 commits, 18 CLI releases (20.1.0 to 20.10.3), and 3 web releases (11.0.2 to 11.2.1).&lt;/p&gt;

&lt;h2&gt;
  
  
  What's new
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Fresh stop gates&lt;/strong&gt;: a successful stop gate is now rejected if code changed during the command. The gate records the checked commit and tree, and &lt;code&gt;oma goal status --check-fresh&lt;/code&gt; exposes the result.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Diagnostic feedback after native edits&lt;/strong&gt;: the hooks compare pre-edit and post-edit Serena diagnostics through existing project daemons, then report what the edit changed. Checks and output are bounded, provider defaults and opt-outs are preserved, and supported native edit hooks are registered.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Native tool traces and spawn usage&lt;/strong&gt;: Claude and Codex observations bind to fresh native sessions, bounded tool evidence is preserved, and spawn cost estimates are reconciled with native usage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Harness² external benchmark track&lt;/strong&gt;: external runs stay out of the generated main scoreboard. The Linux-guarded runner has plan, dry-run, spend, and network guards, and records OMA and Harness² commits, models, k/mode/seed, and network policy.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Serena 2.0 support&lt;/strong&gt;: the exact 1.7.0 allowlist is now &lt;code&gt;&amp;gt;=1.7.0 &amp;lt;3.0.0&lt;/code&gt;, after verifying the patched upstream APIs are unchanged in 2.0.0.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Artifact layout migration&lt;/strong&gt;: install and update now migrate legacy artifact paths, with &lt;code&gt;oma docs migrate&lt;/code&gt; for preview and manual runs. Reference updates are conflict-safe.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DSH first-run setup&lt;/strong&gt;: the DSH integration installs the OMA CLI as a plugin dependency and prepares project-local skills and config before the first model turn.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Frontend stack manifests&lt;/strong&gt;: &lt;code&gt;oma verify frontend&lt;/code&gt; runs the syntax and test commands from the &lt;code&gt;stack.yaml&lt;/code&gt; written by &lt;code&gt;/stack-set&lt;/code&gt;, and keeps the built-in checks otherwise.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's fixed
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Slash-command workflows now persist. &lt;code&gt;/ultrawork&lt;/code&gt;, &lt;code&gt;/orchestrate&lt;/code&gt;, &lt;code&gt;/work&lt;/code&gt; and &lt;code&gt;/ralph&lt;/code&gt; never wrote the persistent-mode state file, so the Stop hook had nothing to enforce and &lt;code&gt;oma goal set&lt;/code&gt; failed. Namespaced forms such as &lt;code&gt;/oma:ultrawork&lt;/code&gt; are covered too.&lt;/li&gt;
&lt;li&gt;Read-only dispatch fails closed. Launch requires a built-in restriction or an explicit &lt;code&gt;read_only_flag&lt;/code&gt;, and empty or conflicting flags are rejected across native, external, spawn, and free-provider paths.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;oma uninstall&lt;/code&gt; in CI needs &lt;code&gt;--yes&lt;/code&gt; or &lt;code&gt;OMA_YES=1&lt;/code&gt;. CI is not consent for a destructive removal. Dry runs stay allowed.&lt;/li&gt;
&lt;li&gt;Installs no longer ship maintainer defaults. The shared config template stops pinning timezone &lt;code&gt;Asia/Seoul&lt;/code&gt; and an Aside browser selection, and the co-author guard no longer overrides &lt;code&gt;core.hooksPath&lt;/code&gt; over existing git hooks.&lt;/li&gt;
&lt;li&gt;CUE-only projects stay on one config file. Install, &lt;code&gt;oma memory keys&lt;/code&gt;, &lt;code&gt;oma model propose&lt;/code&gt; and &lt;code&gt;oma update&lt;/code&gt; now write to the file that actually takes effect, instead of creating a second shared file whose values lose.&lt;/li&gt;
&lt;li&gt;Abandoned empty Serena registry locks are reclaimed after the existing 60-second grace period.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;recap --graph&lt;/code&gt; and &lt;code&gt;state trajectory --open&lt;/code&gt; wait for the server to listen instead of a fixed 500 ms, and a failed bind prints a short error with exit code 1.&lt;/li&gt;
&lt;li&gt;Qwen Code 0.25 alignment: HUD ANSI colors survive, the duplicate context indicator is hidden, and git co-author attribution defaults off so Qwen's fixed trailer no longer trips the commit-msg allowlist.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's better
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Four oversized modules were split into focused submodules with the public API unchanged: Serena binary and language helpers, the daemon registry, link vendor settings, and the Claude/Codex trajectory parsers (now shared under &lt;code&gt;cli/io/native-transcript/&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;The artifact layout migration moved into &lt;code&gt;platform&lt;/code&gt;, which fixes a cross-slice boundary violation between &lt;code&gt;commands/docs&lt;/code&gt; and migration 032.&lt;/li&gt;
&lt;li&gt;Husky is gone. &lt;code&gt;hk.pkl&lt;/code&gt; now handles pre-commit, commit-msg, and pre-push checks, wired through &lt;code&gt;mise&lt;/code&gt; workspace tasks, and every CI workflow uses &lt;code&gt;jdx/mise-action@v5&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;docs:check&lt;/code&gt; fails on generated docs drift, and CI runs it on every push.&lt;/li&gt;
&lt;li&gt;The bootstrap scripts install &lt;code&gt;oma&lt;/code&gt; globally (falling back to &lt;code&gt;bunx&lt;/code&gt; if that fails), because hooks, workflows, and self-update all call a global &lt;code&gt;oma&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Docs got a prose pass: 481 English and translated pages simplified, and the 13 READMEs now share a 6+1 architecture figure.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# macOS / Linux&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/first-fluke/oh-my-agent/main/cli/install.sh | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Windows (PowerShell)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;irm&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;https://raw.githubusercontent.com/first-fluke/oh-my-agent/main/cli/install.ps1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;iex&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;p&gt;oh-my-agent is built for teams who orchestrate more than they prompt. Next up: extending the freshness check beyond stop gates so every verification claim is bound to the exact tree it ran against.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/first-fluke/oh-my-agent" rel="noopener noreferrer"&gt;https://github.com/first-fluke/oh-my-agent&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>programming</category>
      <category>agents</category>
    </item>
    <item>
      <title>oh-my-agent: oma-security replaces deepsec, one global home</title>
      <dc:creator>gracefullight</dc:creator>
      <pubDate>Thu, 15 Oct 2026 01:00:50 +0000</pubDate>
      <link>https://dev.to/gracefullight/oh-my-agent-oma-security-replaces-deepsec-one-global-home-13de</link>
      <guid>https://dev.to/gracefullight/oh-my-agent-oma-security-replaces-deepsec-one-global-home-13de</guid>
      <description>&lt;p&gt;oh-my-agent shipped five major CLI versions in seven days, from 15.10.0 to 20.0.0. Most of the bumps are deliberate breaking changes that remove old paths instead of keeping compatibility shims. Here is what changed and what you need to do about it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's new
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;oma-security&lt;/strong&gt; replaces &lt;code&gt;oma-deepsec&lt;/code&gt;, and &lt;code&gt;/security&lt;/code&gt; replaces &lt;code&gt;/deepsec&lt;/code&gt;, with no compatibility aliases. It routes source, skill, MCP, and scoped web runtime work to target-specific engines, keeps the engine evidence, and requires independent validation before a finding is confirmed or a CI gate is applied. Deepsec stays the default source scanning engine. The skill ships with 11 resource files, including a 408-line findings contract.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One global data home.&lt;/strong&gt; &lt;code&gt;OMA_HOME&lt;/code&gt; now selects the global data home (&lt;code&gt;~/.oma&lt;/code&gt; by default) and holds definitions, state, schedules, and backups. Migration is copy-first with conflict checks and active-runtime checks. Old paths are not read as runtime fallbacks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AgentMemory isolation.&lt;/strong&gt; Writes, recalls, retries, and imports are scoped to the original project and profile. Shared-server responses are filtered by ownership. Install and update now prepare the default AgentMemory provider, unless the project opts out or uses another provider.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent decisions are captured and verified&lt;/strong&gt; as state events (&lt;code&gt;b4d76a71&lt;/code&gt;), so a run's choices can be checked after the fact.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;User hooks for commit messages.&lt;/strong&gt; The managed &lt;code&gt;commit-msg&lt;/code&gt; hook now runs every executable file in &lt;code&gt;.githooks/commit-msg.d/&lt;/code&gt; first, in name order. A non-zero exit rejects the commit. oma never writes into that directory, so a commitlint call survives &lt;code&gt;oma update&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tooling profiles&lt;/strong&gt; for &lt;code&gt;oma-dev-workflow&lt;/code&gt;: Python, JS/TS, Dart/Flutter, Dockerfile, and local commitlint, plus guidance on reusing project verification tasks.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's fixed
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;oma retro --json&lt;/code&gt; printed the banner and spinner before the JSON. It now emits one valid document, including for empty windows.&lt;/li&gt;
&lt;li&gt;Help showed &lt;code&gt;--older-than&lt;/code&gt; defaults as &lt;code&gt;90ds&lt;/code&gt;. Units are now appended only to bare numeric defaults.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;schedule sync&lt;/code&gt; crashed on manifest rows missing required fields, which left every healthy job stale. Malformed rows are now dropped and reported, and &lt;code&gt;schedule list&lt;/code&gt; names them.&lt;/li&gt;
&lt;li&gt;Orphan pruning no longer touches internal services such as AgentMemory and Serena maintenance. It is limited to the agent schedule namespace.&lt;/li&gt;
&lt;li&gt;Concurrent hook deduplication could expire a competing publisher's fresh claim. It now rechecks the clock after reading and tolerates clock rollback only within the TTL.&lt;/li&gt;
&lt;li&gt;Standalone skill installs now bundle the shared guides they reference (closes #866).&lt;/li&gt;
&lt;li&gt;Pinned local Serena bridge entries are repaired, with user environment and server options preserved.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;design&lt;/code&gt; workflow routing now requires a visual target, so "API design" no longer triggers it.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's better
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Plugin packages lost 471 duplicated files.&lt;/strong&gt; Full plugin packages now share one package-level resource tree. Root plugin skills require that shared tree, so use OMA preset installation instead of &lt;code&gt;npx skills&lt;/code&gt; or APM.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cleaner command surface.&lt;/strong&gt; Internal entry points are hidden from &lt;code&gt;oma describe&lt;/code&gt; and help but stay runnable. 25 command groups that had no description now have one. &lt;code&gt;skills matrix&lt;/code&gt; is now &lt;code&gt;oma skill matrix&lt;/code&gt;, and the plural spelling is rejected.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docs generated from source.&lt;/strong&gt; The CLI registry is rendered from &lt;code&gt;oma describe&lt;/code&gt;, and the skill catalog from &lt;code&gt;SKILL.md&lt;/code&gt; frontmatter. Both carry a &lt;code&gt;--check&lt;/code&gt; mode that reports stale blocks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docs site content.&lt;/strong&gt; It gained mermaid diagrams for routing, ultrawork, ralph, and config resolution, plus decision tables and a glossary. The 11 locales and 12 README translations were synced to match.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Corrected claims.&lt;/strong&gt; The ralph judge is now described as prompted, not independent, because nothing checks the spawn. Event log lookup points to &lt;code&gt;oma state list&lt;/code&gt; instead of a hard-coded path.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The week landed 81 commits across 840 files (+70,280 / -32,120), and the memory rework alone was validated with 1,095 tests.&lt;/p&gt;

&lt;h2&gt;
  
  
  Upgrade notes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Run &lt;code&gt;oma state migrate --runtime&lt;/code&gt; to move project-local state. Runtime readers no longer load it.&lt;/li&gt;
&lt;li&gt;Replace &lt;code&gt;/deepsec&lt;/code&gt; with &lt;code&gt;/security&lt;/code&gt; in any scripts or habits.&lt;/li&gt;
&lt;li&gt;Replace &lt;code&gt;oma skills matrix&lt;/code&gt; with &lt;code&gt;oma skill matrix&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# macOS / Linux&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/first-fluke/oh-my-agent/main/cli/install.sh | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Windows (PowerShell)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;irm&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;https://raw.githubusercontent.com/first-fluke/oh-my-agent/main/cli/install.ps1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;iex&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;p&gt;oh-my-agent is built for teams who orchestrate more than they prompt. Next up: tightening the ralph judge so the spawn is verified instead of only prompted.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/first-fluke/oh-my-agent" rel="noopener noreferrer"&gt;https://github.com/first-fluke/oh-my-agent&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>programming</category>
      <category>opensource</category>
    </item>
    <item>
      <title>oh-my-agent: session trajectories and skill compatibility checks</title>
      <dc:creator>gracefullight</dc:creator>
      <pubDate>Mon, 12 Oct 2026 15:54:38 +0000</pubDate>
      <link>https://dev.to/gracefullight/oh-my-agent-session-trajectories-and-skill-compatibility-checks-4ma6</link>
      <guid>https://dev.to/gracefullight/oh-my-agent-session-trajectories-and-skill-compatibility-checks-4ma6</guid>
      <description>&lt;p&gt;Agent runs can span several CLIs, tool calls, and completion checks. Following that sequence means opening more than one log. This week's oh-my-agent changes add a session trajectory viewer, an HTML explanation renderer, and checks for how skills are read by different runtimes.&lt;/p&gt;

&lt;p&gt;This is the delayed update for October 8, 2026. It covers changes available by 12:00 Australia/Sydney that day, through CLI 15.9.0. Later changes are outside this report.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's new
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Session trajectories.&lt;/strong&gt; The viewer joins OMA lifecycle events with vendor transcripts. Terminal and dashboard views help you follow a session's sequence of messages, tool calls, and checks. The implementation was extended to eleven runtimes during the week. &lt;a href="https://github.com/first-fluke/oh-my-agent/commit/f5391966914b155cd1d8dacd2ce02a39a38ad51a" rel="noopener noreferrer"&gt;Implementation&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Markdown explanations.&lt;/strong&gt; &lt;code&gt;oma explain render&lt;/code&gt; turns a structured Markdown draft into a self-contained HTML page. Choose a panel grid or a document layout, then use &lt;code&gt;oma explain lint&lt;/code&gt; to check the prose. This gives reviewers a file they can open without running the project. &lt;a href="https://github.com/first-fluke/oh-my-agent/commit/ea3b2aacdda10f5416ce4cfabf83693a0d611235" rel="noopener noreferrer"&gt;Implementation&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Skill compatibility checks.&lt;/strong&gt; &lt;code&gt;oma skills matrix&lt;/code&gt; plans checks for skill discovery, relative references, and final JSON output through native Claude and Codex CLIs. Installed-skill audits also support the body injection format used by agent-valley. These audits measure file access, not whether a skill can complete every task. &lt;a href="https://github.com/first-fluke/oh-my-agent/blob/f0bfc8635e51d32f71556490ade887fbf3d97d64/docs/skills-matrix.md" rel="noopener noreferrer"&gt;Scope and commands&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The matrix defaults to planning. The following command prints a plan without starting vendor processes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;oma skills matrix &lt;span class="nt"&gt;--vendors&lt;/span&gt; codex &lt;span class="nt"&gt;--cases&lt;/span&gt; discovery,reference
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A live run requires &lt;code&gt;--live&lt;/code&gt; and authenticated CLIs.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's fixed
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Schedule manifest updates are serialized to prevent concurrent writers from losing changes. Scheduled dispatch also resolves the CLI runtime.&lt;/li&gt;
&lt;li&gt;Verification evidence is bound to the exact task and run receipts, so evidence from another run cannot stand in for the selected work.&lt;/li&gt;
&lt;li&gt;Managed hook upgrades preserve user scripts, and uninstall preserves skills that lack OMA-managed ownership.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's better
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;oma bridge&lt;/code&gt; loads only the bridge command instead of the full CLI command tree. Shared Serena daemon logs are bounded, and &lt;code&gt;oma doctor&lt;/code&gt; warns when PATH contains different OMA versions. These changes address startup work, log growth, and version confusion.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# macOS / Linux&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/first-fluke/oh-my-agent/main/cli/install.sh | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Windows (PowerShell)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;irm&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;https://raw.githubusercontent.com/first-fluke/oh-my-agent/main/cli/install.ps1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;iex&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you use OMA across runtimes, start with a session trajectory to inspect what ran, then use the matrix to check how a selected runtime reads skill files.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/first-fluke/oh-my-agent" rel="noopener noreferrer"&gt;https://github.com/first-fluke/oh-my-agent&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>programming</category>
      <category>opensource</category>
    </item>
    <item>
      <title>What OMA returns when its test gate fails</title>
      <dc:creator>gracefullight</dc:creator>
      <pubDate>Sat, 03 Oct 2026 02:41:47 +0000</pubDate>
      <link>https://dev.to/gracefullight/what-oma-returns-when-its-test-gate-fails-3lgi</link>
      <guid>https://dev.to/gracefullight/what-oma-returns-when-its-test-gate-fails-3lgi</guid>
      <description>&lt;p&gt;oh-my-agent (OMA) can rerun a configured test script when an active workflow&lt;br&gt;
tries to stop. This example exercises that behavior with manual hook calls and&lt;br&gt;
a deliberately broken expiry check. It uses the OMA 15.0.13 source CLI.&lt;/p&gt;

&lt;p&gt;The fixture defines an item as expired at &lt;code&gt;now === expiresAt&lt;/code&gt;. Its implementation&lt;br&gt;
used &lt;code&gt;&amp;gt;&lt;/code&gt;, so the boundary test failed. The test process exited with code 1.&lt;br&gt;
This excerpt comes from the actual output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;not ok 2 - at expiry: expired
# pass 2
# fail 1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The fixture's active Ralph workflow had a &lt;code&gt;test&lt;/code&gt; completion gate. A manual&lt;br&gt;
call to OMA's Stop hook reran the package's test script. The response contained&lt;br&gt;
&lt;code&gt;"decision":"block"&lt;/code&gt; and this reason:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Stop gate 'test' FAILED (reinforcement 1/5).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;oma hook run&lt;/code&gt; process itself exited with code 0. Its JSON decision carries&lt;br&gt;
the block; treating that exit code as a successful test would be incorrect.&lt;/p&gt;

&lt;p&gt;The fix changed one comparison:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;&lt;span class="gd"&gt;-  return now &amp;gt; expiresAt;
&lt;/span&gt;&lt;span class="gi"&gt;+  return now &amp;gt;= expiresAt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Rerunning the tests produced:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# pass 3
# fail 0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The next Stop call ran the same gate and returned empty stdout. OMA removed the&lt;br&gt;
fixture's workflow state and recorded &lt;code&gt;gate.passed&lt;/code&gt;, followed by &lt;code&gt;session.ended&lt;/code&gt;&lt;br&gt;
with reason &lt;code&gt;completion_gate_passed&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://gist.github.com/gracefullight/06ed76480cd105882067e814bb2cbaf6" rel="noopener noreferrer"&gt;demo, receipts, and reproduction script&lt;/a&gt; contain the full&lt;br&gt;
commands, timestamps, and output. Download &lt;code&gt;reproduce.py&lt;/code&gt; and run it against an&lt;br&gt;
OMA source checkout with its CLI dependencies already available:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python3 reproduce.py &lt;span class="nt"&gt;--oma-source&lt;/span&gt; /path/to/oh-my-agent &lt;span class="nt"&gt;--output&lt;/span&gt; /path/to/new-demo-run
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Download &lt;code&gt;demo.html&lt;/code&gt; from the Gist to watch the 45-second explanation locally. GitHub displays its source rather than playing it on the page.&lt;/p&gt;

&lt;p&gt;The script requires Python 3, Git, Node, and Bun. It creates an isolated fixture&lt;br&gt;
and session store; it does not change your project's workflow state.&lt;/p&gt;

&lt;p&gt;This is a local fixture with manually invoked hooks, not a recorded autonomous&lt;br&gt;
agent session or a production incident. It demonstrates this configured gate&lt;br&gt;
on these tests. It does not establish general correctness or a comparison with&lt;br&gt;
another tool.&lt;/p&gt;

&lt;p&gt;The full harness supplies the CLI and hooks used here. A skills-only install&lt;br&gt;
does not. Start with one scoped task in the&lt;br&gt;
&lt;a href="https://firstfluke.com/oh-my-agent/docs/getting-started/quick-start/" rel="noopener noreferrer"&gt;Quick Start&lt;/a&gt;,&lt;br&gt;
then inspect its diff and checks. The source is on&lt;br&gt;
&lt;a href="https://github.com/first-fluke/oh-my-agent" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>testing</category>
      <category>opensource</category>
      <category>devtools</category>
    </item>
    <item>
      <title>oh-my-agent: shared Serena daemons, bounded retry loops</title>
      <dc:creator>gracefullight</dc:creator>
      <pubDate>Thu, 01 Oct 2026 02:00:47 +0000</pubDate>
      <link>https://dev.to/gracefullight/oh-my-agent-shared-serena-daemons-bounded-retry-loops-4g6</link>
      <guid>https://dev.to/gracefullight/oh-my-agent-shared-serena-daemons-bounded-retry-loops-4g6</guid>
      <description>&lt;p&gt;Five CLI releases, 15.0.2 through 15.0.6, shipped this week. The theme is long-running agents that stay well-behaved: fewer stray processes, bounded memory, and retry loops that know when to stop.&lt;/p&gt;

&lt;p&gt;20 commits, 69 files, roughly 3,700 lines added. Most of it went into how oh-my-agent manages Serena, the code-search backend that every agent leans on.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's new
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Managed Serena runtime&lt;/strong&gt;: version-gated Serena adapters are installed with a per-file SQLite symbol cache. Python no longer holds full workspace symbol trees in memory.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;oma serena check&lt;/code&gt;&lt;/strong&gt;: a new command that validates the Serena config and runs Dart checks against the shared daemon, with exit codes you can script against.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scheduled daemon cleanup&lt;/strong&gt;: a separate periodic task reaps idle shared Serena daemons. It verifies process identity before signaling a registered PID, so a recycled PID never gets killed by mistake.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Managed Dart diagnostics&lt;/strong&gt;: package diagnostics reuse the managed Dart language server. Adapter revisions are tracked whenever a shared daemon starts or is replaced.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Doctor reporting&lt;/strong&gt;: &lt;code&gt;oma doctor&lt;/code&gt; now reports the Serena adapter state, in both the terminal footer and the JSON report.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's fixed
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Duplicate Serena stacks&lt;/strong&gt;: when the shared server is unreachable, oma now reports the connection failure instead of spawning a private Serena stack. Managed contexts are normalized before registry lookup.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Daemon replacement under load&lt;/strong&gt;: if the runtime revision changes while clients are attached, the loaded daemon is reused and the replacement waits until every client detaches. Active, busy, and legacy-revision cases are covered by tests.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Eager Dart analysis&lt;/strong&gt;: Dart now defaults to analysis on file open, and uses the local stable SDK version when none is configured.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unbounded orchestration retries&lt;/strong&gt;: plans are pinned when dispatched, and retries are counted by workflow lineage and logical goal. Evidence failures are now separate from product failures, and a missing-metadata problem gets one bounded repair without restarting product planning.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flaky checks&lt;/strong&gt;: the bridge timeout test asserts the protected bridge's response instead of wall time. Boundary scanning retries transient TypeScript worker exits.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's better
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Quieter updates&lt;/strong&gt;: &lt;code&gt;oma update&lt;/code&gt; shows the changed Hyperframes components, deduplicates repaired links, and ends with one version summary. The inaccurate file totals and routine notices are gone.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cleaner module boundaries&lt;/strong&gt;: Serena config validation moved into the shared I/O layer, so &lt;code&gt;serena check&lt;/code&gt; and setup no longer import the bridge command slice. Behavior is unchanged.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Verification&lt;/strong&gt;: the duplicate-server fix was checked with 211 affected tests, type checking, lint, boundary checks, and a smoke test of symbol and definition lookup on Serena 1.7.0 with Dart 3.13.4.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docs and tests&lt;/strong&gt;: &lt;code&gt;integrations/serena/README.md&lt;/code&gt; is expanded, with new Python tests for the Dart adapter, installer, and symbol cache.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# macOS / Linux&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/first-fluke/oh-my-agent/main/cli/install.sh | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Windows (PowerShell)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;irm&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;https://raw.githubusercontent.com/first-fluke/oh-my-agent/main/cli/install.ps1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;iex&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;p&gt;oh-my-agent is built for teams who orchestrate more than they prompt. Next up: tighter guardrails around long-running orchestration runs, so a stuck goal fails fast instead of looping.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/first-fluke/oh-my-agent" rel="noopener noreferrer"&gt;https://github.com/first-fluke/oh-my-agent&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>programming</category>
      <category>agents</category>
    </item>
    <item>
      <title>oh-my-agent 15: HyperFrames replaces Remotion, Serena guard ships</title>
      <dc:creator>gracefullight</dc:creator>
      <pubDate>Thu, 24 Sep 2026 02:01:01 +0000</pubDate>
      <link>https://dev.to/gracefullight/oh-my-agent-15-hyperframes-replaces-remotion-serena-guard-ships-4aml</link>
      <guid>https://dev.to/gracefullight/oh-my-agent-15-hyperframes-replaces-remotion-serena-guard-ships-4aml</guid>
      <description>&lt;p&gt;oh-my-agent CLI 15.0.0 just shipped, and &lt;code&gt;oma-video&lt;/code&gt; now renders with HyperFrames instead of Remotion. It is a breaking change, so it took a major version. The week also brought a hook that stops agents from bypassing your code-intelligence provider, and a batch of fixes for Serena daemons and schedules.&lt;/p&gt;

&lt;p&gt;The numbers: 67 commits, 230 files touched, CLI 15.0.1 and web 7.0.0.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's new
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;HyperFrames compositor&lt;/strong&gt;: the managed video toolchain moves from Remotion to HyperFrames (&lt;code&gt;heygen-com/hyperframes&lt;/code&gt;) across the video CLI, the &lt;code&gt;oma-video&lt;/code&gt; skill resources, &lt;code&gt;oma update&lt;/code&gt; refresh, and docs. Migration is two renames: the &lt;code&gt;video.remotion&lt;/code&gt; config key is now &lt;code&gt;video.hyperframes&lt;/code&gt;, and &lt;code&gt;--compositor remotion&lt;/code&gt; becomes &lt;code&gt;--compositor hyperframes&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code-intelligence guard&lt;/strong&gt;: a new PreToolUse handler denies native Grep/Glob and recursive shell search (&lt;code&gt;rg&lt;/code&gt;, &lt;code&gt;ag&lt;/code&gt;, &lt;code&gt;fd&lt;/code&gt;, &lt;code&gt;grep -r&lt;/code&gt;, &lt;code&gt;find -name&lt;/code&gt;, &lt;code&gt;git grep&lt;/code&gt;) while &lt;code&gt;providers.code_intelligence&lt;/code&gt; is configured. The deny reason names the Serena or Gortex tool to use instead. Set &lt;code&gt;providers.code_intelligence_guard&lt;/code&gt; to &lt;code&gt;off&lt;/code&gt; in a local overlay to disable it, or prefix a command with &lt;code&gt;OMA_CI_ALLOW_NATIVE=1&lt;/code&gt; when the provider is down. It is registered in all seven hook variants (claude, codex, cursor, grok, kimi, kiro, qwen).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AGENTS.md only&lt;/strong&gt;: Claude Code 2.1.277 and later reads &lt;code&gt;AGENTS.md&lt;/code&gt; natively, so oma now writes its block there and never into &lt;code&gt;CLAUDE.md&lt;/code&gt;. Migration 031 strips the legacy block, deletes the file only if the block was its sole content, and leaves an &lt;code&gt;@AGENTS.md&lt;/code&gt; import line for user-owned files. &lt;code&gt;oma doctor&lt;/code&gt; warns when a &lt;code&gt;CLAUDE.md&lt;/code&gt; without the import would shadow &lt;code&gt;AGENTS.md&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Legacy Gemini MCP cleanup&lt;/strong&gt;: migration 030 removes matching OMA default Serena and browser entries from old project Gemini settings once Antigravity is selected. Custom settings and symlinks are preserved.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's fixed
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Serena daemon sprawl&lt;/strong&gt;: a bridge that could not probe a busy daemon within 2 seconds used to start a rival on the same port. The rival died on bind and pruned the live daemon's registry record, leaving three daemons per project on one machine. Bridges now wait on a registered daemon whose pid is alive, and registry operations run under the file lock.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stranded schedules&lt;/strong&gt;: registrations written before the command rename still invoked &lt;code&gt;oma schedule:run&lt;/code&gt;, failed on every fire, and still showed as synced. Drift detection now reads the registered command from launchd, crontab and systemd, reports a &lt;code&gt;stale&lt;/code&gt; state, and &lt;code&gt;oma schedule sync&lt;/code&gt; and &lt;code&gt;oma update&lt;/code&gt; rewrite those jobs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Global settings clobbered&lt;/strong&gt;: &lt;code&gt;cd $HOME &amp;amp;&amp;amp; oma link claude&lt;/code&gt; treated HOME as a project root and rewrote the user's global hook commands. &lt;code&gt;link&lt;/code&gt; and &lt;code&gt;update&lt;/code&gt; now refuse project mode from HOME and point at &lt;code&gt;oma link --global&lt;/code&gt; (closes #788).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Secrets check&lt;/strong&gt;: &lt;code&gt;oma verify&lt;/code&gt; detects hardcoded secrets more reliably.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Native search false positives&lt;/strong&gt;: the guard now allows scoped searches inside provider-excluded and external paths, with Windows path normalization.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Repeated Serena migration&lt;/strong&gt;: migration 007 no longer re-triggers a same-version download after browser MCP selection.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's better
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Import boundaries&lt;/strong&gt;: &lt;code&gt;check-boundaries&lt;/code&gt; now enforces every literal import. Schedule adapters and video internals moved into &lt;code&gt;cli/io/schedule&lt;/code&gt; and &lt;code&gt;cli/io/video&lt;/code&gt;, and agent dispatch preparation is shared between spawn and parallel.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tests&lt;/strong&gt;: the &lt;code&gt;scripts/&lt;/code&gt; suite (41 tests) now runs under vitest, so &lt;code&gt;bun run test&lt;/code&gt; covers it. It previously used the bun runner, which no npm script executed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cross-post pipeline&lt;/strong&gt;: the vendor JSON envelope is unwrapped before parsing, which fixes the weekly job failing on every run, and translated titles must now carry the same claim as the English source.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docs&lt;/strong&gt;: Korean, Japanese and Chinese harness-evolution guides landed, which unblocked the locale docs builds. Spawn docs now say &lt;code&gt;--vendor&lt;/code&gt; instead of the removed &lt;code&gt;-m/--model&lt;/code&gt; flag.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# macOS / Linux&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/first-fluke/oh-my-agent/main/cli/install.sh | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Windows (PowerShell)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;irm&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;https://raw.githubusercontent.com/first-fluke/oh-my-agent/main/cli/install.ps1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;iex&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;p&gt;oh-my-agent is built for teams who orchestrate more than they prompt. Next up: more hooks that enforce what the session primer only advises.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/first-fluke/oh-my-agent" rel="noopener noreferrer"&gt;https://github.com/first-fluke/oh-my-agent&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>programming</category>
      <category>opensource</category>
    </item>
    <item>
      <title>oh-my-agent: failed runs now turn into skill regression tests</title>
      <dc:creator>gracefullight</dc:creator>
      <pubDate>Sat, 19 Sep 2026 00:53:24 +0000</pubDate>
      <link>https://dev.to/gracefullight/oh-my-agent-failed-runs-now-turn-into-skill-regression-tests-572m</link>
      <guid>https://dev.to/gracefullight/oh-my-agent-failed-runs-now-turn-into-skill-regression-tests-572m</guid>
      <description>&lt;p&gt;A failed agent run used to end with a log and a shrug. This week oh-my-agent closed that loop: a failure can be captured as an incident, promoted to a skill fixture, and fed to an optimizer that edits the skill under a dispatch budget. It took 131 commits and moved the CLI from 14.7.11 to 14.13.1.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's new
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Incident capture and promotion&lt;/strong&gt;: &lt;code&gt;oma harness incident scan&lt;/code&gt; lists failed, blocked, and partial runs that no incident references. &lt;code&gt;oma harness incident promote&lt;/code&gt; derives a regression fixture for the skill the agent used, and admits it only when the recorded failing output fails it. &lt;code&gt;oma harness feedback --scan-runs&lt;/code&gt; chains capture, promote, and optimize. Finished runs now keep the last 64 KiB of runner log so the fixture can be validated against what the agent actually said.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Budgeted skill evolution&lt;/strong&gt;: &lt;code&gt;oma skill optimize&lt;/code&gt; accepts an edit only when neither the validation nor the training split regresses and at least one improves. &lt;code&gt;constitution.budget.max_dispatches_per_run&lt;/code&gt; is now enforced: the call that would exceed it is refused and promotion is blocked. Every applied edit records lineage, and &lt;code&gt;oma skill promotions&lt;/code&gt; and &lt;code&gt;oma skill rollback&lt;/code&gt; read it back.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Meta-optimization&lt;/strong&gt;: &lt;code&gt;oma skill meta-optimize&lt;/code&gt; treats the optimizer prompt itself as the candidate. Promotion needs a seeded paired bootstrap 95% interval above zero and at least three pairs. The first adopted procedure beat the current one by 0.27 on average, interval [0.04, 0.54], and added three grounding rules for proposed skill edits.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Routing eval&lt;/strong&gt;: &lt;code&gt;oma skill eval --routing&lt;/code&gt; shows the model every installed skill description and records whether it picks the target, a neighbor, or nothing. It separates "the body helps" from "the skill gets selected".&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code-intelligence guard&lt;/strong&gt;: a PreToolUse hook denies native Grep, Glob, and recursive shell search (&lt;code&gt;rg&lt;/code&gt;, &lt;code&gt;grep -r&lt;/code&gt;, &lt;code&gt;find -name&lt;/code&gt;, &lt;code&gt;git grep&lt;/code&gt;) while a provider is configured. The deny message names the Serena tool to use. &lt;code&gt;OMA_CI_ALLOW_NATIVE=1&lt;/code&gt; is the escape hatch, and &lt;code&gt;providers.code_intelligence_guard: off&lt;/code&gt; disables it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Session-start notices&lt;/strong&gt;: the state snapshot now announces skill and procedure promotions once, one line each with the edit and the lifts. &lt;code&gt;oma doctor&lt;/code&gt; gained an Evolution note.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Orca reporting&lt;/strong&gt;: spawned child agents report their lifecycle to Orca. Qwen gained native agent definitions.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's fixed
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The weekly cross-post job failed on every run after &lt;code&gt;model_preset&lt;/code&gt; moved to &lt;code&gt;auto&lt;/code&gt;. &lt;code&gt;claude --output-format json&lt;/code&gt; wraps the answer in an envelope, and &lt;code&gt;runAgent&lt;/code&gt; returned it raw. It now unwraps the configured &lt;code&gt;response_jq&lt;/code&gt; path and falls through to raw stdout for vendors without one.&lt;/li&gt;
&lt;li&gt;OS jobs registered before the command rename kept calling &lt;code&gt;oma schedule:run &amp;lt;id&amp;gt;&lt;/code&gt; and failed on every fire, while &lt;code&gt;schedule list&lt;/code&gt; reported them as synced. The legacy spelling is accepted when the OS invokes it, drift detection has a new &lt;code&gt;stale&lt;/code&gt; state, and &lt;code&gt;oma schedule sync&lt;/code&gt; and &lt;code&gt;oma update&lt;/code&gt; rewrite stale registrations.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cd $HOME &amp;amp;&amp;amp; oma link claude&lt;/code&gt; treated HOME as a project and rewrote the global Claude hook commands. &lt;code&gt;link&lt;/code&gt; and &lt;code&gt;update&lt;/code&gt; now refuse project mode from HOME (#788).&lt;/li&gt;
&lt;li&gt;The skill judge parsed PASS/FAIL from the raw Claude envelope, where &lt;code&gt;"failed":0&lt;/code&gt; came before the verdict, so every judge verdict read FAIL. Outputs are unwrapped before scoring, and stale recordings are discarded.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--repeats 3&lt;/code&gt; parsed to NaN because bare &lt;code&gt;parseInt&lt;/code&gt; received the previous value as its radix. Variadic option values (&lt;code&gt;--skill a b&lt;/code&gt;) no longer trip the stray-positional guard.&lt;/li&gt;
&lt;li&gt;Projects synced before v11 still ran their own Serena per session. Migration 029 rewrites those launchers to the shared &lt;code&gt;oma bridge&lt;/code&gt; entry in each vendor's native form.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;oma update&lt;/code&gt; respects an explicit vendor list instead of detecting from project directories.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's better
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;One optimization epoch with four candidates took forty minutes because every arm and judge ran serially. Live dispatches now run through a bounded pool (&lt;code&gt;OMA_SKILL_EVAL_CONCURRENCY&lt;/code&gt;, default 4), and meta-optimization overlaps inner runs across skills (&lt;code&gt;OMA_META_CONCURRENCY&lt;/code&gt;, up to 4). The per-dispatch timeout is 180s, with one retry on timeout.&lt;/li&gt;
&lt;li&gt;Fixtures test what the body states. The oma-debug set was rewritten after the first version scored 89% without the skill. The new twelve score 25% baseline and 100% with the skill. oma-refactor went from 16.7% to 100% the same way. oma-docs, oma-scm, and oma-qa also have twelve body-aligned fixtures each.&lt;/li&gt;
&lt;li&gt;The first loop-verified edit landed in oma-docs: held-in 55.6% to 77.8%, held-out validation unchanged at 100%.&lt;/li&gt;
&lt;li&gt;Cost is visible. Runs report model calls per verified improvement, so a procedure that wins on gain by spending more shows up as such.&lt;/li&gt;
&lt;li&gt;Gortex is out and code intelligence is back on the Serena bridge. It pinned the CPU re-patching a 4 GB index and exposed no cap.&lt;/li&gt;
&lt;li&gt;Skill and shared prompt files were trimmed to cut unconditional preflight, scoring, and approval rules. Incident guides shipped in all 11 doc locales.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# macOS / Linux&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/first-fluke/oh-my-agent/main/cli/install.sh | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Windows (PowerShell)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;irm&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;https://raw.githubusercontent.com/first-fluke/oh-my-agent/main/cli/install.ps1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;iex&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;p&gt;oh-my-agent is built for teams who orchestrate more than they prompt. Next up: running the feedback loop on a schedule against real project runs, so skill edits arrive with their evidence attached.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/first-fluke/oh-my-agent" rel="noopener noreferrer"&gt;https://github.com/first-fluke/oh-my-agent&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>programming</category>
      <category>agents</category>
    </item>
    <item>
      <title>oh-my-agent: managed skill caches and WikiSkill evolution</title>
      <dc:creator>gracefullight</dc:creator>
      <pubDate>Thu, 03 Sep 2026 02:06:18 +0000</pubDate>
      <link>https://dev.to/gracefullight/oh-my-agent-managed-skill-caches-and-wikiskill-evolution-56g7</link>
      <guid>https://dev.to/gracefullight/oh-my-agent-managed-skill-caches-and-wikiskill-evolution-56g7</guid>
      <description>&lt;p&gt;The market, diagram, and video pipelines just moved to always-latest managed skill caches. When you orchestrate external tools, you want them at HEAD without dragging down your repository.&lt;/p&gt;

&lt;p&gt;This week introduces a shared caching layer for third-party skills, meaning your agents always resolve the latest logic for generating architecture diagrams, market research, or video compositions.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's new
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Managed skill layer&lt;/strong&gt;: Introduced a shared caching system for external skills. Diagram, market, and video tools now resolve and update from GitHub Releases or upstream engines directly into local cache.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Diagram engine&lt;/strong&gt;: Added &lt;code&gt;oma diagram&lt;/code&gt; subcommands powered by the external archify skill for generating architecture diagrams.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Upstream market engine&lt;/strong&gt;: Replaced the in-house market pipeline with the upstream last30days engine. The &lt;code&gt;oma market run&lt;/code&gt; command now passes arguments straight to the source.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dynamic video authoring&lt;/strong&gt;: Stopped shipping vendored Remotion code. The new &lt;code&gt;oma video compose&lt;/code&gt; command scaffolds compositions dynamically against the latest Remotion toolchain.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WikiSkill evolution&lt;/strong&gt;: Added persistent rollout knowledge across optimization runs, complete with sandboxed live evaluations and validation gating.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pushing skill resolution to runtime keeps the core CLI lean while giving agents the best available tools.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's fixed
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Enforced literal UTF-8 output for Claude tool-call parameters to prevent unicode escape display corruption in interactive terminal prompts.&lt;/li&gt;
&lt;li&gt;Disabled memory tools at the Serena MCP boundary to strictly enforce state safety during managed launches.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's better
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;State decoupling&lt;/strong&gt;: Decoupled coordination state from Serena by routing session summaries through a neutral exporter.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unified intelligence&lt;/strong&gt;: Routed all managed clients through a single fixed Serena capability surface for context gathering.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Documentation structure&lt;/strong&gt;: Moved the Quick Start section above the control boundary explanations in all README files to reduce time-to-action.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# macOS / Linux&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/first-fluke/oh-my-agent/main/cli/install.sh | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Windows (PowerShell)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;irm&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;https://raw.githubusercontent.com/first-fluke/oh-my-agent/main/cli/install.ps1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;iex&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;oh-my-agent is built for teams who orchestrate more than they prompt. Next up: exposing the managed skill layer to custom user workflows.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/first-fluke/oh-my-agent" rel="noopener noreferrer"&gt;https://github.com/first-fluke/oh-my-agent&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>programming</category>
      <category>agents</category>
    </item>
    <item>
      <title>oh-my-agent: strict commit attribution and capability routing</title>
      <dc:creator>gracefullight</dc:creator>
      <pubDate>Thu, 27 Aug 2026 02:05:51 +0000</pubDate>
      <link>https://dev.to/gracefullight/oh-my-agent-strict-commit-attribution-and-capability-routing-h46</link>
      <guid>https://dev.to/gracefullight/oh-my-agent-strict-commit-attribution-and-capability-routing-h46</guid>
      <description>&lt;p&gt;When you tell an agent to write code, getting it to commit with the right attribution is surprisingly brittle. A typo in a co-author address survives a history rewrite and ruins contributor graphs forever. This week, we fixed that and tightened up how capabilities are routed across the system.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's new
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Added a native &lt;code&gt;commit-msg&lt;/code&gt; hook to enforce exact &lt;code&gt;Co-authored-by&lt;/code&gt; addresses, guaranteeing correct GitHub attribution for agent commits.&lt;/li&gt;
&lt;li&gt;Granted &lt;code&gt;oma&lt;/code&gt; and &lt;code&gt;ls&lt;/code&gt; blanket permissions for Claude and Qwen, cutting down on repetitive confirmation prompts during long runs.&lt;/li&gt;
&lt;li&gt;Updated Ralph to lock criteria autonomously without stopping for user confirmation in persistent mode.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The git hook checks against your allowed addresses before the commit writes to disk. If you already use &lt;code&gt;husky&lt;/code&gt; or &lt;code&gt;lefthook&lt;/code&gt;, it politely provides the one line you need to add instead of taking over your configuration.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's fixed
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Pointed the default &lt;code&gt;serena&lt;/code&gt; configuration at the shared bridge daemon, saving memory by preventing duplicate server processes per session.&lt;/li&gt;
&lt;li&gt;Included &lt;code&gt;pi&lt;/code&gt; and &lt;code&gt;opencode&lt;/code&gt; extension vendors in the default linking path so they generate and document correctly out of the box.&lt;/li&gt;
&lt;li&gt;Replaced bare trigger words with multi-word phrases for French and Portuguese queries to eliminate false-positive workflow activations.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's better
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Renamed 5 actor-style skill identifiers to capability nouns for clearer routing. Migration &lt;code&gt;023&lt;/code&gt; handles the transition automatically.&lt;/li&gt;
&lt;li&gt;Upgraded the keyword detector to safely ignore multiline bug and error inquiries, keeping memory coordination focused on actual state changes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# macOS / Linux&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/first-fluke/oh-my-agent/main/cli/install.sh | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Windows (PowerShell)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;irm&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;https://raw.githubusercontent.com/first-fluke/oh-my-agent/main/cli/install.ps1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;iex&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;oh-my-agent is built for teams who orchestrate more than they prompt. Next up: expanding capability discovery across distributed teams.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/first-fluke/oh-my-agent" rel="noopener noreferrer"&gt;https://github.com/first-fluke/oh-my-agent&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>programming</category>
      <category>agents</category>
    </item>
    <item>
      <title>oh-my-agent: cross-vendor refactor guards and isolated eval</title>
      <dc:creator>gracefullight</dc:creator>
      <pubDate>Thu, 20 Aug 2026 02:01:06 +0000</pubDate>
      <link>https://dev.to/gracefullight/oh-my-agent-cross-vendor-refactor-guards-and-isolated-eval-4c9o</link>
      <guid>https://dev.to/gracefullight/oh-my-agent-cross-vendor-refactor-guards-and-isolated-eval-4c9o</guid>
      <description>&lt;p&gt;oh-my-agent 12.4.0 just shipped with a cross-vendor refactor guard and isolated harness evaluation. When an agent edits too many lines in a single file without refactoring, the runtime now blocks the stop event and dispatches a dedicated refactor engineer to clean up the mess before returning control.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's new
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cross-vendor refactor guard&lt;/strong&gt;: A new &lt;code&gt;refactor_guard&lt;/code&gt; hook tracks line budgets across edit tools. If an agent exceeds 500 lines in a single file, the hook blocks termination and dispatches &lt;code&gt;refactor-engineer&lt;/code&gt;. This works across all 9 supported vendors.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Isolated harness evaluation&lt;/strong&gt;: The &lt;code&gt;oma harness&lt;/code&gt; command now compares scoped &lt;code&gt;.agents&lt;/code&gt; overlays in paired temporary workspaces, using deterministic artifact checks and hash-bound record and replay.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent Plugins support&lt;/strong&gt;: A standard git clone of the repository now acts as an installable Agent Plugins 1.0.0 package, exposing &lt;code&gt;plugin.json&lt;/code&gt;, &lt;code&gt;mcp.json&lt;/code&gt;, and the skills tree directly at the repository root.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Translation profiles&lt;/strong&gt;: &lt;code&gt;oma-translator&lt;/code&gt; now uses per-language profiles (&lt;code&gt;en&lt;/code&gt;, &lt;code&gt;ko&lt;/code&gt;, &lt;code&gt;ja&lt;/code&gt;, &lt;code&gt;zh&lt;/code&gt;) to isolate register systems and typography rules from the shared pattern taxonomy.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Controlling an agent's context requires precision. The new refactor guard ensures that large changes are forced into a refactoring phase before the session ends, keeping files maintainable.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's fixed
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;SCM decisions like commit splits and merges are no longer recorded as durable facts in the agent memory store. They are already in git history, and skipping them prevents repository metadata from crowding out real cross-session decisions.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;oma link&lt;/code&gt; now renders the union of vendor hooks and subagents for shared files like &lt;code&gt;AGENTS.md&lt;/code&gt;, preventing the file from flip-flopping when different vendors trigger the merge.&lt;/li&gt;
&lt;li&gt;User-added MCP servers in &lt;code&gt;.cursor/mcp.json&lt;/code&gt; are preserved during updates. The CLI now merges its managed servers rather than overwriting the entire file.&lt;/li&gt;
&lt;li&gt;OpenCode authentication checks now correctly derive the provider from the row's model specification, resolving false offline reports when users authenticated with alternative providers.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's better
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Replaced unreachable context budget claims in the documentation with measured, reproducible token costs. The two-layer skill design avoids roughly 75 percent of skill-loading overhead on complex tasks.&lt;/li&gt;
&lt;li&gt;Scoped Single Source of Truth (SSOT) protection strictly to definition files. Agents are now explicitly instructed that run outputs in &lt;code&gt;.agents/results/&lt;/code&gt; are expected, preventing them from deleting session handoff state to restore protection.&lt;/li&gt;
&lt;li&gt;Korean translations across all 22 pages are synced to parity with the English source, normalizing instruction registers and fixing legacy structural drift.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# macOS / Linux&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/first-fluke/oh-my-agent/main/cli/install.sh | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Windows (PowerShell)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;irm&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;https://raw.githubusercontent.com/first-fluke/oh-my-agent/main/cli/install.ps1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;iex&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;oh-my-agent is built for teams who orchestrate more than they prompt. Next up: multi-turn rollback primitives for stalled reasoning loops.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/first-fluke/oh-my-agent" rel="noopener noreferrer"&gt;https://github.com/first-fluke/oh-my-agent&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>programming</category>
      <category>agents</category>
    </item>
  </channel>
</rss>
