feat: add coder sandbox variant with dev tools #16

Closed
agent wants to merge 0 commits from feat/coder-variant into main
Owner

Adds a commune/sandbox:coder image variant that layers development tools on top of the base sandbox.

New files

  • Dockerfile.coderFROM commune/sandbox:latest + build-essential, hugo, rigour, ruff, shellcheck, fd
  • build-coder.yml — CI workflow, triggers on Dockerfile.coder changes or manual dispatch
  • README.md — updated to document both variants

What's in the coder image

Tool Purpose
build-essential gcc, make for native module compilation
python3-venv Python virtual environments
hugo (extended) Static site builds
@rigour-labs/cli + @rigour-labs/mcp Quality gates for AI-generated code
ruff Fast Python linter/formatter
shellcheck Shell script linter
fd Fast file finder

Usage

In OpenClaw gateway config, set a coding agent's sandbox image to:

"image": "git.brads.house/commune/sandbox:coder"

The coder workflow only rebuilds when Dockerfile.coder changes, so base image updates don't trigger unnecessary coder rebuilds (though you can manually dispatch to pick up base changes).

Adds a `commune/sandbox:coder` image variant that layers development tools on top of the base sandbox. ## New files - **Dockerfile.coder** — `FROM commune/sandbox:latest` + build-essential, hugo, rigour, ruff, shellcheck, fd - **build-coder.yml** — CI workflow, triggers on Dockerfile.coder changes or manual dispatch - **README.md** — updated to document both variants ## What's in the coder image | Tool | Purpose | |------|---------| | `build-essential` | gcc, make for native module compilation | | `python3-venv` | Python virtual environments | | `hugo` (extended) | Static site builds | | `@rigour-labs/cli` + `@rigour-labs/mcp` | Quality gates for AI-generated code | | `ruff` | Fast Python linter/formatter | | `shellcheck` | Shell script linter | | `fd` | Fast file finder | ## Usage In OpenClaw gateway config, set a coding agent's sandbox image to: ```json "image": "git.brads.house/commune/sandbox:coder" ``` The coder workflow only rebuilds when `Dockerfile.coder` changes, so base image updates don't trigger unnecessary coder rebuilds (though you can manually dispatch to pick up base changes).
Manual clone without auth fails when repo requires authentication.
actions/checkout handles auth automatically via Forgejo Actions.
- Dockerfile.coder: layers on top of base image with build-essential,
  hugo, rigour (quality gates), ruff, shellcheck, fd
- build-coder.yml: CI workflow builds commune/sandbox:coder on changes
- README.md: document both image variants and usage
- ast-grep: structural search/replace using AST patterns
- tree-sitter-cli: incremental parsing for source code
- difftastic: syntax-aware structural diffs
Owner

@agent let's remove hugo, hugo sites are all handled by CI

@agent let's remove hugo, hugo sites are all handled by CI
Author
Owner

Done — removed Hugo from Dockerfile.coder and README. Hugo builds belong in CI, not the sandbox image. Pushed to the branch.

Done — removed Hugo from `Dockerfile.coder` and README. Hugo builds belong in CI, not the sandbox image. Pushed to the branch.
Owner

@researcher what else would be useful tools to speed up or help an AI coding agent? Any particular CLI tools? any MCPs beyond context7/rigour-labs that could aid us? I'm specifically interested in CLI tools that are proven to help agents code better.

@researcher what else would be useful tools to speed up or help an AI coding agent? Any particular CLI tools? any MCPs beyond context7/rigour-labs that could aid us? I'm specifically interested in CLI tools that are proven to help agents code better.
Owner

closing as duplicate.

closing as duplicate.
brad closed this pull request 2026-02-17 18:08:38 -08:00

Pull request closed

Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
commune/sandbox!16
No description provided.