Phone Harness
ShawnPana/phone-harness
Control the user's phone — an iPhone through the Mac's iPhone Mirroring window, an Android over adb, or a rented cloud Android: open apps, tap, type, swipe, read the screen.
[omh] Coding owner already chosen, handoff pending: prepares the handoff for the coding agent you already chose, composing its prompt from that agent's own installed skills; never selects the owner…
$ npx skills add rlaope/oh-my-hermes --skill ulw-maestro -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install rlaope/oh-my-hermes ulw-maestro --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/rlaope/oh-my-hermes.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/ulw-maestro .claude/skills/ulw-maestro && 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 "ulw-maestro" agent skill from https://github.com/rlaope/oh-my-hermes/tree/main/skills/ulw-maestro into .claude/skills/ulw-maestro/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ulw-maestro", 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/rlaope/oh-my-hermes/tree/main/skills/ulw-maestroType 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 rlaope/oh-my-hermes --skill ulw-maestro -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install rlaope/oh-my-hermes ulw-maestro --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rlaope/oh-my-hermes.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/ulw-maestro .agents/skills/ulw-maestro && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "ulw-maestro" agent skill from https://github.com/rlaope/oh-my-hermes/tree/main/skills/ulw-maestro into .agents/skills/ulw-maestro/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ulw-maestro", 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 rlaope/oh-my-hermes --skill ulw-maestro -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install rlaope/oh-my-hermes ulw-maestro --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rlaope/oh-my-hermes.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/ulw-maestro .cursor/skills/ulw-maestro && 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 "ulw-maestro" agent skill from https://github.com/rlaope/oh-my-hermes/tree/main/skills/ulw-maestro into .cursor/skills/ulw-maestro/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ulw-maestro", 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/rlaope/oh-my-hermes.git --path skills/ulw-maestro--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 rlaope/oh-my-hermes --skill ulw-maestro -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install rlaope/oh-my-hermes ulw-maestro --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rlaope/oh-my-hermes.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/ulw-maestro .gemini/skills/ulw-maestro && 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 "ulw-maestro" agent skill from https://github.com/rlaope/oh-my-hermes/tree/main/skills/ulw-maestro into .gemini/skills/ulw-maestro/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ulw-maestro", 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 rlaope/oh-my-hermes ulw-maestroInstalls 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 rlaope/oh-my-hermes --skill ulw-maestro -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/rlaope/oh-my-hermes.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/ulw-maestro .github/skills/ulw-maestro && 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 "ulw-maestro" agent skill from https://github.com/rlaope/oh-my-hermes/tree/main/skills/ulw-maestro into .github/skills/ulw-maestro/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ulw-maestro", 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 rlaope/oh-my-hermes --skill ulw-maestro -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install rlaope/oh-my-hermes ulw-maestro --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rlaope/oh-my-hermes.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/ulw-maestro .opencode/skills/ulw-maestro && 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 "ulw-maestro" agent skill from https://github.com/rlaope/oh-my-hermes/tree/main/skills/ulw-maestro into .opencode/skills/ulw-maestro/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ulw-maestro", 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.
ulw-maestro[omh] Coding owner already chosen, handoff pending: prepares the handoff for the coding agent you already chose, composing its prompt from that agent's own installed skills; never selects the owner…
Ulw Maestro is an agent skill from rlaope/oh-my-hermes. [omh] Coding owner already chosen, handoff pending: prepares the handoff for the coding agent you already chose, composing its prompt from that agent's own installed skills; never selects the owner and never executes the work itself. Use when the user says: ulw-maestro, coding handoff, prepare the handoff, prepare a coding handoff, hand off the coding work, external executor handoff, handoff prompt, delegation prompt.
Its SKILL.md is about 5.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/executor-prompt-composition.md`).
It sits in Mobile, covering Mobile testing and debugging. The repository describes itself as: All in one plugin for Hermes Agent ⚚ the coding intelligence, a long-term memory system and model optimized workflow packages. The licence is MIT.
Read from SKILL.md and the folder at commit 7cd0d02. 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:
claudecodexFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
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.
Ulw Maestro loads about 5.1k tokens when it runs, and up to ~6.9k if it reads all its reference files. Until then it costs about 108 tokens; SKILL.md has 2,843 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 rlaope/oh-my-hermes at commit 7cd0d02, republished under its MIT licence (© rlaope). 2,843 words, ~5,076 tokens.
.claude/skills/ulw-maestro/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.This is a Hermes-native maestro workflow skill.
maestro exists so a handoff to an already-chosen external coding CLI carries that CLI's own installed skills, a stated dispatchability boundary, and a captured session id instead of a guessed prompt; absent an explicit coding-owner choice, work runs inside the Hermes harness and no external coding CLI is selected, and this engine only loads once that explicit choice is already made.
executor-runtime-readiness instead.ultrawork, which enters this engine for lanes with an external owner.Good example:
Bad example:
choose_executor for the coding owner before composing anything; never pick one on the user's behalf.omh_run_summary summary_text verbatim, or an explicit run-summary not_available line -- never a model-estimated number.idea-to-deploy, llm-app-dev, cto-loop, deploy-and-monitor, code-review, build-failure-triage, verification-gate, security-safety-review, +28 more) - coding owners, handoffs, review, CI, and merge evidence.oh-my-hermes or name the adjacent workflow.omh-routing/references/skill-common-rail.md.Use once a lane's coding owner is an explicit external CLI and the work needs a prompt composed from that CLI's own installed skills, its readiness and permission checked, and its session captured for steering.
Strong routing signals: `$maestro`, `ulw-maestro`, `coding handoff`, `prepare the handoff`, `prepare a coding handoff`, `hand off the coding work`, `external executor handoff`, `handoff prompt`, `delegation prompt`, `コーディング委任`, `委任プロンプト`, `ハンドオフを準備`, `外部の実行エージェントに渡す`, `코딩 위임`, `위임 프롬프트`, `핸드오프 준비`, `외부 실행기 위임`, `코딩 에이전트에 넘기`, `编码委托`, `移交提示词`, `准备交接`, `交给编码代理`Category: execution
Phase: external-handoff
Hermes role: handoff-guide
Quality tier: handoff-gated
Reasoning demand: heavy
Quality bar:
accepted_explicit_choice. Recommendations, plan mentions and previous owners do not count. For a missing, ambiguous or unready owner, ask choose_executor once and stop; never choose for the user.prepare a Codex handoff only or use Codex, do not dispatch stays preparation-only. Use Codex to implement this now supplies both the owner choice and dispatch permission within scope, with no redundant confirmation. After readiness and permission probes, invoke the fanout-dispatch bridge (omh coding run for one unit); clarify missing owner or action authority first.coding_prompt_handoff/v1 -- the prepared handoff record is never dispatchable and never described as a run; only the fanout-dispatch bridge -- omh coding fanout dispatch or its omh coding run single-run entry -- ever spawns a CLI), codex is a dispatchable coding_executor_handoff/v1, and omx-runtime/omo-runtime/omc-runtime are coding_runtime_handoff/v1.omh coding executor-skills --profile <profile>: arrange the returned skills by the unit's role recipe, one named skill per step, using each skill's own invocation string verbatim (/name, /pack:name from its manifest, $name for a codex pack) -- never a guessed prefix. Empty discovery gets one explicit line -- "no installed skills discovered for <profile>; prompt composed generically" -- then compose generically. Load references/executor-prompt-composition.md for the full procedure.SKILL.md on disk is evidence the file exists, not that the receiving agent loads, enables, or honours it -- its own registry is the authority.Docs consulted: block (URL plus version, or the explicit none-line), and the six-section session summary shape on report-back.--version or no-op call) and read the configured model from the executor's own config or output; a binary on PATH plus an auth file is prepared, never observed. Run a bounded permission probe before the real dispatch.omh coding run's --model flag (or the unit's model field under omh coding fanout dispatch) using the executor's own accepted identifier -- codex and claude-code both take --model, so an alias like opus or a full id like claude-opus-5-5 reaches the CLI unmodified; Claude Code's opus alias tracks the provider's recommended Opus (Opus 5.5 needs Claude Code v2.1.280 or later; on Microsoft Foundry it resolves to Opus 4.6).omh coding fanout dispatch for a multi-unit split, or omh coding run for one unit -- is the only executing surface, explicit per invocation, and it never merges; preparing, composing, or showing a prompt is never dispatch, and a dispatch receipt is never review, CI, or merge evidence.session_file_activity/v1 (omh quality-evidence file-activity --hermes-session <id> --json): the workspace files its read_file, write_file, and patch calls named, with the outcome Hermes recorded -- never file-content, diff, test, review, CI, or merge evidence.--output-format json -> session_id for Claude Code, --json -> thread_id for Codex) and carry it into every status line; a missing id is reported as unsteerable, never silently attached.omh coding fanout status --fanout-id <fanout-id> --json about every 60 seconds until the roster's own all_units_terminal is true, and read stuck_units on every poll rather than scanning the rows yourself. Per unit, terminal is the answer and unit_state is why -- a lifecycle_state of unit_verification_observed or integration_ready, or a recorded failure_diagnostic, is what makes a finished unit terminal -- with last_event_age_seconds the time since that unit's last observed output, progress.seconds_since_new_output the time since its output last grew, and capacity.next_action the reason a refused unit was refused. A unit that is progress_stalled, awaiting_input, account_limit, permission_blocked, or data_missing needs intervention NOW, not more waiting: a live process with no new evidence is not progress, and re-running under the same account, the same credentials, or the same missing objects repeats the failure exactly. Never end a turn on "waiting for the worker" while a unit sits in one of those states. all_units_terminal is also false when the roster is empty and when a unit has neither a marker nor a summary row, so give the loop a wall clock of its own: a unit whose unit_state is still unknown after about ten minutes is a missing record to chase, not a unit to keep waiting on, and a poll loop with no bound is the stall it was meant to catch.ulw-work lane, own that lane's handoff only -- lane framing, disjointness, integration verification, and the closing brief stay with ulw-work; report back in that lane's evidence vocabulary.omh_run_summary summary_text verbatim as the final lines, or an explicit run-summary not_available line -- never an estimated number.Handoff policy:
Convert an explicitly chosen external coding owner into a prepared handoff: claude-code as a prompt-only coding_prompt_handoff/v1 (never dispatchable, never described as a run), codex as a dispatchable coding_executor_handoff/v1, and omx-runtime/omo-runtime/omc-runtime as coding_runtime_handoff/v1. This engine loads only after that choice is made -- absent an explicit coding-owner choice, work runs inside the Hermes harness and no external coding CLI is selected -- and it never substitutes for the Hermes harness path or picks the owner itself.
Executor readiness:
executor_readiness/v1 for the selected Codex, Claude Code, Hermes, or oh-my runtime path before first dispatch.missing or blocked, ask the user to choose another coding agent, configure PATH, continue in Hermes, or keep a prompt/runtime handoff; retry only after that state changes.Delegation transparency:
... [truncated, N chars total] — the user must see WHAT was asked, not just that something was.(model effort) in status and briefing lines — including runtime-native subagents; when no effort is exposed, show the model alone as (model) rather than writing a placeholder like unknown beside a known model, and never emit empty parentheses. Carry token and elapsed figures the same way in these narration lines: report observed figures and omit unobserved ones — when the user asks for a figure directly, say it was not observed instead of omitting it; a rendered status-board column keeps its own unknown cell.--output-format json and read session_id from the result (resume with claude -p --resume <session-id>); for Codex pass --json and read thread_id (resume with codex exec resume <thread-id>, repeating --skip-git-repo-check outside a git repo). Never leave a delegate run with no recorded way to resume or steer it — a plain-text one-shot that hides its session id strands the work when the run stalls or times out.--permission-mode acceptEdits or an explicit --allowedTools list (--dangerously-skip-permissions only inside an isolated worktree or sandbox), and the equivalent sandbox/approval flags for other CLIs. acceptEdits: true is not a settings key and ~/.claude/settings.local.json is not a file Claude Code reads — user scope is ~/.claude/settings.json and project scope is the dispatch cwd's .claude/settings.local.json with rules under permissions.allow. Prove the grant with a bounded scratch-edit probe run before the real dispatch: a permission denial in a non-interactive run recurs identically on retry, so never redispatch until a changed grant is proven, and surface an ungrantable permission as a blocker before dispatch, not after minutes of silence.Required inputs:
Expected outputs:
Artifact expectations:
Safety rules:
omh coding fanout dispatch or its omh coding run single-run entry -- is the only executing surface.Preferred harness for this skill: coding-handling.
omh runtime record --skill maestro --harness coding-handling --status startedRecord observed delegation results; otherwise return not_available or not_observed.
Prepared OMH routing is not execution, review, CI, merge-readiness, or merge evidence.
Use Hermes-native subagent/delegation features when available: native subagents -> Hermes delegation when available, otherwise sequential lanes.
Shared product, compatibility, topology, memory, harness, and execution rules: omh-routing/references/skill-common-rail.md. Load it when applicable; otherwise name an unavailable capability.
© rlaope, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file (references) in skills/ulw-maestro of rlaope/oh-my-hermes.
Open the folder on GitHubat commit 7cd0d02
Ulw Maestro 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 |
|---|---|---|---|---|---|---|
| Ulw Maestro this skillrlaope/oh-my-hermes | 3.2k | — | ~5.1k | Automated safety check: Pass | MIT | |
| Phone HarnessShawnPana/phone-harness | 3.2k | — | ~4.3k | Automated safety check: Pass | MIT | |
| Maa Issue Log AnalysisMaaAssistantArknights/MaaAssistantArknights | 24k | — | ~4k | Automated safety check: Pass | AGPL-3.0 | |
| Mobile QAtloncorp/tlon-apps | 107 | — | ~2.4k | Automated safety check: Pass | MIT | |
| Store Listing Screenshotstherxmv/Telegram-Themer | 119 | — | ~2.5k | Automated safety check: Pass | None | |
| Maestro ImproveReinaMacCredy/maestro | 233 | — | ~1.9k | Automated safety check: Pass | MIT |
ShawnPana/phone-harness
Control the user's phone — an iPhone through the Mac's iPhone Mirroring window, an Android over adb, or a rented cloud Android: open apps, tap, type, swipe, read the screen.
MaaAssistantArknights/MaaAssistantArknights
分析 MaaAssistantArknights 上游仓库公开 Issue(https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/...
tloncorp/tlon-apps
Run a mobile QA checklist on a physical Android device over adb for tlon-apps, then triage what fails into fixes.
therxmv/Telegram-Themer
Generate TelegramThemer's Play Store listing images — capture the 8 required app screenshots on a running emulator/device by driving the real UI with adb, then composite them into the final…
ReinaMacCredy/maestro
Turn filed lessons into the smallest doctrine edit. An agent skill from ReinaMacCredy/maestro.
yang1ming/android-harness
Direct Android device control through ADB. An agent skill from yang1ming/android-harness.
rlaope/oh-my-hermes
[omh] Screen-reader or keyboard accessibility gaps: prepare WCAG, keyboard, focus, screen-reader, target-size, and reflow evidence gates for UI surfaces.
rlaope/oh-my-hermes
[omh] Choosing between coding agents on evidence: compare executor or agent choices on reproducible tasks using quality, cost, time, tool, and evidence metrics.
rlaope/oh-my-hermes
[omh] Agent instruction file for a repo -- AGENTS.md, CLAUDE.md, a Cursor rule: write or update what an agent cannot derive from the code, inside a marked region, with every command verified or…
rlaope/oh-my-hermes
[omh] AI agent progress for managers: help managers inspect AI-agent progress, blockers, quality gates, and throughput levers.
rlaope/oh-my-hermes
[omh] Messy or AI-generated code to clean up: delete AI-generated slop, dead code, and duplication while observable behavior stays identical.
rlaope/oh-my-hermes
[omh] Application code misbehaves -- a wrong value, a flaky test, a lost update: reproduce it first, form competing hypotheses, discriminate them with the cheapest observation, and only then fix the…
Categories
[omh] Coding owner already chosen, handoff pending: prepares the handoff for the coding agent you already chose, composing its prompt from that agent's own installed skills; never selects the owner…. Ulw Maestro is an agent skill from rlaope/oh-my-hermes. [omh] Coding owner already chosen, handoff pending: prepares the handoff for the coding agent you already chose, composing its prompt from that agent's own installed skills; never selects the owner and never executes the work itself.
Ulw Maestro fits situations like: the user says: ulw-maestro; prepare the handoff; prepare a coding handoff; hand off the coding work.
Run `npx skills add rlaope/oh-my-hermes --skill ulw-maestro -a claude-code`. Or copy the skill folder (skills/ulw-maestro in rlaope/oh-my-hermes) into .claude/skills/ulw-maestro in your project. Claude Code loads it when a task matches its description.
Run `npx skills add rlaope/oh-my-hermes --skill ulw-maestro -a codex`. Or copy the skill folder (skills/ulw-maestro in rlaope/oh-my-hermes) into .agents/skills/ulw-maestro 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 rlaope/oh-my-hermes --skill ulw-maestro -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ulw-maestro, .gemini/skills/ulw-maestro, .github/skills/ulw-maestro and .opencode/skills/ulw-maestro in your project.
Going by SKILL.md and its folder, Ulw Maestro needs the command-line tools its instructions call (claude and codex).
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. 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.
Ulw Maestro is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.1k tokens (SKILL.md is roughly 20k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.8k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Ulw Maestro: Phone Harness (ShawnPana/phone-harness, 3.2k stars), Maa Issue Log Analysis (MaaAssistantArknights/MaaAssistantArknights, 24k stars), Mobile QA (tloncorp/tlon-apps, 107 stars) and Store Listing Screenshots (therxmv/Telegram-Themer, 119 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
rlaope (a GitHub user) maintains it in rlaope/oh-my-hermes, which has 3,243 GitHub stars. The repository holds 143 skills in this directory. The repository was last updated on October 10, 2026.
Source: rlaope/oh-my-hermes on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.