refactor(omo-codex): rename ultragoal component to ulw-loop

Fully rename the ultragoal component to ulw-loop so the identifier
matches the ulw-loop skill it powers. Renames the component directory,
nested skill, TS identifiers (UlwLoop / ULW_LOOP_* / ulwLoop*), the
omo ulw-loop CLI subcommand, the .omo/ulw-loop state directory, the
OMO_ULW_LOOP_STEER directive token, and the @code-yeongyu/codex-ulw-loop
package. Also threads Atlas-style right-sized parallel worker delegation
and a Prometheus-style QA + maximum-parallelism plan into the ulw-loop
skill, with a critical post-subagent QA gate.

Updates aggregate wiring (plugin package components, hooks.json,
sync-skills), the install-codex agent-link test fixture, and user docs.
This commit is contained in:
YeonGyu-Kim
2026-05-29 12:38:22 +09:00
parent 0edf087117
commit 8c6e8e4986
84 changed files with 1429 additions and 1392 deletions
@@ -12,7 +12,7 @@ async function makeFixture(): Promise<{ codexHome: string; pluginRoot: string }>
const codexHome = join(root, "codex")
const pluginRoot = join(root, "plugin")
await mkdir(join(pluginRoot, "components", "ultrawork", "agents"), { recursive: true })
await mkdir(join(pluginRoot, "components", "ultragoal", "agents"), { recursive: true })
await mkdir(join(pluginRoot, "components", "ulw-loop", "agents"), { recursive: true })
await writeFile(
join(pluginRoot, "components", "ultrawork", "agents", "explorer.toml"),
'name = "explorer"\n',
@@ -22,7 +22,7 @@ async function makeFixture(): Promise<{ codexHome: string; pluginRoot: string }>
'name = "librarian"\n',
)
await writeFile(
join(pluginRoot, "components", "ultragoal", "agents", "planner.toml"),
join(pluginRoot, "components", "ulw-loop", "agents", "planner.toml"),
'name = "planner"\n',
)
return { codexHome, pluginRoot }
@@ -160,7 +160,7 @@ describe("linkCachedPluginAgents", () => {
// then
const targets = linked.map((entry) => entry.target).sort()
expect(targets).toContain(join(pluginRoot, "components", "ultrawork", "agents", "explorer.toml"))
expect(targets).toContain(join(pluginRoot, "components", "ultragoal", "agents", "planner.toml"))
expect(targets).toContain(join(pluginRoot, "components", "ulw-loop", "agents", "planner.toml"))
})
test("returns empty list when plugin has no bundled agents", async () => {