| name | opc-collab |
| description | 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. |
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.
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."
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.