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:
@@ -20,7 +20,7 @@ const expectedSkills = [
|
||||
"review-work",
|
||||
"rules",
|
||||
"start-work",
|
||||
"ultragoal",
|
||||
"ulw-loop",
|
||||
];
|
||||
|
||||
test("#given synced aggregate Codex skills #when inspected #then component and shared skills are present", async () => {
|
||||
@@ -41,9 +41,9 @@ test("#given synced aggregate Codex skills #when inspected #then component and s
|
||||
}
|
||||
});
|
||||
|
||||
test("#given synced ultragoal skill #when Codex hint metadata is inspected #then ulw-loop surfaces the ultragoal alias", async () => {
|
||||
test("#given synced ulw-loop skill #when Codex hint metadata is inspected #then ulw-loop surfaces the ulw-loop alias", async () => {
|
||||
// given
|
||||
const skillRoot = join(root, "skills", "ultragoal");
|
||||
const skillRoot = join(root, "skills", "ulw-loop");
|
||||
|
||||
// when
|
||||
const skill = await readFile(join(skillRoot, "SKILL.md"), "utf8");
|
||||
@@ -53,21 +53,21 @@ test("#given synced ultragoal skill #when Codex hint metadata is inspected #then
|
||||
assert.match(skill, /^---\nname: ulw-loop\n/m);
|
||||
assert.match(skill, /Goal-like loop that uses ultrawork mode to decompose work into systematic, evidence-bound steps\./);
|
||||
assert.match(interfaceMetadata, /display_name: "ulw loop"/);
|
||||
assert.doesNotMatch(interfaceMetadata, /ulw-loop \/ ultragoal/);
|
||||
assert.doesNotMatch(interfaceMetadata, /ulw-loop \/ ulw-loop/);
|
||||
assert.match(interfaceMetadata, /short_description: "Goal-like ultrawork loop for systematic decomposition"/);
|
||||
assert.match(interfaceMetadata, /default_prompt: "Use \$ulw-loop/);
|
||||
});
|
||||
|
||||
test("#given synced ultragoal skill #when Codex hint metadata is inspected #then ultragoal remains discoverable as an alias", async () => {
|
||||
test("#given synced ulw-loop skill #when Codex hint metadata is inspected #then ulw-loop remains discoverable as an alias", async () => {
|
||||
// given
|
||||
const skillRoot = join(root, "skills", "ultragoal");
|
||||
const skillRoot = join(root, "skills", "ulw-loop");
|
||||
|
||||
// when
|
||||
const interfaceMetadata = await readFile(join(skillRoot, "agents", "openai.yaml"), "utf8");
|
||||
|
||||
// then
|
||||
assert.match(interfaceMetadata, /search_terms:/);
|
||||
assert.match(interfaceMetadata, /- "ultragoal"/);
|
||||
assert.match(interfaceMetadata, /- "ulw-loop"/);
|
||||
});
|
||||
|
||||
test("#given synced aggregate Codex skills #when they contain OpenCode orchestration examples #then Codex tool compatibility guidance is injected", async () => {
|
||||
|
||||
Reference in New Issue
Block a user