oh-my-codex 0.7.6 → 0.8.1
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 +315 -0
- package/README.es.md +296 -17
- package/README.fr.md +315 -0
- package/README.it.md +315 -0
- package/README.ja.md +297 -18
- package/README.ko.md +296 -17
- package/README.md +110 -13
- package/README.pt.md +296 -17
- package/README.ru.md +296 -17
- package/README.tr.md +315 -0
- package/README.vi.md +297 -18
- package/README.zh-TW.md +362 -0
- package/README.zh.md +293 -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 +85 -2
- 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.js +19 -43
- package/dist/cli/__tests__/ralph.test.js.map +1 -1
- 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.test.js +219 -1
- package/dist/cli/__tests__/team.test.js.map +1 -1
- 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 +8 -2
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +150 -52
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/ralph.d.ts +3 -11
- package/dist/cli/ralph.d.ts.map +1 -1
- package/dist/cli/ralph.js +64 -45
- package/dist/cli/ralph.js.map +1 -1
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +17 -18
- package/dist/cli/setup.js.map +1 -1
- package/dist/cli/team.d.ts.map +1 -1
- package/dist/cli/team.js +257 -0
- package/dist/cli/team.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-all-workers-idle.test.js +23 -7
- package/dist/hooks/__tests__/notify-hook-all-workers-idle.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 +264 -1
- package/dist/hooks/__tests__/notify-hook-team-dispatch.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-team-leader-nudge.test.js +61 -1
- package/dist/hooks/__tests__/notify-hook-team-leader-nudge.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-worker-idle.test.js +17 -7
- package/dist/hooks/__tests__/notify-hook-worker-idle.test.js.map +1 -1
- 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 +61 -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__/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__/path-traversal.test.js +9 -227
- package/dist/mcp/__tests__/path-traversal.test.js.map +1 -1
- package/dist/mcp/__tests__/state-server-schema.test.js +16 -20
- package/dist/mcp/__tests__/state-server-schema.test.js.map +1 -1
- package/dist/mcp/__tests__/state-server-team-tools.test.js +30 -487
- package/dist/mcp/__tests__/state-server-team-tools.test.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 +179 -0
- package/dist/mcp/state-server.d.ts.map +1 -1
- package/dist/mcp/state-server.js +221 -1111
- package/dist/mcp/state-server.js.map +1 -1
- package/dist/mcp/team-server.d.ts.map +1 -1
- package/dist/mcp/team-server.js +9 -3
- package/dist/mcp/team-server.js.map +1 -1
- 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__/dispatch-cooldown.test.d.ts +5 -0
- package/dist/notifications/__tests__/dispatch-cooldown.test.d.ts.map +1 -0
- package/dist/notifications/__tests__/dispatch-cooldown.test.js +100 -0
- package/dist/notifications/__tests__/dispatch-cooldown.test.js.map +1 -0
- package/dist/notifications/__tests__/temp-mode.test.d.ts +2 -0
- package/dist/notifications/__tests__/temp-mode.test.d.ts.map +1 -0
- package/dist/notifications/__tests__/temp-mode.test.js +172 -0
- package/dist/notifications/__tests__/temp-mode.test.js.map +1 -0
- package/dist/notifications/config.d.ts.map +1 -1
- package/dist/notifications/config.js +67 -7
- package/dist/notifications/config.js.map +1 -1
- package/dist/notifications/dispatch-cooldown.d.ts +36 -0
- package/dist/notifications/dispatch-cooldown.d.ts.map +1 -0
- package/dist/notifications/dispatch-cooldown.js +109 -0
- package/dist/notifications/dispatch-cooldown.js.map +1 -0
- 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/index.d.ts +5 -0
- package/dist/notifications/index.d.ts.map +1 -1
- package/dist/notifications/index.js +39 -8
- package/dist/notifications/index.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/temp-contract.d.ts +22 -0
- package/dist/notifications/temp-contract.d.ts.map +1 -0
- package/dist/notifications/temp-contract.js +147 -0
- package/dist/notifications/temp-contract.js.map +1 -0
- package/dist/notifications/tmux.js +2 -2
- package/dist/notifications/tmux.js.map +1 -1
- package/dist/notifications/types.d.ts +18 -0
- package/dist/notifications/types.d.ts.map +1 -1
- package/dist/openclaw/__tests__/config.test.js +81 -0
- package/dist/openclaw/__tests__/config.test.js.map +1 -1
- package/dist/openclaw/__tests__/dispatcher.test.js +40 -1
- package/dist/openclaw/__tests__/dispatcher.test.js.map +1 -1
- package/dist/openclaw/config.d.ts +4 -0
- package/dist/openclaw/config.d.ts.map +1 -1
- package/dist/openclaw/config.js +110 -16
- package/dist/openclaw/config.js.map +1 -1
- package/dist/openclaw/dispatcher.d.ts +9 -3
- package/dist/openclaw/dispatcher.d.ts.map +1 -1
- package/dist/openclaw/dispatcher.js +42 -9
- package/dist/openclaw/dispatcher.js.map +1 -1
- package/dist/openclaw/types.d.ts +5 -1
- 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__/api-interop.test.d.ts +2 -0
- package/dist/team/__tests__/api-interop.test.d.ts.map +1 -0
- package/dist/team/__tests__/api-interop.test.js +1052 -0
- package/dist/team/__tests__/api-interop.test.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__/mcp-comm.test.js +30 -0
- package/dist/team/__tests__/mcp-comm.test.js.map +1 -1
- package/dist/team/__tests__/runtime.test.js +33 -26
- package/dist/team/__tests__/runtime.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-claude-workers-demo.test.d.ts +2 -0
- package/dist/team/__tests__/tmux-claude-workers-demo.test.d.ts.map +1 -0
- package/dist/team/__tests__/tmux-claude-workers-demo.test.js +176 -0
- package/dist/team/__tests__/tmux-claude-workers-demo.test.js.map +1 -0
- package/dist/team/__tests__/tmux-session.test.js +8 -0
- package/dist/team/__tests__/tmux-session.test.js.map +1 -1
- package/dist/team/__tests__/worker-bootstrap.test.js +29 -0
- package/dist/team/__tests__/worker-bootstrap.test.js.map +1 -1
- package/dist/team/__tests__/worktree.test.js +54 -1
- package/dist/team/__tests__/worktree.test.js.map +1 -1
- package/dist/team/api-interop.d.ts +19 -0
- package/dist/team/api-interop.d.ts.map +1 -0
- package/dist/team/api-interop.js +578 -0
- package/dist/team/api-interop.js.map +1 -0
- package/dist/team/mcp-comm.d.ts.map +1 -1
- package/dist/team/mcp-comm.js +32 -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/runtime-cli.js +14 -8
- package/dist/team/runtime-cli.js.map +1 -1
- package/dist/team/runtime.d.ts +2 -1
- package/dist/team/runtime.d.ts.map +1 -1
- package/dist/team/runtime.js +103 -30
- package/dist/team/runtime.js.map +1 -1
- package/dist/team/scaling.d.ts.map +1 -1
- package/dist/team/scaling.js +33 -12
- 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 +4 -1
- 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.map +1 -1
- package/dist/team/tmux-session.js +11 -10
- package/dist/team/tmux-session.js.map +1 -1
- package/dist/team/worker-bootstrap.d.ts.map +1 -1
- package/dist/team/worker-bootstrap.js +58 -26
- package/dist/team/worker-bootstrap.js.map +1 -1
- package/dist/team/worktree.d.ts.map +1 -1
- package/dist/team/worktree.js +43 -1
- 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/demo-claude-workers.sh +241 -0
- package/scripts/demo-team-e2e.sh +179 -0
- package/scripts/fixtures/ask-advisor-stub.js +12 -0
- package/scripts/notify-hook/team-dispatch.js +234 -12
- package/scripts/notify-hook/team-leader-nudge.js +42 -2
- package/scripts/notify-hook/team-worker.js +63 -4
- package/scripts/notify-hook/visual-verdict.js +50 -1
- package/scripts/notify-hook.js +1 -0
- package/scripts/run-provider-advisor.js +179 -0
- package/skills/ask-claude/SKILL.md +61 -0
- package/skills/ask-gemini/SKILL.md +61 -0
- package/skills/autopilot/SKILL.md +32 -2
- package/skills/configure-notifications/SKILL.md +188 -186
- package/skills/deep-interview/SKILL.md +247 -0
- package/skills/omx-setup/SKILL.md +1 -1
- package/skills/ralph/SKILL.md +42 -11
- package/skills/ralplan/SKILL.md +17 -0
- package/skills/team/SKILL.md +64 -5
- package/skills/visual-verdict/SKILL.md +76 -0
- package/skills/web-clone/SKILL.md +366 -0
- package/skills/worker/SKILL.md +42 -11
- package/templates/AGENTS.md +9 -0
- package/templates/catalog-manifest.json +39 -18
- package/skills/configure-discord/SKILL.md +0 -256
- package/skills/configure-openclaw/SKILL.md +0 -267
- package/skills/configure-slack/SKILL.md +0 -226
- package/skills/configure-telegram/SKILL.md +0 -232
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: deep-interview
|
|
3
|
+
description: Socratic deep interview with mathematical ambiguity gating before execution
|
|
4
|
+
argument-hint: "<idea or vague description>"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
<Purpose>
|
|
8
|
+
Deep Interview implements an Ouroboros-inspired Socratic clarification loop before planning or implementation. It turns vague ideas into explicit specifications by asking targeted questions, scoring ambiguity across weighted dimensions, and gating execution until clarity reaches a configurable threshold.
|
|
9
|
+
</Purpose>
|
|
10
|
+
|
|
11
|
+
<Use_When>
|
|
12
|
+
- The request is broad, ambiguous, or missing concrete acceptance criteria
|
|
13
|
+
- The user says "deep interview", "interview me", "ask me everything", "don't assume", or "ouroboros"
|
|
14
|
+
- The user wants to avoid misaligned implementation from underspecified requirements
|
|
15
|
+
- You need a requirements artifact before handing off to `ralplan`, `autopilot`, `ralph`, or `team`
|
|
16
|
+
</Use_When>
|
|
17
|
+
|
|
18
|
+
<Do_Not_Use_When>
|
|
19
|
+
- The request already has concrete file/symbol targets and clear acceptance criteria
|
|
20
|
+
- The user explicitly asks to skip planning/interview and execute immediately
|
|
21
|
+
- The user asks for lightweight brainstorming only (use `plan` instead)
|
|
22
|
+
- A complete PRD/plan already exists and execution should start
|
|
23
|
+
</Do_Not_Use_When>
|
|
24
|
+
|
|
25
|
+
<Why_This_Exists>
|
|
26
|
+
Execution quality is usually bottlenecked by requirement clarity. A single expansion pass often misses hidden assumptions. This workflow applies Socratic pressure + quantitative ambiguity scoring so orchestration modes begin with an explicit, testable spec.
|
|
27
|
+
|
|
28
|
+
Inspired by Ouroboros (https://github.com/Q00/ouroboros) and adapted for OMX conventions.
|
|
29
|
+
</Why_This_Exists>
|
|
30
|
+
|
|
31
|
+
<Depth_Profiles>
|
|
32
|
+
- **Quick (`--quick`)**: fast pre-PRD pass; target threshold `<= 0.30`; max rounds 5
|
|
33
|
+
- **Standard (`--standard`, default)**: full requirement interview; target threshold `<= 0.20`; max rounds 12
|
|
34
|
+
- **Deep (`--deep`)**: high-rigor exploration; target threshold `<= 0.15`; max rounds 20
|
|
35
|
+
|
|
36
|
+
If no flag is provided, use **Standard**.
|
|
37
|
+
</Depth_Profiles>
|
|
38
|
+
|
|
39
|
+
<Execution_Policy>
|
|
40
|
+
- Ask ONE question per round (never batch)
|
|
41
|
+
- Target the weakest clarity dimension each round
|
|
42
|
+
- Gather codebase facts via `explore` before asking user about internals
|
|
43
|
+
- Always run a preflight context intake before the first interview question
|
|
44
|
+
- In Codex CLI, prefer `request_user_input` when available; if unavailable, fall back to concise plain-text one-question turns
|
|
45
|
+
- Re-score ambiguity after each answer and show progress transparently
|
|
46
|
+
- Do not hand off to execution while ambiguity remains above threshold unless user explicitly opts to proceed with warning
|
|
47
|
+
- Persist mode state for resume safety (`state_write` / `state_read`)
|
|
48
|
+
</Execution_Policy>
|
|
49
|
+
|
|
50
|
+
<Steps>
|
|
51
|
+
|
|
52
|
+
## Phase 0: Preflight Context Intake
|
|
53
|
+
|
|
54
|
+
1. Parse `{{ARGUMENTS}}` and derive a short task slug.
|
|
55
|
+
2. Attempt to load the latest relevant context snapshot from `.omx/context/{slug}-*.md`.
|
|
56
|
+
3. If no snapshot exists, create a minimum context snapshot with:
|
|
57
|
+
- Task statement
|
|
58
|
+
- Desired outcome
|
|
59
|
+
- Known facts/evidence
|
|
60
|
+
- Constraints
|
|
61
|
+
- Unknowns/open questions
|
|
62
|
+
- Likely codebase touchpoints
|
|
63
|
+
4. Save snapshot to `.omx/context/{slug}-{timestamp}.md` (UTC `YYYYMMDDTHHMMSSZ`) and reference it in mode state.
|
|
64
|
+
|
|
65
|
+
## Phase 1: Initialize
|
|
66
|
+
|
|
67
|
+
1. Parse `{{ARGUMENTS}}` and depth profile (`--quick|--standard|--deep`).
|
|
68
|
+
2. Detect project context:
|
|
69
|
+
- Run `explore` to classify **brownfield** (existing codebase target) vs **greenfield**.
|
|
70
|
+
- For brownfield, collect relevant codebase context before questioning.
|
|
71
|
+
3. Initialize state via `state_write(mode="deep-interview")`:
|
|
72
|
+
|
|
73
|
+
```json
|
|
74
|
+
{
|
|
75
|
+
"active": true,
|
|
76
|
+
"current_phase": "deep-interview",
|
|
77
|
+
"state": {
|
|
78
|
+
"interview_id": "<uuid>",
|
|
79
|
+
"profile": "quick|standard|deep",
|
|
80
|
+
"type": "greenfield|brownfield",
|
|
81
|
+
"initial_idea": "<user input>",
|
|
82
|
+
"rounds": [],
|
|
83
|
+
"current_ambiguity": 1.0,
|
|
84
|
+
"threshold": 0.3,
|
|
85
|
+
"max_rounds": 5,
|
|
86
|
+
"challenge_modes_used": [],
|
|
87
|
+
"codebase_context": null,
|
|
88
|
+
"context_snapshot_path": ".omx/context/<slug>-<timestamp>.md"
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
4. Announce kickoff with profile, threshold, and current ambiguity.
|
|
94
|
+
|
|
95
|
+
## Phase 2: Socratic Interview Loop
|
|
96
|
+
|
|
97
|
+
Repeat until ambiguity `<= threshold`, user exits with warning, or max rounds reached.
|
|
98
|
+
|
|
99
|
+
### 2a) Generate next question
|
|
100
|
+
Use:
|
|
101
|
+
- Original idea
|
|
102
|
+
- Prior Q&A rounds
|
|
103
|
+
- Current dimension scores
|
|
104
|
+
- Brownfield context (if any)
|
|
105
|
+
- Activated challenge mode injection (Phase 3)
|
|
106
|
+
|
|
107
|
+
Target the lowest-scoring dimension:
|
|
108
|
+
- Goal Clarity
|
|
109
|
+
- Constraint Clarity
|
|
110
|
+
- Success Criteria Clarity
|
|
111
|
+
- Context Clarity (brownfield only)
|
|
112
|
+
|
|
113
|
+
### 2b) Ask the question
|
|
114
|
+
Use structured user-input tooling available in the runtime (`AskUserQuestion` / equivalent) and present:
|
|
115
|
+
|
|
116
|
+
```
|
|
117
|
+
Round {n} | Target: {weakest_dimension} | Ambiguity: {score}%
|
|
118
|
+
|
|
119
|
+
{question}
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### 2c) Score ambiguity
|
|
123
|
+
Score each dimension in `[0.0, 1.0]` with justification + gap.
|
|
124
|
+
|
|
125
|
+
Greenfield: `ambiguity = 1 - (goal × 0.40 + constraints × 0.30 + criteria × 0.30)`
|
|
126
|
+
|
|
127
|
+
Brownfield: `ambiguity = 1 - (goal × 0.35 + constraints × 0.25 + criteria × 0.25 + context × 0.15)`
|
|
128
|
+
|
|
129
|
+
### 2d) Report progress
|
|
130
|
+
Show weighted breakdown table and next focus dimension.
|
|
131
|
+
|
|
132
|
+
### 2e) Persist state
|
|
133
|
+
Append round result and updated scores via `state_write`.
|
|
134
|
+
|
|
135
|
+
### 2f) Round controls
|
|
136
|
+
- Round 3+: allow explicit early exit with risk warning
|
|
137
|
+
- Soft warning at profile midpoint (e.g., round 3/6/10 depending on profile)
|
|
138
|
+
- Hard cap at profile `max_rounds`
|
|
139
|
+
|
|
140
|
+
## Phase 3: Challenge Modes (assumption stress tests)
|
|
141
|
+
|
|
142
|
+
Use each mode once when applicable:
|
|
143
|
+
|
|
144
|
+
- **Contrarian** (round 4+): challenge core assumptions
|
|
145
|
+
- **Simplifier** (round 6+): probe minimal viable scope
|
|
146
|
+
- **Ontologist** (round 8+ and ambiguity > 0.30): ask for essence-level reframing
|
|
147
|
+
|
|
148
|
+
Track used modes in state to prevent repetition.
|
|
149
|
+
|
|
150
|
+
## Phase 4: Crystallize Artifacts
|
|
151
|
+
|
|
152
|
+
When threshold is met (or user exits with warning / hard cap):
|
|
153
|
+
|
|
154
|
+
1. Write interview transcript summary to:
|
|
155
|
+
- `.omx/interviews/{slug}-{timestamp}.md`
|
|
156
|
+
(kept for ralph PRD compatibility)
|
|
157
|
+
2. Write execution-ready spec to:
|
|
158
|
+
- `.omx/specs/deep-interview-{slug}.md`
|
|
159
|
+
|
|
160
|
+
Spec should include:
|
|
161
|
+
- Metadata (profile, rounds, final ambiguity, threshold, context type)
|
|
162
|
+
- Context snapshot reference/path (for ralplan/team reuse)
|
|
163
|
+
- Clarity breakdown table
|
|
164
|
+
- Goal / Constraints / Non-goals
|
|
165
|
+
- Testable acceptance criteria
|
|
166
|
+
- Assumptions exposed + resolutions
|
|
167
|
+
- Technical context findings
|
|
168
|
+
- Full or condensed transcript
|
|
169
|
+
|
|
170
|
+
## Phase 5: Execution Bridge
|
|
171
|
+
|
|
172
|
+
Present execution options after artifact generation:
|
|
173
|
+
|
|
174
|
+
1. **`$ralplan` (Recommended)**
|
|
175
|
+
- Run consensus refinement on the spec:
|
|
176
|
+
- `$plan --consensus --direct <spec-path>`
|
|
177
|
+
2. **`$autopilot`**
|
|
178
|
+
- Use spec as high-clarity execution input
|
|
179
|
+
3. **`$ralph`**
|
|
180
|
+
- Sequential persistence loop using spec/criteria
|
|
181
|
+
4. **`$team`**
|
|
182
|
+
- Parallel coordinated execution using shared spec
|
|
183
|
+
5. **Refine further**
|
|
184
|
+
- Continue interview loop for lower ambiguity
|
|
185
|
+
|
|
186
|
+
**IMPORTANT:** Deep-interview is a requirements mode. On handoff, invoke the selected skill. **Do NOT implement directly** inside deep-interview.
|
|
187
|
+
|
|
188
|
+
</Steps>
|
|
189
|
+
|
|
190
|
+
<Tool_Usage>
|
|
191
|
+
- Use `explore` for codebase fact gathering
|
|
192
|
+
- Use `request_user_input` / structured user-input tool for each interview round when available
|
|
193
|
+
- If structured question tools are unavailable, use plain-text single-question rounds and keep the same stage order
|
|
194
|
+
- Use `state_write` / `state_read` for resumable mode state
|
|
195
|
+
- Read/write context snapshots under `.omx/context/`
|
|
196
|
+
- Save transcript/spec artifacts under `.omx/interviews/` and `.omx/specs/`
|
|
197
|
+
</Tool_Usage>
|
|
198
|
+
|
|
199
|
+
<Escalation_And_Stop_Conditions>
|
|
200
|
+
- User says stop/cancel/abort -> persist state and stop
|
|
201
|
+
- Ambiguity stalls for 3 rounds (+/- 0.05) -> force Ontologist mode once
|
|
202
|
+
- Max rounds reached -> proceed with explicit residual-risk warning
|
|
203
|
+
- All dimensions >= 0.9 -> allow early crystallization even before max rounds
|
|
204
|
+
</Escalation_And_Stop_Conditions>
|
|
205
|
+
|
|
206
|
+
<Final_Checklist>
|
|
207
|
+
- [ ] Preflight context snapshot exists under `.omx/context/{slug}-{timestamp}.md`
|
|
208
|
+
- [ ] Ambiguity score shown each round
|
|
209
|
+
- [ ] Weakest-dimension targeting used
|
|
210
|
+
- [ ] Challenge modes triggered at thresholds (when applicable)
|
|
211
|
+
- [ ] Transcript written to `.omx/interviews/{slug}-{timestamp}.md`
|
|
212
|
+
- [ ] Spec written to `.omx/specs/deep-interview-{slug}.md`
|
|
213
|
+
- [ ] Handoff options provided (`$ralplan`, `$autopilot`, `$ralph`, `$team`)
|
|
214
|
+
- [ ] No direct implementation performed in this mode
|
|
215
|
+
</Final_Checklist>
|
|
216
|
+
|
|
217
|
+
<Advanced>
|
|
218
|
+
## Suggested Config (optional)
|
|
219
|
+
|
|
220
|
+
```toml
|
|
221
|
+
[omx.deepInterview]
|
|
222
|
+
defaultProfile = "standard"
|
|
223
|
+
quickThreshold = 0.30
|
|
224
|
+
standardThreshold = 0.20
|
|
225
|
+
deepThreshold = 0.15
|
|
226
|
+
quickMaxRounds = 5
|
|
227
|
+
standardMaxRounds = 12
|
|
228
|
+
deepMaxRounds = 20
|
|
229
|
+
enableChallengeModes = true
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
## Resume
|
|
233
|
+
|
|
234
|
+
If interrupted, rerun `$deep-interview`. Resume from persisted mode state via `state_read(mode="deep-interview")`.
|
|
235
|
+
|
|
236
|
+
## Recommended 3-Stage Pipeline
|
|
237
|
+
|
|
238
|
+
```
|
|
239
|
+
deep-interview -> ralplan -> autopilot
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
- Stage 1 (deep-interview): clarity gate
|
|
243
|
+
- Stage 2 (ralplan): feasibility + architecture gate
|
|
244
|
+
- Stage 3 (autopilot): execution + QA + validation gate
|
|
245
|
+
</Advanced>
|
|
246
|
+
|
|
247
|
+
Task: {{ARGUMENTS}}
|
|
@@ -30,7 +30,7 @@ Supported setup flags (current implementation):
|
|
|
30
30
|
- else default `user` (safe for CI/tests)
|
|
31
31
|
2. Create directories and persist effective scope
|
|
32
32
|
3. Install prompts, native agent configs, skills, and merge config.toml (scope determines target directories)
|
|
33
|
-
4. Verify
|
|
33
|
+
4. Verify Team CLI API interop markers exist in built `dist/cli/team.js`
|
|
34
34
|
5. Generate project-root `./AGENTS.md` from `templates/AGENTS.md` (or skip when existing and no force)
|
|
35
35
|
6. Configure notify hook references and write `./.omx/hud-config.json`
|
|
36
36
|
|
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/team/SKILL.md
CHANGED
|
@@ -5,7 +5,7 @@ description: N coordinated agents on shared task list using tmux-based orchestra
|
|
|
5
5
|
|
|
6
6
|
# Team Skill
|
|
7
7
|
|
|
8
|
-
`$team` is the tmux-based parallel execution mode for OMX. It starts real worker Codex and/or Claude CLI sessions in split panes and coordinates them through `.omx/state/team/...` files plus
|
|
8
|
+
`$team` is the tmux-based parallel execution mode for OMX. It starts real worker Codex and/or Claude CLI sessions in split panes and coordinates them through `.omx/state/team/...` files plus CLI team interop (`omx team api ...`) and state files.
|
|
9
9
|
|
|
10
10
|
This skill is operationally sensitive. Treat it as an operator workflow, not a generic prompt pattern.
|
|
11
11
|
|
|
@@ -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:
|
|
@@ -149,6 +166,23 @@ Follow this exact lifecycle when running `$team`:
|
|
|
149
166
|
Do not run `shutdown` while workers are actively writing updates unless user explicitly requested abort/cancel.
|
|
150
167
|
Do not treat ad-hoc pane typing as primary control flow when runtime/state evidence is available.
|
|
151
168
|
|
|
169
|
+
## Message Dispatch Policy (CLI-first, state-first)
|
|
170
|
+
|
|
171
|
+
To avoid brittle behavior, **message/task delivery must not be driven by ad-hoc tmux typing**.
|
|
172
|
+
|
|
173
|
+
Required default path:
|
|
174
|
+
|
|
175
|
+
1. Use `omx team ...` runtime lifecycle commands for orchestration.
|
|
176
|
+
2. Use `omx team api ... --json` for mailbox/task mutations.
|
|
177
|
+
3. Verify delivery via mailbox/state evidence (`mailbox/*.json`, task status, `omx team status`).
|
|
178
|
+
|
|
179
|
+
Strict rules:
|
|
180
|
+
|
|
181
|
+
- **MUST NOT** use direct `tmux send-keys` as the primary mechanism to deliver instructions/messages.
|
|
182
|
+
- **MUST NOT** spam Enter/trigger keys without first checking runtime/state evidence.
|
|
183
|
+
- **MUST** prefer durable state writes + runtime dispatch (`dispatch/requests.json`, mailbox, inbox).
|
|
184
|
+
- Direct tmux interaction is **fallback-only** and only after failure checks (for example `worker_notify_failed:<worker>`) or explicit user request (for example “press enter”).
|
|
185
|
+
|
|
152
186
|
## Operational Commands
|
|
153
187
|
|
|
154
188
|
```bash
|
|
@@ -189,6 +223,31 @@ Semantics:
|
|
|
189
223
|
- `.omx/state/team/<team>/workers/worker-<n>/status.json`
|
|
190
224
|
- `.omx/state/team-leader-nudge.json`
|
|
191
225
|
|
|
226
|
+
|
|
227
|
+
## Team Mutation Interop (CLI-first)
|
|
228
|
+
|
|
229
|
+
Use `omx team api` for machine-readable mutation/reads instead of legacy `team_*` MCP tools.
|
|
230
|
+
|
|
231
|
+
```bash
|
|
232
|
+
omx team api <operation> --input '{"team_name":"my-team",...}' --json
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
Examples:
|
|
236
|
+
|
|
237
|
+
```bash
|
|
238
|
+
omx team api send-message --input '{"team_name":"my-team","from_worker":"worker-1","to_worker":"leader-fixed","body":"ACK"}' --json
|
|
239
|
+
omx team api claim-task --input '{"team_name":"my-team","task_id":"1","worker":"worker-1"}' --json
|
|
240
|
+
omx team api transition-task-status --input '{"team_name":"my-team","task_id":"1","from":"in_progress","to":"completed","claim_token":"<token>"}' --json
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
`--json` responses include stable metadata for automation:
|
|
244
|
+
- `schema_version`
|
|
245
|
+
- `timestamp`
|
|
246
|
+
- `command`
|
|
247
|
+
- `ok`
|
|
248
|
+
- `operation`
|
|
249
|
+
- `data` or `error`
|
|
250
|
+
|
|
192
251
|
## Team + Worker Protocol Notes
|
|
193
252
|
|
|
194
253
|
Leader-to-worker:
|
|
@@ -198,8 +257,8 @@ Leader-to-worker:
|
|
|
198
257
|
|
|
199
258
|
Worker-to-leader:
|
|
200
259
|
|
|
201
|
-
- Send ACK to `leader-fixed` mailbox via `
|
|
202
|
-
- Claim task via
|
|
260
|
+
- Send ACK to `leader-fixed` mailbox via `omx team api send-message --json`
|
|
261
|
+
- Claim/transition/release task lifecycle via `omx team api <operation> --json`
|
|
203
262
|
|
|
204
263
|
Task ID rule (critical):
|
|
205
264
|
|
|
@@ -277,10 +336,10 @@ Checks:
|
|
|
277
336
|
|
|
278
337
|
1. Worker pane capture shows inbox processing
|
|
279
338
|
2. `.omx/state/team/<team>/mailbox/leader-fixed.json` exists
|
|
280
|
-
3. Worker skill loaded and `
|
|
339
|
+
3. Worker skill loaded and `omx team api send-message --json` called
|
|
281
340
|
4. Task-id mismatch not blocking worker flow
|
|
282
341
|
|
|
283
|
-
### Worker logs `team_send_message ENOENT` / `team_update_task ENOENT`
|
|
342
|
+
### Worker logs `omx team api ... ENOENT` (or legacy `team_send_message ENOENT` / `team_update_task ENOENT`)
|
|
284
343
|
|
|
285
344
|
Meaning:
|
|
286
345
|
- Team state path no longer exists while worker is still running.
|
|
@@ -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>
|