# claude-bottle ## What this is claude-bottle spins up an isolated container for running Claude Code with a curated set of skills and env vars. The point is to run Claude with broad permissions inside a sandbox, so a misbehaving agent cannot reach the host. Bash scripts orchestrate the container lifecycle and the copying of skills and env vars into it. ## Goals - Minimize risk of running claude with full permissions - Allow me to easily spin up agent tasks in parallel - Create isolated, well defined, easily updated, shareable agents ## Non-goals - Communicating between agents directly - Self hosted VMs (v1 uses local Docker containers, not VMs) - Advanced agent auditing (lean on git history for auditing) ## Repository layout - `README.md` — short public-facing description. - `CLAUDE.md` — this file, orientation for future Claude sessions. - `.gitignore` — OS junk. - `claude-bottle.json` — manifest of named agents (env / skills / prompt per agent), consumed by `cli.sh`. See "Manifest" under "Intended design". - `docs/INDEX.md` — pointer to the journal and research notes. - `docs/JOURNAL.md` — append-only log of decisions and state changes. - `docs/prds/` — product requirement docs. - `docs/research/` — research notes (empty for now, kept tracked via `.gitkeep`). - `.claude/skills/init-entry/` — project-local Claude Code skill providing `/init-entry` for adding journal entries. Snapshotted from `~/.claude/skills/init-entry/` at scaffold time; refresh deliberately if it drifts. ## Conventions - Text-driven content. `docs/JOURNAL.md` is an append-only stream of thought, newest first. Entries are timestamps followed by freeform prose — no templates, no required sections. Add entries with `/init-entry`. - Product requirement docs live in `docs/prds/`. - Research notes live in `docs/research/`. - Low dependencies by default. The project is bash-first; ask before adding new tools, runtimes, or package managers. - Commit messages follow [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/): `[(scope)][!]: `, where `` is one of `feat`, `fix`, `docs`, `style`, `refactor`, `perf`, `test`, `build`, `ci`, `chore`, `revert`. A `commit-msg` hook in `.githooks/` enforces this. Activate it once per clone with `git config core.hooksPath .githooks`. ## When you're unsure Ask. Default to drafting in chat over editing files when the request is ambiguous.