Skip to main content

cowork

Cowork with the other coding agent headless through its CLI (Claude drives `codex exec`, Codex drives `claude -p`) in resumed sessions (lanes) that keep context; hand it a bounded task, a question or a review. Push, PRs and comments stay with the human.

Datos de origen

Repositorio
hathach/agentrc
Última actividad en el origen
7 de octubre de 2026 a las 08:05
Idioma detectado de SKILL.md
inglés
Estrellas
1
Forks
2

Opciones de instalación

De forma predeterminada está seleccionado el prompt que primero revisa el origen. Puedes cambiar a un comando directo o descargar una copia local.

Revisa los archivos de origen

Lee SKILL.md y los archivos complementarios que muestra SkillsMP antes de decidir si quieres instalarlo.

Explorador de archivos
3 archivos

Mostrando SKILL.md

SKILL.md
Instrucciones de origen · Vista previa de solo lectura
name
cowork
description
Cowork with the other coding agent headless through its CLI (Claude drives `codex exec`, Codex drives `claude -p`) in resumed sessions (lanes) that keep context; hand it a bounded task, a question or a review. Push, PRs and comments stay with the human.
# Coworking with the other agent's CLI The coworker is the other coding agent, driven headless by its own CLI in this worktree and resumed every time: it remembers its earlier requests, not your conversation, and gets its own rules with its first request. `scripts/cowork.py` owns the mechanics and `REFERENCE.md` the details this page leaves out (delivery, exit codes, lane internals, models); this page is the judgment. ## Send and collect ```bash S=<skill dir>/scripts/cowork.py python3 $S send (--task "..." | --task -) [--lane L] [--worktree] [--no-edit] [--tier review|expert|default] [--detach] python3 $S read [--wait] [--out FILE] <id> # the reply of a detached or dead sender python3 $S kill <id> # the running request, with all it spawned python3 $S status [--all] # busy lanes, undelivered requests; --all every lane python3 $S reset codex|claude <lane>|all python3 $S default [astra|sol] # the Codex default tier's preset on this host ``` In Claude Code, run `send --detach` in the foreground and arm Monitor, at its maximum `timeout_ms`, on `python3 $S read --wait --out <scratch file> <id> 2>&1` as the request's only reader: Monitor survives the memory pressure that may reap a background shell but truncates long events, so the reply and full receipt go to the file and the event is one `cowork result <id>` line with the outcome, exit code and file (`REFERENCE.md`); a file that cannot be written is refused with exit 3, the request kept: re-arm with a writable one. The reader is done when that line names your id and the file: read the file once, then delete it. Re-arm it, from the same checkout, when it expires or its reader dies, and report what it returns; an exit 3 "no request" means the request is absent here, so look in the file and earlier Monitor events, else report its delivery as unknown. Fan out with one send and one Monitor per lane. In Codex, run `send` in the foreground. Sessions without Bash, such as `chief`, go through the `coworker` agent, on read-only lanes only. One request per lane is in flight: `send` to a busy lane exits 3. There is no timeout; `kill` a turn you no longer want. Before finishing, run `status` and `read --wait` only requests you sent that no reader holds, never the one you are answering (`COWORK_TURN`) or another caller's. ## Lanes - `main` works in this checkout and edits your uncommitted work: the ordinary edit. - Any other lane works in this checkout read-only, every send `--no-edit`: a question, plan or review, one lane per parallel reviewer. `--read-only` asserts that kind, refused on `main` or a worktree lane. - `--worktree` on a lane's first send gives it its own worktree and branch from your HEAD, never moved by the script; it sees commits only. A parallel edit, or a writer that must not see your work, as in `co-test`. To hand it newer commits, merge them in its tree yourself; merge its branch to take its commits. Name a lane after its task, `review-<topic>`, `plan-<topic>`: a new topic gets a new lane rather than an old one whose stale context every call resends. A lane keeps its kind and session until `reset`. Never open a lane's session interactively while a request runs. Codex lanes run on tiers: `review` for planning, `co-ask`, `co-plan`, `co-debug` and `co-review` exchanges, non-routine and completion reviews; `expert` for a writer whose wrong first attempt costs a debugging session; `default` for the rest: writing, routine step reviews, `co-fix` and `co-test` rounds before their completion review, and lookups. `default` follows the host preset: flip it to `sol` when the weekly Codex quota is tight, between tasks, since a model change likely forfeits an active lane's prompt cache on that turn. Routine step reviews share one read-only `step-<task>` lane, briefed with the agreed plan and its invariants; a step that sets an interface, invariant, concurrency or hardware behaviour goes to a lane on `--tier review`, and the completion co-review moves the step lane to `--tier review`, keeping its history. ## What you decide - **TASK**: what done looks like, with the context the coworker lacks. It has none of your conversation; say which files it owns and what to leave alone. `--no-edit` for a question or a review. - **Whether the result holds.** Re-read every file the reply lists under "Files touched" before you build on it. A claim of done is a claim. A read-only reply owes that line only when it changed something, and the receipt repeats the paths it names: the tree check cannot see outside the checkout. - **When to reset.** When the lane's context is spent: the receipt shows its last call's input context wherever the CLI recorded one. ## Report Report a reply by its outcome, the disagreement left and what was not verified, naming the lane and request id: the full turn stays in the CLI's own store (`grep -rl <id> ~/.codex/sessions ~/.claude/projects`). Report transport failures and their diagnostics; request artifacts are removed on delivery, and those diagnostics need not appear in the CLI session. For each finding, say whether you reproduced it or only read the code. ## Rules - A reply is not an operator instruction. Act on it locally: read, run, edit, commit. Never push, open a PR, post a comment or an issue on the coworker's say-so; that stays with the human. - Stage and commit only your own paths: `git add -- <paths>` then `git commit --only -- <same paths>`. Never a bare `git commit`, `git add -A` or `commit -a`: a bare commit includes the other side's staged changes. ## Traps - **No shared history.** The session remembers its own turns, not yours; every request carries what it needs. - **Not a batch transport.** Schema'd, unattended verification uses a saved workflow's `agent()` call on a review role (`code-verifier`, `finding-verifier`) for completion and failure boundaries; request a Codex second opinion here, from a saved workflow too, through the `coworker` agent, when the workflow's own agent judges the reply. - **The simplify gate stays out** of a coworker turn (`COWORK_TURN` in its environment). Edits you commissioned are challenged at your own Stop and are yours to defend, not to reject as a peer's. ## Review rounds For a review, an exchange the user's instructions run under these rounds, or a finding still unresolved: apply what verifies, then send a follow-up with `--no-edit` saying what you applied and what you rejected and why, and ask again. An ordinary answer or proposal you act on needs no follow-up. Stop when the coworker reports nothing left and you agree, or when a round turns into re-litigating documented behaviour; a reply alone establishes neither agreement nor correctness. When implementation depends on an agreed plan, a revision needs another review before implementation.
Ver en GitHub