devcontainer-setup
Claude Codeや各言語ツール(Python/Node/Rust/Go)、永続ボリュームを含むdevcontainerを作成します。プロジェクトへのdevcontainerサポート追加、隔離された開発環境のセットアップ、またはサンドボックス化されたClaude Codeワークスペースの構成が必要なときに使用してください。
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 environments, or configuring sandboxed Claude Code workspaces.
SKILL.md 本文
Devcontainer セットアップスキル
Claude Code とプログラミング言語固有のツーリングを備えた事前構成済み devcontainer を作成します。
使用時期
- ユーザーが「devcontainer を設定してほしい」または「devcontainer サポートを追加してほしい」と要望する場合
- ユーザーがサンドボックス化された Claude Code 開発環境を望む場合
- ユーザーが永続的な設定を備えた分離された開発環境が必要な場合
使用しない時期
- ユーザーが既に devcontainer 設定を持っており、単なる修正が必要な場合
- ユーザーが一般的な Docker またはコンテナに関する質問をしている場合
- ユーザーが本番用コンテナのデプロイを望んでいる場合(これは開発専用です)
ワークフロー
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
フェーズ 1: プロジェクト調査
プロジェクト名の推定
以下の順序でチェック(最初にマッチしたものを使用):
package.json→nameフィールドpyproject.toml→project.nameCargo.toml→package.namego.mod→ モジュールパス(/の後の最後のセグメント)- ディレクトリ名をフォールバック
スラッグに変換: 小文字に変換し、スペース・アンダースコアをハイフンに置き換える。
言語スタックの検出
| 言語 | 検出ファイル |
|---|---|
| Python | pyproject.toml, *.py |
| Node/TypeScript | package.json, tsconfig.json |
| Rust | Cargo.toml |
| Go | go.mod, go.sum |
マルチ言語プロジェクト
複数の言語が検出された場合、以下の優先順位で全て設定します:
- Python - プライマリ言語、uv + Python インストール用の Dockerfile を使用
- Node/TypeScript - devcontainer フィーチャを使用
- Rust - devcontainer フィーチャを使用
- Go - devcontainer フィーチャを使用
マルチ言語の postCreateCommand では、すべてのセットアップコマンドをチェーン:
uv run /opt/post_install.py && uv sync && npm ci
すべての検出された言語の拡張機能と設定は設定にマージされるべきです。
フェーズ 2: 設定生成
resources/ ディレクトリの基本テンプレートから開始します。以下を置換:
{{PROJECT_NAME}}→ 人間が読める名前(例: "My Project"){{PROJECT_SLUG}}→ ボリュームのスラッグ(例: "my-project")
その後、以下の言語固有の変更を適用します。
基本テンプレート機能
基本テンプレートには以下が含まれます:
- Claude Code マーケットプレイスプラグイン付き(anthropics/skills, trailofbits/skills, trailofbits/skills-curated)
- サンドボックス化 - bubblewrap と socat 経由
- Python 3.13 - uv 経由(高速バイナリダウンロード)
- Node 22 - fnm 経由(Fast Node Manager)
- ast-grep - AST ベースのコード検索用
- ネットワーク分離ツール(iptables, ipset)- NET_ADMIN ケーパビリティ付き
- セキュリティマウント:
.devcontainer/は読み取り専用でマウントしてコンテナエスケープを防止 - トークン転送:
CLAUDE_CODE_OAUTH_TOKENとANTHROPIC_API_KEYはremoteEnv経由 - モダン CLI ツール: ripgrep, fd, fzf, tmux, git-delta
言語固有セクション
Python プロジェクト
検出: pyproject.toml, requirements.txt, setup.py, または *.py ファイル
Dockerfile 追加:
基本 Dockerfile には既に uv 経由の Python 3.13 が含まれています。別のバージョンが必要な場合(pyproject.toml から検出)、Python インストールを変更:
# Install Python via uv (fast binary download, not source compilation)
RUN uv python install <version> --default
devcontainer.json 拡張機能:
customizations.vscode.extensions に追加:
"ms-python.python",
"ms-python.vscode-pylance",
"charliermarsh.ruff"
customizations.vscode.settings に追加:
"python.defaultInterpreterPath": ".venv/bin/python",
"[python]": {
"editor.defaultFormatter": "charliermarsh.ruff",
"editor.codeActionsOnSave": {
"source.organizeImports": "explicit"
}
}
postCreateCommand:
pyproject.toml が存在する場合、コマンドをチェーン:
rm -rf .venv && uv sync && uv run /opt/post_install.py
Node/TypeScript プロジェクト
検出: package.json または tsconfig.json
Dockerfile 追加は不要: 基本テンプレートには fnm 経由の Node 22 が含まれています(Fast Node Manager)。
devcontainer.json 拡張機能:
customizations.vscode.extensions に追加:
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode"
customizations.vscode.settings に追加:
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.codeActionsOnSave": {
"source.fixAll.eslint": "explicit"
}
postCreateCommand: ロックファイルからパッケージマネージャを検出し、基本コマンドとチェーン:
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- ロックファイルなし →
uv run /opt/post_install.py && npm install
Rust プロジェクト
検出: Cargo.toml
追加フィーチャ:
"ghcr.io/devcontainers/features/rust:1": {}
devcontainer.json 拡張機能:
customizations.vscode.extensions に追加:
"rust-lang.rust-analyzer",
"tamasfe.even-better-toml"
customizations.vscode.settings に追加:
"[rust]": {
"editor.defaultFormatter": "rust-lang.rust-analyzer"
}
postCreateCommand:
Cargo.lock が存在する場合、ロック付きビルドを使用:
uv run /opt/post_install.py && cargo build --locked
ロックファイルがない場合、標準ビルドを使用:
uv run /opt/post_install.py && cargo build
Go プロジェクト
検出: go.mod
追加フィーチャ:
"ghcr.io/devcontainers/features/go:1": {
"version": "latest"
}
devcontainer.json 拡張機能:
customizations.vscode.extensions に追加:
"golang.go"
customizations.vscode.settings に追加:
"[go]": {
"editor.defaultFormatter": "golang.go"
},
"go.useLanguageServer": true
postCreateCommand:
uv run /opt/post_install.py && go mod download
参考資料
追加の詳細については、以下を参照:
references/dockerfile-best-practices.md- レイヤ最適化、マルチステージビルド、アーキテクチャサポートreferences/features-vs-dockerfile.md- devcontainer フィーチャ vs カスタム Dockerfile の使い分け
永続ボリュームの追加
devcontainer.json の新しいマウントのパターン:
"mounts": [
"source={{PROJECT_SLUG}}-<purpose>-${devcontainerId},target=<container-path>,type=volume"
]
よくある追加:
source={{PROJECT_SLUG}}-cargo-${devcontainerId},target=/home/vscode/.cargo,type=volume(Rust)source={{PROJECT_SLUG}}-go-${devcontainerId},target=/home/vscode/go,type=volume(Go)
出力ファイル
プロジェクトの .devcontainer/ ディレクトリに以下のファイルを生成:
Dockerfile- コンテナビルド命令devcontainer.json- VS Code/devcontainer 設定post_install.py- 作成後のセットアップスクリプト.zshrc- シェル設定install.sh- devcontainer を管理する CLI ヘルパー(devcコマンド)
検証チェックリスト
ユーザーにファイルを提示する前に、以下を確認:
- すべての
{{PROJECT_NAME}}プレースホルダが人間が読める名前に置換されている - すべての
{{PROJECT_SLUG}}プレースホルダがスラッグ化された名前に置換されている devcontainer.jsonで JSON 構文が有効(末尾のカンマなし、適切なネスト)- 検出されたすべての言語に言語固有の拡張機能が追加されている
postCreateCommandにすべての必要なセットアップコマンドが含まれている(&&でチェーン)
ユーザー指示
生成後、ユーザーに以下を通知:
- 開始方法: 「VS Code で開き、『Reopen in Container』を選択」
- 別方法:
devcontainer up --workspace-folder . - CLI ヘルパー:
.devcontainer/install.sh self-installを実行してdevcコマンドを PATH に追加
ライセンス: CC-BY-SA-4.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- trailofbits
- リポジトリ
- trailofbits/skills
- ライセンス
- CC-BY-SA-4.0
- 最終更新
- 不明
Source: https://github.com/trailofbits/skills / ライセンス: CC-BY-SA-4.0
関連スキル
agent-browser
AI エージェント向けのブラウザ自動化 CLI です。ウェブサイトとの対話が必要な場合に使用します。ページ遷移、フォーム入力、ボタンクリック、スクリーンショット取得、データ抽出、ウェブアプリのテスト、ブラウザ操作の自動化など、あらゆるブラウザタスクに対応できます。「ウェブサイトを開く」「フォームに記入する」「ボタンをクリックする」「スクリーンショットを取得する」「ページからデータを抽出する」「このウェブアプリをテストする」「サイトにログインする」「ブラウザ操作を自動化する」といった要求や、プログラマティックなウェブ操作が必要なタスクで起動します。
anyskill
AnySkill — あなたのプライベート・スキルクラウド。GitHubを基盤としたリポジトリからエージェントスキルを管理、同期、動的にロードできます。自然言語でクラウドスキルを検索し、オンデマンドでプロンプトを自動ロード、カスタムスキルのアップロードと共有、スキルバンドルの一括インストールが可能です。OpenClaw、Antigravity、Claude Code、Cursorに対応しています。
engram
AIエージェント向けの永続的なメモリシステムです。バグ修正、意思決定、発見、設定変更の後はmem_saveを使用してください。ユーザーが「覚えている」「記憶している」と言及した場合、または以前のセッションと重複する作業を開始する際はmem_searchを使用します。セッション終了前にmem_session_summaryを使用して、コンテキストを保持してください。
skyvern
AI駆動のブラウザ自動化により、任意のウェブサイトを自動化できます。フォーム入力、データ抽出、ファイルダウンロード、ログイン、複数ステップのワークフロー実行など、ユーザーがウェブサイトと連携する必要があるときに使用します。Skyvernは、LLMとコンピュータビジョンを活用して、未知のサイトも自動操作可能です。Python SDK、TypeScript SDK、REST API、MCPサーバー、またはCLIを通じて統合できます。
pinchbench
PinchBenchベンチマークを実行して、OpenClawエージェントの実世界タスクにおけるパフォーマンスを評価できます。モデルの機能テスト、モデル間の比較、ベンチマーク結果のリーダーボード提出、またはOpenClawのセットアップがカレンダー、メール、リサーチ、コーディング、複数ステップのワークフローにどの程度対応しているかを確認する際に使用します。
openui
OpenUIとOpenUI Langを使用してジェネレーティブUIアプリを構築できます。これらはLLM生成インターフェースのためのトークン効率的なオープン標準です。OpenUI、@openuidev、ジェネレーティブUI、LLMからのストリーミングUI、AI向けコンポーネントライブラリ、またはjson-render/A2UIの置き換えについて述べる際に使用します。スキャフォルディング、defineComponent、システムプロンプト、Renderer、およびOpenUI Lang出力のデバッグに対応しています。