Membuat devcontainer yang sudah terkonfigurasi dengan Claude Code, tooling spesifik bahasa pemrograman, dan persistent volumes untuk lingkungan pengembangan yang terisolasi.
- Bintang GitHub
- 8.136
- File
- 10
- Commit terakhir
- 11 Nov 2026
- Lisensi
- CC-BY-SA-4.0
- Tool yang diizinkan
- —
Apa fungsi skill devcontainer-setup?
devcontainer-setup adalah agent skill. Membuat devcontainer yang sudah terkonfigurasi dengan Claude Code, tooling spesifik bahasa pemrograman, dan persistent volumes untuk lingkungan pengembangan yang terisolasi.
Ringkasan dibuat dari SKILL.md skill ini.
Tentang skill devcontainer-setup
Skill ini memungkinkan developer untuk menyiapkan lingkungan pengembangan sandboxed dengan Claude Code. Skill ini mengotomatiskan pembuatan devcontainer yang sudah terkonfigurasi dengan melakukan pengenalan proyek untuk mendeteksi bahasa seperti Python, Node/TypeScript, Rust, atau Go. Setelah stack teridentifikasi, skill ini akan menghasilkan direktori konfigurasi lengkap yang berisi Dockerfile, devcontainer.json, post-install script, dan konfigurasi shell.
Agent harus memuat skill ini saat pengguna meminta untuk menambahkan dukungan devcontainer atau membutuhkan workspace yang terisolasi. Proses ini menghasilkan direktori .devcontainer/ terstruktur yang mencakup modern CLI tools seperti ripgrep, fzf, dan tmux, serta fitur keamanan seperti bubblewrap sandboxing dan isolasi jaringan. Skill ini secara khusus menangani proyek multi-bahasa dengan menggabungkan ekstensi dan merangkai perintah setup. Tool ini ditujukan khusus untuk lingkungan pengembangan dan tidak dimaksudkan untuk deployment container di produksi.
Apa yang bisa dilakukan agent dengannya
- 1Tambahkan dukungan devcontainer ke proyekKonfigurasikan lingkungan pengembangan baru dengan menghasilkan semua file container yang diperlukan secara otomatis.
- 2Buat workspace Claude Code yang sandboxedBangun lingkungan terisolasi untuk Claude Code menggunakan fitur keamanan seperti bubblewrap dan isolasi jaringan.
- 3Siapkan lingkungan multi-bahasaKonfigurasikan satu workspace yang mendukung Python dan Node.js sekaligus dengan menggabungkan ekstensi dan perintah setup spesifik masing-masing.
- 4Pastikan data pengembangan tetap persistenHasilkan konfigurasi yang menyertakan persistent volumes untuk data spesifik bahasa seperti Cargo atau Go modules.
Ditulis dari SKILL.md milik skill tersebut. Setiap use case diverifikasi dengan kutipan darinya.
Cara install skill devcontainer-setup
Setiap perintah menyalin folder skill ke direktori skills client. Restart client atau mulai sesi baru untuk memuatnya.Install skill devcontainer-setup di Plugin
/plugin marketplace add trailofbits/skills /plugin install devcontainer-setup@trailofbits
Install skill devcontainer-setup di Claude Code
~/.claude/skills/devcontainer-setup/SKILL.md
$ npx degit trailofbits/skills/plugins/devcontainer-setup/skills/devcontainer-setup ~/.claude/skills/devcontainer-setupInstall skill devcontainer-setup di Claude Code (project)
.claude/skills/devcontainer-setup/SKILL.md
$ npx degit trailofbits/skills/plugins/devcontainer-setup/skills/devcontainer-setup .claude/skills/devcontainer-setupInstall skill devcontainer-setup di Codex
~/.agents/skills/devcontainer-setup/SKILL.md
$ npx degit trailofbits/skills/plugins/devcontainer-setup/skills/devcontainer-setup ~/.agents/skills/devcontainer-setupInstall skill devcontainer-setup di Gemini CLI
~/.gemini/skills/devcontainer-setup/SKILL.md
$ npx degit trailofbits/skills/plugins/devcontainer-setup/skills/devcontainer-setup ~/.gemini/skills/devcontainer-setupInstall skill devcontainer-setup di Claude.ai
npx degit trailofbits/skills/plugins/devcontainer-setup/skills/devcontainer-setup devcontainer-setup && zip -r devcontainer-setup.zip devcontainer-setup # claude.ai → Customize → Skills → + → Create skill → Upload a skill → devcontainer-setup.zip
Pengecekan otomatis
Berjalan 14 Nov 2026Laporan lengkap →Lolos cek otomatis kami. Ini bukan audit keamanan: baca skripnya sebelum membiarkan agent menjalankannya. Cara kerja checks
- Source repository terhubung dan dapat dijangkautrailofbits/skills/plugins/devcontainer-setup/skills/devcontainer-setup is public and reachablegithub.com/trailofbits/skills/tree/HEAD/plugins/devcontainer ↗Lolos
- Lisensi open source (OSI)CC-BY-SA-4.0 is not OSI-approvedspdx.org/licenses/CC-BY-SA-4.0.html ↗Temuan
- Ada commit atau release dalam satu tahun terakhirLast commit 2026-11-11github.com/trailofbits/skills/commits ↗Lolos
- Skrip tanpa unduh-lalu-jalankan atau pencurian kredensial2 scripts read; no download-and-run, remote eval, base64 execution or credential uploadLolos
- Tidak ada instruksi tersembunyi di SKILL.mdNo override phrases, safeguard switches, credential requests or hidden charactersgithub.com/trailofbits/skills/blob/HEAD/plugins/devcontainer ↗Lolos
- Tool yang diizinkan otomatis dibatasiNo pre-approved tools; the agent asks before using onegithub.com/trailofbits/skills/blob/HEAD/plugins/devcontainer ↗Lolos
SKILL.md
Lihat di GitHubDevcontainer Setup Skill
Creates a pre-configured devcontainer with Claude Code and language-specific tooling.
When to Use
- User asks to "set up a devcontainer" or "add devcontainer support"
- User wants a sandboxed Claude Code development environment
- User needs isolated development environments with persistent configuration
When NOT to Use
- User already has a devcontainer configuration and just needs modifications
- User is asking about general Docker or container questions
- User wants to deploy production containers (this is for development only)
Workflow
flowchart TB
start([User requests devcontainer])
recon[1. Project Reconnaissance]
detect[2. Detect Languages]
generate[3. Generate Configuration]
write[4. Write files to .devcontainer/]
done([Done])
start --> recon
recon --> detect
detect --> generate
generate --> write
write --> done
Phase 1: Project Reconnaissance
Infer Project Name
Check in order (use first match):
package.json→namefieldpyproject.toml→project.nameCargo.toml→package.namego.mod→ module path (last segment after/)- Directory name as fallback
Convert to slug: lowercase, replace spaces/underscores with hyphens.
Detect Language Stack
| Language | Detection Files |
|---|---|
| Python | pyproject.toml, *.py |
| Node/TypeScript | package.json, tsconfig.json |
| Rust | Cargo.toml |
| Go | go.mod, go.sum |
Multi-Language Projects
If multiple languages are detected, configure all of them in the following priority order:
- Python - Primary language, uses Dockerfile for uv + Python installation
- Node/TypeScript - Uses devcontainer feature
- Rust - Uses devcontainer feature
- Go - Uses devcontainer feature
For multi-language postCreateCommand, chain all setup commands:
uv run /opt/post_install.py && uv sync && npm ci
Extensions and settings from all detected languages should be merged into the configuration.
Phase 2: Generate Configuration
Start with base templates from resources/ directory. Substitute:
{{PROJECT_NAME}}→ Human-readable name (e.g., "My Project"){{PROJECT_SLUG}}→ Slug for volumes (e.g., "my-project")
Then apply language-specific modifications below.
Base Template Features
The base template includes:
- Claude Code with marketplace plugins (anthropics/skills, trailofbits/skills, trailofbits/skills-curated)
- Sandboxing via bubblewrap and socat
- Python 3.13 via uv (fast binary download)
- Node 22 via fnm (Fast Node Manager)
- ast-grep for AST-based code search
- Network isolation tools (iptables, ipset) with NET_ADMIN capability
- Security mounts:
.devcontainer/mounted read-only to prevent container escape - Token forwarding:
CLAUDE_CODE_OAUTH_TOKENandANTHROPIC_API_KEYviaremoteEnv - Modern CLI tools: ripgrep, fd, fzf, tmux, git-delta
Language-Specific Sections
Python Projects
Detection: pyproject.toml, requirements.txt, setup.py, or *.py files
Dockerfile additions:
The base Dockerfile already includes Python 3.13 via uv. If a different version is required (detected from pyproject.toml), modify the Python installation:
# Install Python via uv (fast binary download, not source compilation)
RUN uv python install <version> --default
devcontainer.json extensions:
Add to customizations.vscode.extensions:
"ms-python.python",
"ms-python.vscode-pylance",
"charliermarsh.ruff"
Add to customizations.vscode.settings:
"python.defaultInterpreterPath": ".venv/bin/python",
"[python]": {
"editor.defaultFormatter": "charliermarsh.ruff",
"editor.codeActionsOnSave": {
"source.organizeImports": "explicit"
}
}
postCreateCommand:
If pyproject.toml exists, chain commands:
rm -rf .venv && uv sync && uv run /opt/post_install.py
Node/TypeScript Projects
Detection: package.json or tsconfig.json
No Dockerfile additions needed: The base template includes Node 22 via fnm (Fast Node Manager).
devcontainer.json extensions:
Add to customizations.vscode.extensions:
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode"
Add to customizations.vscode.settings:
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.codeActionsOnSave": {
"source.fixAll.eslint": "explicit"
}
postCreateCommand: Detect package manager from lockfile and chain with base command:
pnpm-lock.yaml→uv run /opt/post_install.py && pnpm install --frozen-lockfileyarn.lock→uv run /opt/post_install.py && yarn install --frozen-lockfilepackage-lock.json→uv run /opt/post_install.py && npm ci- No lockfile →
uv run /opt/post_install.py && npm install
Rust Projects
Detection: Cargo.toml
Features to add:
"ghcr.io/devcontainers/features/rust:1": {}
devcontainer.json extensions:
Add to customizations.vscode.extensions:
"rust-lang.rust-analyzer",
"tamasfe.even-better-toml"
Add to customizations.vscode.settings:
"[rust]": {
"editor.defaultFormatter": "rust-lang.rust-analyzer"
}
postCreateCommand:
If Cargo.lock exists, use locked builds:
uv run /opt/post_install.py && cargo build --locked
If no lockfile, use standard build:
uv run /opt/post_install.py && cargo build
Go Projects
Detection: go.mod
Features to add:
"ghcr.io/devcontainers/features/go:1": {
"version": "latest"
}
devcontainer.json extensions:
Add to customizations.vscode.extensions:
"golang.go"
Add to customizations.vscode.settings:
"[go]": {
"editor.defaultFormatter": "golang.go"
},
"go.useLanguageServer": true
postCreateCommand:
uv run /opt/post_install.py && go mod download
Reference Material
For additional guidance, see:
references/dockerfile-best-practices.md- Layer optimization, multi-stage builds, architecture supportreferences/features-vs-dockerfile.md- When to use devcontainer features vs custom Dockerfile
Adding Persistent Volumes
Pattern for new mounts in devcontainer.json:
"mounts": [
"source={{PROJECT_SLUG}}-<purpose>-${devcontainerId},target=<container-path>,type=volume"
]
Common additions:
source={{PROJECT_SLUG}}-cargo-${devcontainerId},target=/home/vscode/.cargo,type=volume(Rust)source={{PROJECT_SLUG}}-go-${devcontainerId},target=/home/vscode/go,type=volume(Go)
Output Files
Generate these files in the project's .devcontainer/ directory:
Dockerfile- Container build instructionsdevcontainer.json- VS Code/devcontainer configurationpost_install.py- Post-creation setup script.zshrc- Shell configurationinstall.sh- CLI helper for managing the devcontainer (devccommand)
Validation Checklist
Before presenting files to the user, verify:
- All
{{PROJECT_NAME}}placeholders are replaced with the human-readable name - All
{{PROJECT_SLUG}}placeholders are replaced with the slugified name - JSON syntax is valid in
devcontainer.json(no trailing commas, proper nesting) - Language-specific extensions are added for all detected languages
postCreateCommandincludes all required setup commands (chained with&&)
User Instructions
After generating, inform the user:
- How to start: "Open in VS Code and select 'Reopen in Container'"
- Alternative:
devcontainer up --workspace-folder . - CLI helper: Run
.devcontainer/install.sh self-installto add thedevccommand to PATH
Berkas dalam skill ini
10Pertanyaan seputar skill devcontainer-setup
Bagaimana cara install skill devcontainer-setup di Claude Code?
Jalankan npx degit trailofbits/skills/plugins/devcontainer-setup/skills/devcontainer-setup ~/.claude/skills/devcontainer-setup. Claude Code memuat skill dari ~/.claude/skills (semua proyek) atau .claude/skills (satu proyek) dan menggunakan skill saat deskripsinya cocok dengan tugas.
Client mana saja yang bisa menggunakan skill devcontainer-setup?
Client apa pun yang membaca format Agent Skills: Claude Code, Codex, Gemini CLI, dan claude.ai (unggah sebagai ZIP). Script dalam skill hanya berjalan di client yang mengizinkan eksekusi kode.