OpenOPC company-mode collaboration
You are running inside an OpenOPC "company mode" run as one of several agents
collaborating on a larger task. This skill gives you a local command, opc-collab,
that you invoke through the shell to talk to teammates, delegate child work,
and read your manager board.
The CLI is on your PATH. Every invocation reads its identity (who you are,
which project/session, which task) from environment variables that OpenOPC
already set for you before launching this process — you do NOT pass those.
When to use this skill
- You need to message another role (DM, broadcast, or blocking question).
- Your own current work item is blocked on a user decision or missing input.
- You are a manager and need to delegate child work items, or inspect your
kanban board.
- You are in a meeting and need to respond or finalize a decision.
- You want to propose a runtime task adjustment (replan).
Do not use this CLI for general shell work, file edits, or code changes —
those go through your native tools (Bash, Edit, Read, etc.).
How to call it
General form:
opc-collab <tool> --args-json-file args.json
All arguments go in the JSON object. The CLI prints a JSON result on stdout
and exits 0 on success, 1 on error (with the error message on stderr and a
{"error": "..."} body on stdout).
Prefer --args-json-file or --args-stdin over inline JSON. They are
unambiguous for nested objects and arrays, and they work consistently on
Linux, macOS, Windows PowerShell, and Windows CMD. If OPC_COLLAB_CLI is set,
use that executable path; otherwise use opc-collab from PATH.
In OpenOPC-spawned Windows runs, do not use --args-json or pipe JSON into
--args-stdin; command-line and PowerShell pipeline text can corrupt non-ASCII
before it reaches the CLI. Write the JSON object to a UTF-8 file and call
opc-collab <tool> --args-json-file <file> instead.
PowerShell-safe UTF-8 file write:
$enc = New-Object System.Text.UTF8Encoding $false; [System.IO.File]::WriteAllText($path, $json, $enc).
Available tools
Not every tool is available every turn. The runtime narrows the surface based
on your role and phase; if you call a tool that is not allowed, the CLI
prints an error telling you which tools ARE allowed.
Messaging
inbox — check or acknowledge your mailbox without implicitly marking
messages read. Use status for counts, peek for actionable message
bodies, and ack only after handling messages that do not need a reply.
reply_message automatically acknowledges the original message. If a
manager-board action already handled the matching approval/review request,
acknowledge that inbox message with ack.
{
"action": "status"
}
opc-collab inbox --args-json-file args.json
{
"action": "ack",
"message_ids": ["<msg_id>"]
}
opc-collab inbox --args-json-file args.json
send_dm — async direct message.
{
"to_agent": "reviewer",
"subject": "Draft ready for review",
"body": "The v1 draft is in ./deliverables/draft.md. Please review."
}
opc-collab send_dm --args-json-file args.json
ask_peer_and_wait — blocking peer question; pauses this run until
the peer replies or the timeout fires.
{
"to_agent": "cto",
"subject": "Which DB shall I target?",
"body": "Postgres or SQLite for the prototype?",
"timeout_seconds": 300,
"on_timeout": "continue"
}
opc-collab ask_peer_and_wait --args-json-file args.json
reply_message — reply to a received message.
If the reply is rejected by policy or transport but the message has already
been handled through the board or current task result, use inbox with
action="ack" for that message.
{
"message_id": "<msg_id from your inbox>",
"body": "Go with Postgres — we already have it in prod."
}
opc-collab reply_message --args-json-file args.json
broadcast_issue — raise an async issue to multiple roles.
{
"to_agents": ["cto", "cmo"],
"subject": "Blocked on pricing policy",
"body": "Need a decision before I can land the checkout flow."
}
opc-collab broadcast_issue --args-json-file args.json
request_user_input — pause your own current work item and ask the
user for missing input. This tool is self-scoped: do not pass
target_role, target_task_id, work_item_id, or any other target id.
OpenOPC reads your role, task, seat, and work item from the runtime
environment. After it returns requires_user_input=true, stop the current
turn and wait for the user's reply.
{
"reason": "Blocked on a deployment choice that only the user can make.",
"questions": [
{
"id": "deployment_region",
"header": "Deployment region",
"question": "Which deployment region should I target?",
"options": [
{"label": "US East", "description": "Use us-east-1"},
{"label": "EU West", "description": "Use eu-west-1"},
{"label": "Asia", "description": "Use ap-east-1"}
],
"allow_freeform": true,
"required": true
}
],
"context_note": "I can continue once the region is selected."
}
opc-collab request_user_input --args-json-file args.json
Each question can have up to three selectable options. Option ids default to
a, b, and c; the UI also offers Other/freeform unless
allow_freeform=false. Legacy "questions": ["..."] remains valid and
produces a freeform-only review card.
Manager / delegation
Leader Delegation Planning Overlay
Before delegate_work, managers should convert the upstream assignment into
self-contained child work packets. This overlay does not replace your role
prompt; it only governs delegation quality.
Use this checklist before dispatching:
Preserve upstream intent.
Determine local leadership scope.
Map deliverables to owners.
Decompose into work items.
Distinguish hard dependencies from can-start-now prework.
Split one role into multiple phase items when that unlocks progress; do not split mechanically.
Add dependencies / non-overlap boundaries.
Fill planning_context.
Fill per-item brief, outputs / deliverables, done_when / acceptance_criteria,
delegation_rationale, and non_overlap_guard.
delegate_work — as a manager, create child work items for your direct
reports. Every item needs role_id, title, and a complete brief
(legacy summary is accepted). scope_key is optional; the runtime can
generate one. depends_on can name a sibling role, scope key, work item
ref, or work item id. The same role_id may appear in multiple items when
each item has a distinct deliverable, phase, dependency shape, or handoff.
{
"planning_context": "Leader planning summary: upstream goal, local scope, deliverable map, can-start-now work, hard dependencies, sequencing, assumptions.",
"items": [
{
"role_id": "target_role",
"title": "Startable preparation slice",
"brief": "Context: This phase can start before upstream dependencies finish. Mission: Produce preparation artifacts that unblock later finalization. Required outputs: Leave the concrete artifact or handoff named in outputs. Location / handoff: Use the agreed output path or report channel. Quality expectations: Meet the done_when criteria below. Boundaries: Stay inside this phase. Insufficient work: Do not submit only vague notes. Completion report: List artifacts, verification, assumptions, and blockers.",
"scope_key": "target-role-prep",
"work_kind": "execute",
"outputs": ["Concrete preparation artifact or handoff"],
"done_when": ["Preparation output is useful for dependent finalization"],
"delegation_rationale": "Why this direct report owns this slice.",
"non_overlap_guard": "This item owns preparation; a sibling item owns finalization.",
"coordination_notes": "Record assumptions that finalization must revisit.",
"depends_on": []
},
{
"role_id": "target_role",
"title": "Dependency-bound finalization slice",
"brief": "Context: This sibling item finalizes the same role's output after dependencies land. Mission: Integrate dependency evidence into the final production deliverable. Required outputs: Leave the final artifact named in outputs. Location / handoff: Use the agreed output path or report channel. Quality expectations: Verify against prep and dependency inputs. Boundaries: Do not redo prep unless quality requires it. Insufficient work: Do not finish before dependencies are incorporated. Completion report: List final artifacts, verification, assumptions, and blockers.",
"scope_key": "target-role-finalize",
"work_kind": "execute",
"outputs": ["Final dependency-aware artifact"],
"done_when": ["Final output incorporates dependencies and is ready to integrate"],
"delegation_rationale": "Same role owns final quality for this slice.",
"non_overlap_guard": "This item owns finalization; sibling prep owns early scaffolding.",
"coordination_notes": "Use precise scope_key dependencies when a role owns multiple items.",
"depends_on": ["target-role-prep"]
}
]
}
opc-collab delegate_work --args-json-file args.json
brief is the child work item's full assignment packet, not a short
summary. Do not use description. Recommended brief shape: Context,
Mission, Required outputs,
Location / handoff, Quality expectations, Boundaries,
Insufficient work, Completion report.
When the same role gets multiple sibling items, set stable scope_key
values and reference those keys in depends_on; broad role references may
become ambiguous.
manager_board_read — READ-ONLY view of your direct reports' child
items. For your current manager board, omit parent_work_item_id; the
runtime uses $OPC_WORK_ITEM_ID automatically. Pass an explicit id only
when it is a FULL WorkItem id returned by a prior tool call (no truncation).
Never pass $OPC_TASK_ID or $OPC_RUNTIME_TASK_ID; those are runtime Task
ids, not WorkItem ids.
After you approve, reject, or otherwise handle a child through the board
review flow, acknowledge any matching approval/review inbox message unless
reply_message already did it.
{
"include_children": true
}
opc-collab manager_board_read --args-json-file args.json
Do NOT use legacy aliases like parent_id, include_outputs, scope,
reason, note — the tool rejects them.
modify_work_item — revise an existing child WorkItem on your current
manager board when the owner is still correct but the title, brief,
deliverables, acceptance criteria, dependencies, or coordination fields are
wrong. Read the board first, then pass the exact full work_item_id.
Prefer this over creating a duplicate replacement item.
{
"work_item_id": "work-item-id-from-manager_board_read",
"task_brief": "Revised concrete assignment for the same owner.",
"deliverables": ["Updated artifact or handoff"],
"acceptance_criteria": ["Updated acceptance condition"],
"depends_on": ["sibling-scope-key-or-full-work-item-id"],
"reason": "Why the existing card needed revision.",
"reset_to_ready": true
}
opc-collab modify_work_item --args-json-file args.json
delete_work_item — cancel or hide an obsolete/wrong child WorkItem on
your current manager board so it no longer blocks parent synthesis. Read the
board first, then pass the exact full work_item_id.
{
"work_item_id": "work-item-id-from-manager_board_read",
"reason": "Why this child card is obsolete or wrong.",
"replacement_dependency_work_item_ids": []
}
opc-collab delete_work_item --args-json-file args.json
close_human_review — close the owner-facing delivery review when you
decide the user's latest directive means the delivery is accepted and no
further internal work is needed. Do not call this for requested changes; use
board tools or reply directly instead.
{
"summary": "The user accepted the delivery; no further work is required.",
"user_message": "Acknowledged. I am closing the human review for this delivery."
}
opc-collab close_human_review --args-json-file args.json
Meetings
start_meeting — open a meeting and wait for the outcome.{
"topic": "Prioritization for Q2",
"participants": ["cto", "cmo", "cfo"],
"agenda": ["Goals", "Trade-offs", "Decision"]
}
opc-collab start_meeting --args-json-file args.json
respond_meeting — respond to a live meeting, optionally finalize it
if you are the decision owner.
Other
propose_task_adjustment — propose a runtime replan (summary + changeset).
route_work — coordinator tool; send_followup / spawn_task /
escalate.
read_inbox / read_meeting / list_colleagues — debug/admin
reads that may not be available outside of debug mode.
Argument contract rules
- Use the exact argument names shown above.
brief/summary,
outputs/deliverables, and done_when/acceptance_criteria are the
supported aliases; do not invent others.
- Work-item IDs are verbatim. When a prior response hands you a
work_item_id, copy the full string unmodified into the next call. Never
truncate.
delegate_work items use brief or legacy summary, not description.
manager_board_read takes only parent_work_item_id and optional
include_children. No other args are accepted. For your current manager
board, omit parent_work_item_id; never use $OPC_TASK_ID.
Error handling
- Exit code 0 + JSON on stdout: success, use the payload.
- Exit code 1 +
{"error": "..."} on stdout, message on stderr: the call
failed. Read the error and decide whether to retry with corrected args,
escalate, or continue with what you have.
- An error containing "not available for this run" means the runtime did not
grant this tool for your current role/phase. The error message lists the
tools you CAN call — pick one of those instead.
Only transport
opc-collab is the supported way to reach your teammates. If the CLI
returns an error, inspect the error message and retry or adapt.
1---2name: opc-collab3description: Collaborate with other agents in OpenOPC company mode via the `opc-collab` CLI — send messages, request user input, delegate work, read the manager board, respond in meetings, propose task adjustments.4---56# OpenOPC company-mode collaboration78You are running inside an OpenOPC "company mode" run as one of several agents9collaborating on a larger task. This skill gives you a local command, `opc-collab`,10that you invoke through the shell to talk to teammates, delegate child work,11and read your manager board.1213The CLI is on your `PATH`. Every invocation reads its identity (who you are,14which project/session, which task) from environment variables that OpenOPC15already set for you before launching this process — you do NOT pass those.1617## When to use this skill1819- You need to message another role (DM, broadcast, or blocking question).20- Your own current work item is blocked on a user decision or missing input.21- You are a manager and need to delegate child work items, or inspect your22 kanban board.23- You are in a meeting and need to respond or finalize a decision.24- You want to propose a runtime task adjustment (replan).2526Do not use this CLI for general shell work, file edits, or code changes —27those go through your native tools (`Bash`, `Edit`, `Read`, etc.).2829## How to call it3031General form:3233```bash34opc-collab <tool> --args-json-file args.json35```3637All arguments go in the JSON object. The CLI prints a JSON result on stdout38and exits 0 on success, 1 on error (with the error message on stderr and a39`{"error": "..."}` body on stdout).4041Prefer `--args-json-file` or `--args-stdin` over inline JSON. They are42unambiguous for nested objects and arrays, and they work consistently on43Linux, macOS, Windows PowerShell, and Windows CMD. If `OPC_COLLAB_CLI` is set,44use that executable path; otherwise use `opc-collab` from `PATH`.45In OpenOPC-spawned Windows runs, do not use `--args-json` or pipe JSON into46`--args-stdin`; command-line and PowerShell pipeline text can corrupt non-ASCII47before it reaches the CLI. Write the JSON object to a UTF-8 file and call48`opc-collab <tool> --args-json-file <file>` instead.49PowerShell-safe UTF-8 file write:50`$enc = New-Object System.Text.UTF8Encoding $false; [System.IO.File]::WriteAllText($path, $json, $enc)`.5152## Available tools5354Not every tool is available every turn. The runtime narrows the surface based55on your role and phase; if you call a tool that is not allowed, the CLI56prints an error telling you which tools ARE allowed.5758### Messaging5960- **`inbox`** — check or acknowledge your mailbox without implicitly marking61 messages read. Use `status` for counts, `peek` for actionable message62 bodies, and `ack` only after handling messages that do not need a reply.63 `reply_message` automatically acknowledges the original message. If a64 manager-board action already handled the matching approval/review request,65 acknowledge that inbox message with `ack`.66 ```json67 {68 "action": "status"69 }70 ```71 ```bash72 opc-collab inbox --args-json-file args.json73 ```74 ```json75 {76 "action": "ack",77 "message_ids": ["<msg_id>"]78 }79 ```80 ```bash81 opc-collab inbox --args-json-file args.json82 ```8384- **`send_dm`** — async direct message.85 ```json86 {87 "to_agent": "reviewer",88 "subject": "Draft ready for review",89 "body": "The v1 draft is in ./deliverables/draft.md. Please review."90 }91 ```92 ```bash93 opc-collab send_dm --args-json-file args.json94 ```9596- **`ask_peer_and_wait`** — blocking peer question; pauses this run until97 the peer replies or the timeout fires.98 ```json99 {100 "to_agent": "cto",101 "subject": "Which DB shall I target?",102 "body": "Postgres or SQLite for the prototype?",103 "timeout_seconds": 300,104 "on_timeout": "continue"105 }106 ```107 ```bash108 opc-collab ask_peer_and_wait --args-json-file args.json109 ```110111- **`reply_message`** — reply to a received message.112 If the reply is rejected by policy or transport but the message has already113 been handled through the board or current task result, use `inbox` with114 `action="ack"` for that message.115 ```json116 {117 "message_id": "<msg_id from your inbox>",118 "body": "Go with Postgres — we already have it in prod."119 }120 ```121 ```bash122 opc-collab reply_message --args-json-file args.json123 ```124125- **`broadcast_issue`** — raise an async issue to multiple roles.126 ```json127 {128 "to_agents": ["cto", "cmo"],129 "subject": "Blocked on pricing policy",130 "body": "Need a decision before I can land the checkout flow."131 }132 ```133 ```bash134 opc-collab broadcast_issue --args-json-file args.json135 ```136137- **`request_user_input`** — pause your own current work item and ask the138 user for missing input. This tool is self-scoped: do not pass139 `target_role`, `target_task_id`, `work_item_id`, or any other target id.140 OpenOPC reads your role, task, seat, and work item from the runtime141 environment. After it returns `requires_user_input=true`, stop the current142 turn and wait for the user's reply.143 ```json144 {145 "reason": "Blocked on a deployment choice that only the user can make.",146 "questions": [147 {148 "id": "deployment_region",149 "header": "Deployment region",150 "question": "Which deployment region should I target?",151 "options": [152 {"label": "US East", "description": "Use us-east-1"},153 {"label": "EU West", "description": "Use eu-west-1"},154 {"label": "Asia", "description": "Use ap-east-1"}155 ],156 "allow_freeform": true,157 "required": true158 }159 ],160 "context_note": "I can continue once the region is selected."161 }162 ```163 ```bash164 opc-collab request_user_input --args-json-file args.json165 ```166 Each question can have up to three selectable options. Option ids default to167 `a`, `b`, and `c`; the UI also offers Other/freeform unless168 `allow_freeform=false`. Legacy `"questions": ["..."]` remains valid and169 produces a freeform-only review card.170171### Manager / delegation172173### Leader Delegation Planning Overlay174175Before `delegate_work`, managers should convert the upstream assignment into176self-contained child work packets. This overlay does not replace your role177prompt; it only governs delegation quality.178179Use this checklist before dispatching:180181- Preserve upstream intent.182- Determine local leadership scope.183- Map deliverables to owners.184- Decompose into work items.185- Distinguish hard dependencies from can-start-now prework.186- Split one role into multiple phase items when that unlocks progress; do not split mechanically.187- Add dependencies / non-overlap boundaries.188- Fill `planning_context`.189- Fill per-item `brief`, `outputs` / `deliverables`, `done_when` / `acceptance_criteria`,190 `delegation_rationale`, and `non_overlap_guard`.191192- **`delegate_work`** — as a manager, create child work items for your direct193 reports. Every item needs `role_id`, `title`, and a complete `brief`194 (legacy `summary` is accepted). `scope_key` is optional; the runtime can195 generate one. `depends_on` can name a sibling role, scope key, work item196 ref, or work item id. The same `role_id` may appear in multiple items when197 each item has a distinct deliverable, phase, dependency shape, or handoff.198 ```json199 {200 "planning_context": "Leader planning summary: upstream goal, local scope, deliverable map, can-start-now work, hard dependencies, sequencing, assumptions.",201 "items": [202 {203 "role_id": "target_role",204 "title": "Startable preparation slice",205 "brief": "Context: This phase can start before upstream dependencies finish. Mission: Produce preparation artifacts that unblock later finalization. Required outputs: Leave the concrete artifact or handoff named in outputs. Location / handoff: Use the agreed output path or report channel. Quality expectations: Meet the done_when criteria below. Boundaries: Stay inside this phase. Insufficient work: Do not submit only vague notes. Completion report: List artifacts, verification, assumptions, and blockers.",206 "scope_key": "target-role-prep",207 "work_kind": "execute",208 "outputs": ["Concrete preparation artifact or handoff"],209 "done_when": ["Preparation output is useful for dependent finalization"],210 "delegation_rationale": "Why this direct report owns this slice.",211 "non_overlap_guard": "This item owns preparation; a sibling item owns finalization.",212 "coordination_notes": "Record assumptions that finalization must revisit.",213 "depends_on": []214 },215 {216 "role_id": "target_role",217 "title": "Dependency-bound finalization slice",218 "brief": "Context: This sibling item finalizes the same role's output after dependencies land. Mission: Integrate dependency evidence into the final production deliverable. Required outputs: Leave the final artifact named in outputs. Location / handoff: Use the agreed output path or report channel. Quality expectations: Verify against prep and dependency inputs. Boundaries: Do not redo prep unless quality requires it. Insufficient work: Do not finish before dependencies are incorporated. Completion report: List final artifacts, verification, assumptions, and blockers.",219 "scope_key": "target-role-finalize",220 "work_kind": "execute",221 "outputs": ["Final dependency-aware artifact"],222 "done_when": ["Final output incorporates dependencies and is ready to integrate"],223 "delegation_rationale": "Same role owns final quality for this slice.",224 "non_overlap_guard": "This item owns finalization; sibling prep owns early scaffolding.",225 "coordination_notes": "Use precise scope_key dependencies when a role owns multiple items.",226 "depends_on": ["target-role-prep"]227 }228 ]229 }230 ```231 ```bash232 opc-collab delegate_work --args-json-file args.json233 ```234 `brief` is the child work item's full assignment packet, not a short235 summary. Do not use `description`. Recommended `brief` shape: `Context`,236 `Mission`, `Required outputs`,237 `Location / handoff`, `Quality expectations`, `Boundaries`,238 `Insufficient work`, `Completion report`.239 When the same role gets multiple sibling items, set stable `scope_key`240 values and reference those keys in `depends_on`; broad role references may241 become ambiguous.242243- **`manager_board_read`** — READ-ONLY view of your direct reports' child244 items. For your current manager board, omit `parent_work_item_id`; the245 runtime uses `$OPC_WORK_ITEM_ID` automatically. Pass an explicit id only246 when it is a FULL WorkItem id returned by a prior tool call (no truncation).247 Never pass `$OPC_TASK_ID` or `$OPC_RUNTIME_TASK_ID`; those are runtime Task248 ids, not WorkItem ids.249 After you approve, reject, or otherwise handle a child through the board250 review flow, acknowledge any matching approval/review inbox message unless251 `reply_message` already did it.252 ```json253 {254 "include_children": true255 }256 ```257 ```bash258 opc-collab manager_board_read --args-json-file args.json259 ```260 Do NOT use legacy aliases like `parent_id`, `include_outputs`, `scope`,261 `reason`, `note` — the tool rejects them.262263- **`modify_work_item`** — revise an existing child WorkItem on your current264 manager board when the owner is still correct but the title, brief,265 deliverables, acceptance criteria, dependencies, or coordination fields are266 wrong. Read the board first, then pass the exact full `work_item_id`.267 Prefer this over creating a duplicate replacement item.268 ```json269 {270 "work_item_id": "work-item-id-from-manager_board_read",271 "task_brief": "Revised concrete assignment for the same owner.",272 "deliverables": ["Updated artifact or handoff"],273 "acceptance_criteria": ["Updated acceptance condition"],274 "depends_on": ["sibling-scope-key-or-full-work-item-id"],275 "reason": "Why the existing card needed revision.",276 "reset_to_ready": true277 }278 ```279 ```bash280 opc-collab modify_work_item --args-json-file args.json281 ```282283- **`delete_work_item`** — cancel or hide an obsolete/wrong child WorkItem on284 your current manager board so it no longer blocks parent synthesis. Read the285 board first, then pass the exact full `work_item_id`.286 ```json287 {288 "work_item_id": "work-item-id-from-manager_board_read",289 "reason": "Why this child card is obsolete or wrong.",290 "replacement_dependency_work_item_ids": []291 }292 ```293 ```bash294 opc-collab delete_work_item --args-json-file args.json295 ```296297- **`close_human_review`** — close the owner-facing delivery review when you298 decide the user's latest directive means the delivery is accepted and no299 further internal work is needed. Do not call this for requested changes; use300 board tools or reply directly instead.301 ```json302 {303 "summary": "The user accepted the delivery; no further work is required.",304 "user_message": "Acknowledged. I am closing the human review for this delivery."305 }306 ```307 ```bash308 opc-collab close_human_review --args-json-file args.json309 ```310311### Meetings312313- **`start_meeting`** — open a meeting and wait for the outcome.314 ```json315 {316 "topic": "Prioritization for Q2",317 "participants": ["cto", "cmo", "cfo"],318 "agenda": ["Goals", "Trade-offs", "Decision"]319 }320 ```321 ```bash322 opc-collab start_meeting --args-json-file args.json323 ```324- **`respond_meeting`** — respond to a live meeting, optionally finalize it325 if you are the decision owner.326327### Other328329- **`propose_task_adjustment`** — propose a runtime replan (summary + changeset).330- **`route_work`** — coordinator tool; `send_followup` / `spawn_task` /331 `escalate`.332- **`read_inbox`** / **`read_meeting`** / **`list_colleagues`** — debug/admin333 reads that may not be available outside of debug mode.334335## Argument contract rules3363371. **Use the exact argument names shown above.** `brief`/`summary`,338 `outputs`/`deliverables`, and `done_when`/`acceptance_criteria` are the339 supported aliases; do not invent others.3402. **Work-item IDs are verbatim.** When a prior response hands you a341 `work_item_id`, copy the full string unmodified into the next call. Never342 truncate.3433. **`delegate_work` items use `brief` or legacy `summary`, not `description`.**3444. **`manager_board_read` takes only `parent_work_item_id` and optional345 `include_children`.** No other args are accepted. For your current manager346 board, omit `parent_work_item_id`; never use `$OPC_TASK_ID`.347348## Error handling349350- Exit code 0 + JSON on stdout: success, use the payload.351- Exit code 1 + `{"error": "..."}` on stdout, message on stderr: the call352 failed. Read the error and decide whether to retry with corrected args,353 escalate, or continue with what you have.354- An error containing "not available for this run" means the runtime did not355 grant this tool for your current role/phase. The error message lists the356 tools you CAN call — pick one of those instead.357358## Only transport359360`opc-collab` is the supported way to reach your teammates. If the CLI361returns an error, inspect the error message and retry or adapt.