Parent: #168
Outcome
Migrate darrow-tickets-github's GitHub Issues facade to Python + uv and make its filesystem, subprocess, JSON, and native-Windows behavior explicit.
Priority
4 of 14 remaining plugins. It is a bounded single-provider CLI and establishes the wrapped-CLI pattern before the larger Git and review plugins.
Scope
Migrate the substantial mechanics in bin/ticket while retaining the gh CLI as the authenticated provider boundary. Preserve skill authority and all current repository binding, duplicate detection, exact-label, relationship, and mutation safeguards.
Done criteria
- Preserve every public command, option, output record, refusal, and exit code used by the four ticket skills.
- Use argument-vector subprocess calls without shell interpolation and handle Windows paths and temporary files natively.
- Retain read-before-write safeguards and exact repository/ticket identity checks; tests must not mutate live GitHub state.
- Add the package to the Python inventory and meet strict typing, complexity, property-test, and separate coverage thresholds.
- Validate mocked provider behavior plus fresh-plugin execution on Linux, macOS, and native Windows with
gh available.
- Keep all ticket skill evals passing and update documentation and matching manifest versions.
Migration blueprint
Use the implementation merged in PR #173 as the default blueprint for Python + uv plugin mechanics. Reuse its self-contained package layout, committed uv lock, runtime/development dependency separation, python-packages.txt inventory, Ruff and strict mypy gates, separate 95% line and branch coverage gates, and fresh copied-artifact validation. Extend that pattern with native-Windows fresh-artifact validation where this rollout requires Windows support. Document any plugin-specific deviation explicitly instead of introducing a competing convention.
Parent: #168
Outcome
Migrate
darrow-tickets-github's GitHub Issues facade to Python + uv and make its filesystem, subprocess, JSON, and native-Windows behavior explicit.Priority
4 of 14 remaining plugins. It is a bounded single-provider CLI and establishes the wrapped-CLI pattern before the larger Git and review plugins.
Scope
Migrate the substantial mechanics in
bin/ticketwhile retaining theghCLI as the authenticated provider boundary. Preserve skill authority and all current repository binding, duplicate detection, exact-label, relationship, and mutation safeguards.Done criteria
ghavailable.Migration blueprint
Use the implementation merged in PR #173 as the default blueprint for Python + uv plugin mechanics. Reuse its self-contained package layout, committed uv lock, runtime/development dependency separation, python-packages.txt inventory, Ruff and strict mypy gates, separate 95% line and branch coverage gates, and fresh copied-artifact validation. Extend that pattern with native-Windows fresh-artifact validation where this rollout requires Windows support. Document any plugin-specific deviation explicitly instead of introducing a competing convention.