OpenLogi macOS Permissions Triage
AprilNEA/OpenLogi
Decides whether an OpenLogi device problem on macOS is a privacy-permission (TCC) problem, using agent log lines, and says which identity needs which grant.
Investigates bugs, errors and stack traces in phases and requires a root-cause hypothesis to be confirmed before any fix is written.
$ npx skills add garrytan/gstack --skill gstack-openclaw-investigate -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install garrytan/gstack gstack-openclaw-investigate --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/garrytan/gstack.git skills-src && mkdir -p .claude/skills && cp -r skills-src/openclaw/skills/gstack-openclaw-investigate .claude/skills/gstack-openclaw-investigate && rm -rf skills-srcUse ~/.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/
Install the "gstack-openclaw-investigate" agent skill from https://github.com/garrytan/gstack/tree/main/openclaw/skills/gstack-openclaw-investigate into .claude/skills/gstack-openclaw-investigate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gstack-openclaw-investigate", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/garrytan/gstack/tree/main/openclaw/skills/gstack-openclaw-investigateType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add garrytan/gstack --skill gstack-openclaw-investigate -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install garrytan/gstack gstack-openclaw-investigate --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/garrytan/gstack.git skills-src && mkdir -p .agents/skills && cp -r skills-src/openclaw/skills/gstack-openclaw-investigate .agents/skills/gstack-openclaw-investigate && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "gstack-openclaw-investigate" agent skill from https://github.com/garrytan/gstack/tree/main/openclaw/skills/gstack-openclaw-investigate into .agents/skills/gstack-openclaw-investigate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gstack-openclaw-investigate", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add garrytan/gstack --skill gstack-openclaw-investigate -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install garrytan/gstack gstack-openclaw-investigate --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/garrytan/gstack.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/openclaw/skills/gstack-openclaw-investigate .cursor/skills/gstack-openclaw-investigate && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "gstack-openclaw-investigate" agent skill from https://github.com/garrytan/gstack/tree/main/openclaw/skills/gstack-openclaw-investigate into .cursor/skills/gstack-openclaw-investigate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gstack-openclaw-investigate", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/garrytan/gstack.git --path openclaw/skills/gstack-openclaw-investigate--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add garrytan/gstack --skill gstack-openclaw-investigate -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install garrytan/gstack gstack-openclaw-investigate --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/garrytan/gstack.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/openclaw/skills/gstack-openclaw-investigate .gemini/skills/gstack-openclaw-investigate && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "gstack-openclaw-investigate" agent skill from https://github.com/garrytan/gstack/tree/main/openclaw/skills/gstack-openclaw-investigate into .gemini/skills/gstack-openclaw-investigate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gstack-openclaw-investigate", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install garrytan/gstack gstack-openclaw-investigateInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add garrytan/gstack --skill gstack-openclaw-investigate -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/garrytan/gstack.git skills-src && mkdir -p .github/skills && cp -r skills-src/openclaw/skills/gstack-openclaw-investigate .github/skills/gstack-openclaw-investigate && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "gstack-openclaw-investigate" agent skill from https://github.com/garrytan/gstack/tree/main/openclaw/skills/gstack-openclaw-investigate into .github/skills/gstack-openclaw-investigate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gstack-openclaw-investigate", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add garrytan/gstack --skill gstack-openclaw-investigate -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install garrytan/gstack gstack-openclaw-investigate --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/garrytan/gstack.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/openclaw/skills/gstack-openclaw-investigate .opencode/skills/gstack-openclaw-investigate && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "gstack-openclaw-investigate" agent skill from https://github.com/garrytan/gstack/tree/main/openclaw/skills/gstack-openclaw-investigate into .opencode/skills/gstack-openclaw-investigate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gstack-openclaw-investigate", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
gstack-openclaw-investigateInvestigates bugs, errors and stack traces in phases and requires a root-cause hypothesis to be confirmed before any fix is written.
The skill's one rule is that no fix comes before a root cause investigation. Phase one gathers context: reading error messages, stack traces and reproduction steps, asking one question at a time when more detail is needed, tracing the code path from the symptom back to likely causes, checking recent changes with git log, reproducing the bug and looking for earlier debugging sessions in the same area. It ends with a stated, testable root cause hypothesis.
Phase two compares the failure with known patterns: race conditions, null propagation, state corruption, integration failures, configuration drift and stale caches. When nothing matches, the agent may search for the error type online after removing hostnames, IPs, file paths, SQL and customer data. Phase three tests the hypothesis before any fix is written.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 20eb620. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
gitFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Root Cause Debugging loads about 1.4k tokens when it runs. Until then it costs about 53 tokens; SKILL.md has 751 words of instructions outside code blocks.
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.
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.
The full file from garrytan/gstack at commit 20eb620, republished under its MIT licence (© garrytan). 751 words, ~1,368 tokens.
.claude/skills/gstack-openclaw-investigate/SKILL.md (or your agent's skills folder).NO FIXES WITHOUT ROOT CAUSE INVESTIGATION FIRST.
Fixing symptoms creates whack-a-mole debugging. Every fix that doesn't address root cause makes the next bug harder to find. Find the root cause, then fix it.
Gather context before forming any hypothesis.
Collect symptoms: Read the error messages, stack traces, and reproduction steps. If the user hasn't provided enough context, ask ONE question at a time. Don't ask five questions at once.
Read the code: Trace the code path from the symptom back to potential causes. Search for all references, read the logic around the failure point.
Check recent changes:
git log --oneline -20 -- <affected-files>Was this working before? What changed? A regression means the root cause is in the diff.
Reproduce: Can you trigger the bug deterministically? If not, gather more evidence before proceeding.
Check memory for prior debugging sessions on the same area. Recurring bugs in the same files are an architectural smell.
Output: "Root cause hypothesis: ..." ... a specific, testable claim about what is wrong and why.
Check if this bug matches a known pattern:
Race condition ... Intermittent, timing-dependent. Look at concurrent access to shared state.
Nil/null propagation ... NoMethodError, TypeError. Missing guards on optional values.
State corruption ... Inconsistent data, partial updates. Check transactions, callbacks, hooks.
Integration failure ... Timeout, unexpected response. External API calls, service boundaries.
Configuration drift ... Works locally, fails in staging/prod. Env vars, feature flags, DB state.
Stale cache ... Shows old data, fixes on cache clear. Redis, CDN, browser cache.
Also check:
External search: If the bug doesn't match a known pattern, search for the error type online. Sanitize first: strip hostnames, IPs, file paths, SQL, customer data. Search the error category, not the raw message.
Before writing ANY fix, verify your hypothesis.
Confirm the hypothesis: Add a temporary log statement, assertion, or debug output at the suspected root cause. Run the reproduction. Does the evidence match?
If the hypothesis is wrong: Search for the error (sanitize sensitive data first). Return to Phase 1. Gather more evidence. Do not guess.
3-strike rule: If 3 hypotheses fail, STOP. Tell the user:
"3 hypotheses tested, none match. This may be an architectural issue rather than a simple bug."
Options:
Red flags ... if you see any of these, slow down:
Once root cause is confirmed:
Fix the root cause, not the symptom. The smallest change that eliminates the actual problem.
Minimal diff: Fewest files touched, fewest lines changed. Resist the urge to refactor adjacent code.
Write a regression test that:
Run the full test suite. No regressions allowed.
If the fix touches >5 files: Flag the blast radius to the user before proceeding. That's large for a bug fix.
Fresh verification: Reproduce the original bug scenario and confirm it's fixed. This is not optional.
Run the test suite.
Output a structured debug report:
DEBUG REPORT
Save the report to memory/ with today's date so future sessions can reference it.
© garrytan, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in openclaw/skills/gstack-openclaw-investigate of garrytan/gstack.
Open the folder on GitHubat commit 20eb620
Root Cause Debugging 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Root Cause Debugging this skillgarrytan/gstack | 136k | — | ~1.4k | Automated safety check: Pass | MIT | |
| OpenLogi macOS Permissions TriageAprilNEA/OpenLogi | 23k | — | ~2.5k | Automated safety check: Notes | Apache-2.0 | |
| Bug Finder for daisyUIsaadeghi/daisyui | 43k | — | ~2.3k | Automated safety check: Pass | MIT | |
| Graph-Based Bug Tracingtirth8205/code-review-graph | 32k | 1 repos | ~287 | Automated safety check: Pass | MIT | |
| Systematic DebuggingChrisWiles/claude-code-showcase | 6.1k | 3 repos | ~1.2k | Automated safety check: Pass | None | |
| Debugging and Error Recoveryaddyosmani/agent-skills | 103k | 1 repos | ~2.6k | Automated safety check: Pass | MIT |
AprilNEA/OpenLogi
Decides whether an OpenLogi device problem on macOS is a privacy-permission (TCC) problem, using agent log lines, and says which identity needs which grant.
saadeghi/daisyui
Investigates suspected bugs in the daisyUI monorepo through read-only analysis, then writes a decision-ready fix plan in tmp/bugs without changing any product code.
tirth8205/code-review-graph
Traces a bug through a code knowledge graph, following callers, callees and execution flow before opening source files, within a small token budget.
ChrisWiles/claude-code-showcase
Applies a four-phase debugging routine that finds the root cause of a bug or failing test before any fix is written.
addyosmani/agent-skills
Applies a stop-the-line rule and a step-by-step triage when tests fail, builds break or something stops working, aiming at the root cause instead of guesses.
sangrokjung/claude-forge
Master systematic debugging techniques, profiling tools, and root cause analysis to efficiently track down bugs across any codebase or technology stack.
garrytan/gstack
Router for the gstack skill suite. (gstack)
garrytan/gstack
Builds a weekly engineering retrospective from git history: commit counts, per-person contributions, work patterns and code quality numbers over a chosen window.
garrytan/gstack
Drives a real browser through Aside so the agent can open a page, read it, click through a flow, take screenshots and check console errors.
garrytan/gstack
Tests a SwiftUI app on a real iPhone connected by USB, reading the Swift source and then looping through screenshot, analysis and action to find bugs.
garrytan/gstack
Sends one prompt to Claude, GPT through the Codex CLI and Gemini, then tabulates response time, token use and cost, with an optional judged quality score.
garrytan/gstack
Runs an evidence-first security audit of a codebase through gstack's trusted launcher, with static findings by default and isolated reproduction when enabled.
Categories
Investigates bugs, errors and stack traces in phases and requires a root-cause hypothesis to be confirmed before any fix is written. The skill's one rule is that no fix comes before a root cause investigation. Phase one gathers context: reading error messages, stack traces and reproduction steps, asking one question at a time when more detail is needed, tracing the code path from the symptom back to likely causes, checking recent changes with git log, reproducing the bug and looking for earlier debugging sessions in the same area.
Root Cause Debugging fits situations like: A user reports an error, a stack trace or something that stopped working; tracking down the cause of an intermittent or environment-specific failure; investigating a regression that appeared after recent changes.
Run `npx skills add garrytan/gstack --skill gstack-openclaw-investigate -a claude-code`. Or copy the skill folder (openclaw/skills/gstack-openclaw-investigate in garrytan/gstack) into .claude/skills/gstack-openclaw-investigate in your project. Claude Code loads it when a task matches its description.
Run `npx skills add garrytan/gstack --skill gstack-openclaw-investigate -a codex`. Or copy the skill folder (openclaw/skills/gstack-openclaw-investigate in garrytan/gstack) into .agents/skills/gstack-openclaw-investigate in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add garrytan/gstack --skill gstack-openclaw-investigate -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/gstack-openclaw-investigate, .gemini/skills/gstack-openclaw-investigate, .github/skills/gstack-openclaw-investigate and .opencode/skills/gstack-openclaw-investigate in your project.
Going by SKILL.md and its folder, Root Cause Debugging needs the command-line tools its instructions call (git).
SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
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.
Root Cause Debugging is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.4k tokens (SKILL.md is roughly 5.5k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Root Cause Debugging: OpenLogi macOS Permissions Triage (AprilNEA/OpenLogi, 23k stars), Bug Finder for daisyUI (saadeghi/daisyui, 43k stars), Graph-Based Bug Tracing (tirth8205/code-review-graph, 32k stars) and Systematic Debugging (ChrisWiles/claude-code-showcase, 6.1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
garrytan (a GitHub user) maintains it in garrytan/gstack, which has 135,670 GitHub stars. The repository holds 56 skills in this directory. The repository was last updated on October 9, 2026.
Source: garrytan/gstack on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.