Agent skill

Gui Debug

by natsukium in natsukium/dotfiles

Verify a rendering or window-chrome change in any macOS GUI app unattended — find its CGWindowID via JXA, capture that window alone (with per-pixel alpha) using screencapture -l, and read exact RGBA…

CC0-1.0Auto-check passedFrontend & Design

Install Gui Debug

skills CLI
$ npx skills add natsukium/dotfiles --skill gui-debug -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install natsukium/dotfiles gui-debug --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/natsukium/dotfiles.git skills-src && mkdir -p .claude/skills && cp -r skills-src/modules/features/coding-agents/common/skills-darwin/gui-debug .claude/skills/gui-debug && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
gui-debug
GitHub stars
106
Token cost
~909 tokens
SKILL.md length
315 words
Files
1
Skills in repo
10
Repo updated
First seen
Licence
CC0-1.0

At a glance

Verify a rendering or window-chrome change in any macOS GUI app unattended — find its CGWindowID via JXA, capture that window alone (with per-pixel alpha) using screencapture -l, and read exact RGBA…

  • Blur/opacity/corner-radius/glyph/color rendering bugs where a screenshot
  • SKILL.md covers Launch → window id → capture, Pixel probe — exact RGBA, no…, Process hygiene and Multi-display gotchas
  • Calls osascript
  • Pixel value is the ground truth

What it does

Gui Debug is an agent skill from natsukium/dotfiles. Verify a rendering or window-chrome change in any macOS GUI app unattended — find its CGWindowID via JXA, capture that window alone (with per-pixel alpha) using screencapture -l, and read exact RGBA via NSBitmapImageRep. Use for blur/opacity/corner-radius/glyph/color rendering bugs where a screenshot or pixel value is the ground truth. No Python and no Accessibility permission needed.

Its SKILL.md is about 910 tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Frontend & Design, covering Accessibility. It works with macOS and Python. The repository describes itself as: Nix dotfiles for NixOS, Darwin and WSL. The licence is CC0-1.0.

When your agent uses it

  • Blur/opacity/corner-radius/glyph/color rendering bugs where a screenshot
  • Pixel value is the ground truth

Example prompts

  • “/gui-debug”

Requirements

  • Python 3

What it can do on your machine

Read from SKILL.md and the folder at commit 3d57913. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • osascript

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Gui Debug loads about 909 tokens when it runs. Until then it costs about 99 tokens; SKILL.md has 315 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~99
When it runs · the whole SKILL.md, loaded when a task matches
~909

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from natsukium/dotfiles at commit 3d57913, republished under its CC0-1.0 licence (© natsukium). 315 words, ~909 tokens.

Download SKILL.mdSave it as .claude/skills/gui-debug/SKILL.md (or your agent's skills folder).
name
gui-debug
description
Verify a rendering or window-chrome change in any macOS GUI app unattended — find its CGWindowID via JXA, capture that window alone (with per-pixel alpha) using screencapture -l, and read exact RGBA via NSBitmapImageRep. Use for blur/opacity/corner-radius/glyph/color rendering bugs where a screenshot or pixel value is the ground truth. No Python and no Accessibility permission needed.

macOS GUI debugging

Verify a rendering or window-chrome change by launching the app, capturing just its window, and probing pixels. None of this needs Accessibility permission. (System Events / keystroke injection does need it and is usually blocked — don't plan on typing into the window unattended.) Screen Recording permission is required for screenshots: if screencapture -x /tmp/full.png produces a non-black image, you have it.

Throughout, replace MyApp with the app's window-owner name (what shows in the menu bar / Activity Monitor) and myapp with the process name for pkill -x.

Launch → window id → capture

sh
./path/to/MyApp 2>/tmp/app.log & sleep 4   # or: open -a MyApp
WID=$(osascript -l JavaScript -e '
ObjC.import("CoreGraphics");
const list = ObjC.castRefToObject($.CGWindowListCopyWindowInfo($.kCGWindowListOptionOnScreenOnly, $.kCGNullWindowID));
const arr = ObjC.deepUnwrap(list);
const w = arr.filter(x => x.kCGWindowOwnerName === "MyApp")[0];
w ? w.kCGWindowNumber : "none";')
screencapture -o -l$WID /tmp/app-win.png   # window only, no drop shadow
  • ObjC.castRefToObject is required — ObjC.deepUnwrap on the raw CFArrayRef fails with "Ref has incompatible type".
  • screencapture -o -l<id> captures the window's own composited content with per-pixel alpha: a translucent background shows its real alpha (e.g. 153 for opacity = 0.6), and rounded-corner pixels read fully transparent. This is the ground truth for transparency / corner-clip checks — a full-screen capture is not.
  • A tiling WM (or the app itself) may resize the window after launch — re-read kCGWindowBounds instead of assuming a fixed size. The post-resize capture also catches relayout bugs (AppKit reorders sublayers on the first layout pass).

Pixel probe — exact RGBA, no Python

sh
osascript -l JavaScript -e '
ObjC.import("AppKit");
const rep = $.NSBitmapImageRep.imageRepWithContentsOfFile("/tmp/app-win.png");
function p(x,y){const c=rep.colorAtXY(x,y);return [c.redComponent,c.greenComponent,c.blueComponent,c.alphaComponent].map(v=>Math.round(v*255)).join(",");}
const h = rep.pixelsHigh*1, w = rep.pixelsWide*1;
JSON.stringify({w:w,h:h,center:p(Math.floor(w/2),Math.floor(h/2)),tl:p(2,2),bl:p(2,h-3),br:p(w-3,h-3)});'
  • Corner pixels reading 0,0,0,0 = the rounded clip works.
  • A frosted-glass / vibrancy background (NSVisualEffectView) behind a Metal/CALayer reads centre alpha 255 even when "transparent" — that's the opaque blur material, not a transparency failure. Test raw alpha with blur disabled.

Process hygiene

  • pkill -x myapp — match the exact process name. Never pkill -f path/to/MyApp, which also matches helper processes (renderers, daemons) whose argv contains that path and can kill unrelated user sessions.
  • Comparing against an older build: use a separate build dir / git worktree so the two binaries don't clobber each other's artifacts.

Multi-display gotchas

  • screencapture -x -R<x,y,w,h> fails with "could not create image from rect" across display boundaries. Capture per display (-D 1, -D 2) or stick to window captures (-l<id>), which are display-agnostic.

© natsukium, CC0-1.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in modules/features/coding-agents/common/skills-darwin/gui-debug of natsukium/dotfiles.

Open the folder on GitHubat commit 3d57913

Compare with similar skills

Gui Debug next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Gui Debug compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Gui Debug this skillnatsukium/dotfiles106—~909Automated safety check: PassCC0-1.0
Jarvis Setupethanplusai/jarvis838—~2.5kAutomated safety check: NotesCustom licence
DocsPrefectHQ/fastmcp28k—~1kAutomated safety check: PassApache-2.0
Implementing Navigationancoleman/ai-design-components526—~1.8kAutomated safety check: PassMIT
Implementing Search Filterancoleman/ai-design-components526—~1.6kAutomated safety check: PassMIT
Ibm A11y Route Scanlangflow-ai/langflow156k—~1.6kAutomated safety check: PassMIT

Similar skills

  • Jarvis Setup

    ethanplusai/jarvis

    A skill your agent uses when helping someone install, configure, or debug a fresh clone of JARVIS (this repo) — especially "the mic doesn't work", "JARVIS says his language systems are down", any…

    838 GitHub stars~2.5k tokensUpdated 27 days ago
    Frontend & DesignAuto-check: notes
  • Docs

    PrefectHQ/fastmcp

    Write or revise a page under docs/ for gofastmcp.com. An agent skill from PrefectHQ/fastmcp.

    28k GitHub stars~1k tokensUpdated yesterday
    Frontend & DesignAuto-check passed
  • Implementing Navigation

    ancoleman/ai-design-components

    Implements navigation patterns and routing for both frontend (React/TS) and backend (Python) including menus, tabs, breadcrumbs, client-side routing, and server-side route configuration.

    526 GitHub stars~1.8k tokensUpdated 10 mo ago
    Frontend & DesignAuto-check passed
  • Implementing Search Filter

    ancoleman/ai-design-components

    Implements search and filter interfaces for both frontend (React/TypeScript) and backend (Python) with debouncing, query management, and database integration.

    526 GitHub stars~1.6k tokensUpdated 10 mo ago
    Frontend & DesignAuto-check passed
  • Ibm A11y Route Scan

    langflow-ai/langflow

    Batch-scan Langflow frontend routes for accessibility issues using the Python IBM Equal Access scanner (scripts/a11y/a11yscan.py) and produce JSON/Markdown/HTML reports.

    156k GitHub stars~1.6k tokensUpdated today
    Frontend & DesignAuto-check passed
  • Agent Desktop

    superagent-ai/grok-cli

    Use the built-in Computer sub-agent with agent-desktop for macOS desktop automation.

    3.5k GitHub stars~720 tokensUpdated 3 mo ago
    Productivity & AutomationAuto-check passed

More from natsukium/dotfiles

All 10 skills in this repo
  • Pi Review

    natsukium/dotfiles

    Delegate a source-grounded design or code review to a fresh pi CLI process using sol or luna, then address verified findings until no blockers remain.

    106 GitHub stars~972 tokensUpdated yesterday
    Auto-check passed
  • Attmcojp Claude Md

    natsukium/dotfiles

    Change the org-level CLAUDE.md that governs every attmcojp repository.

    106 GitHub stars~1.3k tokensUpdated yesterday
    Auto-check: notes
  • Ghq

    natsukium/dotfiles

    Clone and reuse GitHub/GitLab repositories under a single managed root (ghq root) instead of fetching files one-by-one via gh api/WebFetch or scratch-cloning into /tmp.

    106 GitHub stars~1.2k tokensUpdated yesterday
    Auto-check passed
  • Gui Debug

    natsukium/dotfiles

    Verify a rendering or window-chrome change in a GUI app unattended on Linux/Wayland under the niri compositor — enumerate windows and read output scale via niri msg --json, capture a specific window…

    106 GitHub stars~1.1k tokensUpdated yesterday
    Auto-check passed
  • Po Translate

    natsukium/dotfiles

    Orchestrate English→Japanese translation of po/ja.po — classify, delegate translation/review to subagents, iterate until clean

    106 GitHub stars~1.4k tokensUpdated yesterday
    Auto-check passed
  • Gh

    natsukium/dotfiles

    GitHub CLI for pull requests, issues, releases, workflows, and repository operations.

    106 GitHub stars~422 tokensUpdated yesterday
    Auto-check passed

Works with

Questions about Gui Debug

What does Gui Debug do?

Verify a rendering or window-chrome change in any macOS GUI app unattended — find its CGWindowID via JXA, capture that window alone (with per-pixel alpha) using screencapture -l, and read exact RGBA…. Gui Debug is an agent skill from natsukium/dotfiles. Verify a rendering or window-chrome change in any macOS GUI app unattended — find its CGWindowID via JXA, capture that window alone (with per-pixel alpha) using screencapture -l, and read exact RGBA via NSBitmapImageRep.

When should I use Gui Debug?

Gui Debug fits situations like: blur/opacity/corner-radius/glyph/color rendering bugs where a screenshot; pixel value is the ground truth.

How do I install Gui Debug in Claude Code?

Run `npx skills add natsukium/dotfiles --skill gui-debug -a claude-code`. Or copy the skill folder (modules/features/coding-agents/common/skills-darwin/gui-debug in natsukium/dotfiles) into .claude/skills/gui-debug in your project. Claude Code loads it when a task matches its description.

How do I install Gui Debug in Codex?

Run `npx skills add natsukium/dotfiles --skill gui-debug -a codex`. Or copy the skill folder (modules/features/coding-agents/common/skills-darwin/gui-debug in natsukium/dotfiles) into .agents/skills/gui-debug in your project. Codex loads it when a task matches its description.

Can I use Gui Debug in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add natsukium/dotfiles --skill gui-debug -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/gui-debug, .gemini/skills/gui-debug, .github/skills/gui-debug and .opencode/skills/gui-debug in your project.

What does Gui Debug need to run?

Going by SKILL.md and its folder, Gui Debug needs the command-line tools its instructions call (osascript). Our summary lists: Python 3.

Does Gui Debug access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Gui Debug safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Gui Debug use?

Gui Debug is published under the CC0-1.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Gui Debug use?

About 909 tokens (SKILL.md is roughly 3.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Gui Debug?

Skills that share tags, products or a category with Gui Debug: Jarvis Setup (ethanplusai/jarvis, 838 stars), Docs (PrefectHQ/fastmcp, 28k stars), Implementing Navigation (ancoleman/ai-design-components, 526 stars) and Implementing Search Filter (ancoleman/ai-design-components, 526 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Gui Debug?

natsukium (a GitHub user) maintains it in natsukium/dotfiles, which has 106 GitHub stars. The repository holds 10 skills in this directory. The repository was last updated on October 6, 2026.

Source: natsukium/dotfiles on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.