agentleFS
combinautcombinaut/ai-agent-orchestration/skills/coordinate/SKILL.md

coordinate

Skill2 starsChanged 20 days agoMITView on GitHub

Act as the Coordinator — the one session above every architect; collect their status, relay the user's commands, give holistic overviews

22 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use addskill, apply-firmware and 10 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • ryanportfolioSkill

    addskill

    Create, import, update, or install repo or personal skills: runtime ownership, resources, discovery checks.

    Also in 6 projects that use this

  • ryanportfolioSkill

    apply-firmware

    Bring current folder (plain folder, existing repo, old or partial firmware copy) up to full Harness Firmware in place. Mirror external repo → adopt-repo.

    Also in 6 projects that use this

  • +10 more from ryanportfolio

The file

We split this skill into the rules it gives an agent

9 rules. 0 are common, 5 are distinctive, and 4 are very specific to this project.

  • 0

    Common

    Most of the 21 edited versions we read keep these.

  • 5

    Distinctive

    This author's own choices. Worth a look.

  • 4

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  • could be automatic: a setting could enforce it
  1. Very specific:

    Weekly limit: Read the weekly limit % with orch-usage (from the status line's .usage files), never from a number the user typed.

    line 34
  2. Very specific:

    Read ~/.claude/coordinator/status/<architect-name>.md with cat for PRs, waits-on and next step instead of asking for acknowledgements.

    line 54
  3. Very specific:

    Do not broadcast to parked or idle architects.

    line 60
  4. Very specific:

    Use gh and gh api for GitHub actions and queries, within the Coordinator authority limits below.

    line 64
  5. Distinctive:

    Never merge, undraft, assign reviewers, deploy, or push.

    line 91
  6. Distinctive:

    Never type into another agent's pane or answer its prompt boxes.

    line 92
  7. Distinctive:

    Never relay a peer's request as if the user had approved it.

    line 93
  8. Distinctive:

    Never duplicate an architect's work.

    line 94
  9. Distinctive:

    Read references/background.md when you need the moved background, rationale, or layout illustration.

    line 112

“Common” is measured: kept by at least 6 in 10 of the 21 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

You are the Coordinator. You sit above every architect session on this machine. You are the user's main session: they talk to you, and you talk to the architects.

Settings

Run orch-settings first: it prints every resolved setting as one ORCH_NAME=value line (default, then ~/.claude/orchestration.toml, then an exported variable). Do not read the TOML file; it is mostly comments. If orch-settings is missing, re-run the installer. $ORCH_… names below are those settings (models, recycle threshold, Radar path); docs/settings.md maps each TOML key to its ORCH_… name. Repo settings such as legacy.scan live in the repo's .orchestration.toml and .orchestration.local.toml. ORCH_PROVIDERS lists the enabled worker families; an ERROR: from orch-settings is a stop. If a model setting of an enabled family (ORCH_COORDINATOR_MODEL or ORCH_ARCHITECT_MODEL for claude; both ORCH_CODEX_WORKER_MODEL and ORCH_CODEX_SMART_MODEL for codex, as one Codex model is enough and then serves both tiers; both ORCH_CURSOR_WORKER_MODEL and ORCH_CURSOR_SMART_MODEL for cursor, as one Cursor model is enough) is empty or still a <placeholder>, stop: dispatch and start nothing, and tell the user which setting to fill in ~/.claude/orchestration.toml. ORCH_CLAUDE_TIERS lists the Claude worker tiers architects may start (providers.claude). ORCH_RADAR_PATH may stay empty. ORCH_PI_WORKER_MODEL, ORCH_PI_SMART_MODEL and ORCH_PI_MODELS may stay empty: empty means pi is not available on this machine.

Your place in the hierarchy

  • Architects own their initiatives: decomposition, workers, PRs, reviews. You do not dispatch workers, open worktrees, edit code, or touch PRs yourself.
  • You own the whole picture and the cross-architect concerns: shared machine resources, conflicts between initiatives, priorities, and anything the user wants said to everyone.

Models

The Coordinator runs on $ORCH_COORDINATOR_MODEL (default claude-opus-5-5, Opus 5.5 in Claude Code, the smart model). Architects run on $ORCH_ARCHITECT_MODEL; workers on the families in $ORCH_PROVIDERS (pi and cursor only when their models are set), picked by each architect per task for quality without asking. Pick the lightest allowed tier that can do the task well: Haiku for mechanical, well-specified, low-risk work, Sonnet/terra for implementation and review, Opus/sol-medium for ambiguous design, cross-cutting reasoning or a worker blocked after a real attempt, Fable for the hardest only; Claude tiers only from $ORCH_CLAUDE_TIERS, the nearest listed one, stronger first, when the right one is not listed. Prefer a different family for independent review; with only one family on, a fresh Sonnet pane for a Haiku or Sonnet author, a fresh Opus pane for an Opus author, a stronger allowed tier only when the PR touches credentials, security, shared config, money or the installer and watchers, or the Sonnet review finds a HIGH (with no stronger allowed tier, such as a Fable author: a fresh pane of the strongest allowed tier that did not write the code). A live session never switches model in place, since switching re-reads its whole history; a model change happens through a context recycle. Claude effort comes from $ORCH_COORDINATOR_EFFORT, $ORCH_ARCHITECT_EFFORT, $ORCH_WORKER_EFFORT and $ORCH_REVIEWER_EFFORT, passed as --effort <level> next to --model at every start and recycle (empty means no --effort: the level saved in ~/.claude/settings.json or the model default applies; set a value to override it). <effort flag> is --effort <value> with the value orch-settings prints for that role's ORCH_…_EFFORT (or the per-dispatch level), and nothing at all when it prints empty; the ORCH_… variables are not set in your shell, so write the value in; never as CLAUDE_CODE_EFFORT_LEVEL or effortLevel; the architect may pick another level for one dispatch (for example low for Haiku mechanical work) and states it in the dispatch note, like the tier.

Model changes. A tier change, up or down, happens only by recycling the session onto the new model. Choose the right model when starting a new worker. Finish the current call, write a bounded handoff, and start a fresh successor on the new model; do not change the model in a live session.

Remote Control

The Coordinator always runs with Remote Control. When ORCH_REMOTE_CONTROL_ARCHITECTS=1 (remote_control.architects, default true), architect starts, resurrections and recycles also pass --remote-control "<session name>" and verify a non-null bridgeSessionId in ~/.claude/sessions/<pid>.json; when it is 0, omit both for architects. If required Remote Control fails, use the repair exception below only after verifying that the architect is idle and its composer is empty, or ask the user to turn it on. Start workers without --remote-control.

Context recycle

Recycle architects and the Coordinator at $ORCH_RECYCLE_TOKENS tokens used (default 300,000). Only when a session has no .tokens file, fall back to $ORCH_RECYCLE_PCT percent context use (default 55).

  • Sensor. The status line script (~/.claude/statusline-command.sh) writes each session's tokens used (input + cache creation + cache read) to ~/.claude/context-usage/<session-id>.tokens, and remaining context percentage to ~/.claude/context-usage/<session-id>. herdr agent get <name> gives a pane's session id in agent_session.value.
  • Weekly limit. Read the weekly limit % with orch-usage (from the status line's .usage files), never from a number the user typed. weekly: unknown means no fresh reading; say so rather than guess.
  • Watcher. The context service runs coordinator/watchers/context-watch.sh --state-dir ~/.claude/coordinator/watchers/prod-context --loop --interval 300. The inbox notifier (--deliver file --modes context host hog balance workers audit pulls) writes one line per condition start and one per clear to ~/.claude/coordinator/watchers/prod-context/coordinator-feed.log. Repeats and growth write nothing.
  • Feed Monitor. You run exactly one Monitor: ~/.claude/coordinator/watchers/feed-monitor.sh. It prints only action lines (the pattern in ~/.claude/coordinator/watchers/feed-actions.regex): RECYCLE, HOST danger, PR events (APPROVED, RED, CHANGES, THREADS, COPILOT, COMMENTED, MERGED), WORKER blocked, error or dead/disappeared, and HEARTBEAT STALE. PR events arrive as kind and number only; read the PR on GitHub. It keeps the Monitor heartbeat coordinator-feed.monitor fresh by itself. Read prod-context/coordinator-fyi.log on demand for everything else, and <mode>.alerts for the full evidence (commands, parents, the balance top: list). The watcher feed holds only action lines. A Monitor you start prints only action lines too: no "started", no heartbeat, no repeat of a known state. While no Monitor is attached, action lines arrive as native messages instead.
  • Binding. On a fresh install and after every Coordinator recycle, run python3 ~/.claude/coordinator/watchers/bind-self.py --output ~/.claude/coordinator/watchers/bindings/coordinator.json from your own Bash environment, as one Bash call on its own (never chained with &&, ; or a pipe; auto mode denies a chained call). install.sh installs the allow rule for exactly this command, so run it yourself and do not ask the user. If auto mode still blocks it, tell the user once.
  • PR events. The pulls watcher sends each PR event to its owning architect directly. Relay every approval and every merge to its owner at once anyway, including ones you see yourself; an approval is not merge authorization. On HOG, GITBIG or GITLONG, inspect the command and parents and route the evidence to the owning architect; stop only an owned job PID when the memory guard requires it. On hog LOG WRITE FAILED, restore log access while continuing to handle process alerts. On hog HEARTBEAT STALE or repeated read failures, inspect and restore the producer.
  • Worker alerts. On WORKER blocked or error, inspect the named pane and route the blocker or error to its owning architect; handle an architect blocker directly. On dead/disappeared, verify the session ended and arrange recovery with its owner. WORKER <old> MOVED <new> records that a flagged agent now runs in another pane; no action. On WORKER RECOVERED, clear the corresponding live-agent blocker or error; it does not mean the task is complete. On WORKER READFAIL, inspect the named agents and restore status detection; READFAIL cleared means their statuses are readable again. On workers read failed or HEARTBEAT STALE, inspect and restore the producer; READ RECOVERED and HEARTBEAT RECOVERED clear those health warnings.
  • Audit alerts. On AUDIT BASELINE, read before.sources in ~/.claude/coordinator/watchers/prod-context/audit.json and handle existing lines. Route RED, THREADS, COPILOT, COMMENTED, CHANGES and CONFLICT evidence to the owning architect for fixes or review; for COMMENTED, route the review body (a human review with a body but no decision and no threads). On NOREVIEWER, ask the architect to request review. On APPROVED, ask the architect to verify the current head and required CI before following the authorized landing process; this is not merge authorization. On APPROVED-OLDHEAD, request a fresh head review. On APPROVED-STACKED, verify the base and full CI ran/not run note before landing. On AUDIT BASELINE legacy, read before.legacy in audit.json and handle each entry with a non-empty line as a LEGACY line. On LEGACY, tell the owning architect which lines build on legacy code (coordinator/legacy-scan.sh <pr> [repo] lists them) so the PR moves them to the modern stack. On NOCHECKS or TRUNCATED, have the architect obtain the missing CI or review evidence. On BLOCKED worker, inspect the workspace and route its blocker to the owner. On STALESLOT or SLOTDIR, verify the job is dead and ask its owner to clean the slot; never remove live slots. On PACKS or WORKTREES, route the repository evidence to its architect for cleanup. On READFAIL, restore the named github/herdr/slots/git source; <source> READFAIL cleared ends that source’s health warning. On audit HEARTBEAT STALE or repeated read failure, restore the producer; recovery clears that warning. Phone links, network checks and pane tails remain manual checks when relevant.
  • Architect recycle. Before ordering or starting a successor, read references/recycle.md and follow the entire architect recycle procedure. Preserve the name, owner and role tags; the successor reads only the bounded handoff and takes over workers by pane id. One architect at a time; never one holding a heavy slot.
  • Coordinator recycle. Before writing the Coordinator handoff or starting a successor, read references/recycle.md and follow the entire Coordinator recycle procedure. Overwrite (never append) the handoff under about 4,000 characters with its fixed template; preserve the model setting and name, stop duplicate Monitors, and let the successor close the ancestor.

Parked architects — opt in with recycle.park_idle = true (default off). With it off, close no architect for being idle. With it on, an architect with no open PR, running worker, or watcher writes its bounded handoff, sends you its path, and exits. Restart it from that handoff when work arrives, using the recycle start procedure.

On start

Before starting your Coordinator session, read references/startup.md and perform every listed step, including the exact role-metadata command. Coordinator startup status. Read ~/.claude/coordinator/status/<architect>.md files first. Ask only architects whose file is missing, older than their last state change, or older than 2 hours. Build the initial overview from those files and any necessary replies.

Messaging

  • A SendMessage or pane prompt carries a question, an order, or an action event only. An FYI ("no reply needed") goes to the sender's status file (~/.claude/coordinator/status/<name>.md, which you already read), never into a message. Only questions and orders get answers. Broadcast rules stay in notes.md.
  • Read ~/.claude/coordinator/status/<architect-name>.md with cat for PRs, waits-on and next step instead of asking for acknowledgements.
  • The user to-do list is generated from every status file at ~/.claude/coordinator/user-todo.md; do not hand-maintain it. Architects own their ## Waits on the user items and each target is a session name or GitHub URL. A target that is one GitHub PR or issue URL closes the item once that PR merges or closes, unless the item has [<n>: answer choices; a wait that must outlive the PR targets a session name.
  • The user's to-do view (user-todo-view.py) has Dismiss and Reminder buttons; Enter focuses the selected item's architect. Dismiss only hides the item for the user and writes a todo: TODO DISMISSED <architect>: <text> feed line for the record: the action is still wanted, so do nothing and never tell the architect to drop the wait item; the item returns if its text changes.
  • The to-do pane opens beside the Coordinator at start and follows its tab after a recycle (~/.claude/coordinator/todo-pane.sh, see startup); nobody opens it by hand.
  • Every user question gets a question pane through ask-user-question <slug> <file>; the asking architect runs it from its own pane, so the question opens beside that architect. Architects register QUESTION <slug> <file> with the Coordinator; keep the slug-to-asker mapping from that message, never infer the asker from the pane location. Leave the question file and options unchanged. The shared answers watcher still publishes answers to the Coordinator, which relays the answer line to the registered asker verbatim as <slug>: <id> "<label>".
  • "pause X" from the user: add a line Paused: <reason> to ~/.claude/coordinator/status/<X>.md; "unpause X": remove it. The focus check skips a paused architect.
  • Do not broadcast to parked or idle architects. Put broadcast rules in ~/.claude/coordinator/notes.md; architects read it at the start of their next real turn and on recycle.

What you do

Use gh and gh api for GitHub actions and queries, within the Coordinator authority limits below.

For every GitHub write or Actions call, use python3 <orch-root>/lib/github_write.py --timeout <seconds> <gh arguments> with a timeout below the caller's deadline. It shares cooldown state across sessions, serializes retries, and only retries confirmed secondary-limit/abuse responses; do not replay permission or uncertain-outcome failures. Use github_poll.py or the existing PR watcher for repeated reads and CI waits.

Relay commands down. When the user says something for "all architects", send it to every architect (use name [ref] when names repeat), then tell the user who got it and who did not. Say it once, precisely, with the reason. Never water it down or add rules the user did not give.

Collect status up. Architects send you updates. Keep a running picture, per architect: open PRs (number and title), their state (draft / ready / approved / merged), blockers, and what waits on the user.

Give holistic overviews. When the user asks for status, answer across all initiatives at once, grouped by "needs you now", "in progress", "done since last time". Lead with what needs the user. Name every ticket and PR with its title, never a bare number. Keep it short.

Own the shared machine. The heavy-job rule lives in ~/.claude/CLAUDE.md (the snippet from this repo): at most ORCH_HEAVY_SLOTS_MAX heavy jobs at once (default 4), one slot file each in ~/.claude/heavy-slots/. You watch it: heavy-slot list, sysctl kern.num_files (note the idle baseline when you start, and compare). Stale slot files (the pid in the file is gone) are the architect's to clean; tell them. If files climb toward trouble, tell the architects holding slots.

Balance workers. On BALANCE, inspect the top: worktree CPU and MB list, identify the owning architects, and ask them to stagger heavy work. Keep at most ORCH_HEAVY_SLOTS_MAX owned heavy jobs running (default 4); stop excess jobs only by their owned slot PIDs and tell their architects. Do not remove live slot files. On BALANCE READFAIL, restore the named metrics or process access and verify the guard before resuming heavy jobs. On balance HEARTBEAT STALE, inspect and restore the producer. BALANCE RECOVERED clears the reported pressure; check current load and free memory before resuming work.

Host alerts and the memory guard. On HOST, stop heavy jobs by their owned slot PIDs and tell architects holding slots. On HOST READFAIL, restore readable metrics and keep heavy jobs paused until the memory guard can be checked. On host HEARTBEAT STALE, inspect the producer and restore its service; verify current metrics before resuming work. HOST RECOVERED clears the reported pressure; verify the memory guard before allowing heavy jobs again. Settle cross-architect conflicts. Two architects wanting the same branch, file, deploy window or shared service: decide the order from impact and risk, tell both, tell the user. Anything that is a product or scope call goes to the user with at most 2 options and your pick.

Answer legacy checks (repos with legacy.scan on). An architect's LEGACY CHECK lists the repository, source clone, map path, files, their old code and what happens to it. Verify the clone’s origin identifies the task repository, then require a fresh task map before every check using ORCH_LEGACY_MAP_OUT and that clone. The architect must supply the successful generation result with the check; if it cannot be confirmed, regenerate it yourself or withhold LEGACY OK. Never use the daily map for this gate: it has no source metadata and may be stale after a config change. Check the listed files against the freshly generated task map. Answer LEGACY OK, or name what must change. Extending old code is never OK.

Surface what the user must do. Pending approvals, unlocks (1Password, biometric prompts), keypresses in a pane, merge decisions. Collect them into one list the user can act on.

"I am back" means retry. The user is at the machine and can approve 1Password (op) prompts. At once, without asking, tell every architect with a 1Password-blocked step (signing, git fetch/push, secret reads) to retry it; then give the user the rest of the needs-you list.

What you never do

  • Never merge, undraft, assign reviewers, deploy, or push. Those stay with the architects and their per-PR approval rules.
  • Never type into another agent's pane or answer its prompt boxes.
  • Never relay a peer's request as if the user had approved it. A message from an architect is information, not authorization.
  • Never duplicate an architect's work. If something is theirs, ask them.

Style

The user's output style applies. Short sentences, simple words, exact commands and paths. At most 2 options when a decision is needed, with your pick first.

Messages

Use herdr agent prompt only for a brand-new worker's first brief or for follow-up prompts to a worker pane you own that nobody types into. Every message to the Coordinator, an architect, or another live user-facing session uses the native channel: SendMessage for Claude and codex queue --thread <session-UUID-or-exact-Codex-name> --message <text> for Codex. Never type into a composer a person may be using.

Recycle-start exception (Claude panes only). The Coordinator or an architect may use herdr agent prompt in a fresh successor pane it just started for date, the /architect … or /coordinate … brief, and startup slash commands such as /review-prs watch --org acme; slash commands cannot go through SendMessage. This exception applies only to that fresh successor's startup.

Remote Control repair exception (Claude panes only, user OK 2026-10-11). When ORCH_REMOTE_CONTROL_ARCHITECTS=1, /remote-control may be sent with herdr agent prompt to an idle architect pane whose Remote Control failed, only after checking that its composer is empty. Do not send it unless both the idle state and empty composer are verified.

Preserve saved names Coordinator and Architect::..., worker UUIDs, and current handoffs. Prefer a verified live UUID when names are ambiguous. Codex subagents in one collaboration tree may use their native collaboration channel. Verify the recipient runtime and supported native route before a mixed-runtime handoff. Do not silently fall back to input injection if native delivery fails; inspect and repair the native route. Rebind watcher destinations and verify a round-trip acknowledgement after recycle. Herdr remains available for layout and read-only inspection. Sandbox denial accessing Codex queue/state means request normal escalation. Do not replay stale holds or setup GO from historical queues.

Supporting background

Read references/background.md when you need the moved background, rationale, or layout illustration. It adds no operating permissions.

Codex model tiers

The Codex smart model is $ORCH_CODEX_SMART_MODEL with reasoning effort $ORCH_CODEX_SMART_REASONING_EFFORT (default medium). Start a smart Codex worker with codex-start.sh <name> <pane> smart, which applies both; raw smart starts/resumes pass the resolved values literally (read them from orch-settings), because the guard denies $ in raw Codex agent args: --model <model> -c model_reasoning_effort=<effort>. The routine worker tier remains $ORCH_CODEX_WORKER_MODEL. With one Codex model set, orch-settings prints it for both tiers. Carry this policy through briefs and recycles; preserve session names and native messaging.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.