agent-browser doctor — before vs. after (issue #1559)

Replaces /ork:doctor's fuzzy "is binary on PATH + symlink present" probe with the structured agent-browser doctor --json from agent-browser 0.26+. Pick a scenario to see how doctor responds in each.

Before #1559

$ /ork:doctor --category=external
External Dependencies:
- agent-browser: installed (OK)
# 1 line, no version, no daemon, no chrome, no net

After #1559

$ /ork:doctor --category=external
External Dependencies:
agent-browser: OK (chrome=128.0.6613.137, net=✓)
# Daemon running · network reachable · no high-sev issues

Diagnostic check (rules/diagnostic-checks.md)

# agent-browser (vercel-labs/agent-browser)
# Prefer the structured `agent-browser doctor --json` from 0.26.0+.
# Falls back to the legacy probe on older versions.
if command -v agent-browser >/dev/null 2>&1; then
  if agent-browser doctor --json >/tmp/ab-doctor.json 2>/dev/null; then
    jq -r '
      "agent-browser: " +
      (if (.daemon.status // "unknown") == "running" then "OK" else "DEGRADED" end) +
      " (chrome=" + (.chrome.version // "?") +
      ", net=" + (if .network.reachable then "✓" else "✗" end) + ")"
    ' /tmp/ab-doctor.json
    jq -r '.issues[]? | select(.severity == "high") | "  ↳ HIGH: " + .message' /tmp/ab-doctor.json
  else
    # Fallback for agent-browser < 0.26
    test -L "$HOME/.claude/skills/agent-browser" \
      && echo "agent-browser: installed (legacy probe — upgrade to 0.26+)" \
      || echo "agent-browser: SYMLINK MISSING at ~/.claude/skills/agent-browser"
  fi
else
  echo "agent-browser: NOT INSTALLED (optional — install via vercel-labs/agent-browser ≥ 0.26)"
fi

Net impact

Diagnostic detail per failure1 line (opaque) → structured per-subsystem
Operator action when broken"agent-browser broken — what now?" → named subsystem + fix hint
Backwards compatautomatic fallback when 0.26 subcommand missing
New dependenciesnone (uses jq, already required by other doctor checks)
Test coverage+2 test cases (structured path + fallback path)