Drop one line in your shell rc. Now <TAB> hits the binary and asks this project what tasks it knows about — grouped by source, with descriptions. Same line registers both runner and run.

cd ~/some-project
runner   <TAB>
-- package.json --
build      compile the thing
test       run tests
dev        start dev server
-- justfile --
ci         lint + tests
fmt        format
release    cut a release
-- justfile (aliases) --
b          → build
t          → test
-- Commands --
list       list tasks
info       show detected project
clean      clean build artefacts

Path-typed flags like --dir <TAB> delegate to the shell's own file completer.

~/, globs, and cdpath all work.