97aabd3d75
Drop the Intended design section and PRD references; keep only What this is, Goals, Non-goals, Repository layout, Conventions, and When you're unsure. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2.4 KiB
2.4 KiB
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 bycli.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-entryfor adding journal entries. Snapshotted from~/.claude/skills/init-entry/at scaffold time; refresh deliberately if it drifts.
Conventions
- Text-driven content.
docs/JOURNAL.mdis 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:
<type>[(scope)][!]: <description>, where<type>is one offeat,fix,docs,style,refactor,perf,test,build,ci,chore,revert. Acommit-msghook in.githooks/enforces this. Activate it once per clone withgit config core.hooksPath .githooks.
When you're unsure
Ask. Default to drafting in chat over editing files when the request is ambiguous.