Agent skill · software engineering · steipete
hopper-debugger
Hopper debugging: macOS/iOS binaries, ObjC/Swift symbols, dyld, LLDB.
Why this skill is useful
Adds executable scripts for querying Hopper disassembler and debugging macOS/iOS binaries that are not in public documentation.
What it needs
Requires hopper, mcporter installed locally. About 3k tokens when loaded. Last updated 2026-08-06. 6,510 stars on the source repository.
What this skill does
Hopper Debugger Use Hopper through mcporter as a queryable disassembler, then combine the result with local source, LLDB, logs, and focused repros. Setup (one time) Hopper 6.0+ ships its own MCP server. Do not install a third-party one. --scope home is required. The default scope is project, which writes config/mcporter.json into whatever repo you are standing in (untracked repo dirt, lost with the worktree). Verify: Call convention — the one that bites Always pass arguments with --args. Never --params. mcporter accepts an unknown --params flag silently, drops the payload, and the call arrives with no arguments. Hopper then answers Document not found., which reads like a licensing or state problem and is not. Related: the server does not fall back to the current document. A call with no document argument fails even when currentdocument returns a valid name. Pass document on every document-scoped call. Document names come from listdocuments and carry no .hop extension (window title AppKit.hop → document name AppKit). If a call still fails, drive the server directly over stdio to see the raw JSON-RPC — this bypasses mcporter entirely and isolates who is at fault: Licensing — do not misdiagnose Hopper 6.x still uses the bundle id and preferences domain com.cryptic-apps.hopper-web-4. The absence of a hopper-web-6 domain does not mean the app is unlicensed. Check the real state in the About panel (Hopper Disassembler > About Hopper Disassembler); it prints the licensee, order id, and update-plan expiry. There is no Register/License menu item in Hopper 6. Peter's license: order HOP140213-7833-95831, updates through 2027-05-17. The .hopperLicense file is in 1Password (Molty vault, document item "Hopper Disassembler License (HOP140213-7833-95831)"); load $one-password to retrieve it. Opening a .hopperLicense file with Hopper does not register it — Hopper disassembles it as a document. Opening documents Small binaries import with no dialog. …
How to use it
Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:
@skills steipete/hopper-debugger