Repository navigation
Description
Goal
Replace the paired bash (.sh) + PowerShell (.ps1) scripts with one Python script per occurrence, eliminating dual-maintenance and the jq/manual-JSON divergence. The specify CLI is already Python, so the interpreter is guaranteed present — no new runtime dependency.
Scope
~4,500 lines across ~10 script pairs:
- Core
scripts/{bash,powershell}/—common,check-prerequisites,create-new-feature,setup-plan,setup-tasks extensions/agent-context/scripts/—update-agent-contextextensions/git/scripts/—git-common,initialize-repo,auto-commit,create-new-feature-branch
Strategy
Incremental. Introduce py as a third script type alongside sh/ps, port one script end-to-end as a proof of concept with output-parity tests, then migrate the rest. Only after parity is proven do we consider deprecating sh/ps.
Contract to preserve
Agents parse script stdout (FEATURE_DIR:…, AVAILABLE_DOCS:…, JSON shapes, and the --json / --paths-only / --require-tasks / --include-tasks flags). Behavioral parity is the acceptance bar for every port.
Sub-issues
- Add
pyscript type & interpreter resolution #3278 — Addpyscript type & interpreter resolution (foundation) - PoC: port
check-prerequisitesto Python with output-parity tests #3279 — PoC: portcheck-prerequisitesto Python + parity tests (depends on Addpyscript type & interpreter resolution #3278) - Port core scripts to Python (common, create-new-feature, setup-plan, setup-tasks) #3280 — Port core
common+create-new-feature+setup-plan+setup-tasks(depends on PoC: portcheck-prerequisitesto Python with output-parity tests #3279) - Port agent-context extension scripts to Python #3281 — Port
agent-contextextension scripts (depends on PoC: portcheck-prerequisitesto Python with output-parity tests #3279) - Port git extension scripts to Python #3282 — Port
gitextension scripts (depends on PoC: portcheck-prerequisitesto Python with output-parity tests #3279) - Add
py:lines to command templates'scripts:frontmatter #3283 — Update templates'scripts:frontmatter to addpy:lines (depends on Port core scripts to Python (common, create-new-feature, setup-plan, setup-tasks) #3280–Port git extension scripts to Python #3282) - Docs and migration/deprecation plan for Python scripts #3284 — Docs, AGENTS.md, and migration/deprecation plan (depends on Add
py:lines to command templates'scripts:frontmatter #3283)
Out of scope (for now)
Removing .sh/.ps1 files. They stay until py reaches full parity and adoption.
Activity
docs(scripts): trim deprecation timeline, correct parity/scope claims…
docs(scripts): document the 'py' script type and sh/ps migration plan (…
mnriem commentedon Jul 22, 2026
All seven sub-issues (#3278–#3284) are closed and every in-scope deliverable is merged to
main:pyscript type + interpreter resolution in the CLI (Addpyscript type & interpreter resolution #3278)check_prerequisites,common,create_new_feature,setup_plan,setup_tasks) with output-parity tests (PoC: portcheck-prerequisitesto Python with output-parity tests #3279, Port core scripts to Python (common, create-new-feature, setup-plan, setup-tasks) #3280)py:frontmatter added to all script-invoking command templates (Addpy:lines to command templates'scripts:frontmatter #3283)--script pytype (Docs and migration/deprecation plan for Python scripts #3284)Behavioral parity is covered by dedicated parity tests. Removing the
.sh/.ps1files remains intentionally out of scope untilpyreaches full adoption. Closing as complete.Posted on behalf of @mnriem by GitHub Copilot (model: Claude Opus 4.8).