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.
Implement or fix one authorized unit with minimal edits and sufficient evidence.
$ npx skills add ReinaMacCredy/maestro --skill maestro-work -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install ReinaMacCredy/maestro maestro-work --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-work .claude/skills/maestro-work && 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-work" agent skill from https://github.com/ReinaMacCredy/maestro/tree/main/src/plugins/skills/maestro-work into .claude/skills/maestro-work/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "maestro-work", 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-workType 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-work -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install ReinaMacCredy/maestro maestro-work --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-work .agents/skills/maestro-work && 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-work" agent skill from https://github.com/ReinaMacCredy/maestro/tree/main/src/plugins/skills/maestro-work into .agents/skills/maestro-work/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "maestro-work", 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-work -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install ReinaMacCredy/maestro maestro-work --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-work .cursor/skills/maestro-work && 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-work" agent skill from https://github.com/ReinaMacCredy/maestro/tree/main/src/plugins/skills/maestro-work into .cursor/skills/maestro-work/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "maestro-work", 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-work--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-work -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install ReinaMacCredy/maestro maestro-work --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-work .gemini/skills/maestro-work && 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-work" agent skill from https://github.com/ReinaMacCredy/maestro/tree/main/src/plugins/skills/maestro-work into .gemini/skills/maestro-work/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "maestro-work", 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-workInstalls 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-work -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-work .github/skills/maestro-work && 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-work" agent skill from https://github.com/ReinaMacCredy/maestro/tree/main/src/plugins/skills/maestro-work into .github/skills/maestro-work/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "maestro-work", 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-work -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-work --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-work .opencode/skills/maestro-work && 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-work" agent skill from https://github.com/ReinaMacCredy/maestro/tree/main/src/plugins/skills/maestro-work into .opencode/skills/maestro-work/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "maestro-work", 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-workImplement or fix one authorized unit with minimal edits and sufficient evidence.
Maestro Work is an agent skill from ReinaMacCredy/maestro. Implement or fix one authorized unit with minimal edits and sufficient evidence. Reuse existing checks and add tests only for concrete uncovered behavior or risk.
Its SKILL.md is about 2.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 4 other files, including reference files (for example `references/conflict-handoff.md`, `references/tdd-antipatterns.md` and `references/worktree.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.
6 steps, taken from the first numbered list in SKILL.md.
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:
osascriptFrom 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 Work loads about 2.6k tokens when it runs, and up to ~4.3k if it reads all its reference files. Until then it costs about 44 tokens; SKILL.md has 1,329 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,329 words, ~2,584 tokens.
.claude/skills/maestro-work/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.<!-- maestro-skill-version: dev -->
Use for one accepted implementation unit. Keep the change inside the work item's acceptance and authority. Apply WORKFLOW.md for method rules; pause only the slice blocked by scope or authority.
Inspect the relevant source and existing checks, then apply
Tiers. Confirm the original implementation
request and accepted scope; for Full, read the matching SPEC. A newly found
in-scope test gap does not require a new design pass. A throwaway prototype
not approved to port remains maestro-explore's scope.
Before writing code, read any language-convention notes the user's setup provides for the language being edited. Repository conventions override them.
When work is handed to a lane (a Herdr pane in the room, or a sub-agent where no room exists), send this envelope:
Objective: <observable outcome>
Owned scope: <paths or responsibility>
Excluded scope: <explicit non-goals>
Mutation: <no-write | write-bounded: paths>
Stop condition: <done or blocked boundary>
Lane: scout | decision | delivery | challenge | shadow
Evidence required: <proof and layer>A tiny task may collapse the envelope to three lines, but it never drops
Excluded scope or Mutation.
scout reads and reports state, never writes.delivery may write and is the only lane that holds the lease.decision investigates, compares, and recommends without writing.challenge breaks the premise or candidate and returns findings only, with
no fixes or redesign.shadow runs beside the owner without writing and returns comparison
evidence that is never a candidate or a work write lease.No-write names the file boundary only. maestro dispatch accept and
maestro handback file are the lane's own two writes and are never in the
excluded scope, so a scout or shadow lane can still accept and return.
The canonical parallel shapes are delivery and challenge on the same scope,
or a council of decision lanes run by maestro-council.
Return this packet when the lane stops. maestro dispatch accept leaves the
dispatch claimed, not held, and maestro handback file refuses with
DISPATCH_UNCONFIRMED until the opener runs maestro dispatch confirm, so
ask for the confirm at acceptance rather than at the stop condition.
Status: <DONE | BLOCKED | UNTESTABLE | UNKNOWN | FAILED | CHALLENGE | REOPEN_REQUEST | DEPENDENCY_REQUEST | COUNCIL_REQUEST>
Claim: <what is now believed true>
Proof: <evidence with its layer named>
Assumptions not verified: <items or None>
Residual risks: <items or None>
Incidental findings: <items or None>Unknown is a valid result; it is never rounded up to PASS.
A peer that discovers a dependency stops the mutation that depends on the new
assumption and hands back DEPENDENCY_REQUEST with evidence and impact. The
Lead re-scopes the work. A never silently becomes A+B+C.
For repeated failures, apply
Recovery and verification.
Record the episode in one failed: work note, carrying:
Attempted: <approaches tried>
Invariant assumed: <belief shared by the attempts>
Exact failure: <literal evidence>
What changed between attempts: <delta>
What did not change: <stable conditions>
Smallest new information needed: <next fact that would change the approach>maestro work show <id>, maestro ready, relevant source,
tests, and repository instructions. Name the task-owned dirty paths before
editing.--acceptance "<observable result>" and --kind: feature, task,
bug, chore, implement are execution units; idea and research are
scope notes under a parent and never hold it open. A parentless item the
agent creates carries its why in the title or acceptance; a longer why is a
maestro work note <id> "why: <one paragraph>".maestro work start <id>. With policy-breakdown enabled it
refuses a parentless write-like item: pass --atomic-reason "<why this is one unit>" when it truly is one, otherwise maestro work add ... --parent <id> first and start the child - a parent with open children never starts.
Then the minimum source and test edits for that behavior. Reach for what the repo already uses first: a helper,
type, component, or installed dependency beats new code, and beats a
native platform feature the repo has an established equivalent for.
Minimum means the fewest concepts a maintainer meets at the seam, not the
fewest lines; a wrapper that hides behavior to shorten a diff is a new
concept, and the smallest change in the wrong layer is a second bug. A
bug fix lands once where every caller routes through. Lazy about the
solution, not about trust-boundary validation, error handling that
prevents data loss, security, or anything explicitly requested.sleep, osascript -e 'delay', or a poll
loop against its log. Review the diff against acceptance; confirm the test
could expose the defect.maestro work note <id> "failed: <one line>"; the lowercase failed:
prefix is what maestro attention counts. Otherwise note only a reusable
correction. Keep a checkpoint on the held item when state or the next
action meaningfully changes, and before any handoff:
maestro work note <id> "checkpoint:\nstate: <where it stands>\nnext: <concrete action>\navoid: <what not to repeat>".
Include the base, task-owned dirty paths, original authorization and
retained gates for a successor. Only the latest one counts; the brief prints it back after a
compaction, and maestro handoff renders it into NOTES.md.maestro work done <id> with --claim/--proof naming the
real falsifier (the check that would have failed if the claim were wrong).
In a bundle, run maestro handoff <bundle-id> before releasing the work
item: it renders NOTES.md from the store (work, decisions, handbacks,
failed: and checkpoint: notes, base commit); hand-edit only Authority
and whatever the store cannot derive, never the rendered sections.Use the shared Testing discipline for whether a test is needed. When writing one, prefer a stable consumer seam so internals stay free to change. Demonstrate that a plausible wrong implementation fails it, and derive expectations from the accepted behavior rather than current output.
Concrete smells and fixes: references/tdd-antipatterns.md.
maestro-diagnose steps)
is the first phase of this authorized fix, done here, not as a separate
engagement.maestro work note <id>, and
continue. If the answer contradicts a locked decision, stop and supersede
the decision first.| The thought | The reality |
|---|---|
| "The test is basically right - I'll adjust the assertion to match the output" | That documents the current bug as expected behavior. Assert from the decision's promise and fix the code. |
| "Another test would make this feel safer" | Name the wrong implementation existing checks miss first; duplicate confirmation is not additional evidence. |
| "The test doesn't compile - I'll create the missing symbol so it can run" | Check the accepted contract first; a test does not authorize new public behavior. |
| "While I'm here, this nearby code could use a cleanup" | Not in the acceptance means not in scope. Mention it; do not touch it. |
| "Skipping this failing test unblocks the suite" | A failing test is information. Fix the code or surface the conflict. |
| "All later design questions must be settled before I start" | Only unresolved choices blocking the next authorized slice stop that slice. |
| "The tier requires another test" | Tier determines record depth, not test count; use the shared Testing discipline. |
When the scope is done and the checks are green: Light closes with
maestro work done; a Full bundle routes to maestro-verify.
Isolated lanes and worktrees: references/worktree.md. Contested files or overlapping sessions: references/conflict-handoff.md.
© 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 3 other files (references) in src/plugins/skills/maestro-work of ReinaMacCredy/maestro.
Open the folder on GitHubat commit 2412403
Maestro Work 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 Work this skillReinaMacCredy/maestro | 233 | — | ~2.6k | 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
Turn filed lessons into the smallest doctrine edit. An agent skill from ReinaMacCredy/maestro.
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
Route work into the right maestro tier and drive the SPEC/NOTES/VERIFY bundle lifecycle - open, resume, close, recall.
Categories
Implement or fix one authorized unit with minimal edits and sufficient evidence. Maestro Work is an agent skill from ReinaMacCredy/maestro. Implement or fix one authorized unit with minimal edits and sufficient evidence.
Maestro Work fits situations like: tasks that involve Mobile testing and debugging.
Run `npx skills add ReinaMacCredy/maestro --skill maestro-work -a claude-code`. Or copy the skill folder (src/plugins/skills/maestro-work in ReinaMacCredy/maestro) into .claude/skills/maestro-work in your project. Claude Code loads it when a task matches its description.
Run `npx skills add ReinaMacCredy/maestro --skill maestro-work -a codex`. Or copy the skill folder (src/plugins/skills/maestro-work in ReinaMacCredy/maestro) into .agents/skills/maestro-work 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-work -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-work, .gemini/skills/maestro-work, .github/skills/maestro-work and .opencode/skills/maestro-work in your project.
Going by SKILL.md and its folder, Maestro Work needs the command-line tools its instructions call (osascript).
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 Work is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.6k tokens (SKILL.md is roughly 10k 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.7k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Maestro Work: 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.