Phone Harness
ShawnPana/phone-harness
Control the user's phone - an iPhone through the Mac's iPhone Mirroring window, an Android over adb, a rented cloud Android, or a cloud iPhone over HTTPS: open apps, tap, type, swipe, read the screen.
Turn filed lessons into the smallest doctrine edit. An agent skill from ReinaMacCredy/maestro.
$ npx skills add ReinaMacCredy/maestro --skill maestro-improve -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install ReinaMacCredy/maestro maestro-improve --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/ReinaMacCredy/maestro.git skills-src && mkdir -p .claude/skills && cp -r skills-src/src/plugins/skills/maestro-improve .claude/skills/maestro-improve && 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 "maestro-improve" agent skill from https://github.com/ReinaMacCredy/maestro/tree/main/src/plugins/skills/maestro-improve into .claude/skills/maestro-improve/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "maestro-improve", 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/ReinaMacCredy/maestro/tree/main/src/plugins/skills/maestro-improveType 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 ReinaMacCredy/maestro --skill maestro-improve -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install ReinaMacCredy/maestro maestro-improve --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ReinaMacCredy/maestro.git skills-src && mkdir -p .agents/skills && cp -r skills-src/src/plugins/skills/maestro-improve .agents/skills/maestro-improve && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "maestro-improve" agent skill from https://github.com/ReinaMacCredy/maestro/tree/main/src/plugins/skills/maestro-improve into .agents/skills/maestro-improve/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "maestro-improve", 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 ReinaMacCredy/maestro --skill maestro-improve -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install ReinaMacCredy/maestro maestro-improve --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ReinaMacCredy/maestro.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/src/plugins/skills/maestro-improve .cursor/skills/maestro-improve && 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 "maestro-improve" agent skill from https://github.com/ReinaMacCredy/maestro/tree/main/src/plugins/skills/maestro-improve into .cursor/skills/maestro-improve/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "maestro-improve", 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/ReinaMacCredy/maestro.git --path src/plugins/skills/maestro-improve--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 ReinaMacCredy/maestro --skill maestro-improve -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install ReinaMacCredy/maestro maestro-improve --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ReinaMacCredy/maestro.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/src/plugins/skills/maestro-improve .gemini/skills/maestro-improve && 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 "maestro-improve" agent skill from https://github.com/ReinaMacCredy/maestro/tree/main/src/plugins/skills/maestro-improve into .gemini/skills/maestro-improve/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "maestro-improve", 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 ReinaMacCredy/maestro maestro-improveInstalls 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 ReinaMacCredy/maestro --skill maestro-improve -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/ReinaMacCredy/maestro.git skills-src && mkdir -p .github/skills && cp -r skills-src/src/plugins/skills/maestro-improve .github/skills/maestro-improve && 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 "maestro-improve" agent skill from https://github.com/ReinaMacCredy/maestro/tree/main/src/plugins/skills/maestro-improve into .github/skills/maestro-improve/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "maestro-improve", 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 ReinaMacCredy/maestro --skill maestro-improve -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install ReinaMacCredy/maestro maestro-improve --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ReinaMacCredy/maestro.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/src/plugins/skills/maestro-improve .opencode/skills/maestro-improve && 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 "maestro-improve" agent skill from https://github.com/ReinaMacCredy/maestro/tree/main/src/plugins/skills/maestro-improve into .opencode/skills/maestro-improve/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "maestro-improve", 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.
maestro-improveTurn filed lessons into the smallest doctrine edit. An agent skill from ReinaMacCredy/maestro.
Maestro Improve is an agent skill from ReinaMacCredy/maestro. Turn filed lessons into the smallest doctrine edit. Use when a Lead assigns improvement work for one target: group pending lessons, make one evidence-linked commit per target, return it for independent challenge, and process each accepted or rejected lesson without deleting history.
Its SKILL.md is about 1.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/targets.md`).
It sits in Mobile, covering Mobile testing and debugging. The repository describes itself as: Local-first coordination for human and agent work: durable work, decisions, dispatches, evidence, and prompt-first methods, powered by TypeScript and Bun. The licence is MIT.
Read from SKILL.md and the folder at commit 2412403. 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:
bunFrom 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.
Maestro Improve loads about 1.9k tokens when it runs, and up to ~2.4k if it reads all its reference files. Until then it costs about 75 tokens; SKILL.md has 1,128 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 ReinaMacCredy/maestro at commit 2412403, republished under its MIT licence (© ReinaMacCredy). 1,128 words, ~1,894 tokens.
.claude/skills/maestro-improve/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.<!-- maestro-skill-version: dev -->
Use when a Lead assigns improvement work on one target to a Peer. The target is the only parameter; a separate Peer challenges the returned candidate before acceptance.
A correction that stays in a transcript is spent when that session ends. The lesson record is what survives, and doctrine is the only thing a future session actually reads. This skill is the one place the two are joined: it turns filed corrections into the smallest edit that would have prevented them.
The target names the doctrine a lesson corrects: a recipe section, the SLP
Workspace Pack in src/plugins/resources/SLP.md, a Hub template, a
skills/maestro-* file, or a repository's Workspace Protocol. Where each one
lives, and what an edit to it costs, is in
references/targets.md.
maestro lesson list --project <project> # pending only, by design
maestro lesson show <id> # the gap, the expectation, the whymaestro lesson process <id> --commit <sha>The improver never deletes a lesson and never edits one. Processing is a pointer, so the record of what was corrected stays readable after the doctrine it corrected has changed again.
A lesson whose hazard is mechanical is not answered by a sentence. Where the hazard has a mechanical form available - a helper that removes the unsafe shape, a refusal, a check that fails - the edit is that mechanism, and the return names which mechanism now makes the recurrence impossible rather than which sentence now warns about it. Where none is possible, say so in the return. A described remedy fails invisibly until it recurs, and its recurrence reads as carelessness, which tends to produce a second warning rather than a mechanism (l26, the recurrence of l8).
A lesson can be wrong: the rule already covers it, the correction misread it, or two lessons disagree and only one survives. Answer it where it lives and mark it processed in the same command:
maestro lesson process <id> --answer "<why this produced no edit>"The answer is for whoever filed it. "Out of scope" is not an answer; name the text that already covers it, or the reading that was wrong.
Doctrine has golden scenarios: a script of maestro commands and the transcript
it produced. In this repository they are tests/scenarios/<name>.script and
<name>.golden, replayed by bun test tests/scenario-golden.test.ts.
Run the replay after every edit. An edit is accepted only when it still matches the golden set, or matches the change a lesson explicitly expected.
The replay is necessary and never sufficient, because most doctrine output is exercised by no scenario at all. Choose the rest of the per-edit gate by the output the edit changes, not by the file it changed: grep the whole test tree for the string you are changing, and run every suite that asserts it. A grep finds a test that quotes your string; it cannot find a property lint that walks a corpus - every recipe, every profile, every skill - and asserts a shape over all of it, because such a lint names no string of yours. So also run the suite that owns the corpus the edited file belongs to. An improver that runs the replay plus the test file nearest the edit is holding an instrument that passes exactly where nobody would look, and the full suite at the end is where that shows up - as reds its own edits caused (l5, w730/w731).
A replay that drifts in a way no lesson asked for is a regression in the
doctrine, not an improvement, and it goes back before the work return. When a
lesson did ask for the change, re-record with MAESTRO_GOLDEN_UPDATE=1 bun test tests/scenario-golden.test.ts and put the new golden in the same commit, so the
diff shows the behaviour that changed next to the sentence that changed it.
A doctrine edit no scenario covers is an edit nothing can falsify: add the scenario in the same commit rather than leaving the rule unwatched.
Reading a pile of corrections is the best moment to notice one nobody filed.
File it (maestro lesson file) rather than folding it silently into an edit:
the next improver run needs the same evidence trail this one had. Name the
anti-pattern it shows when one of the eight in ~/maestro/ANTI_PATTERN.md
fits, in the lesson's own words: the vocabulary is for collecting corrections
that rhyme, never a gate.
Return the bounded candidate through the normal SLP work operation:
maestro work return <work-id> "candidate: <branch and commits>; lessons: <ids and stores>; proof: <replay>; residual risk: independent challenge pending"Name every lesson processed, answered, or left pending in the return body. A lesson in another store is processed by that store's holder after acceptance; do not mutate it from the wrong project. The Lead assigns a separate challenge Peer, reconciles the two returns, and accepts only after the challenge and replay support the candidate. Improving doctrine and approving it alone is the loop this separation exists to break.
| The thought | The reality |
|---|---|
| "While I am in this file I will also tidy..." | Every changed line traces to a lesson, or the challenge Peer cannot tell an edit from an opinion. |
| "These five lessons all point at the same mess; I will rewrite the section" | A rewrite loses the reading that was ambiguous. Fix the ambiguity, keep the section. |
| "This lesson is wrong, I will just leave it pending" | Pending means unread. Answer it and mark it processed, so it stops counting toward the next threshold. |
| "The scenarios changed because my edit is better" | An unrequested replay drift is a regression until a lesson says otherwise. |
| "I will land the branch since it is obviously right" | The challenge Peer and reviewer boundary are the point; a self-approved doctrine edit is one model marking its own work. |
© ReinaMacCredy, 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 src/plugins/skills/maestro-improve of ReinaMacCredy/maestro.
Open the folder on GitHubat commit 2412403
Maestro Improve 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 |
|---|---|---|---|---|---|---|
| Maestro Improve this skillReinaMacCredy/maestro | 233 | — | ~1.9k | Automated safety check: Pass | MIT | |
| Phone HarnessShawnPana/phone-harness | 3.2k | — | ~7.7k | 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 | |
| Androidyang1ming/android-harness | 176 | — | ~259 | 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, a rented cloud Android, or a cloud iPhone over HTTPS: 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…
yang1ming/android-harness
Direct Android device control through ADB. An agent skill from yang1ming/android-harness.
haumacher/phoneblock
Decode and analyze an ESP32 dongle crash report (uploaded .coredump).
ReinaMacCredy/maestro
Lead-only council for a hard-to-reverse fork - a neutral brief, sealed independent seats, one premise verifier on unanimity, bounded verifiers, one cross-examination round, a draft-verdict audit…
ReinaMacCredy/maestro
Resolve material unknowns blocking the next authorized slice, using research, grilling, prototypes, models, or wayfinding.
ReinaMacCredy/maestro
Drive a pre-known multi-agent path as a maestro graph - run it by name or from a file you just wrote, pull each agent node with graph next, spawn it as a sub-agent under its maestro-<profile…
ReinaMacCredy/maestro
Verify and close - cross-check coverage, run the VERIFY table, deliver the verdict, harvest durable lessons into decisions, close the bundle, and never claim remote state from local evidence.
ReinaMacCredy/maestro
Implement or fix one authorized unit with minimal edits and sufficient evidence.
ReinaMacCredy/maestro
Route work into the right maestro tier and drive the SPEC/NOTES/VERIFY bundle lifecycle - open, resume, close, recall.
Categories
Turn filed lessons into the smallest doctrine edit. An agent skill from ReinaMacCredy/maestro. Maestro Improve is an agent skill from ReinaMacCredy/maestro. Turn filed lessons into the smallest doctrine edit.
Maestro Improve fits situations like: A Lead assigns improvement work for one target: group pending lessons; make one evidence-linked commit per target; return it for independent challenge; process each accepted.
Run `npx skills add ReinaMacCredy/maestro --skill maestro-improve -a claude-code`. Or copy the skill folder (src/plugins/skills/maestro-improve in ReinaMacCredy/maestro) into .claude/skills/maestro-improve in your project. Claude Code loads it when a task matches its description.
Run `npx skills add ReinaMacCredy/maestro --skill maestro-improve -a codex`. Or copy the skill folder (src/plugins/skills/maestro-improve in ReinaMacCredy/maestro) into .agents/skills/maestro-improve 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 ReinaMacCredy/maestro --skill maestro-improve -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/maestro-improve, .gemini/skills/maestro-improve, .github/skills/maestro-improve and .opencode/skills/maestro-improve in your project.
Going by SKILL.md and its folder, Maestro Improve needs the command-line tools its instructions call (bun).
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.
Maestro Improve is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.9k tokens (SKILL.md is roughly 7.6k 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 470 tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Maestro Improve: 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.
ReinaMacCredy (a GitHub user) maintains it in ReinaMacCredy/maestro, which has 233 GitHub stars. The repository holds 11 skills in this directory. The repository was last updated on September 28, 2026.
Source: ReinaMacCredy/maestro on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.