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…
Skill by nakane1chome
Chalk Labs
Need help deploying sandbox?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/nakane1chome-sandbox
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: devops, security, agent-building
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/sandbox
Tools it pre-approves 6
From allowed-tools in SKILL.md: the agent may use these without asking you each time.
Read,Glob,Grep,Write,Edit,Bash
What's inside
- Skill name
sandbox- Description
- 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.
- License
- Unlicense
- Allowed tools
- Read,, Glob,, Grep,, Write,, Edit,, Bash
- Instructions
- 109 lines in SKILL.md · view on GitHub
Before installing
- Pre-approves any shell command
Agent Skills spec issues
- body: contains an absolute path from the author's machine
Files (19)
- SKILL.md
- detection.md · reference/
- placeholders.md · reference/
- responsibilities.md
- docker-compose.yml.tmpl · templates/
- Dockerfile.tmpl · templates/docker/
- entrypoint.sh.tmpl · templates/docker/
- run-sandbox.sh.tmpl · templates/
- cmake.dockerfile · templates/stanzas/
- cmake.entrypoint · templates/stanzas/
- cmake.fresh · templates/stanzas/
- minimal.entrypoint · templates/stanzas/
- minimal.fresh · templates/stanzas/
- node.dockerfile · templates/stanzas/
- node.entrypoint · templates/stanzas/
- node.fresh · templates/stanzas/
- python.dockerfile · templates/stanzas/
- python.entrypoint · templates/stanzas/
- python.fresh · templates/stanzas/
SKILL.md (first lines)
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`):
| Placeholder | Proposed value | Source |
|---|---|---|
| `{{REPO_NAME}}` | basename of target dir | e.g. `my-project` |
| `{{LANG_DOCKERFILE_STANZA}}` | `python` / `cmake` / `node` / combinations / `minimal` | Stage 0 detection |
| `{{LANG_ENTRYPOINT_STANZA}}` | matches above | Stage 0 detection |
| `{{BUILD_DIR_ISOLATION}}` | `pytest` / `cmake` / `node` / combinations / `none` | Developer choice |
| `{{EXTRA_SAFE_DIRS}}` | list of git submodule paths | `.gitmodules` in target, or empty |
| `{{EXTRA_PIP_PACKAGES}}` | extra pip installs | `requirements.txt` presence, or empty |
**Stack-specific adaptations** (one row per Stage 0 concern):
| Concern | Proposed change | File |
|---|---|---|
| e.g. Vue dev server binds `localhost:8080` | add `ports: ["8080:8080"]` | `docker-compose.yml` |
| e.g. repo uses `pnpm` not `npm` | add `RUN npm install -g pnpm` after Node stanza | `docker/Dockerfile` |
| e.g. `.nvmrc` pins Node 20 | change `ARG NODE_MAJOR=22` to `20` | `docker/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.sh` — `chmod +x` after writing
- `<target>/docker-compose.yml`
- `<target>/docker/Dockerfile`
- `<target>/docker/entrypoint.sh` — `chmod +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
| Goal | Use |
|------|-----|
| Install a Docker YOLO-mode sandbox into a repo | **sandbox** (this skill) |
| Record agent activity during a sandbox session | **dev-record** (plugin, complementary) |
| Generate repetitive interface code from a data model | **generator-coding** |From nakane1chome/claude-skills, Unlicense.
More from nakane1chome/claude-skills
- 0.561score
light-v-structure
nakane1chome
Defines V-model project structure conventions.
SkillAFreshness: AClaude Code +9 - 0.521score
dev-record
nakane1chome
Record agent activity during Claude Code sessions.
SkillBFreshness: BClaude Code +9 - 0.516score
no-pre-existing-failures
nakane1chome
Test accountability policy.
SkillBFreshness: BClaude Code +9 - 0.409score
flesh-out
nakane1chome
Transform raw/crude document drafts into structured content.
SkillDFreshness: DClaude Code +9 - 0.409score
review-skill
nakane1chome
Reviews a SKILL.md file or skill directory for quality, correctness, and alignment with Claude Code skill conventions.
SkillDFreshness: DClaude Code +9 - 0.409score
review-steps
nakane1chome
Structured review for polishing documents.
SkillDFreshness: DClaude Code +9 - 0.406score
agent-optimize
nakane1chome
Optimize a document for AI agent consumption.
SkillDFreshness: DClaude Code +9 - 0.406score
sdlc-cross-review
nakane1chome
Review a document against its SDLC lifecycle context — assess completeness and check consistency with parent documents in the document hierarchy.
SkillDFreshness: DClaude Code +9 - 0.406score
strong-edit
nakane1chome
Critical editorial analysis of articles.
SkillDFreshness: DClaude Code +9 - 0.406score
generator-coding
nakane1chome
Template-based code generation pattern using data models, templates, and helper functions to generate repetitive interface code.
SkillDFreshness: DClaude Code +9 - 0.385score
myBadSkill
nakane1chome
Helps with things
SkillDFreshness: DClaude Code +9 - 0.222score
my-skill
nakane1chome
What this skill does and when to use it.
SkillDFreshness: DClaude Code +9
Signals
- Stars
- 0
- Forks
- 1
- Open issues
- 0
- Last commit (this folder)
- Apr 22, 2026 (6 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- Unlicense
- Repository
- github.com/nakane1chome/claude-skills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from nakane1chome
- 0.561score
light-v-structure
nakane1chome
Defines V-model project structure conventions.
SkillAFreshness: AClaude Code +9 - 0.521score
dev-record
nakane1chome
Record agent activity during Claude Code sessions.
SkillBFreshness: BClaude Code +9 - 0.516score
no-pre-existing-failures
nakane1chome
Test accountability policy.
SkillBFreshness: BClaude Code +9 - 0.409score
flesh-out
nakane1chome
Transform raw/crude document drafts into structured content.
SkillDFreshness: DClaude Code +9 - 0.409score
review-skill
nakane1chome
Reviews a SKILL.md file or skill directory for quality, correctness, and alignment with Claude Code skill conventions.
SkillDFreshness: DClaude Code +9 - 0.409score
review-steps
nakane1chome
Structured review for polishing documents.
SkillDFreshness: DClaude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get sandbox running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
sandbox skill. Agent Mart. https://agentmart.dev/skills/nakane1chome-sandbox (last updated 2026-10-24)