B-X2YZ-extensive-polyglot-tool-runner-detection-library-consolidate
Build a far more extensive multi-ecosystem tool/runner finder library that goes well beyond the
package-manager resolver shipped in T-VE7H-task-work-probe-keys-package-manager-off-project
(plugin/lib/services/quality/detect-managers.ts).
Detect a broad set of project tooling
Section titled “Detect a broad set of project tooling”- Container / orchestration: docker (
Dockerfile), docker compose (docker-compose.yml/compose.yaml). - Task runners: just (
justfile), make (Makefile), moon, nx, turbo. - Version / toolchain managers: mise (
.mise.toml/mise.toml), asdf (.tool-versions), nvm (.nvmrc), pyenv (.python-version), prototools. - Language ecosystems (resolve ALL present, polyglot-aware): node bun/pnpm/yarn/npm, Rust cargo, Python uv/poetry/pip/pixi, Go modules, Ruby bundler, Java/Kotlin gradle/maven, .NET, PHP composer — and extensible to more by adding a data row.
Consolidate the scattered detection
Section titled “Consolidate the scattered detection”Today detection logic is split across detect-managers.ts (package managers, from T-VE7H) and
detect-runners.ts (quality-check runners). Fold both into one cohesive, data-driven, pure library
that the three consumers share:
- the preflight permissions probe (
plugin/skills/task-work/preflight_permissions.ts), - quality-check detection (
sdlc quality detect), - worktree-init detection (
sdlc project detect-worktree-init).
One MARKER_TABLE-style source of truth, marker→capability rows, pure (project root in, structured
result out), per P-0001-prefer-deterministic-over-llm /
S-0004-sdlc-cli-llm-head-deterministic-tail. Consider returning a richer typed result
(ecosystem, manager, runner verbs, detected toolchain/version-manager) rather than a flat string
set, so each consumer projects the slice it needs.