Team worker protocol (ACK, mailbox, task lifecycle) for tmux-based OMX teams
This skill is for a Codex session that was started as an OMX Team worker (a tmux pane spawned by $team).
You MUST be running with OMX_TEAM_WORKER set. It looks like:
<team-name>/worker-<n>
Example: alpha/worker-2
When a worker inbox tells you to load this skill, resolve the first existing path:
${CODEX_HOME:-~/.codex}/skills/worker/SKILL.md~/.codex/skills/worker/SKILL.md<leader_cwd>/.codex/skills/worker/SKILL.md<leader_cwd>/skills/worker/SKILL.md (repo fallback)OMX_TEAM_WORKER into:
teamName (before the /)workerName (after the /, usually worker-<n>)leader-fixedACK: <workerName> initialized).The lead will see your message in:
<team_state_root>/team/<teamName>/mailbox/leader-fixed.json
Use CLI interop:
omx team api send-message --input <json> --json with {team_name, from_worker, to_worker:"leader-fixed", body}Copy/paste template:
omx team api send-message --input "{\"team_name\":\"<teamName>\",\"from_worker\":\"<workerName>\",\"to_worker\":\"leader-fixed\",\"body\":\"ACK: <workerName> initialized\"}" --json
OMX_TEAM_STATE_ROOT envteam_state_rootteam_state_root.omx/state)<team_state_root>/team/<teamName>/workers/<workerName>/inbox.md<team_state_root>/team/<teamName>/tasks/task-<id>.json (example: task-1.json)"1"), not "task-1".tasks/{id}.json wording.omx team api claim-task --json).omx team api transition-task-status --json) from in_progress to completed or failed.
status, owner, result, error) in task files.omx team api release-task-claim --json only for rollback/requeue to pending (not for completion).<team_state_root>/team/<teamName>/workers/<workerName>/status.json with {"state":"idle", ...}Check your mailbox for messages:
<team_state_root>/team/<teamName>/mailbox/<workerName>.json
When notified, read messages and follow any instructions. Use short ACK replies when appropriate.
Note: leader dispatch is state-first. The durable queue lives at:
<team_state_root>/team/<teamName>/dispatch/requests.json
Hooks/watchers may nudge you after mailbox/inbox state is already written.
Use CLI interop:
omx team api mailbox-list --json to readomx team api mailbox-mark-delivered --json to acknowledge deliveryCopy/paste templates:
omx team api mailbox-list --input "{\"team_name\":\"<teamName>\",\"worker\":\"<workerName>\"}" --json
omx team api mailbox-mark-delivered --input "{\"team_name\":\"<teamName>\",\"worker\":\"<workerName>\",\"message_id\":\"<MESSAGE_ID>\"}" --json
Worker sessions should treat team state + CLI interop as the source of truth.
omx team api ... --json operations.tmux send-keys nudge), treat it only as a prompt to re-check state and continue through the normal claim-safe lifecycle.If the lead sends a shutdown request, follow the shutdown inbox instructions exactly, write your shutdown ack file, then exit the Codex session.