agentsclimarketplace

Debug kit

Skill dxiongya/debug-kit

Cross-platform app debug and testing skill for Claude Code. Build, launch, screenshot, tap, type, inspect, and monitor applications across 9 platforms: Electron, iOS, macOS, Web, Flutter, React Native, Android, Tauri, Chrome Extension. Auto-detects project type from package.json, pubspec.yaml, xcodeproj, build.gradle, src-tauri/, manifest.json (MV3). TRIGGER when: user says "run the app", "test the app", "take screenshot", "tap button", "debug", "launch", "check if it works", "hot reload", "monitor console", "check logs", or is working on ANY app project and wants to build, run, test, or verify changes. Also trigger when the user asks to interact with a running app, inspect UI elements, check performance, run accessibility audits, or simulate user input.From its SKILL.md

Install
npx -y skills add dxiongya/debug-kit

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its file declares

Copied from the file, not written here

The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

10.6 KB, ~2.6k tokens by cl100k_base, as published. Nobody here has run it

Debug Kit

Cross-platform app debug toolkit. One skill to build, launch, interact with, and inspect apps across 9 platforms.

Step 1: Determine Platform

Use pilot.sh detect or check project files manually:

Marker FilePlatformReferencemacOS perms†
pubspec.yamlFlutterreferences/flutter.mdonly for macOS target
package.json + react-native depReact Nativereferences/react-native.md
package.json + electron depElectronreferences/electron.md
package.json (other) or *.htmlWebreferences/web.md
*.xcodeproj / project.yml (iOS)iOSreferences/ios.md
*.xcodeproj / project.yml (macOS)macOSreferences/macos.mdrequired
build.gradle / settings.gradleAndroidreferences/android.md
src-tauri/tauri.conf.json / src-tauri/Cargo.tomlTaurireferences/tauri.mdrequired
manifest.json (manifest_version: 3) + wxt.config.*Chrome Extensionreferences/chrome-extension.md

macOS perms = Accessibility + Screen Recording on the terminal hosting Claude Code. Only the platforms that drive native macOS windows through mac-ctl.sh need these (macOS, Tauri, Flutter when targeting macOS). Every other platform reads pixels through its own protocol (CDP / simctl / adb) and needs nothing extra. See references/macos.md §Permissions for the setup steps and the "silent wallpaper redaction" gotcha when permission is missing.

After identifying the platform, read the corresponding references/<platform>.md for full command documentation.

Step 2: Use the Right Script

P=~/.claude/skills/debug-kit/scripts

# Electron (CDP protocol)
CDP_PORT=9222 node $P/cdp-client.mjs <command>

# iOS (xcrun simctl + CGEvent)
bash $P/ios-ctl.sh <command>

# macOS (Accessibility API + CGEventPostToPid, background by default + virtual pointer)
MAC_APP=AppName bash $P/mac-ctl.sh <command>

# Web (CDP via Chrome)
bash $P/web-ctl.sh <command>

# Flutter (delegates to ios/web/macos)
bash $P/flutter-ctl.sh <command>

# React Native (delegates to ios)
bash $P/rn-ctl.sh <command>

# Android (adb + uiautomator)
bash $P/android-ctl.sh <command>

# Chrome Extension (web-ext + CDP)
# See references/chrome-extension.md

# Tauri (delegates to mac-ctl.sh — AX API reads DOM through WKWebView)
bash $P/tauri-ctl.sh <command>

Or use the unified router: bash $P/pilot.sh <platform> <command> / bash $P/pilot.sh auto <command>

Universal Capabilities

Every platform supports these core operations (read platform reference for exact command names):

CapabilityDescription
RunBuild and launch the app
StopStop the running app
ScreenshotCapture current state as PNG
Tap / ClickSimulate touch/click at coordinates or by element identifier
Drag / ScrollDrag between points, scroll the view (macOS: background, with virtual pointer)
TypeInput text into focused element
HealthCheck environment, dependencies, running state
LogsStream or read app output
TestRun platform test suite (Jest / XCTest / flutter test / etc.)

Interaction Fidelity — never move the user's real cursor

This is the core policy. (1) Collection is always native/semantic. (2) Every mouse-controlling action is delivered in the BACKGROUND and represented by the virtual pointer — the real system cursor is NEVER moved and focus is never stolen. (3) Moving the real cursor (HID) is a manual-only escape hatch, never automatic.

Collection / inspection (screenshots, UI state, a11y, perf, logs): ALWAYS native/semantic. The virtual pointer plays no role here. Use the AX tree / XCUITest, CDP DOM/eval, uiautomator dump, the Dart VM Service, and native window-targeted screenshots (screencapture -l, simctl io, adb screencap, CDP screenshot). These are structured, deterministic, and don't disturb the app.

Interaction tiers — both are BACKGROUND (real cursor never moves); use the higher one when a handle exists:

TierHowTraitsWhen
T1 semanticAXPress / set-value+AXConfirm (macOS/iOS); CDP click/eval (Web/Electron/Tauri-webview); uiautomator / input by node (Android); VM Service / flutter_driver (Flutter)no real cursor, deterministic, fastest, CI-friendlydefault
T2 syntheticCGEventPostToPid (macOS), simctl io (iOS), adb input (Android) at coordinates — no real cursor moved, virtual pointer glides to show itbackground; for canvases / games / custom-drawn UI with no semantic handleauto-fallback when no element handle

Any mouse-controlling action shows the virtual pointer (it glides to the target and pulses) — that is how the "mouse" is represented, without ever touching the user's real cursor. The virtual pointer is a visualization layer over T1/T2; toggle off only for headless/CI (MAC_POINTER=off).

Escape hatch — real HID (moves your real cursor): MAC_INPUT=hid, manual opt-in only. Never selected automatically. Use it solely for the rare app that ignores background events (e.g. some games, or a Flutter desktop canvas) — and know it WILL move your real cursor and activate the app. For Flutter prefer the Dart VM Service / a flutter_driver build instead; on a mobile target, simctl/adb device input reaches Flutter without touching your cursor.

Unified knob: DK_FIDELITY=semantic|synthetic|real (default semantic) — all values stay in background mode and never touch the real cursor; it expresses intent (semantic vs coordinate) and does not enable HID. Moving the real cursor remains a deliberate, explicit MAC_INPUT=hid only.

Virtual pointer — global coverage (per-platform mechanism)

Every platform shows a virtual pointer (where the AI is interacting) without moving the user's real cursor. Toggle off everywhere with DK_POINTER=off. Mechanism per platform:

PlatformVirtual-pointer mechanism
macOSmac-overlay software cursor — a resident, click-through screen overlay that glides between points (dk-pointer.sh / mac-ctl).
Taurisame mac-overlay (via mac-ctl, window coords are screen coords).
Web / Electron / Chrome-extensionmac-overlay, fed by cdp-client.mjs: maps CSS click coords → screen points (window.screenX/Y + top-chrome offset).
Flutter (desktop)mac-overlay (via mac-ctl); (mobile target → uses iOS/Android mechanism).
iOSios-tap-indicator.swift — screen overlay drawn over the Simulator window at the tap site.
React Nativevia iOS (ios-ctlios-tap-indicator).
Androidthe device's native touch feedback (settings put system show_touches 1) — drawn on the device, precise, no mapping.

Shared service: dk-pointer.sh (ensure/feed/stop the resident software cursor by screen coordinates) backs the macOS-family overlays; iOS and Android use their platform-native indicators.

Per-platform testing recipes (best scheme)

Collection is always native/semantic; interaction stays background (see fidelity policy).

PlatformRecommended flow (collect → interact → verify)
macOSruntree/read (AX) → tap label(AXPress)/type(AX+AXConfirm)/drag/scrollread + screenshot
iOSruntree (XCUITest) → tap identifier/tap/type (simctl io) → screenshot
Androidrun/launchtree (uiautomator) → tap/swipe/type (adb input) → screenshot
Weblaunch <url>dom/eval/a11yclick "sel"/type "sel" "txt"screenshot/eval
Electronlaunch devhealth/eval/domclick/type/keyscreenshot
Flutterrunvm widgets (semantic tree) → mobile target tap (HID reaches canvas) or vm callvm widgets/screenshot
React Nativerun (auto-picks free Metro port) → tree/tap/type (via iOS) → screenshot
Tauridevtree/read (AX through WKWebView) → tap-bg label(AXPress)/type-bgscreenshot
Chrome Extensionopen the extension page → CDP via web-ctl (dom/eval/click/screenshot); auto-detected from manifest.json (MV3)/wxt.config.*

Composition

Scripts share infrastructure and delegate across platforms:

Electron  ─── cdp-client.mjs (zero-dep WebSocket + CDP) ──→ dk-pointer.sh (screen cursor)
Web       ─── web-ctl.sh ──── cdp-client.mjs (reuses same CDP) ──→ dk-pointer.sh
iOS       ─── ios-ctl.sh (simctl + JXA CGEvent) ──→ ios-tap-indicator.swift
macOS     ─── mac-ctl.sh ──┬── mac-input.js (background: CGEventPostToPid + AX actions)
                           └── mac-overlay  (virtual pointer overlay, Swift)
Flutter   ─── flutter-ctl.sh ──┬── ios-ctl.sh (iOS target) · flutter-vm.mjs (VM Service)
                               ├── cdp-client.mjs (Web target)
                               └── mac-ctl.sh (macOS target)
React Native ─ rn-ctl.sh ──── ios-ctl.sh (iOS interaction)
Android   ─── android-ctl.sh (adb + uiautomator; native show_touches pointer)
Tauri     ─── tauri-ctl.sh ──── mac-ctl.sh (AX API reads DOM through WKWebView)
Chrome Ext ── (pilot → web-ctl) ── cdp-client.mjs (CDP against extension pages)

dk-pointer.sh ── shared software-cursor service (mac-overlay) used by the macOS-family
                 platforms; iOS/Android use platform-native touch indicators.

What ships with it: 34 files

345.3 KB alongside SKILL.md, 20 of them executable

references/

scripts/

Keep looking

Skills are one crate of 326,851. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.