Creates devcontainers with Claude Code, language-specific tooling (Python/Node/Rust/Go), and persistent volumes. Use when adding devcontainer support to a project, setting up isolated development envi
6 stars
0 votes
0 copies
1 view
Added September 11, 2026
ai-agentstypescriptpythonrustgonodedockergit
Works with
claude code
vscode
cli
Security analysis
B85/100
highPerforms destructive filesystem operations
mediumInstalls packages at runtime which could introduce malicious dependencies
Installs into .claude/skills of the current project.
Are you the author of Devcontainer Setup?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/ranbot-ai-devcontainer-setup)
---
name: devcontainer-setup
description: Creates devcontainers with Claude Code, language-specific tooling (Python/Node/Rust/Go), and persistent volumes. Use when adding devcontainer support to a project, setting up isolated development envi
category: Development & Code Tools
source: antigravity
tags: [python, typescript, node, claude, ai, workflow, template, docker]
url: https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/devcontainer-setup
---
# Devcontainer 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
```mermaid
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):
1. `package.json` → `name` field
2. `pyproject.toml` → `project.name`
3. `Cargo.toml` → `package.name`
4. `go.mod` → module path (last segment after `/`)
5. 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:
1. **Python** - Primary language, uses Dockerfile for uv + Python installation
2. **Node/TypeScript** - Uses devcontainer feature
3. **Rust** - Uses devcontainer feature
4. **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)
- **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
- **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:
```dockerfile
# Install Python via uv (fast binary download, not source compilation)
RUN uv python install <version> --default
```
**devcontainer.json extensions:**
Add to `customizations.vscode.extensions`:
```json
"ms-python.python",
"ms-python.vscode-pylance",
"charliermarsh.ruff"
```
Add to `customizations.vscode.settings`:
```json
"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`:
```json
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode"
```
Add to `customizations.vscode.settings`:
```json
"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-lockfile`
- `yarn.lock` → `uv run /opt/post_install.py && yarn install --frozen-lockfile`
- `package-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:**
```json
"ghcr.io/devcontainers/features/rust:1": {}
```
**devcontainer.json extensions:**
Add to `customizations.vscode.extensions`:
```json
"rust-lang.rust-analyzer",
"tamasfe.even-better-toml"
```
Add to `customizations.vscode.settings`:
```json
"[rust]": {