-
Notifications
You must be signed in to change notification settings - Fork 125
Description
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.pythonextension is listed in devcontainer extensions -
ms-python.vscode-pylanceextension is listed in devcontainer extensions -
charliermarsh.ruffextension is listed in devcontainer extensions -
uvis installed and available on PATH after container creation -
uv syncruns for allpyproject.tomlfiles found under.github/skills/during container setup - Python IntelliSense and ruff linting work in the editor for
.pyfiles - Adding a new Python skill with
pyproject.tomlis automatically resolved without setup script changes - Existing devcontainer functionality is unaffected
Dependencies
- None — this can be implemented independently
- Must maintain parity with copilot-setup-steps (feat(ci): Add uv and Python package sync to copilot-setup-steps #888)
Related
- PR feat(skills): add PowerPoint automation skill with YAML-driven deck generation #868 — PowerPoint automation skill (first Python skill)
- fix(devcontainer): resolve tool parity gaps between devcontainer and copilot-setup-steps #514 — Prior devcontainer/copilot-setup parity work (closed)
- [Issue]: Ensure Tool Parity Between DevContainer, Custom Agents, and GitHub Copilot Coding Agent #388 — Established copilot-setup-steps pattern (closed)
- feat(ci): Add Python file extensions to copyright/SPDX header validation #883 — Copyright/SPDX header validation for Python
- feat(scripts): Add npm run scripts for Python linting and testing #886 — npm scripts for Python (depends on uv being available)