Summary
The devcontainer provides the local development environment for contributors. Python tooling (VS Code extensions for IntelliSense, linting, and the uv package manager) is absent from the current configuration. Developers working on Python skills lack editor support and cannot resolve Python dependencies locally without manual setup.
Context
Issue #514 (closed, v3.0.0) previously addressed tool parity gaps between the devcontainer and copilot-setup-steps, including a Python version mismatch (3.12 vs 3.11). That work established the pattern of keeping both environments synchronized. With PR #868 introducing the first Python skill, the devcontainer needs Python-specific extensions and tooling to maintain that parity.
The uv package manager is the project's chosen Python dependency tool, as specified in the coding standards instructions (uv-projects.instructions.md). It must be installed during container creation so that uv sync and uv run commands work immediately.
Changes Required
| File |
Change |
.devcontainer/devcontainer.json |
Add VS Code extensions: ms-python.python, ms-python.vscode-pylance, charliermarsh.ruff |
.devcontainer/scripts/on-create.sh |
Install uv package manager |
.devcontainer/scripts/on-create.sh |
Run uv sync for all pyproject.toml files using dynamic discovery |
The extension additions follow the existing pattern in devcontainer.json where other language extensions (PowerShell, YAML, etc.) are already listed. The uv installation should use the official installer script or a pinned binary download following the verified download pattern in scripts/lib/.
Multi-Skill Discovery
The uv sync step should discover and iterate over all Python skill directories rather than hardcoding a single path. Example:
find .github/skills -name pyproject.toml -execdir uv sync \;
This ensures new Python skills are automatically resolved during container creation without modifying the setup script.
Acceptance Criteria
Dependencies
Related
Summary
The devcontainer provides the local development environment for contributors. Python tooling (VS Code extensions for IntelliSense, linting, and the
uvpackage manager) is absent from the current configuration. Developers working on Python skills lack editor support and cannot resolve Python dependencies locally without manual setup.Context
Issue #514 (closed, v3.0.0) previously addressed tool parity gaps between the devcontainer and copilot-setup-steps, including a Python version mismatch (3.12 vs 3.11). That work established the pattern of keeping both environments synchronized. With PR #868 introducing the first Python skill, the devcontainer needs Python-specific extensions and tooling to maintain that parity.
The
uvpackage manager is the project's chosen Python dependency tool, as specified in the coding standards instructions (uv-projects.instructions.md). It must be installed during container creation so thatuv syncanduv runcommands work immediately.Changes Required
.devcontainer/devcontainer.jsonms-python.python,ms-python.vscode-pylance,charliermarsh.ruff.devcontainer/scripts/on-create.shuvpackage manager.devcontainer/scripts/on-create.shuv syncfor allpyproject.tomlfiles using dynamic discoveryThe extension additions follow the existing pattern in
devcontainer.jsonwhere other language extensions (PowerShell, YAML, etc.) are already listed. Theuvinstallation should use the official installer script or a pinned binary download following the verified download pattern inscripts/lib/.Multi-Skill Discovery
The
uv syncstep should discover and iterate over all Python skill directories rather than hardcoding a single path. Example:find .github/skills -name pyproject.toml -execdir uv sync \;This ensures new Python skills are automatically resolved during container creation without modifying the setup script.
Acceptance Criteria
ms-python.pythonextension is listed in devcontainer extensionsms-python.vscode-pylanceextension is listed in devcontainer extensionscharliermarsh.ruffextension is listed in devcontainer extensionsuvis installed and available on PATH after container creationuv syncruns for allpyproject.tomlfiles found under.github/skills/during container setup.pyfilespyproject.tomlis automatically resolved without setup script changesDependencies
Related