oh-my-codex 0.7.5 → 0.8.0
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.
- package/README.de.md +314 -0
- package/README.es.md +295 -17
- package/README.fr.md +314 -0
- package/README.it.md +314 -0
- package/README.ja.md +296 -18
- package/README.ko.md +295 -17
- package/README.md +68 -3
- package/README.pt.md +295 -17
- package/README.ru.md +295 -17
- package/README.tr.md +314 -0
- package/README.vi.md +296 -18
- package/README.zh.md +292 -17
- package/dist/catalog/__tests__/generator.test.js +2 -0
- package/dist/catalog/__tests__/generator.test.js.map +1 -1
- package/dist/catalog/__tests__/schema.test.js +7 -0
- package/dist/catalog/__tests__/schema.test.js.map +1 -1
- package/dist/cli/__tests__/ask.test.d.ts +2 -0
- package/dist/cli/__tests__/ask.test.d.ts.map +1 -0
- package/dist/cli/__tests__/ask.test.js +236 -0
- package/dist/cli/__tests__/ask.test.js.map +1 -0
- package/dist/cli/__tests__/doctor-warning-copy.test.d.ts +2 -0
- package/dist/cli/__tests__/doctor-warning-copy.test.d.ts.map +1 -0
- package/dist/cli/__tests__/doctor-warning-copy.test.js +45 -0
- package/dist/cli/__tests__/doctor-warning-copy.test.js.map +1 -0
- package/dist/cli/__tests__/index.test.js +43 -1
- package/dist/cli/__tests__/index.test.js.map +1 -1
- package/dist/cli/__tests__/ralph-prd-deep-interview.test.d.ts +2 -0
- package/dist/cli/__tests__/ralph-prd-deep-interview.test.d.ts.map +1 -0
- package/dist/cli/__tests__/ralph-prd-deep-interview.test.js +15 -0
- package/dist/cli/__tests__/ralph-prd-deep-interview.test.js.map +1 -0
- package/dist/cli/__tests__/ralph.test.d.ts +2 -0
- package/dist/cli/__tests__/ralph.test.d.ts.map +1 -0
- package/dist/cli/__tests__/ralph.test.js +40 -0
- package/dist/cli/__tests__/ralph.test.js.map +1 -0
- package/dist/cli/__tests__/setup-scope.test.js +2 -0
- package/dist/cli/__tests__/setup-scope.test.js.map +1 -1
- package/dist/cli/__tests__/team-decompose.test.d.ts +2 -0
- package/dist/cli/__tests__/team-decompose.test.d.ts.map +1 -0
- package/dist/cli/__tests__/team-decompose.test.js +67 -0
- package/dist/cli/__tests__/team-decompose.test.js.map +1 -0
- package/dist/cli/__tests__/version.test.d.ts +2 -0
- package/dist/cli/__tests__/version.test.d.ts.map +1 -0
- package/dist/cli/__tests__/version.test.js +21 -0
- package/dist/cli/__tests__/version.test.js.map +1 -0
- package/dist/cli/ask.d.ts +13 -0
- package/dist/cli/ask.d.ts.map +1 -0
- package/dist/cli/ask.js +174 -0
- package/dist/cli/ask.js.map +1 -0
- package/dist/cli/constants.d.ts +10 -0
- package/dist/cli/constants.d.ts.map +1 -0
- package/dist/cli/constants.js +10 -0
- package/dist/cli/constants.js.map +1 -0
- package/dist/cli/doctor.js +16 -5
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/index.d.ts +7 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +117 -43
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/ralph.d.ts +4 -0
- package/dist/cli/ralph.d.ts.map +1 -1
- package/dist/cli/ralph.js +89 -13
- package/dist/cli/ralph.js.map +1 -1
- package/dist/cli/setup.js +1 -1
- package/dist/cli/setup.js.map +1 -1
- package/dist/cli/team.d.ts +18 -0
- package/dist/cli/team.d.ts.map +1 -1
- package/dist/cli/team.js +108 -16
- package/dist/cli/team.js.map +1 -1
- package/dist/config/generator.d.ts.map +1 -1
- package/dist/config/generator.js +8 -0
- package/dist/config/generator.js.map +1 -1
- package/dist/hooks/__tests__/deep-interview-contract.test.d.ts +2 -0
- package/dist/hooks/__tests__/deep-interview-contract.test.d.ts.map +1 -0
- package/dist/hooks/__tests__/deep-interview-contract.test.js +55 -0
- package/dist/hooks/__tests__/deep-interview-contract.test.js.map +1 -0
- package/dist/hooks/__tests__/emulator.test.js +6 -0
- package/dist/hooks/__tests__/emulator.test.js.map +1 -1
- package/dist/hooks/__tests__/keyword-detector.test.js +44 -22
- package/dist/hooks/__tests__/keyword-detector.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-session-scope.test.js +59 -0
- package/dist/hooks/__tests__/notify-hook-session-scope.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-team-dispatch.test.js +88 -0
- package/dist/hooks/__tests__/notify-hook-team-dispatch.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-tmux-heal.test.js +199 -0
- package/dist/hooks/__tests__/notify-hook-tmux-heal.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-visual-verdict.test.d.ts +11 -0
- package/dist/hooks/__tests__/notify-hook-visual-verdict.test.d.ts.map +1 -0
- package/dist/hooks/__tests__/notify-hook-visual-verdict.test.js +266 -0
- package/dist/hooks/__tests__/notify-hook-visual-verdict.test.js.map +1 -0
- package/dist/hooks/__tests__/openclaw-setup-contract.test.d.ts +2 -0
- package/dist/hooks/__tests__/openclaw-setup-contract.test.d.ts.map +1 -0
- package/dist/hooks/__tests__/openclaw-setup-contract.test.js +51 -0
- package/dist/hooks/__tests__/openclaw-setup-contract.test.js.map +1 -0
- package/dist/hooks/__tests__/pre-context-gate-skills.test.d.ts +2 -0
- package/dist/hooks/__tests__/pre-context-gate-skills.test.d.ts.map +1 -0
- package/dist/hooks/__tests__/pre-context-gate-skills.test.js +34 -0
- package/dist/hooks/__tests__/pre-context-gate-skills.test.js.map +1 -0
- package/dist/hooks/__tests__/tmux-hook-engine.test.js +36 -1
- package/dist/hooks/__tests__/tmux-hook-engine.test.js.map +1 -1
- package/dist/hooks/__tests__/visual-verdict-loop.test.d.ts +2 -0
- package/dist/hooks/__tests__/visual-verdict-loop.test.d.ts.map +1 -0
- package/dist/hooks/__tests__/visual-verdict-loop.test.js +35 -0
- package/dist/hooks/__tests__/visual-verdict-loop.test.js.map +1 -0
- package/dist/hooks/agents-overlay.d.ts.map +1 -1
- package/dist/hooks/agents-overlay.js +18 -16
- package/dist/hooks/agents-overlay.js.map +1 -1
- package/dist/hooks/codebase-map.d.ts.map +1 -1
- package/dist/hooks/codebase-map.js +6 -2
- package/dist/hooks/codebase-map.js.map +1 -1
- package/dist/hooks/emulator.d.ts.map +1 -1
- package/dist/hooks/emulator.js +2 -0
- package/dist/hooks/emulator.js.map +1 -1
- package/dist/hooks/extensibility/sdk.d.ts.map +1 -1
- package/dist/hooks/extensibility/sdk.js +2 -1
- package/dist/hooks/extensibility/sdk.js.map +1 -1
- package/dist/hooks/keyword-registry.d.ts.map +1 -1
- package/dist/hooks/keyword-registry.js +6 -0
- package/dist/hooks/keyword-registry.js.map +1 -1
- package/dist/hud/index.d.ts.map +1 -1
- package/dist/hud/index.js +2 -24
- package/dist/hud/index.js.map +1 -1
- package/dist/mcp/__tests__/team-server-cleanup.test.d.ts +2 -0
- package/dist/mcp/__tests__/team-server-cleanup.test.d.ts.map +1 -0
- package/dist/mcp/__tests__/team-server-cleanup.test.js +219 -0
- package/dist/mcp/__tests__/team-server-cleanup.test.js.map +1 -0
- package/dist/mcp/bootstrap.d.ts +1 -1
- package/dist/mcp/bootstrap.d.ts.map +1 -1
- package/dist/mcp/bootstrap.js +1 -0
- package/dist/mcp/bootstrap.js.map +1 -1
- package/dist/mcp/code-intel-server.d.ts.map +1 -1
- package/dist/mcp/code-intel-server.js +18 -8
- package/dist/mcp/code-intel-server.js.map +1 -1
- package/dist/mcp/memory-server.js +72 -11
- package/dist/mcp/memory-server.js.map +1 -1
- package/dist/mcp/state-paths.d.ts.map +1 -1
- package/dist/mcp/state-paths.js +4 -1
- package/dist/mcp/state-paths.js.map +1 -1
- package/dist/mcp/state-server.d.ts.map +1 -1
- package/dist/mcp/state-server.js +18 -5
- package/dist/mcp/state-server.js.map +1 -1
- package/dist/mcp/team-server.d.ts +24 -0
- package/dist/mcp/team-server.d.ts.map +1 -0
- package/dist/mcp/team-server.js +425 -0
- package/dist/mcp/team-server.js.map +1 -0
- package/dist/mcp/trace-server.d.ts.map +1 -1
- package/dist/mcp/trace-server.js +8 -3
- package/dist/mcp/trace-server.js.map +1 -1
- package/dist/notifications/__tests__/verbosity.test.js +35 -0
- package/dist/notifications/__tests__/verbosity.test.js.map +1 -1
- package/dist/notifications/config.d.ts.map +1 -1
- package/dist/notifications/config.js +12 -3
- package/dist/notifications/config.js.map +1 -1
- package/dist/notifications/dispatcher.d.ts.map +1 -1
- package/dist/notifications/dispatcher.js +4 -4
- package/dist/notifications/dispatcher.js.map +1 -1
- package/dist/notifications/reply-listener.d.ts.map +1 -1
- package/dist/notifications/reply-listener.js +6 -2
- package/dist/notifications/reply-listener.js.map +1 -1
- package/dist/notifications/session-registry.d.ts.map +1 -1
- package/dist/notifications/session-registry.js +2 -2
- package/dist/notifications/session-registry.js.map +1 -1
- package/dist/notifications/tmux.d.ts.map +1 -1
- package/dist/notifications/tmux.js +13 -4
- package/dist/notifications/tmux.js.map +1 -1
- package/dist/notifications/types.d.ts +4 -0
- package/dist/notifications/types.d.ts.map +1 -1
- package/dist/openclaw/__tests__/index.test.js +40 -0
- package/dist/openclaw/__tests__/index.test.js.map +1 -1
- package/dist/openclaw/dispatcher.d.ts.map +1 -1
- package/dist/openclaw/dispatcher.js +5 -2
- package/dist/openclaw/dispatcher.js.map +1 -1
- package/dist/openclaw/index.d.ts.map +1 -1
- package/dist/openclaw/index.js +1 -0
- package/dist/openclaw/index.js.map +1 -1
- package/dist/openclaw/types.d.ts +2 -0
- package/dist/openclaw/types.d.ts.map +1 -1
- package/dist/ralph/__tests__/persistence.test.js +28 -1
- package/dist/ralph/__tests__/persistence.test.js.map +1 -1
- package/dist/ralph/persistence.d.ts +21 -0
- package/dist/ralph/persistence.d.ts.map +1 -1
- package/dist/ralph/persistence.js +85 -2
- package/dist/ralph/persistence.js.map +1 -1
- package/dist/state/paths.d.ts +3 -0
- package/dist/state/paths.d.ts.map +1 -0
- package/dist/state/paths.js +2 -0
- package/dist/state/paths.js.map +1 -0
- package/dist/team/__tests__/idle-nudge.test.d.ts +2 -0
- package/dist/team/__tests__/idle-nudge.test.d.ts.map +1 -0
- package/dist/team/__tests__/idle-nudge.test.js +225 -0
- package/dist/team/__tests__/idle-nudge.test.js.map +1 -0
- package/dist/team/__tests__/role-router.test.d.ts +2 -0
- package/dist/team/__tests__/role-router.test.d.ts.map +1 -0
- package/dist/team/__tests__/role-router.test.js +204 -0
- package/dist/team/__tests__/role-router.test.js.map +1 -0
- package/dist/team/__tests__/runtime-cli.test.d.ts +2 -0
- package/dist/team/__tests__/runtime-cli.test.d.ts.map +1 -0
- package/dist/team/__tests__/runtime-cli.test.js +72 -0
- package/dist/team/__tests__/runtime-cli.test.js.map +1 -0
- package/dist/team/__tests__/runtime.test.js +195 -9
- package/dist/team/__tests__/runtime.test.js.map +1 -1
- package/dist/team/__tests__/scaling.test.js +132 -2
- package/dist/team/__tests__/scaling.test.js.map +1 -1
- package/dist/team/__tests__/state-root.test.d.ts +2 -0
- package/dist/team/__tests__/state-root.test.d.ts.map +1 -0
- package/dist/team/__tests__/state-root.test.js +9 -0
- package/dist/team/__tests__/state-root.test.js.map +1 -0
- package/dist/team/__tests__/state.test.js +52 -17
- package/dist/team/__tests__/state.test.js.map +1 -1
- package/dist/team/__tests__/team-ops-contract.test.d.ts +2 -0
- package/dist/team/__tests__/team-ops-contract.test.d.ts.map +1 -0
- package/dist/team/__tests__/team-ops-contract.test.js +90 -0
- package/dist/team/__tests__/team-ops-contract.test.js.map +1 -0
- package/dist/team/__tests__/tmux-session.test.js +94 -7
- package/dist/team/__tests__/tmux-session.test.js.map +1 -1
- package/dist/team/__tests__/worker-bootstrap.test.js +59 -0
- package/dist/team/__tests__/worker-bootstrap.test.js.map +1 -1
- package/dist/team/__tests__/worktree.test.js +81 -2
- package/dist/team/__tests__/worktree.test.js.map +1 -1
- package/dist/team/idle-nudge.d.ts +53 -0
- package/dist/team/idle-nudge.d.ts.map +1 -0
- package/dist/team/idle-nudge.js +140 -0
- package/dist/team/idle-nudge.js.map +1 -0
- package/dist/team/mcp-comm.d.ts +1 -1
- package/dist/team/mcp-comm.d.ts.map +1 -1
- package/dist/team/mcp-comm.js +6 -2
- package/dist/team/mcp-comm.js.map +1 -1
- package/dist/team/orchestrator.d.ts +1 -10
- package/dist/team/orchestrator.d.ts.map +1 -1
- package/dist/team/orchestrator.js +8 -0
- package/dist/team/orchestrator.js.map +1 -1
- package/dist/team/role-router.d.ts +32 -0
- package/dist/team/role-router.d.ts.map +1 -0
- package/dist/team/role-router.js +137 -0
- package/dist/team/role-router.js.map +1 -0
- package/dist/team/runtime-cli.d.ts +18 -0
- package/dist/team/runtime-cli.d.ts.map +1 -0
- package/dist/team/runtime-cli.js +244 -0
- package/dist/team/runtime-cli.js.map +1 -0
- package/dist/team/runtime.d.ts +6 -1
- package/dist/team/runtime.d.ts.map +1 -1
- package/dist/team/runtime.js +148 -60
- package/dist/team/runtime.js.map +1 -1
- package/dist/team/scaling.d.ts +1 -0
- package/dist/team/scaling.d.ts.map +1 -1
- package/dist/team/scaling.js +74 -32
- package/dist/team/scaling.js.map +1 -1
- package/dist/team/state/approvals.d.ts +25 -0
- package/dist/team/state/approvals.d.ts.map +1 -0
- package/dist/team/state/approvals.js +31 -0
- package/dist/team/state/approvals.js.map +1 -0
- package/dist/team/state/config.d.ts +2 -0
- package/dist/team/state/config.d.ts.map +1 -0
- package/dist/team/state/config.js +2 -0
- package/dist/team/state/config.js.map +1 -0
- package/dist/team/state/dispatch-lock.d.ts +3 -0
- package/dist/team/state/dispatch-lock.d.ts.map +1 -0
- package/dist/team/state/dispatch-lock.js +81 -0
- package/dist/team/state/dispatch-lock.js.map +1 -0
- package/dist/team/state/dispatch.d.ts +61 -0
- package/dist/team/state/dispatch.d.ts.map +1 -0
- package/dist/team/state/dispatch.js +158 -0
- package/dist/team/state/dispatch.js.map +1 -0
- package/dist/team/state/events.d.ts +2 -0
- package/dist/team/state/events.d.ts.map +1 -0
- package/dist/team/state/events.js +2 -0
- package/dist/team/state/events.js.map +1 -0
- package/dist/team/state/index.d.ts +11 -0
- package/dist/team/state/index.d.ts.map +1 -0
- package/dist/team/state/index.js +11 -0
- package/dist/team/state/index.js.map +1 -0
- package/dist/team/state/io.d.ts +2 -0
- package/dist/team/state/io.d.ts.map +1 -0
- package/dist/team/state/io.js +2 -0
- package/dist/team/state/io.js.map +1 -0
- package/dist/team/state/locks.d.ts +16 -0
- package/dist/team/state/locks.d.ts.map +1 -0
- package/dist/team/state/locks.js +201 -0
- package/dist/team/state/locks.js.map +1 -0
- package/dist/team/state/mailbox.d.ts +39 -0
- package/dist/team/state/mailbox.d.ts.map +1 -0
- package/dist/team/state/mailbox.js +58 -0
- package/dist/team/state/mailbox.js.map +1 -0
- package/dist/team/state/monitor.d.ts +96 -0
- package/dist/team/state/monitor.d.ts.map +1 -0
- package/dist/team/state/monitor.js +163 -0
- package/dist/team/state/monitor.js.map +1 -0
- package/dist/team/state/shutdown.d.ts +2 -0
- package/dist/team/state/shutdown.d.ts.map +1 -0
- package/dist/team/state/shutdown.js +2 -0
- package/dist/team/state/shutdown.js.map +1 -0
- package/dist/team/state/summary.d.ts +2 -0
- package/dist/team/state/summary.d.ts.map +1 -0
- package/dist/team/state/summary.js +2 -0
- package/dist/team/state/summary.js.map +1 -0
- package/dist/team/state/tasks.d.ts +49 -0
- package/dist/team/state/tasks.d.ts.map +1 -0
- package/dist/team/state/tasks.js +182 -0
- package/dist/team/state/tasks.js.map +1 -0
- package/dist/team/state/types.d.ts +281 -0
- package/dist/team/state/types.d.ts.map +1 -0
- package/dist/team/state/types.js +3 -0
- package/dist/team/state/types.js.map +1 -0
- package/dist/team/state/workers.d.ts +2 -0
- package/dist/team/state/workers.d.ts.map +1 -0
- package/dist/team/state/workers.js +2 -0
- package/dist/team/state/workers.js.map +1 -0
- package/dist/team/state-root.d.ts +5 -0
- package/dist/team/state-root.d.ts.map +1 -0
- package/dist/team/state-root.js +8 -0
- package/dist/team/state-root.js.map +1 -0
- package/dist/team/state.d.ts +6 -2
- package/dist/team/state.d.ts.map +1 -1
- package/dist/team/state.js +200 -881
- package/dist/team/state.js.map +1 -1
- package/dist/team/tmux-session.d.ts +42 -2
- package/dist/team/tmux-session.d.ts.map +1 -1
- package/dist/team/tmux-session.js +229 -74
- package/dist/team/tmux-session.js.map +1 -1
- package/dist/team/worker-bootstrap.d.ts +2 -0
- package/dist/team/worker-bootstrap.d.ts.map +1 -1
- package/dist/team/worker-bootstrap.js +47 -20
- package/dist/team/worker-bootstrap.js.map +1 -1
- package/dist/team/worktree.d.ts +5 -1
- package/dist/team/worktree.d.ts.map +1 -1
- package/dist/team/worktree.js +71 -17
- package/dist/team/worktree.js.map +1 -1
- package/dist/utils/safe-json.d.ts +3 -0
- package/dist/utils/safe-json.d.ts.map +1 -0
- package/dist/utils/safe-json.js +19 -0
- package/dist/utils/safe-json.js.map +1 -0
- package/dist/utils/sleep.d.ts +3 -0
- package/dist/utils/sleep.d.ts.map +1 -0
- package/dist/utils/sleep.js +15 -0
- package/dist/utils/sleep.js.map +1 -0
- package/dist/visual/__tests__/verdict.test.d.ts +2 -0
- package/dist/visual/__tests__/verdict.test.d.ts.map +1 -0
- package/dist/visual/__tests__/verdict.test.js +81 -0
- package/dist/visual/__tests__/verdict.test.js.map +1 -0
- package/dist/visual/constants.d.ts +4 -0
- package/dist/visual/constants.d.ts.map +1 -0
- package/dist/visual/constants.js +3 -0
- package/dist/visual/constants.js.map +1 -0
- package/dist/visual/verdict.d.ts +17 -0
- package/dist/visual/verdict.d.ts.map +1 -0
- package/dist/visual/verdict.js +61 -0
- package/dist/visual/verdict.js.map +1 -0
- package/package.json +10 -3
- package/scripts/ask-claude.sh +17 -0
- package/scripts/ask-gemini.sh +14 -0
- package/scripts/fixtures/ask-advisor-stub.js +12 -0
- package/scripts/notify-hook/log.js +5 -0
- package/scripts/notify-hook/team-dispatch.js +56 -1
- package/scripts/notify-hook/tmux-injection.js +45 -4
- package/scripts/notify-hook/visual-verdict.js +158 -0
- package/scripts/notify-hook.js +27 -0
- package/scripts/run-provider-advisor.js +179 -0
- package/scripts/tmux-hook-engine.js +24 -0
- package/skills/ask-claude/SKILL.md +61 -0
- package/skills/ask-gemini/SKILL.md +61 -0
- package/skills/autopilot/SKILL.md +34 -4
- package/skills/configure-notifications/SKILL.md +1 -1
- package/skills/configure-openclaw/SKILL.md +154 -157
- package/skills/deep-interview/SKILL.md +247 -0
- package/skills/doctor/SKILL.md +1 -1
- package/skills/help/SKILL.md +3 -3
- package/skills/ralph/SKILL.md +42 -11
- package/skills/ralplan/SKILL.md +17 -0
- package/skills/skill/SKILL.md +32 -32
- package/skills/team/SKILL.md +60 -0
- package/skills/visual-verdict/SKILL.md +76 -0
- package/skills/web-clone/SKILL.md +366 -0
- package/skills/worker/SKILL.md +5 -4
- package/templates/AGENTS.md +9 -0
- package/templates/catalog-manifest.json +39 -2
package/skills/help/SKILL.md
CHANGED
|
@@ -44,7 +44,7 @@ I'll figure out what to stop based on context.
|
|
|
44
44
|
If you haven't configured OMX yet:
|
|
45
45
|
|
|
46
46
|
```
|
|
47
|
-
/
|
|
47
|
+
/omx-setup
|
|
48
48
|
```
|
|
49
49
|
|
|
50
50
|
This is the **only command** you need to know. It downloads the configuration and you're done.
|
|
@@ -134,7 +134,7 @@ Based on patterns found, output recommendations:
|
|
|
134
134
|
- "Use security-reviewer after auth/API changes"
|
|
135
135
|
|
|
136
136
|
**If defaultExecutionMode not set:**
|
|
137
|
-
- "Set defaultExecutionMode in /
|
|
137
|
+
- "Set defaultExecutionMode in /omx-setup for consistent behavior"
|
|
138
138
|
|
|
139
139
|
### Step 4: Output Report
|
|
140
140
|
|
|
@@ -179,7 +179,7 @@ No token tracking found. To enable tracking:
|
|
|
179
179
|
1. Ensure ~/.omx/state/ directory exists
|
|
180
180
|
2. Run any OMX command to start tracking
|
|
181
181
|
|
|
182
|
-
Tip: Run /
|
|
182
|
+
Tip: Run /omx-setup to configure OMX properly.
|
|
183
183
|
```
|
|
184
184
|
|
|
185
185
|
## Need More Help?
|
package/skills/ralph/SKILL.md
CHANGED
|
@@ -38,6 +38,18 @@ Complex tasks often fail silently: partial implementations get declared "done",
|
|
|
38
38
|
</Execution_Policy>
|
|
39
39
|
|
|
40
40
|
<Steps>
|
|
41
|
+
0. **Pre-context intake (required before planning/execution loop starts)**:
|
|
42
|
+
- Assemble or load a context snapshot at `.omx/context/{task-slug}-{timestamp}.md` (UTC `YYYYMMDDTHHMMSSZ`).
|
|
43
|
+
- Minimum snapshot fields:
|
|
44
|
+
- task statement
|
|
45
|
+
- desired outcome
|
|
46
|
+
- known facts/evidence
|
|
47
|
+
- constraints
|
|
48
|
+
- unknowns/open questions
|
|
49
|
+
- likely codebase touchpoints
|
|
50
|
+
- If an existing relevant snapshot is available, reuse it and record the path in Ralph state.
|
|
51
|
+
- If request ambiguity is high, run `explore` first for brownfield facts, then run `$deep-interview --quick <task>` to close critical gaps.
|
|
52
|
+
- Do not begin Ralph execution work (delegation, implementation, or verification loops) until snapshot grounding exists. If forced to proceed quickly, note explicit risk tradeoffs.
|
|
41
53
|
1. **Review progress**: Check TODO list and any prior iteration state
|
|
42
54
|
2. **Continue from where you left off**: Pick up incomplete tasks
|
|
43
55
|
3. **Delegate in parallel**: Route tasks to specialist agents at appropriate tiers
|
|
@@ -45,18 +57,24 @@ Complex tasks often fail silently: partial implementations get declared "done",
|
|
|
45
57
|
- Standard work: MEDIUM tier (Sonnet) -- "Add error handling to this module"
|
|
46
58
|
- Complex analysis: HIGH tier (Opus) -- "Debug this race condition"
|
|
47
59
|
4. **Run long operations in background**: Builds, installs, test suites use `run_in_background: true`
|
|
48
|
-
5. **
|
|
60
|
+
5. **Visual task gate (when screenshot/reference images are present)**:
|
|
61
|
+
- Run `$visual-verdict` **before every next edit**.
|
|
62
|
+
- Require structured JSON output: `score`, `verdict`, `category_match`, `differences[]`, `suggestions[]`, `reasoning`.
|
|
63
|
+
- Persist verdict to `.omx/state/{scope}/ralph-progress.json` including numeric + qualitative feedback.
|
|
64
|
+
- Default pass threshold: `score >= 90`.
|
|
65
|
+
- **URL-based cloning tasks**: When the task description contains a target URL (e.g., "clone https://example.com"), invoke `$web-clone` instead of `$visual-verdict`. The web-clone skill handles the full extraction → generation → verification pipeline and uses `$visual-verdict` internally for visual scoring.
|
|
66
|
+
6. **Verify completion with fresh evidence**:
|
|
49
67
|
a. Identify what command proves the task is complete
|
|
50
68
|
b. Run verification (test, build, lint)
|
|
51
69
|
c. Read the output -- confirm it actually passed
|
|
52
70
|
d. Check: zero pending/in_progress TODO items
|
|
53
|
-
|
|
71
|
+
7. **Architect verification** (tiered):
|
|
54
72
|
- <5 files, <100 lines with full tests: STANDARD tier minimum (architect-medium / Sonnet)
|
|
55
73
|
- Standard changes: STANDARD tier (architect-medium / Sonnet)
|
|
56
74
|
- >20 files or security/architectural changes: THOROUGH tier (architect / Opus)
|
|
57
75
|
- Ralph floor: always at least STANDARD, even for small changes
|
|
58
|
-
|
|
59
|
-
|
|
76
|
+
8. **On approval**: Run `/cancel` to cleanly exit and clean up all state files
|
|
77
|
+
9. **On rejection**: Fix the issues raised, then re-verify at the same tier
|
|
60
78
|
</Steps>
|
|
61
79
|
|
|
62
80
|
<Tool_Usage>
|
|
@@ -65,6 +83,7 @@ Complex tasks often fail silently: partial implementations get declared "done",
|
|
|
65
83
|
- Skip Codex consultation for simple feature additions, well-tested changes, or time-critical verification
|
|
66
84
|
- If ToolSearch finds no MCP tools or Codex is unavailable, proceed with architect agent verification alone -- never block on external tools
|
|
67
85
|
- Use `state_write` / `state_read` for ralph mode state persistence between iterations
|
|
86
|
+
- Persist context snapshot path in Ralph mode state so later phases and agents share the same grounding context
|
|
68
87
|
</Tool_Usage>
|
|
69
88
|
|
|
70
89
|
## State Management
|
|
@@ -72,7 +91,7 @@ Complex tasks often fail silently: partial implementations get declared "done",
|
|
|
72
91
|
Use the `omx_state` MCP server tools (`state_write`, `state_read`, `state_clear`) for Ralph lifecycle state.
|
|
73
92
|
|
|
74
93
|
- **On start**:
|
|
75
|
-
`state_write({mode: "ralph", active: true, iteration: 1, max_iterations: 10, current_phase: "executing", started_at: "<now>"})`
|
|
94
|
+
`state_write({mode: "ralph", active: true, iteration: 1, max_iterations: 10, current_phase: "executing", started_at: "<now>", state: {context_snapshot_path: "<snapshot-path>"}})`
|
|
76
95
|
- **On each iteration**:
|
|
77
96
|
`state_write({mode: "ralph", iteration: <current>, current_phase: "executing"})`
|
|
78
97
|
- **On verification/fix transition**:
|
|
@@ -148,12 +167,24 @@ When the user provides the `--prd` flag, initialize a Product Requirements Docum
|
|
|
148
167
|
### Detecting PRD Mode
|
|
149
168
|
Check if `{{PROMPT}}` contains `--prd` or `--PRD`.
|
|
150
169
|
|
|
170
|
+
### Visual Reference Flags (Optional)
|
|
171
|
+
Ralph execution supports visual reference flags for screenshot tasks:
|
|
172
|
+
- Repeatable image inputs: `-i <image-path>` (can be used multiple times)
|
|
173
|
+
- Image directory input: `--images-dir <directory>`
|
|
174
|
+
|
|
175
|
+
Example:
|
|
176
|
+
`ralph -i refs/hn.png -i refs/hn-item.png --images-dir ./screenshots "match HackerNews layout"`
|
|
177
|
+
|
|
151
178
|
### PRD Workflow
|
|
152
|
-
1.
|
|
179
|
+
1. Run deep-interview in quick mode before creating PRD artifacts:
|
|
180
|
+
- Execute: `$deep-interview --quick <task>`
|
|
181
|
+
- Complete a compact requirements pass (context, goals, scope, constraints, validation)
|
|
182
|
+
- Persist interview output to `.omx/interviews/{slug}-{timestamp}.md`
|
|
183
|
+
2. Create canonical PRD/progress artifacts:
|
|
153
184
|
- PRD: `.omx/plans/prd-{slug}.md`
|
|
154
185
|
- Progress ledger: `.omx/state/{scope}/ralph-progress.json` (session scope when available, else root scope)
|
|
155
|
-
|
|
156
|
-
|
|
186
|
+
3. Parse the task (everything after `--prd` flag)
|
|
187
|
+
4. Break down into user stories:
|
|
157
188
|
|
|
158
189
|
```json
|
|
159
190
|
{
|
|
@@ -173,9 +204,9 @@ Check if `{{PROMPT}}` contains `--prd` or `--PRD`.
|
|
|
173
204
|
}
|
|
174
205
|
```
|
|
175
206
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
207
|
+
5. Initialize canonical progress ledger at `.omx/state/{scope}/ralph-progress.json`
|
|
208
|
+
6. Guidelines: right-sized stories (one session each), verifiable criteria, independent stories, priority order (foundational work first)
|
|
209
|
+
7. Proceed to normal ralph loop using user stories as the task list
|
|
179
210
|
|
|
180
211
|
### Example
|
|
181
212
|
User input: `--prd build a todo app with React and TypeScript`
|
package/skills/ralplan/SKILL.md
CHANGED
|
@@ -58,6 +58,23 @@ The consensus workflow:
|
|
|
58
58
|
|
|
59
59
|
Follow the Plan skill's full documentation for consensus mode details.
|
|
60
60
|
|
|
61
|
+
## Pre-context Intake
|
|
62
|
+
|
|
63
|
+
Before consensus planning or execution handoff, ensure a grounded context snapshot exists:
|
|
64
|
+
|
|
65
|
+
1. Derive a task slug from the request.
|
|
66
|
+
2. Reuse the latest relevant snapshot in `.omx/context/{slug}-*.md` when available.
|
|
67
|
+
3. If none exists, create `.omx/context/{slug}-{timestamp}.md` (UTC `YYYYMMDDTHHMMSSZ`) with:
|
|
68
|
+
- task statement
|
|
69
|
+
- desired outcome
|
|
70
|
+
- known facts/evidence
|
|
71
|
+
- constraints
|
|
72
|
+
- unknowns/open questions
|
|
73
|
+
- likely codebase touchpoints
|
|
74
|
+
4. If ambiguity remains high, run `explore` first for brownfield facts, then run `$deep-interview --quick <task>` before continuing.
|
|
75
|
+
|
|
76
|
+
Do not hand off to execution modes until this intake is complete; if urgency forces progress, explicitly document the risk tradeoffs.
|
|
77
|
+
|
|
61
78
|
## Pre-Execution Gate
|
|
62
79
|
|
|
63
80
|
### Why the Gate Exists
|
package/skills/skill/SKILL.md
CHANGED
|
@@ -15,19 +15,19 @@ Meta-skill for managing oh-my-codex skills via CLI-like commands.
|
|
|
15
15
|
Show all local skills organized by scope.
|
|
16
16
|
|
|
17
17
|
**Behavior:**
|
|
18
|
-
1. Scan user skills at `~/.
|
|
19
|
-
2. Scan project skills at `.
|
|
18
|
+
1. Scan user skills at `~/.agents/skills/`
|
|
19
|
+
2. Scan project skills at `.agents/skills/`
|
|
20
20
|
3. Parse YAML frontmatter for metadata
|
|
21
21
|
4. Display in organized table format:
|
|
22
22
|
|
|
23
23
|
```
|
|
24
|
-
USER SKILLS (~/.
|
|
24
|
+
USER SKILLS (~/.agents/skills/):
|
|
25
25
|
| Name | Triggers | Quality | Usage | Scope |
|
|
26
26
|
|-------------------|--------------------|---------|-------|-------|
|
|
27
27
|
| error-handler | fix, error | 95% | 42 | user |
|
|
28
28
|
| api-builder | api, endpoint | 88% | 23 | user |
|
|
29
29
|
|
|
30
|
-
PROJECT SKILLS (.
|
|
30
|
+
PROJECT SKILLS (.agents/skills/):
|
|
31
31
|
| Name | Triggers | Quality | Usage | Scope |
|
|
32
32
|
|-------------------|--------------------|---------|-------|---------|
|
|
33
33
|
| test-runner | test, run | 92% | 15 | project |
|
|
@@ -51,8 +51,8 @@ Interactive wizard for creating a new skill.
|
|
|
51
51
|
4. **Ask for argument hint** (optional)
|
|
52
52
|
- Example: "<file> [options]"
|
|
53
53
|
5. **Ask for scope:**
|
|
54
|
-
- `user` → `~/.
|
|
55
|
-
- `project` → `.
|
|
54
|
+
- `user` → `~/.agents/skills/<name>/SKILL.md`
|
|
55
|
+
- `project` → `.agents/skills/<name>/SKILL.md`
|
|
56
56
|
6. **Create skill file** with template:
|
|
57
57
|
|
|
58
58
|
```yaml
|
|
@@ -105,7 +105,7 @@ Triggers (comma-separated): log, logger, logging
|
|
|
105
105
|
Argument hint (optional): <level> [message]
|
|
106
106
|
Scope (user/project): user
|
|
107
107
|
|
|
108
|
-
✓ Created skill at ~/.
|
|
108
|
+
✓ Created skill at ~/.agents/skills/custom-logger/SKILL.md
|
|
109
109
|
→ Edit with: /skill edit custom-logger
|
|
110
110
|
```
|
|
111
111
|
|
|
@@ -117,13 +117,13 @@ Remove a skill by name.
|
|
|
117
117
|
|
|
118
118
|
**Behavior:**
|
|
119
119
|
1. **Search for skill** in both scopes:
|
|
120
|
-
- `~/.
|
|
121
|
-
- `.
|
|
120
|
+
- `~/.agents/skills/<name>/SKILL.md`
|
|
121
|
+
- `.agents/skills/<name>/SKILL.md`
|
|
122
122
|
2. **If found:**
|
|
123
123
|
- Display skill info (name, description, scope)
|
|
124
124
|
- **Ask for confirmation:** "Delete '<name>' skill from <scope>? (yes/no)"
|
|
125
125
|
3. **If confirmed:**
|
|
126
|
-
- Delete entire skill directory (e.g., `~/.
|
|
126
|
+
- Delete entire skill directory (e.g., `~/.agents/skills/<name>/`)
|
|
127
127
|
- Report: "✓ Removed skill '<name>' from <scope>"
|
|
128
128
|
4. **If not found:**
|
|
129
129
|
- Report: "✗ Skill '<name>' not found in user or project scope"
|
|
@@ -135,7 +135,7 @@ Remove a skill by name.
|
|
|
135
135
|
User: /skill remove old-logger
|
|
136
136
|
Assistant: Found skill 'old-logger' in user scope:
|
|
137
137
|
Description: Legacy logging utility
|
|
138
|
-
Scope: user (~/.
|
|
138
|
+
Scope: user (~/.agents/skills/)
|
|
139
139
|
|
|
140
140
|
Delete 'old-logger' skill? (yes/no)
|
|
141
141
|
|
|
@@ -251,13 +251,13 @@ Show detailed information about a skill.
|
|
|
251
251
|
|
|
252
252
|
```
|
|
253
253
|
Skill: custom-logger
|
|
254
|
-
Scope: user (~/.
|
|
254
|
+
Scope: user (~/.agents/skills/custom-logger/)
|
|
255
255
|
Description: Enhanced logging with structured output
|
|
256
256
|
Triggers: log, logger, logging
|
|
257
257
|
Argument Hint: <level> [message]
|
|
258
258
|
Quality: 95% (if available)
|
|
259
259
|
Usage Count: 42 times (if available)
|
|
260
|
-
File Path: /home/user/.
|
|
260
|
+
File Path: /home/user/.agents/skills/custom-logger/SKILL.md
|
|
261
261
|
|
|
262
262
|
--- FULL CONTENT ---
|
|
263
263
|
[entire markdown content]
|
|
@@ -272,7 +272,7 @@ Assistant: Skill: custom-logger
|
|
|
272
272
|
Scope: user
|
|
273
273
|
Description: Enhanced logging with structured output
|
|
274
274
|
Triggers: log, logger, logging
|
|
275
|
-
File: ~/.
|
|
275
|
+
File: ~/.agents/skills/custom-logger/SKILL.md
|
|
276
276
|
|
|
277
277
|
--- CONTENT ---
|
|
278
278
|
# Custom Logger Skill
|
|
@@ -290,8 +290,8 @@ Sync skills between user and project scopes.
|
|
|
290
290
|
|
|
291
291
|
**Behavior:**
|
|
292
292
|
1. **Scan both scopes:**
|
|
293
|
-
- User skills: `~/.
|
|
294
|
-
- Project skills: `.
|
|
293
|
+
- User skills: `~/.agents/skills/`
|
|
294
|
+
- Project skills: `.agents/skills/`
|
|
295
295
|
2. **Compare and categorize:**
|
|
296
296
|
- User-only skills (not in project)
|
|
297
297
|
- Project-only skills (not in user)
|
|
@@ -339,7 +339,7 @@ Assistant: Found 5 user-only skills and 2 project-only skills.
|
|
|
339
339
|
|
|
340
340
|
Copy 'error-handler' from user to project? (yes/no/skip)
|
|
341
341
|
User: yes
|
|
342
|
-
Assistant: ✓ Copied 'error-handler' to .
|
|
342
|
+
Assistant: ✓ Copied 'error-handler' to .agents/skills/
|
|
343
343
|
|
|
344
344
|
Copy 'api-builder' from user to project? (yes/no/skip)
|
|
345
345
|
User: skip
|
|
@@ -360,7 +360,7 @@ First, check if skill directories exist and create them if needed:
|
|
|
360
360
|
|
|
361
361
|
```bash
|
|
362
362
|
# Check and create user-level skills directory
|
|
363
|
-
USER_SKILLS_DIR="$HOME/.
|
|
363
|
+
USER_SKILLS_DIR="$HOME/.agents/skills"
|
|
364
364
|
if [ -d "$USER_SKILLS_DIR" ]; then
|
|
365
365
|
echo "User skills directory exists: $USER_SKILLS_DIR"
|
|
366
366
|
else
|
|
@@ -369,7 +369,7 @@ else
|
|
|
369
369
|
fi
|
|
370
370
|
|
|
371
371
|
# Check and create project-level skills directory
|
|
372
|
-
PROJECT_SKILLS_DIR=".
|
|
372
|
+
PROJECT_SKILLS_DIR=".agents/skills"
|
|
373
373
|
if [ -d "$PROJECT_SKILLS_DIR" ]; then
|
|
374
374
|
echo "Project skills directory exists: $PROJECT_SKILLS_DIR"
|
|
375
375
|
else
|
|
@@ -384,15 +384,15 @@ Scan both directories and show a comprehensive inventory:
|
|
|
384
384
|
|
|
385
385
|
```bash
|
|
386
386
|
# Scan user-level skills
|
|
387
|
-
echo "=== USER-LEVEL SKILLS (~/.
|
|
388
|
-
if [ -d "$HOME/.
|
|
389
|
-
USER_COUNT=$(find "$HOME/.
|
|
387
|
+
echo "=== USER-LEVEL SKILLS (~/.agents/skills/) ==="
|
|
388
|
+
if [ -d "$HOME/.agents/skills" ]; then
|
|
389
|
+
USER_COUNT=$(find "$HOME/.agents/skills" -name "*.md" 2>/dev/null | wc -l)
|
|
390
390
|
echo "Total skills: $USER_COUNT"
|
|
391
391
|
|
|
392
392
|
if [ $USER_COUNT -gt 0 ]; then
|
|
393
393
|
echo ""
|
|
394
394
|
echo "Skills found:"
|
|
395
|
-
find "$HOME/.
|
|
395
|
+
find "$HOME/.agents/skills" -name "*.md" -type f -exec sh -c '
|
|
396
396
|
FILE="$1"
|
|
397
397
|
NAME=$(grep -m1 "^name:" "$FILE" 2>/dev/null | sed "s/name: //")
|
|
398
398
|
DESC=$(grep -m1 "^description:" "$FILE" 2>/dev/null | sed "s/description: //")
|
|
@@ -408,15 +408,15 @@ else
|
|
|
408
408
|
fi
|
|
409
409
|
|
|
410
410
|
echo ""
|
|
411
|
-
echo "=== PROJECT-LEVEL SKILLS (.
|
|
412
|
-
if [ -d ".
|
|
413
|
-
PROJECT_COUNT=$(find ".
|
|
411
|
+
echo "=== PROJECT-LEVEL SKILLS (.agents/skills/) ==="
|
|
412
|
+
if [ -d ".agents/skills" ]; then
|
|
413
|
+
PROJECT_COUNT=$(find ".agents/skills" -name "*.md" 2>/dev/null | wc -l)
|
|
414
414
|
echo "Total skills: $PROJECT_COUNT"
|
|
415
415
|
|
|
416
416
|
if [ $PROJECT_COUNT -gt 0 ]; then
|
|
417
417
|
echo ""
|
|
418
418
|
echo "Skills found:"
|
|
419
|
-
find ".
|
|
419
|
+
find ".agents/skills" -name "*.md" -type f -exec sh -c '
|
|
420
420
|
FILE="$1"
|
|
421
421
|
NAME=$(grep -m1 "^name:" "$FILE" 2>/dev/null | sed "s/name: //")
|
|
422
422
|
DESC=$(grep -m1 "^description:" "$FILE" 2>/dev/null | sed "s/description: //")
|
|
@@ -467,8 +467,8 @@ Ask user to provide either:
|
|
|
467
467
|
- **Paste content**: Paste skill markdown content directly
|
|
468
468
|
|
|
469
469
|
Then ask for scope:
|
|
470
|
-
- **User-level** (~/.
|
|
471
|
-
- **Project-level** (.
|
|
470
|
+
- **User-level** (~/.agents/skills/) - Available across all projects
|
|
471
|
+
- **Project-level** (.agents/skills/) - Only for this project
|
|
472
472
|
|
|
473
473
|
Validate the skill format and save to the chosen location.
|
|
474
474
|
|
|
@@ -715,7 +715,7 @@ When invoked without arguments, run the full guided wizard.
|
|
|
715
715
|
|
|
716
716
|
**Automatic Application**: Codex detects triggers and applies skills automatically - no need to remember or search for solutions.
|
|
717
717
|
|
|
718
|
-
**Version Control**: Project-level skills (.
|
|
718
|
+
**Version Control**: Project-level skills (.agents/skills/) are committed with your code, so the whole team benefits.
|
|
719
719
|
|
|
720
720
|
**Evolving Knowledge**: Skills improve over time as you discover better approaches and refine triggers.
|
|
721
721
|
|
|
@@ -760,8 +760,8 @@ Good skills are:
|
|
|
760
760
|
> /skill list
|
|
761
761
|
|
|
762
762
|
Checking skill directories...
|
|
763
|
-
✓ User skills directory exists: ~/.
|
|
764
|
-
✓ Project skills directory exists: .
|
|
763
|
+
✓ User skills directory exists: ~/.agents/skills/
|
|
764
|
+
✓ Project skills directory exists: .agents/skills/
|
|
765
765
|
|
|
766
766
|
Scanning for skills...
|
|
767
767
|
|
package/skills/team/SKILL.md
CHANGED
|
@@ -70,6 +70,23 @@ tmux list-panes -F '#{pane_id}\t#{pane_start_command}' | rg 'hud --watch' || tru
|
|
|
70
70
|
|
|
71
71
|
If duplicates exist, remove extras before `omx team` to prevent HUD ending up in worker stack.
|
|
72
72
|
|
|
73
|
+
## Pre-context Intake Gate
|
|
74
|
+
|
|
75
|
+
Before launching `omx team`, require a grounded context snapshot:
|
|
76
|
+
|
|
77
|
+
1. Derive a task slug from the request.
|
|
78
|
+
2. Reuse the latest relevant snapshot in `.omx/context/{slug}-*.md` when available.
|
|
79
|
+
3. If none exists, create `.omx/context/{slug}-{timestamp}.md` (UTC `YYYYMMDDTHHMMSSZ`) with:
|
|
80
|
+
- task statement
|
|
81
|
+
- desired outcome
|
|
82
|
+
- known facts/evidence
|
|
83
|
+
- constraints
|
|
84
|
+
- unknowns/open questions
|
|
85
|
+
- likely codebase touchpoints
|
|
86
|
+
4. If ambiguity remains high, run `explore` first for brownfield facts, then run `$deep-interview --quick <task>` before team launch.
|
|
87
|
+
|
|
88
|
+
Do not start worker panes until this gate is satisfied; if forced to proceed quickly, state explicit scope/risk limitations in the launch report.
|
|
89
|
+
|
|
73
90
|
## Current Runtime Behavior (As Implemented)
|
|
74
91
|
|
|
75
92
|
`omx team` currently performs:
|
|
@@ -343,6 +360,49 @@ When operating this skill, provide concrete progress evidence:
|
|
|
343
360
|
Do not claim success without file/pane evidence.
|
|
344
361
|
Do not claim clean completion if shutdown occurred with `in_progress>0`.
|
|
345
362
|
|
|
363
|
+
## MCP Job Lifecycle Tools
|
|
364
|
+
|
|
365
|
+
For programmatic or agent-driven team spawning (as opposed to interactive CLI use), OMX exposes four MCP tools via the `team-server`:
|
|
366
|
+
|
|
367
|
+
| Tool | Description |
|
|
368
|
+
|------|-------------|
|
|
369
|
+
| `omx_run_team_start` | Spawn tmux CLI workers in the background; returns a `jobId` immediately |
|
|
370
|
+
| `omx_run_team_status` | Non-blocking status check for a running job |
|
|
371
|
+
| `omx_run_team_wait` | Block until the job completes, with automatic idle-pane nudging |
|
|
372
|
+
| `omx_run_team_cleanup` | Kill worker tmux panes for a job (early stop only) |
|
|
373
|
+
|
|
374
|
+
### CLI vs MCP Tools
|
|
375
|
+
|
|
376
|
+
- **`omx team ...` CLI** — Primary method for interactive team orchestration. Use this when you are operating inside a live tmux session and want direct pane visibility.
|
|
377
|
+
- **`omx_run_team_*` MCP tools** — For programmatic or agent-driven team spawning (analogous to OMC's `omc_run_team_*` tools). Use these when an agent needs to launch workers, poll status, and collect results without manual intervention.
|
|
378
|
+
|
|
379
|
+
### Naming Distinction
|
|
380
|
+
|
|
381
|
+
Two cleanup tools exist and must not be confused:
|
|
382
|
+
|
|
383
|
+
- `team_cleanup` (**state-server**): Deletes team state **files** on disk (`.omx/state/team/<team>/`). Use after a team run is fully complete.
|
|
384
|
+
- `omx_run_team_cleanup` (**team-server**): Kills tmux worker **panes** for a job. Use only when stopping workers early; otherwise `omx_run_team_wait` handles natural termination.
|
|
385
|
+
|
|
386
|
+
### Basic Usage Example
|
|
387
|
+
|
|
388
|
+
```
|
|
389
|
+
1. omx_run_team_start({
|
|
390
|
+
teamName: "fix-bugs",
|
|
391
|
+
agentTypes: ["codex"],
|
|
392
|
+
tasks: [{ subject: "Fix bug", description: "..." }],
|
|
393
|
+
cwd: "/path/to/project"
|
|
394
|
+
})
|
|
395
|
+
→ Returns { jobId: "omx-abc123" }
|
|
396
|
+
|
|
397
|
+
2. omx_run_team_wait({ job_id: "omx-abc123", timeout_ms: 300000 })
|
|
398
|
+
→ Blocks until done, auto-nudges idle panes
|
|
399
|
+
|
|
400
|
+
3. omx_run_team_cleanup({ job_id: "omx-abc123" })
|
|
401
|
+
→ Only needed if stopping workers early
|
|
402
|
+
```
|
|
403
|
+
|
|
404
|
+
`omx_run_team_status` can be called between steps 1 and 2 for a non-blocking poll if you need to interleave other work while workers run.
|
|
405
|
+
|
|
346
406
|
## Limitations
|
|
347
407
|
|
|
348
408
|
- Worktree provisioning requires a git repository and can fail on branch/path collisions
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: visual-verdict
|
|
3
|
+
description: Structured visual QA verdict for screenshot-to-reference comparisons
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<Purpose>
|
|
7
|
+
Use this skill to compare generated UI screenshots against one or more reference images and return a strict JSON verdict that can drive the next edit iteration.
|
|
8
|
+
</Purpose>
|
|
9
|
+
|
|
10
|
+
<Use_When>
|
|
11
|
+
- The task includes visual fidelity requirements (layout, spacing, typography, component styling)
|
|
12
|
+
- You have a generated screenshot and at least one reference image
|
|
13
|
+
- You need deterministic pass/fail guidance before continuing edits
|
|
14
|
+
</Use_When>
|
|
15
|
+
|
|
16
|
+
<Inputs>
|
|
17
|
+
- `reference_images[]` (one or more image paths)
|
|
18
|
+
- `generated_screenshot` (current output image)
|
|
19
|
+
- Optional: `category_hint` (e.g., `hackernews`, `sns-feed`, `dashboard`)
|
|
20
|
+
</Inputs>
|
|
21
|
+
|
|
22
|
+
<Output_Contract>
|
|
23
|
+
Return **JSON only** with this exact shape:
|
|
24
|
+
|
|
25
|
+
```json
|
|
26
|
+
{
|
|
27
|
+
"score": 0,
|
|
28
|
+
"verdict": "revise",
|
|
29
|
+
"category_match": false,
|
|
30
|
+
"differences": ["..."],
|
|
31
|
+
"suggestions": ["..."],
|
|
32
|
+
"reasoning": "short explanation"
|
|
33
|
+
}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Rules:
|
|
37
|
+
- `score`: integer 0-100
|
|
38
|
+
- `verdict`: short status (`pass`, `revise`, or `fail`)
|
|
39
|
+
- `category_match`: `true` when the generated screenshot matches the intended UI category/style
|
|
40
|
+
- `differences[]`: concrete visual mismatches (layout, spacing, typography, colors, hierarchy)
|
|
41
|
+
- `suggestions[]`: actionable next edits tied to the differences
|
|
42
|
+
- `reasoning`: 1-2 sentence summary
|
|
43
|
+
|
|
44
|
+
<Threshold_And_Loop>
|
|
45
|
+
- Target pass threshold is **90+**.
|
|
46
|
+
- If `score < 90`, continue editing and rerun `$visual-verdict` before any further code edits in the next iteration.
|
|
47
|
+
- Persist the verdict in `.omx/state/{scope}/ralph-progress.json` with both:
|
|
48
|
+
- numeric signal (`score`, threshold pass/fail)
|
|
49
|
+
- qualitative signal (`reasoning`, `suggestions`, `next_actions`)
|
|
50
|
+
</Threshold_And_Loop>
|
|
51
|
+
|
|
52
|
+
<Debug_Visualization>
|
|
53
|
+
When mismatch diagnosis is hard:
|
|
54
|
+
1. Keep `$visual-verdict` as the authoritative decision.
|
|
55
|
+
2. Use pixel-level diff tooling (pixel diff / pixelmatch overlay) as a **secondary debug aid** to localize hotspots.
|
|
56
|
+
3. Convert pixel diff hotspots into concrete `differences[]` and `suggestions[]` updates.
|
|
57
|
+
</Debug_Visualization>
|
|
58
|
+
|
|
59
|
+
<Example>
|
|
60
|
+
```json
|
|
61
|
+
{
|
|
62
|
+
"score": 87,
|
|
63
|
+
"verdict": "revise",
|
|
64
|
+
"category_match": true,
|
|
65
|
+
"differences": [
|
|
66
|
+
"Top nav spacing is tighter than reference",
|
|
67
|
+
"Primary button uses smaller font weight"
|
|
68
|
+
],
|
|
69
|
+
"suggestions": [
|
|
70
|
+
"Increase nav item horizontal padding by 4px",
|
|
71
|
+
"Set primary button font-weight to 600"
|
|
72
|
+
],
|
|
73
|
+
"reasoning": "Core layout matches, but style details still diverge."
|
|
74
|
+
}
|
|
75
|
+
```
|
|
76
|
+
</Example>
|