Skip to content

feat(devcontainer): Add Python development extensions and uv package manager #887

@WilliamBerryiii

Description

@WilliamBerryiii

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

  • ms-python.python extension is listed in devcontainer extensions
  • ms-python.vscode-pylance extension is listed in devcontainer extensions
  • charliermarsh.ruff extension is listed in devcontainer extensions
  • uv is installed and available on PATH after container creation
  • uv sync runs for all pyproject.toml files found under .github/skills/ during container setup
  • Python IntelliSense and ruff linting work in the editor for .py files
  • Adding a new Python skill with pyproject.toml is automatically resolved without setup script changes
  • Existing devcontainer functionality is unaffected

Dependencies

Related

Metadata

Metadata

Labels

devcontainerDevelopment container configurationinfrastructureRepository infrastructure and tooling

Type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions