Orca CLI
stablyai/orca
Operate Orca-managed worktrees, folder contexts, terminals, repos, automations, artifacts, skill sharing, worktree comments, and Orca's embedded browser…
A skill your agent uses when coordinating assignments, selected review boundaries, or blocked work across a rig.
$ npx skills add mvschwarz/openrig --skill orchestration-team -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install mvschwarz/openrig orchestration-team --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/mvschwarz/openrig.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/_canonical/pods/orchestration-team .claude/skills/orchestration-team && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "orchestration-team" agent skill from https://github.com/mvschwarz/openrig/tree/main/skills/_canonical/pods/orchestration-team into .claude/skills/orchestration-team/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "orchestration-team", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/mvschwarz/openrig/tree/main/skills/_canonical/pods/orchestration-teamType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add mvschwarz/openrig --skill orchestration-team -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install mvschwarz/openrig orchestration-team --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mvschwarz/openrig.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/_canonical/pods/orchestration-team .agents/skills/orchestration-team && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "orchestration-team" agent skill from https://github.com/mvschwarz/openrig/tree/main/skills/_canonical/pods/orchestration-team into .agents/skills/orchestration-team/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "orchestration-team", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add mvschwarz/openrig --skill orchestration-team -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install mvschwarz/openrig orchestration-team --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mvschwarz/openrig.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/_canonical/pods/orchestration-team .cursor/skills/orchestration-team && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "orchestration-team" agent skill from https://github.com/mvschwarz/openrig/tree/main/skills/_canonical/pods/orchestration-team into .cursor/skills/orchestration-team/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "orchestration-team", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/mvschwarz/openrig.git --path skills/_canonical/pods/orchestration-team--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add mvschwarz/openrig --skill orchestration-team -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install mvschwarz/openrig orchestration-team --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mvschwarz/openrig.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/_canonical/pods/orchestration-team .gemini/skills/orchestration-team && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "orchestration-team" agent skill from https://github.com/mvschwarz/openrig/tree/main/skills/_canonical/pods/orchestration-team into .gemini/skills/orchestration-team/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "orchestration-team", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install mvschwarz/openrig orchestration-teamInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add mvschwarz/openrig --skill orchestration-team -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/mvschwarz/openrig.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/_canonical/pods/orchestration-team .github/skills/orchestration-team && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "orchestration-team" agent skill from https://github.com/mvschwarz/openrig/tree/main/skills/_canonical/pods/orchestration-team into .github/skills/orchestration-team/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "orchestration-team", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add mvschwarz/openrig --skill orchestration-team -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install mvschwarz/openrig orchestration-team --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mvschwarz/openrig.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/_canonical/pods/orchestration-team .opencode/skills/orchestration-team && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "orchestration-team" agent skill from https://github.com/mvschwarz/openrig/tree/main/skills/_canonical/pods/orchestration-team into .opencode/skills/orchestration-team/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "orchestration-team", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
orchestration-teamA skill your agent uses when coordinating assignments, selected review boundaries, or blocked work across a rig.
Orchestration Team is an agent skill from mvschwarz/openrig. Use when coordinating assignments, selected review boundaries, or blocked work across a rig.
Its SKILL.md is about 4.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Agent Workflows, covering Multi-agent orchestration. The repository describes itself as: Build your own network of agents from Claude Code, Codex and Pi: persistent teams with roles, shared context and owned work. The licence is Apache-2.0.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 4b48ca2. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
jqnpmgitFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npm and git, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Orchestration Team loads about 4.7k tokens when it runs. Until then it costs about 28 tokens; SKILL.md has 2,774 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from mvschwarz/openrig at commit 4b48ca2, republished under its Apache-2.0 licence (© mvschwarz). 2,774 words, ~4,731 tokens.
.claude/skills/orchestration-team/SKILL.md (or your agent's skills folder).You are part of the orchestration pod. Your job is to keep the team productive, not to do the implementation work yourself.
Run rig whoami --json, then resolve project.yaml -> mission.yaml -> active slice.yaml -> selected component or wave map -> addressed context. The complete
lookup and precedence rule is docs/reference/product-journey-sdlc.md#resolve-the-selected-path
(installed: $OPENRIG_HOME/reference/product-journey-sdlc.md#resolve-the-selected-path).
Read the selected addresses and source needed for this task; skills available in
your profile are capabilities, not a mandatory reading list. No composition means
light Part A. Role names and idle seats add no gates. Explicit rigor and authored
wave boundaries retain their named checks.
Check the queue and actual seats needed for this assignment. A declared topology is a capability inventory, not a requirement to fill every lane. Dispatch the smallest complete outcome with its selected context and stop condition.
The orchestration pod is responsible for:
North star: your goal is a self-running rig, not a busy orchestrator. Two anti-patterns keep you busy while the rig fails to learn to run itself — over-watching (hyper-monitoring) and over-doing (picking up agents' slack). Both are governed by judgment below, not by a rule for every case. (Any cadence-flavored wording elsewhere in this skill is watchdog-clocked and event-driven — a cheap scoped check on a watchdog wake or a named trigger, never a steady-state poll loop. There is no literal instruction to poll panes or rig ps on a fixed cycle.)
Principle: monitoring intensity tracks stakes × how likely you are to need to intervene, bounded to the window where that's true. Spend tight attention only where it changes what you do, only as long as the risk lasts, then return to default. (Same evidence-not-cadence rule the watchdog skill applies to intervention level, applied to intensity.) Self-test: "Can I name the stakes AND the condition that ends this close-watch?" If not, you're hyper-monitoring.
Default (almost always) — token-efficient. Steady-state your job is the idle-without-handoff exception: the queue handles normal handoff; you catch the agent who finished + went idle without closing/handing off.
status-not-chat-orchestrator): rig ps --nodes --json + rig queue are your status source; do NOT reconstruct fleet-state by capturing panes (pane rig capture is high-bandwidth within your own pod — that's fine; it is not how you track cross-pod/fleet state). (rig ps --nodes is YOUR rig's seats only — bare rig ps lists ALL rigs on the host; don't mistake a narrow node read for the whole world.)watchdog): configure rig watchdog to wake you (~3 min); between wakes, idle (zero tokens) — no self-run sleep-loop re-reading panes at steady-state. Prefer one workflow-watchdog + targeted exception handling over many per-seat nag loops.rig queue + a filtered rig ps (see "Read cheap" below) first; ONLY for a seat that looks idle/suspicious, rig capture <session> last few lines (never a full pane, never huge chunks); active owner → no-op.rig queue show <qitem> --json. One rig's frontier → filter + project only the fields you need, e.g. rig ps --nodes --json | jq '.[] | select(.rigName=="<rig>") | {session:.canonicalSessionName, state:.agentActivity.state, hasAssignedWork, pendingWorkCount}' (prefer a native rig/session filter if one exists). Never pull whole-fleet JSON to answer a narrow rig/qitem question.Close-monitoring — legitimate exception, deliberate + BOUNDED. Some moments warrant tight/continuous attention — a seat doing something high-stakes, novel, or fragile where you may need to feed context, hand-hold, or intervene fast; a delicate gate; a recovery in flight. Switch in on purpose on a nameable trigger; exit the instant the condition clears (time- and event-bounded); don't let it bleed into steady-state. Worked example: close through compaction-recovery / QA-runtime-proof / merge-gate; back off to queue+watchdog once the owner is active + the qitem in-progress. The anti-pattern is not tight monitoring — it's unbounded tight monitoring (an ambient sleep-loop with no nameable end-condition). That is what burns the shared account.
When you DO catch a dropped potato, your default is to teach the agent the protocol, not do it for them. Agents load the hot-potato / queue-handoff protocol and are supposed to hand off on their own; you are the belt-and-suspenders for when one doesn't (skill not loaded, fell out of context, or just got it wrong).
<next-seat> via rig queue …. On finishing you queue-handoff, you don't idle." The agent does the handoff and learns; next time it's automatic.Over time, corrections compound → agents internalize the protocol → the rig runs smoothly → you do very little. That is the goal. Full protocol: watchdog + status-not-chat-orchestrator + queue-handoff.
If there is more than one orchestrator, divide the load:
Lead owns:
Peer owns:
If there is only one orchestrator, you own both the main work stream and the coverage checks.
Resolve the selected path first. Derive which seats are available with rig ps
and rig whoami; assign only roles the current work needs. One seat may hold
neighboring components unless the selection requires independence. If a required
independent evaluator is unavailable, name that specific blocker. Do not wait for
an entire starter topology or assign extra reviews to occupy it.
When you dispatch work, give the receiving agent enough structure to act without guessing:
(0.5.0) Assign work with its context attached. Rather than make the assignee grep for the as-built, compose a context pack and ride it on the handoff: rig context compose --out packs/<brief> --from <files>, then rig queue create --destination <seat> --body-context packs/<brief> --summary "…". The pack's resolved content is snapshotted into the qitem (plus its ref for provenance), so the context survives compaction and is auditable. See openrig-user → "Context packs and paced delivery." (rig context composes; the queue delivers — the noun never sends.)
If design clarity is missing, route to design first. If QA gating is required, say so explicitly in the assignment. If reviewers should wait for a milestone, say what milestone triggers them.
After delegating:
rig capture <session> when you need a real status update.When an agent looks stuck:
Do not call a blocked agent "in progress" forever.
A busy seat may be the current constraint. First check available owners, retained context and the work's independent-review requirements. Reassign, defer, or add capacity only within the declared scope and current provider/host limits.
rig fork can compose a new occupant from retained context when the installed
runtime and source support it. Check current help and actual source availability;
this skill grants no standing permission to fork, change accounts, or launch rigs
or hosts. A selected temporary fork needs a bounded outcome, durable return,
continuity disposition and an authorized retirement path. Distinct names alone
do not prove safe or correct lifecycle behavior.
See session-source-fork for continuity semantics. Choose a context holder or an
ephemeral subagent according to whether the acquired knowledge needs to persist.
Your rig's roster is a fact you READ, never one this skill asserts. Get the actual team
from rig ps --nodes --json at settlement time — a skill that hardcodes a specific topology
goes stale exactly like a stale boot overlay, and a cleared or fresh seat has no context to
doubt it. A starter roster is an example, not a live inventory.
Only the authored component/wave selection or an explicit owner assignment admits a review or gate. Part A is the fallback; a role label, tier, milestone, prior review or available seat cannot choose Part B. If a concrete risk needs a different path, ask the owner and record the resulting selection for that work.
For a wave, builders verify their local slices and the integrator folds serially where needed. Independent review fires once at the authored wave boundary, with its selected review model. Preserve separately named rigorous-slice exceptions. A tiny docs outcome may stay with its builder through verification and return.
Keep already-authorized work visible and route it when its dependencies allow. There is no fixed queue buffer. Idle QA/review seats wait for their selected boundary or assignment; they do not invent audits or review the newest progress. An availability report is enough. Do not create obligations to improve utilization.
Use a durable queue handoff for assigned work with an owner and closure condition.
Use direct rig send for information or a scoped nudge that creates no new
obligation. Confirm durable custody and delivery separately; neither proves the
recipient understood or completed the work.
Use the chatroom when:
Use rig capture and rig transcript when you need evidence, not guesses.
Proactively reach the human on the named event classes — WORKS ≠ USED. As an orchestrator you are
the primary channel to the human, and a channel nobody reaches for is useless. Surface — unprompted
— model-fallback boots, capacity / authority requests, security flags, acceptance / milestone moments,
human-addressed work blocked past its settle window, and idle / stall alarms. The named classes and the
how live in messaging-the-human → the v0 event classes; your job is to actually use the channel
across the lifecycle, not only when cornered.
This optional loop runs only when the owner or authored composition selects pre/post-edit QA for named work. A tier or pair topology does not select it.
The orchestrator does NOT relay messages between them. They communicate directly via rig send. The orchestrator monitors for:
On gated atoms, never send impl a "Go" without explicitly stating the FIRST action is to send a pre-edit to QA — impl will race through an entire task list if given a general "Go." On ungated atoms, a general "Go" is correct; do not smuggle the gate back in through dispatch phrasing.
A dogfood assignment may authorize the outcome owner to diagnose, fix and retest bounded issues. Say that scope explicitly. A read-only evaluation remains read-only; a QA title does not authorize source edits or broader architecture. Preserve any independently selected final check when the evaluator authors a fix. Route findings outside the assignment to their owner with evidence.
Use the actual prompt and declared authority to decide an intervention. Never select a numbered option from a timeless harness recipe: prompt shape and the consequence of persistent approval vary. An authorized unblock must preserve the operation's scope; it does not grant publication, destructive or lifecycle powers.
Choose models and roles from the environment's current execution policy and observed capabilities. Neither a vendor label nor a seat title determines who may author plans, implement, review or accept work. Verify required runtime/model identity before relying on the result. Follow the declared continuity policy; context telemetry is evidence to interpret, not automatic authority to compact or replace another seat.
Agents treat orchestrator messages as high-authority commands. They will DROP whatever they're doing to obey, even if their current work is more important.
Rules:
NEVER run without human approval:
rig down --delete --force (kills tmux sessions)rig down --force on adopted/claimed rigsnpm publishgit push --forceBefore any destructive operation: "If this goes wrong, can I undo it?" If no, confirm with the human.
Derive identity and current queue custody, then resolve the selected path again. Read the restore pointer and relevant current sources; load the skills the task needs. Follow any explicitly declared continuity checks. Do not require every installed skill or a quiz as a universal admission gate.
© mvschwarz, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/_canonical/pods/orchestration-team of mvschwarz/openrig.
Open the folder on GitHubat commit 4b48ca2
Orchestration Team next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Orchestration Team this skillmvschwarz/openrig | 6.6k | — | ~4.7k | Automated safety check: Pass | Apache-2.0 | |
| Orca CLIstablyai/orca | 89k | 2 repos | ~593 | Automated safety check: Pass | MIT | |
| Paseo Advisor Second Opiniongetpaseo/paseo | 20k | 1 repos | ~756 | Automated safety check: Pass | Custom licence | |
| O2 Review Loopopenobserve/openobserve | 22k | — | ~3.7k | Automated safety check: Pass | AGPL-3.0 | |
| Paseo Committeegetpaseo/paseo | 20k | 1 repos | ~496 | Automated safety check: Pass | Custom licence | |
| Mission Control Agent APIbuilderz-labs/mission-control | 6.3k | — | ~2.1k | Automated safety check: Pass | MIT |
stablyai/orca
Operate Orca-managed worktrees, folder contexts, terminals, repos, automations, artifacts, skill sharing, worktree comments, and Orca's embedded browser…
getpaseo/paseo
Launches one separate agent through Paseo to give a second opinion on the current task, with a self-contained briefing and no permission to edit files.
openobserve/openobserve
Splits a change into planner, coder and independent reviewer roles: you confirm a spec, a subagent implements it, and a separate reviewer checks each round's local WIP commit.
getpaseo/paseo
Forms a two-agent committee with contrasting profiles to analyze a stuck problem in parallel, reconcile their views and return a consensus plan without editing files.
builderz-labs/mission-control
Teaches an agent to use the Mission Control dashboard API: register, send heartbeats, fetch assigned tasks, report progress and disconnect, with API key auth.
getpaseo/paseo
Hands off the current task, including context, decisions and failed attempts, to a fresh agent through Paseo by writing a self-contained briefing prompt and launching that agent.
mvschwarz/openrig
Walks an agent through upgrading the OpenRig CLI and daemon one observed step at a time, keeping live seats alive and reconciling managed plugin files.
mvschwarz/openrig
Re-grounds a long-running agent in the current product outcome by running a path-based trace to the root of its topology and work trees.
mvschwarz/openrig
Helps set up a continuing agent software team for a real repository with OpenRig, choosing between manual work, queue handoffs and an explicit Workflow.
mvschwarz/openrig
Separates a stable agent seat's identity from its changing occupant, and records honest, two-part provenance whenever one occupant replaces another.
mvschwarz/openrig
Loads one section of a Markdown file by its path#h2-slug address with a bundled resolver script, for use outside OpenRig's context library.
mvschwarz/openrig
Covers authoring, inspecting, refreshing, promoting and deprecating named Agent Starters, the reusable starting points for agent seats in a rig.
Categories
A skill your agent uses when coordinating assignments, selected review boundaries, or blocked work across a rig. Orchestration Team is an agent skill from mvschwarz/openrig. Use when coordinating assignments, selected review boundaries, or blocked work across a rig.
Orchestration Team fits situations like: coordinating assignments; selected review boundaries; blocked work across a rig.
Run `npx skills add mvschwarz/openrig --skill orchestration-team -a claude-code`. Or copy the skill folder (skills/_canonical/pods/orchestration-team in mvschwarz/openrig) into .claude/skills/orchestration-team in your project. Claude Code loads it when a task matches its description.
Run `npx skills add mvschwarz/openrig --skill orchestration-team -a codex`. Or copy the skill folder (skills/_canonical/pods/orchestration-team in mvschwarz/openrig) into .agents/skills/orchestration-team in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add mvschwarz/openrig --skill orchestration-team -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/orchestration-team, .gemini/skills/orchestration-team, .github/skills/orchestration-team and .opencode/skills/orchestration-team in your project.
Going by SKILL.md and its folder, Orchestration Team needs the command-line tools its instructions call (jq, npm and git).
SKILL.md contains no URLs. Its commands use npm and git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Orchestration Team is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.7k tokens (SKILL.md is roughly 19k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Orchestration Team: Orca CLI (stablyai/orca, 89k stars), Paseo Advisor Second Opinion (getpaseo/paseo, 20k stars), O2 Review Loop (openobserve/openobserve, 22k stars) and Paseo Committee (getpaseo/paseo, 20k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
mvschwarz (a GitHub user) maintains it in mvschwarz/openrig, which has 6,551 GitHub stars. The repository holds 49 skills in this directory. The repository was last updated on October 10, 2026.
Source: mvschwarz/openrig on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.