mobile-debug-mcp 0.35.0 → 0.37.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.cursor-plugin/marketplace.json +1 -1
- package/.github/workflows/ci.yml +1 -1
- package/README.md +96 -24
- package/agent-plugin/.antigravity-plugin/README.md +48 -0
- package/agent-plugin/.antigravity-plugin/plugin.json +18 -0
- package/agent-plugin/.claude-plugin/plugin.json +2 -2
- package/agent-plugin/.codex-plugin/plugin.json +1 -1
- package/agent-plugin/.cursor-plugin/plugin.json +2 -2
- package/agent-plugin/.mcp.json +1 -1
- package/agent-plugin/README.md +37 -8
- package/agent-plugin/cursor/.cursor-plugin/plugin.json +23 -0
- package/agent-plugin/cursor/LICENSE +201 -0
- package/agent-plugin/cursor/README.md +9 -0
- package/agent-plugin/cursor/skills/mobile-debug-mcp/SKILL.md +261 -0
- package/agent-plugin/mcp.json +1 -1
- package/agent-plugin/mcp_config.json +13 -0
- package/agent-plugin/plugin.json +1 -1
- package/agent-plugin/skills/mobile-debug-mcp/SKILL.md +46 -18
- package/dist/contracts/device-readiness.js +1 -0
- package/dist/debugger/guard.js +4 -4
- package/dist/debugger/ios-worker.js +62 -0
- package/dist/debugger/ios.js +57 -0
- package/dist/debugger/sessions.js +33 -16
- package/dist/debugger/worker.js +6 -4
- package/dist/interact/index.js +12 -2
- package/dist/interact/waits/ui-change-wait.js +9 -2
- package/dist/interact/waits/ui-wait.js +7 -3
- package/dist/manage/index.js +3 -0
- package/dist/manage/ios.js +2 -0
- package/dist/observe/device-readiness.js +116 -0
- package/dist/observe/evidence.js +31 -0
- package/dist/observe/ios-trace/artifact.js +63 -0
- package/dist/observe/ios-trace/capabilities.js +86 -0
- package/dist/observe/ios-trace/native.js +93 -0
- package/dist/observe/ios-trace/notification.js +35 -0
- package/dist/observe/ios-trace/process.js +98 -0
- package/dist/observe/ios-trace/sessions.js +246 -0
- package/dist/observe/readiness-service.js +22 -10
- package/dist/observe/readiness.js +34 -4
- package/dist/observe/screenshot-encoding.js +4 -0
- package/dist/observe/snapshot-collection.js +7 -2
- package/dist/observe/system-trace-error.js +7 -0
- package/dist/observe/system-trace-router.js +81 -0
- package/dist/observe/system-trace.js +4 -8
- package/dist/server/definitions/manage.js +3 -2
- package/dist/server/handlers/action-execution.js +23 -14
- package/dist/server/handlers/compact-interaction.js +106 -0
- package/dist/server/handlers/compact-state.js +47 -0
- package/dist/server/handlers/debugger-handlers.js +27 -8
- package/dist/server/handlers/diagnostic.js +12 -4
- package/dist/server/handlers/input.js +2 -0
- package/dist/server/handlers/interact.js +2 -0
- package/dist/server/handlers/interaction-diagnostics.js +62 -0
- package/dist/server/handlers/journey.js +18 -20
- package/dist/server/handlers/observe.js +2 -1
- package/dist/server/handlers/tool-handlers.js +28 -14
- package/dist/server/schemas/debugger-schema.js +10 -7
- package/dist/server/schemas/interaction-diagnostics.js +9 -0
- package/dist/server/schemas/system-trace-schema.js +14 -9
- package/dist/server/tool-definitions.js +9 -4
- package/dist/server-core.js +5 -2
- package/dist/server.js +5 -5
- package/dist/system/android.js +19 -15
- package/dist/system/index.js +2 -1
- package/dist/utils/android/utils.js +7 -16
- package/dist/utils/app-installation.js +77 -0
- package/dist/utils/benchmark-metrics.js +43 -0
- package/dist/utils/exec.js +4 -0
- package/dist/utils/ios/utils.js +7 -11
- package/dist/utils/resolve-device.js +3 -2
- package/dist/utils/timing.js +3 -3
- package/docs/CHANGELOG.md +48 -1
- package/docs/agent-plugin-installation-verification.md +39 -0
- package/docs/benchmarks/README.md +1 -0
- package/docs/benchmarks/end-to-end-latency/README.md +98 -0
- package/docs/benchmarks/end-to-end-latency/android-snapshot-pair.json +6532 -0
- package/docs/benchmarks/end-to-end-latency/android-snapshot-pair.md +30 -0
- package/docs/benchmarks/end-to-end-latency/baseline-attempt-1.json +15901 -0
- package/docs/benchmarks/end-to-end-latency/baseline-attempt-1.md +14 -0
- package/docs/benchmarks/end-to-end-latency/baseline.json +233843 -0
- package/docs/benchmarks/end-to-end-latency/baseline.md +21 -0
- package/docs/benchmarks/end-to-end-latency/investigation.md +128 -0
- package/docs/benchmarks/end-to-end-latency/ios-smoke.json +84 -0
- package/docs/benchmarks/end-to-end-latency/ios-smoke.md +9 -0
- package/docs/benchmarks/end-to-end-latency/smoke.json +19601 -0
- package/docs/benchmarks/end-to-end-latency/smoke.md +21 -0
- package/docs/code-structure.md +3 -1
- package/docs/specs/031-ios-system-traces/intent.md +38 -0
- package/docs/specs/031-ios-system-traces/investigation.md +92 -0
- package/docs/specs/031-ios-system-traces/late-run-failure-evidence.json +32 -0
- package/docs/specs/031-ios-system-traces/plan.md +166 -0
- package/docs/specs/031-ios-system-traces/pr102-monitor-evidence.json +22 -0
- package/docs/specs/031-ios-system-traces/simulator-evidence.json +47 -0
- package/docs/specs/031-ios-system-traces/spec.md +135 -0
- package/docs/specs/032-ios-runtime-debugger/evidence.json +176 -0
- package/docs/specs/032-ios-runtime-debugger/intent.md +38 -0
- package/docs/specs/032-ios-runtime-debugger/plan.md +95 -0
- package/docs/specs/032-ios-runtime-debugger/report.md +205 -0
- package/docs/specs/032-ios-runtime-debugger/spec.md +153 -0
- package/docs/specs/033-device-readiness-blockers/android-evidence.json +437 -0
- package/docs/specs/033-device-readiness-blockers/android-physical-evidence.json +28 -0
- package/docs/specs/033-device-readiness-blockers/android-physical-power-evidence.json +29 -0
- package/docs/specs/033-device-readiness-blockers/intent.md +41 -0
- package/docs/specs/033-device-readiness-blockers/ios-investigation.md +55 -0
- package/docs/specs/033-device-readiness-blockers/ios-probe-evidence.json +24 -0
- package/docs/specs/033-device-readiness-blockers/ios-tool-evidence.json +73 -0
- package/docs/specs/033-device-readiness-blockers/plan.md +249 -0
- package/docs/specs/033-device-readiness-blockers/spec.md +134 -0
- package/docs/specs/034-app-installation-status/intent.md +41 -0
- package/docs/specs/034-app-installation-status/native-evidence.json +654 -0
- package/docs/specs/034-app-installation-status/plan.md +73 -0
- package/docs/specs/034-app-installation-status/spec.md +114 -0
- package/docs/specs/035-compact-interaction-results/baseline.md +45 -0
- package/docs/specs/035-compact-interaction-results/intent.md +38 -0
- package/docs/specs/035-compact-interaction-results/plan.md +43 -0
- package/docs/specs/035-compact-interaction-results/spec.md +118 -0
- package/docs/specs/035-compact-interaction-results/verification.md +111 -0
- package/docs/specs/036-end-to-end-interaction-latency/android-snapshot-amendment.md +60 -0
- package/docs/specs/036-end-to-end-interaction-latency/android-snapshot-plan.md +32 -0
- package/docs/specs/036-end-to-end-interaction-latency/intent.md +37 -0
- package/docs/specs/036-end-to-end-interaction-latency/plan.md +59 -0
- package/docs/specs/036-end-to-end-interaction-latency/spec.md +126 -0
- package/docs/specs/036-end-to-end-interaction-latency/verification.md +87 -0
- package/docs/tools/TOOLS.md +3 -2
- package/docs/tools/compact-interactions.md +56 -0
- package/docs/tools/correlated-evidence.md +6 -0
- package/docs/tools/debugger.md +45 -5
- package/docs/tools/interact.md +17 -8
- package/docs/tools/manage.md +10 -2
- package/docs/tools/observe.md +42 -2
- package/docs/tools/system-traces.md +81 -14
- package/docs/tools/system.md +6 -0
- package/package.json +2 -1
- package/scripts/agent-plugin.mjs +55 -5
- package/src/contracts/device-readiness.ts +8 -0
- package/src/debugger/android.ts +1 -1
- package/src/debugger/guard.ts +5 -5
- package/src/debugger/ios-worker.ts +49 -0
- package/src/debugger/ios.ts +45 -0
- package/src/debugger/lldb/breakpoints.py +51 -0
- package/src/debugger/lldb/inspection.py +109 -0
- package/src/debugger/lldb/worker.py +203 -0
- package/src/debugger/sessions.ts +24 -12
- package/src/debugger/worker.ts +7 -4
- package/src/interact/index.ts +13 -2
- package/src/interact/waits/ui-change-wait.ts +7 -2
- package/src/interact/waits/ui-wait.ts +6 -3
- package/src/manage/index.ts +2 -0
- package/src/manage/ios.ts +2 -0
- package/src/observe/device-readiness.ts +96 -0
- package/src/observe/evidence.ts +30 -1
- package/src/observe/ios-trace/artifact.ts +55 -0
- package/src/observe/ios-trace/capabilities.ts +74 -0
- package/src/observe/ios-trace/native.ts +72 -0
- package/src/observe/ios-trace/notification.ts +30 -0
- package/src/observe/ios-trace/process.ts +82 -0
- package/src/observe/ios-trace/sessions.ts +206 -0
- package/src/observe/readiness-service.ts +22 -10
- package/src/observe/readiness.ts +37 -4
- package/src/observe/screenshot-encoding.ts +4 -0
- package/src/observe/snapshot-collection.ts +7 -2
- package/src/observe/system-trace-error.ts +3 -0
- package/src/observe/system-trace-router.ts +61 -0
- package/src/observe/system-trace.ts +4 -4
- package/src/server/common.ts +2 -2
- package/src/server/definitions/manage.ts +3 -2
- package/src/server/handlers/action-execution.ts +22 -14
- package/src/server/handlers/compact-interaction.ts +91 -0
- package/src/server/handlers/compact-state.ts +43 -0
- package/src/server/handlers/debugger-handlers.ts +28 -9
- package/src/server/handlers/diagnostic.ts +11 -4
- package/src/server/handlers/input.ts +2 -0
- package/src/server/handlers/interact.ts +2 -0
- package/src/server/handlers/interaction-diagnostics.ts +50 -0
- package/src/server/handlers/journey.ts +15 -17
- package/src/server/handlers/observe.ts +2 -1
- package/src/server/handlers/payload.ts +2 -1
- package/src/server/handlers/tool-handlers.ts +29 -14
- package/src/server/schemas/debugger-schema.ts +10 -7
- package/src/server/schemas/interaction-diagnostics.ts +10 -0
- package/src/server/schemas/system-trace-schema.ts +15 -9
- package/src/server/tool-definitions.ts +8 -4
- package/src/server-core.ts +5 -2
- package/src/server.ts +4 -4
- package/src/system/android.ts +18 -11
- package/src/system/index.ts +2 -1
- package/src/types.ts +2 -0
- package/src/utils/android/utils.ts +8 -10
- package/src/utils/app-installation.ts +73 -0
- package/src/utils/benchmark-metrics.ts +42 -0
- package/src/utils/exec.ts +5 -0
- package/src/utils/ios/utils.ts +7 -10
- package/src/utils/resolve-device.ts +4 -2
- package/src/utils/timing.ts +3 -2
- package/test/device/automated/debugger/runtime.android.test.ts +5 -0
- package/test/device/automated/debugger/runtime.ios.test.ts +227 -0
- package/test/device/automated/interact/compact-results.smoke.ts +58 -0
- package/test/device/automated/latency/end-to-end-environment.ts +61 -0
- package/test/device/automated/latency/end-to-end-report.ts +90 -0
- package/test/device/automated/latency/end-to-end-session.ts +98 -0
- package/test/device/automated/latency/end-to-end.ts +149 -0
- package/test/device/automated/latency/owned-transport.ts +81 -0
- package/test/device/automated/latency/snapshot-pair.ts +143 -0
- package/test/device/automated/latency-ios/benchmark.ts +126 -0
- package/test/device/automated/observe/correlated-evidence.smoke.ts +7 -5
- package/test/device/automated/observe/device-readiness-cleanup.ts +14 -0
- package/test/device/automated/observe/device-readiness.android.smoke.ts +78 -0
- package/test/device/automated/observe/ios-system-trace.smoke.ts +119 -0
- package/test/device/automated/observe/system-trace.smoke.ts +2 -2
- package/test/fixtures/contracts/tool-definitions.json +243 -47
- package/test/fixtures/ios-debugger-app/Main.swift +95 -0
- package/test/fixtures/ios-debugger-app/README.md +27 -0
- package/test/fixtures/ios-debugger-app/build.ts +21 -0
- package/test/fixtures/latency-journey-app/build.ts +3 -3
- package/test/helpers/ios-trace-shutdown.ts +29 -0
- package/test/unit/debugger/handle-guards.test.ts +89 -0
- package/test/unit/debugger/ios-preparation.test.ts +57 -0
- package/test/unit/debugger/ios.test.ts +104 -0
- package/test/unit/debugger/lldb-worker.py +166 -0
- package/test/unit/debugger/lldb-worker.test.ts +10 -0
- package/test/unit/interact/ui-change-readiness-interruption.test.ts +37 -0
- package/test/unit/observe/capture_debug_snapshot.test.ts +66 -12
- package/test/unit/observe/device-readiness-cleanup.test.ts +24 -0
- package/test/unit/observe/device-readiness.test.ts +97 -0
- package/test/unit/observe/ios-trace-native.test.ts +90 -0
- package/test/unit/observe/ios-trace-sessions.test.ts +154 -0
- package/test/unit/observe/readiness-retained-blockers.test.ts +40 -0
- package/test/unit/observe/readiness.test.ts +1 -1
- package/test/unit/observe/system-trace-router.test.ts +49 -0
- package/test/unit/quality/agent-plugin-export.test.ts +38 -0
- package/test/unit/server/compact-interaction.test.ts +87 -0
- package/test/unit/server/compact-journey-evidence.test.ts +40 -0
- package/test/unit/server/compact-review-regressions.test.ts +78 -0
- package/test/unit/server/conditional_actions.test.ts +7 -3
- package/test/unit/server/correlated-evidence.test.ts +18 -6
- package/test/unit/server/end-to-end-report.test.ts +46 -0
- package/test/unit/server/input-device-readiness.test.ts +55 -0
- package/test/unit/server/interaction-diagnostics.test.ts +45 -0
- package/test/unit/server/owned-benchmark-transport.test.ts +32 -0
- package/test/unit/server/readiness-retained-deadline.test.ts +32 -0
- package/test/unit/server/readiness.test.ts +24 -1
- package/test/unit/server/run_journey.test.ts +2 -1
- package/test/unit/server/selector_tap_target.test.ts +2 -1
- package/test/unit/server/system-trace.test.ts +18 -7
- package/test/unit/utils/app-installation.test.ts +78 -0
- package/test/unit/utils/benchmark-metrics.test.ts +36 -0
- package/test/unit/utils/resolve_device.test.ts +11 -0
package/.github/workflows/ci.yml
CHANGED
|
@@ -34,7 +34,7 @@ jobs:
|
|
|
34
34
|
node --input-type=module - "$RUNNER_TEMP/mobile-debug-package.json" <<'JS'
|
|
35
35
|
import fs from 'node:fs'
|
|
36
36
|
const files = new Set(JSON.parse(fs.readFileSync(process.argv[2], 'utf8'))[0].files.map(file => file.path))
|
|
37
|
-
for (const file of ['src/debugger/java/DebuggerWorker.java', 'dist/debugger/worker.js', 'dist/debugger/protocol.js', 'dist/runtime/action-results.js', 'dist/server/definitions/input.js', 'dist/server/schemas/debugger-schema.js', 'dist/server/handlers/tool-handlers.js', 'dist/interact/adjustment/adjustment.js', 'dist/interact/targeting/find-element.js', 'dist/interact/waits/ui-wait.js', 'dist/interact/assertions/state-assertion.js', 'dist/observe/network/index.js', 'dist/runtime/clock.js', 'dist/contracts/target.js', 'dist/contracts/execution-controls.js', 'dist/server/handlers/manage.js', 'dist/server/handlers/input.js', 'dist/server/handlers/journey.js']) {
|
|
37
|
+
for (const file of ['src/debugger/java/DebuggerWorker.java', 'src/debugger/lldb/worker.py', 'src/debugger/lldb/inspection.py', 'src/debugger/lldb/breakpoints.py', 'dist/debugger/ios.js', 'dist/debugger/ios-worker.js', 'dist/debugger/worker.js', 'dist/debugger/protocol.js', 'dist/runtime/action-results.js', 'dist/server/definitions/input.js', 'dist/server/schemas/debugger-schema.js', 'dist/server/handlers/tool-handlers.js', 'dist/interact/adjustment/adjustment.js', 'dist/interact/targeting/find-element.js', 'dist/interact/waits/ui-wait.js', 'dist/interact/assertions/state-assertion.js', 'dist/observe/network/index.js', 'dist/runtime/clock.js', 'dist/contracts/target.js', 'dist/contracts/execution-controls.js', 'dist/server/handlers/manage.js', 'dist/server/handlers/input.js', 'dist/server/handlers/journey.js']) {
|
|
38
38
|
if (!files.has(file)) throw new Error(`Missing debugger package file: ${file}`)
|
|
39
39
|
}
|
|
40
40
|
JS
|
package/README.md
CHANGED
|
@@ -10,6 +10,11 @@ Android, iOS, and Kotlin Multiplatform projects are supported. Flutter and React
|
|
|
10
10
|
Native have not been tested. Platform and device limitations are described in the
|
|
11
11
|
[tool reference](docs/tools/TOOLS.md).
|
|
12
12
|
|
|
13
|
+
Use `responseMode: "compact"` for bounded interaction and journey summaries.
|
|
14
|
+
Retrieve retained details without replaying input with
|
|
15
|
+
[`get_interaction_diagnostics`](docs/tools/compact-interactions.md); debug output
|
|
16
|
+
remains available.
|
|
17
|
+
|
|
13
18
|
## What you can use it for
|
|
14
19
|
|
|
15
20
|
Mobile Debug Tools gives a coding agent access to a running app, so development
|
|
@@ -28,10 +33,10 @@ can include feedback from the device as well as the source code. For example:
|
|
|
28
33
|
- **Investigate an app failure.** Collect logs, screenshots and a debug snapshot
|
|
29
34
|
around a failing action to understand what happened. [Evidence
|
|
30
35
|
correlation](docs/tools/correlated-evidence.md) links observations to the action.
|
|
31
|
-
- **Investigate
|
|
32
|
-
[Perfetto trace](docs/tools/system-traces.md) during a slow flow, or attach the
|
|
36
|
+
- **Investigate mobile performance or runtime behaviour.** Capture a
|
|
37
|
+
[Perfetto or iOS simulator Instruments trace](docs/tools/system-traces.md) during a slow flow, or attach the
|
|
33
38
|
[runtime debugger](docs/tools/debugger.md) to a debuggable app to inspect
|
|
34
|
-
breakpoints, call stacks and locals.
|
|
39
|
+
breakpoints, call stacks and locals on Android or an iOS simulator.
|
|
35
40
|
|
|
36
41
|
## How it works
|
|
37
42
|
|
|
@@ -64,56 +69,118 @@ Check the [requirements](#requirements) for your platform before installing.
|
|
|
64
69
|
- [Android SDK](https://developer.android.com/studio) (adb) for Android support
|
|
65
70
|
- Xcode and its command-line tools on macOS for iOS support
|
|
66
71
|
- [idb](https://github.com/facebook/idb) for iOS UI inspection and interaction
|
|
67
|
-
- JDK 17+ for optional [Android runtime debugging](docs/tools/debugger.md)
|
|
72
|
+
- JDK 17+ for optional [Android runtime debugging](docs/tools/debugger.md); Xcode’s Swift-enabled LLDB/Python for optional iOS simulator debugging
|
|
68
73
|
|
|
69
74
|
## Agent plugin
|
|
70
75
|
|
|
71
|
-
The
|
|
72
|
-
|
|
73
|
-
|
|
76
|
+
The plugin installs the MCP server configuration and the `mobile-debug-mcp` usage
|
|
77
|
+
skill together. These are GitHub/local installation routes; they do not require
|
|
78
|
+
approval from a client's public curated marketplace.
|
|
74
79
|
|
|
75
80
|
<details>
|
|
76
81
|
|
|
77
|
-
<summary>Codex
|
|
82
|
+
<summary>Codex</summary>
|
|
78
83
|
|
|
79
|
-
|
|
84
|
+
In a terminal with a current Codex CLI:
|
|
80
85
|
|
|
81
86
|
```bash
|
|
82
|
-
codex plugin marketplace add clivejefferies/mobile-debug-tools
|
|
87
|
+
codex plugin marketplace add clivejefferies/mobile-debug-tools --ref main
|
|
83
88
|
codex plugin add mobile-debug-tools@mobile-debug-tools
|
|
89
|
+
codex plugin list
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Start a new chat/session and confirm the plugin is enabled and its skill and MCP
|
|
93
|
+
tools are available. These commands use the repository's marketplace, named
|
|
94
|
+
`mobile-debug-tools`, not a public directory listing. See the
|
|
95
|
+
[official packaging instructions](https://developers.openai.com/plugins/build/plugins).
|
|
96
|
+
|
|
97
|
+
</details>
|
|
98
|
+
|
|
99
|
+
<details>
|
|
100
|
+
|
|
101
|
+
<summary>Claude Code</summary>
|
|
102
|
+
|
|
103
|
+
Run these shell commands (not slash commands inside a chat):
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
claude plugin marketplace add clivejefferies/mobile-debug-tools --scope user
|
|
107
|
+
claude plugin install mobile-debug-tools@mobile-debug-tools --scope user
|
|
108
|
+
claude plugin list
|
|
84
109
|
```
|
|
85
110
|
|
|
111
|
+
Restart the session after installation. In an interactive Claude Code chat, the
|
|
112
|
+
corresponding commands start with `/plugin` instead of `claude plugin`. See
|
|
113
|
+
[Claude Code's installation guide](https://code.claude.com/docs/en/discover-plugins).
|
|
114
|
+
|
|
86
115
|
</details>
|
|
87
116
|
|
|
88
117
|
<details>
|
|
89
118
|
|
|
90
|
-
<summary>
|
|
119
|
+
<summary>Cursor</summary>
|
|
91
120
|
|
|
92
|
-
|
|
121
|
+
For local installation, clone this repository and run these commands from its
|
|
122
|
+
root in a macOS/Linux shell:
|
|
93
123
|
|
|
94
124
|
```bash
|
|
95
|
-
|
|
96
|
-
|
|
125
|
+
git clone https://github.com/clivejefferies/mobile-debug-tools.git
|
|
126
|
+
cd mobile-debug-tools
|
|
127
|
+
cursor_plugin_dir="$HOME/.cursor/plugins/local/mobile-debug-tools"
|
|
128
|
+
if [ -e "$cursor_plugin_dir" ]; then
|
|
129
|
+
echo "Move the existing plugin directory aside before copying the new package."
|
|
130
|
+
else
|
|
131
|
+
mkdir -p "$(dirname "$cursor_plugin_dir")"
|
|
132
|
+
cp -R agent-plugin/cursor "$cursor_plugin_dir"
|
|
133
|
+
fi
|
|
97
134
|
```
|
|
98
135
|
|
|
136
|
+
On Windows, copy the contents of `agent-plugin/cursor` into a new
|
|
137
|
+
`~/.cursor/plugins/local/mobile-debug-tools` folder, including `.cursor-plugin`.
|
|
138
|
+
Use this generated Cursor-native package, not the portable parent: Cursor does
|
|
139
|
+
not expand `${PLUGIN_DATA}` in portable `mcp.json`. Do not symlink to the checkout.
|
|
140
|
+
|
|
141
|
+
Run **Developer: Reload Window**, open **Customize**, and confirm the skill and
|
|
142
|
+
MCP server are loaded. For Teams/Enterprise distribution, import this repository
|
|
143
|
+
under **Dashboard → Plugins & MCPs → Team Marketplaces**; its
|
|
144
|
+
[Cursor catalog](.cursor-plugin/marketplace.json) selects the native package.
|
|
145
|
+
Members install from Customize. See [Cursor's plugin guide](https://cursor.com/docs/plugins).
|
|
146
|
+
|
|
99
147
|
</details>
|
|
100
148
|
|
|
101
149
|
<details>
|
|
102
150
|
|
|
103
|
-
<summary>
|
|
151
|
+
<summary>Antigravity</summary>
|
|
152
|
+
|
|
153
|
+
Install the [Antigravity CLI](https://antigravity.google/docs/getting-started?tab=cli),
|
|
154
|
+
then clone this GitHub repository and export its plugin:
|
|
104
155
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
156
|
+
```bash
|
|
157
|
+
git clone https://github.com/clivejefferies/mobile-debug-tools.git
|
|
158
|
+
cd mobile-debug-tools
|
|
159
|
+
npm run package:antigravity -- "$PWD/antigravity-dist"
|
|
160
|
+
agy plugin validate --strict "$PWD/antigravity-dist"
|
|
161
|
+
agy plugin install "$PWD/antigravity-dist"
|
|
162
|
+
agy plugin list --json
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
No `npm install` is needed for the export script. Choose a new output directory;
|
|
166
|
+
the exporter refuses to overwrite an existing one. Check the installed entry has
|
|
167
|
+
one skill (`mobile-debug-mcp`) and one MCP server (`mobile-debug-mcp`), then start
|
|
168
|
+
a new session and approve the specific MCP calls you intend to use.
|
|
169
|
+
|
|
170
|
+
The Antigravity-only export avoids strict-validation warnings from the other
|
|
171
|
+
clients' compatibility files. It uses `mcp_config.json` and the same pinned npm
|
|
172
|
+
server and shared skill. GitHub/local installation does not require the
|
|
173
|
+
Antigravity Marketplace interest form. See [Google's plugin guide](https://antigravity.google/docs/build-plugins).
|
|
109
174
|
|
|
110
175
|
</details>
|
|
111
176
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
177
|
+
Each client needs Node.js 22 or newer, `npx` on its PATH, npm registry access on
|
|
178
|
+
first launch, and the platform toolchains for your device. After installation,
|
|
179
|
+
ask the agent to list devices, select an explicit emulator/device, and inspect
|
|
180
|
+
its screen. An installed component list alone does not prove a working device
|
|
181
|
+
connection. Disable any separate manual registration of this MCP server in the
|
|
182
|
+
same client to avoid duplicate tools. If a plugin command is unavailable, update
|
|
183
|
+
the client; the [direct MCP configuration](#mcp-configuration) works independently.
|
|
117
184
|
|
|
118
185
|
## MCP configuration
|
|
119
186
|
|
|
@@ -235,3 +302,8 @@ Android debugger errors include bounded, sanitized failure classifications and r
|
|
|
235
302
|
## License
|
|
236
303
|
|
|
237
304
|
[Apache-2.0](LICENSE)
|
|
305
|
+
|
|
306
|
+
Launch and interaction results distinguish dispatch from timestamped
|
|
307
|
+
[device readiness evidence](docs/tools/observe.md#device-readiness-evidence).
|
|
308
|
+
Readiness waits account for observed sleeping/locked device blockers. Unknown or
|
|
309
|
+
unsupported signals are explicit, and no automatic unlock is performed.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Mobile Debug Tools for Antigravity
|
|
2
|
+
|
|
3
|
+
Inspect and interact with Android and iOS apps using a local MCP server and the
|
|
4
|
+
bundled `mobile-debug-mcp` usage skill. Capture screenshots, logs and UI trees;
|
|
5
|
+
verify interactions with explicit evidence. Android additionally supports optional
|
|
6
|
+
runtime debugging and bounded Perfetto system traces. iOS runtime debugging and
|
|
7
|
+
system traces are not supported.
|
|
8
|
+
|
|
9
|
+
## Prerequisites
|
|
10
|
+
|
|
11
|
+
- Node.js 22 or newer, with `npx` on PATH and npm registry access on first launch.
|
|
12
|
+
- Android SDK/platform-tools and an authorized device or running emulator for Android.
|
|
13
|
+
- macOS and the applicable Xcode/idb tooling for iOS.
|
|
14
|
+
- Host JDK 17+ and a debuggable Android app for optional runtime debugging.
|
|
15
|
+
|
|
16
|
+
The server runs locally through `npx`; its exact version is pinned in
|
|
17
|
+
`mcp_config.json`. The plugin uses the client-managed `${PLUGIN_DATA}` directory as its working directory.
|
|
18
|
+
No plugin-specific account, API key, OAuth sign-in or hosted backend is required.
|
|
19
|
+
|
|
20
|
+
## Install and use
|
|
21
|
+
|
|
22
|
+
Install the extracted plugin directory with `agy plugin install /path/to/mobile-debug-tools`.
|
|
23
|
+
Run `agy plugin list --json` and confirm one skill (`mobile-debug-mcp`) and one
|
|
24
|
+
MCP server (`mobile-debug-mcp`) are discovered. Start a new session. Disable a
|
|
25
|
+
separate manual registration of the same MCP server to avoid duplicate tools.
|
|
26
|
+
|
|
27
|
+
Example prompts:
|
|
28
|
+
|
|
29
|
+
- Check my mobile debugging environment and connected devices.
|
|
30
|
+
- Inspect the current screen of my mobile app.
|
|
31
|
+
- Help me reproduce and diagnose a bug in my mobile app.
|
|
32
|
+
|
|
33
|
+
For a first check, select an explicit emulator/device, inspect its current screen,
|
|
34
|
+
and verify a harmless interaction using fresh UI evidence. Readiness is a probe;
|
|
35
|
+
a dispatched action alone does not establish an app outcome.
|
|
36
|
+
|
|
37
|
+
## Access and support
|
|
38
|
+
|
|
39
|
+
Tools can read device screens, logs and shallow debugger locals; they can also
|
|
40
|
+
interact with apps and manage their lifecycle. These may contain private data.
|
|
41
|
+
Use only devices and apps you intend to inspect. Build/install/reset operations
|
|
42
|
+
have their own effects and should be requested explicitly. Trace contents and
|
|
43
|
+
artifacts stay local; this plugin adds no automatic upload service.
|
|
44
|
+
|
|
45
|
+
Source and setup: https://github.com/clivejefferies/mobile-debug-tools
|
|
46
|
+
Tool reference: https://github.com/clivejefferies/mobile-debug-tools/blob/main/docs/tools/TOOLS.md
|
|
47
|
+
Support: https://github.com/clivejefferies/mobile-debug-tools/issues
|
|
48
|
+
License: Apache-2.0. Publisher attribution: mobile-debug-tools contributors.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://antigravity.google/schemas/v1/plugin.json",
|
|
3
|
+
"name": "mobile-debug-tools",
|
|
4
|
+
"version": "0.0.7",
|
|
5
|
+
"description": "Mobile app debugging tools and usage guidance for Android and iOS agents.",
|
|
6
|
+
"author": {
|
|
7
|
+
"name": "mobile-debug-tools contributors"
|
|
8
|
+
},
|
|
9
|
+
"repository": "https://github.com/clivejefferies/mobile-debug-tools",
|
|
10
|
+
"license": "Apache-2.0",
|
|
11
|
+
"displayName": "Mobile Debug Tools",
|
|
12
|
+
"logo": "assets/mobile-debug-tools.svg",
|
|
13
|
+
"suggestedPrompts": [
|
|
14
|
+
"Check my mobile debugging environment and connected devices.",
|
|
15
|
+
"Inspect the current screen of my mobile app.",
|
|
16
|
+
"Help me reproduce and diagnose a bug in my mobile app."
|
|
17
|
+
]
|
|
18
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mobile-debug-tools",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.7",
|
|
4
4
|
"description": "Mobile app debugging tools and usage guidance for Android and iOS agents.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "mobile-debug-tools contributors"
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"command": "npx",
|
|
13
13
|
"args": [
|
|
14
14
|
"--yes",
|
|
15
|
-
"mobile-debug-mcp@0.
|
|
15
|
+
"mobile-debug-mcp@0.37.0",
|
|
16
16
|
"server"
|
|
17
17
|
]
|
|
18
18
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mobile-debug-tools",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.7",
|
|
4
4
|
"description": "Mobile app debugging tools and usage guidance for Android and iOS agents.",
|
|
5
5
|
"repository": "https://github.com/clivejefferies/mobile-debug-tools",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mobile-debug-tools",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.7",
|
|
4
4
|
"description": "Mobile app debugging tools and usage guidance for Android and iOS agents.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "mobile-debug-tools contributors"
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"command": "npx",
|
|
15
15
|
"args": [
|
|
16
16
|
"--yes",
|
|
17
|
-
"mobile-debug-mcp@0.
|
|
17
|
+
"mobile-debug-mcp@0.37.0",
|
|
18
18
|
"server"
|
|
19
19
|
],
|
|
20
20
|
"cwd": "${CURSOR_PLUGIN_ROOT}"
|
package/agent-plugin/.mcp.json
CHANGED
package/agent-plugin/README.md
CHANGED
|
@@ -4,22 +4,24 @@
|
|
|
4
4
|
|
|
5
5
|
Use the [client installation instructions](../README.md#agent-plugin) to install
|
|
6
6
|
the plugin. It supports clients with
|
|
7
|
-
both skills and stdio MCP servers. It provides the mobile-debug MCP
|
|
7
|
+
both skills and stdio MCP servers: Codex, Claude Code, Cursor and Antigravity. It provides the mobile-debug MCP
|
|
8
8
|
usage skill and launches the published `mobile-debug-mcp` npm package. The
|
|
9
9
|
plugin requires Node.js 22 or newer, `npx`, and the platform toolchains needed
|
|
10
10
|
for the devices you want to use. The first launch may need npm registry access.
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
Codex and Antigravity run the MCP process in a client-managed plugin data
|
|
12
|
+
directory. Cursor uses its plugin root through `${CURSOR_PLUGIN_ROOT}`; Claude
|
|
13
|
+
Code chooses its own process working directory.
|
|
13
14
|
|
|
14
15
|
## Versions and maintenance
|
|
15
16
|
|
|
16
17
|
The server is pinned to the published npm version in `mcp.json`. The plugin's
|
|
17
18
|
`plugin.json` version advances independently for guidance-only releases; do not
|
|
18
19
|
change the server pin to an unpublished npm version. The
|
|
19
|
-
[usage skill](skills/mobile-debug-mcp/SKILL.md) is shared by all
|
|
20
|
+
[usage skill](skills/mobile-debug-mcp/SKILL.md) is the canonical source shared by all four clients. Run
|
|
20
21
|
`npm run sync:agent-plugin` after updating the plugin metadata or server pin to
|
|
21
|
-
refresh
|
|
22
|
-
The
|
|
22
|
+
refresh all client manifests and the generated Cursor-native package in `cursor/`.
|
|
23
|
+
The Codex and Claude catalogs point to this portable directory; the Cursor
|
|
24
|
+
catalog points to `cursor/` because Cursor cannot expand `${PLUGIN_DATA}`.
|
|
23
25
|
The packaged directory uses the skill's declared name, `mobile-debug-mcp`, as
|
|
24
26
|
required by Agent Skills. `npm run check:agent-plugin` checks the packaged
|
|
25
27
|
copies and configuration.
|
|
@@ -32,7 +34,7 @@ agent through device selection, observation, interaction and verification.
|
|
|
32
34
|
The usage skill prefers screenshots for routine visual checks and reserves
|
|
33
35
|
hierarchy reads for semantic selection and structured assertions. Assertion
|
|
34
36
|
timeouts must cover a fresh tree read as well as the expected app transition.
|
|
35
|
-
It also covers optional Android runtime debugging: capability checks, explicit
|
|
37
|
+
It also covers optional Android and supported iOS simulator runtime debugging: capability checks, explicit
|
|
36
38
|
process attach, source stops, bounded inspection, stepping and owned cleanup.
|
|
37
39
|
Debugger guidance applies only when the connected server exposes those tools;
|
|
38
40
|
updating the skill does not update the pinned server or installed plugin.
|
|
@@ -40,4 +42,31 @@ updating the skill does not update the pinned server or installed plugin.
|
|
|
40
42
|
If you already configured the MCP server directly in your agent client, disable
|
|
41
43
|
that separate registration when enabling this plugin to avoid duplicate tools.
|
|
42
44
|
The direct npm installation remains available without this plugin. See the
|
|
43
|
-
[repository
|
|
45
|
+
[repository requirements](../README.md#requirements) for platform toolchain setup and `get_system_status` guidance.
|
|
46
|
+
|
|
47
|
+
## Antigravity distribution
|
|
48
|
+
|
|
49
|
+
Run `npm run package:antigravity -- /absolute/path/to/a-new-directory` from the
|
|
50
|
+
repository root. The exporter uses only Node built-ins; it does not require a
|
|
51
|
+
local dependency install. It creates a standalone directory with native
|
|
52
|
+
`plugin.json`, `mcp_config.json`, README, license, logo and the canonical skill.
|
|
53
|
+
Validate that export with `agy plugin validate --strict /absolute/path/to/export`
|
|
54
|
+
and install it with `agy plugin install /absolute/path/to/export`.
|
|
55
|
+
|
|
56
|
+
The multi-client source intentionally contains files that Antigravity ignores;
|
|
57
|
+
strict validation belongs on the clean export, not on this mixed source folder.
|
|
58
|
+
Other clients' manifests are excluded from the export. The export is suitable
|
|
59
|
+
for a GitHub download or local installation without curated Marketplace approval.
|
|
60
|
+
Antigravity's Marketplace form is an optional, separate distribution route.
|
|
61
|
+
|
|
62
|
+
## Installation verification
|
|
63
|
+
|
|
64
|
+
The main README links each vendor's current installation documentation. Codex
|
|
65
|
+
and Claude Code's shell command syntax was checked against installed CLI help;
|
|
66
|
+
Claude's plugin and catalog validate with its native validator. Cursor's native
|
|
67
|
+
layout follows its documented local-plugin and variable rules; installation in
|
|
68
|
+
Cursor has not been exercised on this machine. Antigravity strict validation and
|
|
69
|
+
local component discovery have been exercised. Agent-level MCP permissions must
|
|
70
|
+
still be approved by the user; component discovery is not a completed tool call.
|
|
71
|
+
See the [installation verification record](../docs/agent-plugin-installation-verification.md)
|
|
72
|
+
for tested versions, device evidence and unrun host checks.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "mobile-debug-tools",
|
|
3
|
+
"version": "0.0.7",
|
|
4
|
+
"description": "Mobile app debugging tools and usage guidance for Android and iOS agents.",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "mobile-debug-tools contributors"
|
|
7
|
+
},
|
|
8
|
+
"repository": "https://github.com/clivejefferies/mobile-debug-tools",
|
|
9
|
+
"license": "Apache-2.0",
|
|
10
|
+
"skills": "./skills/",
|
|
11
|
+
"mcpServers": {
|
|
12
|
+
"mobile-debug-mcp": {
|
|
13
|
+
"type": "stdio",
|
|
14
|
+
"command": "npx",
|
|
15
|
+
"args": [
|
|
16
|
+
"--yes",
|
|
17
|
+
"mobile-debug-mcp@0.37.0",
|
|
18
|
+
"server"
|
|
19
|
+
],
|
|
20
|
+
"cwd": "${CURSOR_PLUGIN_ROOT}"
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
Apache License
|
|
2
|
+
Version 2.0, January 2004
|
|
3
|
+
http://www.apache.org/licenses/
|
|
4
|
+
|
|
5
|
+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
6
|
+
|
|
7
|
+
1. Definitions.
|
|
8
|
+
|
|
9
|
+
"License" shall mean the terms and conditions for use, reproduction,
|
|
10
|
+
and distribution as defined by Sections 1 through 9 of this document.
|
|
11
|
+
|
|
12
|
+
"Licensor" shall mean the copyright owner or entity authorized by
|
|
13
|
+
the copyright owner that is granting the License.
|
|
14
|
+
|
|
15
|
+
"Legal Entity" shall mean the union of the acting entity and all
|
|
16
|
+
other entities that control, are controlled by, or are under common
|
|
17
|
+
control with that entity. For the purposes of this definition,
|
|
18
|
+
"control" means (i) the power, direct or indirect, to cause the
|
|
19
|
+
direction or management of such entity, whether by contract or
|
|
20
|
+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
21
|
+
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
22
|
+
|
|
23
|
+
"You" (or "Your") shall mean an individual or Legal Entity
|
|
24
|
+
exercising permissions granted by this License.
|
|
25
|
+
|
|
26
|
+
"Source" form shall mean the preferred form for making modifications,
|
|
27
|
+
including but not limited to software source code, documentation
|
|
28
|
+
source, and configuration files.
|
|
29
|
+
|
|
30
|
+
"Object" form shall mean any form resulting from mechanical
|
|
31
|
+
transformation or translation of a Source form, including but
|
|
32
|
+
not limited to compiled object code, generated documentation,
|
|
33
|
+
and conversions to other media types.
|
|
34
|
+
|
|
35
|
+
"Work" shall mean the work of authorship, whether in Source or
|
|
36
|
+
Object form, made available under the License, as indicated by a
|
|
37
|
+
copyright notice that is included in or attached to the work
|
|
38
|
+
(an example is provided in the Appendix below).
|
|
39
|
+
|
|
40
|
+
"Derivative Works" shall mean any work, whether in Source or Object
|
|
41
|
+
form, that is based on (or derived from) the Work and for which the
|
|
42
|
+
editorial revisions, annotations, elaborations, or other modifications
|
|
43
|
+
represent, as a whole, an original work of authorship. For the purposes
|
|
44
|
+
of this License, Derivative Works shall not include works that remain
|
|
45
|
+
separable from, or merely link (or bind by name) to the interfaces of,
|
|
46
|
+
the Work and Derivative Works thereof.
|
|
47
|
+
|
|
48
|
+
"Contribution" shall mean any work of authorship, including
|
|
49
|
+
the original version of the Work and any modifications or additions
|
|
50
|
+
to that Work or Derivative Works thereof, that is intentionally
|
|
51
|
+
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
52
|
+
or by an individual or Legal Entity authorized to submit on behalf of
|
|
53
|
+
the copyright owner. For the purposes of this definition, "submitted"
|
|
54
|
+
means any form of electronic, verbal, or written communication sent
|
|
55
|
+
to the Licensor or its representatives, including but not limited to
|
|
56
|
+
communication on electronic mailing lists, source code control systems,
|
|
57
|
+
and issue tracking systems that are managed by, or on behalf of, the
|
|
58
|
+
Licensor for the purpose of discussing and improving the Work, but
|
|
59
|
+
excluding communication that is conspicuously marked or otherwise
|
|
60
|
+
designated in writing by the copyright owner as "Not a Contribution."
|
|
61
|
+
|
|
62
|
+
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
63
|
+
on behalf of whom a Contribution has been received by Licensor and
|
|
64
|
+
subsequently incorporated within the Work.
|
|
65
|
+
|
|
66
|
+
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
67
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
68
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
69
|
+
copyright license to reproduce, prepare Derivative Works of,
|
|
70
|
+
publicly display, publicly perform, sublicense, and distribute the
|
|
71
|
+
Work and such Derivative Works in Source or Object form.
|
|
72
|
+
|
|
73
|
+
3. Grant of Patent License. Subject to the terms and conditions of
|
|
74
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
75
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
76
|
+
(except as stated in this section) patent license to make, have made,
|
|
77
|
+
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
78
|
+
where such license applies only to those patent claims licensable
|
|
79
|
+
by such Contributor that are necessarily infringed by their
|
|
80
|
+
Contribution(s) alone or by combination of their Contribution(s)
|
|
81
|
+
with the Work to which such Contribution(s) was submitted. If You
|
|
82
|
+
institute patent litigation against any entity (including a
|
|
83
|
+
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
84
|
+
or a Contribution incorporated within the Work constitutes direct
|
|
85
|
+
or contributory patent infringement, then any patent licenses
|
|
86
|
+
granted to You under this License for that Work shall terminate
|
|
87
|
+
as of the date such litigation is filed.
|
|
88
|
+
|
|
89
|
+
4. Redistribution. You may reproduce and distribute copies of the
|
|
90
|
+
Work or Derivative Works thereof in any medium, with or without
|
|
91
|
+
modifications, and in Source or Object form, provided that You
|
|
92
|
+
meet the following conditions:
|
|
93
|
+
|
|
94
|
+
(a) You must give any other recipients of the Work or
|
|
95
|
+
Derivative Works a copy of this License; and
|
|
96
|
+
|
|
97
|
+
(b) You must cause any modified files to carry prominent notices
|
|
98
|
+
stating that You changed the files; and
|
|
99
|
+
|
|
100
|
+
(c) You must retain, in the Source form of any Derivative Works
|
|
101
|
+
that You distribute, all copyright, patent, trademark, and
|
|
102
|
+
attribution notices from the Source form of the Work,
|
|
103
|
+
excluding those notices that do not pertain to any part of
|
|
104
|
+
the Derivative Works; and
|
|
105
|
+
|
|
106
|
+
(d) If the Work includes a "NOTICE" text file as part of its
|
|
107
|
+
distribution, then any Derivative Works that You distribute must
|
|
108
|
+
include a readable copy of the attribution notices contained
|
|
109
|
+
within such NOTICE file, excluding those notices that do not
|
|
110
|
+
pertain to any part of the Derivative Works, in at least one
|
|
111
|
+
of the following places: within a NOTICE text file distributed
|
|
112
|
+
as part of the Derivative Works; within the Source form or
|
|
113
|
+
documentation, if provided along with the Derivative Works; or,
|
|
114
|
+
within a display generated by the Derivative Works, if and
|
|
115
|
+
wherever such third-party notices normally appear. The contents
|
|
116
|
+
of the NOTICE file are for informational purposes only and
|
|
117
|
+
do not modify the License. You may add Your own attribution
|
|
118
|
+
notices within Derivative Works that You distribute, alongside
|
|
119
|
+
or as an addendum to the NOTICE text from the Work, provided
|
|
120
|
+
that such additional attribution notices cannot be construed
|
|
121
|
+
as modifying the License.
|
|
122
|
+
|
|
123
|
+
You may add Your own copyright statement to Your modifications and
|
|
124
|
+
may provide additional or different license terms and conditions
|
|
125
|
+
for use, reproduction, or distribution of Your modifications, or
|
|
126
|
+
for any such Derivative Works as a whole, provided Your use,
|
|
127
|
+
reproduction, and distribution of the Work otherwise complies with
|
|
128
|
+
the conditions stated in this License.
|
|
129
|
+
|
|
130
|
+
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
131
|
+
any Contribution intentionally submitted for inclusion in the Work
|
|
132
|
+
by You to the Licensor shall be under the terms and conditions of
|
|
133
|
+
this License, without any additional terms or conditions.
|
|
134
|
+
Notwithstanding the above, nothing herein shall supersede or modify
|
|
135
|
+
the terms of any separate license agreement you may have executed
|
|
136
|
+
with Licensor regarding such Contributions.
|
|
137
|
+
|
|
138
|
+
6. Trademarks. This License does not grant permission to use the trade
|
|
139
|
+
names, trademarks, service marks, or product names of the Licensor,
|
|
140
|
+
except as required for reasonable and customary use in describing the
|
|
141
|
+
origin of the Work and reproducing the content of the NOTICE file.
|
|
142
|
+
|
|
143
|
+
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
144
|
+
agreed to in writing, Licensor provides the Work (and each
|
|
145
|
+
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
146
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
147
|
+
implied, including, without limitation, any warranties or conditions
|
|
148
|
+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
149
|
+
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
150
|
+
appropriateness of using or redistributing the Work and assume any
|
|
151
|
+
risks associated with Your exercise of permissions under this License.
|
|
152
|
+
|
|
153
|
+
8. Limitation of Liability. In no event and under no legal theory,
|
|
154
|
+
whether in tort (including negligence), contract, or otherwise,
|
|
155
|
+
unless required by applicable law (such as deliberate and grossly
|
|
156
|
+
negligent acts) or agreed to in writing, shall any Contributor be
|
|
157
|
+
liable to You for damages, including any direct, indirect, special,
|
|
158
|
+
incidental, or consequential damages of any character arising as a
|
|
159
|
+
result of this License or out of the use or inability to use the
|
|
160
|
+
Work (including but not limited to damages for loss of goodwill,
|
|
161
|
+
work stoppage, computer failure or malfunction, or any and all
|
|
162
|
+
other commercial damages or losses), even if such Contributor
|
|
163
|
+
has been advised of the possibility of such damages.
|
|
164
|
+
|
|
165
|
+
9. Accepting Warranty or Additional Liability. While redistributing
|
|
166
|
+
the Work or Derivative Works thereof, You may choose to offer,
|
|
167
|
+
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
168
|
+
or other liability obligations and/or rights consistent with this
|
|
169
|
+
License. However, in accepting such obligations, You may act only
|
|
170
|
+
on Your own behalf and on Your sole responsibility, not on behalf
|
|
171
|
+
of any other Contributor, and only if You agree to indemnify,
|
|
172
|
+
defend, and hold each Contributor harmless for any liability
|
|
173
|
+
incurred by, or claims asserted against, such Contributor by reason
|
|
174
|
+
of your accepting any such warranty or additional liability.
|
|
175
|
+
|
|
176
|
+
END OF TERMS AND CONDITIONS
|
|
177
|
+
|
|
178
|
+
APPENDIX: How to apply the Apache License to your work.
|
|
179
|
+
|
|
180
|
+
To apply the Apache License to your work, attach the following
|
|
181
|
+
boilerplate notice, with the fields enclosed by brackets "[]"
|
|
182
|
+
replaced with your own identifying information. (Don't include
|
|
183
|
+
the brackets!) The text should be enclosed in the appropriate
|
|
184
|
+
comment syntax for the file format. We also recommend that a
|
|
185
|
+
file or class name and description of purpose be included on the
|
|
186
|
+
same "printed page" as the copyright notice for easier
|
|
187
|
+
identification within third-party archives.
|
|
188
|
+
|
|
189
|
+
Copyright [yyyy] [name of copyright owner]
|
|
190
|
+
|
|
191
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
192
|
+
you may not use this file except in compliance with the License.
|
|
193
|
+
You may obtain a copy of the License at
|
|
194
|
+
|
|
195
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
196
|
+
|
|
197
|
+
Unless required by applicable law or agreed to in writing, software
|
|
198
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
199
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
200
|
+
See the License for the specific language governing permissions and
|
|
201
|
+
limitations under the License.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Mobile Debug Tools for Cursor
|
|
2
|
+
|
|
3
|
+
Generated by `npm run sync:agent-plugin`; edit the canonical plugin source.
|
|
4
|
+
|
|
5
|
+
Copy the contents of this directory into `~/.cursor/plugins/local/mobile-debug-tools`,
|
|
6
|
+
then run Developer: Reload Window and check Customize for the skill and MCP server.
|
|
7
|
+
Do not copy the portable parent plugin: its `${PLUGIN_DATA}` variable is not expanded by Cursor.
|
|
8
|
+
|
|
9
|
+
Setup and support: https://github.com/clivejefferies/mobile-debug-tools
|