mcpField
D
devcontainer-setup

devcontainer-setup

github.com/sickn33開発48.7k46 回インストール今日更新
リポジトリ

devcontainer-setup について

devcontainer-setupは、検出した言語スタックに合わせてClaude Codeやツールを含む開発用devcontainerを生成するスキルです。プロジェクトの調査からファイル作成、設定検証までを案内します。

主な機能

  1. 01プロジェクト名と言語の検出
  2. 02Dockerfileとdevcontainer.jsonの生成
  3. 03言語別エディター設定の追加
  4. 04設定スクリプトとCLIヘルパーの作成
  5. 05生成した設定の検証

活用シーン

  1. 01プロジェクトへのdevcontainer追加
  2. 02隔離されたClaude Code環境の作成
  3. 03分離された開発環境の準備

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/sickn33/agentic-awesome-skills --skill devcontainer-setup

インストール後、Claude Code で/devcontainer-setupを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

UPSTREAM-LICENSE.txt
UPSTREAM-NOTICE.md
references/
dockerfile-best-practices.md
features-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:プロジェクトの調査

プロジェクト名を推定する

次の順に確認し、最初に一致したものを使用します。

  1. package.json → name フィールド
  2. pyproject.toml → project.name
  3. Cargo.toml → package.name
  4. go.mod → モジュールパス(/ の後の最後の部分)
  5. フォールバックとしてディレクトリ名

スラッグに変換します:小文字にし、スペースとアンダースコアをハイフンに置き換えます。

言語スタックを検出する
言語検出ファイル
Pythonpyproject.toml、*.py
Node/TypeScriptpackage.json、tsconfig.json
RustCargo.toml
Gogo.mod、go.sum
複数言語のプロジェクト

複数の言語が検出された場合は、次の優先順位ですべてを設定します。

  1. Python - 主言語。uv と Python のインストールに Dockerfile を使用します
  2. Node/TypeScript - devcontainer の機能を使用します
  3. Rust - devcontainer の機能を使用します
  4. 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-lockfile
  • yarn.lock → uv run /opt/post_install.py && yarn install --frozen-lockfile
  • package-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/ ディレクトリに以下のファイルを生成します:

  1. Dockerfile - コンテナのビルド手順
  2. devcontainer.json - VS Code/devcontainer の設定
  3. post_install.py - 作成後のセットアップスクリプト
  4. .zshrc - シェルの設定
  5. install.sh - devcontainer を管理するための CLI ヘルパー (devc コマンド)

検証チェックリスト

ファイルをユーザーに提示する前に、以下を確認してください:

  1. すべての {{PROJECT_NAME}} プレースホルダーが人間が読める名前に置き換えられている
  2. すべての {{PROJECT_SLUG}} プレースホルダーがスラッグ化された名前に置き換えられている
  3. devcontainer.json の JSON 構文が有効である (末尾のカンマがなく、ネストが適切である)
  4. 検出されたすべての言語に対して言語固有の拡張機能が追加されている
  5. postCreateCommand に必要なすべてのセットアップコマンドが含まれている (&& で連結されている)

ユーザーへの指示

生成後、ユーザーに以下を伝えてください:

  1. 開始方法: 「VS Code で開き、『Reopen in Container』を選択します」
  2. 代替方法: devcontainer up --workspace-folder .
  3. CLI ヘルパー: .devcontainer/install.sh self-install を実行して devc コマンドを PATH に追加します

制限事項

  • このスキルは、タスクが上記の範囲に明確に一致する場合にのみ使用してください。
  • 出力を、環境固有の検証、テスト、または専門家によるレビューの代わりとして扱わないでください。
  • 必要な入力、権限、安全上の境界、または成功基準が欠けている場合は、停止して確認を求めてください。

コメント