allthingsida/idasql-skills/ui-context
Claude Code and agent skill by allthingsida/idasql-skills
- community
Checking that the SKILL.md file is still in the repository.
Capture live IDA UI context. Use when the user references what's on screen, what's selected, or asks about the current view in IDA's GUI.
Install
npx vskill@latest install allthingsida/idasql-skills/ui-contextSKILL.md
Trigger Patterns
Use this skill for prompts like:
- "what am I looking at?"
- "what is on the screen?"
- "what's selected?"
- "look at what I'm doing"
- references such as "this", "here", "current", "selected", "that", "previous"
Capture Policy
- Call
get_ui_context_json()before answering UI-referential prompts. - Extract view info: widget type/title and custom-view state.
- Extract selection info when present: begin/end and preview text lines.
- Extract code anchor info when present: address, function, segment.
- If
has_address: false, explain limits and do not invent code context.
Widget Fields (focused_widget / main_viewer)
type_id(int): raw IDAtwidget_type_tnumeric id.type_name(string): the SDK macro name for the widget on the building SDK (for example"BWN_PSEUDOCODE","BWN_TILIST"). The name at SDK slot 10 differs by IDA version (BWN_TILVIEW/BWN_TICSR/BWN_TITREE).canonical_name(string): a stable cross-version name. For the "Local Types" widget (slot 10) this always reads"BWN_LOCAL_TYPES"; for every other widget it equalstype_name. Prefer this for cross-version reasoning.category(string): high-level grouping — one ofdisassembly,decompiler,hex_view,type_view,chooser,debugger,navigation,output,script,auxiliary,unknown.is_address(bool): widget exposes a meaningful address anchor (true for DISASM, HEXVIEW, PSEUDOCODE, MICROCODE).is_custom_view(bool): viewer-style widget with custom line content.is_chooser_like(bool): row-based list/chooser widget where row selection is meaningful.title(string): the widget's title as IDA reports it.
main_viewer carries the same widget fields except is_chooser_like (the main viewer is always a viewer, not a chooser).
Temporal Reference Rules
this/here/current/selected: capture a fresh snapshot for this question.that/previous/earlier: reuse the most recent snapshot in the same working flow.- If the user says "refresh", capture a new snapshot immediately.
Runtime Availability and Fallback
get_ui_context_json()is registered in every runtime, but only the IDA GUI
plugin returns live UI state.
- The live GUI envelope carries
available:true; the idalib/CLI stub carries
available:false / capture.source:"cli" (no error, just no UI). So available is the reliable GUI-vs-CLI discriminator in both directions — key on it.
- When you get the CLI stub, state this clearly and continue with non-UI queries (explicit addresses/symbols, or DB-orientation queries).
binary is database metadata only; it is not a UI context replacement.
Response Template
Use this fixed shape after reading UI context:
What You Are Viewing: widget/view summary.What Is Selected: selection range and preview (or "no active selection").Code Context: address/function/segment if available; otherwise mention non-address view.Limits: runtime constraints or missing fields affecting certainty.Suggested Next Query: one concrete follow-up command/query.
Examples
1) "What am I looking at?"
Answer with the template fields above. Include focused widget title/type and current anchor address if present.
2) "Look at what I'm doing"
Summarize active view and selection first, then propose the next action tied to that context (for example, decompile current function).
3) "What's selected right now?"
Prioritize selection begin/end and preview text. Explicitly state when there is no active selection.
4) "Explain this function"
- Capture UI context.
- If function/address context exists, pivot to decompiler.
Replace 0x401000 with the captured function/address anchor.
5) Follow-up: "What about that function?"
Reuse the most recent snapshot from the same flow (do not auto-refresh unless asked), then continue analysis from that stored anchor.
6) Non-address view (for example Local Types chooser)
If has_address: false, report chooser selection details and state there is no code address anchor in this view.
7) Plugin API unavailable (CLI/idalib)
If get_ui_context_json() cannot run:
- state that UI context is unavailable in this runtime
- ask for explicit symbol/address or continue with non-UI alternatives (for example
SELECT * FROM binaryfor DB orientation)
Guardrails
- Do not treat
binaryoutput as UI context. - Do not fabricate selection/address fields when absent.
- Do not recapture repeatedly in one answer unless user asks for refresh.
See also
deep-links— the other direction: move the user's IDA to a result
(SELECT ida_open_link(...)), and make answers clickable with [name](uri) links.
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingplugins/idasql/skills/ui-context/SKILL.md
Popularity
- Repository stars
- 49
- Repository forks
- 10
- 7-day trend score
- 0
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/allthingsida/idasql-skills/ui-context)