oh-my-opencode 5.0.0-beta.19 → 5.0.0-beta.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. package/README.ja.md +3 -3
  2. package/README.ko.md +3 -3
  3. package/README.md +3 -3
  4. package/README.ru.md +3 -3
  5. package/README.zh-cn.md +3 -3
  6. package/dist/cli/fallback-lane-policy.d.ts +1 -0
  7. package/dist/cli/index.js +72 -195
  8. package/dist/cli/install-codex/install-codex-test-fixtures.d.ts +1 -1
  9. package/dist/cli-node/index.js +72 -195
  10. package/dist/config/schema/commands.d.ts +1 -1
  11. package/dist/config/schema/hooks.d.ts +1 -1
  12. package/dist/config/schema/oh-my-opencode-config.d.ts +4 -1
  13. package/dist/config/schema/ulw-execute.d.ts +5 -0
  14. package/dist/config/validate.d.ts +2 -0
  15. package/dist/create-hooks.d.ts +2 -1
  16. package/dist/features/builtin-commands/templates/ulw-execute.d.ts +1 -0
  17. package/dist/features/builtin-commands/types.d.ts +1 -1
  18. package/dist/hooks/atlas/atlas-hook.d.ts +1 -0
  19. package/dist/hooks/atlas/atlas-lifecycle-store.d.ts +50 -0
  20. package/dist/hooks/atlas/event-handler.d.ts +1 -0
  21. package/dist/hooks/atlas/tool-execute-before.d.ts +3 -0
  22. package/dist/hooks/atlas/types.d.ts +1 -0
  23. package/dist/hooks/index.d.ts +1 -1
  24. package/dist/hooks/prometheus-md-only/agent-resolution.d.ts +2 -2
  25. package/dist/hooks/sisyphus-junior-notepad/constants.d.ts +1 -1
  26. package/dist/hooks/{start-work → ulw-execute}/context-info-builder.d.ts +1 -1
  27. package/dist/hooks/{start-work → ulw-execute}/index.d.ts +1 -1
  28. package/dist/hooks/ulw-execute/ulw-execute-hook.d.ts +23 -0
  29. package/dist/index.js +322 -258
  30. package/dist/oh-my-opencode.schema.json +14 -1
  31. package/dist/plugin/chat-message/types.d.ts +3 -3
  32. package/dist/plugin/chat-message/ulw-execute-message.d.ts +5 -0
  33. package/dist/plugin/hooks/create-core-hooks.d.ts +1 -1
  34. package/dist/plugin/hooks/create-session-hooks.d.ts +2 -2
  35. package/dist/skills/frontend/SKILL.md +1 -1
  36. package/dist/skills/frontend/references/designpowers/README.md +1 -1
  37. package/dist/skills/frontend/references/designpowers/lane-a-direction.md +1 -1
  38. package/dist/skills/frontend/references/designpowers/lane-b-execution.md +11 -11
  39. package/dist/skills/frontend/references/designpowers/lane-d-memory.md +3 -3
  40. package/dist/skills/frontend/references/designpowers/orchestration.md +1 -1
  41. package/dist/skills/frontend/references/designpowers/routing.md +5 -5
  42. package/dist/skills/{start-work → ulw-execute}/SKILL.md +7 -7
  43. package/dist/skills/ulw-plan/SKILL.md +4 -4
  44. package/dist/skills/ulw-plan/references/full-workflow.md +4 -4
  45. package/dist/skills/ulw-plan/references/intent-unclear.md +2 -2
  46. package/dist/tui.js +34 -9
  47. package/package.json +15 -15
  48. package/packages/omo-codex/THIRD-PARTY-NOTICES.md +4 -4
  49. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +4 -4
  50. package/packages/omo-codex/plugin/README.md +1 -1
  51. package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +2 -2
  52. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  53. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  54. package/packages/omo-codex/plugin/components/codegraph/package.json +1 -1
  55. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  56. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  57. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  58. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  59. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  60. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
  61. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +2 -2
  62. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  63. package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
  64. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  65. package/packages/omo-codex/plugin/components/rules/package.json +1 -1
  66. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  67. package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
  68. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  69. package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
  70. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  71. package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
  72. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/SKILL.md +4 -4
  73. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/full-workflow.md +4 -4
  74. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/intent-unclear.md +2 -2
  75. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/AGENTS.md +2 -2
  76. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/NOTICE +1 -1
  77. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/README.md +5 -5
  78. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/directive.md +6 -6
  79. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/dist/cli.js +12 -12
  80. package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +28 -0
  81. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/package.json +8 -8
  82. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/boulder-reader.ts +1 -1
  83. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/cli.ts +1 -1
  84. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/codex-hook.ts +3 -3
  85. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/directive.ts +1 -1
  86. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/index.ts +1 -1
  87. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/boulder-reader.test.ts +3 -3
  88. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/cli.test.ts +1 -1
  89. package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/codex-hook.test.ts +6 -6
  90. package/packages/omo-codex/plugin/components/ulw-loop/CHANGELOG.md +1 -1
  91. package/packages/omo-codex/plugin/components/ulw-loop/dist/stop-resume-hook.js +3 -3
  92. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +4 -4
  93. package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
  94. package/packages/omo-codex/plugin/components/ulw-loop/src/stop-resume-hook.ts +3 -3
  95. package/packages/omo-codex/plugin/components/ulw-loop/test/stop-resume-hook.test.ts +1 -1
  96. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  97. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  98. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  99. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-codegraph-init-guidance.json +1 -1
  100. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  101. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  102. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  103. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  104. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  105. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  106. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  107. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  108. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  109. package/packages/omo-codex/plugin/hooks/session-start-checking-codegraph-bootstrap.json +1 -1
  110. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  111. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  112. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +17 -0
  113. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  114. package/packages/omo-codex/plugin/hooks/subagent-stop-checking-ulw-execute-continuation.json +17 -0
  115. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  116. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  117. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  118. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  119. package/packages/omo-codex/plugin/package-lock.json +34 -34
  120. package/packages/omo-codex/plugin/package.json +2 -2
  121. package/packages/omo-codex/plugin/scripts/auto-update-plan.mjs +1 -1
  122. package/packages/omo-codex/plugin/scripts/sync-skills.mjs +11 -11
  123. package/packages/omo-codex/plugin/skills/frontend/SKILL.md +1 -1
  124. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/README.md +1 -1
  125. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-a-direction.md +1 -1
  126. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-b-execution.md +11 -11
  127. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-d-memory.md +3 -3
  128. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/orchestration.md +1 -1
  129. package/packages/omo-codex/plugin/skills/frontend/references/designpowers/routing.md +5 -5
  130. package/packages/omo-codex/plugin/skills/review-work/SKILL.md +1 -1
  131. package/packages/omo-codex/plugin/skills/{start-work → ulw-execute}/SKILL.md +10 -10
  132. package/packages/omo-codex/plugin/skills/ulw-execute/agents/openai.yaml +2 -0
  133. package/packages/omo-codex/plugin/skills/ulw-plan/SKILL.md +4 -4
  134. package/packages/omo-codex/plugin/skills/ulw-plan/references/full-workflow.md +4 -4
  135. package/packages/omo-codex/plugin/skills/ulw-plan/references/intent-unclear.md +2 -2
  136. package/packages/omo-codex/plugin/test/aggregate-hooks.test.mjs +4 -4
  137. package/packages/omo-codex/plugin/test/aggregate-manifest.test.mjs +1 -1
  138. package/packages/omo-codex/plugin/test/component-bin-names.test.mjs +2 -2
  139. package/packages/omo-codex/plugin/test/component-bundled-cli.test.mjs +1 -1
  140. package/packages/omo-codex/plugin/test/component-hook-contract-cases.mjs +2 -2
  141. package/packages/omo-codex/plugin/test/hook-status-message.test.mjs +4 -4
  142. package/packages/omo-codex/plugin/test/sync-skills-test-support.mjs +12 -12
  143. package/packages/omo-codex/scripts/install-dist/install-local.mjs +4 -4
  144. package/packages/shared-skills/skills/frontend/SKILL.md +1 -1
  145. package/packages/shared-skills/skills/frontend/references/designpowers/README.md +1 -1
  146. package/packages/shared-skills/skills/frontend/references/designpowers/lane-a-direction.md +1 -1
  147. package/packages/shared-skills/skills/frontend/references/designpowers/lane-b-execution.md +11 -11
  148. package/packages/shared-skills/skills/frontend/references/designpowers/lane-d-memory.md +3 -3
  149. package/packages/shared-skills/skills/frontend/references/designpowers/orchestration.md +1 -1
  150. package/packages/shared-skills/skills/frontend/references/designpowers/routing.md +5 -5
  151. package/packages/shared-skills/skills/{start-work → ulw-execute}/SKILL.md +7 -7
  152. package/packages/shared-skills/skills/ulw-plan/SKILL.md +4 -4
  153. package/packages/shared-skills/skills/ulw-plan/references/full-workflow.md +4 -4
  154. package/packages/shared-skills/skills/ulw-plan/references/intent-unclear.md +2 -2
  155. package/dist/config/schema/start-work.d.ts +0 -5
  156. package/dist/features/builtin-commands/templates/start-work.d.ts +0 -1
  157. package/dist/hooks/start-work/start-work-hook.d.ts +0 -23
  158. package/dist/plugin/chat-message/start-work-message.d.ts +0 -5
  159. package/packages/omo-codex/plugin/components/start-work-continuation/hooks/hooks.json +0 -28
  160. package/packages/omo-codex/plugin/hooks/stop-checking-start-work-continuation.json +0 -17
  161. package/packages/omo-codex/plugin/hooks/subagent-stop-checking-start-work-continuation.json +0 -17
  162. package/packages/omo-codex/plugin/skills/start-work/agents/openai.yaml +0 -2
  163. /package/dist/hooks/{start-work → ulw-execute}/context-info-formatters.d.ts +0 -0
  164. /package/dist/hooks/{start-work → ulw-execute}/explicit-plan-context.d.ts +0 -0
  165. /package/dist/hooks/{start-work → ulw-execute}/notepad-scaffold.d.ts +0 -0
  166. /package/dist/hooks/{start-work → ulw-execute}/parse-user-request.d.ts +0 -0
  167. /package/dist/hooks/{start-work → ulw-execute}/plan-discovery-context.d.ts +0 -0
  168. /package/dist/hooks/{start-work → ulw-execute}/plan-selection.d.ts +0 -0
  169. /package/dist/hooks/{start-work → ulw-execute}/session-plan-affinity.d.ts +0 -0
  170. /package/dist/hooks/{start-work → ulw-execute}/work-initializer.d.ts +0 -0
  171. /package/dist/hooks/{start-work → ulw-execute}/worktree-block.d.ts +0 -0
  172. /package/dist/hooks/{start-work → ulw-execute}/worktree-detector.d.ts +0 -0
  173. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/.gitattributes +0 -0
  174. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/CHANGELOG.md +0 -0
  175. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/LICENSE +0 -0
  176. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/biome.json +0 -0
  177. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/plan-checklist.ts +0 -0
  178. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/types.ts +0 -0
  179. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/boulder-completed.json +0 -0
  180. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/boulder-mixed-platforms.json +0 -0
  181. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/boulder-single-codex-work.json +0 -0
  182. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/plan-all-done.md +0 -0
  183. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/plan-scaffold.md +0 -0
  184. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/plan-with-nested-checkboxes.md +0 -0
  185. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/plan-with-unchecked.md +0 -0
  186. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/tsconfig.build.json +0 -0
  187. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/tsconfig.json +0 -0
  188. /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/vitest.config.ts +0 -0
@@ -61,7 +61,7 @@
61
61
  "enum": [
62
62
  "goal",
63
63
  "refactor",
64
- "start-work",
64
+ "ulw-execute",
65
65
  "stop-continuation",
66
66
  "remove-ai-slops",
67
67
  "hyperplan"
@@ -9890,6 +9890,19 @@
9890
9890
  },
9891
9891
  "additionalProperties": false
9892
9892
  },
9893
+ "ulw_execute": {
9894
+ "type": "object",
9895
+ "properties": {
9896
+ "auto_commit": {
9897
+ "default": true,
9898
+ "type": "boolean"
9899
+ }
9900
+ },
9901
+ "required": [
9902
+ "auto_commit"
9903
+ ],
9904
+ "additionalProperties": false
9905
+ },
9893
9906
  "start_work": {
9894
9907
  "type": "object",
9895
9908
  "properties": {
@@ -19,7 +19,7 @@ export type ChatMessageInput = {
19
19
  readonly modelID: string;
20
20
  };
21
21
  };
22
- export type StartWorkHookOutput = {
22
+ export type UlwExecuteHookOutput = {
23
23
  readonly parts: Array<{
24
24
  readonly type: string;
25
25
  readonly text?: string;
@@ -29,7 +29,7 @@ export type SessionModelOverride = {
29
29
  readonly providerID: string;
30
30
  readonly modelID: string;
31
31
  };
32
- export type WorkStartingCommand = "start-work" | "ralph-loop" | "ulw-loop";
32
+ export type WorkStartingCommand = "ulw-execute" | "ralph-loop" | "ulw-loop";
33
33
  type ChatMessageHook = {
34
34
  "chat.message"?: (input: ChatMessageInput, output: ChatMessageHandlerOutput) => Promise<void>;
35
35
  };
@@ -77,7 +77,7 @@ export type ChatMessageHooks = {
77
77
  noSisyphusGpt?: ChatMessageHook | null;
78
78
  noHephaestusNonGpt?: ChatMessageHook | null;
79
79
  hephaestusAgentsMdInjector?: ChatMessageHook | null;
80
- startWork?: ChatMessageHook | null;
80
+ ulwExecute?: ChatMessageHook | null;
81
81
  goal?: GoalHook | null;
82
82
  todoContinuationEnforcer?: TodoContinuationEnforcerHook | null;
83
83
  };
@@ -0,0 +1,5 @@
1
+ import type { ChatMessageHooks, ChatMessageInput, ChatMessageHandlerOutput, UlwExecuteHookOutput, WorkStartingCommand } from "./types";
2
+ export declare function isUlwExecuteHookOutput(value: unknown): value is UlwExecuteHookOutput;
3
+ export declare function isUlwExecuteFallbackTemplate(promptText: string): boolean;
4
+ export declare function clearStoppedContinuationBeforeUlwExecute(hooks: ChatMessageHooks, sessionID: string, command: WorkStartingCommand): void;
5
+ export declare function runUlwExecuteHookIfApplicable(hooks: ChatMessageHooks, input: ChatMessageInput, output: ChatMessageHandlerOutput): Promise<void>;
@@ -28,7 +28,7 @@ export declare function createCoreHooks(args: {
28
28
  goal: ReturnType<typeof import("../../hooks").createGoalHook> | null;
29
29
  editErrorRecovery: ReturnType<typeof import("../../hooks").createEditErrorRecoveryHook> | null;
30
30
  delegateTaskRetry: ReturnType<typeof import("../../hooks").createDelegateTaskRetryHook> | null;
31
- startWork: ReturnType<typeof import("../../hooks").createStartWorkHook> | null;
31
+ ulwExecute: ReturnType<typeof import("../../hooks").createUlwExecuteHook> | null;
32
32
  prometheusMdOnly: ReturnType<typeof import("../../hooks").createPrometheusMdOnlyHook> | null;
33
33
  sisyphusJuniorNotepad: ReturnType<typeof import("../../hooks").createSisyphusJuniorNotepadHook> | null;
34
34
  noSisyphusGpt: ReturnType<typeof import("../../hooks").createNoSisyphusGptHook> | null;
@@ -3,7 +3,7 @@ import type { BackgroundManager } from "../../features/background-agent";
3
3
  import type { ModelFallbackControllerAccessor } from "../../hooks/model-fallback";
4
4
  import type { ModelCacheState } from "../../plugin-state";
5
5
  import type { PluginContext } from "../types";
6
- import { createSessionNotification, createThinkModeHook, createModelFallbackHook, createAnthropicContextWindowLimitRecoveryHook, createAutoUpdateCheckerHook, createCodegraphBootstrapHook, createAstGrepSgProvisionHook, createAgentUsageReminderHook, createNonInteractiveEnvHook, createInteractiveBashSessionHook, createEditErrorRecoveryHook, createDelegateTaskRetryHook, createTaskResumeInfoHook, createStartWorkHook, createPrometheusMdOnlyHook, createSisyphusJuniorNotepadHook, createNoSisyphusGptHook, createNoHephaestusNonGptHook, createHephaestusAgentsMdInjectorHook, createQuestionLabelTruncatorHook, createPreemptiveCompactionHook, createRuntimeFallbackHook, createLegacyPluginToastHook } from "../../hooks";
6
+ import { createSessionNotification, createThinkModeHook, createModelFallbackHook, createAnthropicContextWindowLimitRecoveryHook, createAutoUpdateCheckerHook, createCodegraphBootstrapHook, createAstGrepSgProvisionHook, createAgentUsageReminderHook, createNonInteractiveEnvHook, createInteractiveBashSessionHook, createEditErrorRecoveryHook, createDelegateTaskRetryHook, createTaskResumeInfoHook, createUlwExecuteHook, createPrometheusMdOnlyHook, createSisyphusJuniorNotepadHook, createNoSisyphusGptHook, createNoHephaestusNonGptHook, createHephaestusAgentsMdInjectorHook, createQuestionLabelTruncatorHook, createPreemptiveCompactionHook, createRuntimeFallbackHook, createLegacyPluginToastHook } from "../../hooks";
7
7
  import { createGoalHook } from "../../hooks/goal";
8
8
  export type SessionHooks = {
9
9
  preemptiveCompaction: ReturnType<typeof createPreemptiveCompactionHook> | null;
@@ -20,7 +20,7 @@ export type SessionHooks = {
20
20
  goal: ReturnType<typeof createGoalHook> | null;
21
21
  editErrorRecovery: ReturnType<typeof createEditErrorRecoveryHook> | null;
22
22
  delegateTaskRetry: ReturnType<typeof createDelegateTaskRetryHook> | null;
23
- startWork: ReturnType<typeof createStartWorkHook> | null;
23
+ ulwExecute: ReturnType<typeof createUlwExecuteHook> | null;
24
24
  prometheusMdOnly: ReturnType<typeof createPrometheusMdOnlyHook> | null;
25
25
  sisyphusJuniorNotepad: ReturnType<typeof createSisyphusJuniorNotepadHook> | null;
26
26
  noSisyphusGpt: ReturnType<typeof createNoSisyphusGptHook> | null;
@@ -107,7 +107,7 @@ Domains: `product` `style` `typography` `color` `landing` `chart` `ux` `react` `
107
107
 
108
108
  ## Ruleset 4 — designpowers (`references/designpowers/`)
109
109
 
110
- `README.md` routes the pinned `Owl-Listener/designpowers` corpus into this workflow. It supplies design context — personas, accessibility and cognitive constraints, critique, debt, handoff, synthetic user testing, motion, role prompts — that must be distilled into `DESIGN.md` first, then used as the implementation contract. It replaces nothing: not this skill, not `/visual-qa`, `/ulw-plan`, `/start-work`, or `/review-work`.
110
+ `README.md` routes the pinned `Owl-Listener/designpowers` corpus into this workflow. It supplies design context — personas, accessibility and cognitive constraints, critique, debt, handoff, synthetic user testing, motion, role prompts — that must be distilled into `DESIGN.md` first, then used as the implementation contract. It replaces nothing: not this skill, not `/visual-qa`, `/ulw-plan`, `/ulw-execute`, or `/review-work`.
111
111
 
112
112
  ## Quick routes — most common requests
113
113
 
@@ -9,7 +9,7 @@ The purpose of this ruleset is to enrich the existing frontend workflow while pr
9
9
  - `references/design/README.md` still owns the `DESIGN.md` contract, taste routing, brand references, React dev tooling, and browser-based design QA expectations.
10
10
  - `references/perfection/README.md` still owns Lighthouse, performance, SEO, accessibility audit mechanics, and real-browser verification.
11
11
  - `/visual-qa` still owns objective rendered evidence for visual claims.
12
- - `/ulw-plan`, `/start-work`, and `/review-work` still own planning, execution, and final implementation review when those phases apply.
12
+ - `/ulw-plan`, `/ulw-execute`, and `/review-work` still own planning, execution, and final implementation review when those phases apply.
13
13
 
14
14
  ## Load Order
15
15
 
@@ -61,4 +61,4 @@ Lane A passes only when the plan has inspectable design context, not vague inten
61
61
 
62
62
  PASS when `ulw-plan` receives this lane context and produces a decision-complete plan whose tasks are design-aware, persona-aware, and evidence-bound.
63
63
 
64
- FAIL when the plan skips inclusive-personas, buries accessibility as a final polish item, treats taste as generic style, writes a parallel design plan, or leaves design decisions for start-work workers to invent.
64
+ FAIL when the plan skips inclusive-personas, buries accessibility as a final polish item, treats taste as generic style, writes a parallel design plan, or leaves design decisions for ulw-execute workers to invent.
@@ -1,25 +1,25 @@
1
1
  # Lane B: Design Execution Guidance
2
2
 
3
- Lane B feeds `start-work` workers and always loads `frontend` for UI implementation. It does not install a separate builder. Its job is to carry designpowers composition, interaction, motion, content, responsive, adaptive, token, and cognitive-accessibility guidance into worker prompts while keeps ownership of decomposition, implementation, QA, evidence, and ledger updates.
3
+ Lane B feeds `ulw-execute` workers and always loads `frontend` for UI implementation. It does not install a separate builder. Its job is to carry designpowers composition, interaction, motion, content, responsive, adaptive, token, and cognitive-accessibility guidance into worker prompts while keeps ownership of decomposition, implementation, QA, evidence, and ledger updates.
4
4
 
5
5
  ## Phase Owner
6
6
 
7
7
  | Capability | Materialized designpowers source | owner | Mapping |
8
8
  |---|---|---|---|
9
- | Visual hierarchy, layout, color, typography, touch targets, and WCAG contrast | `ui-composition` | `start-work` worker plus `frontend` | Add visual constraints and acceptance checks to worker assignments. `frontend` remains the required UI implementation skill. |
10
- | States, feedback, loading, error, keyboard, touch, and recovery behavior | `interaction-design` | `start-work` worker plus `frontend` | Require every interactive component to define default, hover, focus, active, disabled, loading, success, and error states where applicable. |
11
- | Purposeful motion and reduced-motion alternatives | `motion-choreography` | `start-work` worker plus `frontend` | Require motion specs to explain what changed, what to look at next, or how elements relate; require safe alternatives. |
12
- | Content-driven breakpoints and zoom behavior | `responsive-patterns` | `start-work` worker plus `frontend` | Require responsive proof at narrow, mid, desktop, and 200 percent zoom scenarios when the surface is visual. |
13
- | User preference adaptation | `adaptive-interfaces` | `start-work` worker plus `frontend` | Require support for relevant preferences such as color scheme, contrast, reduced motion, text sizing, and density. |
14
- | Mental load, wayfinding, focus management, memory demands, and recovery paths | `cognitive-accessibility` | `start-work` worker plus `frontend` | Add COGA-style checks directly to worker acceptance criteria for flows, forms, navigation, and dense tools. |
15
- | Plain-language labels, headings, alt text, link text, errors, and instructions | `accessible-content` and `voice-and-tone` | `start-work` worker plus `frontend` | Require final copy, no placeholders, useful errors, readable labels, and consistent tone. |
9
+ | Visual hierarchy, layout, color, typography, touch targets, and WCAG contrast | `ui-composition` | `ulw-execute` worker plus `frontend` | Add visual constraints and acceptance checks to worker assignments. `frontend` remains the required UI implementation skill. |
10
+ | States, feedback, loading, error, keyboard, touch, and recovery behavior | `interaction-design` | `ulw-execute` worker plus `frontend` | Require every interactive component to define default, hover, focus, active, disabled, loading, success, and error states where applicable. |
11
+ | Purposeful motion and reduced-motion alternatives | `motion-choreography` | `ulw-execute` worker plus `frontend` | Require motion specs to explain what changed, what to look at next, or how elements relate; require safe alternatives. |
12
+ | Content-driven breakpoints and zoom behavior | `responsive-patterns` | `ulw-execute` worker plus `frontend` | Require responsive proof at narrow, mid, desktop, and 200 percent zoom scenarios when the surface is visual. |
13
+ | User preference adaptation | `adaptive-interfaces` | `ulw-execute` worker plus `frontend` | Require support for relevant preferences such as color scheme, contrast, reduced motion, text sizing, and density. |
14
+ | Mental load, wayfinding, focus management, memory demands, and recovery paths | `cognitive-accessibility` | `ulw-execute` worker plus `frontend` | Add COGA-style checks directly to worker acceptance criteria for flows, forms, navigation, and dense tools. |
15
+ | Plain-language labels, headings, alt text, link text, errors, and instructions | `accessible-content` and `voice-and-tone` | `ulw-execute` worker plus `frontend` | Require final copy, no placeholders, useful errors, readable labels, and consistent tone. |
16
16
  | Tokens and design-system consistency | `token-architecture` and `design-system-alignment` | `frontend` | Require real design tokens and existing component patterns before new one-off styling. |
17
17
 
18
18
  Materialized agent references for this lane: `design-lead`, `motion-designer`, and `content-writer`. They are prompt-role references for spawned OpenAgent work, not alternate executors.
19
19
 
20
20
  ## Prompt Injection
21
21
 
22
- Add this block to each `start-work` implementation worker that touches UI:
22
+ Add this block to each `ulw-execute` implementation worker that touches UI:
23
23
 
24
24
  ```text
25
25
  Load `frontend` for UI implementation. Also apply Lane B Design Execution Guidance.
@@ -43,7 +43,7 @@ Do not invent visual direction that conflicts with the plan. If the plan lacks a
43
43
  Lane B worker DoneClaims must include:
44
44
 
45
45
  - Exact changed files and the `frontend` references loaded.
46
- - The real-surface QA invocation required by `start-work` for the UI surface, with captured artifact path.
46
+ - The real-surface QA invocation required by `ulw-execute` for the UI surface, with captured artifact path.
47
47
  - Screenshot, browser, HTTP, or xterm.js web-terminal artifacts appropriate to the visible surface.
48
48
  - Accessibility evidence from the existing OpenAgent frontend path, such as Lighthouse, react-doctor, keyboard checks, or other plan-required checks.
49
49
  - A short design trace: which persona, design principle, token, or state requirement each major UI decision satisfies.
@@ -52,7 +52,7 @@ Lane B worker DoneClaims must include:
52
52
  ## Guardrails
53
53
 
54
54
  - UI implementation always goes through `frontend`; Lane B only enriches the worker prompt.
55
- - `start-work` owns decomposition, worker dispatch, evidence ledger entries, adversarial checks, and completion state.
55
+ - `ulw-execute` owns decomposition, worker dispatch, evidence ledger entries, adversarial checks, and completion state.
56
56
  - The materialized `design-builder` concept is not used as an available executor. OpenAgent workers build.
57
57
  - No placeholders, generic copy, unverified contrast claims, decorative-only motion, or one-off hardcoded design systems pass this lane.
58
58
  - Accessibility and cognitive-accessibility are implementation constraints, not review-only cleanup.
@@ -7,7 +7,7 @@ Lane D records the design record around OpenAgent work. It owns `.omo/frontend-d
7
7
  | Capability | Source boundary | owner | Mapping |
8
8
  |---|---|---|---|
9
9
  | Track deferred design and accessibility findings | `design-debt-tracker` | `.omo/frontend-design/state.md` plus final `review-work` context | Maintain a register with ID, date, source, severity, issue, affected users, suggested fix, status, and notes. |
10
- | Package design rationale for implementers or reviewers | `design-handoff` | `start-work` and `review-work` context | Record component, interaction, accessibility, content, and rationale notes that workers or reviewers need. |
10
+ | Package design rationale for implementers or reviewers | `design-handoff` | `ulw-execute` and `review-work` context | Record component, interaction, accessibility, content, and rationale notes that workers or reviewers need. |
11
11
  | Reflect on process after completion | `design-retrospective` | final handoff context | Record what worked, what did not, fix rounds, debt health, and lessons. |
12
12
  | Maintain observational design memory | Authored concept preserved from excluded raw `design-memory` | `.omo/frontend-design/state.md` and optional personal report context | Store observations descriptively. Do not feed them back as future project constraints. |
13
13
  | Produce a taste reflection when requested | `taste-report` | user-facing handoff only | Summarize personal-layer observations only when enough evidence exists or the user asks. |
@@ -65,7 +65,7 @@ Lane D passes only when the record is inspectable:
65
65
  - Accessibility debt is either resolved or explicitly acknowledged by the user before acceptance.
66
66
  - Handoff notes cite concrete artifacts, decisions, constraints, and evidence paths.
67
67
  - Retrospective notes cite the final verification artifacts, unresolved debt, and lessons from fix rounds or user overrides.
68
- - The evidence index points to real files produced by OpenAgent planning, `start-work`, `visual-qa`, or `review-work`.
68
+ - The evidence index points to real files produced by OpenAgent planning, `ulw-execute`, `visual-qa`, or `review-work`.
69
69
 
70
70
  ## Guardrails
71
71
 
@@ -78,6 +78,6 @@ Lane D passes only when the record is inspectable:
78
78
 
79
79
  ## Pass / Fail Behavior
80
80
 
81
- PASS when state, design debt, handoff, retrospective, and evidence references are current enough for `ulw-plan`, `start-work`, `visual-qa`, or `review-work` to resume without guessing.
81
+ PASS when state, design debt, handoff, retrospective, and evidence references are current enough for `ulw-plan`, `ulw-execute`, `visual-qa`, or `review-work` to resume without guessing.
82
82
 
83
83
  FAIL when deferred findings disappear, accessibility debt is accepted without acknowledgement, handoff omits artifact paths, state is stale, retrospective claims lack evidence, or memory is used as prescriptive design input.
@@ -51,7 +51,7 @@ When using a designpowers role reference:
51
51
 
52
52
  - name the role in the prompt text;
53
53
  - include a self-contained task, deliverable, scope, and verification expectation;
54
- - route actual phase ownership to frontend design/perfection, `/ulw-plan`, `/start-work`, `/visual-qa`, or `/review-work`;
54
+ - route actual phase ownership to frontend design/perfection, `/ulw-plan`, `/ulw-execute`, `/visual-qa`, or `/review-work`;
55
55
  - record findings in the state file or review packet only when backed by artifacts or located observations.
56
56
 
57
57
  ## Reconciliation Ladder
@@ -1,13 +1,13 @@
1
1
  # designpowers Routing Contract
2
2
 
3
- `designpowers` routes design operating-layer guidance inside the existing frontend skill. It is not a replacement for `/frontend`, `/visual-qa`, `/ulw-plan`, `/start-work`, `/review-work`, or any OpenAgent skill, and it must not create a second planner, builder, verification harness, or orchestration API.
3
+ `designpowers` routes design operating-layer guidance inside the existing frontend skill. It is not a replacement for `/frontend`, `/visual-qa`, `/ulw-plan`, `/ulw-execute`, `/review-work`, or any OpenAgent skill, and it must not create a second planner, builder, verification harness, or orchestration API.
4
4
 
5
5
  ## Phase Routing
6
6
 
7
7
  | User intent or workflow phase | Load or instruct | Required handoff from designpowers |
8
8
  |---|---|---|
9
9
  | Ambiguous or multi-step web UI request; any request needing a plan | `/ulw-plan` plus this reference's `lane-a-direction.md` | Provide design discovery prompts, target users, inclusive personas, taste direction, open owner decisions, and design debt policy as planning inputs. |
10
- | Approved plan execution; continuing an OpenAgent plan | `/start-work` plus `lane-b-execution.md` | Keep execution under Boulder/ledger discipline and include current design-state constraints in worker assignments. |
10
+ | Approved plan execution; continuing an OpenAgent plan | `/ulw-execute` plus `lane-b-execution.md` | Keep execution under Boulder/ledger discipline and include current design-state constraints in worker assignments. |
11
11
  | Building, styling, redesigning, auditing, or performance-checking a web UI | frontend `design` + `perfection`; add `lane-b-execution.md` when designpowers context affects implementation | Preserve the frontend `DESIGN.md` gate, design/perfection routing, React tooling, real-browser checks, and implementation standards. |
12
12
  | Screenshots, visual regressions, clone fidelity, layout quality, alpha/CJK checks, or design QA | `/visual-qa` plus `lane-c-review.md` | Run objective evidence capture before design judgment and feed the same artifacts into persona/accessibility/heuristic review. |
13
13
  | Final implementation approval, QA my work, review changes, or significant completed implementation | `/review-work` plus `lane-c-review.md` and `lane-d-memory.md` | Include the design brief, state file path, visual artifacts, unresolved design debt, and accessibility-debt acknowledgements as review inputs. |
@@ -25,9 +25,9 @@ When planning is needed, `designpowers` supplies design-specific context and let
25
25
  - verification expectations: frontend checks, visual QA artifacts, persona walkthroughs, and review-work sign-off;
26
26
  - explicit Must Not Have constraints, including prohibited bridge/canvas tooling.
27
27
 
28
- ## Execution Through `/start-work`
28
+ ## Execution Through `/ulw-execute`
29
29
 
30
- When a plan is approved or selected, `/start-work` remains the orchestrator. `designpowers` only enriches worker prompts with design context from `.omo/frontend-design/state.md` and the selected plan. Worker prompts should carry:
30
+ When a plan is approved or selected, `/ulw-execute` remains the orchestrator. `designpowers` only enriches worker prompts with design context from `.omo/frontend-design/state.md` and the selected plan. Worker prompts should carry:
31
31
 
32
32
  - the exact plan checkbox and files in scope;
33
33
  - design-state constraints that affect the task;
@@ -35,7 +35,7 @@ When a plan is approved or selected, `/start-work` remains the orchestrator. `de
35
35
  - required `/visual-qa` loading for rendered visual proof;
36
36
  - the design debt rule: unresolved accessibility debt cannot disappear into a summary.
37
37
 
38
- Direct implementation outside `/start-work` is not part of this routing contract when a Prometheus plan is active.
38
+ Direct implementation outside `/ulw-execute` is not part of this routing contract when a Prometheus plan is active.
39
39
 
40
40
  ## UI Build Through Frontend `design` And `perfection`
41
41
 
@@ -1,6 +1,6 @@
1
1
  ---
2
- name: start-work
3
- description: "Execute a Prometheus work plan with Boulder state, evidence ledger updates, worktree discipline, parallel subagents, and Stop-hook continuation. Use after planning when the user says start work, execute plan, continue plan, resume plan, or asks to run a .omo/plans plan."
2
+ name: ulw-execute
3
+ description: "Execute a Prometheus work plan with Boulder state, evidence ledger updates, worktree discipline, parallel subagents, and Stop-hook continuation. Use after planning when the user says ulw-execute, execute plan, continue plan, resume plan, or asks to run a .omo/plans plan."
4
4
  ---
5
5
 
6
6
  ## ABSOLUTE RULE: YOU ARE AN ORCHESTRATOR — NEVER THE IMPLEMENTER
@@ -31,14 +31,14 @@ Every `multi_agent_v1.spawn_agent` message is a self-contained executable assign
31
31
 
32
32
  Plan and reviewer agents may run for a long time: spawn them in the background and keep doing independent root work. Between `multi_agent_v1.wait_agent` calls, back off — double the timeout up to ~5 minutes — instead of spinning short cycles. A timeout only means no new mailbox update arrived; treat a running child as alive. Require `WORKING: <task> - <current phase>` before long passes and `BLOCKED: <reason>` only when progress stops. Keep the parent visibly alive with active subagent count, names, and latest `WORKING:` phase. Fallback only when the child is completed without the deliverable, ack-only after followup, explicitly `BLOCKED:`, or no longer running — then record inconclusive (never a pass), close if safe, and respawn a smaller `fork_context: false` task with the missing deliverable.
33
33
 
34
- # start-work
34
+ # ulw-execute
35
35
 
36
- Execute a Prometheus work plan until every top-level checkbox is complete. This skill pairs with the harness's start-work continuation hook, which re-injects the next turn while `.omo/boulder.json` says this `codex:<session_id>` still has unchecked plan work.
36
+ Execute a Prometheus work plan until every top-level checkbox is complete. This skill pairs with the harness's ulw-execute continuation hook, which re-injects the next turn while `.omo/boulder.json` says this `codex:<session_id>` still has unchecked plan work.
37
37
 
38
38
  ## Usage
39
39
 
40
40
  ```text
41
- $start-work [plan-name] [--worktree <absolute-path>] [--make-pr] [--ship]
41
+ $ulw-execute [plan-name] [--worktree <absolute-path>] [--make-pr] [--ship]
42
42
  ```
43
43
 
44
44
  - `plan-name` (optional): a full or partial file stem under `.omo/plans/`.
@@ -66,7 +66,7 @@ Do ALL of this immediately after the plan is selected, BEFORE the first implemen
66
66
 
67
67
  ### No-plan bootstrap
68
68
 
69
- When the user explicitly said `start work` / `$start-work` and no selectable plan exists, treat that phrase as approval: bootstrap `ulw-plan` to create the approved plan before execution and implementation, instead of stalling or asking for generic approval again. A brief or notes file without waves, checkboxes, and acceptance criteria is NOT decision-complete — enter this bootstrap too.
69
+ When the user explicitly said `start work` / `$ulw-execute` and no selectable plan exists, treat that phrase as approval: bootstrap `ulw-plan` to create the approved plan before execution and implementation, instead of stalling or asking for generic approval again. A brief or notes file without waves, checkboxes, and acceptance criteria is NOT decision-complete — enter this bootstrap too.
70
70
 
71
71
  1. Invoke the `ulw-plan` skill from the current request and require its dynamic adversarial workflow: collect, verify, design, adversarial plan-review, synthesize.
72
72
  2. The generated Prometheus plan must be saved under `.omo/plans/<slug>.md` before implementation or Boulder state writes that point at plan work.
@@ -179,7 +179,7 @@ For each checkbox, complete all five gates before marking it done:
179
179
  4. Adversarial QA: exercise every class the Phase 3 trigger map marks applicable and capture the observable result for each.
180
180
  5. Cleanup: register every QA resource teardown as its own todo when spawned (QA scripts, tmux assets, browser sessions, PIDs, ports, containers, temp dirs), execute each, and capture the receipt. No QA asset is left running.
181
181
 
182
- Append evidence to `.omo/start-work/ledger.jsonl`, one JSON object per line. Include at least `event`, `plan`, `task`, `session_id`, `commands`, `artifact`, `adversarial_classes`, and `cleanup` fields. `adversarial_classes` lists each probed class with its observable result and each ruled-out class with a one-line reason.
182
+ Append evidence to `.omo/ulw-execute/ledger.jsonl`, one JSON object per line. Include at least `event`, `plan`, `task`, `session_id`, `commands`, `artifact`, `adversarial_classes`, and `cleanup` fields. `adversarial_classes` lists each probed class with its observable result and each ruled-out class with a one-line reason.
183
183
 
184
184
  ### Sisyphus-style completion contract
185
185
 
@@ -9,7 +9,7 @@ metadata:
9
9
 
10
10
  You are **Prometheus**, a planning consultant. You turn a vague or large request into ONE **decision-complete** work plan a downstream worker executes with zero further interview. You read, search, run read-only analysis, and write ONLY plan artifacts under `.omo/`. You are a PLANNER - you never edit product code and never implement.
11
11
 
12
- **Plan mode is sticky.** "do X" / "fix X" / "build X" / "just do it" all mean "plan X". You **never start implementation** - not for small, obvious, or urgent work, and not through a subagent: delegated implementation is still implementation. Execution belongs to a separate worker session that only the user starts (e.g. `$start-work`).
12
+ **Plan mode is sticky.** "do X" / "fix X" / "build X" / "just do it" all mean "plan X". You **never start implementation** - not for small, obvious, or urgent work, and not through a subagent: delegated implementation is still implementation. Execution belongs to a separate worker session that only the user starts (e.g. `$ulw-execute`).
13
13
 
14
14
  Outcome-first: explore a lot, ask few sharp questions - or none, when the intent is fuzzy (see routing) - and stop the moment the plan is done.
15
15
 
@@ -23,13 +23,13 @@ If another active mode mandates its own first line (ultrawork does), print that
23
23
 
24
24
  Directly under the marker, before any exploration, state the working contract once, in your own words, carrying ALL of these commitments:
25
25
 
26
- 1. **Persona + no-implementation pledge** - from now on you work as Prometheus, a planning consultant, and you will never start implementation - no product-code edits, no implementer subagents - until the user explicitly says okay; even then, approval authorizes writing the plan only, and execution starts in a separate worker session (e.g. `$start-work`).
26
+ 1. **Persona + no-implementation pledge** - from now on you work as Prometheus, a planning consultant, and you will never start implementation - no product-code edits, no implementer subagents - until the user explicitly says okay; even then, approval authorizes writing the plan only, and execution starts in a separate worker session (e.g. `$ulw-execute`).
27
27
  2. **Workflow preview** - the order of what happens next: parallel read-only exploration (plus outside research when the repo cannot answer) until the open unknowns are resolved; the intent verdict from INTENT ROUTING, announced; questions to the user ONLY when a genuine owner-decision survives exploration - or when exploration and research both come back empty on a fork the plan cannot proceed without; then the approval brief, and the plan is written only after the explicit okay.
28
28
 
29
29
  Example opening (adapt the wording, keep every commitment):
30
30
 
31
31
  > ULW-PLAN MODE ENABLED!
32
- > From now on I am working as Prometheus, a planning consultant. I will not start any implementation until you explicitly say okay - and approval authorizes writing the plan only; execution starts separately (e.g. `$start-work`).
32
+ > From now on I am working as Prometheus, a planning consultant. I will not start any implementation until you explicitly say okay - and approval authorizes writing the plan only; execution starts separately (e.g. `$ulw-execute`).
33
33
  > Next, in order: (1) parallel read-only exploration and research, (2) intent verdict announced (CLEAR or UNCLEAR, plus whether high-accuracy review is required), (3) questions only for the forks exploration cannot settle - or where research finds nothing on a blocking decision, (4) approval brief, then (5) the plan is written after your okay.
34
34
 
35
35
  ## INTENT ROUTING - pick ONE intent reference
@@ -43,7 +43,7 @@ After grounding, make ONE judgment, record `intent: clear|unclear` plus `review_
43
43
 
44
44
  - **OVERRIDE - explicit ask wins:** if the user explicitly asks to be questioned or interviewed ("ask me", "interview me", "why aren't you asking me" - in any language), route **CLEAR**, run the interview, and turn the adopt-default filter OFF: the user has claimed the forks, so every surviving one is ASKED, not defaulted. This beats the OUTCOME test below, even on a fuzzy brief.
45
45
  - **CLEAR** - the user knows the outcome; the only open items are preferences/tradeoffs the repo cannot answer (genuine owner-decisions). Read **`references/intent-clear.md`**: ask the surviving forks with WHY, run the normal approval gate, and offer high-accuracy review only when `review_required` is false.
46
- - **UNCLEAR** - the outcome itself is fuzzy (a vague brief, a bootstrap, `$start-work` with no selectable plan, a goal the user cannot yet articulate). Asking would offload your own job onto the user. Read **`references/intent-unclear.md`**: research maximally, adopt and ANNOUNCE best-practice defaults, do NOT ask the user extra questions, and, unless Classify sized the work Trivial, set `review_required: true` before the approval gate and run high-accuracy review AUTOMATICALLY.
46
+ - **UNCLEAR** - the outcome itself is fuzzy (a vague brief, a bootstrap, `$ulw-execute` with no selectable plan, a goal the user cannot yet articulate). Asking would offload your own job onto the user. Read **`references/intent-unclear.md`**: research maximally, adopt and ANNOUNCE best-practice defaults, do NOT ask the user extra questions, and, unless Classify sized the work Trivial, set `review_required: true` before the approval gate and run high-accuracy review AUTOMATICALLY.
47
47
  - **ON THE FENCE** - when CLEAR vs UNCLEAR is genuinely ambiguous, treat it as CLEAR and ask exactly ONE question. A user wrongly silenced is worse than one extra question. The dominant failure to guard against is mis-routing a CLEAR request to UNCLEAR, which silently applies defaults and overrides forks the user wanted to own.
48
48
 
49
49
  WORKED: "add a 5/min-per-IP rate-limit to `/login`" = CLEAR. "make auth better" = UNCLEAR.
@@ -10,7 +10,7 @@ metadata:
10
10
  The deep mechanics both routing paths share (`intent-clear.md`, `intent-unclear.md`). Read the phase you are in.
11
11
 
12
12
  ## Role
13
- You are Prometheus, a planning consultant. You turn a vague or large request into ONE decision-complete work plan a downstream worker executes with zero further interview. You read, search, run read-only analysis, and write only `.omo/plans/<slug>.md` and `.omo/drafts/*.md`. You never edit product code and never implement - directly or through a subagent. **Plan mode is sticky**: "do X" / "fix X" / "just do it" mean "plan X"; execution belongs to the worker and starts only on the user's explicit start (e.g. `$start-work`), never on your judgment.
13
+ You are Prometheus, a planning consultant. You turn a vague or large request into ONE decision-complete work plan a downstream worker executes with zero further interview. You read, search, run read-only analysis, and write only `.omo/plans/<slug>.md` and `.omo/drafts/*.md`. You never edit product code and never implement - directly or through a subagent. **Plan mode is sticky**: "do X" / "fix X" / "just do it" mean "plan X"; execution belongs to the worker and starts only on the user's explicit start (e.g. `$ulw-execute`), never on your judgment.
14
14
 
15
15
  ## North star
16
16
  A plan is decision-complete when the implementer needs ZERO judgment calls: every decision made, every ambiguity resolved, every pattern referenced with a concrete path. The executor has NO interview context - be exhaustive.
@@ -22,7 +22,7 @@ Size interview depth: **Trivial** (single file, obvious) - one or two confirms,
22
22
  Eliminate unknowns by discovering facts, not by asking. Before your first question, fan out parallel read-only research and keep working while it runs. Two kinds of unknowns: **discoverable facts** (repo/system truth) become research-and-cite; **preferences/tradeoffs** (user intent, not derivable from code) are the only things the CLEAR path brings to the user, and the things the UNCLEAR path resolves to best-practice defaults. Retrieval budget: stop exploring a question once collected evidence answers it, or after two research waves add no new useful facts.
23
23
 
24
24
  ### Dynamic workflow for architecture and bootstrap planning
25
- When the request is architecture-scale, references Discord / external repos, or is invoked by `$start-work` because no selectable plan exists, run **dynamic adversarial workflow phases** before synthesis. For broad requests, self-orchestrates 5 host subagents so the plan keeps maximum safe parallelism without losing evidence quality:
25
+ When the request is architecture-scale, references Discord / external repos, or is invoked by `$ulw-execute` because no selectable plan exists, run **dynamic adversarial workflow phases** before synthesis. For broad requests, self-orchestrates 5 host subagents so the plan keeps maximum safe parallelism without losing evidence quality:
26
26
  1. **collect** lanes: repo implementation surface, tests/package surface, external or Discord claims, execution workflow, risk/QA.
27
27
  2. **verify** lanes: each verifier gets routed context from its collect lane and tries to falsify it; return `verdict`, `evidence`, `confidence`.
28
28
  3. **design** lanes: turn only verified facts into implementation waves, a dependency matrix, acceptance criteria, and QA artifacts.
@@ -132,7 +132,7 @@ Then read the user's next reply as a decision:
132
132
  - **Scope change** - a reply that alters the approach. Fold it into the draft, update the brief, re-present once.
133
133
  - **Still unclear** - emit ONE short line naming the pending action and the approval you need; **do not re-explore** and do not restate the whole brief.
134
134
 
135
- No Metis, no plan file, no execution until the user approves. The UNCLEAR path auto-runs the high-accuracy review AFTER approval; it never skips this gate. Narrow `$start-work` bootstrap exception: when `$start-work` invoked this skill because there was no selectable plan, the user's "start work" counts as approval to generate the plan; execution then begins per the harness's start-work rule - never run by the planning agent itself.
135
+ No Metis, no plan file, no execution until the user approves. The UNCLEAR path auto-runs the high-accuracy review AFTER approval; it never skips this gate. Narrow `$ulw-execute` bootstrap exception: when `$ulw-execute` invoked this skill because there was no selectable plan, the user's "start work" counts as approval to generate the plan; execution then begins per the harness's ulw-execute rule - never run by the planning agent itself.
136
136
 
137
137
  ## Phase 3 - Generate the plan (only after approval)
138
138
  1. Rerun `node "<skill-root>/scripts/scaffold-plan.mjs" <slug> [--clear|--unclear]` without `--draft-only`. The existing draft is preserved and the plan skeleton is created now, after approval. A plain rerun is a safe no-op; never hand-build the skeleton.
@@ -177,7 +177,7 @@ Every "present the plan summary/brief" above delivers THIS structure, in the use
177
177
  3. **Shape** - how many phases/waves and how many tasks: N implementation todos (`- [ ] N.` rows) + F final-verification tasks (`- [ ] F<n>.` rows), plus the executor-category mix (e.g. 6x `quick`, 2x `unspecified-high`, 1x `ultrabrain`).
178
178
  4. **Added beyond the request** - what exploration surfaced and you folded in that the user never explicitly asked for (edge cases, migrations, tests, rollback, docs), each with a one-line reason; say "none" if nothing was added.
179
179
  5. **Verification** - how completion will be proven: the final verification wave plus the key QA scenarios/commands.
180
- 6. **Execution handoff** - the plan runs in a worker session via `$start-work <plan-name>`; introduce the options: `--worktree <absolute-path>` (task-owned worktree; required for PR/branch work), `--make-pr` (deliver as a PR; auto-creates a task-owned worktree), `--ship` (implies `--make-pr`, keeps working until the PR is reviewed and MERGED).
180
+ 6. **Execution handoff** - the plan runs in a worker session via `$ulw-execute <plan-name>`; introduce the options: `--worktree <absolute-path>` (task-owned worktree; required for PR/branch work), `--make-pr` (deliver as a PR; auto-creates a task-owned worktree), `--ship` (implies `--make-pr`, keeps working until the PR is reviewed and MERGED).
181
181
 
182
182
  ### High-accuracy review (dual review)
183
183
  The high-accuracy review is DUAL and both passes must return OKAY before handoff: (1) the native `momus` reviewer subagent, and (2) an independent Oracle review via `task(subagent_type="oracle", ...)` on the strongest available reasoning model, in a fully isolated sub-session with normal approval and sandbox policy. Do not add flags that disable approvals or sandboxing. Momus runs at High and may take substantially longer than other agents. One round = exactly ONE `momus` + ONE independent review, dispatched together against the COMPLETE plan file (todos + TL;DR filled) at the draft's exact recorded `plan_path`. Keep Momus in flight and wait for its terminal result: elapsed time alone never justifies cancelling, duplicating, replacing, or treating it as failed. After both verdicts return, fix every eligible blocker and resubmit both fresh under the bounded convergence contract below; ineligible findings become non-blocking notes. CLEAR: runs when the user opts in or `review_required: true`. UNCLEAR: runs automatically unless Classify=Trivial.
@@ -7,7 +7,7 @@ metadata:
7
7
 
8
8
  # ulw-plan - UNCLEAR intent
9
9
 
10
- Read this when INTENT ROUTING resolved to UNCLEAR: the desired OUTCOME is fuzzy - a vague request, a bootstrap, `$start-work` with no selectable plan, or a goal the user cannot yet articulate. Asking the user to resolve it would offload the planner's own job onto them.
10
+ Read this when INTENT ROUTING resolved to UNCLEAR: the desired OUTCOME is fuzzy - a vague request, a bootstrap, `$ulw-execute` with no selectable plan, or a goal the user cannot yet articulate. Asking the user to resolve it would offload the planner's own job onto them.
11
11
 
12
12
  <stance>
13
13
  PRIME DIRECTIVE: do NOT interrogate the user. Resolve ambiguity by RESEARCH, not questions. You are a consultant who does the homework and ANNOUNCES loud best-practice defaults, not a form to fill in. The user's time is spent only on a genuinely irreversible, destructive, or safety-critical fork that research cannot settle - then exactly one focused question. Everything else you answer yourself from evidence plus best practice; the user vetoes at the gate via the human TL;DR, not via an interview.
@@ -32,7 +32,7 @@ TRIVIAL-TIER GUARD: if Classify sized the work Trivial, the auto-Momus loop is S
32
32
  </high_accuracy_auto>
33
33
 
34
34
  <approval_gate>
35
- Still present a brief and wait for the user's explicit okay - approval is not execution - but the brief LEADS with "here is the best-practice approach I derived and the assumptions I adopted (with reversibility)", not "here are questions for you". The adopted-defaults list is surfaced loudly in the plan's human TL;DR "Decisions I made for you" block, so the user can veto any single default at the gate. LEAD that block with the routing call itself - "I treated this as open-ended and chose defaults; if you had a specific outcome in mind, say so and I will switch to asking" - so a wrong CLEAR-as-UNCLEAR read is a one-line correction at the gate, not a silently-spent adversarial loop. Approval authorizes writing or keeping the plan only, never implementation. The durable draft (Components plus Open-assumptions ledgers plus gate state) is the compaction-safe resume point. ($start-work bootstrap exception: "start work" counts as approval to generate the plan, with execution starting per the harness's start-work rule - never run by the planning agent itself; ordinary ulw-plan keeps the normal gate.)
35
+ Still present a brief and wait for the user's explicit okay - approval is not execution - but the brief LEADS with "here is the best-practice approach I derived and the assumptions I adopted (with reversibility)", not "here are questions for you". The adopted-defaults list is surfaced loudly in the plan's human TL;DR "Decisions I made for you" block, so the user can veto any single default at the gate. LEAD that block with the routing call itself - "I treated this as open-ended and chose defaults; if you had a specific outcome in mind, say so and I will switch to asking" - so a wrong CLEAR-as-UNCLEAR read is a one-line correction at the gate, not a silently-spent adversarial loop. Approval authorizes writing or keeping the plan only, never implementation. The durable draft (Components plus Open-assumptions ledgers plus gate state) is the compaction-safe resume point. ($ulw-execute bootstrap exception: "start work" counts as approval to generate the plan, with execution starting per the harness's ulw-execute rule - never run by the planning agent itself; ordinary ulw-plan keeps the normal gate.)
36
36
  </approval_gate>
37
37
 
38
38
  <worked_example>
package/dist/tui.js CHANGED
@@ -79207,7 +79207,7 @@ var init_commands = __esm(() => {
79207
79207
  BuiltinCommandNameSchema = exports_external.enum([
79208
79208
  "goal",
79209
79209
  "refactor",
79210
- "start-work",
79210
+ "ulw-execute",
79211
79211
  "stop-continuation",
79212
79212
  "remove-ai-slops",
79213
79213
  "hyperplan"
@@ -79367,7 +79367,7 @@ var init_hooks = __esm(() => {
79367
79367
  "no-sisyphus-gpt",
79368
79368
  "no-hephaestus-non-gpt",
79369
79369
  "hephaestus-agents-md-injector",
79370
- "start-work",
79370
+ "ulw-execute",
79371
79371
  "atlas",
79372
79372
  "unstable-agent-babysitter",
79373
79373
  "task-resume-info",
@@ -79632,11 +79632,11 @@ var init_tui = __esm(() => {
79632
79632
  });
79633
79633
  });
79634
79634
 
79635
- // packages/omo-opencode/src/config/schema/start-work.ts
79636
- var StartWorkConfigSchema;
79637
- var init_start_work = __esm(() => {
79635
+ // packages/omo-opencode/src/config/schema/ulw-execute.ts
79636
+ var UlwExecuteConfigSchema;
79637
+ var init_ulw_execute = __esm(() => {
79638
79638
  init_zod();
79639
- StartWorkConfigSchema = exports_external.object({
79639
+ UlwExecuteConfigSchema = exports_external.object({
79640
79640
  auto_commit: exports_external.boolean().default(true)
79641
79641
  });
79642
79642
  });
@@ -79683,7 +79683,7 @@ var init_oh_my_opencode_config = __esm(() => {
79683
79683
  init_sisyphus_agent();
79684
79684
  init_tmux2();
79685
79685
  init_tui();
79686
- init_start_work();
79686
+ init_ulw_execute();
79687
79687
  init_websearch();
79688
79688
  OhMyOpenCodeConfigSchema = exports_external.object({
79689
79689
  $schema: exports_external.string().optional(),
@@ -79733,7 +79733,8 @@ var init_oh_my_opencode_config = __esm(() => {
79733
79733
  tmux: TmuxConfigSchema.optional(),
79734
79734
  tui: TuiConfigSchema.default({ sidebar: { enabled: true } }).optional(),
79735
79735
  sisyphus: SisyphusConfigSchema.optional(),
79736
- start_work: StartWorkConfigSchema.optional(),
79736
+ ulw_execute: UlwExecuteConfigSchema.optional(),
79737
+ start_work: UlwExecuteConfigSchema.optional(),
79737
79738
  default_mode: DefaultModeConfigSchema.optional(),
79738
79739
  _migrations: exports_external.array(exports_external.string()).optional()
79739
79740
  });
@@ -79778,6 +79779,8 @@ var init_schema2 = __esm(() => {
79778
79779
  // packages/omo-opencode/src/config/validate.ts
79779
79780
  var exports_validate = {};
79780
79781
  __export(exports_validate, {
79782
+ _resetDeprecationWarningSinkForTesting: () => _resetDeprecationWarningSinkForTesting,
79783
+ _setDeprecationWarningSinkForTesting: () => _setDeprecationWarningSinkForTesting,
79781
79784
  validatePluginConfig: () => validatePluginConfig
79782
79785
  });
79783
79786
  import { relative } from "path";
@@ -79867,6 +79870,25 @@ function materializeAgentModelChains(config4) {
79867
79870
  }));
79868
79871
  return changed ? { ...config4, agents } : config4;
79869
79872
  }
79873
+ function _setDeprecationWarningSinkForTesting(sink) {
79874
+ deprecationWarningSink = sink;
79875
+ }
79876
+ function _resetDeprecationWarningSinkForTesting() {
79877
+ deprecationWarningSink = log2;
79878
+ }
79879
+ function warnLegacyUlwExecuteKey(views) {
79880
+ for (const view of views) {
79881
+ if (!Object.hasOwn(view.config, "start_work"))
79882
+ continue;
79883
+ deprecationWarningSink(`[config] ${shortPath(view.path)}: ${START_WORK_DEPRECATION_MESSAGE}`);
79884
+ }
79885
+ }
79886
+ function migrateLegacyUlwExecuteKey(config4) {
79887
+ const legacy = config4.start_work;
79888
+ if (legacy === undefined || config4.ulw_execute !== undefined)
79889
+ return config4;
79890
+ return { ...config4, ulw_execute: legacy };
79891
+ }
79870
79892
  function migrateRalphLoopConfig(config4) {
79871
79893
  const legacy = config4.ralph_loop;
79872
79894
  if (legacy === undefined)
@@ -79895,19 +79917,22 @@ function validatePluginConfig(directory, environment2 = process.env) {
79895
79917
  const firstView = views[0];
79896
79918
  const userConfig = parseConfig(chain.protectedUserView);
79897
79919
  const config4 = applyDisabledProviders(materializeAgentModelChains(protectUserFields(mergeViews(views), userConfig)));
79920
+ warnLegacyUlwExecuteKey(chain.views);
79898
79921
  return {
79899
79922
  valid: messages.length === 0,
79900
79923
  messages,
79901
79924
  path: chainMessages.length > 0 ? chain.diagnostics[0]?.path ?? null : firstFailingView?.path ?? firstView?.path ?? null,
79902
- config: migrateRalphLoopConfig(config4)
79925
+ config: migrateRalphLoopConfig(migrateLegacyUlwExecuteKey(config4))
79903
79926
  };
79904
79927
  }
79928
+ var START_WORK_DEPRECATION_MESSAGE = 'config key "start_work" is deprecated, rename to "ulw_execute" - will be removed next release', deprecationWarningSink;
79905
79929
  var init_validate = __esm(() => {
79906
79930
  init_disabled_providers();
79907
79931
  init_logger2();
79908
79932
  init_omo_config_chain();
79909
79933
  init_config_merger();
79910
79934
  init_schema2();
79935
+ deprecationWarningSink = log2;
79911
79936
  });
79912
79937
 
79913
79938
  // node_modules/.bun/picocolors@1.1.1/node_modules/picocolors/picocolors.js
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oh-my-opencode",
3
- "version": "5.0.0-beta.19",
3
+ "version": "5.0.0-beta.20",
4
4
  "description": "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
5
5
  "main": "./dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -85,7 +85,7 @@
85
85
  "packages/omo-codex/plugin/components/lazycodex-executor-verify/dist/cli.js",
86
86
  "packages/omo-codex/plugin/components/lsp/dist/cli.js",
87
87
  "packages/omo-codex/plugin/components/rules/dist/cli.js",
88
- "packages/omo-codex/plugin/components/start-work-continuation/dist/cli.js",
88
+ "packages/omo-codex/plugin/components/ulw-execute-continuation/dist/cli.js",
89
89
  "packages/omo-codex/plugin/components/teammode/dist/cli.js",
90
90
  "packages/omo-codex/plugin/components/telemetry/dist/cli.js",
91
91
  "packages/omo-codex/plugin/components/ultrawork/dist/cli.js",
@@ -181,7 +181,7 @@
181
181
  "zod": "^4.4.3"
182
182
  },
183
183
  "devDependencies": {
184
- "@code-yeongyu/senpi": "2026.8.24",
184
+ "@code-yeongyu/senpi": "2026.8.25",
185
185
  "@oh-my-opencode/agents-md-core": "workspace:*",
186
186
  "@oh-my-opencode/ast-grep-mcp": "workspace:*",
187
187
  "@oh-my-opencode/boulder-state": "workspace:*",
@@ -222,18 +222,18 @@
222
222
  "typescript": "^7.0.2"
223
223
  },
224
224
  "optionalDependencies": {
225
- "oh-my-opencode-darwin-arm64": "5.0.0-beta.19",
226
- "oh-my-opencode-darwin-x64": "5.0.0-beta.19",
227
- "oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.19",
228
- "oh-my-opencode-linux-arm64": "5.0.0-beta.19",
229
- "oh-my-opencode-linux-arm64-musl": "5.0.0-beta.19",
230
- "oh-my-opencode-linux-x64": "5.0.0-beta.19",
231
- "oh-my-opencode-linux-x64-baseline": "5.0.0-beta.19",
232
- "oh-my-opencode-linux-x64-musl": "5.0.0-beta.19",
233
- "oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.19",
234
- "oh-my-opencode-windows-arm64": "5.0.0-beta.19",
235
- "oh-my-opencode-windows-x64": "5.0.0-beta.19",
236
- "oh-my-opencode-windows-x64-baseline": "5.0.0-beta.19"
225
+ "oh-my-opencode-darwin-arm64": "5.0.0-beta.20",
226
+ "oh-my-opencode-darwin-x64": "5.0.0-beta.20",
227
+ "oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.20",
228
+ "oh-my-opencode-linux-arm64": "5.0.0-beta.20",
229
+ "oh-my-opencode-linux-arm64-musl": "5.0.0-beta.20",
230
+ "oh-my-opencode-linux-x64": "5.0.0-beta.20",
231
+ "oh-my-opencode-linux-x64-baseline": "5.0.0-beta.20",
232
+ "oh-my-opencode-linux-x64-musl": "5.0.0-beta.20",
233
+ "oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.20",
234
+ "oh-my-opencode-windows-arm64": "5.0.0-beta.20",
235
+ "oh-my-opencode-windows-x64": "5.0.0-beta.20",
236
+ "oh-my-opencode-windows-x64-baseline": "5.0.0-beta.20"
237
237
  },
238
238
  "overrides": {
239
239
  "@earendil-works/pi-agent-core": "0.84.2",
@@ -45,9 +45,9 @@ payloads, and component NOTICE files.
45
45
  - Notice: `plugin/components/rules/NOTICE`.
46
46
  - Where-bundled: Codex rules/context injection hooks and bundled rule files.
47
47
 
48
- ### @code-yeongyu/codex-start-work-continuation@4.10.0
49
- - License: MIT, from `plugin/components/start-work-continuation/LICENSE`.
50
- - Notice: `plugin/components/start-work-continuation/NOTICE`.
48
+ ### @code-yeongyu/codex-ulw-execute-continuation@4.10.0
49
+ - License: MIT, from `plugin/components/ulw-execute-continuation/LICENSE`.
50
+ - Notice: `plugin/components/ulw-execute-continuation/NOTICE`.
51
51
  - Where-bundled: Codex `Stop` and `SubagentStop` continuation hook component.
52
52
 
53
53
  ### @code-yeongyu/codex-telemetry@4.10.0
@@ -79,7 +79,7 @@ payloads, and component NOTICE files.
79
79
  ### @oh-my-opencode/boulder-state@0.1.0
80
80
  - License: project license.
81
81
  - Copyright: Yeongyu Kim and contributors.
82
- - Where-bundled: bundled into the start-work continuation component runtime.
82
+ - Where-bundled: bundled into the ulw-execute continuation component runtime.
83
83
 
84
84
  ### @oh-my-opencode/comment-checker-core@0.1.0
85
85
  - License: project license.