agentsclimarketplace

Sandbox

Skill nakane1chome/claude-skills/skills/sandbox

Scaffolds a Docker "sandbox" harness into a repo so Claude Code can run in `--dangerously-skip-permissions` (YOLO) mode inside an Ubuntu container, with the project bind-mounted at /workspace and the host's ~/.claude bind-mounted for auth and session continuity. Use when the developer wants an isolated filesystem for agent writes but still wants host-visible builds, logs, and session history.From its SKILL.md

Install
npx -y skills add nakane1chome/claude-skills --skill sandbox

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

9.2 KB, ~2.2k tokens by cl100k_base, as published. Nobody here has run it

This skill installs a four-file Docker harness into a target repo: run-sandbox.sh (launcher), docker-compose.yml, docker/Dockerfile, docker/entrypoint.sh. Once installed, ./run-sandbox.sh --build launches Claude Code inside a container without permission prompts.

Stop after each stage and have changes reviewed with the user.

Philosophy: The sandbox isolates writes the agent makes to the working tree (via an agent user matching host UID/GID, and via per-tool cache/build-dir duplication like .pytest_cache.sandbox/ or build.sandbox/) but intentionally shares ~/.claude and ~/.claude.json with the host so auth, session history, and projects config persist across host ↔ container runs. This trade-off is what makes --resume <id> work across boundaries — and it's also why a misbehaving YOLO agent can corrupt host config. The developer should understand both sides before installing.

See responsibilities.md for the full agent vs developer ownership matrix, reference/placeholders.md for the template-variable list, and reference/detection.md for language-detection rules.

Stage 0 — Understand the target repo (agent proposes, developer confirms)

  • Resolve the target directory: use $ARGUMENTS if set; otherwise default to $(pwd). If $ARGUMENTS is set but the path doesn't exist or isn't a directory, stop and ask the user.
  • Detect the repo's build system using the rules in reference/detection.md. Summarize: Python (pyproject.toml, requirements.txt), CMake (CMakeLists.txt), Node/TypeScript (package.json), combinations, or none.
  • Check for collisions — does the target already have run-sandbox.sh, docker-compose.yml, docker/Dockerfile, or docker/entrypoint.sh? If so, list each and ask the user whether to overwrite, merge, or abort.
  • Check for .claude/settings.json in the target — if it contains hardcoded absolute paths (e.g. hook commands using /home/user/...), flag this, because the entrypoint's host-path symlink needs to match.
  • Enumerate per-stack concerns that require harness adaptation. Don't just note them — read the repo well enough to write down the concrete change each concern implies, ready to fold into Stage 1. Examples:
    • Dev server / port binding. If the repo runs a dev server (npm run serve, rails s, uvicorn, vite, etc.), identify the port it binds to and what change to make — usually a ports: entry in docker-compose.yml or a --network host note on the launcher.
    • Package-manager mismatch. Lockfile (pnpm-lock.yaml, yarn.lock, poetry.lock, uv.lock) that doesn't match the default stanza's installer — plan the Dockerfile edit (npm install -g pnpm, pip install uv, etc.).
    • Pinned toolchain versions. .nvmrc, .python-version, rust-toolchain.toml — plan to override the stanza's default version.
    • Native modules. Python or Node deps that shell out to gcc / cmake at install time — may need the cmake stanza even in a nominally Python-only repo.
    • Workspace installs. Monorepo with nested pyproject.toml / package.json — plan for lazy install in the entrypoint.
  • Confirm the detection AND the concern list with the developer before proceeding. Each concern must have a concrete resolution proposal in Stage 1; never leave one as "flagged, over to you".

Stage 1 — Confirm plan (agent proposes, developer approves)

Present the full plan as two tables. The developer approves/edits both before Stage 2 writes anything.

Template variables (from reference/placeholders.md):

PlaceholderProposed valueSource
{{REPO_NAME}}basename of target dire.g. my-project
{{LANG_DOCKERFILE_STANZA}}python / cmake / node / combinations / minimalStage 0 detection
{{LANG_ENTRYPOINT_STANZA}}matches aboveStage 0 detection
{{BUILD_DIR_ISOLATION}}pytest / cmake / node / combinations / noneDeveloper choice
{{EXTRA_SAFE_DIRS}}list of git submodule paths.gitmodules in target, or empty
{{EXTRA_PIP_PACKAGES}}extra pip installsrequirements.txt presence, or empty

Stack-specific adaptations (one row per Stage 0 concern):

ConcernProposed changeFile
e.g. Vue dev server binds localhost:8080add ports: ["8080:8080"]docker-compose.yml
e.g. repo uses pnpm not npmadd RUN npm install -g pnpm after Node stanzadocker/Dockerfile
e.g. .nvmrc pins Node 20change ARG NODE_MAJOR=22 to 20docker/Dockerfile

Every concern Stage 0 raised must appear in this table with a concrete change — no bare notes. If a concern genuinely can't be resolved automatically, call it out explicitly as "deferred to developer" with a reason, not as a silent gap.

Note: there is intentionally no {{REPO_PATH}} or {{SESSION_DIR_NAME}} placeholder — both are resolved at runtime by the launcher and entrypoint, so the rendered harness is movable between hosts or across clones without re-running the skill.

Developer confirms or edits each row. If the developer overrides the detection, record the reason inline so Stage 2 knows what to do.

Stage 2 — Render, adapt, and write the harness (agent leads)

For each of the four template files in templates/:

  1. Read the .tmpl file.
  2. Substitute {{VAR}} placeholders with Stage 1 values.
  3. Where the template contains a stanza marker (# @@STANZA:<name>@@), splice in the matching file from templates/stanzas/ — or remove the marker line entirely if the stanza is minimal or not selected.
  4. Apply every stack-specific adaptation approved in Stage 1. Do not skip any. If the Stage 1 table said "add ports: ["8080:8080"]", the rendered docker-compose.yml contains that entry. If it said "override ARG NODE_MAJOR=22 to 20", the rendered Dockerfile has 20. The output is not a template with TODOs — it is the finished harness for this repo.
  5. Write the rendered file to the target repo at its final path.

Write order:

  • <target>/run-sandbox.shchmod +x after writing
  • <target>/docker-compose.yml
  • <target>/docker/Dockerfile
  • <target>/docker/entrypoint.shchmod +x after writing

If docker/ doesn't exist in the target, create it. Report the written paths back to the developer, and for each Stage 1 adaptation row, confirm which file it landed in.

Stage 3 — Verify end-to-end (agent proposes commands, developer runs)

The agent proposes a verification checklist; the developer executes each step and reports outcomes. The agent interprets failures and proposes fixes.

  1. touch ~/.claude.json (no-op if it exists — launcher does this too, but confirm the host has a writable home).
  2. ./run-sandbox.sh --build — image builds, container launches, Claude prompt appears.
  3. Inside the container, run the repo's canonical test or build command (pytest, cmake --build build.sandbox, etc.). Confirm it succeeds and writes to the sandbox build/cache dir — not the host's.
  4. On the host, repeat the same command outside the container. Confirm the host build/cache dir (.pytest_cache/, build/) is unchanged.
  5. Host-side: start a normal claude session in the repo, /exit, note the session ID. Then ./run-sandbox.sh --resume <id> — transcript restored. Confirms host ↔ container session continuity via the symlinked path.
  6. ./run-sandbox.sh -c — auto-resumes the most recent session.
  7. ./run-sandbox.sh --fresh --build — sandbox build/cache dirs removed, image rebuilt clean.

If any step fails, the agent investigates based on the failure mode, not by retrying.

Stage 4 — Tidy up (agent leads)

  • Propose .gitignore entries for any sandbox-specific build/cache dirs (e.g. .pytest_cache.sandbox/, build.sandbox/). Apply with developer approval.
  • Remind the developer: the harness is meant to be committed to the repo (so every collaborator gets the same sandbox), but ~/.claude bind-mount means credentials live on the host — never commit those.
  • If the target repo is a monorepo or has nested projects, note which subdirectories were not covered and whether they need their own sandbox.
  • Offer a one-line summary of how to invoke the sandbox from now on.

Output

The skill produces:

  • Four files written into the target repo (run-sandbox.sh, docker-compose.yml, docker/Dockerfile, docker/entrypoint.sh).
  • Optional .gitignore edits in the target.
  • A verification report in the chat transcript (Stage 3 outcomes).
  • No other artifacts.

When to Use This vs Other Skills

GoalUse
Install a Docker YOLO-mode sandbox into a reposandbox (this skill)
Record agent activity during a sandbox sessiondev-record (plugin, complementary)
Generate repetitive interface code from a data modelgenerator-coding

What ships with it: 18 files

21.3 KB alongside SKILL.md

reference/

Gives 0 of the 12 instructions most context ai engineering skills give in ~2.2k tokens

Counted across 1,193 of the 1,976 authors here whose files we hold, read 2026-08-07

  • Dispatch a fresh implementer subagent per taskin 48 of 1193, across 19 files
  • Dispatch a final code reviewer after all tasksin 33 of 1193, across 8 files
  • Provide full task text to the subagentin 30 of 1193, across 9 files
  • Review spec compliance before code qualityin 27 of 1193, across 10 files
  • Make the hook script executablein 26 of 1193, across 8 files
  • Re-snapshot after navigation or DOM changesin 25 of 1193, across 19 files
  • Read files before editing themin 22 of 1193, across 11 files
  • Answer subagent questions before proceedingin 22 of 1193, across 7 files
  • Mark task complete in TodoWrite after approvalin 22 of 1193, across 6 files
  • Merge hook into existing settingsin 21 of 1193, across 3 files
  • Ask if installation is global or projectin 20 of 1193, across 2 files
  • Copy the hook script to target locationin 20 of 1193, across 2 files

Said here and by no other author read

  • stop after each stage for user review
  • detect the repo build system
  • check target for file collisions
  • enumerate per-stack concerns requiring harness adaptation
  • confirm detection and concerns with developer
  • present full plan as two tables

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.

Keep looking

Skills are one crate of 326,782. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.