doctor

doctor is a command for coding agents from Lykhoyda/rn-dev-agent. It costs 68 tokens per session (1,545 once invoked), scanned A, original, MIT.

A diagnostic command that checks whether the tools and devices needed for React Native development and testing are installed and connected. React Native is a framework for building mobile apps with JavaScript and native components.

In plain words
What is it for?
Use it to inspect iOS and Android testing prerequisites, device connections, development-server status, plugin freshness, and related environment settings.
Why use it?
It identifies missing or outdated pieces—such as Node.js, device runners, simulators, emulators, Metro, CDP, or helper tools—without changing the project.

Command

Part of the rn-dev-agent plugin — 11 skills, 16 commands, 5 agents, 6 hooks shipped together

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add commands/lykhoyda/rn-dev-agent/doctor
Clone the repo
git clone --depth 1 https://github.com/Lykhoyda/rn-dev-agent

Or install rn-dev-agent, the plugin that ships this one along with the rest of its 11 skills, 16 commands, 5 agents, 6 hooks.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for doctor

README.md
[![agentmods](https://agentmods.dev/badge/commands/lykhoyda/rn-dev-agent/doctor.svg)](https://agentmods.dev/commands/lykhoyda/rn-dev-agent/doctor)
Your own site
<a href="https://agentmods.dev/commands/lykhoyda/rn-dev-agent/doctor"><img src="https://agentmods.dev/badge/commands/lykhoyda/rn-dev-agent/doctor.svg" alt="Measured on agentmods" height="20"></a>
Per session 68 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 1,545 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00068 $0.01545
Opus 5 $0.00034 $0.00772
Sonnet 5 $0.00014 $0.00309
Haiku 4.5 $0.00007 $0.00154

Measured 3d ago against content hash 16c6d47a02b1, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

doctor scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 3d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

packages/claude-plugin/commands/doctor.md · 69 lines

How it starts

The opening of the file, as written. The whole thing — 69 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Run the environment-diagnostic checklist from the rn-setup skill. Walk all 17 prerequisite checks (Node.js version, CDP bridge dependencies, rn-fast-runner build (iOS), rn-android-runner build/install (Android), maestro-runner, iOS simulator, Android emulator, Metro dev server, CDP connection, injected __RN_AGENT helpers, ffmpeg, idb (screen-mirror fast path), physical-device prerequisites, plugin version freshness, Vercel rules sync freshness, CDP auto-reconnect mode, linked-worktree action inheritance) and surface install commands for any missing dependencies.

iOS device automation is owned by the in-tree rn-fast-runner XCTest project (D1219, PR #164); Android device automation is owned by the in-tree rn-android-runner (UiAutomator instrumentation). These in-tree runners are the sole device backend — there is no external CLI to install. Mark rn-android-runner as N/A on iOS-only setups and rn-fast-runner as N/A on Android-only / non-macOS setups. If a device tool fails with RUNNER_PROTOCOL_MISMATCH, the installed/prebuilt runner artifact predates the plugin's wire protocol: on iOS delete packages/rn-fast-runner/build/DerivedData and re-open the device session (or re-run xcodebuild build-for-testing); on Android re-run ./gradlew :app:assembleDebug :app:assembleDebugAndroidTest and adb install -r both APKs.

This command is read-only. It diagnoses the current environment and recommends fixes. It does NOT modify any files in the user's project, inject documentation, or instrument source code.

Present results as a 17-row table. Follow the detailed probes and remediation rules in rn-setup; do not infer runner provenance, helper availability, or auto-reconnect configuration from passive cdp_status.

For iOS replay compatibility, also run the packaged maestro-runner-pin.js diagnose --json report. State the proof-domain split: exact React testIDs use react-tree; native/system selectors use xctest-native. A runtime-version heuristic is diagnostic context only and never proof of blindness. Report NATIVE_SURFACE_BLIND only when the replay includes the bounded same-screen native-selector evidence; otherwise preserve the ordinary selector miss. The supported next action is the central native WDA smoke on a WDA-healthy runtime.

For linked-worktree action inheritance, resolve the RN app root and run the packaged worktree-inheritance.js plan --host claude --app-root <app> --json. Report .rn-agent/actions as tracked, inherited, missing, explicit-legacy-repair-needed, unsafe, or refused. Also report hook status. Never apply, repair, install a hook, print a private source path, or inspect an action body from doctor.

For idb, require both a healthy idb --help and idb_companion; an active install PID is INSTALLING. A client on PATH whose idb --help fails is BROKEN, not MISSING — report it as installed but not responding, naming the Python 3.14 interpreter incompatibility as the probable cause rather than a certainty (the probe cannot separate a crash from a timeout or EACCES), and give the pinned repair command, never a bare pipx install fb-idb. On a machine with no supported interpreter, prefix that command with brew install [email protected] &&. Otherwise report MISSING and the documented install command. This row is YELLOW because mirroring has a screenshot fallback.

For runner provenance, inspect the runner artifact/state metadata documented by rn-setup. For helpers, use a narrow gated CDP read. For CDP auto-reconnect, resolve RN_CDP_AUTOCONNECT over .rn-agent/config.json, then the default.

For plugin-version or Vercel-rule drift, report the documented command but do not execute it. Offline version checks do not fail the plugin.

For session-authority health, run the packaged read-only probe from the RN app root: node "${CLAUDE_PLUGIN_ROOT:-${RN_DEV_AGENT_CODEX_PLUGIN_ROOT:-${CODEX_PLUGIN_ROOT:?set it to the installed rn-dev-agent plugin root, then re-run}}}/rn-dev-agent-core/dist/session-doctor.js" report --json. The report is three-state: GREEN when sameRootOwner is absent and wedged and repairable are both false, YELLOW when repairable is true (a proven-dead owner of this exact root, which the next transport start or the repair command releases on its own) or sameRootOwner is live (another session holds this worktree right now — report its ownerSession and ownerAppRoot instead of GREEN; it is never released and clears when that session closes), and RED when wedged is true. On RED, name the exact cause it returns rather than a generic stale-lock story: sameRootOwner: unprovable (the recorded owner's process identity cannot be read, so it is conservatively treated as live), startupCleanupBlocked (the owner is proven dead but an obligation such as RUNNER_ADOPTION_REQUIRED could not be discharged), or ownerIsThisRoot: false, whose ownerMismatch says which: app-root (a proven-dead owner of a different app root in this worktree) or source-identity (the same app root under different declared manifests). Also report abandonedContenders when it is non-zero. The supported repair is node "${CLAUDE_PLUGIN_ROOT:-${RN_DEV_AGENT_CODEX_PLUGIN_ROOT:-${CODEX_PLUGIN_ROOT:?set it to the installed rn-dev-agent plugin root, then re-run}}}/rn-dev-agent-core/dist/session-doctor.js" repair, which runs the same proven-dead startup cleanup a fresh transport runs; print it for the user to run, but do not execute it from doctor. Print it rooted where it can succeed: for ownerMismatch: app-root that is the reported ownerAppRoot, because repair from the current root can never release another root's owner. For ownerMismatch: source-identity do not re-root it — the payload's own remedy names the declared-manifest restore that makes this root's repair work. It never releases a live or unprovable owner and there is no force-steal — do not suggest deleting or moving files in the authority store. Not every stale lock self-heals: only a proven-dead owner does.

Read the full file on GitHub · 69 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 3d ago First seen · 69 lines · 68 tokens per session scan A 16c6d47a02b1

Subscribe to this mod's changes

doctor is a command published in the GitHub repository Lykhoyda/rn-dev-agent (11 stars, last pushed 3d ago), licensed MIT. It adds 68 tokens to every session and 1,545 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.