devcontainer-setup について
devcontainer-setupは、検出した言語スタックに合わせてClaude Codeやツールを含む開発用devcontainerを生成するスキルです。プロジェクトの調査からファイル作成、設定検証までを案内します。
主な機能
- 01プロジェクト名と言語の検出
- 02Dockerfileとdevcontainer.jsonの生成
- 03言語別エディター設定の追加
- 04設定スクリプトとCLIヘルパーの作成
- 05生成した設定の検証
活用シーン
- 01プロジェクトへのdevcontainer追加
- 02隔離されたClaude Code環境の作成
- 03分離された開発環境の準備
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ sickn33/ agentic-awesome-skills --skill devcontainer-setupインストール後、Claude Code で/devcontainer-setupを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
UPSTREAM-LICENSE.txtUPSTREAM-NOTICE.mdreferences/dockerfile-best-practices.mdfeatures-vs-dockerfile.md詳細
同梱されている上流サポートファイル
サポートファイルはスキルからの相対パスに含まれています。固定されたソース、ライセンス、ハッシュ、インポート時の変更については、UPSTREAM-NOTICE.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」)
その後、以下の言語固有の変更を適用します。
基本テンプレートの機能
基本テンプレートには次のものが含まれています。
- マーケットプレイスプラグイン(anthropics/skills、trailofbits/skills、trailofbits/skills-curated)を備えた Claude Code
- uv による Python 3.13(高速なバイナリダウンロード)
- fnm(Fast Node Manager)による Node 22
- AST ベースのコード検索用 ast-grep
- NET_ADMIN 機能を備えた ネットワーク分離ツール(iptables、ipset)
- 最新の 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(Fast Node Manager)による Node 22 が含まれています。
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 機能とカスタム 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 に追加します
制限事項
- このスキルは、タスクが上記の範囲に明確に一致する場合にのみ使用してください。
- 出力を、環境固有の検証、テスト、または専門家によるレビューの代わりとして扱わないでください。
- 必要な入力、権限、安全上の境界、または成功基準が欠けている場合は、停止して確認を求めてください。