SOC 職業分類に基づく
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
直接コマンドでは確認用 Prompt が省略されます。実行前にソースを確認してください。
npx skills add https://github.com/CodySwannGT/lisa --skill maestro-mcp-setupコマンドは1行のまま表示されます。コピー前に横へスクロールして全体を確認してください。
ローカルで確認しますか?SkillsMP が現在取得できるファイルをダウンロードできます。
SKILL.md を表示中
This skill should be used for any non-trivial request — features, bugs, stories, epics, spikes, or multi-step tasks. It accepts a ticket URL (Jira, Linear, GitHub), a file path containing a spec, or a plain-text prompt. It assembles an agent team, breaks the work into structured tasks, and manages the full lifecycle from research through implementation, code review, deploy, and empirical verification.
any non-trivial request —…
This skill should be used for any non-trivial request — features, bugs, stories, epics, spikes, or multi-step tasks. It accepts a ticket URL (Jira, Linear, GitHub), a file path containing a spec, or a plain-text prompt. It assembles an agent team, breaks the work into structured tasks, and manages the full lifecycle from research through implementation, code review, deploy, and empirical verification.
| name | maestro-mcp-setup |
| description | Enable the Maestro CLI's… |
| allowed-tools | ["Bash","Read"] |
Wire the Maestro CLI's built-in MCP server (maestro mcp, STDIO) into the
current coding agent for this machine only, in a way that actually works.
The Maestro MCP server is intentionally NOT in the distributed plugin
.mcp.json. A static, committed entry always attempts to spawn, and coding
agents spawn stdio servers with a non-login PATH. So an always-on entry
fails visibly — Claude Code shows Failed to reconnect … -32000 every
session — on any machine missing the Maestro CLI or a resolvable Java
runtime, which is most of a typical fleet (CI runners, unattended QA/intake
agent boxes). That exact regression shipped once (expo plugin commit b12d5d3)
and was reverted (b1f3efd).
This skill fixes both failure modes without poisoning the fleet:
command
path plus injected JAVA_HOME / PATH env, so the server finds Java
regardless of the spawn's inherited PATH.Registration is always --scope local (per-machine, uncommitted). Never use
--scope project / a committed .mcp.json entry — that is the always-on form
that reds out every other machine.
MAESTRO_BIN="$(command -v maestro || true)"
[ -z "$MAESTRO_BIN" ] && [ -x "$HOME/.maestro/bin/maestro" ] && MAESTRO_BIN="$HOME/.maestro/bin/maestro"
echo "maestro: ${MAESTRO_BIN:-NOT FOUND}"
If not found, install it (official installer — confirm with the user first,
since it writes to ~/.maestro):
curl -fsSL "https://get.maestro.mobile.dev" | bash
MAESTRO_BIN="$HOME/.maestro/bin/maestro"
Resolve to an absolute path — a bare maestro in the registration relies on
the very PATH that is missing at spawn time.
Maestro needs a JDK (8+). Resolve JAVA_HOME honoring the project's version
manager — do not install a parallel global JDK when one is already managed:
# Prefer an already-active/managed Java before installing anything. Covers the
# common version managers (mise, asdf, SDKMAN) plus an ambient install.
if command -v mise >/dev/null 2>&1 && mise which java >/dev/null 2>&1; then
JAVA_BIN="$(mise which java)"
elif command -v asdf >/dev/null 2>&1 && asdf which java >/dev/null 2>&1; then
JAVA_BIN="$(asdf which java)"
elif [ -x "${SDKMAN_DIR:-$HOME/.sdkman}/candidates/java/current/bin/java" ]; then
# SDKMAN's `sdk` is a shell function absent in non-login shells; use its stable
# `candidates/java/current` symlink directly instead.
JAVA_BIN="${SDKMAN_DIR:-$HOME/.sdkman}/candidates/java/current/bin/java"
elif command -v java >/dev/null 2>&1; then
JAVA_BIN="$(command -v java)"
fi
echo "java: ${JAVA_BIN:-NOT FOUND}"
# Derive JAVA_HOME by asking the JVM itself — NOT `dirname "$JAVA_BIN"/..`, which
# is wrong when `java` is a mise/asdf shim or a symlink whose parent is not a JDK
# root. Fall back to the bin/.. parent only if the JVM query yields nothing usable.
if [ -n "$JAVA_BIN" ]; then
JAVA_HOME="$("$JAVA_BIN" -XshowSettings:properties -version 2>&1 \
| sed -n 's/^[[:space:]]*java\.home = //p' | head -n 1)"
{ [ -z ] || [ ! -x ]; } &&
JAVA_HOME=
If no Java is found: install through the project's version manager when present
(mise use -g java@21, asdf install java …, or sdk install java), or guide
the user to install a JDK. Prefer the managed path; only fall back to a global
install with explicit consent. Re-resolve JAVA_HOME afterward.
Build a PATH that puts the Maestro and Java bin dirs first, then register for
the current coding agent. $JAVA_BIN/$MAESTRO_BIN are absolute.
Claude Code:
# Refuse to register a broken server — both toolchain paths must resolve and be
# executable, or `claude mcp add` would create the exact -32000 entry this skill
# exists to avoid.
[ -n "$MAESTRO_BIN" ] && [ -x "$MAESTRO_BIN" ] || { echo "Maestro CLI unresolved — abort"; exit 1; }
[ -n "$JAVA_HOME" ] && [ -x "$JAVA_HOME/bin/java" ] || { echo "Java runtime unresolved — abort"; exit 1; }
# Use the real JDK bin (from JAVA_HOME), not the shim dir, on PATH.
JBIN_DIR="$JAVA_HOME/bin"; MBIN_DIR="$(dirname "$MAESTRO_BIN")"
claude mcp add --scope local maestro \
--env "JAVA_HOME=$JAVA_HOME" \
--env "PATH=$JBIN_DIR:$MBIN_DIR:$PATH" \
-- "$MAESTRO_BIN" mcp
Parity — same intent on other harnesses (local/per-machine scope, absolute
command, injected JAVA_HOME/PATH); translate the registration verb only:
codex mcp add maestro --env JAVA_HOME=… --env PATH=… -- "$MAESTRO_BIN" mcp (writes ~/.codex/config.toml; keep it out of the committed project config).~/.cursor/mcp.json (not the project .cursor/mcp.json) with command, args: ["mcp"], and env: { JAVA_HOME, PATH }.~/.config/opencode/opencode.json) mcp block with the absolute command and environment.env; Copilot uses type: "local" for stdio servers.In every case: local/user scope, never the committed project file.
claude mcp list # or the harness equivalent
Confirm maestro shows connected. If it still fails, the usual cause is
JAVA_HOME pointing at a JRE without bin/java, or a Maestro path that moved —
re-resolve both and re-register. Do not "fix" it by dropping to a bare
maestro mcp command; that reintroduces the PATH-less failure.
--scope project or editing
a committed .mcp.json, stop — that is the reverted fleet-wide regression.