You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
tools/*.py claims "Python 3.8+ compatible" (README badge, docs/CONTRIBUTING.md) but nothing actually verifies that across versions — there's no Python job in CI at all, and the only local check is a handful of ad-hoc --help/smoke commands in Makefile's test-python target. This project has already shipped Python-version-shaped bugs before (see PR #29's fix for a syntax error that broke claude-pipeline on every version) that a real test suite would have caught immediately.
Similarly, rust/claude-tools declares a "Rust 1.75+" badge in the README but nothing enforces that MSRV — CI only builds against stable, so a dependency bump or a new-syntax usage could silently raise the real minimum version without anyone noticing.
Proposed solution
Python: add tox.ini + a small tests/ pytest suite covering all 8 CLI tools (functional, sandboxed HOME, subprocess-based — the same technique used to manually verify PR Add autonomy levels (L0-L4), claude-lessons tool, and MCP server guide #29). tox environments: py38..py313 (skip missing interpreters), lint (ruff check), fmt-check (ruff format --check). Wire into Makefile (new make tox target) and a new CI job running the matrix via actions/setup-python.
Rust: declare rust-version = "1.75" in rust/claude-tools/Cargo.toml (matches the README badge, makes cargo itself enforce it for consumers), add an MSRV job to CI (cargo msrv verify via cargo-msrv, the closest Rust-ecosystem equivalent to tox's multi-version testing), and a make msrv target.
Alternatives considered
Rewriting tools/*.py as an installable package (pyproject.toml + pip install -e .) so tox could use its normal package-based flow — rejected as unnecessary scope increase; these are standalone CLI scripts, not a library, and docs/CONTRIBUTING.md deliberately keeps them dependency-free and copy-paste-installable. tox.ini with skipsdist = true running pytest directly against tests/ gets the version-matrix benefit without that.
Additional context
Depends on tools/docs from #26/#27/#28 (PR #29) — this branch builds on top of it.
What problem does this solve?
tools/*.pyclaims "Python 3.8+ compatible" (README badge,docs/CONTRIBUTING.md) but nothing actually verifies that across versions — there's no Python job in CI at all, and the only local check is a handful of ad-hoc--help/smoke commands inMakefile'stest-pythontarget. This project has already shipped Python-version-shaped bugs before (see PR #29's fix for a syntax error that brokeclaude-pipelineon every version) that a real test suite would have caught immediately.Similarly,
rust/claude-toolsdeclares a "Rust 1.75+" badge in the README but nothing enforces that MSRV — CI only builds againststable, so a dependency bump or a new-syntax usage could silently raise the real minimum version without anyone noticing.Proposed solution
tox.ini+ a smalltests/pytest suite covering all 8 CLI tools (functional, sandboxedHOME, subprocess-based — the same technique used to manually verify PR Add autonomy levels (L0-L4), claude-lessons tool, and MCP server guide #29).toxenvironments:py38..py313(skip missing interpreters),lint(ruff check),fmt-check(ruff format --check). Wire intoMakefile(newmake toxtarget) and a new CI job running the matrix viaactions/setup-python.rust-version = "1.75"inrust/claude-tools/Cargo.toml(matches the README badge, makes cargo itself enforce it for consumers), add an MSRV job to CI (cargo msrv verifyviacargo-msrv, the closest Rust-ecosystem equivalent to tox's multi-version testing), and amake msrvtarget.Alternatives considered
Rewriting
tools/*.pyas an installable package (pyproject.toml+pip install -e .) so tox could use its normal package-based flow — rejected as unnecessary scope increase; these are standalone CLI scripts, not a library, anddocs/CONTRIBUTING.mddeliberately keeps them dependency-free and copy-paste-installable.tox.iniwithskipsdist = truerunningpytestdirectly againsttests/gets the version-matrix benefit without that.Additional context
Depends on tools/docs from #26/#27/#28 (PR #29) — this branch builds on top of it.