Agent skill

Isolated Setup Doctor

by apache in apache/magpie

Probe the secure-agent setup for restrictions that block legitimate work — SSH agent reachability, port binding, containers, the scratch directory, the signing key, gh outside the sandbox, prek and…

Apache-2.0Auto-check: warningsDevOps & Cloud

Install Isolated Setup Doctor

The automated check flagged lines worth reading first. See the safety section below.

skills CLI
$ npx skills add apache/magpie --skill isolated-setup-doctor -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install apache/magpie isolated-setup-doctor --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/apache/magpie.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/magpie-setup/skills/isolated-setup-doctor .claude/skills/isolated-setup-doctor && rm -rf skills-src

Use ~/.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/

Facts

Skill name
isolated-setup-doctor
GitHub stars
110
Token cost
~6.1k tokens
SKILL.md length
2,965 words
Files
11 (incl. scripts)
Skills in repo
47
Repo updated
First seen
Licence
Apache-2.0

At a glance

Probe the secure-agent setup for restrictions that block legitimate work — SSH agent reachability, port binding, containers, the scratch directory, the signing key, gh outside the sandbox, prek and…

  • Works in 4 steps: Surface every fail in one report (do not… → For each fail, print the… → Suggest the user read the catalog… → …
  • DevOps & Cloud work in your project
  • SKILL.md covers Runtime routing (run before…, Golden rules, The 8 probes and After the report, plus 1 more section
  • Runs Shell scripts from its folder; calls bash, gh and git

What it does

Isolated Setup Doctor is an agent skill from apache/magpie. Probe the secure-agent setup for restrictions that block legitimate work — SSH agent reachability, port binding, containers, the scratch directory, the signing key, gh outside the sandbox, prek and uv inside it, the global git hook dir. Names the troubleshooting entry and settings fix for each. Read-only.

Its SKILL.md is about 6.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 11 other files, including scripts (for example `scripts/README.md`, `scripts/probe-1-ssh-agent.sh` and `scripts/probe-2-localhost-bind.sh`).

It sits in DevOps & Cloud. It works with Git. The repository describes itself as: Agent-assisted maintainership and development framework for Apache projects — Triage, Mentoring, Drafting (agent-authored fixes with human review), and Pairing (developer-side… The licence is Apache-2.0.

When your agent uses it

  • DevOps & Cloud work in your project

Example prompts

  • “/isolated-setup-doctor”

Requirements

  • A Bash shell
  • Docker

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. Surface every fail in one report (do not stop at the first).
  2. For each fail, print the troubleshooting-doc anchor link from the probe's On ✗ → remediation line above.
  3. Suggest the user read the catalog entry's symptom → root cause → fix, then apply the settings.json widening themselves.
  4. After the user has applied the widening (in a separate flow), re-run setup-isolated-setup-doctor to confirm the probe now passes.

What it can do on your machine

Read from SKILL.md and the folder at commit d1f8f2c. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Ships 10 files in scripts/ (Shell), which the agent can run.

    Shell commands in SKILL.md call:

    • bash
    • gh
    • git
    • podman
    • sh

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • github.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Isolated Setup Doctor loads about 6.1k tokens when it runs. Until then it costs about 84 tokens; SKILL.md has 2,965 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~84
When it runs · the whole SKILL.md, loaded when a task matches
~6.1k

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.

Safety

Auto-check: warnings

The automated check found patterns that need a careful read before installing.

  • WarningMentions a credentials file (SSH keys, cloud or package-manager tokens)SKILL.md:206
    Failure mode: the framework denies `~/.ssh/` wholesale, so with `gpg.format=ssh` every signed commit fails before the ha
  • WarningMentions a credentials file (SSH keys, cloud or package-manager tokens)SKILL.md:221
    inside sandbox` | Fail | The sandbox's `~/.ssh/` read deny covers the public key; add that one file to `allowRead`. |

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); the scripts in this folder are not scanned.

SKILL.md

The full file from apache/magpie at commit d1f8f2c, republished under its Apache-2.0 licence (© apache). 2,965 words, ~6,109 tokens.

Download SKILL.mdSave it as .claude/skills/isolated-setup-doctor/SKILL.md (or your agent's skills folder). This skill also uses 10 other files; get the full folder from GitHub.
name
isolated-setup-doctor
description
Probe the secure-agent setup for restrictions that block legitimate work — SSH agent reachability, port binding, containers, the scratch directory, the signing key, `gh` outside the sandbox, `prek` and `uv` inside it, the global git hook dir. Names the troubleshooting entry and settings fix for each. Read-only.
family
setup
mode
Meta
when_to_use
When the user says "doctor my sandbox", "why is the sandbox blocking X", or reports a failure that smells sandbox-shaped — agent unreachable, socket errors…
capability
capability:platform, capability:reassess
surface_hash
sha256:7d670b572d43bbeb
license
Apache-2.0
measured_tokens
6064
<!-- Placeholder convention (see AGENTS.md#placeholder-convention-used-in-skill-files):
     <project-config> → adopting project's `.apache-magpie/` directory -->

setup-isolated-setup-doctor

Runtime routing (run before the Claude-specific probes)

Use the operator's explicitly requested runtime when supplied; otherwise use the active session's runtime. An installed executable or configuration directory alone does not select a runtime. For the routing below, treat that selection as the active harness.

When the active harness is Codex, first require the static verification in docs/adapters/codex.md, then run the shared live environment probes inside the active Codex sandbox. Attribute failures separately to native sandbox/network denial, approval policy, or the POSIX agent-iso layer. Do not prescribe a .claude settings change for a Codex failure. Then stop before the Claude-specific branch below.

When the selected runtime is Gemini CLI, follow docs/adapters/gemini.md: verify the profile first, then diagnose the actual tool result in the active Gemini session. Distinguish policy refusal, sandbox expansion, hook or trust failures, and wrapper or authentication problems. Do not require Claude configuration or prescribe Claude settings changes; then stop before the Claude-specific probes below.

When the harness is Claude Code, continue below. If the harness cannot be determined, ask once.

This is the diagnostic layer over the secure agent setup. verify checks statically that the setup is installed right, catching drift and missing pieces. This skill checks whether common workflows are functionally blocked by the sandbox as configured, catching over-restrictive allowlists. (install puts the setup in place; update reports framework drift.)

Run verify first when the install itself is in doubt: fresh machine, recent upgrade, sandbox-state surprise. Run doctor when the install is known good and a workflow fails in a sandbox-shaped way: agent unreachable, socket error, port permission error.

Every probe maps to a numbered entry in docs/setup/sandbox-troubleshooting.md. The doctor identifies which entry applies now; it does not re-explain the remediation. If a fail shows a failure mode not catalogued there, propose appending a new entry per the catalog's Adding a new entry section.

Golden rules

  • Read-only. Each probe is a small, deterministic, side-effect-free check. The skill never edits a settings file, never runs a command with dangerouslyDisableSandbox, and never installs anything. If a check fails, surface it and point at the catalog entry; do not auto-fix.
  • Run every probe, even on early failure. Do not stop at the first ✗. A user may have one of eight independent restrictions or all eight, and finding them one re-run at a time is annoying.
  • Distinguish ✗ (failing) from ⊘ (not applicable). ✗ means the probe ran and the sandbox blocked it. ⊘ means the probe was skipped because a prerequisite is absent (e.g. no docker / podman on PATH → docker probe ⊘, not ✗).
  • Surface evidence. Each report line names the probe command, the exit code, and the relevant stderr snippet. "Looks blocked" is not useful; "ssh-add -l → rc=2 → Could not open a connection to your authentication agent" is.
  • Map each ✗ to a catalog entry. The fail report links directly to the matching section of docs/setup/sandbox-troubleshooting.md. Do not paraphrase the remediation; the catalog is the single source of truth.

The 8 probes

The probes cover the catalog's failure modes that a sandboxed command can detect on its own; the signing entries that need a live touch or a terminal are verified by setup-isolated-setup-verify check 10 instead. New probes are added when new entries land in the catalog, so the two stay in lock-step.

Probe 1 — SSH agent / Yubikey reachable

Tests whether ssh-agent is reachable from inside the sandbox. Two failure modes: SSH_AUTH_SOCK passes through claude-iso's env whitelist but the socket file is not in sandbox.filesystem.allowRead, so the agent's ssh / git push subprocesses cannot even stat(2) it; or, on macOS, the file is readable but its path is missing from sandbox.network.allowUnixSockets, so connect(2) is denied and the agent looks unreachable while the socket is plainly there. A signed commit hits the second as No private key found for public key.

Command:

bash
bash <skill-dir>/scripts/probe-1-ssh-agent.sh

Interpretation:

ResultStatusMeaning
✓ N identities listedPassssh-add -l returned the key list.
✓ agent reachable, no identitiesPassssh-add -l returned rc=1 (the documented "no keys" exit).
✗ socket not stat-ableFailSandbox blocks stat(2) on the socket file.
✗ agent unreachableFailSandbox blocks connect(2) to the socket.
⊘ SSH_AUTH_SOCK not setSkipEither the user does not run ssh-agent, or claude-iso's env whitelist dropped it (separate bug — verify).

On ✗ → remediation: docs/setup/sandbox-troubleshooting.md — SSH agent / Yubikey appears unreachable from inside the sandbox.

Probe 2 — Localhost port bind

Tests whether a process inside the sandbox can bind to a loopback port AND then talk to itself over loopback. The catalog documents the second half failing (egress proxy blocks 127.0.0.1).

Command:

bash
bash <skill-dir>/scripts/probe-2-localhost-bind.sh

Interpretation:

ResultStatusMeaning
✓ bound + loopback GET → HTTP 200PassBoth bind and loopback HTTP work.
✗ bind: [Errno 1] Operation not permittedFailThe sandbox refuses listening sockets outright; sandbox.network.allowLocalBinding is unset. Fails before any egress rule is consulted, so allowedDomains changes do not help.
✗ bind: ... (other errno)FailThe sandbox blocks bind(2) on 127.0.0.1 for another reason. Rare; report the literal error.
✗ bind ok, loopback GET: ...FailBind works but the sandbox egress proxy refuses 127.0.0.1 as a destination. Common shape.

On ✗ → remediation: docs/setup/sandbox-troubleshooting.md — Test cannot bind to a localhost port.

Probe 3 — Podman / Docker through the container gateway

Tests whether the runtime CLI can talk to the container gateway, not the real daemon socket; the sandbox never gets a route to the daemon itself. Run it for each of podman / docker on PATH; ⊘ each one not installed (an absent prerequisite, not a sandbox failure). The remaining checks narrow down which of the three wiring pieces (env var, running gateway, allowed socket) is missing, in the order a fresh install would hit them.

Command:

bash
bash <skill-dir>/scripts/probe-3-container-gateway.sh

status_json comes from the gateway's own read-only status subcommand. The doctor may call it from inside the sandbox, since it neither binds a socket nor touches the daemon. gw_src picks the adopter's pinned snapshot (.apache-magpie/tools/container-gateway/src) when present, else the framework repo's own tree (tools/container-gateway/src), so the same probe runs in an adopter checkout and in this framework's own worktree. The gw_state check runs before the raw socket-file test. A backend that status does not list under serving never gets a socket file, so testing -S "$sock" first would misreport "gateway not running" for the "running, but this backend's machine/daemon is down" case. The -S test is a defensive fallback for an already-serving backend whose socket vanished mid-probe, not the primary check.

Interpretation:

ResultStatusMeaning
✓ <rt> reaches the container gateway at <sock>PassCLI → gateway → daemon all answer.
✗ … unset — gateway not wired into settingsFailThe reference env block is missing from project settings.
✗ gateway socket missingFailThe SessionStart hook did not start the gateway, or it exited; check container-gateway.log in the gateway's run directory — <project>/.apache-magpie-local/run/ when adopted, else <git-common-dir>/apache-magpie/run/<worktree-id>/.
✗ gateway running without a <rt> backendFailstatus reports the gateway up but serving does not list this CLI's backend — the Podman machine or Docker daemon behind it is not running. Start it from outside the sandbox, then restart the gateway.
✗ connect … deniedFailThe gateway socket is not in sandbox.network.allowUnixSockets.
✗ gateway up, backend downFailPodman machine / Docker not running on the host; start it from your own terminal.
✗ no response in 15s — <rt> info hungFail_probe_timeout killed a stalled <rt> info call; the backend daemon behind the gateway is likely wedged — restart it from outside the sandbox.
⊘ <rt> not on PATHSkipRuntime not installed; not a sandbox restriction.

An empty podman machine list from inside the sandbox is a read denial on the machine's directory, not proof that no machine exists. Decide the machine's real state from outside the sandbox, per the catalog entry below.

On ✗ → remediation: docs/setup/sandbox-troubleshooting.md — Docker / Podman command fails with a socket error.

Probe 4 — Per-project scratch directory (TMPDIR)

Tests whether the session has a writable scratch directory. The sandbox mounts the host /tmp read-only and makes only specific subpaths writable, so a session whose TMPDIR falls back to /tmp has no scratch area at all.

TMPDIR landing on the shared session root rather than a per-project directory is not a finding. Claude Code sets TMPDIR itself when it builds the sandbox, and that wins over env.TMPDIR from any settings file, so the shared root is expected and no configuration changes it. Each session still gets a per-project, per-session scratchpad beneath it.

Command:

bash
bash <skill-dir>/scripts/probe-4-scratch-dir.sh

Interpretation:

ResultStatusMeaning
✓ per-project + writablePassTMPDIR resolves under this project's path slug and accepts writes.
✓ writable; shared session rootPassThe expected value on current Claude Code. Every project on the machine shares this directory, so write through the per-session scratchpad beneath it, or use unique filenames — but there is nothing to fix.
✗ TMPDIR not setFailTooling falls back to /tmp, which is read-only inside the sandbox.
✗ directory missingFailTMPDIR names a path nothing has created yet.
✗ not writable inside sandboxFailTMPDIR points outside sandbox.filesystem.allowWrite.

On ✗ → remediation: docs/setup/sandbox-troubleshooting.md — Temp files fail with "Read-only file system" under /tmp.

Do not propose env.TMPDIR in a settings file as the fix. Claude Code overrides it when it builds the sandbox, so the setting is accepted and silently has no effect. The giveaway is a directory that exists, is named exactly as configured, and stays empty. The catalog entry above covers what is actually actionable.

Probe 5 — Signing key readable (gpg.format=ssh)

Tests whether the public key git hands to ssh-keygen -Y sign can be opened from inside the sandbox. Failure mode: the framework denies ~/.ssh/ wholesale, so with gpg.format=ssh every signed commit fails before the hardware key asks for a touch. The touch overlay, which waits for ssh-keygen to block, never sees it block.

Command:

bash
bash <skill-dir>/scripts/probe-5-signing-key.sh

Interpretation:

ResultStatusMeaning
✓ readable inside sandboxPassssh-keygen will be able to open the public key.
✓ literal keyPassuser.signingkey holds the key text itself; no file is involved.
✗ not readable inside sandboxFailThe sandbox's ~/.ssh/ read deny covers the public key; add that one file to allowRead.
⊘ gpg.format is not sshSkipSigning goes through gpg (or is off); the agent-socket rules behind Probe 1 are what matter.
⊘ user.signingkey unsetSkipMisconfigured signing, not a sandbox problem — mention it, do not fail the probe.
signing-program → ✓Passgit's signing program (the touch overlay's gpg-touch-wrap-* wrapper, or whatever gpg.ssh.program / gpg.program names) can be started from inside the sandbox. Nothing printed when neither key is set: git uses its default ssh-keygen / gpg from PATH.
signing-program → ✗FailThe program git is configured to sign with is read-denied inside the sandbox — for the overlay wrapper, ~/.claude/scripts/ is. Every sandboxed signed commit fails at once with cannot exec; add the wrapper's two files to allowRead.

On ✗ → remediation: docs/setup/sandbox-troubleshooting.md — Signed commit fails before any touch when git signs with ssh for the key, and docs/setup/sandbox-troubleshooting.md — Signed commit fails with "cannot exec" of the touch-overlay wrapper for the program.

Show full SKILL.md (1,197 more words)Show less
Probe 6 — gh runs outside the sandbox

Tests whether gh can reach GitHub from a sandboxed Bash call, and if not, whether the sandbox.excludedCommands: ["gh *"] exclusion the framework reference relies on is in place. On macOS a sandboxed gh cannot verify TLS or read the keychain (x509: OSStatus -26276 / HTTP 401), so only the exclusion makes it work. The exclusion applies only when every segment of a Bash invocation is cd … or gh ….

The probe deliberately runs gh through sh -c so the exclusion cannot apply to it, showing what an un-excluded gh does on this machine.

Command:

bash
bash <skill-dir>/scripts/probe-6-gh-outside-sandbox.sh

Interpretation:

ResultStatusMeaning
✓ gh works inside the sandboxPassPlatform lets gh verify TLS and read its token inside the sandbox (typical on Linux).
✓ … "gh *" is in excludedCommandsPassThe known macOS shape, and the framework's exclusion is present. Calls still fail if they are not cd/gh-only invocations — see the catalog entry.
✗ … NOT found in excludedCommandsFailgh cannot work inside the sandbox on this machine and nothing runs it outside.
⚠ gh failed for another reasonWarnNot the catalogued shape (network down, not logged in, …); inspect the message.
⚠ catch-all "Bash(gh *)" in permissions.askWarnAsk beats allow regardless of specificity, so this rule prompts on every read-only gh call. Replace it with the explicit write-subcommand list from the reference .claude/settings.json. Extra line, printed after the main result.
⊘ gh not on PATHSkipgh not installed; not a sandbox restriction.

~/.claude/settings.json is usually unreadable from inside the sandbox, so the exclusion check may see only the project-scope files. If the user keeps the exclusion at user scope, a ✗ here is a false alarm; say so when reporting.

Even with the exclusion present, a gh call is excluded only when every part of the Bash invocation is cd … or gh …. A pipe, a $(…) substitution, a loop, or any file redirection (> file, even > /dev/null) puts it back in the sandbox. The redirection case is a Claude Code regression tracked in anthropics/claude-code#95532; the catalog entry shows the gh tofile alias that works around it. When the user reports a gh failure this probe does not reproduce, ask for the exact command line; the shape is usually the answer.

On ✗ → remediation: docs/setup/sandbox-troubleshooting.md — gh fails with TLS OSStatus -26276 or HTTP 401 inside the sandbox.

Probe 7 — prek and uv usable inside the sandbox

Tests whether the dev tools the framework's hooks and Python tools run on are found and can write their cache from a sandboxed Bash call. They live in ~/.local/bin, which the harness reads only when the worktree's .claude/settings.local.json grants it; the committed project-scope entries are not applied. Inside the sandbox a read-denied directory looks exactly like an absent one, so the probe reads settings.local.json to tell a missing grant from a tool that is not installed.

Command:

bash
bash <skill-dir>/scripts/probe-7-dev-tools.sh

Interpretation:

ResultStatusMeaning
✓ (found: …; ~/.cache writable)Passprek / uv run inside the sandbox and can write their caches.
✗ (found: …; ~/.cache not writable …)FailThe tools start but cannot write their cache or state.
⚠ (… not found; ~/.local/bin is not in … settings.local.json)WarnThe grant is missing; the tools are most likely installed but hidden.
⊘ (… not found; ~/.local/bin is granted …)SkipThe grant is present and neither tool is installed there; not a sandbox restriction.

On ✗ or ⚠ → remediation: docs/setup/sandbox-troubleshooting.md — prek or uv not found, or cannot write its cache, inside the sandbox.

Probe 8 — Global git hook dir readable (whole-user scope)

Tests whether git run inside the sandbox can see the hooks a global core.hooksPath points at. Git treats a hook it cannot see as one that does not exist, so an unreadable hook dir costs every hook — pre-commit and prek included — without an error. Only a look from inside the sandbox shows it, which is where this probe runs.

Command:

bash
bash <skill-dir>/scripts/probe-8-git-hooks.sh

Interpretation:

ResultStatusMeaning
✓ (… readable; hooks visible: …)PassSandboxed git runs the listed hooks.
✗ (core.hooksPath … not readable inside sandbox …)FailThe hook dir is hidden; every sandboxed commit skips every hook.
✗ (… readable, but not the target of: …)FailThe dir is visible but a hook's symlink target is not — typically hooks symlinked from a sync repo the sandbox does not grant.
⚠ (… holds none of pre-commit, commit-msg, pre-push, post-checkout)Warncore.hooksPath is set to a dir with none of the common hooks; check it is the intended one.
⊘ (no global core.hooksPath …)SkipPer-project scope: hooks live in each repo's .git/hooks, inside the project root.

On ✗ → remediation: docs/setup/sandbox-troubleshooting.md — Git hooks silently skipped for commits made inside the sandbox.

Probe 9 — Working directories under the read block

Tests whether, with permissions.blockReadsOutsideWorkingDirectories on, the two directories the skills read on every run are working directories: $HOME/.claude/magpie (the fixed path the vetted-ops rules name) and the scratch root /tmp/claude-<uid>. Without them nothing breaks, but each read there prompts, and a bulk sync multiplies that by its gatherer agents. The prompt comes before any command runs, so the sandbox-error hint hook never sees it; this probe is the only in-session pointer.

Command:

bash
bash <skill-dir>/scripts/probe-9-working-dirs.sh

Interpretation:

ResultStatusMeaning
✓ … are working directoriesPassBoth resolved paths are listed (normally in .claude/settings.local.json, written by sandbox-add-project-root.sh).
⚠ not a working directory: …WarnEach named path is missing; reads under it prompt.
⚠ … the glob entry … is never matchedWarnA glob such as /tmp/claude-* is listed as a working directory but does not match; replace it with the resolved path.
⊘ … blockReadsOutsideWorkingDirectories is offSkipNo read block, so nothing prompts.
⊘ HOME is not setSkipThe paths cannot be resolved; nothing to compare.
⊘ … user-scope settings unreadable from the sandboxSkipThe entries are missing from the readable project files, but the read block is usually set in user scope, which the sandbox cannot read; setup-isolated-setup-verify check 15 reads it from outside the sandbox.

On ⚠ → remediation: docs/setup/sandbox-troubleshooting.md — Reads of ~/.claude/magpie or /tmp/claude-<uid> ask for approval every time.

After the report

If every probe is ✓ or ⊘:

All nine probes pass (or are not applicable). The sandbox is not currently blocking the known failure modes catalogued in docs/setup/sandbox-troubleshooting.md. If you hit a different sandbox-shaped failure, follow the catalog's Adding a new entry section and (optionally) extend this skill with another probe so future runs catch the same shape automatically.

If any probe is ✗:

  1. Surface every fail in one report (do not stop at the first).
  2. For each fail, print the troubleshooting-doc anchor link from the probe's On ✗ → remediation line above.
  3. Suggest the user read the catalog entry's symptom → root cause → fix, then apply the settings.json widening themselves. Do not propose to apply the widening from this skill; settings.json widenings are sandbox-bypass-adjacent and need an explicit user-driven edit.
  4. After the user has applied the widening (in a separate flow), re-run setup-isolated-setup-doctor to confirm the probe now passes.

If a probe surfaces a fail shape not catalogued in docs/setup/sandbox-troubleshooting.md:

  1. Report the fail with the literal probe command + exit code + stderr.
  2. Suggest the user add a new entry to the catalog per its Adding a new entry section (symptom verbatim, root cause, fix, notes).
  3. Once the catalog has the new entry, extend this skill with a matching probe in the same shape so the next doctor run catches it automatically.

Adding a probe

When the troubleshooting catalogue grows an entry, add a matching probe: scripts/README.md.

© apache, 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

Files

SKILL.md and 10 other files (scripts) in plugins/magpie-setup/skills/isolated-setup-doctor of apache/magpie.

  • SKILL.md
  • scripts/README.md
  • scripts/probe-1-ssh-agent.sh
  • scripts/probe-2-localhost-bind.sh
  • scripts/probe-3-container-gateway.sh
  • scripts/probe-4-scratch-dir.sh
  • scripts/probe-5-signing-key.sh
  • scripts/probe-6-gh-outside-sandbox.sh
  • scripts/probe-7-dev-tools.sh
  • scripts/probe-8-git-hooks.sh
  • scripts/probe-9-working-dirs.sh

Open the folder on GitHubat commit d1f8f2c

Compare with similar skills

Isolated Setup Doctor 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.

Isolated Setup Doctor compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Isolated Setup Doctor this skillapache/magpie110—~6.1kAutomated safety check: WarnApache-2.0
Repo Mirror Sourcesnetdata/netdata81k—~1.2kAutomated safety check: NotesGPL-3.0
CI Failure Triage and RepairChachamaru127/claude-code-harness3.2k1 repos~1.1kAutomated safety check: NotesMIT
Bfe Rd Workflowbfenetworks/bfe6.3k—~1.3kAutomated safety check: PassApache-2.0
Ssh Skillbadseal/ssh-skill535—~2.4kAutomated safety check: NotesNone
GreptimeDB Release RunbookGreptimeTeam/greptimedb6.7k—~1.4kAutomated safety check: PassApache-2.0

Similar skills

  • Repo Mirror Sources

    netdata/netdata

    Inspect Netdata-org source checkouts under NETDATAREPOSDIR, or set up and synchronize that mirror when requested.

    81k GitHub stars~1.2k tokensUpdated today
    DevOps & CloudAuto-check: notes
  • CI Failure Triage and Repair

    Chachamaru127/claude-code-harness

    Diagnoses failing CI pipelines and tests, deciding first whether the test or the implementation is at fault, and hands hard cases to a dedicated fixer subagent.

    3.2k GitHub starsUsed in 1 repo~1.1k tokens
    DevOps & CloudAuto-check: notes
  • Bfe Rd Workflow

    bfenetworks/bfe

    引导用户在 bfe 代码库中完成一次完整的功能研发流程,包括需求对齐、文档修改、代码实现、集成测试与回归验证. An agent skill from bfenetworks/bfe.

    6.3k GitHub stars~1.3k tokensUpdated 4 days ago
    DevOps & CloudAuto-check passed
  • Ssh Skill

    badseal/ssh-skill

    A skill your agent uses when a task requires SSH or SCP/SFTP behavior, a remote server, server alias/IP/hostname/user@host, bastion or jump-host access, remote command execution, upload/download…

    535 GitHub stars~2.4k tokensUpdated 1 mo ago
    DevOps & CloudAuto-check: notes
  • GreptimeDB Release Runbook

    GreptimeTeam/greptimedb

    Runbook for publishing a GreptimeDB version: pick the release branch, verify the Cargo version, then tag, create the GitHub release and open the docs note PR.

    6.7k GitHub stars~1.4k tokensUpdated 3 days ago
    DevOps & CloudAuto-check passed
  • Crabbox Quickstart

    openclaw/crabbox

    Gets you running your repository's tests in a disposable Docker or Podman container on your own machine with Crabbox, with no account and no cloud spend.

    1.5k GitHub stars~1.6k tokensUpdated yesterday
    DevOps & CloudAuto-check: notes

More from apache/magpie

All 47 skills in this repo
  • Archive Sweep

    apache/magpie

    Scan the release distribution area (dist/release/<project/ when releasedistbackend = svnpubsub, or the configured distribution location), identify releases past the project's retention rule, and…

    110 GitHub stars~4.7k tokensUpdated yesterday
    Auto-check passed
  • CI Runner Audit

    apache/magpie

    Read-only audit of GitHub Actions runner compatibility for one repository, a repository set, one Apache project, or the full Apache org.

    110 GitHub stars~2.4k tokensUpdated yesterday
    Auto-check passed
  • Keys Sync

    apache/magpie

    Add the Release Manager's public key to the project KEYS file: check it meets the ASF strength floor, draft the KEYS diff, and emit the svn (or backend) commands and keyserver reminder for the RM to…

    110 GitHub stars~4.9k tokensUpdated yesterday
    Auto-check passed
  • List Skills

    apache/magpie

    Print a human-readable index of every skill installed for this repository, grouped by the family each one declares, with the name to invoke it by and the first sentence of its description.

    110 GitHub stars~2.4k tokensUpdated yesterday
    Auto-check passed
  • Mentor

    apache/magpie

    Draft a teaching-register comment on a GitHub issue or PR thread on the configured <upstream repo, aimed at a contributor missing context the maintainer would spell out.

    110 GitHub stars~3.2k tokensUpdated yesterday
    Auto-check passed
  • Status

    apache/magpie

    Show how Magpie is adopted in this repo — install method and pin, drift, wired agent targets, installed skill families, symlink health — and change that wiring from the same view.

    110 GitHub stars~2.5k tokensUpdated yesterday
    Auto-check passed

Works with

Categories

Questions about Isolated Setup Doctor

What does Isolated Setup Doctor do?

Probe the secure-agent setup for restrictions that block legitimate work — SSH agent reachability, port binding, containers, the scratch directory, the signing key, gh outside the sandbox, prek and…. Isolated Setup Doctor is an agent skill from apache/magpie. Probe the secure-agent setup for restrictions that block legitimate work — SSH agent reachability, port binding, containers, the scratch directory, the signing key, gh outside the sandbox, prek and uv inside it, the global git hook dir.

When should I use Isolated Setup Doctor?

Isolated Setup Doctor fits situations like: devOps & Cloud work in your project.

How do I install Isolated Setup Doctor in Claude Code?

Run `npx skills add apache/magpie --skill isolated-setup-doctor -a claude-code`. Or copy the skill folder (plugins/magpie-setup/skills/isolated-setup-doctor in apache/magpie) into .claude/skills/isolated-setup-doctor in your project. Claude Code loads it when a task matches its description.

How do I install Isolated Setup Doctor in Codex?

Run `npx skills add apache/magpie --skill isolated-setup-doctor -a codex`. Or copy the skill folder (plugins/magpie-setup/skills/isolated-setup-doctor in apache/magpie) into .agents/skills/isolated-setup-doctor in your project. Codex loads it when a task matches its description.

Can I use Isolated Setup Doctor in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add apache/magpie --skill isolated-setup-doctor -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/isolated-setup-doctor, .gemini/skills/isolated-setup-doctor, .github/skills/isolated-setup-doctor and .opencode/skills/isolated-setup-doctor in your project.

What does Isolated Setup Doctor need to run?

Going by SKILL.md and its folder, Isolated Setup Doctor needs a shell for the scripts in its folder and the command-line tools its instructions call (bash, gh, git, podman and sh). Our summary lists: A Bash shell; Docker.

Does Isolated Setup Doctor access the network?

SKILL.md names 1 domain. As links in the text: github.com. This is read from the text; nothing was executed.

Is Isolated Setup Doctor safe to install?

Our automated static check of SKILL.md flagged 2 warning(s): mentions a credentials file (ssh keys, cloud or package-manager tokens). Read the flagged lines before installing; the check is not a guarantee either way. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Isolated Setup Doctor use?

Isolated Setup Doctor is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Isolated Setup Doctor use?

About 6.1k tokens (SKILL.md is roughly 24k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Isolated Setup Doctor?

Skills that share tags, products or a category with Isolated Setup Doctor: Repo Mirror Sources (netdata/netdata, 81k stars), CI Failure Triage and Repair (Chachamaru127/claude-code-harness, 3.2k stars), Bfe Rd Workflow (bfenetworks/bfe, 6.3k stars) and Ssh Skill (badseal/ssh-skill, 535 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Isolated Setup Doctor?

apache (a GitHub organization) maintains it in apache/magpie, which has 110 GitHub stars. The repository holds 47 skills in this directory. The repository was last updated on October 6, 2026.

Source: apache/magpie on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.