agentleFS
SirAllapSirAllap/agentglass/skills/orchestrator/SKILL.md

orchestrator

Skill347 starsChanged 53 days agoMITView on GitHub

Use when somebody asks for an orchestrator, a lead agent, an orchestrator, or somebody to "keep an eye on" the agents working on a project — and when asking about who is minding a project, who is blocked, or what the orchestrator last said. Puts a seat in a project's chair inside agentglass (with its own rules, queue, memory and view) instead of a loose tmux session nobody else can see.

80 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use worker, reviewer 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.
  • stotihvSkill

    worker

    Execute beads autonomously within a track. Handles bead-to-bead context persistence via Agent Mail, uses preferred tools from AGENTS.md, and reports progress to orchestrator.

    Also in 3 projects that use this

  • MicrosoftSkill

    reviewer

    ASP.NET Core ハンドブックの記事をレビューする。Use when: 記事をレビューする、ドキュメントを校正する、コードレビューする、PRをレビューする。技術ドキュメントのレビュー、品質チェック、校正。

    Also in 4 projects that use this

  • am-willSkill

    planner

    Create comprehensive, phased implementation plans with sprints and atomic tasks. Use when user says: "make a plan", "create a plan", "plan this out", "plan the implementation", "help me plan", "design a plan", "draft a plan", "write a plan", "outline the steps", "break this down into tasks", "what's the plan for", or any similar planning request. Also triggers on explicit "/planner" or "/plan" commands.

    Also in 4 projects that use this

  • yakatotechSkill

    advisor

    Provide improvement suggestions and advice on work content. Use for document review, efficiency suggestions, and best practices

    Also in 3 projects that use this

  • AWSSkill

    planning

    Discovers user intent and generates a structured, step-by-step plan for model customization workflows. This skill must always be activated alongside any other skill when the user's request relates to model customization — including fine-tuning, training, building, customizing, reviewing data, or getting advice on approach, regardless of domain. Do not skip this skill even if the immediate ask is narrow (e.g., reviewing data format or a single workflow step), because planning discovers the full scope of work needed. Also activate when the user wants to resume, continue, or modify an existing plan.

    Also in 3 projects that use this

  • OpenAISkill

    observability

    Vercel Observability expert guidance — Drains (logs, traces, speed insights, web analytics), Web Analytics, Speed Insights, runtime logs, custom events, OpenTelemetry integration, and monitoring dashboards. Use when instrumenting, debugging, or optimizing application performance and user experience on Vercel.

    Also in 3 projects that use this

The file

We split this skill into the rules it gives an agent

7 rules. 0 are common, 4 are distinctive, and 3 are very specific to this project.

  • 0

    Common

    Most of the 66 edited versions we read keep these.

  • 4

    Distinctive

    This author's own choices. Worth a look.

  • 3

    Very specific

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

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    If a session has been orchestrating a project for hours — with agents reporting to it and a context worth keeping — do NOT seat a new one.

    line 38
  2. Distinctive:

    No level can push, open a pull request, comment, merge, or reach anything outside the machine.

    line 79
  3. Very specific:

    A failed FIRST turn may move to the next engine, once: Only when the engine was rate-limited or signed out before it did anything, and …

    line 165
  4. Very specific:

    The chair can change engine, and not by itself: When the policy names another engine for your chair, the row gets a next and the Agents …

    line 169
  5. Distinctive:

    Every start, prompt, key and stop is in the person's Activity log under your name, refusals too.

    line 184
  6. Distinctive:

    Read the two files it named.

    line 197
  7. Very specific:

    Leave it on speak until its line is worth reading.

    line 199

“Common” is measured: kept by at least 6 in 10 of the 66 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

The orchestrator's seat

An orchestrator is an agent whose job is NOT to write code. It knows who is working on what, who is stopped and why, hands work out, and answers for the whole field in one line. In agentglass it is a SEAT: one per project, with its own rules file, its own queue, the project's field in front of it, and a view.

Seating one by hand — a tmux window, a prompt pasted in, a loop — makes an agent nobody else can see and nobody can reproduce. This does it properly.

Put somebody in the chair

agentglass-agent orchestrate --project ~/code/<project>

Without --project it uses the current directory. It is idempotent: if that project already has somebody in its chair, you get that agent back rather than a second one.

The answer names two files. Both are markdown, both live outside the repository, and both are read fresh every seating:

  • the doctrine — the rules the SEAT runs by
  • the brief — the rules it hands to every agent it opens

They are seeded from a template the first time and then they are yours. The answer says doctrineSeeded: true when this call created them, which is your cue to read them and change what does not match this project.

One that is already running

If a session has been orchestrating a project for hours — with agents reporting to it and a context worth keeping — do NOT seat a new one. It adopts itself from inside its own pane:

agentglass-agent adopt --project ~/code/<project> --powers assign

Nothing restarts, nothing is re-prompted, and no context is thrown away. What it gains is the app knowing who it is: its line in the view, the queue, the field drawn for it with the last hour of every agent, and being woken when that field changes instead of keeping a clock of its own. Its rules files are seeded if missing so there is something to edit; they are not imposed on it.

The answer carries a token: the seat's own credential, the same kind a seat the app starts gets in its environment. Put AGENTGLASS_TOKEN=<token> in front of the calls that must be recognised as the chair's, such as a plan's Go in Autopilot (each shell call starts clean, so an export does not last). It is in memory, bound to this project, and revoked when the claim is released.

Standing down an adopted seat releases the claim. It does not kill the session — that would be throwing away somebody's day because a button said "stand down".

M or L work (a feature, several files, a design, security, data) goes through the flight-plan skill before any worker is opened; S goes straight to one.

What it may do

--powers speak (the default), nudge, or assign.

speaknudgeassign
read the field, reportyesyesyes
prompt an agent already runningnoyesyes
start and stop named agentsnonoyes

This is a credential, not a sentence in a prompt: a seat set to speak is refused by the server if it tries to prompt somebody. Start at speak for a day. Give it assign when its reports have been true.

No level can push, open a pull request, comment, merge, or reach anything outside the machine.

What the agents in the project may do is the project's rule list, not the chair's memory: agentglass-ui rules list reads it, and a rule the person tells the chair in chat is written with agentglass-ui rules set (stricter applies at once, looser waits for the person). See the ui-control skill.

Asking it things

agentglass-agent say "<one line>"          # the seat's own report for this round
agentglass-agent recall "<a question>"     # what this person already decided
agentglass-agent claim <task-id> --to <agent>
agentglass-agent finish <task-id> "<what came of it>"

recall answers out of the precedent bank, and says so plainly when it has nothing rather than inventing a precedent.

Opening agents

Through the app, never with a bare tmux new-window "cli ...": a CLI that exits 0 closes that tab and takes its output with it.

agentglass-agent start <name> --role builder --cwd <worktree>   # a seat starts agents with a role, in its own project
agentglass-agent read <name>                                    # its answer, while the kept tab is there (a day)
agentglass-agent stop <name>                                    # close the kept tab once it is read
agentglass-agent own <name>                                     # take an agent nobody owns (an enlisted tab in this project) before you use it

A seat has no role-less start: the role is where the envelope comes from, and the directory has to be inside this project or one of its worktrees. Both are refused with a sentence that says so.

The person can set the policy in one click with Quick setup (Settings ▸ Orchestration): it adds a rule whose id starts with preset-, and only the person can apply it or take it back. Leave those rules to them; to see what the policy would do right now without starting anything, read GET /orchestration and GET /orchestration/state.

Starting a worker through the policy

agentglass-agent start <name> --role builder --cwd <worktree> --prompt "<the task>"
agentglass-agent start <name> --role builder --cwd <worktree> --engine opencode --model opencode/big-pickle
agentglass-agent start <name> --role builder --cwd <worktree> --allow commit

Where the person has set an orchestration policy (Settings), --role starts the engine the policy says for that role, headless: one turn in a tab, with an exit code. The result says {engine, model, because, envelope}; read because.

Launch at Go takes the same path. A project whose builder chain starts on Claude opens a tab; on another engine, Launch starts the worker through the policy, in the plan's own tree, with the plan as its brief, and links the plan to it. The view follows the link: workerState says working while that worker is live and ended once it has stopped (show and list carry it when the name is a worker this machine ran). A worker you started yourself is linked with agentglass-ui flight-plan plan worker <plan> <name>, an empty name to clear it; the answer is the updated plan. A chair with less than assign is refused.

  • The policy decides the choices. --engine and --model must be an entry of the role's chain, and the engine must be ready on this machine. Anything else is refused with the chain in the sentence. You cannot edit the policy.
  • The envelope starts narrow: its own worktree, no network, no commit, no docker. --allow network, --allow commit or --allow docker widens it by one thing, only up to the project's ceiling. Pushing a branch, posting, merging, publishing a release and spending are not something an envelope can hold: they are the person's, always.
  • A worker is stopped, not steered. It cannot be told something in the middle of a turn. When its turn has ended (wait <name> --until gone, then read), prompt <name> "<next>" starts the next turn on the same engine, resumed.
  • Every engine is talked to the same way. A worker on Claude Code, Codex, OpenCode or any other engine is reached with prompt and read with read, never by typing into its tab. Chat messages between sessions (SendMessage) reach only a Claude Code session that is open and waiting; a headless worker on another engine never sees one, so a report from it comes from read, not from a message.
  • A turn has a limit (Settings ▸ Orchestration, 30 minutes unless changed). A worker still running at it is stopped with everything it started, its row says timeout (exit 124), and you get one report. If the app restarted during the turn, the row's because says ceiling lost: restarted: that turn is no longer stopped at its limit, so check on it yourself and stop it if it hangs.
  • A failed FIRST turn may move to the next engine, once. Only when the engine was rate-limited or signed out before it did anything, and never for a role the person set to ask. because then says which engine it moved off. A failure on a later turn, or after work began, is never moved: you get a report and decide.
  • The chair can change engine, and not by itself. When the policy names another engine for your chair, the row gets a next and the Agents screen's Change dialog offers it to the person. A running chair is never swapped by a rule: the person chooses the moment, you write your hand-off first, and the new seat is woken on it.
  • Yours only. You can prompt, read, key and stop the agents you own: the workers you started, and any other agent after agentglass-agent own <name>. An agent with no owner is refused until you do; one another project's seat owns, never. enlist and own reach only tabs inside this project or its worktrees, and never a seat's own chair, yours included. Enlisting a tab under a finished worker's name makes that name an ordinary tab: it has no owner and no turn to resume. A worker is refused when it uses the CLI as it is to start workers or seat anything.
  • The lock is partly enforced, on every engine. It is a list of command rules, not a sandbox: the result's partly says what it does not catch. Do not hand a worker text you would not trust with the person's own shell.
  • When it hits the wall, it says so in its answer: read it, then widen inside the ceiling, change the plan, or raise a need for the person.
  • Every start, prompt, key and stop is in the person's Activity log under your name, refusals too.

The queue

Work is added from the Agents screen, and every item carries what would prove it done — a test, a file, an output. An item with no stated proof is allowed and drawn as missing, because a made-up proof is worse than an admitted absence. An item that has beaten two agents stops being handed out and is marked as needing a person.

What to tell somebody who just made one

  1. Read the two files it named. The template is generic; the rules that make an orchestrator good are the ones about THIS project.
  2. Leave it on speak until its line is worth reading.
  3. It is woken when the field changes, not on a clock. It does not need a loop and should not be given one.

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.