agentsclimarketplace

Dockerfile sandbox gen

Skill blackwell-systems/dockerfile-sandbox-gen/skill/dockerfile-sandbox-gen

Generate audit-ready Dockerfiles for CLI tool sandboxing. Auto-detects project language (Go, Rust, Python, Node) and creates Dockerfile.sandbox with multi-stage build, non-root user, and sudo access. Use when preparing a CLI tool for container-mode testing or UX audits.From its SKILL.md

Install
npx -y skills add blackwell-systems/dockerfile-sandbox-gen --skill dockerfile-sandbox-gen

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.

What its file declares

Copied from the file, not written here

The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

4.1 KB, 925 tokens by cl100k_base, as published. Nobody here has run it

Generate audit-ready Dockerfiles for CLI tool sandboxing with language detection and multi-stage builds.

Arguments

$ARGUMENTS is either:

  • <tool-name> [--lang LANG] — generate Dockerfile.sandbox for the named tool
  • list — show supported languages, detection patterns, and builder images

Parse $ARGUMENTS to extract TOOL_NAME and optional --lang LANG.

Language Detection

If --lang is provided, use it directly. Otherwise scan the current directory in priority order:

  1. Gogo.mod
  2. RustCargo.toml
  3. Pythonpyproject.toml or requirements.txt
  4. Nodepackage.json

If no files found and no flag provided, show error with supported languages and ask user to use --lang.

Templates

Language-specific Dockerfile templates are in templates/. Load the appropriate template for the detected language and substitute {{TOOL_NAME}} with the actual tool name.

Workflow

Step 1: Validation

Check if Dockerfile.sandbox already exists. If so, show error and stop:

Error: Dockerfile.sandbox already exists

Remove it first if you want to regenerate:
  rm Dockerfile.sandbox

Step 2: Language Detection (skip if --lang provided)

Check for language files in priority order. Print detection result:

Detected language: Go (found go.mod)

Step 3: Generate Dockerfile

Read the appropriate template file, substitute {{TOOL_NAME}} with the tool name, write to ./Dockerfile.sandbox.

Step 4: Output Next Steps

Generated Dockerfile.sandbox

Next steps:
  docker build -t <tool-name>-r1 -f Dockerfile.sandbox .
  docker run -d --name <tool-name>-r1 --rm <tool-name>-r1 sleep 3600

list Command

When $ARGUMENTS is list, print:

Supported languages and detection patterns:

Language: Go
  Detection: go.mod
  Builder: golang:1.23
  Runtime: ubuntu:22.04
  Status: Supported

Language: Rust
  Detection: Cargo.toml
  Builder: rust:1.75
  Runtime: ubuntu:22.04
  Status: Planned

Language: Python
  Detection: pyproject.toml, requirements.txt
  Builder: python:3.11
  Runtime: python:3.11-slim
  Status: Planned

Language: Node
  Detection: package.json
  Builder: node:20
  Runtime: node:20-slim
  Status: Planned

Use: /dockerfile-sandbox-gen <tool-name> [--lang go|rust|python|node]

Error Handling

Language not detected:

Error: Could not detect language

Supported languages:
  - Go (looks for go.mod)
  - Rust (looks for Cargo.toml)
  - Python (looks for pyproject.toml or requirements.txt)
  - Node (looks for package.json)

Specify language explicitly:
  /dockerfile-sandbox-gen <tool-name> --lang go|rust|python|node

Unsupported language requested:

Error: Language '<lang>' not supported

Currently supported: go
Planned: rust, python, node

Dockerfile Contract

All generated Dockerfiles follow the audit-ready convention:

  1. Multi-stage build — builder stage compiles, runtime stage is clean
  2. Base runtime: ubuntu:22.04 (or language-slim equivalent)
  3. Utilities: curl, git, sudo installed; apt cache cleaned
  4. Non-root user appuser with passwordless sudo
  5. Binary installed to /usr/local/bin/<tool-name> owned by appuser
  6. CMD ["/bin/bash"], no ENTRYPOINT override

Implementation Notes

  • Use Bash tool to check for language files and existing Dockerfile.sandbox
  • Use Read tool to load the template file
  • Use Write tool to create Dockerfile.sandbox
  • Generate entire Dockerfile in memory, write once

What ships with it: 1 file

503 B alongside SKILL.md

templates/

Keep looking

Skills are one crate of 326,852. 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.