Создает предварительно настроенные devcontainers с Claude Code, инструментами под конкретные языки программирования и постоянными томами для изолированных сред разработки.
- Звёзды на GitHub
- 8 136
- Файлы
- 10
- Последний коммит
- 11 нояб. 2026 г.
- Лицензия
- CC-BY-SA-4.0
- Разрешённые инструменты
- —
Что делает навык devcontainer-setup?
devcontainer-setup — это Agent Skill. Создает предварительно настроенные devcontainers с Claude Code, инструментами под конкретные языки программирования и постоянными томами для изолированных сред разработки.
Сводка сгенерирована из SKILL.md навыка.
О skill devcontainer-setup
Этот SKILL позволяет разработчикам настраивать изолированные среды разработки с Claude Code. Он автоматизирует создание предварительно сконфигурированных devcontainers, проводя разведку проекта для обнаружения таких языков, как Python, Node/TypeScript, Rust или Go. Как только стек определен, создается полная директория конфигурации, содержащая Dockerfile, devcontainer.json, скрипт после установки и конфигурации оболочки.
Агенту следует загрузить этот SKILL, когда пользователь запрашивает добавление поддержки devcontainer или когда требуется изолированное рабочее пространство. В результате создается структурированная директория .devcontainer/, которая включает современные CLI-инструменты, такие как ripgrep, fzf и tmux, а также функции безопасности, включая песочницу bubblewrap и сетевую изоляцию. Инструмент специально обрабатывает многоязычные проекты, объединяя расширения и выстраивая цепочки команд настройки. Данный инструмент предназначен строго для сред разработки и не предназначен для развертывания контейнеров в продакшене.
Что агент может делать с ним
- 1Добавление поддержки devcontainer в проектНастройка новой среды разработки путем автоматической генерации всех необходимых файлов контейнера.
- 2Создание изолированных рабочих пространств Claude CodeСоздание изолированной среды для Claude Code с использованием функций безопасности, таких как bubblewrap и сетевая изоляция.
- 3Настройка многоязычных средКонфигурация единого рабочего пространства с поддержкой Python и Node.js путем объединения соответствующих расширений и команд настройки.
- 4Обеспечение сохранности данных разработкиГенерация конфигураций, включающих постоянные тома для специфичных для языков данных, таких как модули Cargo или Go.
Написано на основе skill SKILL.md. Каждый сценарий использования проверен по цитате из него.
Как установить навык devcontainer-setup
Каждая команда копирует папку навыка в каталог навыков клиента. Перезапустите клиент или начните новую сессию, чтобы загрузить его.Установка навыка devcontainer-setup в Плагин
/plugin marketplace add trailofbits/skills /plugin install devcontainer-setup@trailofbits
Установка навыка devcontainer-setup в Claude Code
~/.claude/skills/devcontainer-setup/SKILL.md
$ npx degit trailofbits/skills/plugins/devcontainer-setup/skills/devcontainer-setup ~/.claude/skills/devcontainer-setupУстановка навыка devcontainer-setup в Claude Code (project)
.claude/skills/devcontainer-setup/SKILL.md
$ npx degit trailofbits/skills/plugins/devcontainer-setup/skills/devcontainer-setup .claude/skills/devcontainer-setupУстановка навыка devcontainer-setup в Codex
~/.agents/skills/devcontainer-setup/SKILL.md
$ npx degit trailofbits/skills/plugins/devcontainer-setup/skills/devcontainer-setup ~/.agents/skills/devcontainer-setupУстановка навыка devcontainer-setup в Gemini CLI
~/.gemini/skills/devcontainer-setup/SKILL.md
$ npx degit trailofbits/skills/plugins/devcontainer-setup/skills/devcontainer-setup ~/.gemini/skills/devcontainer-setupУстановка навыка devcontainer-setup в 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
Автоматические проверки
Запущено 14 нояб. 2026 г.Полный отчёт →Прошёл наши автоматические проверки. Это не аудит безопасности: прочитайте скрипты, прежде чем агент их запустит. Как работают проверки
- Связанный и доступный исходный репозиторийtrailofbits/skills/plugins/devcontainer-setup/skills/devcontainer-setup is public and reachablegithub.com/trailofbits/skills/tree/HEAD/plugins/devcontainer ↗Пройдено
- Open source лицензия (OSI)CC-BY-SA-4.0 is not OSI-approvedspdx.org/licenses/CC-BY-SA-4.0.html ↗Проблема
- Коммит или релиз за последний годLast commit 2026-11-11github.com/trailofbits/skills/commits ↗Пройдено
- В скриптах нет загрузки с запуском и кражи учётных данных2 scripts read; no download-and-run, remote eval, base64 execution or credential uploadПройдено
- В SKILL.md нет скрытых инструкцийNo override phrases, safeguard switches, credential requests or hidden charactersgithub.com/trailofbits/skills/blob/HEAD/plugins/devcontainer ↗Пройдено
- Заранее разрешённые инструменты ограниченыNo pre-approved tools; the agent asks before using onegithub.com/trailofbits/skills/blob/HEAD/plugins/devcontainer ↗Пройдено
SKILL.md
Открыть на 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
Файлы в этом навыке
10Вопросы о навыке devcontainer-setup
Как установить навык devcontainer-setup в Claude Code?
Выполните npx degit trailofbits/skills/plugins/devcontainer-setup/skills/devcontainer-setup ~/.claude/skills/devcontainer-setup. Claude Code загружает навыки из ~/.claude/skills (все проекты) или .claude/skills (один проект) и использует навык, когда его описание соответствует задаче.
Какие клиенты могут использовать навык devcontainer-setup?
Любой клиент, который читает формат Agent Skills: Claude Code, Codex, Gemini CLI и claude.ai (загрузить как ZIP). Скрипты в навыке выполняются только там, где клиент разрешает выполнение кода.