hopper-debugger
Hopper native debugging: macOS/iOS binaries, ObjC/Swift symbols, dyld, LLDB.
Skill by yo-steven
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/yo-steven-hopper-debugger
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/hopper-debugger
What's inside
- Skill name
hopper-debugger- Description
- Hopper native debugging: macOS/iOS binaries, ObjC/Swift symbols, dyld, LLDB.
- License
- MIT
- Instructions
- 130 lines in SKILL.md · view on GitHub
Files (2)
- SKILL.md
- openai.yaml · agents/
SKILL.md (first lines)
# Hopper Debugger Goal: use Hopper through `mcporter` as a queryable disassembler, then combine the result with local source, LLDB, logs, and focused repros. ## Quick Start Validate the MCP server: ```bash MCPORTER_LIST_TIMEOUT=15000 timeout 20 mcporter list hopper --brief ``` List open Hopper documents: ```bash MCPORTER_CALL_TIMEOUT=20000 timeout 30 mcporter call hopper.list_documents --output json ``` If no document is open, open the binary/framework in Hopper first: ```bash open -a "Hopper Disassembler" /path/to/Binary ``` Hopper may show a first-open/import dialog. Let the user click the confirmation button, then retry the MCP call. Avoid parallel Hopper MCP calls; the server can close the transport or crash Hopper while import is still settling. ## Apple Frameworks Prefer already extracted dyld-cache framework binaries when present: ```bash /tmp/dsc-appkit/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit /tmp/dsc-appkit/System/Library/Frameworks/SwiftUI.framework/Versions/A/SwiftUI ``` Open one at a time when debugging SwiftUI/AppKit boundary issues: ```bash open -a "Hopper Disassembler" /tmp/dsc-appkit/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit mcporter call hopper.list_documents --output json open -a "Hopper Disassembler" /tmp/dsc-appkit/System/Library/Frameworks/SwiftUI.framework/Versions/A/SwiftUI mcporter call hopper.list_documents --output json ``` Verify access: ```bash mcporter call hopper.list_documents --output json mcporter call hopper.current_document --output json mcporter call hopper.search_strings pattern=SwiftUI --output json mcporter call hopper.search_strings pattern=NSStatusItem --output json ``` Document names can start as `Untitled`; retry after Hopper finishes importing. Use `current_document`, symbol/string searches, and window title changes to identify AppKit vs SwiftUI. ## Query Workflow 1. Start from the local source path or runtime symbol you are trying to explain. 2. Search names/procedures/strings: ```bash mcporter call hopper.search_procedures pattern='NSStatusBar' --output json mcporter call hopper.search_name pattern='NSStatusBarButtonCell' --output json mcporter call hopper.search_strings pattern='NSStatusItem' --output json ``` 3. Inspect one small target at a time: ```bash mcporter call hopper.procedure_info procedure='<symbol>' --output json mcporter call hopper.procedure_assembly procedure='<symbol>' --output json mcporter call hopper.procedure_pseudo_code procedure='<symbol>' --output json mcporter call hopper.procedure_callers procedure='<symbol>' --output json mcporter call hopper.procedure_callees procedure='<symbol>' --output json mcporter call hopper.xrefs address=0x12345678 --output json ``` 4. Summarize the relevant control flow; do not paste large decompilations. 5. Validate the hypothesis with LLDB/logging/repro before editing app code. ## Status Item / Menu Click Bugs Useful AppKit/SwiftUI searches: ```bash mcporter call hopper.search_strings pattern='NSStatusItem_Private_ForSwiftUI' --output json mcporter call hopper.search_procedures pattern='popUpStatusBarMenu' --output json mcporter call hopper.search_procedures pattern='trackMouse' --output json mcporter call hopper.search_name pattern='NSStatusBarButtonCell' --output json mcporter call hopper.search_name pattern='NSStatusItem' --output json ``` Symbols worth inspecting when menu bar clicks do nothing: - `-[NSStatusBarButtonCell trackMouse:inRect:ofView:untilMouseUp:]` - `-[NSStatusBarButtonCell _sendActionFrom:]` - `-[NSStatusItem popUpStatusBarMenu:]` - `-[NSApplication sendAction:to:from:]` - SwiftUI status/menu symbols that reference `NSStatusItem_Private_ForSwiftUI` Compare disassembly against runtime state: ```bash pgrep -af "App.app/Contents/MacOS/App" lldb /path/to/debug/Binary ``` For hardened signed apps, attach may fail without `get-task-allow`; launch the raw debug binary under LLDB when needed. ## Failure Handling - Wrap Hopper calls with `timeout`; a modal/import or closed document can leave the transport stuck. - Do not send concurrent Hopper MCP requests during import. If a query is expensive, wait for it to finish before starting another. - If calls report `Connection closed`, check for a Hopper modal, then retry after confirmation. - If Hopper crashes, reopen a single document, wait for import/analysis, and re-run `list_documents` before deeper searches. - If mcporter is wedged, inspect processes before killing anything: ```bash
From yo-steven/agent-scripts-exploration-20260519, MIT.
More from yo-steven/agent-scripts-exploration-20260519
- 0.463score
clawpatch-release
yo-steven
Release the clawpatch TypeScript CLI to npm and GitHub.
SkillCFreshness: CClaude Code +9 - 0.462score
domain-dns-ops
yo-steven
Peter DNS/domain ops: registrars, zones, redirects, DNS/HTTP verify; truth in manager.
SkillCFreshness: CClaude Code +9 - 0.460score
github-project-triage
yo-steven
RepoBar GitHub queue triage: current project by default; steipete/openclaw issue and PR discovery when broad triage is requested.
SkillCFreshness: CClaude Code +9 - 0.458score
clawsweeper-status
yo-steven
ClawSweeper status: recent URLs, workflow health, active workers, ops snapshot.
SkillCFreshness: CClaude Code +9 - 0.457score
github-author-context
yo-steven
GitHub contributor context: identity, activity, trust, company/team signal, notes.
SkillCFreshness: CClaude Code +9 - 0.457score
github-cache-hygiene
yo-steven
GitHub quota/cache hygiene: gh, ghx, xcache, gitcrawl, mirrors, rate limits.
SkillCFreshness: CClaude Code +9 - 0.457score
instruments-profiling
yo-steven
Instruments/xctrace profiling: macOS/iOS traces, binaries, CLI args, exports.
SkillCFreshness: CClaude Code +9 - 0.457score
mac-maintenance
yo-steven
Mac upkeep: brew update/upgrade, pull clean ~/Projects repos, empty Trash.
SkillCFreshness: CClaude Code +9 - 0.457score
browser-use
yo-steven
Chrome DevTools MCP automation for the existing Chrome tabs; no AppleScript.
SkillCFreshness: CClaude Code +9 - 0.457score
markdown-converter
yo-steven
Markitdown to Markdown: PDF, Office, HTML, data, OCR, audio, ZIP, YouTube.
SkillCFreshness: CClaude Code +9 - 0.457score
clickclack
yo-steven
ClickClack ops: hosted chat app, Hetzner prod deploy, DNS/docs/app surfaces, clean Docker rollout.
SkillCFreshness: CClaude Code +9 - 0.457score
cloudflare-registrar
yo-steven
Cloudflare Registrar via mcporter: domain availability, prices, registration.
SkillCFreshness: CClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- May 19, 2026 (5 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from yo-steven
- 0.463score
clawpatch-release
yo-steven
Release the clawpatch TypeScript CLI to npm and GitHub.
SkillCFreshness: CClaude Code +9 - 0.462score
domain-dns-ops
yo-steven
Peter DNS/domain ops: registrars, zones, redirects, DNS/HTTP verify; truth in manager.
SkillCFreshness: CClaude Code +9 - 0.460score
github-project-triage
yo-steven
RepoBar GitHub queue triage: current project by default; steipete/openclaw issue and PR discovery when broad triage is requested.
SkillCFreshness: CClaude Code +9 - 0.460score
rare-disease-cancer
yo-steven
Plan rare disease, hereditary disease, and cancer risk source investigation from public targets or selected active genome evidence.
SkillCFreshness: CClaude Code +9 - 0.459score
genomi-decode
yo-steven
Activate this skill for "/genomi decode", "decode my genome", "decode my DNA", "show me the dashboard", "the Genomi dashboard", "full report", "one-shot…
SkillCFreshness: CClaude Code +9 - 0.458score
clawsweeper-status
yo-steven
ClawSweeper status: recent URLs, workflow health, active workers, ops snapshot.
SkillCFreshness: CClaude Code +9
Cite this page
hopper-debugger skill. Agent Mart. https://agentmart.dev/skills/yo-steven-hopper-debugger (last updated 2026-10-24)