plugins/sandbox-first/skills/sandbox-first/SKILL.md
Use when a Bash command fails in the sandbox, or when considering whether to use dangerouslyDisableSandbox. Guides sandbox-first execution and sandbox config diagnosis.
npx skillsauth add technicalpickles/pickled-claude-plugins sandbox-firstInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Always run Bash commands sandboxed first. Never set dangerouslyDisableSandbox: true unless
a sandboxed attempt has already failed in this session, or the command is listed in
skip_failure_requirement (see Configured Exceptions below).
Before retrying with dangerouslyDisableSandbox:
bootstrap_check_in
and "Permission denied (1100)". The surface error looks like an
application crash (e.g. Chromium Check failed: kr == KERN_SUCCESS),
but the root cause is seatbelt denying mach-register/mach-lookup
for a service. Seen with Playwright launching headless Chromium, and
applies to other multi-process macOS tools (Electron, Puppeteer, etc.).
Sandbox config cannot grant Mach port access, so this genuinely
requires dangerouslyDisableSandbox.~/.claude/settings.json:
sandbox.network.allowedHostssandbox.filesystem.allowWriteSome commands are known to always fail in the sandbox (e.g. docker, colima ssh).
These can be configured in ~/.claude/sandbox-first.json or .claude/sandbox-first.json
under the skip_failure_requirement key. The enforcement hook will allow
dangerouslyDisableSandbox: true for these commands without requiring a prior
sandboxed failure.
dangerouslyDisableSandbox because you think a command
"might" fail in the sandbox. Try it first.dangerouslyDisableSandbox for convenience. It exists for cases where the
sandbox genuinely cannot support the operation.tools
--- name: writing-for-scannability description: Use when structuring prose so readers can skim it - drafting or restructuring READMEs, docs, PR or issue bodies, design docs, RFCs, or any long-form text where a wall of prose hides the structure. Also use when explicitly asked to make something scannable or skimmable, convert prose to a list, surface a buried list, fix a wall of text, or decide whether bullets or prose fit. Strong signal: text with parallel sentence shapes, contrast markers ("that
development
Ignore actually-lsp nudges for an ecosystem in this project. Use when the user wants to silence, dismiss, or ignore the LSP setup nudges for a specific ecosystem (Rust, TypeScript, Ruby), or invokes `/actually-lsp-ignore` directly. Writes `dismissed=true` to `.claude/actually-lsp.json`. Persistent across sessions for this project only.
tools
Diagnose and fix LSP setup for the current project's detected ecosystems (Rust, TypeScript, Ruby). Use when the SessionStart hook nudged about a missing LSP plugin, when the env isn't ready (no `bundle install`, no `cargo build`, missing server binary), when LSP calls are failing, or when the user invokes `/actually-lsp-doctor` directly. Walks the per-ecosystem state machine, reports what's missing, then runs the fix.
tools
--- name: investigating-runs description: Use whenever the user mentions a GitHub Actions / GHA run, even casually — invoke this skill before reaching for raw `gh` commands, because the bundled `gha-snapshot` helper distills `gh run view --log-failed` (a firehose) into a readable block with per-job status, failed-step log tails, and annotations. Specific triggers (any one is enough): a `github.com/.../actions/runs/...` URL; the phrase "GitHub Actions" or "GHA"; the `gh run` CLI; a failing workfl