Claude Code, dile özgü araçlar ve izole geliştirme ortamları için kalıcı birimler içeren önceden yapılandırılmış devcontainer'lar oluşturur.
- GitHub yıldızları
- 8.136
- Dosyalar
- 10
- Son commit
- 11 Kas 2026
- Lisans
- CC-BY-SA-4.0
- İzin verilen araçlar
- —
devcontainer-setup skill ne işe yarar?
devcontainer-setup bir agent skill'dir. Claude Code, dile özgü araçlar ve izole geliştirme ortamları için kalıcı birimler içeren önceden yapılandırılmış devcontainer'lar oluşturur.
Özet, skill'in SKILL.md dosyasından oluşturuldu.
devcontainer-setup skilli hakkında
Bu SKILL, geliştiricilerin Claude Code ile kum havuzu (sandbox) tabanlı geliştirme ortamları kurmasını sağlar. Python, Node/TypeScript, Rust veya Go gibi dilleri tespit etmek için proje keşfi yaparak önceden yapılandırılmış devcontainer'ların oluşturulmasını otomatikleştirir. Teknoloji yığını belirlendikten sonra; bir Dockerfile, devcontainer.json, kurulum sonrası betiği ve kabuk yapılandırmalarını içeren eksiksiz bir yapılandırma dizini oluşturur.
Bir agent, kullanıcı devcontainer desteği eklenmesini istediğinde veya izole bir çalışma alanına ihtiyaç duyduğunda bu SKILL'i yüklemelidir. Süreç; ripgrep, fzf ve tmux gibi modern CLI araçlarının yanı sıra bubblewrap sandboxing ve ağ izolasyonu gibi güvenlik özelliklerini içeren yapılandırılmış bir .devcontainer/ dizini üretir. Uzantıları birleştirerek ve kurulum komutlarını zincirleyerek çok dilli projeleri özel olarak yönetir. Bu araç yalnızca geliştirme ortamları için tasarlanmıştır ve üretim ortamı (production) konteyner dağıtımı için uygun değildir.
Bir agent bununla neler yapabilir
- 1Bir projeye devcontainer desteği ekleyinGerekli tüm konteyner dosyalarını otomatik olarak oluşturarak yeni bir geliştirme ortamı yapılandırın.
- 2Kum havuzu tabanlı Claude Code çalışma alanları oluşturunbubblewrap ve ağ izolasyonu gibi güvenlik özelliklerini kullanarak Claude Code için izole bir ortam kurun.
- 3Çok dilli ortamlar kurunDile özgü uzantıları ve kurulum komutlarını birleştirerek hem Python hem de Node.js destekleyen tek bir çalışma alanı yapılandırın.
- 4Kalıcı geliştirme verilerini güvence altına alınCargo veya Go modülleri gibi dile özgü veriler için kalıcı birimler (persistent volumes) içeren yapılandırmalar oluşturun.
Skill'in SKILL.md dosyasından yazılmıştır. Her kullanım durumu oradaki bir alıntı ile kontrol edilir.
devcontainer-setup skill nasıl kurulur
Her komut, skill klasörünü istemcinin skills dizinine kopyalar. Yüklemek için istemciyi yeniden başlatın veya yeni bir oturum başlatın.devcontainer-setup skill'ini Eklenti uygulamasına kur
/plugin marketplace add trailofbits/skills /plugin install devcontainer-setup@trailofbits
devcontainer-setup skill'ini Claude Code uygulamasına kur
~/.claude/skills/devcontainer-setup/SKILL.md
$ npx degit trailofbits/skills/plugins/devcontainer-setup/skills/devcontainer-setup ~/.claude/skills/devcontainer-setupdevcontainer-setup skill'ini Claude Code (project) uygulamasına kur
.claude/skills/devcontainer-setup/SKILL.md
$ npx degit trailofbits/skills/plugins/devcontainer-setup/skills/devcontainer-setup .claude/skills/devcontainer-setupdevcontainer-setup skill'ini Codex uygulamasına kur
~/.agents/skills/devcontainer-setup/SKILL.md
$ npx degit trailofbits/skills/plugins/devcontainer-setup/skills/devcontainer-setup ~/.agents/skills/devcontainer-setupdevcontainer-setup skill'ini Gemini CLI uygulamasına kur
~/.gemini/skills/devcontainer-setup/SKILL.md
$ npx degit trailofbits/skills/plugins/devcontainer-setup/skills/devcontainer-setup ~/.gemini/skills/devcontainer-setupdevcontainer-setup skill'ini Claude.ai uygulamasına kur
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
Otomatik kontroller
Çalıştırıldı 14 Kas 2026Tam rapor →Otomatik kontrollerimizi geçti. Bu bir güvenlik denetimi değil: bir ajanın çalıştırmasına izin vermeden önce betikleri okuyun. Kontroller nasıl çalışır
- Kaynak deposu bağlantılı ve erişilebilirtrailofbits/skills/plugins/devcontainer-setup/skills/devcontainer-setup is public and reachablegithub.com/trailofbits/skills/tree/HEAD/plugins/devcontainer ↗Geçti
- Açık kaynak lisansı (OSI)CC-BY-SA-4.0 is not OSI-approvedspdx.org/licenses/CC-BY-SA-4.0.html ↗Bulgu
- Son bir yıl içinde commit veya sürüm mevcutLast commit 2026-11-11github.com/trailofbits/skills/commits ↗Geçti
- Betiklerde indir-çalıştır veya kimlik bilgisi hırsızlığı yok2 scripts read; no download-and-run, remote eval, base64 execution or credential uploadGeçti
- SKILL.md içinde gizli talimat yokNo override phrases, safeguard switches, credential requests or hidden charactersgithub.com/trailofbits/skills/blob/HEAD/plugins/devcontainer ↗Geçti
- Önceden izin verilen araçlar sınırlıNo pre-approved tools; the agent asks before using onegithub.com/trailofbits/skills/blob/HEAD/plugins/devcontainer ↗Geçti
SKILL.md
GitHub'da görüntüleDevcontainer 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
Bu becerideki dosyalar
10devcontainer-setup skill soruları
devcontainer-setup skill'ini Claude Code uygulamasına nasıl kurarım?
npx degit trailofbits/skills/plugins/devcontainer-setup/skills/devcontainer-setup ~/.claude/skills/devcontainer-setup komutunu çalıştırın. Claude Code, skill'leri ~/.claude/skills (tüm projeler) veya .claude/skills (tek proje) konumundan yükler ve açıklaması görevle eşleştiğinde skill'i kullanır.
devcontainer-setup skill'ini hangi istemciler kullanabilir?
Agent Skills biçimini okuyan her istemci: Claude Code, Codex, Gemini CLI ve claude.ai (ZIP olarak yükleyin). Skill içindeki betikler yalnızca istemcinin kod çalıştırmaya izin verdiği yerlerde çalışır.